Merge (#13368)
Thank you for submitting the pull request to the Apache Ignite.
In order to streamline the review of the contribution
we ask you to ensure the following steps have been taken:
### The Contribution Checklist
- [ ] There is a single JIRA ticket related to the pull request.
- [ ] The web-link to the pull request is attached to the JIRA ticket.
- [ ] The JIRA ticket has the _Patch Available_ state.
- [ ] The pull request body describes changes that have been made.
The description explains _WHAT_ and _WHY_ was made instead of _HOW_.
- [ ] The pull request title is treated as the final commit message.
The following pattern must be used: `IGNITE-XXXX Change summary` where
`XXXX` - number of JIRA issue.
- [ ] A reviewer has been mentioned through the JIRA comments
(see [the Maintainers
list](https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute#HowtoContribute-ReviewProcessandMaintainers))
- [ ] The pull request has been checked by the Teamcity Bot and
the `green visa` attached to the JIRA ticket (see tab `PR Check` at
[TC.Bot - Instance 1](https://tcbot2.sbt-ignite-dev.ru/prs.html) or
[TC.Bot - Instance 2](https://mtcga.gridgain.com/prs.html))
### Notes
- [How to
Contribute](https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute)
- [Coding abbreviation
rules](https://cwiki.apache.org/confluence/display/IGNITE/Abbreviation+Rules)
- [Coding
Guidelines](https://cwiki.apache.org/confluence/display/IGNITE/Coding+Guidelines)
- [Apache Ignite Teamcity
Bot](https://cwiki.apache.org/confluence/display/IGNITE/Apache+Ignite+Teamcity+Bot)
If you need any help, please email dev@ignite.apache.org or ask anу
advice on http://asf.slack.com _#ignite_ channel.
---------
Co-authored-by: Evgeniy Stanilovskiy <stanilovsky@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Vladimir Steshin <vladsz83@gmail.com>
Co-authored-by: Ilya Shishkov <shishkovilja@gmail.com>
Co-authored-by: Vladislav Pyatkov <vldpyatkov@gmail.com>
Co-authored-by: Mikhail Petrov <32207922+petrov-mg@users.noreply.github.com>
Co-authored-by: Aleksandr Chesnokov <chesnokoff239@gmail.com>
Co-authored-by: Anton Vinogradov <av@apache.org>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Kirill Tkalenko <tkalkirill@yandex.ru>
Co-authored-by: Dmitry Werner <grimekillah@gmail.com>
Co-authored-by: Sergey Chugunov <sergey.chugunov@gmail.com>
Co-authored-by: oleg-vlsk <153691984+oleg-vlsk@users.noreply.github.com>
Co-authored-by: ignitetcbot <43213589+ignitetcbot@users.noreply.github.com>
Co-authored-by: Maksim Davydov <70368398+maksaska@users.noreply.github.com>
Co-authored-by: Aleksey Plekhanov <Plehanov.Alex@gmail.com>
Co-authored-by: Oleg <le.louch@live.ru>
Co-authored-by: Aleksandr Nikolaev <56360298+nao-it@users.noreply.github.com>
Co-authored-by: Nikita Amelchev <nsamelchev@gmail.com>
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 10cd1d8..ef01c4d 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -21,4 +21,5 @@
- dependency-name: "junit:junit"
- - dependency-name: "com.h2database:h2"
\ No newline at end of file
+ - dependency-name: "com.h2database:h2"
+ - dependency-name: "com.puppycrawl.tools:checkstyle"
\ No newline at end of file
diff --git a/.github/workflows/check-protected-classes.yml b/.github/workflows/check-protected-classes.yml
index 4abab25..59ebe38 100644
--- a/.github/workflows/check-protected-classes.yml
+++ b/.github/workflows/check-protected-classes.yml
@@ -28,6 +28,7 @@
permissions:
issues: write
pull-requests: write
+ checks: write
steps:
- uses: actions/checkout@v6
with:
@@ -39,26 +40,35 @@
run: |
BASE_SHA=${{ github.event.pull_request.base.sha }}
HEAD_SHA=${{ github.event.pull_request.head.sha }}
+ ANNOTATION='org.apache.ignite.internal.Order'
+ HITS_FILE=/tmp/protected-hits.txt
- HITS=""
+ # Added/deleted/modified .java files in the PR as "<status>\t<path>" lines.
+ changed_java_files() {
+ git diff --name-status --no-renames --diff-filter=ADM "$BASE_SHA"..."$HEAD_SHA" -- '*.java'
+ }
- # New and deleted files: check diff content for @Order annotation.
- for file in $(git diff --name-only --no-renames --diff-filter=AD "$BASE_SHA"..."$HEAD_SHA" -- '*.java'); do
- if git diff "$BASE_SHA"..."$HEAD_SHA" -- "$file" | grep -q 'org.apache.ignite.internal.Order'; then
- HITS="${HITS}${file}\n"
- fi
- done
+ # A protected class carries the @Order annotation; an added file is
+ # defined by the new revision, a deleted/modified one by the base.
+ is_protected_class() {
+ local status=$1 file=$2 ref=$BASE_SHA
+ [ "$status" = A ] && ref=$HEAD_SHA
+ git show "$ref:$file" 2>/dev/null | grep -q "$ANNOTATION"
+ }
- # Modified files: check base version content for @Order annotation.
- for file in $(git diff --name-only --no-renames --diff-filter=M "$BASE_SHA"..."$HEAD_SHA" -- '*.java'); do
- if git show "${BASE_SHA}:${file}" 2>/dev/null | grep -q 'org.apache.ignite.internal.Order'; then
- HITS="${HITS}${file}\n"
- fi
- done
+ # Read "<status>\t<path>" lines, emit the paths that are protected.
+ filter_protected() {
+ while IFS=$'\t' read -r status file; do
+ if is_protected_class "$status" "$file"; then
+ echo "$file"
+ fi
+ done
+ }
- if [ -n "$HITS" ]; then
+ changed_java_files | filter_protected > "$HITS_FILE"
+
+ if [ -s "$HITS_FILE" ]; then
echo "affected=true" >> "$GITHUB_OUTPUT"
- printf '%b' "$HITS" > /tmp/protected-hits.txt
fi
- name: Comment on PR
@@ -114,7 +124,28 @@
labels: ['compatibility'],
});
- - name: Fail on affected check
+ - name: Warning check on affected
if: steps.check.outputs.affected == 'true'
- run: |
- exit 1
+ uses: actions/github-script@v8
+ with:
+ script: |
+ const fs = require('fs');
+ const hits = fs.readFileSync('/tmp/protected-hits.txt', 'utf8').trim();
+ await github.rest.checks.create({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ name: 'Rolling upgrade compatibility',
+ head_sha: context.payload.pull_request.head.sha,
+ status: 'completed',
+ conclusion: 'neutral',
+ output: {
+ title: 'Possible compatibility issues',
+ summary: [
+ 'This PR modifies protected classes (with **Order** annotation).',
+ 'Changes to these classes can break rolling upgrade compatibility.',
+ '',
+ '**Affected files:**',
+ hits.split('\n').map(f => '- `' + f.trim() + '`').join('\n'),
+ ].join('\n'),
+ },
+ });
diff --git a/.github/workflows/commit-check.yml b/.github/workflows/commit-check.yml
index 7f91087..3dc4cbb 100644
--- a/.github/workflows/commit-check.yml
+++ b/.github/workflows/commit-check.yml
@@ -14,8 +14,12 @@
# limitations under the License.
name: Code Style, Abandoned Tests, Javadocs
+
+# pull_request_target (not pull_request) so the checks also run when the PR conflicts with the base
+# branch. These jobs build and run untrusted PR code: keep the token read-only and add no secrets
+# here, otherwise a fork PR could read them.
on:
- pull_request:
+ pull_request_target:
push:
branches:
- master
@@ -25,6 +29,9 @@
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
+permissions:
+ contents: read
+
jobs:
check-java:
runs-on: ubuntu-latest
@@ -43,6 +50,7 @@
with:
distribution: 'temurin'
java-version: ${{ matrix.java }}
+ cache: 'maven'
- name: Install prerequisites
run: |
@@ -96,11 +104,26 @@
- name: Run codestyle and licenses checks
run: |
- ./mvnw test-compile -Pall-java,licenses,lgpl,checkstyle,examples,scala,check-licenses -B -V
+ set -o pipefail
+ rc=0
+ ./mvnw test-compile -Pall-java,licenses,lgpl,checkstyle,examples,check-licenses -B -V -T 1C 2>&1 | tee mvn-codestyle.log || rc=$?
+ if [ "$rc" -ne 0 ] && grep -q "COMPILATION ERROR" mvn-codestyle.log; then
+ echo "::error title=Compilation failed::Java compilation failed - this is a compile error, not a checkstyle violation. The flood of 'cannot find symbol' for generated *Walker/*Serializer/*Factory classes is a cascade: javac drops annotation-processor output when compilation fails. Fix the real error(s) listed in the build log group below first."
+ echo "::group::Likely root-cause compile errors (generated-class cascade filtered out)"
+ awk '
+ /^\[ERROR\].*cannot find symbol/ { loc=$0; getline s; gsub(/^[[:space:]]*(\[ERROR\][[:space:]]*)?/, "", s);
+ if (s !~ /(Walker|Serializer|Factory)([^A-Za-z]|$)/) print loc " -> " s; next }
+ /^\[ERROR\].*\.java:\[[0-9]+,[0-9]+\]/ {
+ if ($0 !~ /codegen\.idto|internal\.systemview/) print $0 }
+ ' mvn-codestyle.log | sed -E 's#^.*/modules/#modules/#; s/^\[ERROR\] //' | sort -u | head -n 40
+ echo "::endgroup::"
+ fi
+ exit "$rc"
- name: Run abandoned tests checks.
+ # Reuse classes from the previous step; the differing profiles otherwise trigger a full reactor recompile.
run : |
- ./mvnw test -Pcheck-test-suites,all-java,scala -B -V
+ ./mvnw test -Pcheck-test-suites,all-java -B -V -Dmaven.compiler.useIncrementalCompilation=false
- name: Check javadocs.
run : |
diff --git a/.gitignore b/.gitignore
index 06151ab..64ad541 100644
--- a/.gitignore
+++ b/.gitignore
@@ -97,3 +97,4 @@
modules/ducktests/tests/dist/**
/.gigaide/gigaide.properties
*.bkp
+/.git
\ No newline at end of file
diff --git a/assembly/dependencies-apache-ignite-lgpl.xml b/assembly/dependencies-apache-ignite-lgpl.xml
index ac3d35c..b6df36f 100644
--- a/assembly/dependencies-apache-ignite-lgpl.xml
+++ b/assembly/dependencies-apache-ignite-lgpl.xml
@@ -119,6 +119,8 @@
<exclude>${project.groupId}:ignite-binary-api</exclude>
<exclude>${project.groupId}:ignite-binary-impl</exclude>
<exclude>${project.groupId}:ignite-thin-client-api</exclude>
+ <exclude>${project.groupId}:ignite-thin-client-impl</exclude>
+ <exclude>${project.groupId}:ignite-nio</exclude>
<exclude>${project.groupId}:ignite-clients</exclude>
<exclude>${project.groupId}:ignite-spring</exclude>
<exclude>${project.groupId}:ignite-tools</exclude>
diff --git a/assembly/dependencies-apache-ignite-slim.xml b/assembly/dependencies-apache-ignite-slim.xml
index f113444..7f71529 100644
--- a/assembly/dependencies-apache-ignite-slim.xml
+++ b/assembly/dependencies-apache-ignite-slim.xml
@@ -119,6 +119,8 @@
<exclude>${project.groupId}:ignite-binary-api</exclude>
<exclude>${project.groupId}:ignite-binary-impl</exclude>
<exclude>${project.groupId}:ignite-thin-client-api</exclude>
+ <exclude>${project.groupId}:ignite-thin-client-impl</exclude>
+ <exclude>${project.groupId}:ignite-nio</exclude>
<exclude>${project.groupId}:ignite-clients</exclude>
<exclude>${project.groupId}:ignite-spring</exclude>
<exclude>${project.groupId}:ignite-tools</exclude>
diff --git a/assembly/dependencies-apache-ignite.xml b/assembly/dependencies-apache-ignite.xml
index 5952320..972c88a 100644
--- a/assembly/dependencies-apache-ignite.xml
+++ b/assembly/dependencies-apache-ignite.xml
@@ -120,6 +120,8 @@
<exclude>${project.groupId}:ignite-binary-api</exclude>
<exclude>${project.groupId}:ignite-binary-impl</exclude>
<exclude>${project.groupId}:ignite-thin-client-api</exclude>
+ <exclude>${project.groupId}:ignite-thin-client-impl</exclude>
+ <exclude>${project.groupId}:ignite-nio</exclude>
<exclude>${project.groupId}:ignite-clients</exclude>
<exclude>${project.groupId}:ignite-spring</exclude>
<exclude>${project.groupId}:ignite-tools</exclude>
diff --git a/checkstyle/checkstyle.xml b/checkstyle/checkstyle.xml
index d142323..7bb5660 100644
--- a/checkstyle/checkstyle.xml
+++ b/checkstyle/checkstyle.xml
@@ -64,7 +64,7 @@
<property name="customImportOrderRules"
value="STANDARD_JAVA_PACKAGE###SPECIAL_IMPORTS###THIRD_PARTY_PACKAGE###STATIC"/>
<property name="standardPackageRegExp" value="^java\."/>
- <property name="specialImportsRegExp" value="^javax\."/>
+ <property name="specialImportsRegExp" value="^(javax|jakarta)\."/>
<property name="sortImportsInGroupAlphabetically" value="true"/>
<property name="separateLineBetweenGroups" value="false"/>
</module>
diff --git a/docs/_data/toc.yaml b/docs/_data/toc.yaml
index 881c552..e8a6eef 100644
--- a/docs/_data/toc.yaml
+++ b/docs/_data/toc.yaml
@@ -77,6 +77,8 @@
url: clustering/discovery-in-the-cloud
- title: Network Configuration
url: clustering/network-configuration
+ - title: Multi Data Center Deployment
+ url: clustering/multi-data-center
- title: Connecting Client Nodes
url: clustering/connect-client-nodes
- title: Baseline Topology
diff --git a/docs/_docs/clustering/clustering.adoc b/docs/_docs/clustering/clustering.adoc
index 8496a3c..08259bb 100644
--- a/docs/_docs/clustering/clustering.adoc
+++ b/docs/_docs/clustering/clustering.adoc
@@ -24,6 +24,9 @@
To form a cluster, each node must be able to connect to all other nodes. To ensure that, a proper <<Discovery Mechanisms,discovery mechanism>> must be configured.
+Ignite can also run a single cluster across multiple data centers.
+See link:clustering/multi-data-center[Multi Data Center Deployment] for configuration details.
+
NOTE: In addition to client nodes, you can use Thin Clients to define and manipulate data in the cluster.
Learn more about the thin clients in the link:thin-clients/getting-started-with-thin-clients[Thin Clients] section.
diff --git a/docs/_docs/clustering/discovery-in-the-cloud.adoc b/docs/_docs/clustering/discovery-in-the-cloud.adoc
index 9f52c91..8d43a8e 100644
--- a/docs/_docs/clustering/discovery-in-the-cloud.adoc
+++ b/docs/_docs/clustering/discovery-in-the-cloud.adoc
@@ -273,10 +273,10 @@
== Azure Blob Storage
Ignite supports automatic node discovery by utilizing Azure Blob Storage.
-This mechanism is implemented in `TcpDiscoveryAzureBlobStorageIpFinder`.
+This mechanism is implemented in `TcpDiscoveryAzureBlobStoreIpFinder`.
On start-up, each node registers its IP address in the storage and discovers other nodes by reading the storage.
-IMPORTANT: To use `TcpDiscoveryAzureBlobStorageIpFinder` you must download and link:setup#enabling-modules[enable the 'ignite-azure-ext' extension].
+IMPORTANT: To use `TcpDiscoveryAzureBlobStoreIpFinder` you must download and link:setup#enabling-modules[enable the 'ignite-azure-ext' extension].
Here is an example of how to configure Azure Blob Storage based IP finder:
diff --git a/docs/_docs/clustering/multi-data-center.adoc b/docs/_docs/clustering/multi-data-center.adoc
new file mode 100644
index 0000000..e37dca2
--- /dev/null
+++ b/docs/_docs/clustering/multi-data-center.adoc
@@ -0,0 +1,254 @@
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+= Multi Data Center Deployment
+
+== Overview
+
+Ignite can run a single cluster across multiple data centers.
+In this mode, every server node is assigned a data center ID.
+Ignite uses this ID to group nodes by data center, reduce cross-data-center traffic when possible,
+choose local data copies for reads, and validate cache topology during data center failures.
+
+[NOTE]
+====
+Multi data center support is an experimental feature.
+APIs and behavior can change in later releases.
+====
+
+The feature is based on the following components:
+
+* `IGNITE_DATA_CENTER_ID` - system property or user attribute that assigns a node to a data center.
+* `ClusterNode#dataCenterId()` - node API that exposes the configured data center ID.
+* `MdcTopologyValidator` - cache topology validator that can block updates when not enough data centers are visible.
+* `MdcAffinityBackupFilter` - affinity backup filter that spreads partition copies evenly across data centers.
+* Thin client data center awareness - routing that prefers nodes from the client's data center.
+
+== Configuring Data Center ID
+
+Set the same data center ID on all server nodes located in the same data center.
+Nodes from different data centers must use different IDs.
+
+You can set the ID with the `IGNITE_DATA_CENTER_ID` system property:
+
+[source,shell]
+----
+bin/ignite.sh -J-DIGNITE_DATA_CENTER_ID=DC1
+----
+
+You can also set the same value as a user attribute in `IgniteConfiguration`:
+
+[source,java]
+----
+IgniteConfiguration cfg = new IgniteConfiguration();
+
+cfg.setUserAttributes(Collections.singletonMap(
+ IgniteSystemProperties.IGNITE_DATA_CENTER_ID, "DC1"));
+----
+
+Server nodes in the same cluster must be configured consistently:
+
+* If one server node has a data center ID, all server nodes must have a data center ID.
+* Server nodes without a data center ID cannot join a cluster where server nodes have data center IDs.
+* Server nodes with a data center ID cannot join a cluster where server nodes do not have data center IDs.
+* Client nodes can join with or without a data center ID.
+
+== Discovery
+
+`TcpDiscoverySpi` uses data center IDs to keep nodes from the same data center close to each other in
+the discovery ring.
+When a data center becomes unavailable, discovery can check remote data centers in parallel and close the ring
+through the local data center if the remote data center does not respond.
+
+Client nodes also use the data center ID during discovery.
+If a client has a data center ID, it tries to connect through a server node from the same data center.
+If no server node from the same data center is available, the client connects through any available server node.
+
+== Cache Topology Validation
+
+Use `MdcTopologyValidator` to protect caches from updates when the visible topology does not contain enough data centers.
+The validator ignores client nodes and checks only server nodes.
+
+The validator supports two modes:
+
+* Majority-based validation - for an odd number of data centers, specify the full set of data centers.
+Updates are allowed only when the visible topology contains a majority of the configured data centers.
+* Main data center validation - for an even number of data centers, specify the main data center.
+Updates are allowed while the main data center is visible.
+
+[tabs]
+--
+tab:XML[]
+[source,xml]
+----
+<bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="accounts"/>
+ <property name="topologyValidator">
+ <bean class="org.apache.ignite.topology.MdcTopologyValidator">
+ <property name="datacenters">
+ <set>
+ <value>DC1</value>
+ <value>DC2</value>
+ <value>DC3</value>
+ </set>
+ </property>
+ </bean>
+ </property>
+</bean>
+----
+
+tab:Java[]
+[source,java]
+----
+MdcTopologyValidator validator = new MdcTopologyValidator();
+
+validator.setDatacenters(Set.of("DC1", "DC2", "DC3"));
+
+CacheConfiguration<Integer, Account> cacheCfg =
+ new CacheConfiguration<Integer, Account>("accounts")
+ .setTopologyValidator(validator);
+----
+--
+
+For an even number of data centers, configure a main data center:
+
+[tabs]
+--
+tab:XML[]
+[source,xml]
+----
+<bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="accounts"/>
+ <property name="topologyValidator">
+ <bean class="org.apache.ignite.topology.MdcTopologyValidator">
+ <property name="mainDatacenter" value="DC1"/>
+ </bean>
+ </property>
+</bean>
+----
+
+tab:Java[]
+[source,java]
+----
+MdcTopologyValidator validator = new MdcTopologyValidator();
+
+validator.setMainDatacenter("DC1");
+
+CacheConfiguration<Integer, Account> cacheCfg =
+ new CacheConfiguration<Integer, Account>("accounts")
+ .setTopologyValidator(validator);
+----
+--
+
+The validator configuration is checked when the cache is created.
+The following configurations are invalid:
+
+* Neither `datacenters` nor `mainDatacenter` is specified.
+* `datacenters` is specified as an empty set.
+* `mainDatacenter` is specified together with an odd number of data centers.
+
+== Placing Backup Copies Across Data Centers
+
+Use `MdcAffinityBackupFilter` with `RendezvousAffinityFunction` to distribute partition copies across data centers.
+The filter ensures that each partition has the same number of copies in each data center.
+
+For example, a cache with `backups=3` has four partition copies: one primary and three backups.
+In a two-data-center cluster, `MdcAffinityBackupFilter(2, 3)` places two copies in each data center.
+
+[tabs]
+--
+tab:XML[]
+[source,xml]
+----
+<bean class="org.apache.ignite.configuration.CacheConfiguration">
+ <property name="name" value="accounts"/>
+ <property name="backups" value="3"/>
+ <property name="affinity">
+ <bean class="org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction">
+ <property name="affinityBackupFilter">
+ <bean class="org.apache.ignite.cache.affinity.rendezvous.MdcAffinityBackupFilter">
+ <constructor-arg value="2"/>
+ <constructor-arg value="3"/>
+ </bean>
+ </property>
+ </bean>
+ </property>
+</bean>
+----
+
+tab:Java[]
+[source,java]
+----
+CacheConfiguration<Integer, Account> cacheCfg =
+ new CacheConfiguration<Integer, Account>("accounts")
+ .setBackups(3)
+ .setAffinity(new RendezvousAffinityFunction()
+ .setAffinityBackupFilter(new MdcAffinityBackupFilter(2, 3)));
+----
+--
+
+`MdcAffinityBackupFilter` has the following requirements:
+
+* The number of data centers must be at least 2.
+* `(backups + 1)` must be evenly divisible by the number of data centers.
+* All server nodes must have a data center ID.
+
+If these requirements are not met, the filter either rejects the configuration or cannot place copies predictably.
+
+For other backup placement strategies, see link:configuring-caches/configuring-backups#affinity-backup-filters[Affinity Backup Filters].
+
+== Reading from Local Data Center
+
+When `CacheConfiguration#readFromBackup` is `true`, Ignite can read from a backup copy instead of the primary copy.
+In a multi data center topology, this allows Ignite to use a backup located in the same data center as the
+requester when such a backup is available.
+
+The Java thin client also uses the data center ID for partition awareness.
+Set the client's data center ID with the `IGNITE_DATA_CENTER_ID` system property or in
+`ClientConfiguration#setUserAttributes(...)`.
+If both are configured, the system property takes precedence.
+For partition-aware read operations, the client sends requests to a node from its own data center when the cache has
+`readFromBackup=true`, its write synchronization mode is not `PRIMARY_SYNC`, and the local data center has a
+partition copy.
+Writes are still routed to the primary node.
+
+[source,java]
+----
+ClientConfiguration cfg = new ClientConfiguration()
+ .setAddresses("dc1-node1:10800", "dc1-node2:10800", "dc2-node1:10800")
+ .setUserAttributes(Collections.singletonMap(
+ IgniteSystemProperties.IGNITE_DATA_CENTER_ID, "DC1"));
+----
+
+The same value can be set with the JVM system property:
+
+[source,shell]
+----
+java -DIGNITE_DATA_CENTER_ID=DC1 ...
+----
+
+If no nodes are available in the client's data center, the client uses other available nodes.
+
+== Rebalancing
+
+During rebalancing, Ignite prefers nodes from the same data center when such suppliers are available.
+If the required partition data cannot be obtained from the same data center, Ignite can rebalance from a
+remote data center.
+This behavior applies to both full and historical rebalance.
+
+== Monitoring
+
+The data center ID is exposed in the `NODES` system view as part of node information.
+For client nodes, the `io.discovery.ClientRouterNodeId` metric exposes the ID of the server node used as
+the discovery router.
diff --git a/docs/_docs/code-snippets/java/pom.xml b/docs/_docs/code-snippets/java/pom.xml
index 990895f..3ddb1e6 100644
--- a/docs/_docs/code-snippets/java/pom.xml
+++ b/docs/_docs/code-snippets/java/pom.xml
@@ -25,6 +25,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<ignite.version>2.19.0-SNAPSHOT</ignite.version>
+ <ignite.extensions.version>1.0.0</ignite.extensions.version>
</properties>
<dependencies>
<dependency>
@@ -67,12 +68,48 @@
<artifactId>ignite-zookeeper</artifactId>
<version>${ignite.version}</version>
</dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-aws-ext</artifactId>
+ <version>${ignite.extensions.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-azure-ext</artifactId>
+ <version>${ignite.extensions.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <!-- ignite-cloud-ext is not published to Maven Central, so use the last released legacy artifact that still provides TcpDiscoveryCloudIpFinder. -->
+ <artifactId>ignite-cloud</artifactId>
+ <version>2.13.0</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-gce-ext</artifactId>
+ <version>${ignite.extensions.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-kubernetes</artifactId>
+ <version>${ignite.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-zookeeper-ip-finder-ext</artifactId>
+ <version>${ignite.extensions.version}</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>ignite-opencensus</artifactId>
<version>${ignite.version}</version>
</dependency>
+ <dependency>
+ <groupId>io.opencensus</groupId>
+ <artifactId>opencensus-exporter-trace-zipkin</artifactId>
+ <version>0.31.1</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/BasicCacheOperations.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/BasicCacheOperations.java
index 3d445fe..60c4023 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/BasicCacheOperations.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/BasicCacheOperations.java
@@ -21,6 +21,7 @@
import org.apache.ignite.IgniteCompute;
import org.apache.ignite.Ignition;
import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.ReadRepairStrategy;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.lang.IgniteFuture;
import org.junit.jupiter.api.Test;
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/DiscoveryInTheCloud.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/DiscoveryInTheCloud.java
index 607eb5a..66556c2 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/DiscoveryInTheCloud.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/DiscoveryInTheCloud.java
@@ -25,6 +25,7 @@
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.azure.TcpDiscoveryAzureBlobStoreIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.cloud.TcpDiscoveryCloudIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.elb.TcpDiscoveryElbIpFinder;
import org.apache.ignite.spi.discovery.tcp.ipfinder.gce.TcpDiscoveryGoogleStorageIpFinder;
@@ -153,13 +154,13 @@
//tag::azureBlobStorage[]
TcpDiscoverySpi spi = new TcpDiscoverySpi();
- TcpDiscoveryAzureBlobStorageIpFinder ipFinder = new TcpDiscoveryGoogleStorageIpFinder();
+ TcpDiscoveryAzureBlobStoreIpFinder ipFinder = new TcpDiscoveryAzureBlobStoreIpFinder();
- finder.setAccountName("yourAccountName");
- finder.setAccountKey("yourAccountKey");
- finder.setAccountEndpoint("yourEndpoint");
+ ipFinder.setAccountName("yourAccountName");
+ ipFinder.setAccountKey("yourAccountKey");
+ ipFinder.setAccountEndpoint("yourEndpoint");
- finder.setContainerName("yourContainerName");
+ ipFinder.setContainerName("yourContainerName");
spi.setIpFinder(ipFinder);
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/IgniteSessionContext.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/IgniteSessionContext.java
index a295169..e9cecdd 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/IgniteSessionContext.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/IgniteSessionContext.java
@@ -16,16 +16,17 @@
*/
package org.apache.ignite.snippets;
-import javax.cache.Cache;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Map;
+import javax.cache.Cache;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cache.CacheInterceptor;
import org.apache.ignite.cache.query.annotations.QuerySqlFunction;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.cache.CacheInterceptor;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.resources.SessionContextProviderResource;
import org.apache.ignite.session.SessionContextProvider;
@@ -76,11 +77,21 @@
}
/** */
+ @Override public void onAfterPut(Cache.Entry<Integer, String> entry) {
+ // No-op.
+ }
+
+ /** */
@Override public @Nullable IgniteBiTuple<Boolean, String> onBeforeRemove(Cache.Entry<Integer, String> entry) {
String ret = sesCtxPrv.getSessionContext().getAttribute("onBeforeRemove");
return new IgniteBiTuple<>(ret != null, entry.getValue());
}
+
+ /** */
+ @Override public void onAfterRemove(Cache.Entry<Integer, String> entry) {
+ // No-op.
+ }
}
//end::cache-interceptor[]
@@ -89,9 +100,9 @@
//tag::ignite-context[]
try (Ignite ign = Ignition.start(ignCfg)) {
- Map<String, String> appAttrs = F.asMap("SESSION_ID", "1234");
+ Map<String, String> appAttrs = Map.of("SESSION_ID", "1234");
- Ignite app = Ignite.withApplicationAttributes(appAttrs);
+ Ignite app = ign.withApplicationAttributes(appAttrs);
//Your code here...
}
@@ -113,4 +124,4 @@
throw new RuntimeException(e);
}
}
-}
\ No newline at end of file
+}
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/JavaThinClient.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/JavaThinClient.java
index 50bb9cd..f8ec3b2 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/JavaThinClient.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/JavaThinClient.java
@@ -25,6 +25,8 @@
import javax.cache.event.CacheEntryEvent;
import javax.cache.event.CacheEntryListenerException;
import javax.cache.event.CacheEntryUpdatedListener;
+import javax.cache.processor.EntryProcessor;
+import javax.cache.processor.MutableEntry;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteBinary;
import org.apache.ignite.Ignition;
@@ -32,6 +34,8 @@
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.CacheWriteSynchronizationMode;
+import org.apache.ignite.cache.affinity.AffinityFunction;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
import org.apache.ignite.cache.query.ContinuousQuery;
import org.apache.ignite.cache.query.FieldsQueryCursor;
import org.apache.ignite.cache.query.Query;
@@ -47,6 +51,8 @@
import org.apache.ignite.client.ClientConnectionException;
import org.apache.ignite.client.ClientDisconnectListener;
import org.apache.ignite.client.ClientException;
+import org.apache.ignite.client.ClientPartitionAwarenessMapper;
+import org.apache.ignite.client.ClientPartitionAwarenessMapperFactory;
import org.apache.ignite.client.ClientTransaction;
import org.apache.ignite.client.ClientTransactions;
import org.apache.ignite.client.IgniteClient;
@@ -359,9 +365,11 @@
try (IgniteClient client = Ignition.startClient(cfg)) {
ClientCache<Integer, String> cache = client.cache("myCache");
// Put, get or remove data from the cache...
- cache.put(0, "Hello, world!");
- // The partition number can be specified with IndexQuery#setPartition(Integer) as well.
- ScanQuery scanQuery = new ScanQuery().setPartition(part);
+
+ // Route the scan query to a node that owns the specified partition.
+ ScanQuery<Integer, String> scanQuery = new ScanQuery<Integer, String>().setPartition(0);
+
+ cache.query(scanQuery);
} catch (ClientException e) {
System.err.println(e.getMessage());
}
@@ -380,10 +388,10 @@
return aff::partition;
}
- })
+ });
try (IgniteClient client = Ignition.startClient(cfg)) {
- ClientCache<Integer, String> cache = client.cache(PART_CUSTOM_AFFINITY_CACHE_NAME);
+ ClientCache<Integer, String> cache = client.cache("partitioned_custom_affinity_cache");
// Put, get or remove data from the cache, partition awarenes will be enabled.
}
catch (ClientException e) {
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/Snapshots.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/Snapshots.java
index 0aa2fb4..fe0c026 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/Snapshots.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/Snapshots.java
@@ -16,7 +16,10 @@
*/
package org.apache.ignite.snippets;
+import java.io.File;
+import java.util.Collections;
import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -28,7 +31,8 @@
//tag::config[]
IgniteConfiguration cfg = new IgniteConfiguration();
- File exSnpDir = U.resolveWorkDirectory(U.defaultWorkDirectory(), "ex_snapshots", true);
+ // Any directory the Ignite process can write to (example value).
+ File exSnpDir = new File("work", "ex_snapshots");
cfg.setSnapshotPath(exSnpDir.getAbsolutePath());
//end::config[]
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/SqlAPI.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/SqlAPI.java
index eff7d03..60308e4 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/SqlAPI.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/SqlAPI.java
@@ -17,8 +17,10 @@
package org.apache.ignite.snippets;
import java.io.Serializable;
+import java.util.Arrays;
import java.util.List;
import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
@@ -26,6 +28,7 @@
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
import org.apache.ignite.cache.query.annotations.QuerySqlFunction;
+import org.apache.ignite.cache.query.annotations.QuerySqlTableFunction;
import org.apache.ignite.configuration.CacheConfiguration;
import org.junit.jupiter.api.Test;
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/TDE.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/TDE.java
index d0da946..9391e32 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/TDE.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/TDE.java
@@ -16,6 +16,7 @@
*/
package org.apache.ignite.snippets;
+import java.util.Collections;
import org.apache.ignite.Ignite;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.CacheConfiguration;
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/WarmUpStrategy.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/WarmUpStrategy.java
index 667b2d4..4d5c80f 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/WarmUpStrategy.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/WarmUpStrategy.java
@@ -14,70 +14,91 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-//tag::warm-all-regions[]
-IgniteConfiguration cfg = new IgniteConfiguration();
+package org.apache.ignite.snippets;
-DataStorageConfiguration storageCfg = new DataStorageConfiguration();
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.configuration.LoadAllWarmUpConfiguration;
+import org.apache.ignite.configuration.NoOpWarmUpConfiguration;
-//Changing the default warm-up strategy for all data regions
-storageCfg.setDefaultWarmUpConfiguration(new LoadAllWarmUpConfiguration());
+public class WarmUpStrategy {
+ public void warmAllRegions() {
+ //tag::warm-all-regions[]
+ IgniteConfiguration cfg = new IgniteConfiguration();
-cfg.setDataStorageConfiguration(storageCfg);
-//end::warm-all-regions[]
-//tag::warm-specific-region[]
-IgniteConfiguration cfg = new IgniteConfiguration();
+ DataStorageConfiguration storageCfg = new DataStorageConfiguration();
-DataStorageConfiguration storageCfg = new DataStorageConfiguration();
+ //Changing the default warm-up strategy for all data regions
+ storageCfg.setDefaultWarmUpConfiguration(new LoadAllWarmUpConfiguration());
-//Setting another warm-up strategy for a custom data region
-DataRegionConfiguration myNewDataRegion = new DataRegionConfiguration();
+ cfg.setDataStorageConfiguration(storageCfg);
+ //end::warm-all-regions[]
+ }
-myNewDataRegion.setName("NewDataRegion");
+ public void warmSpecificRegion() {
+ //tag::warm-specific-region[]
+ IgniteConfiguration cfg = new IgniteConfiguration();
-//You can tweak the initial size as well as other settings
-myNewDataRegion.setInitialSize(100 * 1024 * 1024);
+ DataStorageConfiguration storageCfg = new DataStorageConfiguration();
-//Performing data loading from disk in DRAM on restarts.
-myNewDataRegion.setWarmUpConfiguration(new LoadAllWarmUpConfiguration());
+ //Setting another warm-up strategy for a custom data region
+ DataRegionConfiguration myNewDataRegion = new DataRegionConfiguration();
-//Enabling Ignite persistence. Ignite reads data from disk when queried for tables/caches from this region.
-myNewDataRegion.setPersistenceEnabled(true);
+ myNewDataRegion.setName("NewDataRegion");
-//Applying the configuration.
-storageCfg.setDataRegionConfigurations(myNewDataRegion);
+ //You can tweak the initial size as well as other settings
+ myNewDataRegion.setInitialSize(100 * 1024 * 1024);
-cfg.setDataStorageConfiguration(storageCfg);
-//end::warm-specific-region[]
-//tag::disable-all-regions[]
-IgniteConfiguration cfg = new IgniteConfiguration();
+ //Performing data loading from disk in DRAM on restarts.
+ myNewDataRegion.setWarmUpConfiguration(new LoadAllWarmUpConfiguration());
-DataStorageConfiguration storageCfg = new DataStorageConfiguration();
+ //Enabling Ignite persistence. Ignite reads data from disk when queried for tables/caches from this region.
+ myNewDataRegion.setPersistenceEnabled(true);
-storageCfg.setDefaultWarmUpConfiguration(new NoOpWarmUpConfiguration());
+ //Applying the configuration.
+ storageCfg.setDataRegionConfigurations(myNewDataRegion);
-cfg.setDataStorageConfiguration(storageCfg);
-//end::disable-all-regions[]
-//tag::disable-specific-region[]
-IgniteConfiguration cfg = new IgniteConfiguration();
+ cfg.setDataStorageConfiguration(storageCfg);
+ //end::warm-specific-region[]
+ }
-DataStorageConfiguration storageCfg = new DataStorageConfiguration();
+ public void disableAllRegions() {
+ //tag::disable-all-regions[]
+ IgniteConfiguration cfg = new IgniteConfiguration();
-//Setting another warm-up strategy for a custom data region
-DataRegionConfiguration myNewDataRegion = new DataRegionConfiguration();
+ DataStorageConfiguration storageCfg = new DataStorageConfiguration();
-myNewDataRegion.setName("NewDataRegion");
+ storageCfg.setDefaultWarmUpConfiguration(new NoOpWarmUpConfiguration());
-//You can tweak the initial size as well as other settings
-myNewDataRegion.setInitialSize(100 * 1024 * 1024);
+ cfg.setDataStorageConfiguration(storageCfg);
+ //end::disable-all-regions[]
+ }
-//Skip data loading from disk in DRAM on restarts.
-myNewDataRegion.setWarmUpConfiguration(new NoOpWarmUpConfiguration());
+ public void disableSpecificRegion() {
+ //tag::disable-specific-region[]
+ IgniteConfiguration cfg = new IgniteConfiguration();
-//Enabling Ignite persistence. Ignite reads data from disk when queried for tables/caches from this region.
-myNewDataRegion.setPersistenceEnabled(true);
+ DataStorageConfiguration storageCfg = new DataStorageConfiguration();
-//Applying the configuration.
-storageCfg.setDataRegionConfigurations(myNewDataRegion);
+ //Setting another warm-up strategy for a custom data region
+ DataRegionConfiguration myNewDataRegion = new DataRegionConfiguration();
-cfg.setDataStorageConfiguration(storageCfg);
-//end::disable-specific-region[]
\ No newline at end of file
+ myNewDataRegion.setName("NewDataRegion");
+
+ //You can tweak the initial size as well as other settings
+ myNewDataRegion.setInitialSize(100 * 1024 * 1024);
+
+ //Skip data loading from disk in DRAM on restarts.
+ myNewDataRegion.setWarmUpConfiguration(new NoOpWarmUpConfiguration());
+
+ //Enabling Ignite persistence. Ignite reads data from disk when queried for tables/caches from this region.
+ myNewDataRegion.setPersistenceEnabled(true);
+
+ //Applying the configuration.
+ storageCfg.setDataRegionConfigurations(myNewDataRegion);
+
+ cfg.setDataStorageConfiguration(storageCfg);
+ //end::disable-specific-region[]
+ }
+}
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/WorkingWithBinaryObjects.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/WorkingWithBinaryObjects.java
index 0c7fc69..63a4f91 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/WorkingWithBinaryObjects.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/WorkingWithBinaryObjects.java
@@ -19,6 +19,7 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import javax.cache.Cache;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteBinary;
import org.apache.ignite.IgniteCache;
@@ -34,8 +35,12 @@
import org.apache.ignite.binary.BinaryTypeConfiguration;
import org.apache.ignite.binary.BinaryWriter;
import org.apache.ignite.cache.CacheEntryProcessor;
+import org.apache.ignite.cache.CacheInterceptor;
import org.apache.ignite.configuration.BinaryConfiguration;
+import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.lang.IgniteBiTuple;
+import org.jetbrains.annotations.Nullable;
public class WorkingWithBinaryObjects {
@@ -145,38 +150,56 @@
//tag::keepBinaryWithCacheInterceptor[]
public static void cacheWithInterceptorExample() {
try (Ignite ignite = Ignition.start()) {
- CacheConfiguration specConfig = new CacheConfiguration("personSpecCache");
- ccfg.setInterceptor(new CustomInterceptor(false));
- IgniteCache<Integer, Person> cache = ignite.createCache(ccfg);
+ CacheConfiguration<Integer, Person> specConfig = new CacheConfiguration<>("personSpecCache");
+ specConfig.setInterceptor(new CustomInterceptor<>(false));
+ IgniteCache<Integer, Person> cache = ignite.createCache(specConfig);
cache.put(1, new Person(1, "FirstPerson"));
- CacheConfiguration boConfig = new CacheConfiguration("boSpecCache");
- ccfg.setInterceptor(new CustomInterceptor(true));
- IgniteCache<Integer, Person> cache = ignite.createCache(ccfg);
- cache = cache.withKeepBinary();
- cache.put(1, new Person(1, "FirstPerson"));
+ CacheConfiguration<Integer, Person> boConfig = new CacheConfiguration<>("boSpecCache");
+ boConfig.setInterceptor(new CustomInterceptor<>(true));
+ IgniteCache<Integer, BinaryObject> binaryCache = ignite.<Integer, Person>createCache(boConfig).withKeepBinary();
+ binaryCache.put(1, ignite.binary().toBinary(new Person(1, "FirstPerson")));
}
}
- private static class CustomInterceptor implements CacheInterceptor<Object, Object> {
+ private static class CustomInterceptor<K, V> implements CacheInterceptor<K, V> {
boolean keepBinary;
CustomInterceptor(boolean keepBinary) {
this.keepBinary = keepBinary;
}
- @Nullable @Override public Object onBeforePut(Cache.Entry<Object, Object> entry, Object newVal) {
- assert keepBinary == newVal instanceof BinaryObject;
- // do smth.
+ /** */
+ @Nullable @Override public V onGet(K key, @Nullable V val) {
+ return val;
}
- @Nullable @Override public IgniteBiTuple<Boolean, Object> onBeforeRemove(Cache.Entry<Object, Object> entry) {
- Object val = entry.getValue();
+ /** */
+ @Nullable @Override public V onBeforePut(Cache.Entry<K, V> entry, V newVal) {
+ assert keepBinary == newVal instanceof BinaryObject;
+ // do smth.
+ return newVal;
+ }
+
+ /** */
+ @Override public void onAfterPut(Cache.Entry<K, V> entry) {
+ // No-op.
+ }
+
+ /** */
+ @Nullable @Override public IgniteBiTuple<Boolean, V> onBeforeRemove(Cache.Entry<K, V> entry) {
+ V val = entry.getValue();
if (val != null) {
assert keepBinary == entry.getValue() instanceof BinaryObject;
}
// do smth.
+ return new IgniteBiTuple<>(false, val);
+ }
+
+ /** */
+ @Override public void onAfterRemove(Cache.Entry<K, V> entry) {
+ // No-op.
}
}
//end::keepBinaryWithCacheInterceptor[]
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/k8s/K8s.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/k8s/K8s.java
index 856ac0e..121ff30 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/k8s/K8s.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/k8s/K8s.java
@@ -19,7 +19,9 @@
import org.apache.ignite.Ignition;
import org.apache.ignite.client.ClientCache;
import org.apache.ignite.client.IgniteClient;
+import org.apache.ignite.client.ThinClientKubernetesAddressFinder;
import org.apache.ignite.configuration.ClientConfiguration;
+import org.apache.ignite.kubernetes.configuration.KubernetesConnectionConfiguration;
public class K8s {
@@ -47,7 +49,7 @@
ClientConfiguration ccfg = new ClientConfiguration();
ccfg.setAddressesFinder(new ThinClientKubernetesAddressFinder(kcfg));
- IgniteClient client = Ignition.startClient(cfg);
+ IgniteClient client = Ignition.startClient(ccfg);
ClientCache<Integer, String> cache = client.getOrCreateCache("test_cache");
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoService.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoService.java
index 70a7227..1146806 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoService.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoService.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.examples;
+package org.apache.ignite.snippets.services;
import org.apache.ignite.services.Service;
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoServiceAccessInterceptor.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoServiceAccessInterceptor.java
index 9137c52..1bbff74 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoServiceAccessInterceptor.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoServiceAccessInterceptor.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.examples;
+package org.apache.ignite.snippets.services;
import java.util.concurrent.Callable;
import org.apache.ignite.services.ServiceCallContext;
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoServiceImpl.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoServiceImpl.java
index cfa9348..a39cd9c 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoServiceImpl.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/EchoServiceImpl.java
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.ignite.examples;
+package org.apache.ignite.snippets.services;
import org.apache.ignite.resources.ServiceContextResource;
import org.apache.ignite.services.ServiceCallContext;
diff --git a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/ServiceExample.java b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/ServiceExample.java
index cd9218b..c51b116 100644
--- a/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/ServiceExample.java
+++ b/docs/_docs/code-snippets/java/src/main/java/org/apache/ignite/snippets/services/ServiceExample.java
@@ -23,7 +23,8 @@
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.services.ServiceConfiguration;
-import org.junit.Test;
+import org.apache.ignite.services.ServiceCallContext;
+import org.junit.jupiter.api.Test;
public class ServiceExample {
diff --git a/docs/_docs/configuring-caches/configuration-overview.adoc b/docs/_docs/configuring-caches/configuration-overview.adoc
index 00541fd..52521a5 100644
--- a/docs/_docs/configuring-caches/configuration-overview.adoc
+++ b/docs/_docs/configuring-caches/configuration-overview.adoc
@@ -79,7 +79,10 @@
| `IGNORE`
|`readFromBackup`
-| [[readfrombackup]] Read requested cache entry from the backup partition if it is available on the local node instead of making a request to the primary partition (which can be located on the remote nodes).
+| [[readfrombackup]] Read requested cache entry from the backup partition if it is available on the local node
+instead of making a request to the primary partition (which can be located on the remote nodes).
+In link:clustering/multi-data-center[multi data center deployments], this setting allows Ignite to read from a backup
+located in the same data center when such a backup is available.
| `true`
|`queryPrallelism` | The number of threads in a single node to process a SQL query executed on the cache. Refer to the link:SQL/sql-tuning#query-parallelism[Query Parallelism] section in the Performance guide for more information.
diff --git a/docs/_docs/configuring-caches/configuring-backups.adoc b/docs/_docs/configuring-caches/configuring-backups.adoc
index 30535eb..3d359fe 100644
--- a/docs/_docs/configuring-caches/configuring-backups.adoc
+++ b/docs/_docs/configuring-caches/configuring-backups.adoc
@@ -89,4 +89,34 @@
//NOTE: Regardless of write synchronization mode, cache data will always remain fully consistent across all participating nodes when using transactions.
+== Affinity Backup Filters
+`RendezvousAffinityFunction` can use an affinity backup filter to control where backup copies are placed.
+Backup filters are useful when cache copies must follow hardware, availability zone, rack, cell, or data center boundaries.
+
+Ignite provides the following built-in filters:
+
+[cols="1,3",opts="header"]
+|===
+| Filter | Description
+| `ClusterNodeAttributeAffinityBackupFilter`
+| Places backup copies on nodes that have different values of the configured node attributes.
+Use it to spread partition copies across availability zones, racks, or other failure domains.
+
+| `ClusterNodeAttributeColocatedBackupFilter`
+| Places backup copies on nodes that have the same value of the configured node attribute as the primary node.
+Use it to keep all copies of a partition inside the same cell or another co-location group.
+For example, if nodes are grouped by a `CELL` attribute, the primary and backups for one partition are placed
+on nodes from the same cell, while other partitions can be assigned to other cells.
+
+| `MdcAffinityBackupFilter`
+| Places partition copies evenly across data centers.
+Use it in link:clustering/multi-data-center[multi data center deployments].
+|===
+
+[NOTE]
+====
+`ClusterNodeAttributeColocatedBackupFilter` intentionally co-locates partition copies in the same attribute group.
+It is useful for cell-based layouts where the goal is to limit the failure impact to a cell.
+It should not be used when the goal is to spread copies across data centers or availability zones.
+====
diff --git a/docs/_docs/extensions-and-integrations/spring/spring-tx.adoc b/docs/_docs/extensions-and-integrations/spring/spring-tx.adoc
index 442b03d..d6e6d0e 100644
--- a/docs/_docs/extensions-and-integrations/spring/spring-tx.adoc
+++ b/docs/_docs/extensions-and-integrations/spring/spring-tx.adoc
@@ -155,6 +155,13 @@
| 1.0.0 | All versions since 2.11.0 | All versions since 4.3.0
|===
+[NOTE]
+====
+Starting with Apache Ignite 2.19, Spring integration is based on Spring Framework 6 and Jakarta EE APIs.
+If your application uses `ignite-jta` transaction manager lookup classes, compile custom lookup code against
+`jakarta.transaction.TransactionManager` instead of the legacy `javax.transaction.TransactionManager`.
+====
+
== Apache Ignite Node Transaction Manager Configuration
This chapter shows how to set up `SpringTransactionManager` that relies on Apache Ignite node to connect to the cluster
and to manage transactions. The configuration consists of two steps -
diff --git a/docs/_docs/memory-configuration/data-regions.adoc b/docs/_docs/memory-configuration/data-regions.adoc
index 9f958c7..27f089d 100644
--- a/docs/_docs/memory-configuration/data-regions.adoc
+++ b/docs/_docs/memory-configuration/data-regions.adoc
@@ -88,7 +88,7 @@
Presently, the Ignite warm-up strategy implies loading data into all or specific data regions of Ignite, starting with indexes, until it runs out of free space. It can be configured both for all regions (by default) or for each region separately.
-To warm up all data regions, pass the configuration parameter `LoadAllWarmUpStrategy` to the `DataStorageConfiguration#setDefaultWarmUpConfiguration` as follows:
+To warm up all data regions, pass the configuration parameter `LoadAllWarmUpConfiguration` to the `DataStorageConfiguration#setDefaultWarmUpConfiguration` as follows:
:xmlFile: code-snippets/xml/warm-up-strategy.xml
:javaFile: {javaCodeDir}/WarmUpStrategy.java
@@ -111,7 +111,7 @@
--
-To warm up a specific data region, pass the configuration parameter `LoadAllWarmUpStrategy` to the `DataStorageConfiguration#setWarmUpConfiguration` as follows:
+To warm up a specific data region, pass the configuration parameter `LoadAllWarmUpConfiguration` to the `DataRegionConfiguration#setWarmUpConfiguration` as follows:
[tabs]
@@ -153,7 +153,7 @@
--
-To stop the warm-up for a specific data region, pass the configuration parameter `NoOpWarmUpStrategy` to the `DataStorageConfiguration#setWarmUpConfiguration` as follows:
+To stop the warm-up for a specific data region, pass the configuration parameter `NoOpWarmUpConfiguration` to the `DataRegionConfiguration#setWarmUpConfiguration` as follows:
[tabs]
--
diff --git a/docs/_docs/memory-configuration/eviction-policies.adoc b/docs/_docs/memory-configuration/eviction-policies.adoc
index 9aee23c..781b055 100644
--- a/docs/_docs/memory-configuration/eviction-policies.adoc
+++ b/docs/_docs/memory-configuration/eviction-policies.adoc
@@ -48,6 +48,24 @@
By default, eviction starts when the overall RAM consumption by a region gets to 90%.
Use the `DataRegionConfiguration.setEvictionThreshold(...)` parameter if you need to initiate eviction earlier or later.
+=== Monitoring Page Eviction
+
+When page eviction starts due to a data region being under memory pressure, Ignite sets the `EvictionsStarted` metric to `true` for that data region.
+This metric is relevant for in-memory data regions, where page eviction can remove data from memory.
+It is available in the `io.dataregion.{data_region_name}` registry.
+After `EvictionsStarted` becomes `true`, it remains `true` until the node is restarted.
+Use it together with `EvictionRate` to monitor whether eviction has started and how actively pages are being evicted.
+
+Ignite also logs a warning when page-based eviction starts:
+
+[source,text]
+----
+Page-based evictions started. Consider increasing 'maxSize' on Data Region configuration: <region_name>
+----
+
+The warning is logged once per data region.
+For monitoring, prefer the `EvictionsStarted` metric because monitoring tools can use it directly without relying on log parsing.
+
Ignite supports two page selection algorithms:
* Random-LRU
diff --git a/docs/_docs/monitoring-metrics/new-metrics.adoc b/docs/_docs/monitoring-metrics/new-metrics.adoc
index 0850d9a..30c78bd 100644
--- a/docs/_docs/monitoring-metrics/new-metrics.adoc
+++ b/docs/_docs/monitoring-metrics/new-metrics.adoc
@@ -85,6 +85,8 @@
|GetTimeTotal | long | The total time of cache gets for which this node is the initiator, in nanoseconds.
|HeapEntriesCount|long|Onheap entries count.
|IndexRebuildKeysProcessed|long | The number of keys with rebuilt indexes.
+|IsCacheAffinityConfigurationMdcSafe|boolean | True if cache affinity guarantees having a copy of each partition in each data center.
+|IsCachePartitionDistributionSafe|boolean | True if current cache partition distribution maintains the guarantee of one partition copy in each data center.
|IsIndexRebuildInProgress|boolean | True if index build or rebuild is in progress.
|OffHeapBackupEntriesCount|long|Offheap backup entries count.
|OffHeapEntriesCount|long|Offheap entries count.
@@ -368,6 +370,7 @@
[cols="2,1,3",opts="header"]
|===
|Name| Type| Description
+|ClientRouterNodeId| String| Client router node ID (metric is exported only from client nodes).
|CoordinatorSince| long| Timestamp since which the local node became the coordinator (metric is exported only from server nodes).
|Coordinator| UUID| Coordinator ID (metric is exported only from server nodes).
|CurrentTopologyVersion| long| Current topology version.
diff --git a/docs/_docs/monitoring-metrics/system-views.adoc b/docs/_docs/monitoring-metrics/system-views.adoc
index d742634..b6c684e 100644
--- a/docs/_docs/monitoring-metrics/system-views.adoc
+++ b/docs/_docs/monitoring-metrics/system-views.adoc
@@ -314,6 +314,7 @@
|IS_CLIENT |BOOLEAN |Indicates whether the node is a client.
|NODE_ID |UUID |Node ID.
|NODE_ORDER |INT |Node order within the topology.
+|DATA_CENTER_ID |VARCHAR |Node data center ID.
|VERSION |VARCHAR |Node version.
|===
diff --git a/docs/_docs/setup.adoc b/docs/_docs/setup.adoc
index e3178be..8cdb8bc 100644
--- a/docs/_docs/setup.adoc
+++ b/docs/_docs/setup.adoc
@@ -208,7 +208,7 @@
|ignite-jcl |Support for the Jakarta Common Logging (JCL) framework.
-|ignite-jta |Integration of Ignite transactions with JTA.
+|ignite-jta |Integration of Ignite transactions with JTA. Starting with Apache Ignite 2.19, custom JTA integration code must use Jakarta Transaction API classes, such as `jakarta.transaction.TransactionManager`.
|ignite-kafka | Ignite Kafka Streamer provides capability to stream data from Kafka to Ignite caches.
diff --git a/docs/_docs/thin-clients/java-thin-client.adoc b/docs/_docs/thin-clients/java-thin-client.adoc
index 33387aa..20783b5 100644
--- a/docs/_docs/thin-clients/java-thin-client.adoc
+++ b/docs/_docs/thin-clients/java-thin-client.adoc
@@ -119,6 +119,13 @@
include::{sourceCodeFile}[tag=partition-awareness,indent=0]
----
+In link:clustering/multi-data-center[multi data center deployments], the Java thin client can prefer server nodes
+located in the same data center as the client.
+Set the `IGNITE_DATA_CENTER_ID` system property or set the same key in `ClientConfiguration#setUserAttributes(...)`
+to enable data-center-aware routing. The system property takes precedence over the client user attribute.
+For partition-aware reads from local backup nodes, the cache must have `readFromBackup=true` and a write
+synchronization mode other than `PRIMARY_SYNC`.
+
The code sample below shows how to use a custom cache key to partition mapping function to enable affinity awareness on
a thin client side if the cache already exists in a cluster or/and was created with custom AffinityFunction or AffinityKeyMapper.
diff --git a/examples/src/main/java/org/apache/ignite/examples/misc/springbean/SpringBeanExample.java b/examples/src/main/java/org/apache/ignite/examples/misc/springbean/SpringBeanExample.java
index 66b22fa..d514db2 100644
--- a/examples/src/main/java/org/apache/ignite/examples/misc/springbean/SpringBeanExample.java
+++ b/examples/src/main/java/org/apache/ignite/examples/misc/springbean/SpringBeanExample.java
@@ -53,11 +53,9 @@
System.out.println();
System.out.println(">>> Spring bean example started.");
- // Initialize Spring factory.
- ClassPathXmlApplicationContext ctx =
- new ClassPathXmlApplicationContext("org/apache/ignite/examples/misc/springbean/spring-bean.xml");
-
- try {
+ // Initialize Spring factory (closed automatically, which stops the local cluster node).
+ try (ClassPathXmlApplicationContext ctx =
+ new ClassPathXmlApplicationContext("org/apache/ignite/examples/misc/springbean/spring-bean.xml")) {
// Get ignite from Spring (note that local cluster node is already started).
Ignite ignite = (Ignite)ctx.getBean("mySpringBean");
@@ -81,9 +79,5 @@
System.out.println(">>> Check all nodes for output (this node is also part of the cluster).");
System.out.println(">>>");
}
- finally {
- // Stop local cluster node.
- ctx.destroy();
- }
}
}
diff --git a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/notify/JmhWaitStategyBenchmark.java b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/notify/JmhWaitStategyBenchmark.java
index 1c6a641..af8f2a6 100644
--- a/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/notify/JmhWaitStategyBenchmark.java
+++ b/modules/benchmarks/src/main/java/org/apache/ignite/internal/benchmarks/jmh/notify/JmhWaitStategyBenchmark.java
@@ -106,6 +106,7 @@
/** Decreasing expiry policy. */
private static final ExpiryPolicy DECREASING_EXPIRY_POLICY = new ExpiryPolicy() {
+ /** */
AtomicLong duration = new AtomicLong(1_000_000_000);
@Override public Duration getExpiryForCreation() {
@@ -123,6 +124,7 @@
/** Increasing expiry policy. */
private static final ExpiryPolicy INCREASING_EXPIRY_POLICY = new ExpiryPolicy() {
+ /** */
AtomicLong duration = new AtomicLong(1_000_000);
@Override public Duration getExpiryForCreation() {
diff --git a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
index db0a86e..7411659 100644
--- a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
+++ b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryMarshaller.java
@@ -83,14 +83,7 @@
/** {@inheritDoc} */
@Override protected void marshal0(@Nullable Object obj, OutputStream out) throws IgniteCheckedException {
- byte[] arr = marshal(obj);
-
- try {
- out.write(arr);
- }
- catch (Exception e) {
- throw new BinaryObjectException("Failed to marshal the object: " + obj, e);
- }
+ impl.marshal(obj, out, false);
}
/** {@inheritDoc} */
diff --git a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
index cbb9394..fcbd74f 100644
--- a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
+++ b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/BinaryUtils.java
@@ -27,6 +27,7 @@
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.lang.reflect.Array;
+import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
@@ -62,15 +63,23 @@
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.IgniteLogger;
import org.apache.ignite.binary.BinaryCollectionFactory;
+import org.apache.ignite.binary.BinaryIdMapper;
import org.apache.ignite.binary.BinaryInvalidTypeException;
import org.apache.ignite.binary.BinaryMapFactory;
+import org.apache.ignite.binary.BinaryNameMapper;
import org.apache.ignite.binary.BinaryObject;
import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.binary.BinarySerializer;
import org.apache.ignite.binary.BinaryType;
+import org.apache.ignite.binary.BinaryTypeConfiguration;
import org.apache.ignite.binary.Binarylizable;
+import org.apache.ignite.cache.affinity.AffinityKeyMapped;
+import org.apache.ignite.configuration.BinaryConfiguration;
import org.apache.ignite.internal.binary.streams.BinaryInputStream;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.MutableSingletonList;
import org.apache.ignite.internal.util.typedef.F;
@@ -78,6 +87,7 @@
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteUuid;
+import org.apache.ignite.logger.NullLogger;
import org.apache.ignite.marshaller.Marshallers;
import org.apache.ignite.platform.PlatformType;
import org.jetbrains.annotations.Nullable;
@@ -167,6 +177,10 @@
public static boolean FIELDS_SORTED_ORDER =
IgniteCommonsSystemProperties.getBoolean(IgniteCommonsSystemProperties.IGNITE_BINARY_SORT_OBJECT_FIELDS);
+ /** For tests. */
+ @SuppressWarnings("PublicField")
+ public static boolean useTestBinaryCtx;
+
/** Field type names. */
private static final String[] FIELD_TYPE_NAMES;
@@ -3091,4 +3105,193 @@
this.clsName = clsName;
}
}
+
+ /**
+ * @param cls Class to get affinity field for.
+ * @return Affinity field name or {@code null} if field name was not found.
+ */
+ public static String affinityFieldName(Class cls) {
+ for (; cls != Object.class && cls != null; cls = cls.getSuperclass()) {
+ for (Field f : cls.getDeclaredFields()) {
+ if (f.getAnnotation(AffinityKeyMapped.class) != null)
+ return f.getName();
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Creates a binary context with default (empty) configuration for the given marshaller.
+ *
+ * @param marsh Binary marshaller (may be {@code null}).
+ * @return Binary context instance.
+ */
+ public static BinaryContext binaryContext(BinaryMarshaller marsh) {
+ return binaryContext(
+ cachingMetadataHandler(),
+ marsh,
+ null,
+ null,
+ new BinaryConfiguration(),
+ Collections.emptyMap(),
+ BinaryUtils::affinityFieldName,
+ NullLogger.INSTANCE
+ );
+ }
+
+ /**
+ * Creates a binary context from explicit values.
+ *
+ * @param metaHnd Binary metadata handler.
+ * @param marsh Binary marshaller.
+ * @param igniteInstanceName Ignite instance name.
+ * @param classLoader Class loader.
+ * @param binCfg Binary configuration.
+ * @param affFlds Affinity fields by type name.
+ * @param affFldNameProvider Affinity field name provider.
+ * @param log Logger.
+ * @return Binary context instance.
+ */
+ public static BinaryContext binaryContext(
+ BinaryMetadataHandler metaHnd,
+ BinaryMarshaller marsh,
+ @Nullable String igniteInstanceName,
+ @Nullable ClassLoader classLoader,
+ BinaryConfiguration binCfg,
+ Map<String, String> affFlds,
+ Function<Class<?>, String> affFldNameProvider,
+ IgniteLogger log
+ ) {
+ return useTestBinaryCtx
+ ? new TestBinaryContext(
+ metaHnd,
+ marsh,
+ igniteInstanceName,
+ classLoader,
+ binCfg.getSerializer(),
+ binCfg.getIdMapper(),
+ binCfg.getNameMapper(),
+ binCfg.getTypeConfigurations(),
+ affFlds,
+ binCfg.isCompactFooter(),
+ affFldNameProvider,
+ log
+ )
+ : new BinaryContext(
+ metaHnd,
+ marsh,
+ igniteInstanceName,
+ classLoader,
+ binCfg.getSerializer(),
+ binCfg.getIdMapper(),
+ binCfg.getNameMapper(),
+ binCfg.getTypeConfigurations(),
+ affFlds,
+ binCfg.isCompactFooter(),
+ affFldNameProvider,
+ log
+ );
+ }
+
+ /** */
+ @SuppressWarnings("PublicInnerClass")
+ public static class TestBinaryContext extends BinaryContext {
+ /** */
+ private List<TestBinaryContextListener> listeners;
+
+ /** */
+ public TestBinaryContext(
+ BinaryMetadataHandler metaHnd,
+ @Nullable BinaryMarshaller marsh,
+ @Nullable String igniteInstanceName,
+ @Nullable ClassLoader clsLdr,
+ @Nullable BinarySerializer dfltSerializer,
+ @Nullable BinaryIdMapper idMapper,
+ @Nullable BinaryNameMapper nameMapper,
+ @Nullable Collection<BinaryTypeConfiguration> typeCfgs,
+ Map<String, String> affFlds,
+ boolean compactFooter,
+ Function<Class<?>, String> affFldNameProvider,
+ IgniteLogger log
+ ) {
+ super(
+ metaHnd,
+ marsh,
+ igniteInstanceName,
+ clsLdr,
+ dfltSerializer,
+ idMapper,
+ nameMapper,
+ typeCfgs,
+ affFlds,
+ compactFooter,
+ affFldNameProvider,
+ log
+ );
+ }
+
+
+ /** {@inheritDoc} */
+ @Nullable @Override public BinaryType metadata(int typeId) throws BinaryObjectException {
+ BinaryType metadata = super.metadata(typeId);
+
+ if (listeners != null) {
+ for (TestBinaryContextListener listener : listeners)
+ listener.onAfterMetadataRequest(typeId, metadata);
+ }
+
+ return metadata;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void updateMetadata(int typeId, BinaryMetadata meta, boolean failIfUnregistered) throws BinaryObjectException {
+ if (listeners != null) {
+ for (TestBinaryContextListener listener : listeners)
+ listener.onBeforeMetadataUpdate(typeId, meta);
+ }
+
+ super.updateMetadata(typeId, meta, failIfUnregistered);
+ }
+
+ /** */
+ public interface TestBinaryContextListener {
+ /**
+ * @param typeId Type id.
+ * @param type Type.
+ */
+ void onAfterMetadataRequest(int typeId, BinaryType type);
+
+ /**
+ * @param typeId Type id.
+ * @param metadata Metadata.
+ */
+ void onBeforeMetadataUpdate(int typeId, BinaryMetadata metadata);
+ }
+
+ /** @param lsnr Listener. */
+ public void addListener(TestBinaryContextListener lsnr) {
+ if (listeners == null)
+ listeners = new ArrayList<>();
+
+ if (!listeners.contains(lsnr))
+ listeners.add(lsnr);
+ }
+
+ /** */
+ public void clearAllListener() {
+ if (listeners != null)
+ listeners.clear();
+ }
+ }
+
+ /**
+ * Represents the given cache version as an {@link IgniteUuid}.
+ *
+ * @param ver Cache version.
+ * @return Version represented as {@code IgniteUuid}.
+ */
+ public static IgniteUuid asIgniteUuid(GridCacheVersion ver) {
+ return new IgniteUuid(new UUID(ver.topologyVersion(), ver.nodeOrderAndDrIdRaw()), ver.order());
+ }
}
diff --git a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
index 651781e..75e5252 100644
--- a/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
+++ b/modules/binary/api/src/main/java/org/apache/ignite/internal/binary/GridBinaryMarshaller.java
@@ -17,6 +17,8 @@
package org.apache.ignite.internal.binary;
+import java.io.IOException;
+import java.io.OutputStream;
import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;
@@ -258,6 +260,35 @@
}
/**
+ * Marshals the object directly into the given stream, without allocating a trimmed copy of the whole result.
+ *
+ * @param obj Object to marshal.
+ * @param out Output stream.
+ * @param failIfUnregistered Throw exception if class isn't registered.
+ * @throws BinaryObjectException In case of error.
+ */
+ public void marshal(@Nullable Object obj, OutputStream out, boolean failIfUnregistered) throws BinaryObjectException {
+ try {
+ if (obj == null) {
+ out.write(NULL);
+
+ return;
+ }
+
+ try (BinaryWriterEx writer = BinaryUtils.writer(ctx, failIfUnregistered, UNREGISTERED_TYPE_ID)) {
+ writer.marshal(obj);
+
+ BinaryOutputStream s = writer.out();
+
+ out.write(s.array(), 0, s.position());
+ }
+ }
+ catch (IOException e) {
+ throw new BinaryObjectException("Failed to marshal the object: " + obj, e);
+ }
+ }
+
+ /**
* @param bytes Bytes array.
* @return Binary object.
* @throws org.apache.ignite.binary.BinaryObjectException In case of error.
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/IgniteMarshallerClassFilter.java b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/IgniteMarshallerClassFilter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/marshaller/IgniteMarshallerClassFilter.java
rename to modules/binary/api/src/main/java/org/apache/ignite/marshaller/IgniteMarshallerClassFilter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/IgniteObjectInputFilter.java b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/IgniteObjectInputFilter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/marshaller/IgniteObjectInputFilter.java
rename to modules/binary/api/src/main/java/org/apache/ignite/marshaller/IgniteObjectInputFilter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
similarity index 86%
rename from modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
rename to modules/binary/api/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
index 4d474aa..9248181 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
+++ b/modules/binary/api/src/main/java/org/apache/ignite/marshaller/MarshallerUtils.java
@@ -26,19 +26,16 @@
import java.io.InputStreamReader;
import java.io.ObjectInputFilter;
import java.net.URL;
-import java.util.Collection;
import java.util.Enumeration;
import java.util.Objects;
import java.util.function.Consumer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.IgniteException;
-import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.internal.ClassSet;
-import org.apache.ignite.plugin.PluginProvider;
-import org.jetbrains.annotations.Nullable;
-import static org.apache.ignite.IgniteSystemProperties.IGNITE_ENABLE_OBJECT_INPUT_FILTER_AUTOCONFIGURATION;
-import static org.apache.ignite.IgniteSystemProperties.IGNITE_MARSHALLER_BLACKLIST;
+import static org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_ENABLE_OBJECT_INPUT_FILTER_AUTOCONFIGURATION;
+import static org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_MARSHALLER_BLACKLIST;
/**
* Utility marshaller methods.
@@ -81,7 +78,7 @@
* @throws IgniteCheckedException if autoconfiguration failed.
*/
public static void autoconfigureObjectInputFilter(IgniteMarshallerClassFilter clsFilter) throws IgniteCheckedException {
- if (!IgniteSystemProperties.getBoolean(IGNITE_ENABLE_OBJECT_INPUT_FILTER_AUTOCONFIGURATION, true))
+ if (!IgniteCommonsSystemProperties.getBoolean(IGNITE_ENABLE_OBJECT_INPUT_FILTER_AUTOCONFIGURATION, true))
return;
synchronized (MUX) {
@@ -116,7 +113,7 @@
private static ClassSet classWhiteList(ClassLoader clsLdr) throws IgniteCheckedException {
ClassSet clsSet = null;
- String fileName = IgniteSystemProperties.getString(IgniteSystemProperties.IGNITE_MARSHALLER_WHITELIST);
+ String fileName = IgniteCommonsSystemProperties.getString(IgniteCommonsSystemProperties.IGNITE_MARSHALLER_WHITELIST);
if (fileName != null) {
clsSet = new ClassSet();
@@ -139,7 +136,7 @@
addClassNames(DEFAULT_BLACKLIST_CLS_NAMES_FILE, clsSet, clsLdr);
- String blackListFileName = IgniteSystemProperties.getString(IGNITE_MARSHALLER_BLACKLIST);
+ String blackListFileName = IgniteCommonsSystemProperties.getString(IGNITE_MARSHALLER_BLACKLIST);
if (blackListFileName != null)
addClassNames(blackListFileName, clsSet, clsLdr);
@@ -197,11 +194,9 @@
* Find all system class names (for JDK or Ignite classes) and process them with a given consumer.
*
* @param ldr Class loader.
- * @param plugins Plugins.
* @param proc Class processor (class name consumer).
*/
- public static void processSystemClasses(ClassLoader ldr, @Nullable Collection<PluginProvider> plugins,
- Consumer<String> proc) throws IOException {
+ public static void processSystemClasses(ClassLoader ldr, Consumer<String> proc) throws IOException {
Enumeration<URL> urls = ldr.getResources(CLS_NAMES_FILE);
boolean foundClsNames = false;
@@ -223,16 +218,6 @@
"[file=" + JDK_CLS_NAMES_FILE + ", ldr=" + ldr + ']');
processResource(jdkClsNames, proc);
-
- if (plugins != null && !plugins.isEmpty()) {
- for (PluginProvider plugin : plugins) {
- Enumeration<URL> pluginUrls = ldr.getResources("META-INF/" + plugin.name().toLowerCase()
- + ".classnames.properties");
-
- while (pluginUrls.hasMoreElements())
- processResource(pluginUrls.nextElement(), proc);
- }
- }
}
/**
@@ -242,7 +227,7 @@
* @param proc Class processor (class name consumer).
* @throws IOException In case of error.
*/
- private static void processResource(URL url, Consumer<String> proc) throws IOException {
+ public static void processResource(URL url, Consumer<String> proc) throws IOException {
try (BufferedReader rdr = new BufferedReader(new InputStreamReader(url.openStream()))) {
String line;
diff --git a/modules/bom/pom.xml b/modules/bom/pom.xml
index e14c89f..b365dac 100644
--- a/modules/bom/pom.xml
+++ b/modules/bom/pom.xml
@@ -188,6 +188,16 @@
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>ignite-thin-client-impl</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-nio</artifactId>
+ <version>${revision}</version>
+ </dependency>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>ignite-codegen</artifactId>
<version>${revision}</version>
</dependency>
diff --git a/modules/calcite/pom.xml b/modules/calcite/pom.xml
index 9454512..27c49c5 100644
--- a/modules/calcite/pom.xml
+++ b/modules/calcite/pom.xml
@@ -35,8 +35,8 @@
<!-- Module specific package versions -->
<properties>
- <avatica.version>1.26.0</avatica.version>
- <calcite.version>1.40.0</calcite.version>
+ <avatica.version>1.28.0</avatica.version>
+ <calcite.version>1.42.0</calcite.version>
<failureaccess.version>1.0.1</failureaccess.version>
<immutables.version>2.8.2</immutables.version>
<janino.version>3.1.12</janino.version>
@@ -69,6 +69,12 @@
<groupId>org.apache.calcite</groupId>
<artifactId>calcite-core</artifactId>
<version>${calcite.version}</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-dbcp2</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
diff --git a/modules/calcite/src/main/codegen/config.fmpp b/modules/calcite/src/main/codegen/config.fmpp
index 4a5d1c4..9e32885 100644
--- a/modules/calcite/src/main/codegen/config.fmpp
+++ b/modules/calcite/src/main/codegen/config.fmpp
@@ -387,6 +387,7 @@
"UESCAPE"
"UNIQUE"
"UNKNOWN"
+ "UNSIGNED"
"UPPER"
"UPSERT"
"UUID"
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementor.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementor.java
index 3ff4bc5..1e93eec 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementor.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementor.java
@@ -27,13 +27,16 @@
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier;
+import com.google.common.collect.ImmutableList;
import org.apache.calcite.rel.RelCollation;
import org.apache.calcite.rel.RelFieldCollation;
import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.core.Intersect;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Spool;
+import org.apache.calcite.rel.core.Window;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeField;
import org.apache.calcite.rex.RexLiteral;
@@ -48,6 +51,8 @@
import org.apache.ignite.internal.processors.query.calcite.exec.exp.RangeIterable;
import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.AccumulatorWrapper;
import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.AggregateType;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.window.WindowPartition;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.window.WindowPartitionFactory;
import org.apache.ignite.internal.processors.query.calcite.exec.rel.AbstractSetOpNode;
import org.apache.ignite.internal.processors.query.calcite.exec.rel.CollectNode;
import org.apache.ignite.internal.processors.query.calcite.exec.rel.CorrelatedNestedLoopJoinNode;
@@ -73,6 +78,7 @@
import org.apache.ignite.internal.processors.query.calcite.exec.rel.TableSpoolNode;
import org.apache.ignite.internal.processors.query.calcite.exec.rel.UncollectNode;
import org.apache.ignite.internal.processors.query.calcite.exec.rel.UnionAllNode;
+import org.apache.ignite.internal.processors.query.calcite.exec.rel.WindowNode;
import org.apache.ignite.internal.processors.query.calcite.metadata.AffinityService;
import org.apache.ignite.internal.processors.query.calcite.metadata.ColocationGroup;
import org.apache.ignite.internal.processors.query.calcite.prepare.bounds.SearchBounds;
@@ -85,7 +91,6 @@
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteIndexBound;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteIndexCount;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteIndexScan;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteJoinInfo;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteLimit;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteMergeJoin;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteNestedLoopJoin;
@@ -104,6 +109,7 @@
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteUncollect;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteUnionAll;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteValues;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteWindow;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteColocatedHashAggregate;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteColocatedSortAggregate;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteMapHashAggregate;
@@ -282,8 +288,6 @@
RelDataType rightType = rel.getRight().getRowType();
JoinRelType joinType = rel.getJoinType();
- IgniteJoinInfo joinInfo = IgniteJoinInfo.of(rel);
-
RexNode nonEquiConditionExpression = RexUtil.composeConjunction(Commons.emptyCluster().getRexBuilder(),
rel.analyzeCondition().nonEquiConditions, true);
@@ -295,7 +299,7 @@
nonEquiCondition = expressionFactory.biPredicate(rel.getCondition(), rowType);
}
- Node<Row> node = HashJoinNode.create(ctx, outType, leftType, rightType, joinType, joinInfo,
+ Node<Row> node = HashJoinNode.create(ctx, outType, leftType, rightType, joinType, rel.analyzeCondition(),
nonEquiCondition);
node.register(Arrays.asList(visit(rel.getLeft()), visit(rel.getRight())));
@@ -339,14 +343,14 @@
List<RelFieldCollation> leftCollations = rel.leftCollation().getFieldCollations();
List<RelFieldCollation> rightCollations = rel.rightCollation().getFieldCollations();
- ImmutableBitSet allowNulls = rel.allowNulls();
- ImmutableBitSet.Builder collsAllowNullsBuilder = ImmutableBitSet.builder();
+ ImmutableList<Boolean> nullExclusions = rel.analyzeCondition().nullExclusionFlags;
+ ImmutableBitSet.Builder nullCompAsEqual = ImmutableBitSet.builder();
int lastCollField = -1;
for (int c = 0; c < Math.min(leftCollations.size(), rightCollations.size()); ++c) {
RelFieldCollation leftColl = leftCollations.get(c);
RelFieldCollation rightColl = rightCollations.get(c);
- collsAllowNullsBuilder.set(c);
+ nullCompAsEqual.set(c);
for (int p = 0; p < pairsCnt; ++p) {
IntPair pair = joinPairs.get(p);
@@ -354,8 +358,8 @@
if (pair.source == leftColl.getFieldIndex() && pair.target == rightColl.getFieldIndex()) {
lastCollField = c;
- if (!allowNulls.get(p)) {
- collsAllowNullsBuilder.clear(c);
+ if (nullExclusions.get(p)) {
+ nullCompAsEqual.clear(c);
break;
}
@@ -366,7 +370,7 @@
Comparator<Row> comp = expressionFactory.comparator(
leftCollations.subList(0, lastCollField + 1),
rightCollations.subList(0, lastCollField + 1),
- collsAllowNullsBuilder.build()
+ nullCompAsEqual.build()
);
Node<Row> node = MergeJoinNode.create(ctx, outType, leftType, rightType, joinType, comp, hasExchange(rel));
@@ -946,6 +950,32 @@
}
/** {@inheritDoc} */
+ @Override public Node<Row> visit(IgniteWindow rel) {
+ RelDataType outType = rel.getRowType();
+ RelDataType inputType = rel.getInput().getRowType();
+ Window.Group grp = rel.getGroup();
+
+ List<Integer> grpKeys = grp.keys.toList();
+ RelCollation collation = rel.collation();
+
+ assert collation.getFieldCollations().size() >= grpKeys.size();
+ Comparator<Row> partCmp = expressionFactory.comparator(TraitUtils.createCollation(grpKeys));
+
+ List<AggregateCall> calls = grp.getAggregateCalls(rel);
+ Supplier<WindowPartition<Row>> partFactory = new WindowPartitionFactory<>(ctx, grp, calls, inputType);
+
+ RowFactory<Row> rowFactory = ctx.rowHandler().factory(ctx.getTypeFactory(), outType);
+
+ WindowNode<Row> node = new WindowNode<>(ctx, outType, partCmp, partFactory, rowFactory);
+
+ Node<Row> input = visit(rel.getInput());
+
+ node.register(input);
+
+ return node;
+ }
+
+ /** {@inheritDoc} */
@Override public Node<Row> visit(IgniteUncollect rel) {
UncollectNode<Row> node = new UncollectNode<>(
ctx,
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/ConverterUtils.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/ConverterUtils.java
index 2a8783d..fbbdc18 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/ConverterUtils.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/ConverterUtils.java
@@ -419,6 +419,20 @@
}
else if (toType == UUID.class && fromType == String.class)
return Expressions.call(UUID.class, "fromString", operand);
+ else if (fromType == Object.class && Number.class.isAssignableFrom((Class<?>)toType)) {
+ Primitive primitiveFromToType = Primitive.ofBox(toType);
+ if (primitiveFromToType != null) {
+ Expression res = Expressions.convert_(operand, Number.class);
+
+ res = Expressions.condition(
+ Expressions.equal(res, RexImpTable.NULL_EXPR),
+ RexImpTable.NULL_EXPR,
+ Expressions.unbox(res, primitiveFromToType));
+
+ res = Expressions.box(res);
+ return res;
+ }
+ }
return Expressions.convert_(operand, toType);
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/IgniteExpressions.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/IgniteExpressions.java
index 895c179..95549f5 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/IgniteExpressions.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/IgniteExpressions.java
@@ -32,13 +32,13 @@
/** Make binary expression with arithmetic operations override. */
public static Expression makeBinary(ExpressionType binaryType, Expression left, Expression right) {
switch (binaryType) {
- case Add:
+ case Add, AddChecked:
return addExact(left, right);
- case Subtract:
+ case Subtract, SubtractChecked:
return subtractExact(left, right);
- case Multiply:
+ case Multiply, MultiplyChecked:
return multiplyExact(left, right);
- case Divide:
+ case Divide, DivideChecked:
return divideExact(left, right);
default:
return Expressions.makeBinary(binaryType, left, right);
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/RexImpTable.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/RexImpTable.java
index 0772d72..e3e3ce5 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/RexImpTable.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/RexImpTable.java
@@ -78,16 +78,21 @@
import static java.util.Objects.requireNonNull;
import static org.apache.calcite.adapter.enumerable.EnumUtils.generateCollatorExpression;
import static org.apache.calcite.linq4j.tree.ExpressionType.Add;
+import static org.apache.calcite.linq4j.tree.ExpressionType.AddChecked;
import static org.apache.calcite.linq4j.tree.ExpressionType.Divide;
+import static org.apache.calcite.linq4j.tree.ExpressionType.DivideChecked;
import static org.apache.calcite.linq4j.tree.ExpressionType.Equal;
import static org.apache.calcite.linq4j.tree.ExpressionType.GreaterThan;
import static org.apache.calcite.linq4j.tree.ExpressionType.GreaterThanOrEqual;
import static org.apache.calcite.linq4j.tree.ExpressionType.LessThan;
import static org.apache.calcite.linq4j.tree.ExpressionType.LessThanOrEqual;
import static org.apache.calcite.linq4j.tree.ExpressionType.Multiply;
+import static org.apache.calcite.linq4j.tree.ExpressionType.MultiplyChecked;
import static org.apache.calcite.linq4j.tree.ExpressionType.Negate;
+import static org.apache.calcite.linq4j.tree.ExpressionType.NegateChecked;
import static org.apache.calcite.linq4j.tree.ExpressionType.NotEqual;
import static org.apache.calcite.linq4j.tree.ExpressionType.Subtract;
+import static org.apache.calcite.linq4j.tree.ExpressionType.SubtractChecked;
import static org.apache.calcite.linq4j.tree.ExpressionType.UnaryPlus;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.ACOSH;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.ASINH;
@@ -162,6 +167,7 @@
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.CEIL;
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.CHAR_LENGTH;
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.CHECKED_DIVIDE;
+import static org.apache.calcite.sql.fun.SqlStdOperatorTable.CHECKED_DIVIDE_INTEGER;
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.CHECKED_MINUS;
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.CHECKED_MULTIPLY;
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.CHECKED_PLUS;
@@ -344,6 +350,13 @@
defineUnary(UNARY_MINUS, Negate, NullPolicy.STRICT,
BuiltInMethod.BIG_DECIMAL_NEGATE.getMethodName());
defineUnary(UNARY_PLUS, UnaryPlus, NullPolicy.STRICT, null);
+ // checked arithmetic
+ defineBinary(CHECKED_PLUS, AddChecked, NullPolicy.STRICT, "checkedPlus");
+ defineBinary(CHECKED_MINUS, SubtractChecked, NullPolicy.STRICT, "checkedMinus");
+ defineBinary(CHECKED_MULTIPLY, MultiplyChecked, NullPolicy.STRICT, "checkedMultiply");
+ defineBinary(CHECKED_DIVIDE, DivideChecked, NullPolicy.STRICT, "checkedDivide");
+ defineBinary(CHECKED_DIVIDE_INTEGER, DivideChecked, NullPolicy.STRICT, "checkedDivide");
+ defineUnary(CHECKED_UNARY_MINUS, NegateChecked, NullPolicy.STRICT, "checkedUnaryMinus");
defineMethod(MOD, "mod", NullPolicy.STRICT);
defineMethod(EXP, "exp", NullPolicy.STRICT);
@@ -1227,7 +1240,7 @@
@Override Expression implementSafe(
final RexToLixTranslator translator,
final RexCall call,
- final List<Expression> argValueList) {
+ List<Expression> argValueList) {
// neither nullable:
// return x OP y
// x nullable
@@ -1243,7 +1256,7 @@
// If one or both operands have ANY type, use the late-binding backup
// method.
if (anyAnyOperands(call))
- return callBackupMethodAnyType(translator, call, argValueList);
+ return callBackupMethodAnyType(argValueList);
final Type type0 = argValueList.get(0).getType();
final Type type1 = argValueList.get(1).getType();
@@ -1272,10 +1285,6 @@
argValueList);
}
- // For checked arithmetic call the method.
- if (CHECKED_OPERATORS.contains(op))
- return Expressions.call(SqlFunctions.class, backupMethodName, argValueList);
-
return IgniteExpressions.makeBinary(expressionType,
argValueList.get(0), argValueList.get(1));
}
@@ -1290,8 +1299,7 @@
}
/** */
- private Expression callBackupMethodAnyType(RexToLixTranslator translator,
- RexCall call, List<Expression> expressions) {
+ private Expression callBackupMethodAnyType(List<Expression> expressions) {
final String backupMethodNameForAnyType =
backupMethodName + METHOD_POSTFIX_FOR_ANY_TYPE;
@@ -1343,6 +1351,8 @@
if (expressionType == ExpressionType.Negate && argVal.type == BigDecimal.class
&& null != backupMethodName)
e = Expressions.call(argVal, backupMethodName);
+ else if (expressionType == NegateChecked && null != backupMethodName)
+ e = Expressions.call(SqlFunctions.class, backupMethodName, argValueList);
else
e = IgniteExpressions.makeUnary(expressionType, argVal);
@@ -1565,9 +1575,12 @@
assert call.getOperands().size() == 1;
final RelDataType srcType = call.getOperands().get(0).getType();
- // Short-circuit if no cast is required
RexNode arg = call.getOperands().get(0);
- if (call.getType().equals(srcType)) {
+
+ // Short-circuit if no cast is required
+ if (call.getType().equals(srcType)
+ // However, do not elide casts to decimal types, they perform bounds checking
+ && srcType.getSqlTypeName() != SqlTypeName.DECIMAL) {
// No cast required, omit cast
return argValueList.get(0);
}
@@ -1588,10 +1601,10 @@
private RelDataType nullifyType(JavaTypeFactory typeFactory,
final RelDataType type, final boolean nullable) {
if (type instanceof RelDataTypeFactoryImpl.JavaType) {
- final Primitive primitive = Primitive.ofBox(
- ((RelDataTypeFactoryImpl.JavaType)type).getJavaClass());
- if (primitive != null)
- return typeFactory.createJavaType(primitive.primitiveClass);
+ Class<?> javaCls = ((RelDataTypeFactoryImpl.JavaType)type).getJavaClass();
+ final Class<?> primitive = Primitive.unbox(javaCls);
+ if (primitive != javaCls)
+ return typeFactory.createJavaType(primitive);
}
return typeFactory.createTypeWithNullability(type, nullable);
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/RexToLixTranslator.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/RexToLixTranslator.java
index 336edf3..f11b432 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/RexToLixTranslator.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/RexToLixTranslator.java
@@ -52,6 +52,7 @@
import org.apache.calcite.rex.RexLiteral;
import org.apache.calcite.rex.RexLocalRef;
import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexNodeAndFieldIndex;
import org.apache.calcite.rex.RexOver;
import org.apache.calcite.rex.RexPatternFieldRef;
import org.apache.calcite.rex.RexProgram;
@@ -1344,6 +1345,12 @@
}
/** */
+ @Override public Result visitNodeAndFieldIndex(
+ RexNodeAndFieldIndex nodeAndFieldIndex) {
+ throw new RuntimeException("cannot translate expression " + nodeAndFieldIndex);
+ }
+
+ /** */
Expression checkNull(Expression expr) {
if (Primitive.flavor(expr.getType()) == Primitive.Flavor.PRIMITIVE)
return RexImpTable.FALSE_EXPR;
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorFactoryProvider.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorFactoryProvider.java
new file mode 100644
index 0000000..c1bce8b
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorFactoryProvider.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.agg;
+
+import java.util.function.Supplier;
+import org.apache.calcite.plan.Context;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.tools.Frameworks;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.plugin.PluginProvider;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Factory that selects and creates an accumulator supplier for an aggregate call. Allows overriding standard aggregate
+ * functions.
+ *
+ * <p>It can be set via {@link PluginProvider} when creating a configuration using
+ * {@link PluginProvider#createComponent} via {@link Frameworks.ConfigBuilder#context(Context)}.</p>
+ */
+@FunctionalInterface
+public interface AccumulatorFactoryProvider {
+ /** @return Accumulator supplier, {@code null} if no accumulator is required for this aggregate call. */
+ @Nullable <Row> Supplier<Accumulator<Row>> factory(AggregateCall call, ExecutionContext<Row> ctx);
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/Accumulators.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/Accumulators.java
index 9c15e4a..085d212 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/Accumulators.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/Accumulators.java
@@ -71,6 +71,15 @@
) {
RowHandler<Row> hnd = ctx.rowHandler();
+ AccumulatorFactoryProvider prov = ctx.unwrap(AccumulatorFactoryProvider.class);
+
+ if (prov != null) {
+ Supplier<Accumulator<Row>> fac = prov.factory(call, ctx);
+
+ if (fac != null)
+ return fac;
+ }
+
switch (call.getAggregation().getName()) {
case "COUNT":
return () -> new LongCount<>(call, hnd);
@@ -280,7 +289,7 @@
}
/** */
- private abstract static class AbstractAccumulator<Row> implements Accumulator<Row> {
+ public abstract static class AbstractAccumulator<Row> implements Accumulator<Row> {
/** */
private final RowHandler<Row> hnd;
@@ -288,13 +297,13 @@
private final transient AggregateCall aggCall;
/** */
- AbstractAccumulator(AggregateCall aggCall, RowHandler<Row> hnd) {
+ protected AbstractAccumulator(AggregateCall aggCall, RowHandler<Row> hnd) {
this.aggCall = aggCall;
this.hnd = hnd;
}
/** */
- <T> T get(int idx, Row row) {
+ protected <T> T get(int idx, Row row) {
assert idx < arguments().size() : "idx=" + idx + "; arguments=" + arguments();
return (T)hnd.get(arguments().get(idx), row);
@@ -311,7 +320,7 @@
}
/** */
- int columnCount(Row row) {
+ protected int columnCount(Row row) {
return hnd.columnCount(row);
}
}
@@ -1344,8 +1353,9 @@
if (builder == null)
builder = new StringBuilder();
- if (builder.length() != 0)
+ if (!builder.isEmpty())
builder.append(extractSeparator(row));
+
builder.append(val);
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorsFactory.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorsFactory.java
index 222dd9c..1bc15d6 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorsFactory.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorsFactory.java
@@ -17,129 +17,18 @@
package org.apache.ignite.internal.processors.query.calcite.exec.exp.agg;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.Collections;
import java.util.List;
-import java.util.concurrent.ExecutionException;
import java.util.function.Function;
import java.util.function.Supplier;
-import com.google.common.cache.CacheBuilder;
-import com.google.common.cache.CacheLoader;
-import com.google.common.cache.LoadingCache;
-import com.google.common.collect.ImmutableList;
-import com.google.common.primitives.Primitives;
-import org.apache.calcite.DataContext;
-import org.apache.calcite.adapter.enumerable.EnumUtils;
-import org.apache.calcite.adapter.enumerable.JavaRowFormat;
-import org.apache.calcite.adapter.enumerable.PhysTypeImpl;
-import org.apache.calcite.adapter.enumerable.RexToLixTranslator;
-import org.apache.calcite.linq4j.tree.BlockBuilder;
-import org.apache.calcite.linq4j.tree.Expression;
-import org.apache.calcite.linq4j.tree.Expressions;
-import org.apache.calcite.linq4j.tree.MethodDeclaration;
-import org.apache.calcite.linq4j.tree.ParameterExpression;
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rex.RexBuilder;
-import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.rex.RexProgram;
-import org.apache.calcite.rex.RexProgramBuilder;
-import org.apache.calcite.sql.type.SqlTypeUtil;
-import org.apache.calcite.sql.validate.SqlConformanceEnum;
-import org.apache.calcite.util.Pair;
-import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
-import org.apache.ignite.internal.processors.query.calcite.exec.exp.IgniteRexBuilder;
-import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
import org.apache.ignite.internal.processors.query.calcite.util.Commons;
-import org.apache.ignite.internal.util.typedef.F;
import org.jetbrains.annotations.NotNull;
-import static org.apache.ignite.internal.processors.query.calcite.util.TypeUtils.createRowType;
-
/** */
-public class AccumulatorsFactory<Row> implements Supplier<List<AccumulatorWrapper<Row>>> {
- /** */
- private static final LoadingCache<Pair<RelDataType, RelDataType>, Function<Object, Object>> CACHE =
- CacheBuilder.newBuilder().build(CacheLoader.from(AccumulatorsFactory::cast0));
-
- /** */
- public static interface CastFunction extends Function<Object, Object> {
- /** {@inheritDoc} */
- @Override Object apply(Object o);
- }
-
- /** */
- static Function<Object, Object> cast(RelDataType from, RelDataType to) {
- assert !from.isStruct();
- assert !to.isStruct();
-
- return cast(Pair.of(from, to));
- }
-
- /** */
- static Function<Object, Object> cast(Pair<RelDataType, RelDataType> types) {
- try {
- return CACHE.get(types);
- }
- catch (ExecutionException e) {
- throw new IgniteException(e);
- }
- }
-
- /** */
- private static Function<Object, Object> cast0(Pair<RelDataType, RelDataType> types) {
- IgniteTypeFactory typeFactory = Commons.typeFactory();
-
- RelDataType from = types.left;
- RelDataType to = types.right;
-
- Class<?> fromType = Primitives.wrap((Class<?>)typeFactory.getJavaClass(from));
- Class<?> toType = Primitives.wrap((Class<?>)typeFactory.getJavaClass(to));
-
- if (toType.isAssignableFrom(fromType))
- return Function.identity();
-
- if (Void.class == toType)
- return o -> null;
-
- return compileCast(typeFactory, from, to);
- }
-
- /** */
- private static Function<Object, Object> compileCast(IgniteTypeFactory typeFactory, RelDataType from,
- RelDataType to) {
- RelDataType rowType = createRowType(typeFactory, from);
- ParameterExpression in_ = Expressions.parameter(Object.class, "in");
-
- RexToLixTranslator.InputGetter getter =
- new RexToLixTranslator.InputGetterImpl(
- ImmutableList.of(
- Pair.of(EnumUtils.convert(in_, Object.class, typeFactory.getJavaClass(from)),
- PhysTypeImpl.of(typeFactory, rowType,
- JavaRowFormat.SCALAR, false))));
-
- RexBuilder builder = new IgniteRexBuilder(typeFactory);
- RexProgramBuilder programBuilder = new RexProgramBuilder(rowType, builder);
- RexNode cast = builder.makeCast(to, builder.makeInputRef(from, 0));
- programBuilder.addProject(cast, null);
- RexProgram program = programBuilder.getProgram();
- BlockBuilder list = new BlockBuilder();
- List<Expression> projects = RexToLixTranslator.translateProjects(program, typeFactory, SqlConformanceEnum.DEFAULT,
- list, null, DataContext.ROOT, getter, null);
- list.add(projects.get(0));
-
- MethodDeclaration decl = Expressions.methodDecl(
- Modifier.PUBLIC, Object.class, "apply", ImmutableList.of(in_), list.toBlock());
-
- return Commons.compile(CastFunction.class, Expressions.toString(F.asList(decl), "\n", false));
- }
-
- /** */
- private final ExecutionContext<Row> ctx;
-
+public class AccumulatorsFactory<Row> extends AccumulatorsFactoryBase<Row> implements Supplier<List<AccumulatorWrapper<Row>>> {
/** */
private final AggregateType type;
@@ -156,7 +45,7 @@
List<AggregateCall> aggCalls,
RelDataType inputRowType
) {
- this.ctx = ctx;
+ super(ctx);
this.type = type;
this.inputRowType = inputRowType;
@@ -199,7 +88,7 @@
if (accFactory != null)
return accFactory.get();
- // init factory and adapters
+ // Init factory and adapters.
accFactory = Accumulators.accumulatorFactory(call, ctx);
Accumulator<Row> accumulator = accFactory.get();
@@ -211,59 +100,13 @@
/** */
@NotNull private Function<Row, Row> createInAdapter(Accumulator<Row> accumulator) {
- if (type == AggregateType.REDUCE || F.isEmpty(call.getArgList()))
+ if (type == AggregateType.REDUCE)
return Function.identity();
- List<RelDataType> inTypes = SqlTypeUtil.projectTypes(inputRowType, call.getArgList());
List<RelDataType> outTypes = accumulator.argumentTypes(ctx.getTypeFactory());
-
- if (call.getArgList().size() > outTypes.size()) {
- throw new AssertionError("Unexpected number of arguments: " +
- "expected=" + outTypes.size() + ", actual=" + inTypes.size());
- }
-
- if (call.ignoreNulls())
- inTypes = Commons.transform(inTypes, this::nonNull);
-
- List<Function<Object, Object>> casts =
- Commons.transform(Pair.zip(inTypes, outTypes), AccumulatorsFactory::cast);
-
- final boolean ignoreNulls = call.ignoreNulls();
-
- final int[] argMapping = new int[Collections.max(call.getArgList()) + 1];
- Arrays.fill(argMapping, -1);
-
- for (int i = 0; i < call.getArgList().size(); ++i)
- argMapping[call.getArgList().get(i)] = i;
-
boolean createRow = StoringAccumulator.class.isAssignableFrom(accumulator.getClass());
- return new Function<Row, Row>() {
- final RowHandler<Row> hnd = ctx.rowHandler();
-
- final RowHandler.RowFactory<Row> rowFac = hnd.factory(ctx.getTypeFactory(), inputRowType);
-
- final Row reuseRow = createRow ? null : rowFac.create();
-
- @Override public Row apply(Row in) {
- Row out = createRow ? rowFac.create() : reuseRow;
-
- for (int i = 0; i < hnd.columnCount(in); ++i) {
- Object val = hnd.get(i, in);
-
- if (ignoreNulls && val == null)
- return null;
-
- int idx = i < argMapping.length ? argMapping[i] : -1;
- if (idx != -1)
- val = casts.get(idx).apply(val);
-
- hnd.set(i, out, val);
- }
-
- return out;
- }
- };
+ return AccumulatorsFactory.this.createInAdapter(call, inputRowType, outTypes, createRow);
}
/** */
@@ -272,9 +115,7 @@
return Function.identity();
RelDataType inType = accumulator.returnType(ctx.getTypeFactory());
- RelDataType outType = call.getType();
-
- return cast(inType, outType);
+ return AccumulatorsFactory.this.createOutAdapter(call, inType);
}
/** */
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorsFactoryBase.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorsFactoryBase.java
new file mode 100644
index 0000000..7436a6d
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/AccumulatorsFactoryBase.java
@@ -0,0 +1,221 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.agg;
+
+import java.lang.reflect.Modifier;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.function.Function;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.primitives.Primitives;
+import org.apache.calcite.DataContext;
+import org.apache.calcite.adapter.enumerable.EnumUtils;
+import org.apache.calcite.adapter.enumerable.JavaRowFormat;
+import org.apache.calcite.adapter.enumerable.PhysTypeImpl;
+import org.apache.calcite.adapter.enumerable.RexToLixTranslator;
+import org.apache.calcite.linq4j.tree.BlockBuilder;
+import org.apache.calcite.linq4j.tree.Expression;
+import org.apache.calcite.linq4j.tree.Expressions;
+import org.apache.calcite.linq4j.tree.MethodDeclaration;
+import org.apache.calcite.linq4j.tree.ParameterExpression;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexProgram;
+import org.apache.calcite.rex.RexProgramBuilder;
+import org.apache.calcite.sql.type.SqlTypeUtil;
+import org.apache.calcite.sql.validate.SqlConformanceEnum;
+import org.apache.calcite.util.Pair;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.IgniteRexBuilder;
+import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
+import org.apache.ignite.internal.processors.query.calcite.util.Commons;
+import org.apache.ignite.internal.util.typedef.F;
+import org.jetbrains.annotations.NotNull;
+
+import static org.apache.ignite.internal.processors.query.calcite.util.TypeUtils.createRowType;
+
+/**
+ * Base class for accumulators / windows function factory.
+ * Provides common logic for agruments cast.
+ * todo: rename/move to another package?
+ */
+public abstract class AccumulatorsFactoryBase<Row> {
+ /** */
+ private static final LoadingCache<Pair<RelDataType, RelDataType>, Function<Object, Object>> CACHE =
+ CacheBuilder.newBuilder().build(CacheLoader.from(AccumulatorsFactoryBase::cast0));
+
+ /** */
+ public interface CastFunction extends Function<Object, Object> {
+ /** {@inheritDoc} */
+ @Override Object apply(Object o);
+ }
+
+ /** */
+ static Function<Object, Object> cast(RelDataType from, RelDataType to) {
+ assert !from.isStruct();
+ assert !to.isStruct();
+
+ return cast(Pair.of(from, to));
+ }
+
+ /** */
+ static Function<Object, Object> cast(Pair<RelDataType, RelDataType> types) {
+ try {
+ return CACHE.get(types);
+ }
+ catch (ExecutionException e) {
+ throw new IgniteException(e);
+ }
+ }
+
+ /** */
+ private static Function<Object, Object> cast0(Pair<RelDataType, RelDataType> types) {
+ IgniteTypeFactory typeFactory = Commons.typeFactory();
+
+ RelDataType from = types.left;
+ RelDataType to = types.right;
+
+ Class<?> fromType = Primitives.wrap((Class<?>)typeFactory.getJavaClass(from));
+ Class<?> toType = Primitives.wrap((Class<?>)typeFactory.getJavaClass(to));
+
+ if (toType.isAssignableFrom(fromType))
+ return Function.identity();
+
+ if (Void.class == toType)
+ return o -> null;
+
+ return compileCast(typeFactory, from, to);
+ }
+
+ /** */
+ private static Function<Object, Object> compileCast(IgniteTypeFactory typeFactory, RelDataType from,
+ RelDataType to) {
+ RelDataType rowType = createRowType(typeFactory, from);
+ ParameterExpression in_ = Expressions.parameter(Object.class, "in");
+
+ RexToLixTranslator.InputGetter getter =
+ new RexToLixTranslator.InputGetterImpl(
+ ImmutableMap.of(
+ EnumUtils.convert(in_, Object.class, typeFactory.getJavaClass(from)),
+ PhysTypeImpl.of(typeFactory, rowType,
+ JavaRowFormat.SCALAR, false)));
+
+ RexBuilder builder = new IgniteRexBuilder(typeFactory);
+ RexProgramBuilder programBuilder = new RexProgramBuilder(rowType, builder);
+ RexNode cast = builder.makeCast(to, builder.makeInputRef(from, 0));
+ programBuilder.addProject(cast, null);
+ RexProgram program = programBuilder.getProgram();
+ BlockBuilder list = new BlockBuilder();
+ List<Expression> projects = RexToLixTranslator.translateProjects(program, typeFactory, SqlConformanceEnum.DEFAULT,
+ list, null, null, DataContext.ROOT, getter, null);
+ list.add(projects.get(0));
+
+ MethodDeclaration decl = Expressions.methodDecl(
+ Modifier.PUBLIC, Object.class, "apply", ImmutableList.of(in_), list.toBlock());
+
+ return Commons.compile(CastFunction.class, Expressions.toString(F.asList(decl), "\n", false));
+ }
+
+ /** */
+ protected final ExecutionContext<Row> ctx;
+
+ /** */
+ protected AccumulatorsFactoryBase(ExecutionContext<Row> ctx) {
+ this.ctx = ctx;
+ }
+
+ /** */
+ @NotNull protected Function<Row, Row> createInAdapter(
+ AggregateCall call,
+ RelDataType inputRowType,
+ List<RelDataType> argTypes,
+ boolean createRow
+ ) {
+ if (F.isEmpty(call.getArgList()))
+ return Function.identity();
+
+ List<RelDataType> inTypes = SqlTypeUtil.projectTypes(inputRowType, call.getArgList());
+
+ if (call.getArgList().size() > argTypes.size()) {
+ throw new AssertionError("Unexpected number of arguments: " +
+ "expected=" + argTypes.size() + ", actual=" + inTypes.size());
+ }
+
+ if (call.ignoreNulls())
+ inTypes = Commons.transform(inTypes, this::nonNull);
+
+ List<Function<Object, Object>> casts =
+ Commons.transform(Pair.zip(inTypes, argTypes), AccumulatorsFactory::cast);
+
+ final boolean ignoreNulls = call.ignoreNulls();
+
+ final int[] argMapping = new int[Collections.max(call.getArgList()) + 1];
+ Arrays.fill(argMapping, -1);
+
+ for (int i = 0; i < call.getArgList().size(); ++i)
+ argMapping[call.getArgList().get(i)] = i;
+
+ return new Function<Row, Row>() {
+ final RowHandler<Row> hnd = ctx.rowHandler();
+
+ final RowHandler.RowFactory<Row> rowFac = hnd.factory(ctx.getTypeFactory(), inputRowType);
+
+ final Row reuseRow = createRow ? null : rowFac.create();
+
+ @Override public Row apply(Row in) {
+ Row out = createRow ? rowFac.create() : reuseRow;
+
+ for (int i = 0; i < hnd.columnCount(in); ++i) {
+ Object val = hnd.get(i, in);
+
+ if (ignoreNulls && val == null)
+ return null;
+
+ int idx = i < argMapping.length ? argMapping[i] : -1;
+ if (idx != -1)
+ val = casts.get(idx).apply(val);
+
+ hnd.set(i, out, val);
+ }
+
+ return out;
+ }
+ };
+ }
+
+ /** */
+ @NotNull protected Function<Object, Object> createOutAdapter(AggregateCall call, RelDataType inType) {
+ RelDataType outType = call.getType();
+ return cast(inType, outType);
+ }
+
+ /** */
+ private RelDataType nonNull(RelDataType type) {
+ return ctx.getTypeFactory().createTypeWithNullability(type, false);
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/GroupKey.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/GroupKey.java
index f9e7a42..c0ef2f9 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/GroupKey.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/agg/GroupKey.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.processors.query.calcite.exec.exp.agg;
import java.util.Objects;
-import org.apache.calcite.util.ImmutableBitSet;
+import com.google.common.collect.ImmutableList;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.binary.BinaryRawReader;
import org.apache.ignite.binary.BinaryRawWriter;
@@ -120,7 +120,7 @@
*/
public static <Row> @Nullable GroupKey<Row> of(Row r, RowHandler<Row> hnd, boolean allowNulls) {
if (!allowNulls)
- return of(r, hnd, ImmutableBitSet.of());
+ return of(r, hnd, ImmutableList.of());
return new GroupKey<>(r, hnd);
}
@@ -129,9 +129,9 @@
* @return Group key for provided row. Can be {@code null} if key fields of row contain NULL values and nulls are
* not allowed for these columns.
*/
- public static <Row> @Nullable GroupKey<Row> of(Row r, RowHandler<Row> hnd, ImmutableBitSet allowNulls) {
+ public static <Row> @Nullable GroupKey<Row> of(Row r, RowHandler<Row> hnd, ImmutableList<Boolean> nullExclusions) {
for (int i = 0; i < hnd.columnCount(r); i++) {
- if (hnd.get(i, r) == null && !allowNulls.get(i))
+ if (hnd.get(i, r) == null && (i >= nullExclusions.size() || nullExclusions.get(i)))
return null;
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/BufferingWindowPartition.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/BufferingWindowPartition.java
new file mode 100644
index 0000000..98aafe0
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/BufferingWindowPartition.java
@@ -0,0 +1,132 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.function.Consumer;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.apache.ignite.internal.processors.query.calcite.exec.tracker.RowTracker;
+
+/** Buffering implementation of the ROWS / RANGE window partition. */
+final class BufferingWindowPartition<Row> extends WindowPartitionBase<Row> {
+ /** Rows in partition. */
+ private final List<Row> buf;
+
+ /** Frame within partition. */
+ private final WindowPartitionFrame<Row> frame;
+
+ /** */
+ private RowTracker<Row> memoryTracker;
+
+ /** */
+ BufferingWindowPartition(
+ Comparator<Row> peerCmp,
+ WindowFunctionFactory<Row> funcFactory,
+ RowHandler.RowFactory<Row> rowFactory,
+ ExecutionContext<Row> ctx,
+ Window.Group grp,
+ RelDataType inputRowType
+ ) {
+ super(peerCmp, funcFactory, rowFactory);
+ buf = new ArrayList<>();
+ frame = createFrame(ctx, grp, peerCmp, inputRowType, buf);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void add(Row row) {
+ buf.add(row);
+ onRowAdded(row);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void evalTo(RowHandler.RowFactory<Row> factory, Consumer<Row> output) {
+ if (buf.isEmpty())
+ return;
+
+ List<WindowFunctionWrapper<Row>> accumulators = createWrappers();
+ Object[] accResults = new Object[accumulators.size()];
+
+ int size = buf.size();
+ Row prevRow = null;
+ int peerIdx = -1;
+ for (int rowIdx = 0; rowIdx < size; rowIdx++) {
+ Row currRow = buf.get(rowIdx);
+ if (isNewPeer(currRow, prevRow))
+ peerIdx++;
+
+ int accIdx = 0;
+ for (WindowFunctionWrapper<Row> acc : accumulators) {
+ Object accResult = acc.callBuffering(currRow, rowIdx, peerIdx, frame);
+ accResults[accIdx++] = accResult;
+ }
+
+ Row resultRow = createResultRow(factory, currRow, accResults);
+ output.accept(resultRow);
+
+ prevRow = currRow;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public void reset() {
+ buf.forEach(this::onRowRemoved);
+ buf.clear();
+ frame.reset();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isStreaming() {
+ return false;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void attachMemoryTracker(RowTracker<Row> memoryTracker) {
+ this.memoryTracker = memoryTracker;
+ }
+
+ /** Creates frame for partition. */
+ private static <Row> WindowPartitionFrame<Row> createFrame(
+ ExecutionContext<Row> ctx,
+ Window.Group grp,
+ Comparator<Row> peerCmp,
+ RelDataType inputRowType,
+ List<Row> buf
+ ) {
+ if (grp.isRows)
+ return new RowWindowPartitionFrame<>(buf, ctx, grp, inputRowType);
+ else
+ return new RangeWindowPartitionFrame<>(buf, ctx, peerCmp, grp, inputRowType);
+ }
+
+ /** Adds row to memory tracker. */
+ private void onRowAdded(Row row) {
+ if (memoryTracker != null)
+ memoryTracker.onRowAdded(row);
+ }
+
+ /** Removes row from memory tracker. */
+ private void onRowRemoved(Row row) {
+ if (memoryTracker != null)
+ memoryTracker.onRowRemoved(row);
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/RangeWindowPartitionFrame.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/RangeWindowPartitionFrame.java
new file mode 100644
index 0000000..48bd52e
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/RangeWindowPartitionFrame.java
@@ -0,0 +1,216 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.function.Function;
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelFieldCollation;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexWindowBound;
+import org.apache.calcite.sql.SqlOperator;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.sql.type.SqlTypeFamily;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.IgniteRexBuilder;
+import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
+import org.apache.ignite.internal.processors.query.calcite.util.Commons;
+
+/** {@link WindowPartitionFrame} for RANGE clause. */
+final class RangeWindowPartitionFrame<Row> extends WindowPartitionFrame<Row> {
+ /** Comparator for determining a peer's index within a partition. */
+ private final Comparator<Row> peerCmp;
+
+ /** Returns the row that marks the start of the frame. */
+ private final Function<Row, Row> lowerBound;
+
+ /** */
+ private final boolean cacheableLowerBound;
+
+ /** Returns the row that marks the end of the frame. */
+ private final Function<Row, Row> upperBound;
+
+ /** */
+ private final boolean cacheableUpperBound;
+
+ /** Cached peer idx for which the frame start row has been computed. */
+ private int cachedStartPeerIdx = -1;
+
+ /** Cached start row idx of frame. */
+ private int cachedStartIdx;
+
+ /** Cached peer idx for which the frame end row has been computed. */
+ private int cachedEndPeerIdx = -1;
+
+ /** Cached end row idx of frame. */
+ private int cachedEndIdx;
+
+ /** Index of last processed row in frame start. */
+ private int cachedStartRowIdx = -1;
+
+ /** Index of last processed row in frame end. */
+ private int cachedEndRowIdx = -1;
+
+ /** */
+ RangeWindowPartitionFrame(
+ List<Row> buf,
+ ExecutionContext<Row> ctx,
+ Comparator<Row> peerCmp,
+ Window.Group grp,
+ RelDataType inputRowType
+ ) {
+ super(buf);
+ this.peerCmp = peerCmp;
+ lowerBound = rangeBoundToProject(ctx, grp.lowerBound, grp.collation(), inputRowType);
+ cacheableLowerBound = isCacheableBound(grp.lowerBound);
+ upperBound = rangeBoundToProject(ctx, grp.upperBound, grp.collation(), inputRowType);
+ cacheableUpperBound = isCacheableBound(grp.upperBound);
+ }
+
+ /** {@inheritDoc} */
+ @Override int getFrameStart(int rowIdx, int peerIdx) {
+ if (cachedStartRowIdx == rowIdx || (cacheableLowerBound && cachedStartPeerIdx == peerIdx))
+ return cachedStartIdx;
+
+ cachedStartPeerIdx = peerIdx;
+ cachedStartRowIdx = rowIdx;
+
+ Row row = get(rowIdx);
+ Row lowerBoundRow = lowerBound.apply(row);
+ if (lowerBoundRow == null)
+ cachedStartIdx = 0;
+ else
+ cachedStartIdx = bsearchBound(lowerBoundRow, buf, true);
+
+ return cachedStartIdx;
+ }
+
+ /** {@inheritDoc} */
+ @Override int getFrameEnd(int rowIdx, int peerIdx) {
+ if (cachedEndRowIdx == rowIdx || (cacheableUpperBound && cachedEndPeerIdx == peerIdx))
+ return cachedEndIdx;
+
+ cachedEndPeerIdx = peerIdx;
+ cachedEndRowIdx = rowIdx;
+
+ Row row = get(rowIdx);
+ Row upperBoundRow = upperBound.apply(row);
+ if (upperBoundRow == null)
+ cachedEndIdx = size() - 1;
+ else
+ cachedEndIdx = bsearchBound(upperBoundRow, buf, false);
+
+ return cachedEndIdx;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void reset() {
+ // Reseting index cache.
+ cachedStartPeerIdx = -1;
+ cachedEndPeerIdx = -1;
+ cachedStartRowIdx = -1;
+ cachedEndRowIdx = -1;
+ }
+
+ /** Binary search bound. */
+ private int bsearchBound(Row row, List<Row> buf, boolean lower) {
+ int start = 0;
+ int end = buf.size() - 1;
+
+ while (start <= end) {
+ int mid = (start + end) / 2;
+
+ Row midRow = buf.get(mid);
+ int cmp = compareRowPeer(midRow, row);
+
+ if (cmp > 0 || (lower && cmp == 0))
+ end = mid - 1;
+ else
+ start = mid + 1;
+ }
+
+ return lower ? start : end;
+ }
+
+ /** */
+ private int compareRowPeer(Row row1, Row row2) {
+ // in case peerCmp is not set - all rows has one peer
+ return peerCmp == null ? 0 : peerCmp.compare(row1, row2);
+ }
+
+ /** Create projection for range frame bound. */
+ private static <Row> Function<Row, Row> rangeBoundToProject(
+ ExecutionContext<Row> ctx,
+ RexWindowBound bound,
+ RelCollation collation,
+ RelDataType rowType
+ ) {
+ if (bound.isCurrentRow())
+ return Function.identity();
+ else if (bound.isUnbounded())
+ return row -> null;
+ else {
+ assert bound.getOffset() != null : "Unexpected null offset in bounded window";
+ assert bound.isPreceding() || bound.isFollowing() : "Unexpected preceding/following in bounded window";
+ assert collation.getFieldCollations().size() == 1 : "Unexpected number of field collations in bounded window";
+
+ RelFieldCollation field = collation.getFieldCollations().get(0);
+ int fieldIdx = field.getFieldIndex();
+ List<RelDataTypeField> fields = rowType.getFieldList();
+
+ IgniteTypeFactory typeFactory = Commons.typeFactory();
+ RexBuilder builder = new IgniteRexBuilder(typeFactory);
+
+ List<RexNode> project = new ArrayList<>(rowType.getFieldCount());
+ for (int i = 0; i < rowType.getFieldCount(); i++)
+ project.add(builder.makeInputRef(fields.get(i).getType(), i));
+
+ RexNode offset = bound.getOffset();
+ if ((bound.isPreceding() && !field.direction.isDescending())
+ || (bound.isFollowing() && field.direction.isDescending()))
+ // Should invert offset.
+ offset = builder.makeCall(SqlStdOperatorTable.UNARY_MINUS, ImmutableList.of(offset));
+
+ SqlOperator operator = SqlStdOperatorTable.PLUS;
+ RelDataType fieldType = fields.get(fieldIdx).getType();
+ if (SqlTypeFamily.DATETIME.contains(fieldType)
+ && SqlTypeFamily.DATETIME_INTERVAL.contains(offset.getType()))
+ operator = SqlStdOperatorTable.DATETIME_PLUS;
+
+ RexNode call = builder.makeCall(operator, ImmutableList.of(project.get(fieldIdx), offset));
+ call = builder.makeCast(fieldType, call);
+
+ project.set(fieldIdx, call);
+
+ return ctx.expressionFactory().project(project, rowType);
+ }
+ }
+
+ /** Verifies that {@link RexWindowBound} supports caching of frame start or end indexes. */
+ private static boolean isCacheableBound(RexWindowBound bound) {
+ return bound.isCurrentRow() || bound.isUnbounded() || bound.getOffset() instanceof RexLiteral;
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/RowWindowPartitionFrame.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/RowWindowPartitionFrame.java
new file mode 100644
index 0000000..84712e3
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/RowWindowPartitionFrame.java
@@ -0,0 +1,133 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.List;
+import java.util.function.Function;
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexWindowBound;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.IgniteRexBuilder;
+import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
+import org.apache.ignite.internal.processors.query.calcite.util.Commons;
+
+import static org.apache.calcite.sql.type.SqlTypeName.INTEGER;
+
+/** {@link WindowPartitionFrame} for ROWS clause. */
+final class RowWindowPartitionFrame<Row> extends WindowPartitionFrame<Row> {
+ /** Returns the offset that marks the start of the frame. */
+ private final Function<Row, Integer> lowerBoundOffset;
+
+ /** Returns the offset that marks the end of the frame. */
+ private final Function<Row, Integer> upperBoundOffset;
+
+ /** Cached row idx for which the frame start offset has been computed. */
+ private int cachedStartRowIdx = -1;
+
+ /** Cached frame start offset. */
+ private Integer cachedStartOffset;
+
+ /** Cached row idx for which the frame end offset has been computed. */
+ private int cachedEndRowIdx = -1;
+
+ /** Cached frame end offset. */
+ private Integer cachedEndOffset;
+
+ /** */
+ RowWindowPartitionFrame(
+ List<Row> buf,
+ ExecutionContext<Row> ctx,
+ Window.Group grp,
+ RelDataType inputRowType
+ ) {
+ super(buf);
+ lowerBoundOffset = rowsBoundToOffset(ctx, grp.lowerBound, inputRowType);
+ upperBoundOffset = rowsBoundToOffset(ctx, grp.upperBound, inputRowType);
+ }
+
+ /** {@inheritDoc} */
+ @Override int getFrameStart(int rowIdx, int peerIdx) {
+ if (cachedStartRowIdx != rowIdx) {
+ Row row = get(rowIdx);
+ cachedStartRowIdx = rowIdx;
+ cachedStartOffset = lowerBoundOffset.apply(row);
+ }
+
+ if (cachedStartOffset == null)
+ return 0;
+ else {
+ int idx = applyOffset(rowIdx, cachedStartOffset, size() - 1);
+ return Math.max(idx, 0);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override int getFrameEnd(int rowIdx, int peerIdx) {
+ if (cachedEndRowIdx != rowIdx) {
+ Row row = get(rowIdx);
+ cachedEndRowIdx = rowIdx;
+ cachedEndOffset = upperBoundOffset.apply(row);
+ }
+
+ if (cachedEndOffset == null)
+ return size() - 1;
+ else
+ return applyOffset(rowIdx, cachedEndOffset, size() - 1);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void reset() {
+ // Reseting index cache.
+ cachedStartRowIdx = -1;
+ cachedEndRowIdx = -1;
+ }
+
+ /** */
+ private static int applyOffset(int rowIdx, int offset, int cap) {
+ int idx = Math.addExact(rowIdx, offset);
+ return Math.max(Math.min(idx, cap), -1);
+ }
+
+ /** Create projection for range frame bound. */
+ private static <Row> Function<Row, Integer> rowsBoundToOffset(
+ ExecutionContext<Row> ctx,
+ RexWindowBound bound,
+ RelDataType rowType
+ ) {
+ if (bound.isCurrentRow())
+ return ignored -> 0;
+ else if (bound.isUnbounded())
+ return ignored -> null;
+ else {
+ assert bound.getOffset() != null : "Unexpected null offset in bounded window";
+
+ IgniteTypeFactory typeFactory = Commons.typeFactory();
+ RexBuilder builder = new IgniteRexBuilder(typeFactory);
+ RexNode result = builder.makeCast(typeFactory.createSqlType(INTEGER), bound.getOffset());
+ if (bound.isPreceding())
+ result = builder.makeCall(SqlStdOperatorTable.UNARY_MINUS, ImmutableList.of(result));
+ Function<Row, Row> project = ctx.expressionFactory().project(List.of(result), rowType);
+ return project.andThen(row -> (Integer)ctx.rowHandler().get(0, row));
+ }
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/StreamWindowFunction.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/StreamWindowFunction.java
new file mode 100644
index 0000000..6a87dae
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/StreamWindowFunction.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import org.jetbrains.annotations.Nullable;
+
+/** Interface for a window function supporting streaming. */
+interface StreamWindowFunction<Row> extends WindowFunction<Row> {
+ /** Performs the window function computation for a given row in streaming mode. */
+ @Nullable Object call(Row row, int rowIdx, int peerIdx);
+
+ /** {@inheritDoc} */
+ @Override default Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ return call(row, rowIdx, peerIdx);
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/StreamWindowPartition.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/StreamWindowPartition.java
new file mode 100644
index 0000000..6459c8e
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/StreamWindowPartition.java
@@ -0,0 +1,106 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.function.Consumer;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.apache.ignite.internal.processors.query.calcite.exec.tracker.RowTracker;
+
+/** Non-buffering implementation of the ROWS / RANGE window partition. */
+final class StreamWindowPartition<Row> extends WindowPartitionBase<Row> {
+ /** */
+ private Row prevRow;
+
+ /** */
+ private Row currRow;
+
+ /** */
+ private int rowIdx = -1;
+
+ /** */
+ private int peerIdx = -1;
+
+ /** */
+ private List<WindowFunctionWrapper<Row>> accumulators;
+
+ /** */
+ private Object[] accResults;
+
+ /** */
+ StreamWindowPartition(
+ Comparator<Row> peerCmp,
+ WindowFunctionFactory<Row> funcFactory,
+ RowHandler.RowFactory<Row> rowFactory
+ ) {
+ super(peerCmp, funcFactory, rowFactory);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void add(Row row) {
+ assert currRow == null : "StreamingWindowPartition can only hold one row";
+ currRow = row;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void evalTo(RowHandler.RowFactory<Row> factory, Consumer<Row> output) {
+ if (currRow == null)
+ return;
+
+ if (accumulators == null) {
+ accumulators = createWrappers();
+ accResults = new Object[accumulators.size()];
+ }
+
+ rowIdx++;
+ if (isNewPeer(currRow, prevRow))
+ peerIdx++;
+
+ int accIdx = 0;
+ for (WindowFunctionWrapper<Row> acc : accumulators) {
+ Object accResult = acc.callStreaming(currRow, rowIdx, peerIdx);
+ accResults[accIdx++] = accResult;
+ }
+
+ Row resultRow = createResultRow(factory, currRow, accResults);
+ output.accept(resultRow);
+
+ prevRow = currRow;
+ currRow = null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void reset() {
+ currRow = null;
+ prevRow = null;
+ rowIdx = -1;
+ peerIdx = -1;
+ accumulators = null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean isStreaming() {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void attachMemoryTracker(RowTracker<Row> memoryTracker) {
+ // Streaming partition does not use memory tracker.
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunction.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunction.java
new file mode 100644
index 0000000..dedcc24
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunction.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.List;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
+import org.jetbrains.annotations.Nullable;
+
+/** Interface for window function. */
+interface WindowFunction<Row> {
+ /** Performs window function computation for the specified row inside the buffered frame. */
+ @Nullable Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame);
+
+ /** */
+ List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory);
+
+ /** */
+ RelDataType returnType(IgniteTypeFactory typeFactory);
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctionFactory.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctionFactory.java
new file mode 100644
index 0000000..493e8d7
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctionFactory.java
@@ -0,0 +1,248 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.List;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.AccumulatorWrapper;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.AccumulatorsFactoryBase;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.AggregateType;
+import org.apache.ignite.internal.processors.query.calcite.util.Commons;
+import org.jetbrains.annotations.NotNull;
+
+/** A factory class responsible for instantiating window functions. */
+final class WindowFunctionFactory<Row> extends AccumulatorsFactoryBase<Row> {
+ /** */
+ private final List<WindowFunctionPrototype<Row>> prototypes;
+
+ /** */
+ private final RelDataType inputRowType;
+
+ /** */
+ WindowFunctionFactory(
+ ExecutionContext<Row> ctx,
+ Window.Group grp,
+ List<AggregateCall> aggCalls,
+ RelDataType inputRowType
+ ) {
+ super(ctx);
+ this.inputRowType = inputRowType;
+
+ ImmutableList.Builder<WindowFunctionPrototype<Row>> prototypes = ImmutableList.builder();
+ for (AggregateCall aggCall : aggCalls) {
+ if (WindowFunctions.isWindowFunction(aggCall))
+ prototypes.add(new WindowFunctionWrapperPrototype(aggCall));
+ else
+ prototypes.add(new WindowFunctionAccumulatorAdapterPrototype(aggCall));
+ }
+
+ this.prototypes = prototypes.build();
+ }
+
+ /** */
+ List<WindowFunctionWrapper<Row>> createWrappers() {
+ return Commons.transform(prototypes, Supplier::get);
+ }
+
+ /** */
+ private interface WindowFunctionPrototype<Row> extends Supplier<WindowFunctionWrapper<Row>> {
+ }
+
+ /** */
+ private final class WindowFunctionWrapperPrototype implements WindowFunctionPrototype<Row> {
+ /** */
+ private Supplier<WindowFunction<Row>> funcFactory;
+
+ /** */
+ private final AggregateCall call;
+
+ /** */
+ private Function<Row, Row> inAdapter;
+
+ /** */
+ private Function<Object, Object> outAdapter;
+
+ /** */
+ private WindowFunctionWrapperPrototype(AggregateCall call) {
+ this.call = call;
+ }
+
+ /** {@inheritDoc} */
+ @Override public WindowFunctionWrapper<Row> get() {
+ WindowFunction<Row> windowFunction = windowFunction();
+ return new FunctionWrapper(windowFunction, inAdapter, outAdapter);
+ }
+
+ /** */
+ @NotNull private WindowFunction<Row> windowFunction() {
+ if (funcFactory != null)
+ return funcFactory.get();
+
+ // Init factory and adapters.
+ funcFactory = WindowFunctions.windowFunctionFactory(call, ctx);
+ WindowFunction<Row> windowFunction = funcFactory.get();
+
+ inAdapter = createInAdapter(windowFunction);
+ outAdapter = createOutAdapter(windowFunction);
+
+ return windowFunction;
+ }
+
+ /** */
+ @NotNull private Function<Row, Row> createInAdapter(WindowFunction<Row> windowFunction) {
+ List<RelDataType> outTypes = windowFunction.argumentTypes(ctx.getTypeFactory());
+ return WindowFunctionFactory.this.createInAdapter(call, inputRowType, outTypes, false);
+ }
+
+ /** */
+ @NotNull private Function<Object, Object> createOutAdapter(WindowFunction<Row> windowFunction) {
+ RelDataType inType = windowFunction.returnType(ctx.getTypeFactory());
+ return WindowFunctionFactory.this.createOutAdapter(call, inType);
+ }
+ }
+
+ /** */
+ private final class FunctionWrapper implements WindowFunctionWrapper<Row> {
+ /** */
+ private final WindowFunction<Row> windowFunction;
+
+ /** */
+ private final Function<Row, Row> inAdapter;
+
+ /** */
+ private final Function<Object, Object> outAdapter;
+
+ /** */
+ FunctionWrapper(
+ WindowFunction<Row> windowFunction,
+ Function<Row, Row> inAdapter,
+ Function<Object, Object> outAdapter
+ ) {
+ this.windowFunction = windowFunction;
+ this.inAdapter = inAdapter;
+ this.outAdapter = outAdapter;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object callStreaming(Row row, int rowIdx, int peerIdx) {
+ assert windowFunction instanceof StreamWindowFunction;
+
+ Row accRow = inAdapter.apply(row);
+ assert accRow != null;
+
+ Object result = ((StreamWindowFunction<Row>)windowFunction).call(accRow, rowIdx, peerIdx);
+ return outAdapter.apply(result);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object callBuffering(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ Row accRow = inAdapter.apply(row);
+ assert accRow != null;
+
+ Object result = windowFunction.call(accRow, rowIdx, peerIdx, frame);
+ return outAdapter.apply(result);
+ }
+ }
+
+ /** */
+ private final class WindowFunctionAccumulatorAdapterPrototype implements WindowFunctionPrototype<Row> {
+
+ /** */
+ private final Supplier<AccumulatorWrapper<Row>> factory;
+
+ /** */
+ private WindowFunctionAccumulatorAdapterPrototype(AggregateCall call) {
+ Supplier<List<AccumulatorWrapper<Row>>> accFactory =
+ ctx.expressionFactory().accumulatorsFactory(AggregateType.SINGLE, List.of(call), inputRowType);
+ factory = () -> accFactory.get().get(0);
+ }
+
+ /** {@inheritDoc} */
+ @Override public WindowFunctionWrapper<Row> get() {
+ return new WindowAccumulatorWrapper<>(factory);
+ }
+ }
+
+ /** */
+ private static final class WindowAccumulatorWrapper<Row> implements WindowFunctionWrapper<Row> {
+ /** */
+ private final Supplier<AccumulatorWrapper<Row>> factory;
+
+ /** */
+ private AccumulatorWrapper<Row> accHolder;
+
+ /** */
+ private int frameStart = -1;
+
+ /** */
+ private int frameEnd = -1;
+
+ /** */
+ private WindowAccumulatorWrapper(Supplier<AccumulatorWrapper<Row>> factory) {
+ this.factory = factory;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object callStreaming(Row row, int rowIdx, int peerIdx) {
+ AccumulatorWrapper<Row> acc = accumulator();
+ acc.add(row);
+ return acc.end();
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object callBuffering(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ int start = frame.getFrameStart(rowIdx, peerIdx);
+ int end = frame.getFrameEnd(rowIdx, peerIdx);
+ AccumulatorWrapper<Row> acc = accumulator();
+
+ if (frameStart != start || frameEnd > end) {
+ // Recalculate accumulator if start idx changed.
+ frameStart = start;
+ accHolder = null;
+ acc = accumulator();
+ for (int i = frameStart; i <= end; i++) {
+ Row valRow = frame.get(i);
+ acc.add(valRow);
+ }
+ }
+ else if (frameEnd != end && end >= 0) {
+ // Append rows to accumulator.
+ for (int i = frameEnd + 1; i <= end; i++) {
+ Row valRow = frame.get(i);
+ acc.add(valRow);
+ }
+ }
+ frameEnd = end;
+ return acc.end();
+ }
+
+ /** */
+ private AccumulatorWrapper<Row> accumulator() {
+ if (accHolder != null)
+ return accHolder;
+ accHolder = factory.get();
+ return accHolder;
+ }
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctionWrapper.java
similarity index 60%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctionWrapper.java
index eb38135..138ef14 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctionWrapper.java
@@ -15,25 +15,15 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+import org.jetbrains.annotations.Nullable;
/** */
-public class InlineSizesData implements Message {
- /** */
- @Order(0)
- Map<String, Integer> sizes;
+interface WindowFunctionWrapper<Row> {
+ /** Performs the window function computation for a given row in streaming mode. */
+ @Nullable Object callStreaming(Row row, int rowIdx, int peerIdx);
- /** */
- public InlineSizesData() {}
-
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
- }
+ /** Performs window function computation for the specified row inside the buffered frame. */
+ @Nullable Object callBuffering(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame);
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctions.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctions.java
new file mode 100644
index 0000000..9984a98
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowFunctions.java
@@ -0,0 +1,514 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.List;
+import java.util.Set;
+import java.util.function.Supplier;
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.sql.SqlOperator;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.apache.ignite.internal.processors.query.calcite.sql.fun.IgniteOwnSqlOperatorTable;
+import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
+import org.apache.ignite.internal.util.typedef.F;
+
+import static org.apache.calcite.sql.type.SqlTypeName.ANY;
+import static org.apache.calcite.sql.type.SqlTypeName.BIGINT;
+import static org.apache.calcite.sql.type.SqlTypeName.DOUBLE;
+import static org.apache.calcite.sql.type.SqlTypeName.INTEGER;
+
+/** */
+public final class WindowFunctions {
+ /** Check window group can be processed with streaming partition. */
+ public static boolean streamable(Window.Group grp) {
+ // Can execute window streaming in case:
+ // - group aggs does not contain operators can access whole partition.
+ if (grp.aggCalls.stream().anyMatch(it -> BUFFERING_FUNCTIONS.contains(it.op)))
+ return false;
+
+ // - group aggs contains only ROW_NUMBER, RANK, DENSE_RANK operators
+ if (grp.aggCalls.stream().allMatch(it -> STREAMING_FUNCTIONS.contains(it.op)))
+ return true;
+
+ // group frame in 'ROWS BETWEEN UNBOUNDED PRESCENDING AND CURRENT ROW'
+ //noinspection RedundantIfStatement
+ if (grp.isRows && grp.lowerBound.isUnbounded() && grp.upperBound.isCurrentRow())
+ return true;
+
+ return false;
+ }
+
+ /** Window functions, which definitly supports sreaming execution. */
+ private static final Set<SqlOperator> STREAMING_FUNCTIONS = Set.of(
+ SqlStdOperatorTable.ROW_NUMBER,
+ SqlStdOperatorTable.RANK,
+ SqlStdOperatorTable.DENSE_RANK
+ );
+
+ /** Window functions, which definitly requires buffering. */
+ private static final Set<SqlOperator> BUFFERING_FUNCTIONS = Set.of(
+ SqlStdOperatorTable.PERCENT_RANK,
+ SqlStdOperatorTable.CUME_DIST,
+ SqlStdOperatorTable.FIRST_VALUE,
+ SqlStdOperatorTable.LAST_VALUE,
+ IgniteOwnSqlOperatorTable.LAG,
+ IgniteOwnSqlOperatorTable.LEAD,
+ SqlStdOperatorTable.NTILE,
+ SqlStdOperatorTable.NTH_VALUE
+ );
+
+ /** Determines if the specified SqlOperator is a window function call. */
+ static boolean isWindowFunction(AggregateCall call) {
+ return STREAMING_FUNCTIONS.contains(call.getAggregation())
+ || BUFFERING_FUNCTIONS.contains(call.getAggregation());
+ }
+
+ /** */
+ static <Row> Supplier<WindowFunction<Row>> windowFunctionFactory(
+ AggregateCall call,
+ ExecutionContext<Row> ctx
+ ) {
+ RowHandler<Row> hnd = ctx.rowHandler();
+ switch (call.getAggregation().getName()) {
+ case "ROW_NUMBER":
+ return () -> new RowNumber<>(hnd, call);
+ case "RANK":
+ return () -> new Rank<>(hnd, call);
+ case "DENSE_RANK":
+ return () -> new DenseRank<>(hnd, call);
+ case "PERCENT_RANK":
+ return () -> new PercentRank<>(hnd, call);
+ case "CUME_DIST":
+ return () -> new CumeDist<>(hnd, call);
+ case "LAG":
+ return () -> new Lag<>(hnd, call);
+ case "LEAD":
+ return () -> new Lead<>(hnd, call);
+ case "FIRST_VALUE":
+ return () -> new FirstValue<>(hnd, call);
+ case "LAST_VALUE":
+ return () -> new LastValue<>(hnd, call);
+ case "NTILE":
+ return () -> new NTile<>(hnd, call);
+ case "NTH_VALUE":
+ return () -> new NthValue<>(hnd, call);
+ default:
+ throw new AssertionError(call.getAggregation().getName());
+ }
+ }
+
+ /** */
+ private abstract static class AbstractWindowFunction<Row> {
+ /** */
+ private final RowHandler<Row> hnd;
+
+ /** */
+ private final AggregateCall aggCall;
+
+ /** */
+ private AbstractWindowFunction(RowHandler<Row> hnd, AggregateCall aggCall) {
+ this.hnd = hnd;
+ this.aggCall = aggCall;
+ }
+
+ /** */
+ <T> T get(int idx, Row row) {
+ assert idx < arguments().size() : "idx=" + idx + "; arguments=" + arguments();
+
+ return (T)hnd.get(arguments().get(idx), row);
+ }
+
+ /** */
+ protected AggregateCall aggregateCall() {
+ return aggCall;
+ }
+
+ /** */
+ protected List<Integer> arguments() {
+ return aggCall.getArgList();
+ }
+
+ /** */
+ int columnCount(Row row) {
+ return hnd.columnCount(row);
+ }
+ }
+
+ /** */
+ private abstract static class AbstractLagLeadWindowFunction<Row> extends AbstractWindowFunction<Row> implements WindowFunction<Row> {
+ /** */
+ private AbstractLagLeadWindowFunction(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** */
+ protected int getOffset(Row row) {
+ if (arguments().size() > 1)
+ return get(1, row);
+ else
+ return 1;
+ }
+
+ /** */
+ protected Object getDefault(Row row) {
+ if (arguments().size() > 2)
+ return get(2, row);
+ else
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ int offset = getOffset(row);
+ int idx = applyOffset(rowIdx, offset);
+ if (idx < 0 || idx >= frame.size())
+ return getDefault(row);
+ else {
+ Row offsetRow = frame.get(idx);
+ return get(0, offsetRow);
+ }
+ }
+
+ /** */
+ protected abstract int applyOffset(int rowIdx, int offset);
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ int argSize = arguments().size();
+ assert argSize >= 1 && argSize <= 3 : "Unexpected arguments count: " + argSize;
+
+ ImmutableList.Builder<RelDataType> builder = ImmutableList.builderWithExpectedSize(argSize);
+ builder.add(typeFactory.createTypeWithNullability(typeFactory.createSqlType(ANY), true));
+ if (argSize > 1)
+ builder.add(typeFactory.createTypeWithNullability(typeFactory.createSqlType(INTEGER), false));
+ if (argSize > 2)
+ builder.add(typeFactory.createTypeWithNullability(typeFactory.createSqlType(ANY), true));
+ return builder.build();
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createTypeWithNullability(typeFactory.createSqlType(ANY), true);
+ }
+ }
+
+ /** ROW_NUMBER window function implementation. */
+ private static class RowNumber<Row> extends AbstractWindowFunction<Row> implements StreamWindowFunction<Row> {
+ /** */
+ private RowNumber(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx) {
+ return rowIdx + 1;
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return List.of();
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createSqlType(BIGINT);
+ }
+ }
+
+ /** RANK window function implementation. */
+ private static class Rank<Row> extends AbstractWindowFunction<Row> implements StreamWindowFunction<Row> {
+ /** */
+ private int previousPeerIdx = -1;
+
+ /** */
+ private long rank = 1;
+
+ /** */
+ private long cnt;
+
+ /** */
+ private Rank(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx) {
+ if (previousPeerIdx != peerIdx) {
+ previousPeerIdx = peerIdx;
+ rank += cnt;
+ cnt = 0;
+ }
+ cnt++;
+ return rank;
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return List.of();
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createSqlType(BIGINT);
+ }
+ }
+
+ /** DENSE_RANK window function implementation. */
+ private static class DenseRank<Row> extends AbstractWindowFunction<Row> implements StreamWindowFunction<Row> {
+ /** */
+ private DenseRank(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx) {
+ return peerIdx + 1;
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return List.of();
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createSqlType(BIGINT);
+ }
+ }
+
+ /** PERCENT_RANK window function implementation. */
+ private static class PercentRank<Row> extends AbstractWindowFunction<Row> implements WindowFunction<Row> {
+ /** */
+ private final Rank<Row> rank;
+
+ /** */
+ private PercentRank(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ rank = new Rank<>(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ int size = frame.size() - 1;
+ if (size == 0)
+ return 0.0;
+ else {
+ long rank = (Long)this.rank.call(row, rowIdx, peerIdx, frame);
+ return ((double)rank - 1) / size;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return List.of();
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createSqlType(DOUBLE);
+ }
+ }
+
+ /** CUME_DIST window function implementation. */
+ private static class CumeDist<Row> extends AbstractWindowFunction<Row> implements WindowFunction<Row> {
+ /** */
+ private CumeDist(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ int cnt = frame.size(rowIdx, peerIdx);
+ return ((double)cnt) / frame.size();
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return List.of();
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createSqlType(DOUBLE);
+ }
+ }
+
+ /** LAG window function implementation. */
+ private static class Lag<Row> extends AbstractLagLeadWindowFunction<Row> {
+ /** */
+ private Lag(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected int applyOffset(int rowIdx, int offset) {
+ return rowIdx - offset;
+ }
+ }
+
+ /** LEAD window function implementation. */
+ private static class Lead<Row> extends AbstractLagLeadWindowFunction<Row> {
+ /** */
+ private Lead(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected int applyOffset(int rowIdx, int offset) {
+ return rowIdx + offset;
+ }
+ }
+
+ /** FIRST_VALUE window function implementation. */
+ private static class FirstValue<Row> extends AbstractWindowFunction<Row> implements WindowFunction<Row> {
+ /** */
+ private FirstValue(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ int startIdx = frame.getFrameStart(rowIdx, peerIdx);
+ int endIdx = frame.getFrameEnd(rowIdx, peerIdx);
+
+ if (endIdx < startIdx)
+ // empty frame
+ return null;
+
+ Row firstRow = frame.get(startIdx);
+ return get(0, firstRow);
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return F.asList(typeFactory.createTypeWithNullability(typeFactory.createSqlType(ANY), true));
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createTypeWithNullability(typeFactory.createSqlType(ANY), true);
+ }
+ }
+
+ /** LAST_VALUE window function implementation. */
+ private static class LastValue<Row> extends AbstractWindowFunction<Row> implements WindowFunction<Row> {
+ /** */
+ private LastValue(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ int endIdx = frame.getFrameEnd(rowIdx, peerIdx);
+ if (endIdx < 0)
+ return null;
+ else {
+ Row lastRow = frame.get(endIdx);
+ return get(0, lastRow);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return F.asList(typeFactory.createTypeWithNullability(typeFactory.createSqlType(ANY), true));
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createTypeWithNullability(typeFactory.createSqlType(ANY), true);
+ }
+ }
+
+ /** NTILE window function implementation. */
+ private static class NTile<Row> extends AbstractWindowFunction<Row> implements WindowFunction<Row> {
+ /** */
+ private NTile(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ int buckets = get(0, row);
+ int rowCnt = frame.size();
+ if (buckets >= rowCnt)
+ return rowIdx + 1;
+ else {
+ int rowsPerBucket = rowCnt / buckets;
+ int remainderRows = rowCnt % buckets;
+
+ // Remainder rows are assigned starting from the first bucket.
+ // Thus, each of those buckets has an additional row.
+ if (rowIdx < ((rowsPerBucket + 1) * remainderRows))
+ return (rowIdx / (rowsPerBucket + 1)) + 1;
+ else
+ return ((rowIdx - remainderRows) / rowsPerBucket) + 1;
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return List.of(typeFactory.createSqlType(INTEGER));
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createSqlType(BIGINT);
+ }
+ }
+
+ /** NTH_VALUE window function implementation. */
+ private static class NthValue<Row> extends AbstractWindowFunction<Row> implements WindowFunction<Row> {
+ /** */
+ private NthValue(RowHandler<Row> hnd, AggregateCall aggCall) {
+ super(hnd, aggCall);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object call(Row row, int rowIdx, int peerIdx, WindowPartitionFrame<Row> frame) {
+ int offset = get(1, row);
+ if (offset < 1)
+ throw new IllegalArgumentException("Offset must be at least 1.");
+
+ int startIdx = frame.getFrameStart(rowIdx, peerIdx);
+ int endIdx = frame.getFrameEnd(rowIdx, peerIdx);
+ // offset is 1-based
+ int valIdx = startIdx + offset - 1;
+ if (valIdx > endIdx)
+ return null;
+ else {
+ Row valRow = frame.get(valIdx);
+ return get(0, valRow);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return List.of(typeFactory.createSqlType(ANY), typeFactory.createSqlType(INTEGER));
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createSqlType(ANY);
+ }
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartition.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartition.java
new file mode 100644
index 0000000..0f875fa
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartition.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.function.Consumer;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.apache.ignite.internal.processors.query.calcite.exec.tracker.RowTracker;
+
+/** Partition of rows in window function calculation. */
+public interface WindowPartition<Row> {
+ /** Adding row to the window partition. */
+ void add(Row row);
+
+ /** Evaluates partition to an output. */
+ void evalTo(RowHandler.RowFactory<Row> factory, Consumer<Row> output);
+
+ /** Reset current window partition (i.e., on partition restart). */
+ void reset();
+
+ /** Returns {@code true} if partition is streaming. */
+ boolean isStreaming();
+
+ /** Sets memory tracker for current partition. */
+ void attachMemoryTracker(RowTracker<Row> memoryTracker);
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionBase.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionBase.java
new file mode 100644
index 0000000..41aa3eb
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionBase.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.Comparator;
+import java.util.List;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.jetbrains.annotations.Nullable;
+
+/** Base implementation of window partition. */
+abstract class WindowPartitionBase<Row> implements WindowPartition<Row> {
+ /** Comparator for computing the peer index. */
+ private final Comparator<Row> peerCmp;
+
+ /** */
+ private final WindowFunctionFactory<Row> funcFactory;
+
+ /** */
+ private final RowHandler.RowFactory<Row> rowFactory;
+
+ /** */
+ WindowPartitionBase(
+ Comparator<Row> peerCmp,
+ WindowFunctionFactory<Row> funcFactory,
+ RowHandler.RowFactory<Row> rowFactory
+ ) {
+ this.peerCmp = peerCmp;
+ this.funcFactory = funcFactory;
+ this.rowFactory = rowFactory;
+ }
+
+ /** Creates {@link WindowFunctionWrapper} list. */
+ final List<WindowFunctionWrapper<Row>> createWrappers() {
+ return funcFactory.createWrappers();
+ }
+
+ /** Compares two rows and return true if current row peer not equal to the previous row peer. */
+ protected final boolean isNewPeer(Row cur, @Nullable Row prev) {
+ if (prev == null)
+ return true;
+ else if (peerCmp != null)
+ return peerCmp.compare(prev, cur) != 0;
+ else
+ return false;
+ }
+
+ /** Creates row with window function results. */
+ protected final Row createResultRow(RowHandler.RowFactory<Row> rowFactory, Row src, Object... results) {
+ Row resultsRow = this.rowFactory.create(results);
+ return rowFactory.handler().concat(src, resultsRow);
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionFactory.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionFactory.java
new file mode 100644
index 0000000..88d0db3
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionFactory.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.function.Supplier;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.apache.ignite.internal.processors.query.calcite.util.Commons;
+
+/** Factory to create {@link WindowPartitionBase} factory from {@link Window.Group}. */
+public final class WindowPartitionFactory<Row> implements Supplier<WindowPartition<Row>> {
+ /** */
+ private final WindowFunctionFactory<Row> funcFactory;
+
+ /** */
+ private final ExecutionContext<Row> ctx;
+
+ /** */
+ private final Window.Group grp;
+
+ /** */
+ private final RelDataType inputRowType;
+
+ /** */
+ private final RowHandler.RowFactory<Row> rowFactory;
+
+ /** */
+ private final Comparator<Row> peerCmp;
+
+ /** */
+ private final boolean streamable;
+
+ /** */
+ public WindowPartitionFactory(
+ ExecutionContext<Row> ctx,
+ Window.Group grp,
+ List<AggregateCall> calls,
+ RelDataType inputRowType
+ ) {
+ this.ctx = ctx;
+ this.grp = grp;
+ this.inputRowType = inputRowType;
+
+ List<RelDataType> aggTypes = Commons.transform(calls, AggregateCall::getType);
+ rowFactory = ctx.rowHandler().factory(Commons.typeFactory(), aggTypes);
+ if (grp.isRows)
+ // peer comparator in meaningless in rows frame.
+ peerCmp = null;
+ else
+ peerCmp = ctx.expressionFactory().comparator(grp.collation());
+
+ streamable = WindowFunctions.streamable(grp);
+ funcFactory = new WindowFunctionFactory<>(ctx, grp, calls, inputRowType);
+ }
+
+ /** {@inheritDoc} */
+ @Override public WindowPartition<Row> get() {
+ if (streamable)
+ return new StreamWindowPartition<>(peerCmp, funcFactory, rowFactory);
+ else
+ return new BufferingWindowPartition<>(peerCmp, funcFactory, rowFactory, ctx, grp, inputRowType);
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionFrame.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionFrame.java
new file mode 100644
index 0000000..25225f2
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/exp/window/WindowPartitionFrame.java
@@ -0,0 +1,62 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.exp.window;
+
+import java.util.Collections;
+import java.util.List;
+
+/** Rows frame within window partition. */
+abstract class WindowPartitionFrame<Row> {
+ /** Holds immutable refrence to buffered window partition rows. */
+ protected final List<Row> buf;
+
+ /** */
+ WindowPartitionFrame(List<Row> buf) {
+ this.buf = Collections.unmodifiableList(buf);
+ }
+
+ /** Returns row from partition by index. */
+ Row get(int idx) {
+ assert idx >= 0 && idx < buf.size() : "Invalid row index";
+ return buf.get(idx);
+ }
+
+ /** Returns start frame index in partition for current row peer. */
+ abstract int getFrameStart(int rowIdx, int peerIdx);
+
+ /** Returns end frame index in partition for current row peer. */
+ abstract int getFrameEnd(int rowIdx, int peerIdx);
+
+ /** Returns frame size in partition for the current row peer. */
+ final int size(int rowIdx, int peerIdx) {
+ int start = getFrameStart(rowIdx, peerIdx);
+ int end = getFrameEnd(rowIdx, peerIdx);
+ if (end >= start)
+ return end - start + 1;
+ else
+ return 0;
+ }
+
+ /** Returns row count in partition. */
+ final int size() {
+ return buf.size();
+ }
+
+ /** Resets current frame. */
+ protected abstract void reset();
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractNode.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractNode.java
index f27548c..ef372b6 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractNode.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/AbstractNode.java
@@ -79,8 +79,8 @@
/**
* {@link Inbox} node may not have proper context at creation time in case it
* creates on first message received from a remote source. This case the context
- * sets in scope of {@link Inbox#init(ExecutionContext, Collection, Comparator)} method call.
- */ /** {@inheritDoc} */
+ * sets in scope of {@link Inbox#init(ExecutionContext, RelDataType, Collection, Comparator)} method call.
+ */
@Override public ExecutionContext<Row> context() {
return ctx;
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/HashJoinNode.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/HashJoinNode.java
index 0158abb..1f92f27 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/HashJoinNode.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/HashJoinNode.java
@@ -25,14 +25,14 @@
import java.util.Map;
import java.util.function.BiFunction;
import java.util.function.BiPredicate;
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.util.ImmutableBitSet;
import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
import org.apache.ignite.internal.processors.query.calcite.exec.MappingRowHandler;
import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.GroupKey;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteJoinInfo;
import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
import org.jetbrains.annotations.Nullable;
@@ -58,7 +58,7 @@
RelDataType leftRowType,
RelDataType rightRowType,
JoinRelType type,
- IgniteJoinInfo info,
+ JoinInfo info,
@Nullable BiPredicate<RowT, RowT> nonEqCond
) {
assert !info.pairs().isEmpty();
@@ -120,7 +120,7 @@
private final boolean keepRowsWithNull;
/** */
- private final ImmutableBitSet allowNulls;
+ private final ImmutableList<Boolean> nullExclusions;
/** */
protected @Nullable RowList rightRows;
@@ -148,13 +148,13 @@
protected AbstractStoringHashJoin(
ExecutionContext<Row> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
boolean keepRowsWithNull,
@Nullable BiPredicate<Row, Row> nonEqCond
) {
super(ctx, rowType);
- allowNulls = info.allowNulls();
+ nullExclusions = info.nullExclusionFlags;
this.keepRowsWithNull = keepRowsWithNull;
leftRowHnd = new MappingRowHandler<>(ctx.rowHandler(), info.leftKeys.toIntArray());
@@ -175,7 +175,7 @@
/** */
protected @Nullable RowList lookup(Row row) {
- GroupKey<Row> key = GroupKey.of(row, leftRowHnd, allowNulls);
+ GroupKey<Row> key = GroupKey.of(row, leftRowHnd, nullExclusions);
if (key == null)
return null;
@@ -190,7 +190,7 @@
waitingRight--;
- GroupKey<Row> key = keepRowsWithNull ? GroupKey.of(row, rightRowHnd) : GroupKey.of(row, rightRowHnd, allowNulls);
+ GroupKey<Row> key = keepRowsWithNull ? GroupKey.of(row, rightRowHnd) : GroupKey.of(row, rightRowHnd, nullExclusions);
if (key != null) {
nodeMemoryTracker.onRowAdded(row);
@@ -293,7 +293,7 @@
private AbstractMatchingHashJoin(
ExecutionContext<Row> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<Row> outRowHnd,
@Nullable RowHandler.RowFactory<Row> leftRowFactory,
@Nullable RowHandler.RowFactory<Row> rightRowFactory,
@@ -438,7 +438,7 @@
private AbstractNoTouchingHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
@Nullable RowHandler.RowFactory<RowT> leftRowFactory,
@Nullable RowHandler.RowFactory<RowT> rightRowFactory,
@@ -467,7 +467,7 @@
private InnerHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
@Nullable BiPredicate<RowT, RowT> nonEqCond
) {
@@ -490,7 +490,7 @@
private LeftHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
RowHandler.RowFactory<RowT> rightRowFactory,
@Nullable BiPredicate<RowT, RowT> nonEqCond
@@ -516,7 +516,7 @@
private AbstractListTouchingHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
@Nullable RowHandler.RowFactory<RowT> leftRowFactory,
@Nullable RowHandler.RowFactory<RowT> rightRowFactory,
@@ -582,7 +582,7 @@
private RightHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
RowHandler.RowFactory<RowT> leftRowFactory,
@Nullable BiPredicate<RowT, RowT> nonEqCond
@@ -607,7 +607,7 @@
private FullOuterHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
RowHandler.RowFactory<RowT> leftRowFactory,
RowHandler.RowFactory<RowT> rightRowFactory,
@@ -634,7 +634,7 @@
private AbstractRowTouchingHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
@Nullable RowHandler.RowFactory<RowT> leftRowFactory,
@Nullable RowHandler.RowFactory<RowT> rightRowFactory,
@@ -678,7 +678,7 @@
private RightRowTouchingHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
RowHandler.RowFactory<RowT> leftRowFactory,
@Nullable BiPredicate<RowT, RowT> nonEqCond
@@ -703,7 +703,7 @@
private FullOuterRowTouchingHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
RowHandler<RowT> outRowHnd,
RowHandler.RowFactory<RowT> leftRowFactory,
RowHandler.RowFactory<RowT> rightRowFactory,
@@ -729,7 +729,7 @@
private AbstractFilteringHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
@Nullable BiPredicate<RowT, RowT> nonEqCond
) {
super(ctx, rowType, info, false, nonEqCond);
@@ -813,7 +813,7 @@
private SemiHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
@Nullable BiPredicate<RowT, RowT> nonEqCond
) {
super(ctx, rowType, info, nonEqCond);
@@ -840,7 +840,7 @@
private AntiHashJoin(
ExecutionContext<RowT> ctx,
RelDataType rowType,
- IgniteJoinInfo info,
+ JoinInfo info,
@Nullable BiPredicate<RowT, RowT> nonEqCond
) {
super(ctx, rowType, info, nonEqCond);
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/WindowNode.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/WindowNode.java
new file mode 100644
index 0000000..ae4e052
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/WindowNode.java
@@ -0,0 +1,185 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.rel;
+
+import java.util.ArrayDeque;
+import java.util.Comparator;
+import java.util.Deque;
+import java.util.function.Supplier;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.window.WindowPartition;
+import org.apache.ignite.internal.util.typedef.F;
+
+/** Window node. */
+public class WindowNode<Row> extends MemoryTrackingNode<Row> implements SingleNode<Row>, Downstream<Row> {
+ /** */
+ private final Comparator<Row> partCmp;
+
+ /** */
+ private final Supplier<WindowPartition<Row>> partFactory;
+
+ /** */
+ private final RowHandler.RowFactory<Row> rowFactory;
+
+ /** */
+ private WindowPartition<Row> part;
+
+ /** */
+ private int requested;
+
+ /** */
+ private int waiting;
+
+ /** */
+ private Row prevRow;
+
+ /** */
+ private final Deque<Row> outBuf = new ArrayDeque<>(IN_BUFFER_SIZE);
+
+ /** */
+ private boolean inLoop;
+
+ /** */
+ public WindowNode(
+ ExecutionContext<Row> ctx,
+ RelDataType rowType,
+ Comparator<Row> partCmp,
+ Supplier<WindowPartition<Row>> partFactory,
+ RowHandler.RowFactory<Row> rowFactory
+ ) {
+ super(ctx, rowType, DFLT_ROW_OVERHEAD);
+ this.partCmp = partCmp;
+ this.partFactory = partFactory;
+ this.rowFactory = rowFactory;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void request(int rowsCnt) throws Exception {
+ assert !F.isEmpty(sources()) && sources().size() == 1;
+ assert rowsCnt > 0;
+
+ checkState();
+
+ requested = rowsCnt;
+
+ if (waiting == 0 && outBuf.isEmpty())
+ source().request(waiting = IN_BUFFER_SIZE);
+ else if (!inLoop)
+ flush();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void push(Row row) throws Exception {
+ assert downstream() != null;
+ assert waiting > 0;
+
+ checkState();
+
+ waiting--;
+
+ if (part == null) {
+ part = partFactory.get();
+ part.attachMemoryTracker(nodeMemoryTracker);
+ }
+ else if (prevRow != null && partCmp != null && partCmp.compare(prevRow, row) != 0) {
+ part.evalTo(rowFactory, this::appendToOutBuf);
+ part.reset();
+ }
+
+ part.add(row);
+
+ if (part.isStreaming())
+ part.evalTo(rowFactory, this::appendToOutBuf);
+
+ prevRow = row;
+
+ if (!inLoop)
+ flush();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void end() throws Exception {
+ assert downstream() != null;
+ if (waiting < 0)
+ return;
+
+ waiting = -1;
+
+ checkState();
+
+ if (part != null) {
+ part.evalTo(rowFactory, this::appendToOutBuf);
+ part.reset();
+ }
+
+ flush();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void rewindInternal() {
+ requested = 0;
+ waiting = 0;
+ if (part != null) {
+ part.reset();
+ part = null;
+ }
+ outBuf.clear();
+ nodeMemoryTracker.reset();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected Downstream<Row> requestDownstream(int idx) {
+ if (idx != 0)
+ throw new IndexOutOfBoundsException();
+
+ return this;
+ }
+
+ /** */
+ private void appendToOutBuf(Row row) {
+ outBuf.add(row);
+ nodeMemoryTracker.onRowAdded(row);
+ }
+
+ /** */
+ private void flush() throws Exception {
+ inLoop = true;
+ try {
+ while (requested > 0 && !outBuf.isEmpty()) {
+ requested--;
+
+ Row row = outBuf.poll();
+ nodeMemoryTracker.onRowRemoved(row);
+ downstream().push(row);
+ }
+ }
+ finally {
+ inLoop = false;
+ }
+
+ if (waiting == 0 && requested > 0 && outBuf.isEmpty())
+ context().execute(() -> source().request(waiting = IN_BUFFER_SIZE), this::onError);
+
+ if (waiting < 0 && requested > 0 && outBuf.isEmpty()) {
+ requested = 0;
+ downstream().end();
+ }
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelInputEx.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelInputEx.java
index cb64b13..a5f1e76 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelInputEx.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelInputEx.java
@@ -19,6 +19,7 @@
import java.util.List;
import org.apache.calcite.rel.RelCollation;
import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.core.Window;
import org.apache.ignite.internal.processors.query.calcite.prepare.bounds.SearchBounds;
/** */
@@ -35,4 +36,10 @@
* @return Search bounds.
*/
List<SearchBounds> getSearchBounds(String tag);
+
+ /**
+ * @param tag Tag.
+ * @return A window group value.
+ */
+ Window.Group getWindowGroup(String tag);
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelJson.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelJson.java
index 0460fb4..e2fbee0 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelJson.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelJson.java
@@ -55,6 +55,7 @@
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.core.CorrelationId;
import org.apache.calcite.rel.core.Spool;
+import org.apache.calcite.rel.core.Window;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeFactory;
import org.apache.calcite.rel.type.RelDataTypeFactoryImpl.JavaType;
@@ -66,12 +67,11 @@
import org.apache.calcite.rex.RexFieldCollation;
import org.apache.calcite.rex.RexLiteral;
import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.rex.RexOver;
import org.apache.calcite.rex.RexSlot;
import org.apache.calcite.rex.RexVariable;
-import org.apache.calcite.rex.RexWindow;
import org.apache.calcite.rex.RexWindowBound;
import org.apache.calcite.rex.RexWindowBounds;
+import org.apache.calcite.rex.RexWindowExclusion;
import org.apache.calcite.runtime.SqlFunctions;
import org.apache.calcite.sql.JoinConditionType;
import org.apache.calcite.sql.JoinType;
@@ -197,6 +197,7 @@
register(enumByName, SqlTrimFunction.Flag.class);
register(enumByName, TimeUnitRange.class);
register(enumByName, Spool.Type.class);
+ register(enumByName, RexWindowExclusion.class);
ENUM_BY_NAME = enumByName.build();
}
@@ -273,8 +274,8 @@
return toJson((Enum)value);
else if (value instanceof RexNode)
return toJson((RexNode)value);
- else if (value instanceof RexWindow)
- return toJson((RexWindow)value);
+ else if (value instanceof Window.Group)
+ return toJson((Window.Group)value);
else if (value instanceof RexFieldCollation)
return toJson((RexFieldCollation)value);
else if (value instanceof RexWindowBound)
@@ -447,49 +448,30 @@
List operands = (List)map.get("operands");
List<RexNode> rexOperands = toRexList(relInput, operands);
Object jsonType = map.get("type");
- Map window = (Map)map.get("window");
- if (window != null) {
- SqlAggFunction operator = (SqlAggFunction)toOp(opMap);
- RelDataType type = toType(typeFactory, jsonType);
- List<RexNode> partitionKeys = new ArrayList<>();
- if (window.containsKey("partition"))
- partitionKeys = toRexList(relInput, (List)window.get("partition"));
- List<RexFieldCollation> orderKeys = new ArrayList<>();
- if (window.containsKey("order"))
- orderKeys = toRexFieldCollationList(relInput, (List)window.get("order"));
- RexWindowBound lowerBound;
- RexWindowBound upperBound;
- boolean physical;
- if (window.get("rows-lower") != null) {
- lowerBound = toRexWindowBound(relInput, (Map)window.get("rows-lower"));
- upperBound = toRexWindowBound(relInput, (Map)window.get("rows-upper"));
- physical = true;
- }
- else if (window.get("range-lower") != null) {
- lowerBound = toRexWindowBound(relInput, (Map)window.get("range-lower"));
- upperBound = toRexWindowBound(relInput, (Map)window.get("range-upper"));
- physical = false;
- }
- else {
- // No ROWS or RANGE clause
- lowerBound = null;
- upperBound = null;
- physical = false;
- }
- boolean distinct = (Boolean)map.get("distinct");
- return rexBuilder.makeOver(type, operator, rexOperands, partitionKeys,
- ImmutableList.copyOf(orderKeys), lowerBound, upperBound, physical,
- true, false, distinct, false);
+
+ SqlOperator operator = toOp(opMap);
+ RelDataType type;
+ if (jsonType != null)
+ type = toType(typeFactory, jsonType);
+ else
+ type = rexBuilder.deriveReturnType(operator, rexOperands);
+
+ if (map.containsKey("winAggregate")) {
+ Map<String, Object> winAggregate = (Map<String, Object>)map.get("winAggregate");
+ Integer ordinal = (Integer)winAggregate.get("ordinal");
+ Boolean distinct = (Boolean)winAggregate.get("distinct");
+ Boolean ignoreNulls = (Boolean)winAggregate.get("ignoreNulls");
+ return new Window.RexWinAggCall(
+ (SqlAggFunction)operator,
+ type,
+ rexOperands,
+ ordinal,
+ distinct,
+ ignoreNulls
+ );
}
- else {
- SqlOperator operator = toOp(opMap);
- RelDataType type;
- if (jsonType != null)
- type = toType(typeFactory, jsonType);
- else
- type = rexBuilder.deriveReturnType(operator, rexOperands);
- return rexBuilder.makeCall(type, operator, rexOperands);
- }
+
+ return rexBuilder.makeCall(type, operator, rexOperands);
}
Integer input = (Integer)map.get("input");
if (input != null) {
@@ -726,6 +708,48 @@
}
/** */
+ Window.Group toWindowGroup(RelInput input, Map<String, Object> grp) {
+ if (grp == null)
+ return null;
+
+ List<Window.RexWinAggCall> aggCalls = Commons.transform((List<Map<String, Object>>)grp.get("calls"),
+ it -> (Window.RexWinAggCall)toRex(input, it));
+ ImmutableBitSet partition = grp.get("partition") == null
+ ? ImmutableBitSet.of()
+ : ImmutableBitSet.of((Iterable<Integer>)grp.get("partition"));
+ RelCollation order = grp.get("order") == null
+ ? RelCollations.EMPTY
+ : toCollation((List<Map<String, Object>>)grp.get("order"));
+
+ RexWindowBound lowerBound;
+ RexWindowBound upperBound;
+ boolean rows;
+ if (grp.get("rows-lower") != null) {
+ lowerBound = toRexWindowBound(input, (Map)grp.get("rows-lower"));
+ upperBound = toRexWindowBound(input, (Map)grp.get("rows-upper"));
+ rows = true;
+ }
+ else if (grp.get("range-lower") != null) {
+ lowerBound = toRexWindowBound(input, (Map)grp.get("range-lower"));
+ upperBound = toRexWindowBound(input, (Map)grp.get("range-upper"));
+ rows = false;
+ }
+ else
+ throw new IllegalStateException("RANGE or ROWS clause missing");
+
+ RexWindowExclusion exclude = toEnum(grp.get("exclude"));
+ return new Window.Group(
+ partition,
+ rows,
+ lowerBound,
+ upperBound,
+ exclude,
+ order,
+ aggCalls
+ );
+ }
+
+ /** */
private Object toJson(Enum<?> enum0) {
String key = enum0.getDeclaringClass().getSimpleName() + "#" + enum0.name();
@@ -885,10 +909,12 @@
map.put("dynamic", op.isDynamicFunction());
}
- if (call instanceof RexOver) {
- RexOver over = (RexOver)call;
- map.put("distinct", over.isDistinct());
- map.put("window", toJson(over.getWindow()));
+ if (call instanceof Window.RexWinAggCall) {
+ Map<String, Object> winAggregate = map();
+ winAggregate.put("ordinal", ((Window.RexWinAggCall)call).ordinal);
+ winAggregate.put("distinct", ((Window.RexWinAggCall)call).distinct);
+ winAggregate.put("ignoreNulls", ((Window.RexWinAggCall)call).ignoreNulls);
+ map.put("winAggregate", winAggregate);
}
return map;
@@ -898,28 +924,22 @@
}
/** */
- private Object toJson(RexWindow window) {
+ private Object toJson(Window.Group grp) {
Map<String, Object> map = map();
- if (!window.partitionKeys.isEmpty())
- map.put("partition", toJson(window.partitionKeys));
- if (!window.orderKeys.isEmpty())
- map.put("order", toJson(window.orderKeys));
- if (window.getLowerBound() == null) {
- // No ROWS or RANGE clause
- }
- else if (window.getUpperBound() == null)
- if (window.isRows())
- map.put("rows-lower", toJson(window.getLowerBound()));
- else
- map.put("range-lower", toJson(window.getLowerBound()));
- else if (window.isRows()) {
- map.put("rows-lower", toJson(window.getLowerBound()));
- map.put("rows-upper", toJson(window.getUpperBound()));
+ map.put("calls", toJson(grp.aggCalls));
+ if (!grp.keys.isEmpty())
+ map.put("partition", toJson(grp.keys));
+ if (!grp.orderKeys.getKeys().isEmpty())
+ map.put("order", toJson(grp.orderKeys));
+ if (grp.isRows) {
+ map.put("rows-lower", toJson(grp.lowerBound));
+ map.put("rows-upper", toJson(grp.upperBound));
}
else {
- map.put("range-lower", toJson(window.getLowerBound()));
- map.put("range-upper", toJson(window.getUpperBound()));
+ map.put("range-lower", toJson(grp.lowerBound));
+ map.put("range-upper", toJson(grp.upperBound));
}
+ map.put("exclude", toJson(grp.exclude));
return map;
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelJsonReader.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelJsonReader.java
index 472a2d1..5c05b9e 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelJsonReader.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/externalize/RelJsonReader.java
@@ -38,6 +38,7 @@
import org.apache.calcite.rel.RelInput;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Window;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rex.RexLiteral;
import org.apache.calcite.rex.RexNode;
@@ -299,6 +300,11 @@
}
/** {@inheritDoc} */
+ @Override public Window.Group getWindowGroup(String tag) {
+ return relJson.toWindowGroup(this, (Map<String, Object>)get(tag));
+ }
+
+ /** {@inheritDoc} */
@Override public RelDistribution getDistribution() {
return relJson.toDistribution(get("distribution"));
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/Cloner.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/Cloner.java
index ee6acfd..a60ae8a 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/Cloner.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/Cloner.java
@@ -46,6 +46,7 @@
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteUncollect;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteUnionAll;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteValues;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteWindow;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteColocatedHashAggregate;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteColocatedSortAggregate;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteMapHashAggregate;
@@ -274,6 +275,11 @@
}
/** {@inheritDoc} */
+ @Override public IgniteRel visit(IgniteWindow rel) {
+ return rel.clone(cluster, F.asList(visit((IgniteRel)rel.getInput())));
+ }
+
+ /** {@inheritDoc} */
@Override public IgniteRel visit(IgniteRel rel) {
return rel.accept(this);
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteRelShuttle.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteRelShuttle.java
index 62cb65f..c922ccb 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteRelShuttle.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteRelShuttle.java
@@ -45,6 +45,7 @@
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteUncollect;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteUnionAll;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteValues;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteWindow;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteColocatedHashAggregate;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteColocatedSortAggregate;
import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteMapHashAggregate;
@@ -217,6 +218,11 @@
}
/** {@inheritDoc} */
+ @Override public IgniteRel visit(IgniteWindow rel) {
+ return processNode(rel);
+ }
+
+ /** {@inheritDoc} */
@Override public IgniteRel visit(IgniteRel rel) {
return rel.accept(this);
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
index 8d25cf1..1c7f00d 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
@@ -49,6 +49,7 @@
import org.apache.calcite.sql.SqlSelect;
import org.apache.calcite.sql.SqlUpdate;
import org.apache.calcite.sql.SqlUtil;
+import org.apache.calcite.sql.SqlWindow;
import org.apache.calcite.sql.dialect.CalciteSqlDialect;
import org.apache.calcite.sql.parser.SqlParserPos;
import org.apache.calcite.sql.type.FamilyOperandTypeChecker;
@@ -300,6 +301,13 @@
if (call.getOperandList().size() > 2)
throw newValidationError(call, IgniteResource.INSTANCE.invalidCastParameters());
}
+ else if (call.getKind() == SqlKind.OVER && call.operand(1) instanceof SqlWindow) {
+ SqlLiteral exclude = call.<SqlWindow>operand(1).getExclude();
+ if (exclude != null && !SqlWindow.isExcludeNoOthers(exclude)) {
+ String clause = exclude.toSqlString(CalciteSqlDialect.DEFAULT).getSql();
+ throw newValidationError(exclude, IgniteResource.INSTANCE.unsupportedClause(clause));
+ }
+ }
super.validateCall(call, scope);
}
@@ -437,10 +445,6 @@
/** */
private void validateAggregateFunction(SqlCall call, SqlAggFunction aggFunction) {
- if (!SqlKind.AGGREGATE.contains(aggFunction.kind))
- throw newValidationError(call,
- IgniteResource.INSTANCE.unsupportedAggregationFunction(aggFunction.getName()));
-
switch (aggFunction.kind) {
case COUNT:
if (call.operandCount() > 1)
@@ -460,6 +464,17 @@
case BIT_AND:
case BIT_OR:
case BIT_XOR:
+ case ROW_NUMBER:
+ case DENSE_RANK:
+ case RANK:
+ case PERCENT_RANK:
+ case CUME_DIST:
+ case LAG:
+ case LEAD:
+ case FIRST_VALUE:
+ case LAST_VALUE:
+ case NTILE:
+ case NTH_VALUE:
return;
default:
throw newValidationError(call,
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerHelper.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerHelper.java
index 1cef9ab..d88275f 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerHelper.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerHelper.java
@@ -125,6 +125,8 @@
rel = planner.replaceCorrelatesCollisions(rel);
+ rel = planner.transform(PlannerPhase.HEP_WINDOW_SPLIT, rel.getTraitSet(), rel);
+
rel = planner.extractConjunctionOverDisjunctionCommonPart(rel);
rel = planner.transform(PlannerPhase.HEP_FILTER_PUSH_DOWN, rel.getTraitSet(), rel);
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerPhase.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerPhase.java
index b8333a5..1ac34ea 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerPhase.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerPhase.java
@@ -70,11 +70,13 @@
import org.apache.ignite.internal.processors.query.calcite.rule.UncollectConverterRule;
import org.apache.ignite.internal.processors.query.calcite.rule.UnionConverterRule;
import org.apache.ignite.internal.processors.query.calcite.rule.ValuesConverterRule;
+import org.apache.ignite.internal.processors.query.calcite.rule.WindowConverterRule;
import org.apache.ignite.internal.processors.query.calcite.rule.logical.ExposeIndexRule;
import org.apache.ignite.internal.processors.query.calcite.rule.logical.FilterScanMergeRule;
import org.apache.ignite.internal.processors.query.calcite.rule.logical.IgniteMultiJoinOptimizeRule;
import org.apache.ignite.internal.processors.query.calcite.rule.logical.LogicalOrToUnionRule;
import org.apache.ignite.internal.processors.query.calcite.rule.logical.ProjectScanMergeRule;
+import org.apache.ignite.internal.processors.query.calcite.rule.logical.WindowConstantsRule;
import static org.apache.ignite.internal.processors.query.calcite.prepare.IgnitePrograms.cbo;
import static org.apache.ignite.internal.processors.query.calcite.prepare.IgnitePrograms.hep;
@@ -103,6 +105,24 @@
},
/** */
+ HEP_WINDOW_SPLIT("Heuristic phase to split project to project and window") {
+ /** {@inheritDoc} */
+ @Override public RuleSet getRules(PlanningContext ctx) {
+ return ctx.rules(
+ RuleSets.ofList(
+ CoreRules.PROJECT_TO_LOGICAL_PROJECT_AND_WINDOW,
+ WindowConstantsRule.INSTANCE
+ )
+ );
+ }
+
+ /** {@inheritDoc} */
+ @Override public Program getProgram(PlanningContext ctx) {
+ return hep(getRules(ctx));
+ }
+ },
+
+ /** */
HEP_FILTER_PUSH_DOWN("Heuristic phase to push down filters") {
/** {@inheritDoc} */
@Override public RuleSet getRules(PlanningContext ctx) {
@@ -118,7 +138,8 @@
CoreRules.JOIN_CONDITION_PUSH,
CoreRules.FILTER_INTO_JOIN,
CoreRules.FILTER_CORRELATE,
- CoreRules.FILTER_PROJECT_TRANSPOSE
+ CoreRules.FILTER_PROJECT_TRANSPOSE,
+ CoreRules.FILTER_WINDOW_TRANSPOSE
)
);
}
@@ -140,7 +161,8 @@
CoreRules.JOIN_PUSH_EXPRESSIONS,
CoreRules.PROJECT_MERGE,
CoreRules.PROJECT_REMOVE,
- CoreRules.PROJECT_FILTER_TRANSPOSE
+ CoreRules.PROJECT_FILTER_TRANSPOSE,
+ CoreRules.PROJECT_WINDOW_TRANSPOSE
)
);
}
@@ -279,6 +301,10 @@
NestedLoopJoinConverterRule.INSTANCE,
HashJoinConverterRule.INSTANCE,
+ // This rule replaces input refs to literals in the window agg calls.
+ // Since ignite aggregate calculation bounded to input field index - this rule should be excluded from rule set.
+ //CoreRules.WINDOW_REDUCE_EXPRESSIONS,
+
ValuesConverterRule.INSTANCE,
LogicalScanConverterRule.INDEX_SCAN,
LogicalScanConverterRule.TABLE_SCAN,
@@ -300,7 +326,8 @@
TableModifyDistributedConverterRule.INSTANCE,
UnionConverterRule.INSTANCE,
SortConverterRule.INSTANCE,
- TableFunctionScanConverterRule.INSTANCE
+ TableFunctionScanConverterRule.INSTANCE,
+ WindowConverterRule.INSTANCE
)
);
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteJoinInfo.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteJoinInfo.java
deleted file mode 100644
index 95e2ecb..0000000
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteJoinInfo.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.processors.query.calcite.rel;
-
-import java.util.ArrayList;
-import java.util.List;
-import com.google.common.collect.ImmutableList;
-import org.apache.calcite.plan.RelOptUtil;
-import org.apache.calcite.rel.core.Join;
-import org.apache.calcite.rel.core.JoinInfo;
-import org.apache.calcite.rex.RexNode;
-import org.apache.calcite.util.ImmutableBitSet;
-import org.apache.calcite.util.ImmutableIntList;
-import org.apache.ignite.internal.util.typedef.F;
-
-/** Extended {@link JoinInfo}. */
-public class IgniteJoinInfo extends JoinInfo {
- /** Conditions with mathing nulls. It usually means presence of 'IS DISTINCT' / 'IS NOT DISTINCT'. */
- private final ImmutableBitSet allowNulls;
-
- /** */
- public IgniteJoinInfo(
- ImmutableIntList leftKeys,
- ImmutableIntList rightKeys,
- ImmutableBitSet allowNulls,
- ImmutableList<RexNode> nonEquis
- ) {
- super(leftKeys, rightKeys, nonEquis);
-
- this.allowNulls = allowNulls;
- }
-
- /** */
- public static IgniteJoinInfo of(Join join) {
- List<Integer> leftKeys = new ArrayList<>();
- List<Integer> rightKeys = new ArrayList<>();
- List<Boolean> skipNulls = new ArrayList<>();
- List<RexNode> nonEquis = new ArrayList<>();
-
- RelOptUtil.splitJoinCondition(join.getLeft(), join.getRight(), join.getCondition(), leftKeys, rightKeys,
- skipNulls, nonEquis);
-
- ImmutableBitSet.Builder allowNulls = null;
-
- if (!F.isEmpty(skipNulls)) {
- allowNulls = ImmutableBitSet.builder();
-
- for (int i = 0; i < skipNulls.size(); ++i) {
- if (!skipNulls.get(i))
- allowNulls.set(i);
- }
- }
-
- return new IgniteJoinInfo(
- ImmutableIntList.copyOf(leftKeys),
- ImmutableIntList.copyOf(rightKeys),
- allowNulls == null ? ImmutableBitSet.of() : allowNulls.build(),
- ImmutableList.copyOf(nonEquis)
- );
- }
-
- /** */
- public ImmutableBitSet allowNulls() {
- return allowNulls;
- }
-}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteMergeJoin.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteMergeJoin.java
index c1dae0e..15a813f 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteMergeJoin.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteMergeJoin.java
@@ -44,7 +44,6 @@
import org.apache.ignite.internal.processors.query.calcite.metadata.cost.IgniteCostFactory;
import org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils;
import org.apache.ignite.internal.processors.query.calcite.util.Commons;
-import org.jetbrains.annotations.Nullable;
import static org.apache.calcite.rel.RelCollations.EMPTY;
import static org.apache.calcite.rel.RelCollations.containsOrderless;
@@ -64,9 +63,6 @@
*/
private final RelCollation rightCollation;
- /** Mathing null conditions like 'IS NOT DISTINCT'. */
- private final ImmutableBitSet allowNulls;
-
/** */
public IgniteMergeJoin(
RelOptCluster cluster,
@@ -74,11 +70,10 @@
RelNode left,
RelNode right,
RexNode condition,
- @Nullable ImmutableBitSet allowNulls,
Set<CorrelationId> variablesSet,
JoinRelType joinType
) {
- this(cluster, traitSet, left, right, condition, allowNulls, variablesSet, joinType,
+ this(cluster, traitSet, left, right, condition, variablesSet, joinType,
left.getTraitSet().getCollation(), right.getTraitSet().getCollation());
}
@@ -90,7 +85,6 @@
input.getInputs().get(0),
input.getInputs().get(1),
input.getExpression("condition"),
- input.getBitSet("allowNulls"),
ImmutableSet.copyOf(Commons.transform(input.getIntegerList("variablesSet"), CorrelationId::new)),
input.getEnum("joinType", JoinRelType.class),
((RelInputEx)input).getCollation("leftCollation"),
@@ -105,7 +99,6 @@
RelNode left,
RelNode right,
RexNode condition,
- @Nullable ImmutableBitSet allowNulls,
Set<CorrelationId> variablesSet,
JoinRelType joinType,
RelCollation leftCollation,
@@ -115,13 +108,12 @@
this.leftCollation = leftCollation;
this.rightCollation = rightCollation;
- this.allowNulls = allowNulls == null ? ImmutableBitSet.of() : allowNulls;
}
/** {@inheritDoc} */
@Override public Join copy(RelTraitSet traitSet, RexNode condition, RelNode left, RelNode right,
JoinRelType joinType, boolean semiJoinDone) {
- return new IgniteMergeJoin(getCluster(), traitSet, left, right, condition, allowNulls, variablesSet, joinType,
+ return new IgniteMergeJoin(getCluster(), traitSet, left, right, condition, variablesSet, joinType,
left.getTraitSet().getCollation(), right.getTraitSet().getCollation());
}
@@ -132,7 +124,7 @@
/** {@inheritDoc} */
@Override public IgniteRel clone(RelOptCluster cluster, List<IgniteRel> inputs) {
- return new IgniteMergeJoin(cluster, getTraitSet(), inputs.get(0), inputs.get(1), getCondition(), allowNulls,
+ return new IgniteMergeJoin(cluster, getTraitSet(), inputs.get(0), inputs.get(1), getCondition(),
getVariablesSet(), getJoinType(), leftCollation, rightCollation);
}
@@ -277,8 +269,7 @@
@Override public RelWriter explainTerms(RelWriter pw) {
return super.explainTerms(pw)
.item("leftCollation", leftCollation)
- .item("rightCollation", rightCollation)
- .item("allowNulls", allowNulls);
+ .item("rightCollation", rightCollation);
}
/**
@@ -295,13 +286,6 @@
return rightCollation;
}
- /**
- * @return Matching null conditions.
- */
- public ImmutableBitSet allowNulls() {
- return allowNulls;
- }
-
/** Creates pair with default collation for parent and simple yet sufficient collation for children nodes. */
private Pair<RelTraitSet, List<RelTraitSet>> defaultCollationPair(
RelTraitSet nodeTraits,
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteRelVisitor.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteRelVisitor.java
index 0f68002..456b7b4 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteRelVisitor.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteRelVisitor.java
@@ -79,7 +79,6 @@
*/
T visit(IgniteIndexCount rel);
-
/**
* See {@link IgniteRelVisitor#visit(IgniteRel)}
*/
@@ -191,6 +190,11 @@
T visit(IgniteUncollect rel);
/**
+ * See {@link IgniteRelVisitor#visit(IgniteRel)}
+ */
+ T visit(IgniteWindow rel);
+
+ /**
* Visits a relational node and calculates a result on the basis of node meta information.
* @param rel Relational node.
* @return Visit result.
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteWindow.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteWindow.java
new file mode 100644
index 0000000..33c683c
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteWindow.java
@@ -0,0 +1,295 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.rel;
+
+import java.util.ArrayList;
+import java.util.List;
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptCost;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollations;
+import org.apache.calcite.rel.RelDistribution;
+import org.apache.calcite.rel.RelFieldCollation;
+import org.apache.calcite.rel.RelInput;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.RelWriter;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.util.ImmutableBitSet;
+import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.Util;
+import org.apache.ignite.internal.processors.query.calcite.externalize.RelInputEx;
+import org.apache.ignite.internal.processors.query.calcite.metadata.cost.IgniteCostFactory;
+import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistribution;
+import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistributions;
+import org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils;
+import org.apache.ignite.internal.util.collection.IntHashMap;
+import org.apache.ignite.internal.util.collection.IntMap;
+
+import static org.apache.ignite.internal.processors.query.calcite.metadata.cost.IgniteCost.AGG_CALL_MEM_COST;
+import static org.apache.ignite.internal.processors.query.calcite.metadata.cost.IgniteCost.AVERAGE_FIELD_SIZE;
+import static org.apache.ignite.internal.processors.query.calcite.metadata.cost.IgniteCost.ROW_COMPARISON_COST;
+import static org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils.changeTraits;
+
+/**
+ * A relational expression representing a set of window aggregates.
+ *
+ * <p>A Window can handle several window aggregate functions, over one
+ * partition, with pre- and post-expressions, and an optional post-filter.
+ * Partitions is defined by a partition key (zero or more columns)
+ * and a range (logical or physical). The partition expect the data to be
+ * sorted correctly on input to the relational expression.
+ *
+ * <p>Each {@link Window.Group} has a set of
+ * {@link org.apache.calcite.rex.RexOver} objects.
+ */
+public class IgniteWindow extends Window implements IgniteRel {
+ /** */
+ private final Group grp;
+
+ /** */
+ private final boolean streaming;
+
+ /** */
+ public IgniteWindow(
+ RelOptCluster cluster,
+ RelTraitSet traitSet,
+ RelNode input,
+ RelDataType rowType,
+ Group grp,
+ boolean streaming
+ ) {
+ super(cluster, traitSet, input, ImmutableList.of(), rowType, ImmutableList.of(grp));
+ this.grp = grp;
+ this.streaming = streaming;
+ assert !grp.aggCalls.isEmpty();
+ }
+
+ /** */
+ public IgniteWindow(RelInput input) {
+ // Streaming flag required only on planning phase, and has not affect on execution.
+ this(input.getCluster(),
+ changeTraits(input, IgniteConvention.INSTANCE).getTraitSet().plus(input.getCollation()),
+ input.getInput(),
+ input.getRowType("rowType"),
+ ((RelInputEx)input).getWindowGroup("group"),
+ false);
+ }
+
+ /** */
+ public Group getGroup() {
+ return grp;
+ }
+
+ /** */
+ public boolean isStreaming() {
+ return streaming;
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelNode copy(RelTraitSet traitSet, List<RelNode> inputs) {
+ return new IgniteWindow(getCluster(), traitSet, sole(inputs), getRowType(), grp, streaming);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Window copy(List<RexLiteral> constants) {
+ assert constants.isEmpty();
+ return this;
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T> T accept(IgniteRelVisitor<T> visitor) {
+ return visitor.visit(this);
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteRel clone(RelOptCluster cluster, List<IgniteRel> inputs) {
+ return new IgniteWindow(cluster, getTraitSet(), sole(inputs), getRowType(), grp, streaming);
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelWriter explainTerms(RelWriter pw) {
+ return pw
+ .input("input", getInput())
+ .item("rowType", getRowType())
+ .item("group", grp)
+ .item("collation", collation());
+ }
+
+ /** {@inheritDoc} */
+ @Override public Pair<RelTraitSet, List<RelTraitSet>> passThroughTraits(RelTraitSet required) {
+ if (required.getConvention() != IgniteConvention.INSTANCE)
+ return null;
+
+ if (!satisfiesDistribution(TraitUtils.distribution(required)))
+ return null;
+
+ RelCollation requiredCollation = TraitUtils.collation(required);
+ RelCollation relCollation = TraitUtils.collation(traitSet);
+ if (satisfiesCollationSansGroupFields(relCollation, requiredCollation))
+ required = required.replace(adjustGroupFieldsCollation(relCollation, requiredCollation));
+ else if (satisfiesCollationSansGroupFields(requiredCollation, relCollation))
+ required = required.replace(truncateCollation(requiredCollation));
+ else
+ return null;
+
+ return Pair.of(required, ImmutableList.of(required));
+ }
+
+ /** {@inheritDoc} */
+ @Override public Pair<RelTraitSet, List<RelTraitSet>> deriveTraits(RelTraitSet childTraits, int childId) {
+ assert childId == 0;
+
+ if (childTraits.getConvention() != IgniteConvention.INSTANCE)
+ return null;
+
+ RelCollation childCollation = TraitUtils.collation(childTraits);
+ RelCollation relCollation = TraitUtils.collation(traitSet);
+ if (satisfiesCollationSansGroupFields(relCollation, childCollation))
+ childTraits = childTraits.replace(adjustGroupFieldsCollation(relCollation, childCollation));
+ else if (!satisfiesCollationSansGroupFields(childCollation, relCollation))
+ return null;
+
+ // If a child node has the appropriate collation but not the required distribution
+ // (e.g., a randomly distributed table that has the index we need),
+ // we can use its collation to eliminate extra sorting.
+ // However, we must replace the distribution with current window one.
+ if (!satisfiesDistribution(TraitUtils.distribution(childTraits)))
+ childTraits = childTraits.replace(distribution());
+
+ return Pair.of(childTraits, ImmutableList.of(childTraits));
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelOptCost computeSelfCost(RelOptPlanner planner, RelMetadataQuery mq) {
+ IgniteCostFactory costFactory = (IgniteCostFactory)planner.getCostFactory();
+
+ int aggCnt = grp.aggCalls.size();
+
+ double rowCnt = mq.getRowCount(getInput());
+ double cpuCost = rowCnt * ROW_COMPARISON_COST;
+ double memCost = (getRowType().getFieldCount() * AVERAGE_FIELD_SIZE + aggCnt * AGG_CALL_MEM_COST) * (streaming ? 1.0 : rowCnt);
+
+ RelOptCost cost = costFactory.makeCost(rowCnt, cpuCost, 0, memCost, 0);
+
+ // Distributed processing is more preferable than processing on the single node.
+ if (TraitUtils.distribution(traitSet).satisfies(IgniteDistributions.single()))
+ cost = cost.plus(costFactory.makeTinyCost());
+
+ return cost;
+ }
+
+ /** Check input distribution satisfies distribution of this window. */
+ private boolean satisfiesDistribution(IgniteDistribution required) {
+ if (required.satisfies(IgniteDistributions.single()) || required.function().correlated())
+ return true;
+
+ if (required.getType() == RelDistribution.Type.HASH_DISTRIBUTED)
+ return grp.keys.contains(ImmutableBitSet.of(required.getKeys()));
+
+ return false;
+ }
+
+ /**
+ * Check left collation satisfies right one.
+ * - Collations field indicies of the right should be a prefix for left collation.
+ * - Group fields sort direction can be changed to desired collation.
+ * - Order fields sort direction should be the same as in desired collation.
+ */
+ private boolean satisfiesCollationSansGroupFields(RelCollation left, RelCollation right) {
+ if (left.satisfies(right))
+ return true;
+
+ int leftFldCnt = left.getFieldCollations().size();
+ int rightFldCnt = right.getFieldCollations().size();
+ if (leftFldCnt < rightFldCnt)
+ return false;
+
+ int grpKeysSize = grp.keys.cardinality();
+
+ assert (leftFldCnt >= grpKeysSize && grp.keys.equals(ImmutableBitSet.of(Util.first(left.getKeys(), grpKeysSize))))
+ || (rightFldCnt >= grpKeysSize && grp.keys.equals(ImmutableBitSet.of(Util.first(right.getKeys(), grpKeysSize))));
+
+ // Check group keys (collation field order and direction meaningless).
+ // Since window collation starts with group keys with 'default' sorting direction,
+ // desired collation should start with same fields in any order / with any direction.
+ int rightGrpFldsCnt = Math.min(grpKeysSize, rightFldCnt);
+ ImmutableBitSet leftGrpFlds = ImmutableBitSet.of(Util.first(left.getKeys(), grpKeysSize));
+ ImmutableBitSet rightGrpFlds = ImmutableBitSet.of(Util.first(right.getKeys(), rightGrpFldsCnt));
+ if (!leftGrpFlds.contains(rightGrpFlds))
+ return false;
+ else if (grpKeysSize >= rightFldCnt)
+ // Right collation fields in group keys only.
+ return true;
+
+ // Check remaining collation (collation field order and direction meaningfull).
+ List<RelFieldCollation> leftFldCollations = Util.skip(left.getFieldCollations(), grpKeysSize);
+ List<RelFieldCollation> rightFldCollations = Util.skip(right.getFieldCollations(), grpKeysSize);
+ return Util.startsWith(leftFldCollations, rightFldCollations);
+ }
+
+ /** */
+ private RelCollation adjustGroupFieldsCollation(RelCollation relCollation, RelCollation requiredCollation) {
+ // Current collation satisfies required collation, but group fields in prefix may have invalid field collation.
+ // So, we should replace it with field collation from required.
+ List<RelFieldCollation> fldCollations = new ArrayList<>(relCollation.getFieldCollations().size());
+
+ int grpFldCnt = grp.keys.cardinality();
+ IntMap<RelFieldCollation> currGrpFldCollations = new IntHashMap<>(grpFldCnt);
+ for (int i = 0; i < grpFldCnt; i++) {
+ RelFieldCollation grpFldCollation = relCollation.getFieldCollations().get(i);
+ currGrpFldCollations.put(grpFldCollation.getFieldIndex(), grpFldCollation);
+ }
+
+ int requiredGrpFldCnt = Math.min(requiredCollation.getFieldCollations().size(), grpFldCnt);
+ for (int i = 0; i < requiredGrpFldCnt; i++) {
+ RelFieldCollation requiredGrpFldCollation = requiredCollation.getFieldCollations().get(i);
+ fldCollations.add(requiredGrpFldCollation);
+
+ assert currGrpFldCollations.containsKey(requiredGrpFldCollation.getFieldIndex());
+ currGrpFldCollations.remove(requiredGrpFldCollation.getFieldIndex());
+ }
+
+ // Add remaining group fields collation.
+ fldCollations.addAll(currGrpFldCollations.values());
+
+ // Add remaining fields collation.
+ fldCollations.addAll(Util.skip(relCollation.getFieldCollations(), grpFldCnt));
+
+ return RelCollations.of(fldCollations);
+ }
+
+ /** */
+ private RelCollation truncateCollation(RelCollation requiredCollation) {
+ // In case of pass through, required collation can use fields outside of input row type.
+ // So, we should truncate required collation to input row type.
+ // We do not need any additional range checks, since current collation keys is a prefix to required collation keys.
+ // Therefore, only additional keys in suffix can be removed here.
+ List<RelFieldCollation> requiredCollationFields = requiredCollation.getFieldCollations();
+ for (int i = 0; i < requiredCollationFields.size(); i++) {
+ if (requiredCollationFields.get(i).getFieldIndex() >= input.getRowType().getFieldCount())
+ return RelCollations.of(requiredCollationFields.subList(0, i));
+ }
+ return requiredCollation;
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/HashJoinConverterRule.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/HashJoinConverterRule.java
index 1a3cc98..d7b7560 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/HashJoinConverterRule.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/HashJoinConverterRule.java
@@ -24,12 +24,12 @@
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.PhysicalNode;
import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.logical.LogicalJoin;
import org.apache.calcite.rel.metadata.RelMetadataQuery;
import org.apache.ignite.internal.processors.query.calcite.hint.HintDefinition;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteConvention;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteHashJoin;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteJoinInfo;
/** Hash join converter rule. */
public class HashJoinConverterRule extends AbstractIgniteJoinConverterRule {
@@ -45,7 +45,7 @@
@Override public boolean matchesJoin(RelOptRuleCall call) {
LogicalJoin join = call.rel(0);
- IgniteJoinInfo joinInfo = IgniteJoinInfo.of(join);
+ JoinInfo joinInfo = join.analyzeCondition();
return !joinInfo.pairs().isEmpty();
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/MergeJoinConverterRule.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/MergeJoinConverterRule.java
index 68feee9..4cfa4dc 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/MergeJoinConverterRule.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/MergeJoinConverterRule.java
@@ -25,11 +25,11 @@
import org.apache.calcite.rel.PhysicalNode;
import org.apache.calcite.rel.RelCollations;
import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.logical.LogicalJoin;
import org.apache.calcite.rel.metadata.RelMetadataQuery;
import org.apache.ignite.internal.processors.query.calcite.hint.HintDefinition;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteConvention;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteJoinInfo;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteMergeJoin;
import org.apache.ignite.internal.util.typedef.F;
@@ -51,7 +51,7 @@
@Override public boolean matchesJoin(RelOptRuleCall call) {
LogicalJoin logicalJoin = call.rel(0);
- IgniteJoinInfo info = IgniteJoinInfo.of(logicalJoin);
+ JoinInfo info = logicalJoin.analyzeCondition();
return info.isEqui() && !F.isEmpty(info.pairs());
}
@@ -60,7 +60,7 @@
@Override protected PhysicalNode convert(RelOptPlanner planner, RelMetadataQuery mq, LogicalJoin rel) {
RelOptCluster cluster = rel.getCluster();
- IgniteJoinInfo joinInfo = IgniteJoinInfo.of(rel);
+ JoinInfo joinInfo = rel.analyzeCondition();
assert joinInfo.isEqui() && !F.isEmpty(joinInfo.pairs());
@@ -73,7 +73,7 @@
RelNode left = convert(rel.getLeft(), leftInTraits);
RelNode right = convert(rel.getRight(), rightInTraits);
- return new IgniteMergeJoin(cluster, outTraits, left, right, rel.getCondition(), joinInfo.allowNulls(),
+ return new IgniteMergeJoin(cluster, outTraits, left, right, rel.getCondition(),
rel.getVariablesSet(), rel.getJoinType());
}
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/WindowConverterRule.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/WindowConverterRule.java
new file mode 100644
index 0000000..d550d98
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/WindowConverterRule.java
@@ -0,0 +1,146 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.rule;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.plan.RelOptCluster;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.plan.RelTraitSet;
+import org.apache.calcite.rel.PhysicalNode;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollations;
+import org.apache.calcite.rel.RelFieldCollation;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.logical.LogicalWindow;
+import org.apache.calcite.rel.metadata.RelMetadataQuery;
+import org.apache.calcite.rel.type.RelRecordType;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.util.ImmutableBitSet;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.window.WindowFunctions;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteConvention;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteWindow;
+import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistributions;
+import org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils;
+import org.apache.ignite.internal.util.typedef.internal.U;
+
+/** */
+public class WindowConverterRule extends AbstractIgniteConverterRule<LogicalWindow> {
+ /** */
+ public static final RelOptRule INSTANCE = new WindowConverterRule();
+
+ /** */
+ private WindowConverterRule() {
+ super(LogicalWindow.class, "WindowConverterRule");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected PhysicalNode convert(RelOptPlanner planner, RelMetadataQuery mq, LogicalWindow window) {
+ RelOptCluster cluster = window.getCluster();
+
+ RelNode result = window.getInput();
+
+ assert window.constants.isEmpty();
+
+ for (int grpIdx = 0; grpIdx < window.groups.size(); grpIdx++) {
+ Window.Group grp = window.groups.get(grpIdx);
+
+ RelCollation collation = mergeCollations(
+ TraitUtils.createCollation(grp.keys.asList()),
+ grp.collation()
+ );
+
+ RelTraitSet inTraits = cluster
+ .traitSetOf(IgniteConvention.INSTANCE)
+ .replace(IgniteDistributions.single())
+ .replace(collation);
+
+ RelTraitSet outTraits = cluster
+ .traitSetOf(IgniteConvention.INSTANCE)
+ .replace(IgniteDistributions.single())
+ .replace(collation);
+
+ result = convert(result, inTraits);
+
+ RelRecordType rowType = new RelRecordType(window.getRowType().getFieldList()
+ .subList(0, result.getRowType().getFieldCount() + grp.aggCalls.size()));
+
+ Window.Group newGrp = replaceAggCallOrdinal(grp);
+
+ result = new IgniteWindow(
+ window.getCluster(),
+ window.getTraitSet().merge(outTraits),
+ result,
+ rowType,
+ newGrp,
+ WindowFunctions.streamable(newGrp)
+ );
+ }
+
+ return (PhysicalNode)result;
+ }
+
+ /** Replaces origial agg call ordinal with sequential index within group. */
+ private static Window.Group replaceAggCallOrdinal(Window.Group grp) {
+ List<Window.RexWinAggCall> newAggCalls = new ArrayList<>(grp.aggCalls.size());
+ ImmutableList<Window.RexWinAggCall> calls = grp.aggCalls;
+ for (int i = 0; i < calls.size(); i++) {
+ Window.RexWinAggCall aggCall = calls.get(i);
+ Window.RexWinAggCall newCall = new Window.RexWinAggCall(
+ (SqlAggFunction)aggCall.op,
+ aggCall.type,
+ aggCall.operands,
+ i,
+ aggCall.distinct,
+ aggCall.ignoreNulls
+ );
+ newAggCalls.add(newCall);
+ }
+
+ return new Window.Group(
+ grp.keys,
+ grp.isRows,
+ grp.lowerBound,
+ grp.upperBound,
+ grp.exclude,
+ grp.orderKeys,
+ newAggCalls
+ );
+ }
+
+ /**
+ * Merges provided collation is sinle one.
+ *
+ * @param collation0 First collation
+ * @param collation1 Second collation
+ * @return New collation
+ */
+ public static RelCollation mergeCollations(RelCollation collation0, RelCollation collation1) {
+ ImmutableBitSet keys = ImmutableBitSet.of(collation0.getKeys());
+ List<RelFieldCollation> fields = U.arrayList(collation0.getFieldCollations());
+ for (RelFieldCollation it : collation1.getFieldCollations()) {
+ if (!keys.get(it.getFieldIndex()))
+ fields.add(it);
+ }
+ return RelCollations.of(fields);
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/WindowConstantsRule.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/WindowConstantsRule.java
new file mode 100644
index 0000000..72ceacf
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/logical/WindowConstantsRule.java
@@ -0,0 +1,297 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.rule.logical;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import com.google.common.collect.ImmutableList;
+import org.apache.calcite.plan.RelOptRuleCall;
+import org.apache.calcite.plan.RelRule;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Window.Group;
+import org.apache.calcite.rel.core.Window.RexWinAggCall;
+import org.apache.calcite.rel.logical.LogicalWindow;
+import org.apache.calcite.rel.rules.TransformationRule;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rel.type.RelDataTypeFactory;
+import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexShuttle;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.tools.RelBuilder;
+import org.apache.ignite.internal.processors.query.calcite.util.Commons;
+import org.apache.ignite.internal.util.collection.BitSetIntSet;
+import org.immutables.value.Value;
+
+/**
+ * A rule to process window rel with constants.
+ * If window has agg call, which uses constants, then split window to:
+ * - project with constants;
+ * - window without constants;
+ * - project removing constants.
+ * Overwise just replace input refs in window bounds with constant values,
+ */
+@Value.Enclosing
+public class WindowConstantsRule extends RelRule<WindowConstantsRule.Config> implements TransformationRule {
+ /** */
+ public static final WindowConstantsRule INSTANCE = new WindowConstantsRule(WindowConstantsRule.Config.DEFAULT);
+
+ /** */
+ private WindowConstantsRule(Config cfg) {
+ super(cfg);
+ }
+
+ /** */
+ @Override public void onMatch(RelOptRuleCall call) {
+ LogicalWindow window = call.rel(0);
+
+ assert !window.constants.isEmpty();
+
+ RelNode input = window.getInput();
+
+ int[] constRefs = collectConstantsFromAggCalls(window);
+ if (constRefs.length == 0) {
+ // Agg calls does not use constants, so only group bounds should be processed.
+ RelNode newWindow = buildWindowWithoutConstants(window, input, input, constRefs);
+ call.transformTo(newWindow);
+ }
+ else {
+ // Project constants, used in agg calls, replace agg call constant operands with new input refs,
+ // and remove constants from result.
+ RelNode projectWithConstants = buildProjectWithConstants(input, window.constants, constRefs);
+ RelNode newWindow = buildWindowWithoutConstants(window, input, projectWithConstants, constRefs);
+ RelNode projectWithoutConstants = buildProjectExcludeConstants(window, input, newWindow, constRefs);
+
+ assert window.getRowType().equalsSansFieldNames(projectWithoutConstants.getRowType());
+ call.transformTo(projectWithoutConstants);
+ }
+ }
+
+ /** Creates projection with window constants. */
+ private RelNode buildProjectWithConstants(RelNode input, List<RexLiteral> consts, int[] constRefs) {
+ int inputFldCnt = input.getRowType().getFieldCount();
+ RelBuilder relBldr = relBuilderFactory.create(input.getCluster(), null);
+ relBldr.push(input);
+ for (int idx : constRefs)
+ relBldr.projectPlus(consts.get(idx - inputFldCnt));
+ return relBldr.build();
+ }
+
+ /** Creates new window without constants. */
+ private RelNode buildWindowWithoutConstants(LogicalWindow window, RelNode input, RelNode newInput, int[] constRefs) {
+ int windowFldCnt = window.getRowType().getFieldCount();
+ int inputFldCnt = input.getRowType().getFieldCount();
+
+ List<RelDataTypeField> newInputFlds = newInput.getRowType().getFieldList();
+ List<RelDataTypeField> windowFlds = window.getRowType().getFieldList();
+
+ assert inputFldCnt <= newInputFlds.size();
+
+ RelDataTypeFactory typeFactory = window.getCluster().getTypeFactory();
+ RelDataTypeFactory.Builder builder = typeFactory.builder();
+
+ for (int i = 0; i < inputFldCnt; i++) {
+ // Add fields from original input, passed through window rel.
+ builder.add(windowFlds.get(i));
+ }
+ for (int i = inputFldCnt; i < newInputFlds.size(); i++) {
+ // Add constants from new input.
+ builder.add(newInputFlds.get(i));
+ }
+ for (int i = inputFldCnt; i < windowFlds.size(); i++) {
+ // Add fields, provided by window.
+ builder.add(windowFlds.get(i));
+ }
+
+ RelDataType type = builder.build();
+ assert type.getFieldCount() == newInputFlds.size() + (windowFldCnt - inputFldCnt);
+
+ RexShuttle constToInputRefTransform = new ConstantRefToInputRefTransformation(inputFldCnt, constRefs, newInputFlds);
+ RexShuttle constToValTransform = new ConstantRefToConstantValueTransformation(inputFldCnt, window.getConstants());
+
+ // Replace input refs to constants:
+ // - to new input ref in rex agg call;
+ // - to actual constant value in group bounds, thus it lets reuse calculated frame bound for the same peer.
+ // Also replaces origial agg call ordinal with sequential index within group.
+ ImmutableList.Builder<Group> newGrps = ImmutableList.builder();
+ for (Group grp : window.groups) {
+ Group newGrp = new Group(
+ grp.keys,
+ grp.isRows,
+ grp.lowerBound.accept(constToValTransform),
+ grp.upperBound.accept(constToValTransform),
+ grp.exclude,
+ grp.orderKeys,
+ traverseAggregateCalls(grp.aggCalls, constToInputRefTransform)
+ );
+ newGrps.add(newGrp);
+ }
+
+ // Agg calls in the original window allready reference fields by index,
+ // do not need to remap it.
+ return LogicalWindow.create(window.getTraitSet(), newInput, ImmutableList.of(), type, newGrps.build());
+ }
+
+ /** Creates projection without window constants. */
+ private RelNode buildProjectExcludeConstants(LogicalWindow window, RelNode input, RelNode newWindow, int[] constRefs) {
+ int inputFldCnt = input.getRowType().getFieldCount();
+ int windowFldCnt = window.getRowType().getFieldCount();
+ int constantCnt = constRefs.length;
+
+ RexBuilder rexBuilder = window.getCluster().getRexBuilder();
+ List<RexNode> projects = new ArrayList<>(windowFldCnt);
+ for (int i = 0; i < inputFldCnt; i++)
+ projects.add(rexBuilder.makeInputRef(newWindow, i));
+ for (int i = inputFldCnt; i < windowFldCnt; i++)
+ projects.add(rexBuilder.makeInputRef(newWindow, i + constantCnt));
+
+ RelBuilder relBldr = relBuilderFactory.create(newWindow.getCluster(), null);
+ relBldr.push(newWindow);
+ relBldr.project(projects);
+ return relBldr.build();
+ }
+
+ /** Collects constants, used in aggregates call. Result is sorted array of used constants indicies. */
+ private int[] collectConstantsFromAggCalls(LogicalWindow window) {
+ int inputFldCnt = window.getInput().getRowType().getFieldCount();
+ int constantCnt = window.constants.size();
+
+ ConstantRefCollector collector = new ConstantRefCollector(inputFldCnt, constantCnt);
+ window.groups.forEach(grp ->
+ grp.aggCalls.forEach(aggCall ->
+ aggCall.accept(collector)));
+
+ // BitSetIntSet returns sorted array of contained values due to nature of bit set.
+ return collector.used.toIntArray();
+ }
+
+ /** Replaces {@link RexWinAggCall} operands constant using provided transformation. */
+ private ImmutableList<RexWinAggCall> traverseAggregateCalls(List<RexWinAggCall> aggCalls, RexShuttle visitor) {
+ ImmutableList.Builder<RexWinAggCall> builder = ImmutableList.builderWithExpectedSize(aggCalls.size());
+ for (RexWinAggCall call : aggCalls) {
+ List<RexNode> newOperands = Commons.transform(call.getOperands(), arg -> arg.accept(visitor));
+ RexWinAggCall newCall = new RexWinAggCall(
+ (SqlAggFunction)call.getOperator(),
+ call.getType(),
+ newOperands,
+ call.ordinal,
+ call.distinct,
+ call.ignoreNulls
+ );
+ builder.add(newCall);
+ }
+
+ return builder.build();
+ }
+
+ /** Collects constants, used in visited {@link RexNode}. */
+ private static final class ConstantRefCollector extends RexShuttle {
+ /** */
+ private final int inputFldCnt;
+
+ /** */
+ private final BitSetIntSet used;
+
+ /** */
+ ConstantRefCollector(int inputFldCnt, int constantCnt) {
+ this.inputFldCnt = inputFldCnt;
+ used = new BitSetIntSet(constantCnt);
+ }
+
+ /** {@inheritDoc} */
+ @Override public RexNode visitInputRef(RexInputRef inputRef) {
+ int idx = inputRef.getIndex();
+ if (idx >= inputFldCnt)
+ used.add(idx);
+ return super.visitInputRef(inputRef);
+ }
+ }
+
+ /** Replaces constant references to new input fields references. */
+ private static final class ConstantRefToInputRefTransformation extends RexShuttle {
+ /** */
+ private final int inputFldCnt;
+
+ /** */
+ private final int[] constRefs;
+
+ /** */
+ private final List<RelDataTypeField> newInputFlds;
+
+ /** */
+ ConstantRefToInputRefTransformation(int inputFldCnt, int[] constRefs, List<RelDataTypeField> newInputFlds) {
+ this.inputFldCnt = inputFldCnt;
+ this.constRefs = constRefs;
+ this.newInputFlds = newInputFlds;
+ }
+
+ /** {@inheritDoc} */
+ @Override public RexNode visitInputRef(RexInputRef inputRef) {
+ int idx = inputRef.getIndex();
+ if (idx >= inputFldCnt) {
+ int refIdx = Arrays.binarySearch(constRefs, idx) + inputFldCnt;
+ assert refIdx >= 0 && refIdx < newInputFlds.size();
+ return RexInputRef.of(refIdx, newInputFlds);
+ }
+
+ return super.visitInputRef(inputRef);
+ }
+ }
+
+ /** Replaces constant references to actual const value. */
+ private static final class ConstantRefToConstantValueTransformation extends RexShuttle {
+ /** */
+ private final int inputFldCnt;
+
+ /** */
+ private final List<RexLiteral> consts;
+
+ /** */
+ ConstantRefToConstantValueTransformation(int inputFldCnt, List<RexLiteral> consts) {
+ this.inputFldCnt = inputFldCnt;
+ this.consts = consts;
+ }
+
+ /** {@inheritDoc} */
+ @Override public RexNode visitInputRef(RexInputRef inputRef) {
+ int idx = inputRef.getIndex();
+ if (idx >= inputFldCnt)
+ return consts.get(idx - inputFldCnt);
+ return super.visitInputRef(inputRef);
+ }
+ }
+
+ /** Rule configuration. */
+ @Value.Immutable
+ public interface Config extends RelRule.Config {
+ /** */
+ WindowConstantsRule.Config DEFAULT = ImmutableWindowConstantsRule.Config.of()
+ .withOperandSupplier(b -> b.operand(LogicalWindow.class)
+ .predicate(it -> !it.constants.isEmpty())
+ .anyInputs());
+
+ /** {@inheritDoc} */
+ @Override default WindowConstantsRule toRule() {
+ return INSTANCE;
+ }
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteOwnSqlOperatorTable.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteOwnSqlOperatorTable.java
index b0a43ab..d5a7dd4 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteOwnSqlOperatorTable.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteOwnSqlOperatorTable.java
@@ -16,6 +16,7 @@
*/
package org.apache.ignite.internal.processors.query.calcite.sql.fun;
+import org.apache.calcite.sql.SqlAggFunction;
import org.apache.calcite.sql.SqlFunction;
import org.apache.calcite.sql.SqlFunctionCategory;
import org.apache.calcite.sql.SqlKind;
@@ -155,6 +156,12 @@
OperandTypes.family(SqlTypeFamily.INTEGER, SqlTypeFamily.INTEGER),
SqlFunctionCategory.NUMERIC);
+ /** Lead window funtion */
+ public static final SqlAggFunction LEAD = new SqlLeadLagFunction(SqlKind.LEAD);
+
+ /** Lag window funtion */
+ public static final SqlAggFunction LAG = new SqlLeadLagFunction(SqlKind.LAG);
+
/**
* Returns the Ignite operator table, creating it if necessary.
*/
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteStdSqlOperatorTable.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteStdSqlOperatorTable.java
index a49e4a1..b573a01 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteStdSqlOperatorTable.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/IgniteStdSqlOperatorTable.java
@@ -75,6 +75,14 @@
register(SqlStdOperatorTable.UNARY_MINUS);
register(SqlStdOperatorTable.UNARY_PLUS);
+ // Checked arithmetic
+ register(SqlStdOperatorTable.CHECKED_PLUS);
+ register(SqlStdOperatorTable.CHECKED_MINUS);
+ register(SqlStdOperatorTable.CHECKED_MULTIPLY);
+ register(SqlStdOperatorTable.CHECKED_DIVIDE);
+ register(SqlStdOperatorTable.CHECKED_DIVIDE_INTEGER);
+ register(SqlStdOperatorTable.CHECKED_UNARY_MINUS);
+
// Aggregates.
register(SqlStdOperatorTable.COUNT);
register(SqlStdOperatorTable.SUM);
@@ -321,5 +329,16 @@
register(SqlStdOperatorTable.BIT_AND);
register(SqlStdOperatorTable.BIT_OR);
register(SqlStdOperatorTable.BIT_XOR);
+
+ // Window specific operations
+ register(SqlStdOperatorTable.ROW_NUMBER);
+ register(SqlStdOperatorTable.DENSE_RANK);
+ register(SqlStdOperatorTable.RANK);
+ register(SqlStdOperatorTable.PERCENT_RANK);
+ register(SqlStdOperatorTable.CUME_DIST);
+ register(SqlStdOperatorTable.FIRST_VALUE);
+ register(SqlStdOperatorTable.LAST_VALUE);
+ register(SqlStdOperatorTable.NTILE);
+ register(SqlStdOperatorTable.NTH_VALUE);
}
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/SqlLeadLagFunction.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/SqlLeadLagFunction.java
new file mode 100644
index 0000000..d1a99e2
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/fun/SqlLeadLagFunction.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.internal.processors.query.calcite.sql.fun;
+
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.sql.SqlKind;
+import org.apache.calcite.sql.SqlOperatorBinding;
+import org.apache.calcite.sql.fun.SqlLeadLagAggFunction;
+import org.apache.calcite.sql.type.SqlTypeTransforms;
+
+/** {@link SqlLeadLagAggFunction}, with enforced return type nullability. */
+public class SqlLeadLagFunction extends SqlLeadLagAggFunction {
+ /** */
+ SqlLeadLagFunction(SqlKind kind) {
+ super(kind);
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType inferReturnType(SqlOperatorBinding opBinding) {
+ return SqlTypeTransforms.FORCE_NULLABLE.transformType(opBinding, super.inferReturnType(opBinding));
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImpl.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImpl.java
index 05d733e..43055c6 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImpl.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImpl.java
@@ -69,7 +69,10 @@
import org.apache.calcite.sql.SqlRowTypeNameSpec;
import org.apache.calcite.sql.SqlSampleSpec;
import org.apache.calcite.sql.SqlSelect;
+import org.apache.calcite.sql.SqlByRewriter;
import org.apache.calcite.sql.SqlSelectKeyword;
+import org.apache.calcite.sql.SqlStarExclude;
+import org.apache.calcite.sql.SqlStarReplace;
import org.apache.calcite.sql.SqlSetOption;
import org.apache.calcite.sql.SqlSnapshot;
import org.apache.calcite.sql.SqlTableRef;
@@ -146,6 +149,20 @@
private Casing quotedCasing;
private int identifierMaxLength;
private SqlConformance conformance;
+ private int rowValueStarCount;
+
+ private void pushRowValueStar() {
+ rowValueStarCount++;
+ }
+
+ private void popRowValueStar() {
+ assert rowValueStarCount > 0;
+ rowValueStarCount--;
+ }
+
+ private boolean allowRowValueStar() {
+ return rowValueStarCount > 0;
+ }
/**
* {@link SqlParserImplFactory} implementation for creating parser.
@@ -633,6 +650,12 @@
;
}
if (orderBy != null || offsetFetch[0] != null || offsetFetch[1] != null) {
+ if (orderBy != null
+ && e instanceof SqlSelect
+ && ((SqlSelect) e).hasByClause()) {
+ {if (true) throw SqlUtil.newContextException(orderBy.getParserPosition(),
+ RESOURCE.selectByCannotWithOrderBy());}
+ }
{if (true) return new SqlOrderBy(getPos(), e,
Util.first(orderBy, SqlNodeList.EMPTY),
offsetFetch[0], offsetFetch[1]);}
@@ -2060,18 +2083,25 @@
throw new ParseException();
}
jj_consume_token(EQ);
- value = StringLiteral();
- list.add(key);
- list.add(value);
+ if (jj_2_151(2)) {
+ value = StringLiteral();
+ } else if (jj_2_152(2)) {
+ value = SimpleIdentifier();
+ } else {
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ list.add(key);
+ list.add(value);
}
/** Parses an option value (either a string or a numeric) and adds to a list. */
final public void AddOptionValue(List<SqlNode> list) throws ParseException {
final SqlNode value;
- if (jj_2_151(2)) {
+ if (jj_2_153(2)) {
value = NumericLiteral();
list.add(value);
- } else if (jj_2_152(2)) {
+ } else if (jj_2_154(2)) {
value = StringLiteral();
list.add(value);
} else {
@@ -2091,7 +2121,7 @@
AddOptionValue(list);
label_15:
while (true) {
- if (jj_2_153(2)) {
+ if (jj_2_155(2)) {
;
} else {
break label_15;
@@ -2105,21 +2135,23 @@
}
final public void AddHint(List<SqlNode> hints) throws ParseException {
+ final Span s;
final SqlIdentifier hintName;
final SqlNodeList hintOptions;
final SqlHint.HintOptionFormat optionFormat;
+ s = span();
hintName = SimpleIdentifier();
- if (jj_2_155(5)) {
+ if (jj_2_157(5)) {
hintOptions = ParenthesizedKeyValueOptionCommaList();
optionFormat = SqlHint.HintOptionFormat.KV_LIST;
- } else if (jj_2_156(3)) {
+ } else if (jj_2_158(3)) {
hintOptions = ParenthesizedSimpleIdentifierList();
optionFormat = SqlHint.HintOptionFormat.ID_LIST;
- } else if (jj_2_157(3)) {
+ } else if (jj_2_159(3)) {
hintOptions = ParenthesizedLiteralOptionCommaList();
optionFormat = SqlHint.HintOptionFormat.LITERAL_LIST;
} else {
- if (jj_2_154(2)) {
+ if (jj_2_156(2)) {
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
} else {
@@ -2129,7 +2161,7 @@
optionFormat = SqlHint.HintOptionFormat.EMPTY;
}
hints.add(
- new SqlHint(Span.of(hintOptions).end(this), hintName, hintOptions,
+ new SqlHint(s.end(this), hintName, hintOptions,
optionFormat));
}
@@ -2141,7 +2173,7 @@
AddHint(hints);
label_16:
while (true) {
- if (jj_2_158(2)) {
+ if (jj_2_160(2)) {
;
} else {
break label_16;
@@ -2170,16 +2202,17 @@
final SqlNode having;
final SqlNodeList windowDecls;
final SqlNode qualify;
+ final SqlNodeList by;
final List<SqlNode> hints = new ArrayList<SqlNode>();
final Span s;
jj_consume_token(SELECT);
s = span();
- if (jj_2_160(2)) {
+ if (jj_2_162(2)) {
jj_consume_token(HINT_BEG);
AddHint(hints);
label_17:
while (true) {
- if (jj_2_159(2)) {
+ if (jj_2_161(2)) {
;
} else {
break label_17;
@@ -2192,13 +2225,13 @@
;
}
SqlSelectKeywords(keywords);
- if (jj_2_161(2)) {
+ if (jj_2_163(2)) {
jj_consume_token(STREAM);
keywords.add(SqlSelectKeyword.STREAM.symbol(getPos()));
} else {
;
}
- if (jj_2_162(2)) {
+ if (jj_2_164(2)) {
keyword = AllOrDistinct();
keywords.add(keyword);
} else {
@@ -2208,7 +2241,7 @@
AddSelectItem(selectList);
label_18:
while (true) {
- if (jj_2_163(2)) {
+ if (jj_2_165(2)) {
;
} else {
break label_18;
@@ -2216,30 +2249,31 @@
jj_consume_token(COMMA);
AddSelectItem(selectList);
}
- if (jj_2_169(2)) {
+ by = null;
+ if (jj_2_171(2)) {
jj_consume_token(FROM);
fromClause = FromClause();
- if (jj_2_164(2)) {
+ if (jj_2_166(2)) {
where = Where();
} else {
where = null;
}
- if (jj_2_165(2)) {
+ if (jj_2_167(2)) {
groupBy = GroupBy();
} else {
groupBy = null;
}
- if (jj_2_166(2)) {
+ if (jj_2_168(2)) {
having = Having();
} else {
having = null;
}
- if (jj_2_167(2)) {
+ if (jj_2_169(2)) {
windowDecls = Window();
} else {
windowDecls = null;
}
- if (jj_2_168(2)) {
+ if (jj_2_170(2)) {
qualify = Qualify();
} else {
qualify = null;
@@ -2253,10 +2287,12 @@
windowDecls = null;
qualify = null;
}
- {if (true) return new SqlSelect(s.end(this), keywordList,
+ final SqlSelect select = new SqlSelect(s.end(this), keywordList,
new SqlNodeList(selectList, Span.of(selectList).pos()),
fromClause, where, groupBy, having, windowDecls, qualify,
- null, null, null, new SqlNodeList(hints, getPos()));}
+ null, null, null, new SqlNodeList(hints, getPos()));
+ SqlByRewriter.rewrite(select, by);
+ {if (true) return select;}
throw new Error("Missing return statement in function");
}
@@ -2278,21 +2314,21 @@
final SqlExplainFormat format;
jj_consume_token(EXPLAIN);
jj_consume_token(PLAN);
- if (jj_2_170(2)) {
+ if (jj_2_172(2)) {
detailLevel = ExplainDetailLevel();
} else {
;
}
depth = ExplainDepth();
- if (jj_2_171(2)) {
+ if (jj_2_173(2)) {
jj_consume_token(AS);
jj_consume_token(XML);
format = SqlExplainFormat.XML;
- } else if (jj_2_172(2)) {
+ } else if (jj_2_174(2)) {
jj_consume_token(AS);
jj_consume_token(JSON);
format = SqlExplainFormat.JSON;
- } else if (jj_2_173(2)) {
+ } else if (jj_2_175(2)) {
jj_consume_token(AS);
jj_consume_token(DOT_FORMAT);
format = SqlExplainFormat.DOT;
@@ -2314,15 +2350,15 @@
* or DML statement (INSERT, UPDATE, DELETE, MERGE). */
final public SqlNode SqlQueryOrDml() throws ParseException {
SqlNode stmt;
- if (jj_2_174(2)) {
+ if (jj_2_176(2)) {
stmt = OrderedQueryOrExpr(ExprContext.ACCEPT_QUERY);
- } else if (jj_2_175(2)) {
- stmt = SqlInsert();
- } else if (jj_2_176(2)) {
- stmt = SqlDelete();
} else if (jj_2_177(2)) {
- stmt = SqlUpdate();
+ stmt = SqlInsert();
} else if (jj_2_178(2)) {
+ stmt = SqlDelete();
+ } else if (jj_2_179(2)) {
+ stmt = SqlUpdate();
+ } else if (jj_2_180(2)) {
stmt = SqlMerge();
} else {
jj_consume_token(-1);
@@ -2337,15 +2373,15 @@
* EXPLAIN PLAN.
*/
final public SqlExplain.Depth ExplainDepth() throws ParseException {
- if (jj_2_179(2)) {
+ if (jj_2_181(2)) {
jj_consume_token(WITH);
jj_consume_token(TYPE);
{if (true) return SqlExplain.Depth.TYPE;}
- } else if (jj_2_180(2)) {
+ } else if (jj_2_182(2)) {
jj_consume_token(WITH);
jj_consume_token(IMPLEMENTATION);
{if (true) return SqlExplain.Depth.PHYSICAL;}
- } else if (jj_2_181(2)) {
+ } else if (jj_2_183(2)) {
jj_consume_token(WITHOUT);
jj_consume_token(IMPLEMENTATION);
{if (true) return SqlExplain.Depth.LOGICAL;}
@@ -2360,13 +2396,13 @@
*/
final public SqlExplainLevel ExplainDetailLevel() throws ParseException {
SqlExplainLevel level = SqlExplainLevel.EXPPLAN_ATTRIBUTES;
- if (jj_2_183(2)) {
+ if (jj_2_185(2)) {
jj_consume_token(EXCLUDING);
jj_consume_token(ATTRIBUTES);
level = SqlExplainLevel.NO_ATTRIBUTES;
- } else if (jj_2_184(2)) {
+ } else if (jj_2_186(2)) {
jj_consume_token(INCLUDING);
- if (jj_2_182(2)) {
+ if (jj_2_184(2)) {
jj_consume_token(ALL);
level = SqlExplainLevel.ALL_ATTRIBUTES;
} else {
@@ -2393,12 +2429,12 @@
final SqlNode stmt;
jj_consume_token(DESCRIBE);
s = span();
- if (jj_2_190(2)) {
- if (jj_2_185(2)) {
+ if (jj_2_192(2)) {
+ if (jj_2_187(2)) {
jj_consume_token(DATABASE);
- } else if (jj_2_186(2)) {
+ } else if (jj_2_188(2)) {
jj_consume_token(CATALOG);
- } else if (jj_2_187(2)) {
+ } else if (jj_2_189(2)) {
jj_consume_token(SCHEMA);
} else {
jj_consume_token(-1);
@@ -2409,21 +2445,21 @@
// DESCRIBE SCHEMA but should be different. See
// [CALCITE-1221] Implement DESCRIBE DATABASE, CATALOG, STATEMENT
{if (true) return new SqlDescribeSchema(s.end(id), id);}
- } else if (jj_2_191(2147483647)) {
- if (jj_2_188(2)) {
+ } else if (jj_2_193(2147483647)) {
+ if (jj_2_190(2)) {
jj_consume_token(TABLE);
} else {
;
}
table = CompoundIdentifier();
- if (jj_2_189(2)) {
+ if (jj_2_191(2)) {
column = SimpleIdentifier();
} else {
column = null;
}
{if (true) return new SqlDescribeTable(s.add(table).addIf(column).pos(),
table, column);}
- } else if (jj_2_192(2)) {
+ } else if (jj_2_194(2)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case STATEMENT:
jj_consume_token(STATEMENT);
@@ -2474,11 +2510,11 @@
name = CompoundIdentifier();
s = span();
jj_consume_token(LPAREN);
- if (jj_2_194(2)) {
+ if (jj_2_196(2)) {
AddArg0(list, exprContext);
label_19:
while (true) {
- if (jj_2_193(2)) {
+ if (jj_2_195(2)) {
;
} else {
break label_19;
@@ -2507,14 +2543,14 @@
SqlNode tableRef;
s = span();
tableRef = ExplicitTable(getPos());
- if (jj_2_195(2)) {
+ if (jj_2_197(2)) {
jj_consume_token(PARTITION);
jj_consume_token(BY);
partitionList = SimpleIdentifierOrList();
} else {
partitionList = SqlNodeList.EMPTY;
}
- if (jj_2_196(2)) {
+ if (jj_2_198(2)) {
orderList = OrderByOfSetSemanticsTable();
} else {
orderList = SqlNodeList.EMPTY;
@@ -2536,14 +2572,14 @@
final SqlNodeList partitionList;
final SqlNodeList orderList;
s = span();
- if (jj_2_197(2)) {
+ if (jj_2_199(2)) {
jj_consume_token(PARTITION);
jj_consume_token(BY);
partitionList = SimpleIdentifierOrList();
} else {
partitionList = SqlNodeList.EMPTY;
}
- if (jj_2_198(2)) {
+ if (jj_2_200(2)) {
orderList = OrderByOfSetSemanticsTable();
} else {
orderList = SqlNodeList.EMPTY;
@@ -2558,12 +2594,12 @@
jj_consume_token(ORDER);
s = span();
jj_consume_token(BY);
- if (jj_2_200(2)) {
+ if (jj_2_202(2)) {
jj_consume_token(LPAREN);
AddOrderItem(list);
label_20:
while (true) {
- if (jj_2_199(2)) {
+ if (jj_2_201(2)) {
;
} else {
break label_20;
@@ -2573,7 +2609,7 @@
}
jj_consume_token(RPAREN);
{if (true) return new SqlNodeList(list, s.addAll(list).pos());}
- } else if (jj_2_201(2)) {
+ } else if (jj_2_203(2)) {
AddOrderItem(list);
{if (true) return new SqlNodeList(list, s.addAll(list).pos());}
} else {
@@ -2608,9 +2644,9 @@
final SqlNodeList columnList;
final Span s;
final Pair<SqlNodeList, SqlNodeList> p;
- if (jj_2_202(2)) {
+ if (jj_2_204(2)) {
jj_consume_token(INSERT);
- } else if (jj_2_203(2)) {
+ } else if (jj_2_205(2)) {
jj_consume_token(UPSERT);
keywords.add(SqlInsertKeyword.UPSERT.symbol(getPos()));
} else {
@@ -2622,17 +2658,17 @@
keywordList = new SqlNodeList(keywords, s.addAll(keywords).pos());
jj_consume_token(INTO);
tableName = CompoundTableIdentifier();
- if (jj_2_204(2)) {
+ if (jj_2_206(2)) {
tableRef = TableHints(tableName);
} else {
tableRef = tableName;
}
- if (jj_2_205(5)) {
+ if (jj_2_207(5)) {
tableRef = ExtendTable(tableRef);
} else {
;
}
- if (jj_2_206(2)) {
+ if (jj_2_208(2)) {
p = ParenthesizedCompoundIdentifierList();
if (!p.right.isEmpty()) {
tableRef = extend(tableRef, p.right);
@@ -2672,18 +2708,18 @@
s = span();
jj_consume_token(FROM);
tableName = CompoundTableIdentifier();
- if (jj_2_207(2)) {
+ if (jj_2_209(2)) {
tableRef = TableHints(tableName);
} else {
tableRef = tableName;
}
- if (jj_2_208(2)) {
+ if (jj_2_210(2)) {
tableRef = ExtendTable(tableRef);
} else {
;
}
- if (jj_2_210(2)) {
- if (jj_2_209(2)) {
+ if (jj_2_212(2)) {
+ if (jj_2_211(2)) {
jj_consume_token(AS);
} else {
;
@@ -2692,7 +2728,7 @@
} else {
alias = null;
}
- if (jj_2_211(2)) {
+ if (jj_2_213(2)) {
where = Where();
} else {
where = null;
@@ -2719,18 +2755,18 @@
targetColumnList = new SqlNodeList(s.pos());
sourceExpressionList = new SqlNodeList(s.pos());
tableName = CompoundTableIdentifier();
- if (jj_2_212(2)) {
+ if (jj_2_214(2)) {
tableRef = TableHints(tableName);
} else {
tableRef = tableName;
}
- if (jj_2_213(2)) {
+ if (jj_2_215(2)) {
tableRef = ExtendTable(tableRef);
} else {
;
}
- if (jj_2_215(2)) {
- if (jj_2_214(2)) {
+ if (jj_2_217(2)) {
+ if (jj_2_216(2)) {
jj_consume_token(AS);
} else {
;
@@ -2746,7 +2782,7 @@
AddExpression(sourceExpressionList, ExprContext.ACCEPT_SUB_QUERY);
label_21:
while (true) {
- if (jj_2_216(2)) {
+ if (jj_2_218(2)) {
;
} else {
break label_21;
@@ -2757,7 +2793,7 @@
jj_consume_token(EQ);
AddExpression(sourceExpressionList, ExprContext.ACCEPT_SUB_QUERY);
}
- if (jj_2_217(2)) {
+ if (jj_2_219(2)) {
where = Where();
} else {
where = null;
@@ -2785,18 +2821,18 @@
s = span();
jj_consume_token(INTO);
tableName = CompoundTableIdentifier();
- if (jj_2_218(2)) {
+ if (jj_2_220(2)) {
tableRef = TableHints(tableName);
} else {
tableRef = tableName;
}
- if (jj_2_219(2)) {
+ if (jj_2_221(2)) {
tableRef = ExtendTable(tableRef);
} else {
;
}
- if (jj_2_221(2)) {
- if (jj_2_220(2)) {
+ if (jj_2_223(2)) {
+ if (jj_2_222(2)) {
jj_consume_token(AS);
} else {
;
@@ -2809,14 +2845,14 @@
sourceTableRef = TableRef();
jj_consume_token(ON);
condition = Expression(ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_223(2)) {
+ if (jj_2_225(2)) {
updateCall = WhenMatchedClause(tableRef, alias);
- if (jj_2_222(2)) {
+ if (jj_2_224(2)) {
insertCall = WhenNotMatchedClause(tableRef);
} else {
insertCall = null;
}
- } else if (jj_2_224(2)) {
+ } else if (jj_2_226(2)) {
updateCall = null;
insertCall = WhenNotMatchedClause(tableRef);
} else {
@@ -2846,7 +2882,7 @@
AddExpression(updateExprList, ExprContext.ACCEPT_SUB_QUERY);
label_22:
while (true) {
- if (jj_2_225(2)) {
+ if (jj_2_227(2)) {
;
} else {
break label_22;
@@ -2877,18 +2913,18 @@
insertSpan = span();
SqlInsertKeywords(keywords);
keywordList = new SqlNodeList(keywords, insertSpan.end(this));
- if (jj_2_226(2)) {
+ if (jj_2_228(2)) {
insertColumnList = ParenthesizedSimpleIdentifierList();
} else {
insertColumnList = null;
}
- if (jj_2_227(2)) {
+ if (jj_2_229(2)) {
jj_consume_token(LPAREN);
jj_consume_token(VALUES);
valuesSpan = span();
rowConstructor = RowConstructor();
jj_consume_token(RPAREN);
- } else if (jj_2_228(2)) {
+ } else if (jj_2_230(2)) {
jj_consume_token(VALUES);
valuesSpan = span();
rowConstructor = RowConstructor();
@@ -2913,10 +2949,10 @@
SqlNode e;
final SqlIdentifier id;
e = SelectExpression();
- if (jj_2_232(2)) {
- if (jj_2_230(2)) {
+ if (jj_2_234(2)) {
+ if (jj_2_232(2)) {
jj_consume_token(AS);
- if (jj_2_229(2)) {
+ if (jj_2_231(2)) {
jj_consume_token(MEASURE);
e = SqlInternalOperators.MEASURE.createCall(
e.getParserPosition(), e);
@@ -2926,7 +2962,7 @@
} else {
;
}
- if (jj_2_231(2)) {
+ if (jj_2_233(2)) {
id = SimpleIdentifier();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -2950,10 +2986,10 @@
*/
final public SqlNode SelectExpression() throws ParseException {
SqlNode e;
- if (jj_2_233(2)) {
+ if (jj_2_235(2)) {
jj_consume_token(STAR);
{if (true) return SqlIdentifier.star(getPos());}
- } else if (jj_2_234(2)) {
+ } else if (jj_2_236(2)) {
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
{if (true) return e;}
} else {
@@ -2964,7 +3000,7 @@
}
final public SqlLiteral Natural() throws ParseException {
- if (jj_2_235(2)) {
+ if (jj_2_237(2)) {
jj_consume_token(NATURAL);
{if (true) return SqlLiteral.createBoolean(true, getPos());}
} else {
@@ -2976,23 +3012,23 @@
final public SqlLiteral JoinType() throws ParseException {
JoinType joinType;
boolean asof = false;
- if (jj_2_241(2)) {
+ if (jj_2_243(2)) {
jj_consume_token(JOIN);
joinType = JoinType.INNER;
- } else if (jj_2_242(2)) {
+ } else if (jj_2_244(2)) {
jj_consume_token(INNER);
jj_consume_token(JOIN);
joinType = JoinType.INNER;
- } else if (jj_2_243(2)) {
+ } else if (jj_2_245(2)) {
jj_consume_token(ASOF);
jj_consume_token(JOIN);
joinType = JoinType.ASOF;
- } else if (jj_2_244(2)) {
+ } else if (jj_2_246(2)) {
jj_consume_token(LEFT);
- if (jj_2_238(2)) {
- if (jj_2_236(2)) {
+ if (jj_2_240(2)) {
+ if (jj_2_238(2)) {
jj_consume_token(OUTER);
- } else if (jj_2_237(2)) {
+ } else if (jj_2_239(2)) {
jj_consume_token(ASOF);
asof = true;
} else {
@@ -3004,25 +3040,25 @@
}
jj_consume_token(JOIN);
joinType = asof ? JoinType.LEFT_ASOF : JoinType.LEFT;
- } else if (jj_2_245(2)) {
+ } else if (jj_2_247(2)) {
jj_consume_token(RIGHT);
- if (jj_2_239(2)) {
+ if (jj_2_241(2)) {
jj_consume_token(OUTER);
} else {
;
}
jj_consume_token(JOIN);
joinType = JoinType.RIGHT;
- } else if (jj_2_246(2)) {
+ } else if (jj_2_248(2)) {
jj_consume_token(FULL);
- if (jj_2_240(2)) {
+ if (jj_2_242(2)) {
jj_consume_token(OUTER);
} else {
;
}
jj_consume_token(JOIN);
joinType = JoinType.FULL;
- } else if (jj_2_247(2)) {
+ } else if (jj_2_249(2)) {
jj_consume_token(CROSS);
jj_consume_token(JOIN);
joinType = JoinType.CROSS;
@@ -3073,7 +3109,7 @@
final public SqlNode JoinOrCommaTable(SqlNode e) throws ParseException {
SqlNode e2;
SqlLiteral joinType;
- if (jj_2_248(2)) {
+ if (jj_2_250(2)) {
jj_consume_token(COMMA);
joinType = JoinType.COMMA.symbol(getPos());
e2 = TableRef1(ExprContext.ACCEPT_QUERY_OR_JOIN);
@@ -3084,7 +3120,7 @@
e2,
JoinConditionType.NONE.symbol(SqlParserPos.ZERO),
null);}
- } else if (jj_2_249(2)) {
+ } else if (jj_2_251(2)) {
e2 = JoinTable(e);
{if (true) return e2;}
} else {
@@ -3099,12 +3135,12 @@
SqlNode e2, condition, matchCondition = null;
final SqlLiteral natural, joinType, on, using;
SqlNodeList list;
- if (jj_2_253(4)) {
+ if (jj_2_255(4)) {
natural = Natural();
joinType = JoinType();
e2 = TableRef1(ExprContext.ACCEPT_QUERY_OR_JOIN);
- if (jj_2_251(2)) {
- if (jj_2_250(2)) {
+ if (jj_2_253(2)) {
+ if (jj_2_252(2)) {
jj_consume_token(MATCH_CONDITION);
matchCondition = Expression(ExprContext.ACCEPT_SUB_QUERY);
} else {
@@ -3138,7 +3174,7 @@
e2,
on,
condition);}
- } else if (jj_2_252(2)) {
+ } else if (jj_2_254(2)) {
jj_consume_token(USING);
using = JoinConditionType.USING.symbol(getPos());
list = ParenthesizedSimpleIdentifierList();
@@ -3158,7 +3194,7 @@
JoinConditionType.NONE.symbol(joinType.getParserPosition()),
null);}
}
- } else if (jj_2_254(2)) {
+ } else if (jj_2_256(2)) {
jj_consume_token(CROSS);
joinType = JoinType.CROSS.symbol(getPos());
jj_consume_token(APPLY);
@@ -3173,7 +3209,7 @@
e2,
JoinConditionType.NONE.symbol(SqlParserPos.ZERO),
null);}
- } else if (jj_2_255(2)) {
+ } else if (jj_2_257(2)) {
jj_consume_token(OUTER);
joinType = JoinType.LEFT.symbol(getPos());
jj_consume_token(APPLY);
@@ -3231,36 +3267,36 @@
SqlNodeList args;
final SqlNodeList columnAliasList;
SqlUnnestOperator unnestOp = SqlStdOperatorTable.UNNEST;
- if (jj_2_266(2)) {
+ if (jj_2_268(2)) {
tableName = CompoundTableIdentifier();
s = span();
- if (jj_2_260(3)) {
+ if (jj_2_262(3)) {
tableRef = ImplicitTableFunctionCallArgs(tableName);
} else {
- if (jj_2_256(2)) {
+ if (jj_2_258(2)) {
tableRef = TableHints(tableName);
} else {
tableRef = tableName;
}
- if (jj_2_257(2)) {
+ if (jj_2_259(2)) {
tableRef = ExtendTable(tableRef);
} else {
;
}
tableRef = Over(tableRef);
- if (jj_2_258(2)) {
+ if (jj_2_260(2)) {
tableRef = Snapshot(tableRef);
} else {
;
}
- if (jj_2_259(2)) {
+ if (jj_2_261(3)) {
tableRef = MatchRecognize(tableRef);
} else {
;
}
}
- } else if (jj_2_267(2)) {
- if (jj_2_261(2)) {
+ } else if (jj_2_269(2)) {
+ if (jj_2_263(2)) {
jj_consume_token(LATERAL);
lateral = true;
} else {
@@ -3269,13 +3305,13 @@
tableRef = ParenthesizedExpression(exprContext);
tableRef = Over(tableRef);
tableRef = addLateral(tableRef, lateral);
- if (jj_2_262(2)) {
+ if (jj_2_264(3)) {
tableRef = MatchRecognize(tableRef);
} else {
;
}
- } else if (jj_2_268(2)) {
- if (jj_2_263(2)) {
+ } else if (jj_2_270(2)) {
+ if (jj_2_265(2)) {
jj_consume_token(LATERAL);
} else {
;
@@ -3283,7 +3319,7 @@
jj_consume_token(UNNEST);
s = span();
args = ParenthesizedQueryOrCommaList(ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_264(2)) {
+ if (jj_2_266(2)) {
jj_consume_token(WITH);
jj_consume_token(ORDINALITY);
unnestOp = SqlStdOperatorTable.UNNEST_WITH_ORDINALITY;
@@ -3291,8 +3327,8 @@
;
}
tableRef = unnestOp.createCall(s.end(this), (List<SqlNode>) args);
- } else if (jj_2_269(2)) {
- if (jj_2_265(2)) {
+ } else if (jj_2_271(2)) {
+ if (jj_2_267(2)) {
jj_consume_token(LATERAL);
lateral = true;
} else {
@@ -3300,30 +3336,30 @@
}
tableRef = TableFunctionCall();
tableRef = addLateral(tableRef, lateral);
- } else if (jj_2_270(2)) {
+ } else if (jj_2_272(2)) {
tableRef = ExtendedTableRef();
} else {
jj_consume_token(-1);
throw new ParseException();
}
- if (jj_2_271(2)) {
+ if (jj_2_273(2)) {
tableRef = Pivot(tableRef);
} else {
;
}
- if (jj_2_272(2)) {
+ if (jj_2_274(2)) {
tableRef = Unpivot(tableRef);
} else {
;
}
- if (jj_2_275(2)) {
- if (jj_2_273(2)) {
+ if (jj_2_277(2)) {
+ if (jj_2_275(2)) {
jj_consume_token(AS);
} else {
;
}
alias = SimpleIdentifier();
- if (jj_2_274(2)) {
+ if (jj_2_276(2)) {
columnAliasList = ParenthesizedSimpleIdentifierList();
} else {
columnAliasList = null;
@@ -3348,7 +3384,7 @@
} else {
;
}
- if (jj_2_276(2)) {
+ if (jj_2_278(2)) {
tableRef = Tablesample(tableRef);
} else {
;
@@ -3366,7 +3402,7 @@
int repeatableSeed = 0;
jj_consume_token(TABLESAMPLE);
s = span(); checkNotJoin(tableRef);
- if (jj_2_280(2)) {
+ if (jj_2_282(2)) {
jj_consume_token(SUBSTITUTE);
jj_consume_token(LPAREN);
sample = StringLiteral();
@@ -3378,11 +3414,11 @@
SqlLiteral.createSample(sampleSpec, s.end(this));
{if (true) return SqlStdOperatorTable.TABLESAMPLE.createCall(
s.add(tableRef).end(this), tableRef, sampleLiteral);}
- } else if (jj_2_281(2)) {
- if (jj_2_277(2)) {
+ } else if (jj_2_283(2)) {
+ if (jj_2_279(2)) {
jj_consume_token(BERNOULLI);
isBernoulli = true;
- } else if (jj_2_278(2)) {
+ } else if (jj_2_280(2)) {
jj_consume_token(SYSTEM);
isBernoulli = false;
} else {
@@ -3392,7 +3428,7 @@
jj_consume_token(LPAREN);
samplePercentage = UnsignedNumericLiteral();
jj_consume_token(RPAREN);
- if (jj_2_279(2)) {
+ if (jj_2_281(2)) {
jj_consume_token(REPEATABLE);
jj_consume_token(LPAREN);
repeatableSeed = IntLiteral();
@@ -3423,7 +3459,7 @@
* is present. */
final public SqlNode ExtendTable(SqlNode tableRef) throws ParseException {
final SqlNodeList extendList;
- if (jj_2_282(2)) {
+ if (jj_2_284(2)) {
jj_consume_token(EXTEND);
} else {
;
@@ -3441,7 +3477,7 @@
AddColumnType(list);
label_24:
while (true) {
- if (jj_2_283(2)) {
+ if (jj_2_285(2)) {
;
} else {
break label_24;
@@ -3473,7 +3509,7 @@
final SqlDataTypeSpec type;
final boolean nullable;
name = CompoundIdentifier();
- if (jj_2_284(2)) {
+ if (jj_2_286(2)) {
type = DataType();
nullable = NotNullOpt();
} else {
@@ -3496,11 +3532,11 @@
final Span s;
s = span();
jj_consume_token(LPAREN);
- if (jj_2_286(2)) {
+ if (jj_2_288(2)) {
AddArg0(tableFuncArgs, ExprContext.ACCEPT_CURSOR);
label_25:
while (true) {
- if (jj_2_285(2)) {
+ if (jj_2_287(2)) {
;
} else {
break label_25;
@@ -3530,7 +3566,7 @@
jj_consume_token(TABLE);
s = span();
jj_consume_token(LPAREN);
- if (jj_2_287(2)) {
+ if (jj_2_289(2)) {
jj_consume_token(SPECIFIC);
funcType = SqlFunctionCategory.USER_DEFINED_TABLE_SPECIFIC_FUNCTION;
} else {
@@ -3576,10 +3612,10 @@
final public SqlNode TableConstructor() throws ParseException {
final List<SqlNode> list = new ArrayList<SqlNode>();
final Span s;
- if (jj_2_288(2)) {
+ if (jj_2_290(2)) {
jj_consume_token(VALUES);
s = span();
- } else if (jj_2_289(2)) {
+ } else if (jj_2_291(2)) {
jj_consume_token(VALUE);
s = span();
if (!this.conformance.isValueAllowed()) {
@@ -3592,7 +3628,7 @@
AddRowConstructor(list);
label_26:
while (true) {
- if (jj_2_290(2)) {
+ if (jj_2_292(2)) {
;
} else {
break label_26;
@@ -3618,22 +3654,22 @@
final SqlNodeList valueList;
final SqlNode value;
final Span s;
- if (jj_2_292(3)) {
+ if (jj_2_294(3)) {
jj_consume_token(LPAREN);
s = span();
jj_consume_token(ROW);
valueList = ParenthesizedQueryOrCommaListWithDefault(ExprContext.ACCEPT_NONCURSOR);
jj_consume_token(RPAREN);
s.add(this);
- } else if (jj_2_293(3)) {
- if (jj_2_291(2)) {
+ } else if (jj_2_295(3)) {
+ if (jj_2_293(2)) {
jj_consume_token(ROW);
s = span();
} else {
s = Span.of();
}
valueList = ParenthesizedQueryOrCommaListWithDefault(ExprContext.ACCEPT_NONCURSOR);
- } else if (jj_2_294(2)) {
+ } else if (jj_2_296(2)) {
value = Expression(ExprContext.ACCEPT_NONCURSOR);
// NOTE: A bare value here is standard SQL syntax, believe it or
// not. Taken together with multi-row table constructors, it leads
@@ -3673,10 +3709,10 @@
jj_consume_token(GROUP);
s = span();
jj_consume_token(BY);
- if (jj_2_295(2)) {
+ if (jj_2_297(2)) {
jj_consume_token(DISTINCT);
distinct = true;
- } else if (jj_2_296(2)) {
+ } else if (jj_2_298(2)) {
jj_consume_token(ALL);
distinct = false;
} else {
@@ -3697,7 +3733,7 @@
AddGroupingElement(list);
label_27:
while (true) {
- if (jj_2_297(2)) {
+ if (jj_2_299(2)) {
;
} else {
break label_27;
@@ -3713,7 +3749,7 @@
final List<SqlNode> subList;
final SqlNodeList nodes;
final Span s;
- if (jj_2_298(2)) {
+ if (jj_2_300(2)) {
jj_consume_token(GROUPING);
s = span();
jj_consume_token(SETS);
@@ -3722,7 +3758,7 @@
jj_consume_token(RPAREN);
list.add(
SqlStdOperatorTable.GROUPING_SETS.createCall(s.end(this), subList));
- } else if (jj_2_299(2)) {
+ } else if (jj_2_301(2)) {
jj_consume_token(ROLLUP);
s = span();
jj_consume_token(LPAREN);
@@ -3730,7 +3766,7 @@
jj_consume_token(RPAREN);
list.add(
SqlStdOperatorTable.ROLLUP.createCall(s.end(this), nodes.getList()));
- } else if (jj_2_300(2)) {
+ } else if (jj_2_302(2)) {
jj_consume_token(CUBE);
s = span();
jj_consume_token(LPAREN);
@@ -3738,12 +3774,12 @@
jj_consume_token(RPAREN);
list.add(
SqlStdOperatorTable.CUBE.createCall(s.end(this), nodes.getList()));
- } else if (jj_2_301(3)) {
+ } else if (jj_2_303(3)) {
jj_consume_token(LPAREN);
s = span();
jj_consume_token(RPAREN);
list.add(new SqlNodeList(s.end(this)));
- } else if (jj_2_302(2)) {
+ } else if (jj_2_304(2)) {
AddExpression(list, ExprContext.ACCEPT_SUB_QUERY);
} else {
jj_consume_token(-1);
@@ -3770,7 +3806,7 @@
AddExpression(list, exprContext);
label_28:
while (true) {
- if (jj_2_303(2)) {
+ if (jj_2_305(2)) {
;
} else {
break label_28;
@@ -3798,7 +3834,7 @@
AddWindowSpec(list);
label_29:
while (true) {
- if (jj_2_304(2)) {
+ if (jj_2_306(2)) {
;
} else {
break label_29;
@@ -3834,12 +3870,12 @@
final SqlLiteral allowPartial;
jj_consume_token(LPAREN);
s = span();
- if (jj_2_305(2)) {
+ if (jj_2_307(2)) {
id = SimpleIdentifier();
} else {
id = null;
}
- if (jj_2_306(2)) {
+ if (jj_2_308(2)) {
jj_consume_token(PARTITION);
s1 = span();
jj_consume_token(BY);
@@ -3847,28 +3883,28 @@
} else {
partitionList = SqlNodeList.EMPTY;
}
- if (jj_2_307(2)) {
+ if (jj_2_309(2)) {
orderList = OrderBy(true);
} else {
orderList = SqlNodeList.EMPTY;
}
- if (jj_2_312(2)) {
- if (jj_2_308(2)) {
+ if (jj_2_314(2)) {
+ if (jj_2_310(2)) {
jj_consume_token(ROWS);
isRows = SqlLiteral.createBoolean(true, getPos());
- } else if (jj_2_309(2)) {
+ } else if (jj_2_311(2)) {
jj_consume_token(RANGE);
isRows = SqlLiteral.createBoolean(false, getPos());
} else {
jj_consume_token(-1);
throw new ParseException();
}
- if (jj_2_310(2)) {
+ if (jj_2_312(2)) {
jj_consume_token(BETWEEN);
lowerBound = WindowRange();
jj_consume_token(AND);
upperBound = WindowRange();
- } else if (jj_2_311(2)) {
+ } else if (jj_2_313(2)) {
lowerBound = WindowRange();
upperBound = null;
} else {
@@ -3881,12 +3917,12 @@
exclude = SqlWindow.createExcludeNoOthers(getPos());
lowerBound = upperBound = null;
}
- if (jj_2_313(2)) {
+ if (jj_2_315(2)) {
jj_consume_token(ALLOW);
s2 = span();
jj_consume_token(PARTIAL);
allowPartial = SqlLiteral.createBoolean(true, s2.end(this));
- } else if (jj_2_314(2)) {
+ } else if (jj_2_316(2)) {
jj_consume_token(DISALLOW);
s2 = span();
jj_consume_token(PARTIAL);
@@ -3903,30 +3939,30 @@
final public SqlNode WindowRange() throws ParseException {
final SqlNode e;
final Span s;
- if (jj_2_319(2)) {
+ if (jj_2_321(2)) {
jj_consume_token(CURRENT);
s = span();
jj_consume_token(ROW);
{if (true) return SqlWindow.createCurrentRow(s.end(this));}
- } else if (jj_2_320(2)) {
+ } else if (jj_2_322(2)) {
jj_consume_token(UNBOUNDED);
s = span();
- if (jj_2_315(2)) {
+ if (jj_2_317(2)) {
jj_consume_token(PRECEDING);
{if (true) return SqlWindow.createUnboundedPreceding(s.end(this));}
- } else if (jj_2_316(2)) {
+ } else if (jj_2_318(2)) {
jj_consume_token(FOLLOWING);
{if (true) return SqlWindow.createUnboundedFollowing(s.end(this));}
} else {
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_321(2)) {
+ } else if (jj_2_323(2)) {
e = Expression(ExprContext.ACCEPT_NON_QUERY);
- if (jj_2_317(2)) {
+ if (jj_2_319(2)) {
jj_consume_token(PRECEDING);
{if (true) return SqlWindow.createPreceding(e, getPos());}
- } else if (jj_2_318(2)) {
+ } else if (jj_2_320(2)) {
jj_consume_token(FOLLOWING);
{if (true) return SqlWindow.createFollowing(e, getPos());}
} else {
@@ -3942,20 +3978,20 @@
/** Parses an exclusion clause for WINDOW FRAME. */
final public SqlLiteral WindowExclusion() throws ParseException {
- if (jj_2_326(2)) {
+ if (jj_2_328(2)) {
jj_consume_token(EXCLUDE);
- if (jj_2_322(2)) {
+ if (jj_2_324(2)) {
jj_consume_token(CURRENT);
jj_consume_token(ROW);
{if (true) return SqlWindow.createExcludeCurrentRow(getPos());}
- } else if (jj_2_323(2)) {
+ } else if (jj_2_325(2)) {
jj_consume_token(NO);
jj_consume_token(OTHERS);
{if (true) return SqlWindow.createExcludeNoOthers(getPos());}
- } else if (jj_2_324(2)) {
+ } else if (jj_2_326(2)) {
jj_consume_token(GROUP);
{if (true) return SqlWindow.createExcludeGroup(getPos());}
- } else if (jj_2_325(2)) {
+ } else if (jj_2_327(2)) {
jj_consume_token(TIES);
{if (true) return SqlWindow.createExcludeTies(getPos());}
} else {
@@ -3992,10 +4028,19 @@
{if (true) throw SqlUtil.newContextException(s.pos(), RESOURCE.illegalOrderBy());}
}
jj_consume_token(BY);
+ OrderItemList(list);
+ {if (true) return new SqlNodeList(list, s.addAll(list).pos());}
+ throw new Error("Missing return statement in function");
+ }
+
+/**
+ * Parses a list of ORDER BY items.
+ */
+ final public void OrderItemList(List<SqlNode> list) throws ParseException {
AddOrderItem(list);
label_30:
while (true) {
- if (jj_2_327(2)) {
+ if (jj_2_329(2)) {
;
} else {
break label_30;
@@ -4003,8 +4048,6 @@
jj_consume_token(COMMA);
AddOrderItem(list);
}
- {if (true) return new SqlNodeList(list, s.addAll(list).pos());}
- throw new Error("Missing return statement in function");
}
/**
@@ -4012,11 +4055,31 @@
*/
final public void AddOrderItem(List<SqlNode> list) throws ParseException {
SqlNode e;
+ final SqlIdentifier id;
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_330(2)) {
- if (jj_2_328(2)) {
+ if (jj_2_331(2)) {
+ jj_consume_token(AS);
+ if (jj_2_330(2)) {
+ id = SimpleIdentifier();
+ } else {
+ switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
+ case QUOTED_STRING:
+ id = SimpleIdentifierFromStringLiteral();
+ break;
+ default:
+ jj_la1[3] = jj_gen;
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ e = SqlStdOperatorTable.AS.createCall(span().end(e), e, id);
+ } else {
+ ;
+ }
+ if (jj_2_334(2)) {
+ if (jj_2_332(2)) {
jj_consume_token(ASC);
- } else if (jj_2_329(2)) {
+ } else if (jj_2_333(2)) {
jj_consume_token(DESC);
e = SqlStdOperatorTable.DESC.createCall(getPos(), e);
} else {
@@ -4026,12 +4089,12 @@
} else {
;
}
- if (jj_2_333(2)) {
- if (jj_2_331(2)) {
+ if (jj_2_337(2)) {
+ if (jj_2_335(2)) {
jj_consume_token(NULLS);
jj_consume_token(FIRST);
e = SqlStdOperatorTable.NULLS_FIRST.createCall(getPos(), e);
- } else if (jj_2_332(2)) {
+ } else if (jj_2_336(2)) {
jj_consume_token(NULLS);
jj_consume_token(LAST);
e = SqlStdOperatorTable.NULLS_LAST.createCall(getPos(), e);
@@ -4105,7 +4168,7 @@
AddPivotAgg(aggList);
label_31:
while (true) {
- if (jj_2_334(2)) {
+ if (jj_2_338(2)) {
;
} else {
break label_31;
@@ -4118,11 +4181,11 @@
jj_consume_token(IN);
jj_consume_token(LPAREN);
s2 = span();
- if (jj_2_336(2)) {
+ if (jj_2_340(2)) {
AddPivotValue(valueList);
label_32:
while (true) {
- if (jj_2_335(2)) {
+ if (jj_2_339(2)) {
;
} else {
break label_32;
@@ -4147,7 +4210,7 @@
final SqlIdentifier alias;
e = NamedFunctionCall();
if (getToken(1).kind != COMMA && getToken(1).kind != FOR) {
- if (jj_2_337(2)) {
+ if (jj_2_341(2)) {
jj_consume_token(AS);
} else {
;
@@ -4167,8 +4230,8 @@
final SqlIdentifier alias;
e = RowConstructor();
tuple = SqlParserUtil.stripRow(e);
- if (jj_2_339(2)) {
- if (jj_2_338(2)) {
+ if (jj_2_343(2)) {
+ if (jj_2_342(2)) {
jj_consume_token(AS);
} else {
;
@@ -4193,11 +4256,11 @@
final SqlNodeList inList;
jj_consume_token(UNPIVOT);
s = span(); checkNotJoin(tableRef);
- if (jj_2_340(2)) {
+ if (jj_2_344(2)) {
jj_consume_token(INCLUDE);
jj_consume_token(NULLS);
includeNulls = true;
- } else if (jj_2_341(2)) {
+ } else if (jj_2_345(2)) {
jj_consume_token(EXCLUDE);
jj_consume_token(NULLS);
includeNulls = false;
@@ -4214,7 +4277,7 @@
AddUnpivotValue(values);
label_33:
while (true) {
- if (jj_2_342(2)) {
+ if (jj_2_346(2)) {
;
} else {
break label_33;
@@ -4234,7 +4297,7 @@
final SqlNodeList columnList;
final SqlNode values;
columnList = SimpleIdentifierOrList();
- if (jj_2_343(2)) {
+ if (jj_2_347(2)) {
jj_consume_token(AS);
values = RowConstructor();
final SqlNodeList valueList = SqlParserUtil.stripRow(values);
@@ -4251,6 +4314,7 @@
*/
final public SqlMatchRecognize MatchRecognize(SqlNode tableRef) throws ParseException {
final Span s, s0, s1, s2;
+ final SqlIdentifier aliasBeforeMatch;
final SqlNodeList measureList;
final SqlNodeList partitionList;
final SqlNodeList orderList;
@@ -4263,10 +4327,18 @@
final SqlNodeList subsetList;
final SqlLiteral isStrictStarts;
final SqlLiteral isStrictEnds;
+ if (jj_2_348(2)) {
+ jj_consume_token(AS);
+ aliasBeforeMatch = SimpleIdentifier();
+ tableRef = SqlStdOperatorTable.AS.createCall(
+ Span.of(tableRef).end(this), tableRef, aliasBeforeMatch);
+ } else {
+ ;
+ }
jj_consume_token(MATCH_RECOGNIZE);
s = span(); checkNotJoin(tableRef);
jj_consume_token(LPAREN);
- if (jj_2_344(2)) {
+ if (jj_2_349(2)) {
jj_consume_token(PARTITION);
s2 = span();
jj_consume_token(BY);
@@ -4274,25 +4346,25 @@
} else {
partitionList = SqlNodeList.EMPTY;
}
- if (jj_2_345(2)) {
+ if (jj_2_350(2)) {
orderList = OrderBy(true);
} else {
orderList = SqlNodeList.EMPTY;
}
- if (jj_2_346(2)) {
+ if (jj_2_351(2)) {
jj_consume_token(MEASURES);
measureList = MeasureColumnCommaList(span());
} else {
measureList = SqlNodeList.EMPTY;
}
- if (jj_2_347(2)) {
+ if (jj_2_352(2)) {
jj_consume_token(ONE);
s0 = span();
jj_consume_token(ROW);
jj_consume_token(PER);
jj_consume_token(MATCH);
rowsPerMatch = SqlMatchRecognize.RowsPerMatchOption.ONE_ROW.symbol(s0.end(this));
- } else if (jj_2_348(2)) {
+ } else if (jj_2_353(2)) {
jj_consume_token(ALL);
s0 = span();
jj_consume_token(ROWS);
@@ -4302,25 +4374,25 @@
} else {
rowsPerMatch = null;
}
- if (jj_2_354(2)) {
+ if (jj_2_359(2)) {
jj_consume_token(AFTER);
s1 = span();
jj_consume_token(MATCH);
jj_consume_token(SKIP_);
- if (jj_2_352(2)) {
+ if (jj_2_357(2)) {
jj_consume_token(TO);
- if (jj_2_350(2)) {
+ if (jj_2_355(2)) {
jj_consume_token(NEXT);
jj_consume_token(ROW);
after = SqlMatchRecognize.AfterOption.SKIP_TO_NEXT_ROW
.symbol(s1.end(this));
- } else if (jj_2_351(2)) {
+ } else if (jj_2_356(2)) {
jj_consume_token(FIRST);
var = SimpleIdentifier();
after = SqlMatchRecognize.SKIP_TO_FIRST.createCall(
s1.end(var), var);
} else if (true) {
- if (jj_2_349(2)) {
+ if (jj_2_354(2)) {
jj_consume_token(LAST);
} else {
;
@@ -4332,7 +4404,7 @@
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_353(2)) {
+ } else if (jj_2_358(2)) {
jj_consume_token(PAST);
jj_consume_token(LAST);
jj_consume_token(ROW);
@@ -4347,27 +4419,27 @@
}
jj_consume_token(PATTERN);
jj_consume_token(LPAREN);
- if (jj_2_355(2)) {
+ if (jj_2_360(2)) {
jj_consume_token(CARET);
isStrictStarts = SqlLiteral.createBoolean(true, getPos());
} else {
isStrictStarts = SqlLiteral.createBoolean(false, getPos());
}
pattern = PatternExpression();
- if (jj_2_356(2)) {
+ if (jj_2_361(2)) {
jj_consume_token(DOLLAR);
isStrictEnds = SqlLiteral.createBoolean(true, getPos());
} else {
isStrictEnds = SqlLiteral.createBoolean(false, getPos());
}
jj_consume_token(RPAREN);
- if (jj_2_357(2)) {
+ if (jj_2_362(2)) {
jj_consume_token(WITHIN);
interval = IntervalLiteral();
} else {
interval = null;
}
- if (jj_2_358(2)) {
+ if (jj_2_363(2)) {
jj_consume_token(SUBSET);
subsetList = SubsetDefinitionCommaList(span());
} else {
@@ -4387,7 +4459,7 @@
AddMeasureColumn(list);
label_34:
while (true) {
- if (jj_2_359(2)) {
+ if (jj_2_364(2)) {
;
} else {
break label_34;
@@ -4414,7 +4486,7 @@
left = PatternTerm();
label_35:
while (true) {
- if (jj_2_360(2)) {
+ if (jj_2_365(2)) {
;
} else {
break label_35;
@@ -4434,7 +4506,7 @@
left = PatternFactor();
label_36:
while (true) {
- if (jj_2_361(2)) {
+ if (jj_2_366(2)) {
;
} else {
break label_36;
@@ -4459,25 +4531,25 @@
case HOOK:
case PLUS:
case STAR:
- if (jj_2_367(2)) {
+ if (jj_2_372(2)) {
jj_consume_token(STAR);
startNum = LITERAL_ZERO;
endNum = LITERAL_MINUS_ONE;
- } else if (jj_2_368(2)) {
+ } else if (jj_2_373(2)) {
jj_consume_token(PLUS);
startNum = LITERAL_ONE;
endNum = LITERAL_MINUS_ONE;
- } else if (jj_2_369(2)) {
+ } else if (jj_2_374(2)) {
jj_consume_token(HOOK);
startNum = LITERAL_ZERO;
endNum = LITERAL_ONE;
- } else if (jj_2_370(2)) {
+ } else if (jj_2_375(2)) {
jj_consume_token(LBRACE);
- if (jj_2_364(2)) {
+ if (jj_2_369(2)) {
startNum = UnsignedNumericLiteral();
- if (jj_2_363(2)) {
+ if (jj_2_368(2)) {
jj_consume_token(COMMA);
- if (jj_2_362(2)) {
+ if (jj_2_367(2)) {
endNum = UnsignedNumericLiteral();
} else {
endNum = LITERAL_MINUS_ONE;
@@ -4486,12 +4558,12 @@
endNum = startNum;
}
jj_consume_token(RBRACE);
- } else if (jj_2_365(2)) {
+ } else if (jj_2_370(2)) {
jj_consume_token(COMMA);
endNum = UnsignedNumericLiteral();
jj_consume_token(RBRACE);
startNum = LITERAL_MINUS_ONE;
- } else if (jj_2_366(2)) {
+ } else if (jj_2_371(2)) {
jj_consume_token(MINUS);
extra = PatternExpression();
jj_consume_token(MINUS);
@@ -4508,7 +4580,7 @@
jj_consume_token(-1);
throw new ParseException();
}
- if (jj_2_371(2)) {
+ if (jj_2_376(2)) {
jj_consume_token(HOOK);
reluctant = SqlLiteral.createBoolean(
startNum.intValue(true) != endNum.intValue(true),
@@ -4518,7 +4590,7 @@
}
break;
default:
- jj_la1[3] = jj_gen;
+ jj_la1[4] = jj_gen;
{if (true) return e;}
}
{if (true) return SqlStdOperatorTable.PATTERN_QUANTIFIER.createCall(
@@ -4530,15 +4602,15 @@
final Span s;
SqlNode e;
final List<SqlNode> list;
- if (jj_2_373(2)) {
+ if (jj_2_378(2)) {
e = SimpleIdentifier();
{if (true) return e;}
- } else if (jj_2_374(2)) {
+ } else if (jj_2_379(2)) {
jj_consume_token(LPAREN);
e = PatternExpression();
jj_consume_token(RPAREN);
{if (true) return e;}
- } else if (jj_2_375(2)) {
+ } else if (jj_2_380(2)) {
jj_consume_token(LBRACE);
s = span();
jj_consume_token(MINUS);
@@ -4546,7 +4618,7 @@
jj_consume_token(MINUS);
jj_consume_token(RBRACE);
{if (true) return SqlStdOperatorTable.PATTERN_EXCLUDE.createCall(s.end(this), e);}
- } else if (jj_2_376(2)) {
+ } else if (jj_2_381(2)) {
jj_consume_token(PERMUTE);
s = span(); list = new ArrayList<SqlNode>();
jj_consume_token(LPAREN);
@@ -4554,7 +4626,7 @@
list.add(e);
label_37:
while (true) {
- if (jj_2_372(2)) {
+ if (jj_2_377(2)) {
;
} else {
break label_37;
@@ -4578,7 +4650,7 @@
AddSubsetDefinition(list);
label_38:
while (true) {
- if (jj_2_377(2)) {
+ if (jj_2_382(2)) {
;
} else {
break label_38;
@@ -4610,7 +4682,7 @@
eList.add(e);
label_39:
while (true) {
- if (jj_2_378(2)) {
+ if (jj_2_383(2)) {
;
} else {
break label_39;
@@ -4672,7 +4744,7 @@
SqlNodeList withList = null;
final SqlNode e;
final List<Object> list = new ArrayList<Object>();
- if (jj_2_379(2)) {
+ if (jj_2_384(2)) {
withList = WithList();
} else {
;
@@ -4681,7 +4753,7 @@
list.add(e);
label_40:
while (true) {
- if (jj_2_380(2)) {
+ if (jj_2_385(2)) {
;
} else {
break label_40;
@@ -4696,16 +4768,20 @@
SqlNodeList withList = null;
final SqlNode e;
final List<Object> list = new ArrayList<Object>();
- if (jj_2_381(2)) {
+ if (jj_2_386(2)) {
withList = WithList();
+ e = LeafQueryOrExpr(exprContext);
+ list.add(e);
+ } else if (jj_2_387(2)) {
+ e = LeafQuery(exprContext);
+ list.add(e);
} else {
- ;
+ jj_consume_token(-1);
+ throw new ParseException();
}
- e = LeafQuery(exprContext);
- list.add(e);
label_41:
while (true) {
- if (jj_2_382(2)) {
+ if (jj_2_388(2)) {
;
} else {
break label_41;
@@ -4771,7 +4847,7 @@
final List<SqlWithItem> list = new ArrayList<SqlWithItem>();
boolean recursive = false;
jj_consume_token(WITH);
- if (jj_2_383(2)) {
+ if (jj_2_389(2)) {
jj_consume_token(RECURSIVE);
recursive = true;
} else {
@@ -4781,7 +4857,7 @@
AddWithItem(list, SqlLiteral.createBoolean(recursive, getPos()));
label_42:
while (true) {
- if (jj_2_384(2)) {
+ if (jj_2_390(2)) {
;
} else {
break label_42;
@@ -4798,7 +4874,7 @@
final SqlNodeList columnList;
final SqlNode definition;
id = SimpleIdentifier();
- if (jj_2_385(2)) {
+ if (jj_2_391(2)) {
columnList = ParenthesizedSimpleIdentifierList();
} else {
columnList = null;
@@ -4814,10 +4890,10 @@
*/
final public SqlNode LeafQueryOrExpr(ExprContext exprContext) throws ParseException {
SqlNode e;
- if (jj_2_386(2)) {
+ if (jj_2_392(2)) {
e = LeafQuery(exprContext);
{if (true) return e;}
- } else if (jj_2_387(2)) {
+ } else if (jj_2_393(2)) {
e = Expression(exprContext);
{if (true) return e;}
} else {
@@ -4844,11 +4920,92 @@
throw new Error("Missing return statement in function");
}
+/** Adds an optional trailing colon path to the expression under
+ * construction, for example {@code :field.nested}, {@code :['field']} or
+ * {@code :item[1].price}. Dot-separated path segments are parsed as simple
+ * identifiers, but unquoted segment spelling is preserved for case-sensitive
+ * variant key lookup. Bracketed segments are literals (string for exact key
+ * access, integer for array index); arbitrary expressions are not allowed. */
+ final public void AddOptionalColonPath(List<Object> list) throws ParseException {
+ SqlParserPos colonPos;
+ List<SqlNode> segments;
+ Span s;
+ SqlIdentifier p;
+ if (jj_2_399(2) && (this.conformance.isColonFieldAccessAllowed())) {
+ jj_consume_token(COLON);
+ colonPos = getPos();
+ segments = new ArrayList<SqlNode>();
+ s = span();
+ if (jj_2_394(2)) {
+ p = SimpleIdentifier();
+ segments.add(p.getParserPosition().isQuoted()
+ ? p
+ : new SqlIdentifier(getToken(0).image, p.getParserPosition()));
+ } else if (jj_2_395(2)) {
+ ColonBracketSegment(segments);
+ } else {
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ label_43:
+ while (true) {
+ if (jj_2_396(2)) {
+ ;
+ } else {
+ break label_43;
+ }
+ if (jj_2_397(2)) {
+ jj_consume_token(DOT);
+ p = SimpleIdentifier();
+ segments.add(p.getParserPosition().isQuoted()
+ ? p
+ : new SqlIdentifier(getToken(0).image, p.getParserPosition()));
+ } else if (jj_2_398(2)) {
+ ColonBracketSegment(segments);
+ } else {
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ }
+ list.add(
+ new SqlParserUtil.ToTreeListItem(
+ SqlStdOperatorTable.COLON, colonPos));
+ list.add(new SqlNodeList(segments, s.end(this)));
+ } else {
+ ;
+ }
+ }
+
+/** Parses one bracketed segment of a colon path: {@code ['field']} for key
+ * access, or {@code [n]} for array index. */
+ final public void ColonBracketSegment(List<SqlNode> segments) throws ParseException {
+ SqlNode lit;
+ SqlIdentifier id;
+ jj_consume_token(LBRACKET);
+ if (jj_2_400(2)) {
+ lit = StringLiteral();
+ segments.add(lit);
+ } else if (jj_2_401(2)) {
+ jj_consume_token(UNSIGNED_INTEGER_LITERAL);
+ segments.add(SqlLiteral.createExactNumeric(token.image, getPos()));
+ } else if (jj_2_402(2147483647)) {
+ id = SimpleIdentifier();
+ {if (true) throw SqlUtil.newContextException(id.getParserPosition(),
+ RESOURCE.unknownIdentifier(id.toString()));}
+ } else {
+ jj_consume_token(-1);
+ throw new ParseException();
+ }
+ jj_consume_token(RBRACKET);
+ }
+
+/** Parses an expression atom with its dot-access chain and at most one
+ * trailing colon path. */
final public void AddExpression2b(List<Object> list, ExprContext exprContext) throws ParseException {
SqlNode e;
SqlOperator op;
SqlNode ext;
- label_43:
+ label_44:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case EXISTS:
@@ -4859,8 +5016,8 @@
;
break;
default:
- jj_la1[4] = jj_gen;
- break label_43;
+ jj_la1[5] = jj_gen;
+ break label_44;
}
op = PrefixRowOperator();
checkNonQueryExpression(exprContext);
@@ -4868,12 +5025,12 @@
}
e = Expression3(exprContext);
list.add(e);
- label_44:
+ label_45:
while (true) {
- if (jj_2_388(2)) {
+ if (jj_2_403(2)) {
;
} else {
- break label_44;
+ break label_45;
}
jj_consume_token(DOT);
ext = RowExpressionExtension();
@@ -4882,6 +5039,7 @@
SqlStdOperatorTable.DOT, getPos()));
list.add(ext);
}
+ AddOptionalColonPath(list);
}
/**
@@ -4909,28 +5067,28 @@
SqlIdentifier p;
final Span s = span();
AddExpression2b(list, exprContext);
- if (jj_2_432(2)) {
- label_45:
+ if (jj_2_447(2)) {
+ label_46:
while (true) {
- if (jj_2_424(2)) {
+ if (jj_2_439(2)) {
checkNonQueryExpression(exprContext);
- if (jj_2_392(2)) {
+ if (jj_2_407(2)) {
jj_consume_token(NOT);
jj_consume_token(IN);
op = SqlStdOperatorTable.NOT_IN;
- } else if (jj_2_393(2)) {
+ } else if (jj_2_408(2)) {
jj_consume_token(IN);
op = SqlStdOperatorTable.IN;
- } else if (jj_2_394(2)) {
+ } else if (jj_2_409(2)) {
final SqlKind k;
k = comp();
- if (jj_2_389(2)) {
+ if (jj_2_404(2)) {
jj_consume_token(SOME);
op = SqlStdOperatorTable.some(k);
- } else if (jj_2_390(2)) {
+ } else if (jj_2_405(2)) {
jj_consume_token(ANY);
op = SqlStdOperatorTable.some(k);
- } else if (jj_2_391(2)) {
+ } else if (jj_2_406(2)) {
jj_consume_token(ALL);
op = SqlStdOperatorTable.all(k);
} else {
@@ -4956,18 +5114,18 @@
} else {
list.add(nodeList);
}
- } else if (jj_2_425(2)) {
+ } else if (jj_2_440(2)) {
checkNonQueryExpression(exprContext);
- if (jj_2_401(2)) {
+ if (jj_2_416(2)) {
jj_consume_token(NOT);
jj_consume_token(BETWEEN);
op = SqlStdOperatorTable.NOT_BETWEEN;
s.clear().add(this);
- if (jj_2_397(2)) {
- if (jj_2_395(2)) {
+ if (jj_2_412(2)) {
+ if (jj_2_410(2)) {
jj_consume_token(SYMMETRIC);
op = SqlStdOperatorTable.SYMMETRIC_NOT_BETWEEN;
- } else if (jj_2_396(2)) {
+ } else if (jj_2_411(2)) {
jj_consume_token(ASYMMETRIC);
} else {
jj_consume_token(-1);
@@ -4976,15 +5134,15 @@
} else {
;
}
- } else if (jj_2_402(2)) {
+ } else if (jj_2_417(2)) {
jj_consume_token(BETWEEN);
op = SqlStdOperatorTable.BETWEEN;
s.clear().add(this);
- if (jj_2_400(2)) {
- if (jj_2_398(2)) {
+ if (jj_2_415(2)) {
+ if (jj_2_413(2)) {
jj_consume_token(SYMMETRIC);
op = SqlStdOperatorTable.SYMMETRIC_BETWEEN;
- } else if (jj_2_399(2)) {
+ } else if (jj_2_414(2)) {
jj_consume_token(ASYMMETRIC);
} else {
jj_consume_token(-1);
@@ -5001,22 +5159,22 @@
list.add(new SqlParserUtil.ToTreeListItem(op, s.pos()));
list.addAll(list3);
list3.clear();
- } else if (jj_2_426(2)) {
+ } else if (jj_2_441(2)) {
checkNonQueryExpression(exprContext);
s.clear().add(this);
- if (jj_2_414(2)) {
- if (jj_2_407(2)) {
+ if (jj_2_429(2)) {
+ if (jj_2_422(2)) {
jj_consume_token(NOT);
- if (jj_2_403(2)) {
+ if (jj_2_418(2)) {
jj_consume_token(LIKE);
op = SqlStdOperatorTable.NOT_LIKE;
- } else if (jj_2_404(2)) {
+ } else if (jj_2_419(2)) {
jj_consume_token(ILIKE);
op = SqlLibraryOperators.NOT_ILIKE;
- } else if (jj_2_405(2)) {
+ } else if (jj_2_420(2)) {
jj_consume_token(RLIKE);
op = SqlLibraryOperators.NOT_RLIKE;
- } else if (jj_2_406(2)) {
+ } else if (jj_2_421(2)) {
jj_consume_token(SIMILAR);
jj_consume_token(TO);
op = SqlStdOperatorTable.NOT_SIMILAR_TO;
@@ -5024,16 +5182,16 @@
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_408(2)) {
+ } else if (jj_2_423(2)) {
jj_consume_token(LIKE);
op = SqlStdOperatorTable.LIKE;
- } else if (jj_2_409(2)) {
+ } else if (jj_2_424(2)) {
jj_consume_token(ILIKE);
op = SqlLibraryOperators.ILIKE;
- } else if (jj_2_410(2)) {
+ } else if (jj_2_425(2)) {
jj_consume_token(RLIKE);
op = SqlLibraryOperators.RLIKE;
- } else if (jj_2_411(2)) {
+ } else if (jj_2_426(2)) {
jj_consume_token(SIMILAR);
jj_consume_token(TO);
op = SqlStdOperatorTable.SIMILAR_TO;
@@ -5041,20 +5199,20 @@
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_415(2)) {
+ } else if (jj_2_430(2)) {
jj_consume_token(NEGATE);
jj_consume_token(TILDE);
op = SqlStdOperatorTable.NEGATED_POSIX_REGEX_CASE_SENSITIVE;
- if (jj_2_412(2)) {
+ if (jj_2_427(2)) {
jj_consume_token(STAR);
op = SqlStdOperatorTable.NEGATED_POSIX_REGEX_CASE_INSENSITIVE;
} else {
;
}
- } else if (jj_2_416(2)) {
+ } else if (jj_2_431(2)) {
jj_consume_token(TILDE);
op = SqlStdOperatorTable.POSIX_REGEX_CASE_SENSITIVE;
- if (jj_2_413(2)) {
+ if (jj_2_428(2)) {
jj_consume_token(STAR);
op = SqlStdOperatorTable.POSIX_REGEX_CASE_INSENSITIVE;
} else {
@@ -5067,7 +5225,7 @@
list2 = Expression2(ExprContext.ACCEPT_SUB_QUERY);
list.add(new SqlParserUtil.ToTreeListItem(op, s.pos()));
list.addAll(list2);
- if (jj_2_417(2)) {
+ if (jj_2_432(2)) {
jj_consume_token(ESCAPE);
e = Expression3(ExprContext.ACCEPT_SUB_QUERY);
s.clear().add(this);
@@ -5078,40 +5236,40 @@
} else {
;
}
- } else if (jj_2_427(2)) {
+ } else if (jj_2_442(2)) {
InfixCast(list, exprContext, s);
- } else if (jj_2_428(3)) {
+ } else if (jj_2_443(3)) {
op = BinaryRowOperator();
checkNonQueryExpression(exprContext);
list.add(new SqlParserUtil.ToTreeListItem(op, getPos()));
AddExpression2b(list, ExprContext.ACCEPT_SUB_QUERY);
- } else if (jj_2_429(2)) {
+ } else if (jj_2_444(2)) {
jj_consume_token(LBRACKET);
- if (jj_2_418(2)) {
+ if (jj_2_433(2)) {
jj_consume_token(OFFSET);
itemOp = SqlLibraryOperators.OFFSET;
jj_consume_token(LPAREN);
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(RPAREN);
- } else if (jj_2_419(2)) {
+ } else if (jj_2_434(2)) {
jj_consume_token(ORDINAL);
itemOp = SqlLibraryOperators.ORDINAL;
jj_consume_token(LPAREN);
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(RPAREN);
- } else if (jj_2_420(2)) {
+ } else if (jj_2_435(2)) {
jj_consume_token(SAFE_OFFSET);
itemOp = SqlLibraryOperators.SAFE_OFFSET;
jj_consume_token(LPAREN);
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(RPAREN);
- } else if (jj_2_421(2)) {
+ } else if (jj_2_436(2)) {
jj_consume_token(SAFE_ORDINAL);
itemOp = SqlLibraryOperators.SAFE_ORDINAL;
jj_consume_token(LPAREN);
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(RPAREN);
- } else if (jj_2_422(2)) {
+ } else if (jj_2_437(2)) {
itemOp = SqlStdOperatorTable.ITEM;
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
} else {
@@ -5123,12 +5281,12 @@
new SqlParserUtil.ToTreeListItem(
itemOp, getPos()));
list.add(e);
- label_46:
+ label_47:
while (true) {
- if (jj_2_423(2)) {
+ if (jj_2_438(2)) {
;
} else {
- break label_46;
+ break label_47;
}
jj_consume_token(DOT);
p = SimpleIdentifier();
@@ -5137,7 +5295,8 @@
SqlStdOperatorTable.DOT, getPos()));
list.add(p);
}
- } else if (jj_2_430(2)) {
+ AddOptionalColonPath(list);
+ } else if (jj_2_445(2)) {
checkNonQueryExpression(exprContext);
op = PostfixRowOperator();
list.add(new SqlParserUtil.ToTreeListItem(op, getPos()));
@@ -5145,10 +5304,10 @@
jj_consume_token(-1);
throw new ParseException();
}
- if (jj_2_431(2)) {
+ if (jj_2_446(2)) {
;
} else {
- break label_45;
+ break label_46;
}
}
{if (true) return list;}
@@ -5160,25 +5319,25 @@
/** Parses a comparison operator inside a SOME / ALL predicate. */
final public SqlKind comp() throws ParseException {
- if (jj_2_433(2)) {
+ if (jj_2_448(2)) {
jj_consume_token(LT);
{if (true) return SqlKind.LESS_THAN;}
- } else if (jj_2_434(2)) {
+ } else if (jj_2_449(2)) {
jj_consume_token(LE);
{if (true) return SqlKind.LESS_THAN_OR_EQUAL;}
- } else if (jj_2_435(2)) {
+ } else if (jj_2_450(2)) {
jj_consume_token(GT);
{if (true) return SqlKind.GREATER_THAN;}
- } else if (jj_2_436(2)) {
+ } else if (jj_2_451(2)) {
jj_consume_token(GE);
{if (true) return SqlKind.GREATER_THAN_OR_EQUAL;}
- } else if (jj_2_437(2)) {
+ } else if (jj_2_452(2)) {
jj_consume_token(EQ);
{if (true) return SqlKind.EQUALS;}
- } else if (jj_2_438(2)) {
+ } else if (jj_2_453(2)) {
jj_consume_token(NE);
{if (true) return SqlKind.NOT_EQUALS;}
- } else if (jj_2_439(2)) {
+ } else if (jj_2_454(2)) {
jj_consume_token(NE2);
if (!this.conformance.isBangEqualAllowed()) {
{if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.bangEqualNotAllowed());}
@@ -5201,39 +5360,50 @@
final SqlNodeList list1;
final Span s;
final Span rowSpan;
- if (jj_2_442(2)) {
+ if (jj_2_457(2)) {
e = AtomicRowExpression();
checkNonQueryExpression(exprContext);
{if (true) return e;}
- } else if (jj_2_443(2)) {
+ } else if (jj_2_458(2)) {
e = CursorExpression(exprContext);
{if (true) return e;}
- } else if (jj_2_444(3)) {
+ } else if (jj_2_459(3)) {
jj_consume_token(ROW);
s = span();
+ pushRowValueStar();
list = ParenthesizedQueryOrCommaList(exprContext);
- if (exprContext != ExprContext.ACCEPT_ALL
- && exprContext != ExprContext.ACCEPT_CURSOR
- && !this.conformance.allowExplicitRowValueConstructor())
- {
- {if (true) throw SqlUtil.newContextException(s.end(list),
- RESOURCE.illegalRowExpression());}
+ try {
+ if (exprContext != ExprContext.ACCEPT_ALL
+ && exprContext != ExprContext.ACCEPT_CURSOR
+ && !this.conformance.allowExplicitRowValueConstructor())
+ {
+ {if (true) throw SqlUtil.newContextException(s.end(list),
+ RESOURCE.illegalRowExpression());}
+ }
+ {if (true) return SqlStdOperatorTable.ROW.createCall(list);}
+ } finally {
+ popRowValueStar();
}
- {if (true) return SqlStdOperatorTable.ROW.createCall(list);}
- } else if (jj_2_445(2)) {
- if (jj_2_440(2)) {
+ } else if (jj_2_460(2)) {
+ if (jj_2_455(2)) {
jj_consume_token(ROW);
- rowSpan = span();
+ rowSpan = span(); pushRowValueStar();
} else {
rowSpan = null;
}
list1 = ParenthesizedQueryOrCommaList(exprContext);
- if (rowSpan != null) {
- // interpret as row constructor
- {if (true) return SqlStdOperatorTable.ROW.createCall(rowSpan.end(list1),
- (List<SqlNode>) list1);}
+ try {
+ if (rowSpan != null) {
+ // interpret as row constructor
+ {if (true) return SqlStdOperatorTable.ROW.createCall(rowSpan.end(list1),
+ (List<SqlNode>) list1);}
+ }
+ } finally {
+ if (rowSpan != null) {
+ popRowValueStar();
+ }
}
- if (jj_2_441(2)) {
+ if (jj_2_456(2)) {
e = IntervalQualifier();
if ((list1.size() == 1)
&& list1.get(0) instanceof SqlCall)
@@ -5291,11 +5461,11 @@
*/
final public SqlNodeList SimpleIdentifierOrListOrEmpty() throws ParseException {
SqlNodeList list;
- if (jj_2_446(2)) {
+ if (jj_2_461(2)) {
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
{if (true) return SqlNodeList.EMPTY;}
- } else if (jj_2_447(2)) {
+ } else if (jj_2_462(2)) {
list = SimpleIdentifierOrList();
{if (true) return list;}
} else {
@@ -5306,24 +5476,24 @@
}
final public SqlOperator periodOperator() throws ParseException {
- if (jj_2_448(2)) {
+ if (jj_2_463(2)) {
jj_consume_token(OVERLAPS);
{if (true) return SqlStdOperatorTable.OVERLAPS;}
- } else if (jj_2_449(2)) {
+ } else if (jj_2_464(2)) {
jj_consume_token(IMMEDIATELY);
jj_consume_token(PRECEDES);
{if (true) return SqlStdOperatorTable.IMMEDIATELY_PRECEDES;}
- } else if (jj_2_450(2)) {
+ } else if (jj_2_465(2)) {
jj_consume_token(PRECEDES);
{if (true) return SqlStdOperatorTable.PRECEDES;}
- } else if (jj_2_451(2)) {
+ } else if (jj_2_466(2)) {
jj_consume_token(IMMEDIATELY);
jj_consume_token(SUCCEEDS);
{if (true) return SqlStdOperatorTable.IMMEDIATELY_SUCCEEDS;}
- } else if (jj_2_452(2)) {
+ } else if (jj_2_467(2)) {
jj_consume_token(SUCCEEDS);
{if (true) return SqlStdOperatorTable.SUCCEEDS;}
- } else if (jj_2_453(2)) {
+ } else if (jj_2_468(2)) {
jj_consume_token(EQUALS);
{if (true) return SqlStdOperatorTable.PERIOD_EQUALS;}
} else {
@@ -5349,9 +5519,9 @@
*/
final public SqlNode UnsignedNumericLiteralOrParam() throws ParseException {
final SqlNode e;
- if (jj_2_454(2)) {
+ if (jj_2_469(2)) {
e = UnsignedNumericLiteral();
- } else if (jj_2_455(2)) {
+ } else if (jj_2_470(2)) {
e = DynamicParam();
} else {
jj_consume_token(-1);
@@ -5372,20 +5542,20 @@
final List<SqlNode> args;
final SqlLiteral quantifier;
p = SimpleIdentifier();
- if (jj_2_459(2147483647)) {
+ if (jj_2_474(2147483647)) {
s = span();
- if (jj_2_456(2)) {
+ if (jj_2_471(2)) {
jj_consume_token(LPAREN);
jj_consume_token(STAR);
quantifier = null;
args = ImmutableList.of(SqlIdentifier.star(getPos()));
jj_consume_token(RPAREN);
- } else if (jj_2_457(2)) {
+ } else if (jj_2_472(2)) {
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
quantifier = null;
args = ImmutableList.of();
- } else if (jj_2_458(2)) {
+ } else if (jj_2_473(2)) {
args = FunctionParameterList(ExprContext.ACCEPT_SUB_QUERY);
quantifier = (SqlLiteral) args.get(0);
args.remove(0);
@@ -5412,16 +5582,16 @@
final SqlNodeList orderBy;
final Pair<SqlParserPos, SqlOperator> nullTreatment;
final SqlNode separator;
- if (jj_2_460(2)) {
+ if (jj_2_475(2)) {
jj_consume_token(ARRAY_AGG);
s = span(); op = SqlLibraryOperators.ARRAY_AGG;
- } else if (jj_2_461(2)) {
+ } else if (jj_2_476(2)) {
jj_consume_token(ARRAY_CONCAT_AGG);
s = span(); op = SqlLibraryOperators.ARRAY_CONCAT_AGG;
- } else if (jj_2_462(2)) {
+ } else if (jj_2_477(2)) {
jj_consume_token(GROUP_CONCAT);
s = span(); op = SqlLibraryOperators.GROUP_CONCAT;
- } else if (jj_2_463(2)) {
+ } else if (jj_2_478(2)) {
jj_consume_token(STRING_AGG);
s = span(); op = SqlLibraryOperators.STRING_AGG;
} else {
@@ -5429,18 +5599,18 @@
throw new ParseException();
}
jj_consume_token(LPAREN);
- if (jj_2_464(2)) {
+ if (jj_2_479(2)) {
qualifier = AllOrDistinct();
} else {
qualifier = null;
}
AddArg(args, ExprContext.ACCEPT_SUB_QUERY);
- label_47:
+ label_48:
while (true) {
- if (jj_2_465(2)) {
+ if (jj_2_480(2)) {
;
} else {
- break label_47;
+ break label_48;
}
jj_consume_token(COMMA);
// a comma-list can't appear where only a query is expected
@@ -5448,18 +5618,18 @@
checkNonQueryExpression(ExprContext.ACCEPT_SUB_QUERY);
AddArg(args, ExprContext.ACCEPT_SUB_QUERY);
}
- if (jj_2_466(2)) {
+ if (jj_2_481(2)) {
nullTreatment = NullTreatment();
} else {
nullTreatment = null;
}
- if (jj_2_467(2)) {
+ if (jj_2_482(2)) {
orderBy = OrderBy(true);
args.add(orderBy);
} else {
;
}
- if (jj_2_468(2)) {
+ if (jj_2_483(2)) {
jj_consume_token(SEPARATOR);
s2 = span();
separator = StringLiteral();
@@ -5492,10 +5662,10 @@
final SqlNode e;
final List<SqlNode> args = new ArrayList<SqlNode>();
final Pair<SqlParserPos, SqlOperator> nullTreatment;
- if (jj_2_469(2)) {
+ if (jj_2_484(2)) {
jj_consume_token(PERCENTILE_CONT);
op = SqlStdOperatorTable.PERCENTILE_CONT;
- } else if (jj_2_470(2)) {
+ } else if (jj_2_485(2)) {
jj_consume_token(PERCENTILE_DISC);
op = SqlStdOperatorTable.PERCENTILE_DISC;
} else {
@@ -5505,14 +5675,14 @@
s = span();
jj_consume_token(LPAREN);
AddArg(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_472(2)) {
+ if (jj_2_487(2)) {
jj_consume_token(RPAREN);
{if (true) return op.createCall(s.end(this), args);}
- } else if (jj_2_473(2)) {
+ } else if (jj_2_488(2)) {
jj_consume_token(COMMA);
e = NumericLiteral();
args.add(e);
- if (jj_2_471(2)) {
+ if (jj_2_486(2)) {
nullTreatment = NullTreatment();
} else {
nullTreatment = null;
@@ -5540,33 +5710,36 @@
*/
final public SqlNode AtomicRowExpression() throws ParseException {
final SqlNode e;
- if (jj_2_474(2)) {
+ if (jj_2_489(2)) {
e = LiteralOrIntervalExpression();
- } else if (jj_2_475(2)) {
+ } else if (jj_2_490(2)) {
e = DynamicParam();
- } else if (jj_2_476(2)) {
+ } else if (jj_2_491(2)) {
e = BuiltinFunctionCall();
- } else if (jj_2_477(2)) {
+ } else if (jj_2_492(2)) {
e = JdbcFunctionCall();
- } else if (jj_2_478(2)) {
+ } else if (jj_2_493(2)) {
e = MultisetConstructor();
- } else if (jj_2_479(2)) {
+ } else if (jj_2_494(2)) {
e = ArrayConstructor();
- } else if (jj_2_480(3)) {
+ } else if (jj_2_495(3)) {
e = MapConstructor();
- } else if (jj_2_481(2)) {
+ } else if (jj_2_496(2)) {
e = PeriodConstructor();
- } else if (jj_2_482(2147483647)) {
+ } else if (jj_2_497(2147483647)) {
e = NamedFunctionCall();
- } else if (jj_2_483(2)) {
+ } else if (jj_2_498(2)) {
e = ContextVariable();
- } else if (jj_2_484(2)) {
+ } else if (jj_2_499(2)) {
e = CompoundIdentifier();
- } else if (jj_2_485(2)) {
+ } else if (allowRowValueStar()) {
+ jj_consume_token(STAR);
+ {if (true) return SqlIdentifier.star(getPos());}
+ } else if (jj_2_500(2)) {
e = NewSpecification();
- } else if (jj_2_486(2)) {
+ } else if (jj_2_501(2)) {
e = CaseExpression();
- } else if (jj_2_487(2)) {
+ } else if (jj_2_502(2)) {
e = SequenceExpression();
} else {
jj_consume_token(-1);
@@ -5587,12 +5760,12 @@
final List<SqlNode> thenList = new ArrayList<SqlNode>();
jj_consume_token(CASE);
s = span();
- if (jj_2_488(2)) {
+ if (jj_2_503(2)) {
caseIdentifier = Expression(ExprContext.ACCEPT_SUB_QUERY);
} else {
caseIdentifier = null;
}
- label_48:
+ label_49:
while (true) {
jj_consume_token(WHEN);
whenSpan.add(this);
@@ -5605,13 +5778,13 @@
thenSpan.add(this);
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
thenList.add(e);
- if (jj_2_489(2)) {
+ if (jj_2_504(2)) {
;
} else {
- break label_48;
+ break label_49;
}
}
- if (jj_2_490(2)) {
+ if (jj_2_505(2)) {
jj_consume_token(ELSE);
elseClause = Expression(ExprContext.ACCEPT_SUB_QUERY);
} else {
@@ -5629,10 +5802,10 @@
final Span s;
final SqlOperator f;
final SqlNode sequenceRef;
- if (jj_2_491(2)) {
+ if (jj_2_506(2)) {
jj_consume_token(NEXT);
f = SqlStdOperatorTable.NEXT_VALUE; s = span();
- } else if (jj_2_492(3)) {
+ } else if (jj_2_507(3)) {
jj_consume_token(CURRENT);
f = SqlStdOperatorTable.CURRENT_VALUE; s = span();
} else {
@@ -5653,16 +5826,16 @@
final public SqlSetOption SqlSetOption(Span s, String scope) throws ParseException {
SqlIdentifier name;
final SqlNode val;
- if (jj_2_498(2)) {
+ if (jj_2_513(2)) {
jj_consume_token(SET);
s.add(this);
name = CompoundIdentifier();
jj_consume_token(EQ);
- if (jj_2_493(2)) {
+ if (jj_2_508(2)) {
val = Literal();
- } else if (jj_2_494(2)) {
+ } else if (jj_2_509(2)) {
val = SimpleIdentifier();
- } else if (jj_2_495(2)) {
+ } else if (jj_2_510(2)) {
jj_consume_token(ON);
// OFF is handled by SimpleIdentifier, ON handled here.
val = new SqlIdentifier(token.image.toUpperCase(Locale.ROOT),
@@ -5672,12 +5845,12 @@
throw new ParseException();
}
{if (true) return new SqlSetOption(s.end(val), scope, (SqlNode) name, val);}
- } else if (jj_2_499(2)) {
+ } else if (jj_2_514(2)) {
jj_consume_token(RESET);
s.add(this);
- if (jj_2_496(2)) {
+ if (jj_2_511(2)) {
name = CompoundIdentifier();
- } else if (jj_2_497(2)) {
+ } else if (jj_2_512(2)) {
jj_consume_token(ALL);
name = new SqlIdentifier(token.image.toUpperCase(Locale.ROOT),
getPos());
@@ -5710,9 +5883,9 @@
}
final public String Scope() throws ParseException {
- if (jj_2_500(2)) {
+ if (jj_2_515(2)) {
jj_consume_token(SYSTEM);
- } else if (jj_2_501(2)) {
+ } else if (jj_2_516(2)) {
jj_consume_token(SESSION);
} else {
jj_consume_token(-1);
@@ -5731,20 +5904,20 @@
final SqlCreate create;
jj_consume_token(CREATE);
s = span();
- if (jj_2_502(2)) {
+ if (jj_2_517(2)) {
jj_consume_token(OR);
jj_consume_token(REPLACE);
replace = true;
} else {
;
}
- if (jj_2_503(2)) {
+ if (jj_2_518(2)) {
create = SqlCreateTable(s, replace);
- } else if (jj_2_504(2)) {
+ } else if (jj_2_519(2)) {
create = SqlCreateIndex(s, replace);
- } else if (jj_2_505(2)) {
+ } else if (jj_2_520(2)) {
create = SqlCreateUser(s, replace);
- } else if (jj_2_506(2)) {
+ } else if (jj_2_521(2)) {
create = SqlCreateView(s, replace);
} else {
jj_consume_token(-1);
@@ -5763,13 +5936,13 @@
final SqlDrop drop;
jj_consume_token(DROP);
s = span();
- if (jj_2_507(2)) {
+ if (jj_2_522(2)) {
drop = SqlDropTable(s, replace);
- } else if (jj_2_508(2)) {
+ } else if (jj_2_523(2)) {
drop = SqlDropIndex(s, replace);
- } else if (jj_2_509(2)) {
+ } else if (jj_2_524(2)) {
drop = SqlDropUser(s, replace);
- } else if (jj_2_510(2)) {
+ } else if (jj_2_525(2)) {
drop = SqlDropView(s, replace);
} else {
jj_consume_token(-1);
@@ -5791,9 +5964,9 @@
*/
final public SqlNode Literal() throws ParseException {
SqlNode e;
- if (jj_2_511(2)) {
+ if (jj_2_526(2)) {
e = NonIntervalLiteral();
- } else if (jj_2_512(2)) {
+ } else if (jj_2_527(2)) {
e = IntervalLiteral();
} else {
jj_consume_token(-1);
@@ -5806,13 +5979,13 @@
/** Parses a literal that is not an interval literal. */
final public SqlNode NonIntervalLiteral() throws ParseException {
final SqlNode e;
- if (jj_2_513(2)) {
+ if (jj_2_528(2)) {
e = NumericLiteral();
- } else if (jj_2_514(2)) {
+ } else if (jj_2_529(2)) {
e = StringLiteral();
- } else if (jj_2_515(2)) {
+ } else if (jj_2_530(2)) {
e = SpecialLiteral();
- } else if (jj_2_516(2)) {
+ } else if (jj_2_531(2)) {
e = DateTimeLiteral();
} else {
jj_consume_token(-1);
@@ -5830,9 +6003,9 @@
* LOOKAHEAD. */
final public SqlNode LiteralOrIntervalExpression() throws ParseException {
final SqlNode e;
- if (jj_2_517(2)) {
+ if (jj_2_532(2)) {
e = IntervalLiteralOrExpression();
- } else if (jj_2_518(2)) {
+ } else if (jj_2_533(2)) {
e = NonIntervalLiteral();
} else {
jj_consume_token(-1);
@@ -5845,17 +6018,17 @@
/** Parses a unsigned numeric literal */
final public SqlNumericLiteral UnsignedNumericLiteral() throws ParseException {
final String p;
- if (jj_2_519(2)) {
+ if (jj_2_534(2)) {
jj_consume_token(UNSIGNED_INTEGER_LITERAL);
{if (true) return SqlLiteral.createExactNumeric(token.image, getPos());}
- } else if (jj_2_520(2)) {
+ } else if (jj_2_535(2)) {
jj_consume_token(DECIMAL_NUMERIC_LITERAL);
{if (true) return SqlLiteral.createExactNumeric(token.image, getPos());}
- } else if (jj_2_521(2)) {
+ } else if (jj_2_536(2)) {
jj_consume_token(DECIMAL);
p = SimpleStringLiteral();
{if (true) return SqlParserUtil.parseDecimalLiteral(SqlParserUtil.trim(p, " "), getPos());}
- } else if (jj_2_522(2)) {
+ } else if (jj_2_537(2)) {
jj_consume_token(APPROX_NUMERIC_LITERAL);
{if (true) return SqlLiteral.createApproxNumeric(token.image, getPos());}
} else {
@@ -5869,16 +6042,16 @@
final public SqlLiteral NumericLiteral() throws ParseException {
final SqlNumericLiteral num;
final Span s;
- if (jj_2_523(2)) {
+ if (jj_2_538(2)) {
jj_consume_token(PLUS);
num = UnsignedNumericLiteral();
{if (true) return num;}
- } else if (jj_2_524(2)) {
+ } else if (jj_2_539(2)) {
jj_consume_token(MINUS);
s = span();
num = UnsignedNumericLiteral();
{if (true) return SqlLiteral.createNegative(num, s.end(this));}
- } else if (jj_2_525(2)) {
+ } else if (jj_2_540(2)) {
num = UnsignedNumericLiteral();
{if (true) return num;}
} else {
@@ -5890,16 +6063,16 @@
/** Parse a special literal keyword */
final public SqlLiteral SpecialLiteral() throws ParseException {
- if (jj_2_526(2)) {
+ if (jj_2_541(2)) {
jj_consume_token(TRUE);
{if (true) return SqlLiteral.createBoolean(true, getPos());}
- } else if (jj_2_527(2)) {
+ } else if (jj_2_542(2)) {
jj_consume_token(FALSE);
{if (true) return SqlLiteral.createBoolean(false, getPos());}
- } else if (jj_2_528(2)) {
+ } else if (jj_2_543(2)) {
jj_consume_token(UNKNOWN);
{if (true) return SqlLiteral.createUnknown(getPos());}
- } else if (jj_2_529(2)) {
+ } else if (jj_2_544(2)) {
jj_consume_token(NULL);
{if (true) return SqlLiteral.createNull(getPos());}
} else {
@@ -5926,7 +6099,7 @@
char unicodeEscapeChar = 0;
String charSet = null;
SqlCharStringLiteral literal;
- if (jj_2_534(2)) {
+ if (jj_2_549(2)) {
jj_consume_token(BINARY_STRING_LITERAL);
frags = new ArrayList<SqlLiteral>();
try {
@@ -5936,15 +6109,15 @@
{if (true) throw SqlUtil.newContextException(getPos(),
RESOURCE.illegalBinaryString(token.image));}
}
- label_49:
+ label_50:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case QUOTED_STRING:
;
break;
default:
- jj_la1[5] = jj_gen;
- break label_49;
+ jj_la1[6] = jj_gen;
+ break label_50;
}
jj_consume_token(QUOTED_STRING);
try {
@@ -5962,13 +6135,13 @@
SqlParserPos pos2 = SqlParserPos.sum(frags);
{if (true) return SqlStdOperatorTable.LITERAL_CHAIN.createCall(pos2, frags);}
}
- } else if (jj_2_535(2)) {
- if (jj_2_530(2)) {
+ } else if (jj_2_550(2)) {
+ if (jj_2_545(2)) {
jj_consume_token(PREFIXED_STRING_LITERAL);
charSet = SqlParserUtil.getCharacterSet(token.image);
- } else if (jj_2_531(2)) {
+ } else if (jj_2_546(2)) {
jj_consume_token(QUOTED_STRING);
- } else if (jj_2_532(2)) {
+ } else if (jj_2_547(2)) {
jj_consume_token(UNICODE_STRING_LITERAL);
// TODO jvs 2-Feb-2009: support the explicit specification of
// a character set for Unicode string literals, per SQL:2003
@@ -5987,15 +6160,15 @@
{if (true) throw SqlUtil.newContextException(getPos(),
RESOURCE.unknownCharacterSet(charSet));}
}
- label_50:
+ label_51:
while (true) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case QUOTED_STRING:
;
break;
default:
- jj_la1[6] = jj_gen;
- break label_50;
+ jj_la1[7] = jj_gen;
+ break label_51;
}
jj_consume_token(QUOTED_STRING);
p = SqlParserUtil.parseString(token.image);
@@ -6007,7 +6180,7 @@
RESOURCE.unknownCharacterSet(charSet));}
}
}
- if (jj_2_533(2)) {
+ if (jj_2_548(2)) {
jj_consume_token(UESCAPE);
jj_consume_token(QUOTED_STRING);
if (unicodeEscapeChar == 0) {
@@ -6033,7 +6206,7 @@
SqlParserPos pos2 = SqlParserPos.sum(rands);
{if (true) return SqlStdOperatorTable.LITERAL_CHAIN.createCall(pos2, rands);}
}
- } else if (jj_2_536(2)) {
+ } else if (jj_2_551(2)) {
jj_consume_token(C_STYLE_ESCAPED_STRING_LITERAL);
try {
p = SqlParserUtil.parseCString(getToken(0).image);
@@ -6042,7 +6215,7 @@
RESOURCE.unicodeEscapeMalformed(e.i));}
}
{if (true) return SqlLiteral.createCharString(p, "UTF16", getPos());}
- } else if (jj_2_537(2)) {
+ } else if (jj_2_552(2)) {
jj_consume_token(BIG_QUERY_DOUBLE_QUOTED_STRING);
p = SqlParserUtil.stripQuotes(getToken(0).image, DQ, DQ, "\\\"",
Casing.UNCHANGED);
@@ -6052,7 +6225,7 @@
{if (true) throw SqlUtil.newContextException(getPos(),
RESOURCE.unknownCharacterSet(charSet));}
}
- } else if (jj_2_538(2)) {
+ } else if (jj_2_553(2)) {
jj_consume_token(BIG_QUERY_QUOTED_STRING);
p = SqlParserUtil.stripQuotes(getToken(0).image, "'", "'", "\\'",
Casing.UNCHANGED);
@@ -6074,13 +6247,13 @@
* on BigQuery also matches a double-quoted string, such as "foo".
* Returns the value of the string with quotes removed. */
final public String SimpleStringLiteral() throws ParseException {
- if (jj_2_539(2)) {
+ if (jj_2_554(2)) {
jj_consume_token(QUOTED_STRING);
{if (true) return SqlParserUtil.parseString(token.image);}
- } else if (jj_2_540(2)) {
+ } else if (jj_2_555(2)) {
jj_consume_token(BIG_QUERY_QUOTED_STRING);
{if (true) return SqlParserUtil.stripQuotes(token.image, "'", "'", "\\'", Casing.UNCHANGED);}
- } else if (jj_2_541(2)) {
+ } else if (jj_2_556(2)) {
jj_consume_token(BIG_QUERY_DOUBLE_QUOTED_STRING);
{if (true) return SqlParserUtil.stripQuotes(token.image, DQ, DQ, "\\\"", Casing.UNCHANGED);}
} else {
@@ -6097,55 +6270,55 @@
final String p;
final Span s;
boolean local = false;
- if (jj_2_544(2)) {
+ if (jj_2_559(2)) {
jj_consume_token(LBRACE_D);
jj_consume_token(QUOTED_STRING);
p = SqlParserUtil.parseString(token.image);
jj_consume_token(RBRACE);
{if (true) return SqlParserUtil.parseDateLiteral(p, getPos());}
- } else if (jj_2_545(2)) {
+ } else if (jj_2_560(2)) {
jj_consume_token(LBRACE_T);
jj_consume_token(QUOTED_STRING);
p = SqlParserUtil.parseString(token.image);
jj_consume_token(RBRACE);
{if (true) return SqlParserUtil.parseTimeLiteral(p, getPos());}
- } else if (jj_2_546(2)) {
+ } else if (jj_2_561(2)) {
jj_consume_token(LBRACE_TS);
s = span();
jj_consume_token(QUOTED_STRING);
p = SqlParserUtil.parseString(token.image);
jj_consume_token(RBRACE);
{if (true) return SqlParserUtil.parseTimestampLiteral(p, s.end(this));}
- } else if (jj_2_547(2)) {
+ } else if (jj_2_562(2)) {
jj_consume_token(DATE);
s = span();
p = SimpleStringLiteral();
{if (true) return SqlLiteral.createUnknown("DATE", p, s.end(this));}
- } else if (jj_2_548(2)) {
+ } else if (jj_2_563(2)) {
jj_consume_token(DATETIME);
s = span();
p = SimpleStringLiteral();
{if (true) return SqlLiteral.createUnknown("DATETIME", p, s.end(this));}
- } else if (jj_2_549(2)) {
+ } else if (jj_2_564(2)) {
jj_consume_token(TIME);
s = span();
p = SimpleStringLiteral();
{if (true) return SqlLiteral.createUnknown("TIME", p, s.end(this));}
- } else if (jj_2_550(2)) {
+ } else if (jj_2_565(2)) {
jj_consume_token(UUID);
s = span();
p = SimpleStringLiteral();
{if (true) return SqlLiteral.createUnknown("UUID", p, s.end(this));}
- } else if (jj_2_551(2)) {
+ } else if (jj_2_566(2)) {
jj_consume_token(TIMESTAMP);
s = span();
p = SimpleStringLiteral();
{if (true) return SqlLiteral.createUnknown("TIMESTAMP", p, s.end(this));}
- } else if (jj_2_552(2)) {
+ } else if (jj_2_567(2)) {
jj_consume_token(TIME);
s = span();
jj_consume_token(WITH);
- if (jj_2_542(2)) {
+ if (jj_2_557(2)) {
jj_consume_token(LOCAL);
local = true;
} else {
@@ -6155,11 +6328,11 @@
jj_consume_token(ZONE);
p = SimpleStringLiteral();
{if (true) return SqlLiteral.createUnknown("TIME WITH " + (local ? "LOCAL " : "") + "TIME ZONE", p, s.end(this));}
- } else if (jj_2_553(2)) {
+ } else if (jj_2_568(2)) {
jj_consume_token(TIMESTAMP);
s = span();
jj_consume_token(WITH);
- if (jj_2_543(2)) {
+ if (jj_2_558(2)) {
jj_consume_token(LOCAL);
local = true;
} else {
@@ -6184,13 +6357,13 @@
final Span s;
final SqlLiteral quantifier;
final List<? extends SqlNode> args;
- if (jj_2_554(2)) {
+ if (jj_2_569(2)) {
jj_consume_token(DATE);
- } else if (jj_2_555(2)) {
+ } else if (jj_2_570(2)) {
jj_consume_token(TIME);
- } else if (jj_2_556(2)) {
+ } else if (jj_2_571(2)) {
jj_consume_token(DATETIME);
- } else if (jj_2_557(2)) {
+ } else if (jj_2_572(2)) {
jj_consume_token(TIMESTAMP);
} else {
jj_consume_token(-1);
@@ -6212,22 +6385,22 @@
final Span s;
jj_consume_token(MULTISET);
s = span();
- if (jj_2_559(2)) {
+ if (jj_2_574(2)) {
jj_consume_token(LPAREN);
// by sub query "MULTISET(SELECT * FROM T)"
e = LeafQueryOrExpr(ExprContext.ACCEPT_QUERY);
jj_consume_token(RPAREN);
{if (true) return SqlStdOperatorTable.MULTISET_QUERY.createCall(
s.end(this), e);}
- } else if (jj_2_560(2)) {
+ } else if (jj_2_575(2)) {
jj_consume_token(LBRACKET);
AddExpression(args, ExprContext.ACCEPT_NON_QUERY);
- label_51:
+ label_52:
while (true) {
- if (jj_2_558(2)) {
+ if (jj_2_573(2)) {
;
} else {
- break label_51;
+ break label_52;
}
jj_consume_token(COMMA);
AddExpression(args, ExprContext.ACCEPT_NON_QUERY);
@@ -6250,12 +6423,12 @@
final String p;
jj_consume_token(ARRAY);
s = span();
- if (jj_2_564(2)) {
- if (jj_2_561(2)) {
+ if (jj_2_579(2)) {
+ if (jj_2_576(2)) {
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
args = SqlNodeList.EMPTY;
- } else if (jj_2_562(2)) {
+ } else if (jj_2_577(2)) {
args = ParenthesizedQueryOrCommaList(ExprContext.ACCEPT_ALL);
} else {
jj_consume_token(-1);
@@ -6269,9 +6442,9 @@
// equivalent to standard 'ARRAY [1, 2]'
{if (true) return SqlLibraryOperators.ARRAY.createCall(s.end(this), args.getList());}
}
- } else if (jj_2_565(2)) {
+ } else if (jj_2_580(2)) {
jj_consume_token(LBRACKET);
- if (jj_2_563(2)) {
+ if (jj_2_578(2)) {
args = ExpressionCommaList(s, ExprContext.ACCEPT_SUB_QUERY);
} else {
args = SqlNodeList.EMPTY;
@@ -6292,29 +6465,29 @@
final Span s;
jj_consume_token(LBRACE);
s = span();
- if (jj_2_568(2)) {
+ if (jj_2_583(2)) {
e = Literal();
list = startList(e);
- label_52:
+ label_53:
while (true) {
- if (jj_2_566(2)) {
+ if (jj_2_581(2)) {
;
} else {
- break label_52;
+ break label_53;
}
jj_consume_token(COMMA);
e = Literal();
list.add(e);
}
- } else if (jj_2_569(2)) {
+ } else if (jj_2_584(2)) {
e = ArrayLiteral();
list = startList(e);
- label_53:
+ label_54:
while (true) {
- if (jj_2_567(2)) {
+ if (jj_2_582(2)) {
;
} else {
- break label_53;
+ break label_54;
}
jj_consume_token(COMMA);
e = ArrayLiteral();
@@ -6334,12 +6507,12 @@
final Span s;
jj_consume_token(MAP);
s = span();
- if (jj_2_573(2)) {
- if (jj_2_570(2)) {
+ if (jj_2_588(2)) {
+ if (jj_2_585(2)) {
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
args = SqlNodeList.EMPTY;
- } else if (jj_2_571(2)) {
+ } else if (jj_2_586(2)) {
args = ParenthesizedQueryOrCommaList(ExprContext.ACCEPT_ALL);
} else {
jj_consume_token(-1);
@@ -6352,9 +6525,9 @@
// MAP function e.g. "MAP(1, 2)" equivalent to standard "MAP[1, 2]"
{if (true) return SqlLibraryOperators.MAP.createCall(s.end(this), args.getList());}
}
- } else if (jj_2_574(2)) {
+ } else if (jj_2_589(2)) {
jj_consume_token(LBRACKET);
- if (jj_2_572(2)) {
+ if (jj_2_587(2)) {
args = ExpressionCommaList(s, ExprContext.ACCEPT_NON_QUERY);
} else {
args = SqlNodeList.EMPTY;
@@ -6394,11 +6567,11 @@
final Span s;
jj_consume_token(INTERVAL);
s = span();
- if (jj_2_577(2)) {
- if (jj_2_575(2)) {
+ if (jj_2_592(2)) {
+ if (jj_2_590(2)) {
jj_consume_token(MINUS);
sign = -1;
- } else if (jj_2_576(2)) {
+ } else if (jj_2_591(2)) {
jj_consume_token(PLUS);
sign = 1;
} else {
@@ -6426,11 +6599,11 @@
SqlNode e;
jj_consume_token(INTERVAL);
s = span();
- if (jj_2_580(2)) {
- if (jj_2_578(2)) {
+ if (jj_2_595(2)) {
+ if (jj_2_593(2)) {
jj_consume_token(MINUS);
sign = -1;
- } else if (jj_2_579(2)) {
+ } else if (jj_2_594(2)) {
jj_consume_token(PLUS);
sign = 1;
} else {
@@ -6440,20 +6613,20 @@
} else {
;
}
- if (jj_2_584(2)) {
+ if (jj_2_599(2)) {
// literal (with quoted string)
p = SimpleStringLiteral();
intervalQualifier = IntervalQualifier();
{if (true) return SqlParserUtil.parseIntervalLiteral(s.end(intervalQualifier),
sign, p, intervalQualifier);}
- } else if (jj_2_585(2)) {
- if (jj_2_581(2)) {
+ } else if (jj_2_600(2)) {
+ if (jj_2_596(2)) {
jj_consume_token(LPAREN);
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(RPAREN);
- } else if (jj_2_582(2)) {
+ } else if (jj_2_597(2)) {
e = UnsignedNumericLiteral();
- } else if (jj_2_583(2)) {
+ } else if (jj_2_598(2)) {
e = CompoundIdentifier();
} else {
jj_consume_token(-1);
@@ -6473,10 +6646,10 @@
}
final public TimeUnit Year() throws ParseException {
- if (jj_2_586(2)) {
+ if (jj_2_601(2)) {
jj_consume_token(YEAR);
{if (true) return TimeUnit.YEAR;}
- } else if (jj_2_587(2)) {
+ } else if (jj_2_602(2)) {
jj_consume_token(YEARS);
{if (true) return warn(TimeUnit.YEAR);}
} else {
@@ -6487,10 +6660,10 @@
}
final public TimeUnit Quarter() throws ParseException {
- if (jj_2_588(2)) {
+ if (jj_2_603(2)) {
jj_consume_token(QUARTER);
{if (true) return TimeUnit.QUARTER;}
- } else if (jj_2_589(2)) {
+ } else if (jj_2_604(2)) {
jj_consume_token(QUARTERS);
{if (true) return warn(TimeUnit.QUARTER);}
} else {
@@ -6501,10 +6674,10 @@
}
final public TimeUnit Month() throws ParseException {
- if (jj_2_590(2)) {
+ if (jj_2_605(2)) {
jj_consume_token(MONTH);
{if (true) return TimeUnit.MONTH;}
- } else if (jj_2_591(2)) {
+ } else if (jj_2_606(2)) {
jj_consume_token(MONTHS);
{if (true) return warn(TimeUnit.MONTH);}
} else {
@@ -6515,10 +6688,10 @@
}
final public TimeUnit Week() throws ParseException {
- if (jj_2_592(2)) {
+ if (jj_2_607(2)) {
jj_consume_token(WEEK);
{if (true) return TimeUnit.WEEK;}
- } else if (jj_2_593(2)) {
+ } else if (jj_2_608(2)) {
jj_consume_token(WEEKS);
{if (true) return warn(TimeUnit.WEEK);}
} else {
@@ -6529,10 +6702,10 @@
}
final public TimeUnit Day() throws ParseException {
- if (jj_2_594(2)) {
+ if (jj_2_609(2)) {
jj_consume_token(DAY);
{if (true) return TimeUnit.DAY;}
- } else if (jj_2_595(2)) {
+ } else if (jj_2_610(2)) {
jj_consume_token(DAYS);
{if (true) return warn(TimeUnit.DAY);}
} else {
@@ -6543,10 +6716,10 @@
}
final public TimeUnit Hour() throws ParseException {
- if (jj_2_596(2)) {
+ if (jj_2_611(2)) {
jj_consume_token(HOUR);
{if (true) return TimeUnit.HOUR;}
- } else if (jj_2_597(2)) {
+ } else if (jj_2_612(2)) {
jj_consume_token(HOURS);
{if (true) return warn(TimeUnit.HOUR);}
} else {
@@ -6557,10 +6730,10 @@
}
final public TimeUnit Minute() throws ParseException {
- if (jj_2_598(2)) {
+ if (jj_2_613(2)) {
jj_consume_token(MINUTE);
{if (true) return TimeUnit.MINUTE;}
- } else if (jj_2_599(2)) {
+ } else if (jj_2_614(2)) {
jj_consume_token(MINUTES);
{if (true) return warn(TimeUnit.MINUTE);}
} else {
@@ -6571,10 +6744,10 @@
}
final public TimeUnit Second() throws ParseException {
- if (jj_2_600(2)) {
+ if (jj_2_615(2)) {
jj_consume_token(SECOND);
{if (true) return TimeUnit.SECOND;}
- } else if (jj_2_601(2)) {
+ } else if (jj_2_616(2)) {
jj_consume_token(SECONDS);
{if (true) return warn(TimeUnit.SECOND);}
} else {
@@ -6584,48 +6757,57 @@
throw new Error("Missing return statement in function");
}
+ final public SqlIntervalQualifier IntervalWithoutQualifier() throws ParseException {
+ final Span s;
+ int secondFracPrec = RelDataType.PRECISION_NOT_SPECIFIED;
+ s = span();
+ {if (true) return new SqlIntervalQualifier(TimeUnit.SECOND, -1, null, secondFracPrec,
+ s.end(this));}
+ throw new Error("Missing return statement in function");
+ }
+
final public SqlIntervalQualifier IntervalQualifier() throws ParseException {
final Span s;
final TimeUnit start;
final TimeUnit end;
final int startPrec;
int secondFracPrec = RelDataType.PRECISION_NOT_SPECIFIED;
- if (jj_2_615(2)) {
+ if (jj_2_630(2)) {
start = Year();
s = span();
startPrec = PrecisionOpt();
- if (jj_2_602(2)) {
+ if (jj_2_617(2)) {
jj_consume_token(TO);
end = Month();
} else {
end = null;
}
- } else if (jj_2_616(2)) {
+ } else if (jj_2_631(2)) {
start = Quarter();
s = span();
startPrec = PrecisionOpt();
end = null;
- } else if (jj_2_617(2)) {
+ } else if (jj_2_632(2)) {
start = Month();
s = span();
startPrec = PrecisionOpt();
end = null;
- } else if (jj_2_618(2)) {
+ } else if (jj_2_633(2)) {
start = Week();
s = span();
startPrec = PrecisionOpt();
end = null;
- } else if (jj_2_619(2)) {
+ } else if (jj_2_634(2)) {
start = Day();
s = span();
startPrec = PrecisionOpt();
- if (jj_2_606(2)) {
+ if (jj_2_621(2)) {
jj_consume_token(TO);
- if (jj_2_603(2)) {
+ if (jj_2_618(2)) {
end = Hour();
- } else if (jj_2_604(2)) {
+ } else if (jj_2_619(2)) {
end = Minute();
- } else if (jj_2_605(2)) {
+ } else if (jj_2_620(2)) {
end = Second();
secondFracPrec = PrecisionOpt();
} else {
@@ -6635,17 +6817,17 @@
} else {
end = null;
}
- } else if (jj_2_620(2)) {
+ } else if (jj_2_635(2)) {
start = Hour();
s = span();
startPrec = PrecisionOpt();
- if (jj_2_610(2)) {
+ if (jj_2_625(2)) {
jj_consume_token(TO);
- if (jj_2_608(2)) {
+ if (jj_2_623(2)) {
end = Minute();
- } else if (jj_2_609(2)) {
+ } else if (jj_2_624(2)) {
end = Second();
- if (jj_2_607(2)) {
+ if (jj_2_622(2)) {
jj_consume_token(LPAREN);
secondFracPrec = UnsignedIntLiteral();
jj_consume_token(RPAREN);
@@ -6659,14 +6841,14 @@
} else {
end = null;
}
- } else if (jj_2_621(2)) {
+ } else if (jj_2_636(2)) {
start = Minute();
s = span();
startPrec = PrecisionOpt();
- if (jj_2_612(2)) {
+ if (jj_2_627(2)) {
jj_consume_token(TO);
end = Second();
- if (jj_2_611(2)) {
+ if (jj_2_626(2)) {
jj_consume_token(LPAREN);
secondFracPrec = UnsignedIntLiteral();
jj_consume_token(RPAREN);
@@ -6676,13 +6858,13 @@
} else {
end = null;
}
- } else if (jj_2_622(2)) {
+ } else if (jj_2_637(2)) {
start = Second();
s = span();
- if (jj_2_614(2)) {
+ if (jj_2_629(2)) {
jj_consume_token(LPAREN);
startPrec = UnsignedIntLiteral();
- if (jj_2_613(2)) {
+ if (jj_2_628(2)) {
jj_consume_token(COMMA);
secondFracPrec = UnsignedIntLiteral();
} else {
@@ -6708,20 +6890,20 @@
final TimeUnit start;
int startPrec = RelDataType.PRECISION_NOT_SPECIFIED;
int secondFracPrec = RelDataType.PRECISION_NOT_SPECIFIED;
- if (jj_2_632(2)) {
- if (jj_2_623(2)) {
+ if (jj_2_647(2)) {
+ if (jj_2_638(2)) {
start = Year();
- } else if (jj_2_624(2)) {
+ } else if (jj_2_639(2)) {
start = Quarter();
- } else if (jj_2_625(2)) {
+ } else if (jj_2_640(2)) {
start = Month();
- } else if (jj_2_626(2)) {
+ } else if (jj_2_641(2)) {
start = Week();
- } else if (jj_2_627(2)) {
+ } else if (jj_2_642(2)) {
start = Day();
- } else if (jj_2_628(2)) {
+ } else if (jj_2_643(2)) {
start = Hour();
- } else if (jj_2_629(2)) {
+ } else if (jj_2_644(2)) {
start = Minute();
} else {
jj_consume_token(-1);
@@ -6729,13 +6911,13 @@
}
s = span();
startPrec = PrecisionOpt();
- } else if (jj_2_633(2)) {
+ } else if (jj_2_648(2)) {
start = Second();
s = span();
- if (jj_2_631(2)) {
+ if (jj_2_646(2)) {
jj_consume_token(LPAREN);
startPrec = UnsignedIntLiteral();
- if (jj_2_630(2)) {
+ if (jj_2_645(2)) {
jj_consume_token(COMMA);
secondFracPrec = UnsignedIntLiteral();
} else {
@@ -6772,10 +6954,10 @@
final public SqlIntervalQualifier TimeUnitOrName() throws ParseException {
final SqlIdentifier unitName;
final SqlIntervalQualifier intervalQualifier;
- if (jj_2_634(2)) {
+ if (jj_2_649(2)) {
intervalQualifier = TimeUnit();
{if (true) return intervalQualifier;}
- } else if (jj_2_635(2)) {
+ } else if (jj_2_650(2)) {
unitName = SimpleIdentifier();
{if (true) return new SqlIntervalQualifier(unitName.getSimple(),
unitName.getParserPosition());}
@@ -6799,49 +6981,49 @@
final public SqlIntervalQualifier TimeUnit() throws ParseException {
final Span span;
final String w;
- if (jj_2_637(2)) {
+ if (jj_2_652(2)) {
jj_consume_token(NANOSECOND);
{if (true) return new SqlIntervalQualifier(TimeUnit.NANOSECOND, null, getPos());}
- } else if (jj_2_638(2)) {
+ } else if (jj_2_653(2)) {
jj_consume_token(MICROSECOND);
{if (true) return new SqlIntervalQualifier(TimeUnit.MICROSECOND, null, getPos());}
- } else if (jj_2_639(2)) {
+ } else if (jj_2_654(2)) {
jj_consume_token(MILLISECOND);
{if (true) return new SqlIntervalQualifier(TimeUnit.MILLISECOND, null, getPos());}
- } else if (jj_2_640(2)) {
+ } else if (jj_2_655(2)) {
jj_consume_token(SECOND);
{if (true) return new SqlIntervalQualifier(TimeUnit.SECOND, null, getPos());}
- } else if (jj_2_641(2)) {
+ } else if (jj_2_656(2)) {
jj_consume_token(MINUTE);
{if (true) return new SqlIntervalQualifier(TimeUnit.MINUTE, null, getPos());}
- } else if (jj_2_642(2)) {
+ } else if (jj_2_657(2)) {
jj_consume_token(HOUR);
{if (true) return new SqlIntervalQualifier(TimeUnit.HOUR, null, getPos());}
- } else if (jj_2_643(2)) {
+ } else if (jj_2_658(2)) {
jj_consume_token(DAY);
{if (true) return new SqlIntervalQualifier(TimeUnit.DAY, null, getPos());}
- } else if (jj_2_644(2)) {
+ } else if (jj_2_659(2)) {
jj_consume_token(DAYOFWEEK);
{if (true) return new SqlIntervalQualifier(TimeUnit.DOW, null, getPos());}
- } else if (jj_2_645(2)) {
+ } else if (jj_2_660(2)) {
jj_consume_token(DAYOFYEAR);
{if (true) return new SqlIntervalQualifier(TimeUnit.DOY, null, getPos());}
- } else if (jj_2_646(2)) {
+ } else if (jj_2_661(2)) {
jj_consume_token(DOW);
{if (true) return new SqlIntervalQualifier(TimeUnit.DOW, null, getPos());}
- } else if (jj_2_647(2)) {
+ } else if (jj_2_662(2)) {
jj_consume_token(DOY);
{if (true) return new SqlIntervalQualifier(TimeUnit.DOY, null, getPos());}
- } else if (jj_2_648(2)) {
+ } else if (jj_2_663(2)) {
jj_consume_token(ISODOW);
{if (true) return new SqlIntervalQualifier(TimeUnit.ISODOW, null, getPos());}
- } else if (jj_2_649(2)) {
+ } else if (jj_2_664(2)) {
jj_consume_token(ISOYEAR);
{if (true) return new SqlIntervalQualifier(TimeUnit.ISOYEAR, null, getPos());}
- } else if (jj_2_650(2)) {
+ } else if (jj_2_665(2)) {
jj_consume_token(WEEK);
span = span();
- if (jj_2_636(2)) {
+ if (jj_2_651(2)) {
jj_consume_token(LPAREN);
w = weekdayName();
jj_consume_token(RPAREN);
@@ -6849,25 +7031,25 @@
} else {
{if (true) return new SqlIntervalQualifier(TimeUnit.WEEK, null, getPos());}
}
- } else if (jj_2_651(2)) {
+ } else if (jj_2_666(2)) {
jj_consume_token(MONTH);
{if (true) return new SqlIntervalQualifier(TimeUnit.MONTH, null, getPos());}
- } else if (jj_2_652(2)) {
+ } else if (jj_2_667(2)) {
jj_consume_token(QUARTER);
{if (true) return new SqlIntervalQualifier(TimeUnit.QUARTER, null, getPos());}
- } else if (jj_2_653(2)) {
+ } else if (jj_2_668(2)) {
jj_consume_token(YEAR);
{if (true) return new SqlIntervalQualifier(TimeUnit.YEAR, null, getPos());}
- } else if (jj_2_654(2)) {
+ } else if (jj_2_669(2)) {
jj_consume_token(EPOCH);
{if (true) return new SqlIntervalQualifier(TimeUnit.EPOCH, null, getPos());}
- } else if (jj_2_655(2)) {
+ } else if (jj_2_670(2)) {
jj_consume_token(DECADE);
{if (true) return new SqlIntervalQualifier(TimeUnit.DECADE, null, getPos());}
- } else if (jj_2_656(2)) {
+ } else if (jj_2_671(2)) {
jj_consume_token(CENTURY);
{if (true) return new SqlIntervalQualifier(TimeUnit.CENTURY, null, getPos());}
- } else if (jj_2_657(2)) {
+ } else if (jj_2_672(2)) {
jj_consume_token(MILLENNIUM);
{if (true) return new SqlIntervalQualifier(TimeUnit.MILLENNIUM, null, getPos());}
} else {
@@ -6878,25 +7060,25 @@
}
final public String weekdayName() throws ParseException {
- if (jj_2_658(2)) {
+ if (jj_2_673(2)) {
jj_consume_token(SUNDAY);
{if (true) return "WEEK_SUNDAY";}
- } else if (jj_2_659(2)) {
+ } else if (jj_2_674(2)) {
jj_consume_token(MONDAY);
{if (true) return "WEEK_MONDAY";}
- } else if (jj_2_660(2)) {
+ } else if (jj_2_675(2)) {
jj_consume_token(TUESDAY);
{if (true) return "WEEK_TUESDAY";}
- } else if (jj_2_661(2)) {
+ } else if (jj_2_676(2)) {
jj_consume_token(WEDNESDAY);
{if (true) return "WEEK_WEDNESDAY";}
- } else if (jj_2_662(2)) {
+ } else if (jj_2_677(2)) {
jj_consume_token(THURSDAY);
{if (true) return "WEEK_THURSDAY";}
- } else if (jj_2_663(2)) {
+ } else if (jj_2_678(2)) {
jj_consume_token(FRIDAY);
{if (true) return "WEEK_FRIDAY";}
- } else if (jj_2_664(2)) {
+ } else if (jj_2_679(2)) {
jj_consume_token(SATURDAY);
{if (true) return "WEEK_SATURDAY";}
} else {
@@ -6927,41 +7109,41 @@
char unicodeEscapeChar = BACKSLASH;
final SqlParserPos pos;
final Span span;
- if (jj_2_666(2)) {
+ if (jj_2_681(2)) {
jj_consume_token(IDENTIFIER);
id = unquotedIdentifier();
pos = getPos();
- } else if (jj_2_667(2)) {
+ } else if (jj_2_682(2)) {
jj_consume_token(HYPHENATED_IDENTIFIER);
id = unquotedIdentifier();
pos = getPos();
- } else if (jj_2_668(2)) {
+ } else if (jj_2_683(2)) {
jj_consume_token(QUOTED_IDENTIFIER);
id = SqlParserUtil.stripQuotes(getToken(0).image, DQ, DQ, DQDQ,
quotedCasing);
pos = getPos().withQuoting(true);
- } else if (jj_2_669(2)) {
+ } else if (jj_2_684(2)) {
jj_consume_token(BACK_QUOTED_IDENTIFIER);
id = SqlParserUtil.stripQuotes(getToken(0).image, "`", "`", "``",
quotedCasing);
pos = getPos().withQuoting(true);
- } else if (jj_2_670(2)) {
+ } else if (jj_2_685(2)) {
jj_consume_token(BIG_QUERY_BACK_QUOTED_IDENTIFIER);
id = SqlParserUtil.stripQuotes(getToken(0).image, "`", "`", "\\`",
quotedCasing);
pos = getPos().withQuoting(true);
- } else if (jj_2_671(2)) {
+ } else if (jj_2_686(2)) {
jj_consume_token(BRACKET_QUOTED_IDENTIFIER);
id = SqlParserUtil.stripQuotes(getToken(0).image, "[", "]", "]]",
quotedCasing);
pos = getPos().withQuoting(true);
- } else if (jj_2_672(2)) {
+ } else if (jj_2_687(2)) {
jj_consume_token(UNICODE_QUOTED_IDENTIFIER);
span = span();
String image = getToken(0).image;
image = image.substring(image.indexOf('"'));
image = SqlParserUtil.stripQuotes(image, DQ, DQ, DQDQ, quotedCasing);
- if (jj_2_665(2)) {
+ if (jj_2_680(2)) {
jj_consume_token(UESCAPE);
jj_consume_token(QUOTED_STRING);
String s = SqlParserUtil.parseString(token.image);
@@ -6973,7 +7155,7 @@
SqlLiteral lit = SqlLiteral.createCharString(image, "UTF16", pos);
lit = lit.unescapeUnicode(unicodeEscapeChar);
id = lit.toValue();
- } else if (jj_2_673(2)) {
+ } else if (jj_2_688(2)) {
id = NonReservedKeyWord();
pos = getPos();
} else {
@@ -7056,12 +7238,12 @@
SqlIdentifier id;
id = SimpleIdentifier();
list.add(id);
- label_54:
+ label_55:
while (true) {
- if (jj_2_674(2)) {
+ if (jj_2_689(2)) {
;
} else {
- break label_54;
+ break label_55;
}
jj_consume_token(COMMA);
id = SimpleIdentifier();
@@ -7094,10 +7276,10 @@
final public SqlNodeList SimpleIdentifierOrList() throws ParseException {
SqlIdentifier id;
SqlNodeList list;
- if (jj_2_675(2)) {
+ if (jj_2_690(2)) {
id = SimpleIdentifier();
{if (true) return new SqlNodeList(Collections.singletonList(id), id.getParserPosition());}
- } else if (jj_2_676(2)) {
+ } else if (jj_2_691(2)) {
list = ParenthesizedSimpleIdentifierList();
{if (true) return list;}
} else {
@@ -7115,17 +7297,17 @@
final List<SqlParserPos> posList = new ArrayList<SqlParserPos>();
boolean star = false;
AddIdentifierSegment(nameList, posList);
- label_55:
+ label_56:
while (true) {
- if (jj_2_677(2)) {
+ if (jj_2_692(2)) {
;
} else {
- break label_55;
+ break label_56;
}
jj_consume_token(DOT);
AddIdentifierSegment(nameList, posList);
}
- if (jj_2_678(2)) {
+ if (jj_2_693(2)) {
jj_consume_token(DOT);
jj_consume_token(STAR);
star = true;
@@ -7149,12 +7331,12 @@
final List<String> nameList = new ArrayList<String>();
final List<SqlParserPos> posList = new ArrayList<SqlParserPos>();
AddTableIdentifierSegment(nameList, posList);
- label_56:
+ label_57:
while (true) {
- if (jj_2_679(2)) {
+ if (jj_2_694(2)) {
;
} else {
- break label_56;
+ break label_57;
}
jj_consume_token(DOT);
AddTableIdentifierSegment(nameList, posList);
@@ -7169,12 +7351,12 @@
*/
final public void AddCompoundIdentifierTypes(List<SqlNode> list, List<SqlNode> extendList) throws ParseException {
AddCompoundIdentifierType(list, extendList);
- label_57:
+ label_58:
while (true) {
- if (jj_2_680(2)) {
+ if (jj_2_695(2)) {
;
} else {
- break label_57;
+ break label_58;
}
jj_consume_token(COMMA);
AddCompoundIdentifierType(list, extendList);
@@ -7226,10 +7408,10 @@
final public int IntLiteral() throws ParseException {
Token t;
- if (jj_2_683(2)) {
- if (jj_2_681(2)) {
+ if (jj_2_698(2)) {
+ if (jj_2_696(2)) {
t = jj_consume_token(UNSIGNED_INTEGER_LITERAL);
- } else if (jj_2_682(2)) {
+ } else if (jj_2_697(2)) {
jj_consume_token(PLUS);
t = jj_consume_token(UNSIGNED_INTEGER_LITERAL);
} else {
@@ -7242,7 +7424,7 @@
{if (true) throw SqlUtil.newContextException(getPos(),
RESOURCE.invalidLiteral(t.image, Integer.class.getCanonicalName()));}
}
- } else if (jj_2_684(2)) {
+ } else if (jj_2_699(2)) {
jj_consume_token(MINUS);
t = jj_consume_token(UNSIGNED_INTEGER_LITERAL);
try {
@@ -7264,12 +7446,12 @@
final Span s;
typeName = TypeName();
s = Span.of(typeName.getParserPos());
- label_58:
+ label_59:
while (true) {
- if (jj_2_685(2)) {
+ if (jj_2_700(2)) {
;
} else {
- break label_58;
+ break label_59;
}
typeName = CollectionsTypeName(typeName);
}
@@ -7283,13 +7465,13 @@
final SqlTypeNameSpec typeNameSpec;
final SqlIdentifier typeName;
final Span s = Span.of();
- if (jj_2_686(2)) {
+ if (jj_2_701(2)) {
typeNameSpec = SqlTypeName(s);
- } else if (jj_2_687(2)) {
+ } else if (jj_2_702(2)) {
typeNameSpec = RowTypeName();
- } else if (jj_2_688(2)) {
+ } else if (jj_2_703(2)) {
typeNameSpec = MapTypeName();
- } else if (jj_2_689(2)) {
+ } else if (jj_2_704(2)) {
typeName = CompoundIdentifier();
typeNameSpec = new SqlUserDefinedTypeNameSpec(typeName, s.end(this));
} else {
@@ -7303,15 +7485,15 @@
// Types used for JDBC and ODBC scalar conversion function
final public SqlTypeNameSpec SqlTypeName(Span s) throws ParseException {
final SqlTypeNameSpec sqlTypeNameSpec;
- if (jj_2_690(2)) {
+ if (jj_2_705(2)) {
sqlTypeNameSpec = SqlTypeName1(s);
- } else if (jj_2_691(2)) {
+ } else if (jj_2_706(2)) {
sqlTypeNameSpec = SqlTypeName2(s);
- } else if (jj_2_692(2)) {
+ } else if (jj_2_707(2)) {
sqlTypeNameSpec = SqlTypeName3(s);
- } else if (jj_2_693(2)) {
+ } else if (jj_2_708(2)) {
sqlTypeNameSpec = CharacterTypeName(s);
- } else if (jj_2_694(2)) {
+ } else if (jj_2_709(2)) {
sqlTypeNameSpec = DateTimeTypeName();
} else {
jj_consume_token(-1);
@@ -7325,54 +7507,97 @@
// For extra specification, we mean precision, scale, charSet, etc.
final public SqlTypeNameSpec SqlTypeName1(Span s) throws ParseException {
final SqlTypeName sqlTypeName;
- if (jj_2_698(2)) {
+ boolean unsigned = false;
+ if (jj_2_717(2)) {
jj_consume_token(GEOMETRY);
if (!this.conformance.allowGeometry()) {
{if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.geometryDisabled());}
}
s.add(this);
sqlTypeName = SqlTypeName.GEOMETRY;
- } else if (jj_2_699(2)) {
+ } else if (jj_2_718(2)) {
jj_consume_token(BOOLEAN);
s.add(this); sqlTypeName = SqlTypeName.BOOLEAN;
- } else if (jj_2_700(2)) {
- if (jj_2_695(2)) {
+ } else if (jj_2_719(2)) {
+ if (jj_2_710(2)) {
jj_consume_token(INTEGER);
- } else if (jj_2_696(2)) {
+ } else if (jj_2_711(2)) {
jj_consume_token(INT);
} else {
jj_consume_token(-1);
throw new ParseException();
}
- s.add(this); sqlTypeName = SqlTypeName.INTEGER;
- } else if (jj_2_701(2)) {
+ if (jj_2_712(2)) {
+ jj_consume_token(UNSIGNED);
+ unsigned = true;
+ } else {
+ ;
+ }
+ if (unsigned && !this.conformance.supportsUnsignedTypes()) {
+ {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.unsignedDisabled());}
+ }
+ s.add(this); sqlTypeName = unsigned ? SqlTypeName.UINTEGER : SqlTypeName.INTEGER;
+ } else if (jj_2_720(2)) {
+ jj_consume_token(UNSIGNED);
+ if (!this.conformance.supportsUnsignedTypes()) {
+ {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.unsignedDisabled());}
+ }
+ s.add(this); sqlTypeName = SqlTypeName.UINTEGER;
+ } else if (jj_2_721(2)) {
jj_consume_token(TINYINT);
- s.add(this); sqlTypeName = SqlTypeName.TINYINT;
- } else if (jj_2_702(2)) {
+ if (jj_2_713(2)) {
+ jj_consume_token(UNSIGNED);
+ unsigned = true;
+ } else {
+ ;
+ }
+ if (unsigned && !this.conformance.supportsUnsignedTypes()) {
+ {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.unsignedDisabled());}
+ }
+ s.add(this); sqlTypeName = unsigned ? SqlTypeName.UTINYINT : SqlTypeName.TINYINT;
+ } else if (jj_2_722(2)) {
jj_consume_token(SMALLINT);
- s.add(this); sqlTypeName = SqlTypeName.SMALLINT;
- } else if (jj_2_703(2)) {
+ if (jj_2_714(2)) {
+ jj_consume_token(UNSIGNED);
+ unsigned = true;
+ } else {
+ ;
+ }
+ if (unsigned && !this.conformance.supportsUnsignedTypes()) {
+ {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.unsignedDisabled());}
+ }
+ s.add(this); sqlTypeName = unsigned ? SqlTypeName.USMALLINT : SqlTypeName.SMALLINT;
+ } else if (jj_2_723(2)) {
jj_consume_token(BIGINT);
- s.add(this); sqlTypeName = SqlTypeName.BIGINT;
- } else if (jj_2_704(2)) {
+ if (jj_2_715(2)) {
+ jj_consume_token(UNSIGNED);
+ unsigned = true;
+ } else {
+ ;
+ }
+ if (unsigned && !this.conformance.supportsUnsignedTypes()) {
+ {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.unsignedDisabled());}
+ }
+ s.add(this); sqlTypeName = unsigned ? SqlTypeName.UBIGINT : SqlTypeName.BIGINT;
+ } else if (jj_2_724(2)) {
jj_consume_token(REAL);
s.add(this); sqlTypeName = SqlTypeName.REAL;
- } else if (jj_2_705(2)) {
+ } else if (jj_2_725(2)) {
jj_consume_token(DOUBLE);
s.add(this);
- if (jj_2_697(2)) {
+ if (jj_2_716(2)) {
jj_consume_token(PRECISION);
} else {
;
}
sqlTypeName = SqlTypeName.DOUBLE;
- } else if (jj_2_706(2)) {
+ } else if (jj_2_726(2)) {
jj_consume_token(FLOAT);
s.add(this); sqlTypeName = SqlTypeName.FLOAT;
- } else if (jj_2_707(2)) {
+ } else if (jj_2_727(2)) {
jj_consume_token(VARIANT);
s.add(this); sqlTypeName = SqlTypeName.VARIANT;
- } else if (jj_2_708(2)) {
+ } else if (jj_2_728(2)) {
jj_consume_token(UUID);
s.add(this); sqlTypeName = SqlTypeName.UUID;
} else {
@@ -7387,16 +7612,16 @@
final public SqlTypeNameSpec SqlTypeName2(Span s) throws ParseException {
final SqlTypeName sqlTypeName;
int precision = -1;
- if (jj_2_710(2)) {
+ if (jj_2_730(2)) {
jj_consume_token(BINARY);
s.add(this);
- if (jj_2_709(2)) {
+ if (jj_2_729(2)) {
jj_consume_token(VARYING);
sqlTypeName = SqlTypeName.VARBINARY;
} else {
sqlTypeName = SqlTypeName.BINARY;
}
- } else if (jj_2_711(2)) {
+ } else if (jj_2_731(2)) {
jj_consume_token(VARBINARY);
s.add(this); sqlTypeName = SqlTypeName.VARBINARY;
} else {
@@ -7413,29 +7638,29 @@
final SqlTypeName sqlTypeName;
int precision = RelDataType.PRECISION_NOT_SPECIFIED;
int scale = RelDataType.SCALE_NOT_SPECIFIED;
- if (jj_2_715(2)) {
- if (jj_2_712(2)) {
+ if (jj_2_735(2)) {
+ if (jj_2_732(2)) {
jj_consume_token(DECIMAL);
- } else if (jj_2_713(2)) {
+ } else if (jj_2_733(2)) {
jj_consume_token(DEC);
- } else if (jj_2_714(2)) {
+ } else if (jj_2_734(2)) {
jj_consume_token(NUMERIC);
} else {
jj_consume_token(-1);
throw new ParseException();
}
s.add(this); sqlTypeName = SqlTypeName.DECIMAL;
- } else if (jj_2_716(2)) {
+ } else if (jj_2_736(2)) {
jj_consume_token(ANY);
s.add(this); sqlTypeName = SqlTypeName.ANY;
} else {
jj_consume_token(-1);
throw new ParseException();
}
- if (jj_2_718(2)) {
+ if (jj_2_738(2)) {
jj_consume_token(LPAREN);
precision = UnsignedIntLiteral();
- if (jj_2_717(2)) {
+ if (jj_2_737(2)) {
jj_consume_token(COMMA);
scale = IntLiteral();
} else {
@@ -7451,213 +7676,213 @@
// Types used for for JDBC and ODBC scalar conversion function
final public SqlJdbcDataTypeName JdbcOdbcDataTypeName() throws ParseException {
- if (jj_2_753(2)) {
- if (jj_2_719(2)) {
+ if (jj_2_773(2)) {
+ if (jj_2_739(2)) {
jj_consume_token(SQL_CHAR);
- } else if (jj_2_720(2)) {
+ } else if (jj_2_740(2)) {
jj_consume_token(CHAR);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_CHAR;}
- } else if (jj_2_754(2)) {
- if (jj_2_721(2)) {
+ } else if (jj_2_774(2)) {
+ if (jj_2_741(2)) {
jj_consume_token(SQL_VARCHAR);
- } else if (jj_2_722(2)) {
+ } else if (jj_2_742(2)) {
jj_consume_token(VARCHAR);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_VARCHAR;}
- } else if (jj_2_755(2)) {
- if (jj_2_723(2)) {
+ } else if (jj_2_775(2)) {
+ if (jj_2_743(2)) {
jj_consume_token(SQL_DATE);
- } else if (jj_2_724(2)) {
+ } else if (jj_2_744(2)) {
jj_consume_token(DATE);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_DATE;}
- } else if (jj_2_756(2)) {
- if (jj_2_725(2)) {
+ } else if (jj_2_776(2)) {
+ if (jj_2_745(2)) {
jj_consume_token(SQL_TIME);
- } else if (jj_2_726(2)) {
+ } else if (jj_2_746(2)) {
jj_consume_token(TIME);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_TIME;}
- } else if (jj_2_757(2)) {
- if (jj_2_727(2)) {
+ } else if (jj_2_777(2)) {
+ if (jj_2_747(2)) {
jj_consume_token(SQL_TIMESTAMP);
- } else if (jj_2_728(2)) {
+ } else if (jj_2_748(2)) {
jj_consume_token(TIMESTAMP);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_TIMESTAMP;}
- } else if (jj_2_758(2)) {
- if (jj_2_729(2)) {
+ } else if (jj_2_778(2)) {
+ if (jj_2_749(2)) {
jj_consume_token(SQL_DECIMAL);
- } else if (jj_2_730(2)) {
+ } else if (jj_2_750(2)) {
jj_consume_token(DECIMAL);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_DECIMAL;}
- } else if (jj_2_759(2)) {
- if (jj_2_731(2)) {
+ } else if (jj_2_779(2)) {
+ if (jj_2_751(2)) {
jj_consume_token(SQL_NUMERIC);
- } else if (jj_2_732(2)) {
+ } else if (jj_2_752(2)) {
jj_consume_token(NUMERIC);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_NUMERIC;}
- } else if (jj_2_760(2)) {
- if (jj_2_733(2)) {
+ } else if (jj_2_780(2)) {
+ if (jj_2_753(2)) {
jj_consume_token(SQL_BOOLEAN);
- } else if (jj_2_734(2)) {
+ } else if (jj_2_754(2)) {
jj_consume_token(BOOLEAN);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_BOOLEAN;}
- } else if (jj_2_761(2)) {
- if (jj_2_735(2)) {
+ } else if (jj_2_781(2)) {
+ if (jj_2_755(2)) {
jj_consume_token(SQL_INTEGER);
- } else if (jj_2_736(2)) {
+ } else if (jj_2_756(2)) {
jj_consume_token(INTEGER);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_INTEGER;}
- } else if (jj_2_762(2)) {
- if (jj_2_737(2)) {
+ } else if (jj_2_782(2)) {
+ if (jj_2_757(2)) {
jj_consume_token(SQL_BINARY);
- } else if (jj_2_738(2)) {
+ } else if (jj_2_758(2)) {
jj_consume_token(BINARY);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_BINARY;}
- } else if (jj_2_763(2)) {
- if (jj_2_739(2)) {
+ } else if (jj_2_783(2)) {
+ if (jj_2_759(2)) {
jj_consume_token(SQL_VARBINARY);
- } else if (jj_2_740(2)) {
+ } else if (jj_2_760(2)) {
jj_consume_token(VARBINARY);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_VARBINARY;}
- } else if (jj_2_764(2)) {
- if (jj_2_741(2)) {
+ } else if (jj_2_784(2)) {
+ if (jj_2_761(2)) {
jj_consume_token(SQL_TINYINT);
- } else if (jj_2_742(2)) {
+ } else if (jj_2_762(2)) {
jj_consume_token(TINYINT);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_TINYINT;}
- } else if (jj_2_765(2)) {
- if (jj_2_743(2)) {
+ } else if (jj_2_785(2)) {
+ if (jj_2_763(2)) {
jj_consume_token(SQL_SMALLINT);
- } else if (jj_2_744(2)) {
+ } else if (jj_2_764(2)) {
jj_consume_token(SMALLINT);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_SMALLINT;}
- } else if (jj_2_766(2)) {
- if (jj_2_745(2)) {
+ } else if (jj_2_786(2)) {
+ if (jj_2_765(2)) {
jj_consume_token(SQL_BIGINT);
- } else if (jj_2_746(2)) {
+ } else if (jj_2_766(2)) {
jj_consume_token(BIGINT);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_BIGINT;}
- } else if (jj_2_767(2)) {
- if (jj_2_747(2)) {
+ } else if (jj_2_787(2)) {
+ if (jj_2_767(2)) {
jj_consume_token(SQL_REAL);
- } else if (jj_2_748(2)) {
+ } else if (jj_2_768(2)) {
jj_consume_token(REAL);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_REAL;}
- } else if (jj_2_768(2)) {
- if (jj_2_749(2)) {
+ } else if (jj_2_788(2)) {
+ if (jj_2_769(2)) {
jj_consume_token(SQL_DOUBLE);
- } else if (jj_2_750(2)) {
+ } else if (jj_2_770(2)) {
jj_consume_token(DOUBLE);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_DOUBLE;}
- } else if (jj_2_769(2)) {
- if (jj_2_751(2)) {
+ } else if (jj_2_789(2)) {
+ if (jj_2_771(2)) {
jj_consume_token(SQL_FLOAT);
- } else if (jj_2_752(2)) {
+ } else if (jj_2_772(2)) {
jj_consume_token(FLOAT);
} else {
jj_consume_token(-1);
throw new ParseException();
}
{if (true) return SqlJdbcDataTypeName.SQL_FLOAT;}
- } else if (jj_2_770(2)) {
+ } else if (jj_2_790(2)) {
jj_consume_token(SQL_INTERVAL_YEAR);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_YEAR;}
- } else if (jj_2_771(2)) {
+ } else if (jj_2_791(2)) {
jj_consume_token(SQL_INTERVAL_YEAR_TO_MONTH);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_YEAR_TO_MONTH;}
- } else if (jj_2_772(2)) {
+ } else if (jj_2_792(2)) {
jj_consume_token(SQL_INTERVAL_MONTH);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_MONTH;}
- } else if (jj_2_773(2)) {
+ } else if (jj_2_793(2)) {
jj_consume_token(SQL_INTERVAL_DAY);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_DAY;}
- } else if (jj_2_774(2)) {
+ } else if (jj_2_794(2)) {
jj_consume_token(SQL_INTERVAL_DAY_TO_HOUR);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_DAY_TO_HOUR;}
- } else if (jj_2_775(2)) {
+ } else if (jj_2_795(2)) {
jj_consume_token(SQL_INTERVAL_DAY_TO_MINUTE);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_DAY_TO_MINUTE;}
- } else if (jj_2_776(2)) {
+ } else if (jj_2_796(2)) {
jj_consume_token(SQL_INTERVAL_DAY_TO_SECOND);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_DAY_TO_SECOND;}
- } else if (jj_2_777(2)) {
+ } else if (jj_2_797(2)) {
jj_consume_token(SQL_INTERVAL_HOUR);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_HOUR;}
- } else if (jj_2_778(2)) {
+ } else if (jj_2_798(2)) {
jj_consume_token(SQL_INTERVAL_HOUR_TO_MINUTE);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_HOUR_TO_MINUTE;}
- } else if (jj_2_779(2)) {
+ } else if (jj_2_799(2)) {
jj_consume_token(SQL_INTERVAL_HOUR_TO_SECOND);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_HOUR_TO_SECOND;}
- } else if (jj_2_780(2)) {
+ } else if (jj_2_800(2)) {
jj_consume_token(SQL_INTERVAL_MINUTE);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_MINUTE;}
- } else if (jj_2_781(2)) {
+ } else if (jj_2_801(2)) {
jj_consume_token(SQL_INTERVAL_MINUTE_TO_SECOND);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_MINUTE_TO_SECOND;}
- } else if (jj_2_782(2)) {
+ } else if (jj_2_802(2)) {
jj_consume_token(SQL_INTERVAL_SECOND);
{if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_SECOND;}
} else {
@@ -7680,10 +7905,10 @@
*/
final public SqlTypeNameSpec CollectionsTypeName(SqlTypeNameSpec elementTypeName) throws ParseException {
final SqlTypeName collectionTypeName;
- if (jj_2_783(2)) {
+ if (jj_2_803(2)) {
jj_consume_token(MULTISET);
collectionTypeName = SqlTypeName.MULTISET;
- } else if (jj_2_784(2)) {
+ } else if (jj_2_804(2)) {
jj_consume_token(ARRAY);
collectionTypeName = SqlTypeName.ARRAY;
} else {
@@ -7699,10 +7924,10 @@
* Parse a nullable option, default is true.
*/
final public boolean NullableOptDefaultTrue() throws ParseException {
- if (jj_2_785(2)) {
+ if (jj_2_805(2)) {
jj_consume_token(NULL);
{if (true) return true;}
- } else if (jj_2_786(2)) {
+ } else if (jj_2_806(2)) {
jj_consume_token(NOT);
jj_consume_token(NULL);
{if (true) return false;}
@@ -7716,10 +7941,10 @@
* Parse a nullable option, default is false.
*/
final public boolean NullableOptDefaultFalse() throws ParseException {
- if (jj_2_787(2)) {
+ if (jj_2_807(2)) {
jj_consume_token(NULL);
{if (true) return true;}
- } else if (jj_2_788(2)) {
+ } else if (jj_2_808(2)) {
jj_consume_token(NOT);
jj_consume_token(NULL);
{if (true) return false;}
@@ -7731,7 +7956,7 @@
/** Parses NOT NULL and returns false, or parses nothing and returns true. */
final public boolean NotNullOpt() throws ParseException {
- if (jj_2_789(2)) {
+ if (jj_2_809(2)) {
jj_consume_token(NOT);
jj_consume_token(NULL);
{if (true) return false;}
@@ -7748,12 +7973,12 @@
final public void AddFieldNameTypes(List<SqlIdentifier> fieldNames,
List<SqlDataTypeSpec> fieldTypes) throws ParseException {
AddFieldNameType(fieldNames, fieldTypes);
- label_59:
+ label_60:
while (true) {
- if (jj_2_790(2)) {
+ if (jj_2_810(2)) {
;
} else {
- break label_59;
+ break label_60;
}
jj_consume_token(COMMA);
AddFieldNameType(fieldNames, fieldTypes);
@@ -7808,23 +8033,23 @@
int precision = -1;
final SqlTypeName sqlTypeName;
String charSetName = null;
- if (jj_2_794(2)) {
- if (jj_2_791(2)) {
+ if (jj_2_814(2)) {
+ if (jj_2_811(2)) {
jj_consume_token(CHARACTER);
- } else if (jj_2_792(2)) {
+ } else if (jj_2_812(2)) {
jj_consume_token(CHAR);
} else {
jj_consume_token(-1);
throw new ParseException();
}
s.add(this);
- if (jj_2_793(2)) {
+ if (jj_2_813(2)) {
jj_consume_token(VARYING);
sqlTypeName = SqlTypeName.VARCHAR;
} else {
sqlTypeName = SqlTypeName.CHAR;
}
- } else if (jj_2_795(2)) {
+ } else if (jj_2_815(2)) {
jj_consume_token(VARCHAR);
s.add(this); sqlTypeName = SqlTypeName.VARCHAR;
} else {
@@ -7832,7 +8057,7 @@
throw new ParseException();
}
precision = PrecisionOpt();
- if (jj_2_796(2)) {
+ if (jj_2_816(2)) {
jj_consume_token(CHARACTER);
jj_consume_token(SET);
charSetName = Identifier();
@@ -7850,17 +8075,17 @@
int precision = -1;
SqlTypeName typeName;
final Span s;
- if (jj_2_797(2)) {
+ if (jj_2_817(2)) {
jj_consume_token(DATE);
typeName = SqlTypeName.DATE;
{if (true) return new SqlBasicTypeNameSpec(typeName, getPos());}
- } else if (jj_2_798(2)) {
+ } else if (jj_2_818(2)) {
jj_consume_token(TIME);
s = span();
precision = PrecisionOpt();
typeName = TimeZoneOpt(true);
{if (true) return new SqlBasicTypeNameSpec(typeName, precision, s.end(this));}
- } else if (jj_2_799(2)) {
+ } else if (jj_2_819(2)) {
jj_consume_token(TIMESTAMP);
s = span();
precision = PrecisionOpt();
@@ -7876,7 +8101,7 @@
// Parse an optional data type precision, default is -1.
final public int PrecisionOpt() throws ParseException {
int precision = -1;
- if (jj_2_800(2)) {
+ if (jj_2_820(2)) {
jj_consume_token(LPAREN);
precision = UnsignedIntLiteral();
jj_consume_token(RPAREN);
@@ -7894,14 +8119,14 @@
*/
final public SqlTypeName TimeZoneOpt(boolean timeType) throws ParseException {
boolean local = false;
- if (jj_2_802(3)) {
+ if (jj_2_822(3)) {
jj_consume_token(WITHOUT);
jj_consume_token(TIME);
jj_consume_token(ZONE);
{if (true) return timeType ? SqlTypeName.TIME : SqlTypeName.TIMESTAMP;}
- } else if (jj_2_803(2)) {
+ } else if (jj_2_823(2)) {
jj_consume_token(WITH);
- if (jj_2_801(2)) {
+ if (jj_2_821(2)) {
jj_consume_token(LOCAL);
local = true;
} else {
@@ -7951,14 +8176,14 @@
final SqlLiteral style; // mssql convert 'style' operand
final SqlFunction f;
final SqlNode format;
- if (jj_2_840(2)) {
- if (jj_2_804(2)) {
+ if (jj_2_860(2)) {
+ if (jj_2_824(2)) {
jj_consume_token(CAST);
f = SqlStdOperatorTable.CAST;
- } else if (jj_2_805(2)) {
+ } else if (jj_2_825(2)) {
jj_consume_token(SAFE_CAST);
f = SqlLibraryOperators.SAFE_CAST;
- } else if (jj_2_806(2)) {
+ } else if (jj_2_826(2)) {
jj_consume_token(TRY_CAST);
f = SqlLibraryOperators.TRY_CAST;
} else {
@@ -7969,10 +8194,10 @@
jj_consume_token(LPAREN);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(AS);
- if (jj_2_807(2)) {
+ if (jj_2_827(2)) {
dt = DataType();
args.add(dt);
- } else if (jj_2_808(2)) {
+ } else if (jj_2_828(2)) {
jj_consume_token(INTERVAL);
e = IntervalQualifier();
args.add(e);
@@ -7980,7 +8205,7 @@
jj_consume_token(-1);
throw new ParseException();
}
- if (jj_2_809(2)) {
+ if (jj_2_829(2)) {
jj_consume_token(FORMAT);
format = StringLiteral();
args.add(format);
@@ -7989,7 +8214,7 @@
}
jj_consume_token(RPAREN);
{if (true) return f.createCall(s.end(this), args);}
- } else if (jj_2_841(2)) {
+ } else if (jj_2_861(2)) {
jj_consume_token(EXTRACT);
s = span();
jj_consume_token(LPAREN);
@@ -7999,7 +8224,7 @@
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(RPAREN);
{if (true) return SqlStdOperatorTable.EXTRACT.createCall(s.end(this), args);}
- } else if (jj_2_842(2)) {
+ } else if (jj_2_862(2)) {
jj_consume_token(POSITION);
s = span();
jj_consume_token(LPAREN);
@@ -8010,7 +8235,7 @@
args.add(e);
jj_consume_token(IN);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_810(2)) {
+ if (jj_2_830(2)) {
jj_consume_token(FROM);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
} else {
@@ -8018,30 +8243,30 @@
}
jj_consume_token(RPAREN);
{if (true) return SqlStdOperatorTable.POSITION.createCall(s.end(this), args);}
- } else if (jj_2_843(2)) {
+ } else if (jj_2_863(2)) {
jj_consume_token(CONVERT);
s = span();
jj_consume_token(LPAREN);
- if (jj_2_820(2)) {
+ if (jj_2_840(2)) {
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_813(2)) {
+ if (jj_2_833(2)) {
jj_consume_token(USING);
name = SimpleIdentifier();
args.add(name);
jj_consume_token(RPAREN);
{if (true) return SqlStdOperatorTable.TRANSLATE.createCall(s.end(this), args);}
- } else if (jj_2_814(2)) {
+ } else if (jj_2_834(2)) {
jj_consume_token(COMMA);
e = SimpleIdentifier();
args.add(e);
- if (jj_2_811(2)) {
+ if (jj_2_831(2)) {
jj_consume_token(COMMA);
e = SimpleIdentifier();
args.add(e);
jj_consume_token(RPAREN);
SqlOperator op = SqlStdOperatorTable.getConvertFuncByConformance(this.conformance);
{if (true) return op.createCall(s.end(this), args);}
- } else if (jj_2_812(2)) {
+ } else if (jj_2_832(2)) {
jj_consume_token(RPAREN);
{if (true) return SqlLibraryOperators.CONVERT_ORACLE.createCall(s.end(this), args);}
} else {
@@ -8052,11 +8277,11 @@
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_821(2)) {
- if (jj_2_815(2)) {
+ } else if (jj_2_841(2)) {
+ if (jj_2_835(2)) {
dt = DataType();
args.add(dt);
- } else if (jj_2_816(2)) {
+ } else if (jj_2_836(2)) {
jj_consume_token(INTERVAL);
e = IntervalQualifier();
args.add(e);
@@ -8066,12 +8291,12 @@
}
jj_consume_token(COMMA);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_819(2)) {
+ if (jj_2_839(2)) {
jj_consume_token(COMMA);
- if (jj_2_817(2)) {
+ if (jj_2_837(2)) {
style = UnsignedNumericLiteral();
args.add(style);
- } else if (jj_2_818(2)) {
+ } else if (jj_2_838(2)) {
jj_consume_token(NULL);
args.add(SqlLiteral.createNull(getPos()));
} else {
@@ -8087,25 +8312,25 @@
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_844(2)) {
+ } else if (jj_2_864(2)) {
jj_consume_token(TRANSLATE);
s = span();
jj_consume_token(LPAREN);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_823(2)) {
+ if (jj_2_843(2)) {
jj_consume_token(USING);
name = SimpleIdentifier();
args.add(name);
jj_consume_token(RPAREN);
{if (true) return SqlStdOperatorTable.TRANSLATE.createCall(s.end(this),
args);}
- } else if (jj_2_824(2)) {
- label_60:
+ } else if (jj_2_844(2)) {
+ label_61:
while (true) {
- if (jj_2_822(2)) {
+ if (jj_2_842(2)) {
;
} else {
- break label_60;
+ break label_61;
}
jj_consume_token(COMMA);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
@@ -8117,7 +8342,7 @@
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_845(2)) {
+ } else if (jj_2_865(2)) {
jj_consume_token(OVERLAY);
s = span();
jj_consume_token(LPAREN);
@@ -8126,7 +8351,7 @@
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(FROM);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_825(2)) {
+ if (jj_2_845(2)) {
jj_consume_token(FOR);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
} else {
@@ -8134,15 +8359,15 @@
}
jj_consume_token(RPAREN);
{if (true) return SqlStdOperatorTable.OVERLAY.createCall(s.end(this), args);}
- } else if (jj_2_846(2)) {
+ } else if (jj_2_866(2)) {
jj_consume_token(FLOOR);
s = span();
e = FloorCeilOptions(s, true);
{if (true) return e;}
- } else if (jj_2_847(2)) {
- if (jj_2_826(2)) {
+ } else if (jj_2_867(2)) {
+ if (jj_2_846(2)) {
jj_consume_token(CEIL);
- } else if (jj_2_827(2)) {
+ } else if (jj_2_847(2)) {
jj_consume_token(CEILING);
} else {
jj_consume_token(-1);
@@ -8151,24 +8376,24 @@
s = span();
e = FloorCeilOptions(s, false);
{if (true) return e;}
- } else if (jj_2_848(2)) {
+ } else if (jj_2_868(2)) {
jj_consume_token(SUBSTRING);
s = span();
jj_consume_token(LPAREN);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_828(2)) {
+ if (jj_2_848(2)) {
jj_consume_token(FROM);
- } else if (jj_2_829(2)) {
+ } else if (jj_2_849(2)) {
jj_consume_token(COMMA);
} else {
jj_consume_token(-1);
throw new ParseException();
}
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_832(2)) {
- if (jj_2_830(2)) {
+ if (jj_2_852(2)) {
+ if (jj_2_850(2)) {
jj_consume_token(FOR);
- } else if (jj_2_831(2)) {
+ } else if (jj_2_851(2)) {
jj_consume_token(COMMA);
} else {
jj_consume_token(-1);
@@ -8181,23 +8406,23 @@
jj_consume_token(RPAREN);
{if (true) return SqlStdOperatorTable.SUBSTRING.createCall(
s.end(this), args);}
- } else if (jj_2_849(2)) {
+ } else if (jj_2_869(2)) {
jj_consume_token(TRIM);
SqlLiteral flag = null;
SqlNode trimChars = null;
SqlParserPos fromPos = SqlParserPos.ZERO;
s = span();
jj_consume_token(LPAREN);
- if (jj_2_838(2)) {
- if (jj_2_833(2)) {
+ if (jj_2_858(2)) {
+ if (jj_2_853(2)) {
jj_consume_token(BOTH);
s.add(this);
flag = SqlTrimFunction.Flag.BOTH.symbol(getPos());
- } else if (jj_2_834(2)) {
+ } else if (jj_2_854(2)) {
jj_consume_token(TRAILING);
s.add(this);
flag = SqlTrimFunction.Flag.TRAILING.symbol(getPos());
- } else if (jj_2_835(2)) {
+ } else if (jj_2_855(2)) {
jj_consume_token(LEADING);
s.add(this);
flag = SqlTrimFunction.Flag.LEADING.symbol(getPos());
@@ -8205,7 +8430,7 @@
jj_consume_token(-1);
throw new ParseException();
}
- if (jj_2_836(2)) {
+ if (jj_2_856(2)) {
trimChars = Expression(ExprContext.ACCEPT_SUB_QUERY);
} else {
;
@@ -8213,9 +8438,9 @@
jj_consume_token(FROM);
fromPos = getPos();
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
- } else if (jj_2_839(2)) {
+ } else if (jj_2_859(2)) {
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_837(2)) {
+ if (jj_2_857(2)) {
jj_consume_token(FROM);
trimChars = e; fromPos = getPos();
e = Expression(ExprContext.ACCEPT_SUB_QUERY);
@@ -8235,67 +8460,67 @@
args.add(trimChars);
args.add(e);
{if (true) return SqlStdOperatorTable.TRIM.createCall(s.end(this), args);}
- } else if (jj_2_850(2)) {
+ } else if (jj_2_870(2)) {
node = ContainsSubstrFunctionCall();
{if (true) return node;}
- } else if (jj_2_851(2)) {
+ } else if (jj_2_871(2)) {
node = DateTimeConstructorCall();
{if (true) return node;}
- } else if (jj_2_852(2)) {
+ } else if (jj_2_872(2)) {
node = DateDiffFunctionCall();
{if (true) return node;}
- } else if (jj_2_853(2)) {
+ } else if (jj_2_873(2)) {
node = DateTruncFunctionCall();
{if (true) return node;}
- } else if (jj_2_854(2)) {
+ } else if (jj_2_874(2)) {
node = DatetimeTruncFunctionCall();
{if (true) return node;}
- } else if (jj_2_855(2)) {
+ } else if (jj_2_875(2)) {
node = TimestampAddFunctionCall();
{if (true) return node;}
- } else if (jj_2_856(2)) {
+ } else if (jj_2_876(2)) {
node = DatetimeDiffFunctionCall();
{if (true) return node;}
- } else if (jj_2_857(2)) {
+ } else if (jj_2_877(2)) {
node = TimestampDiffFunctionCall();
{if (true) return node;}
- } else if (jj_2_858(2)) {
+ } else if (jj_2_878(2)) {
node = TimestampDiff3FunctionCall();
{if (true) return node;}
- } else if (jj_2_859(2)) {
+ } else if (jj_2_879(2)) {
node = TimestampTruncFunctionCall();
{if (true) return node;}
- } else if (jj_2_860(2)) {
+ } else if (jj_2_880(2)) {
node = TimeDiffFunctionCall();
{if (true) return node;}
- } else if (jj_2_861(2)) {
+ } else if (jj_2_881(2)) {
node = TimeTruncFunctionCall();
{if (true) return node;}
- } else if (jj_2_862(2)) {
+ } else if (jj_2_882(2)) {
node = MatchRecognizeFunctionCall();
{if (true) return node;}
- } else if (jj_2_863(2)) {
+ } else if (jj_2_883(2)) {
node = JsonExistsFunctionCall();
{if (true) return node;}
- } else if (jj_2_864(2)) {
+ } else if (jj_2_884(2)) {
node = JsonValueFunctionCall();
{if (true) return node;}
- } else if (jj_2_865(2)) {
+ } else if (jj_2_885(2)) {
node = JsonQueryFunctionCall();
{if (true) return node;}
- } else if (jj_2_866(2)) {
+ } else if (jj_2_886(2)) {
node = JsonObjectFunctionCall();
{if (true) return node;}
- } else if (jj_2_867(2)) {
+ } else if (jj_2_887(2)) {
node = JsonObjectAggFunctionCall();
{if (true) return node;}
- } else if (jj_2_868(2)) {
+ } else if (jj_2_888(2)) {
node = JsonArrayFunctionCall();
{if (true) return node;}
- } else if (jj_2_869(2)) {
+ } else if (jj_2_889(2)) {
node = JsonArrayAggFunctionCall();
{if (true) return node;}
- } else if (jj_2_870(2)) {
+ } else if (jj_2_890(2)) {
node = GroupByWindowingCall();
{if (true) return node;}
} else {
@@ -8307,15 +8532,15 @@
final public SqlJsonEncoding JsonRepresentation() throws ParseException {
jj_consume_token(JSON);
- if (jj_2_874(2)) {
+ if (jj_2_894(2)) {
jj_consume_token(ENCODING);
- if (jj_2_871(2)) {
+ if (jj_2_891(2)) {
jj_consume_token(UTF8);
{if (true) return SqlJsonEncoding.UTF8;}
- } else if (jj_2_872(2)) {
+ } else if (jj_2_892(2)) {
jj_consume_token(UTF16);
{if (true) return SqlJsonEncoding.UTF16;}
- } else if (jj_2_873(2)) {
+ } else if (jj_2_893(2)) {
jj_consume_token(UTF32);
{if (true) return SqlJsonEncoding.UTF32;}
} else {
@@ -8345,7 +8570,7 @@
final public SqlDataTypeSpec JsonOutputClause() throws ParseException {
SqlDataTypeSpec dataType;
dataType = JsonReturningClause();
- if (jj_2_875(2)) {
+ if (jj_2_895(2)) {
jj_consume_token(FORMAT);
JsonRepresentation();
} else {
@@ -8368,19 +8593,19 @@
AddExpression(args, ExprContext.ACCEPT_NON_QUERY);
jj_consume_token(COMMA);
AddExpression(args, ExprContext.ACCEPT_NON_QUERY);
- if (jj_2_877(2)) {
+ if (jj_2_897(2)) {
jj_consume_token(PASSING);
e = Expression(ExprContext.ACCEPT_NON_QUERY);
jj_consume_token(AS);
e = SimpleIdentifier();
- label_61:
+ label_62:
while (true) {
- if (jj_2_876(2)) {
+ if (jj_2_896(2)) {
;
} else {
- break label_61;
+ break label_62;
}
jj_consume_token(COMMA);
e = Expression(ExprContext.ACCEPT_NON_QUERY);
@@ -8397,16 +8622,16 @@
}
final public SqlJsonExistsErrorBehavior JsonExistsErrorBehavior() throws ParseException {
- if (jj_2_878(2)) {
+ if (jj_2_898(2)) {
jj_consume_token(TRUE);
{if (true) return SqlJsonExistsErrorBehavior.TRUE;}
- } else if (jj_2_879(2)) {
+ } else if (jj_2_899(2)) {
jj_consume_token(FALSE);
{if (true) return SqlJsonExistsErrorBehavior.FALSE;}
- } else if (jj_2_880(2)) {
+ } else if (jj_2_900(2)) {
jj_consume_token(UNKNOWN);
{if (true) return SqlJsonExistsErrorBehavior.UNKNOWN;}
- } else if (jj_2_881(2)) {
+ } else if (jj_2_901(2)) {
jj_consume_token(ERROR);
{if (true) return SqlJsonExistsErrorBehavior.ERROR;}
} else {
@@ -8426,7 +8651,7 @@
jj_consume_token(LPAREN);
commonSyntax = JsonApiCommonSyntax();
args.addAll(commonSyntax);
- if (jj_2_882(2)) {
+ if (jj_2_902(2)) {
errorBehavior = JsonExistsErrorBehavior();
args.add(errorBehavior.symbol(getPos()));
jj_consume_token(ON);
@@ -8441,13 +8666,13 @@
final public List<SqlNode> JsonValueEmptyOrErrorBehavior() throws ParseException {
final List<SqlNode> list = new ArrayList<SqlNode>();
- if (jj_2_883(2)) {
+ if (jj_2_903(2)) {
jj_consume_token(ERROR);
list.add(SqlJsonValueEmptyOrErrorBehavior.ERROR.symbol(getPos()));
- } else if (jj_2_884(2)) {
+ } else if (jj_2_904(2)) {
jj_consume_token(NULL);
list.add(SqlJsonValueEmptyOrErrorBehavior.NULL.symbol(getPos()));
- } else if (jj_2_885(2)) {
+ } else if (jj_2_905(2)) {
jj_consume_token(DEFAULT_);
list.add(SqlJsonValueEmptyOrErrorBehavior.DEFAULT.symbol(getPos()));
AddExpression(list, ExprContext.ACCEPT_NON_QUERY);
@@ -8456,10 +8681,10 @@
throw new ParseException();
}
jj_consume_token(ON);
- if (jj_2_886(2)) {
+ if (jj_2_906(2)) {
jj_consume_token(EMPTY);
list.add(SqlJsonEmptyOrError.EMPTY.symbol(getPos()));
- } else if (jj_2_887(2)) {
+ } else if (jj_2_907(2)) {
jj_consume_token(ERROR);
list.add(SqlJsonEmptyOrError.ERROR.symbol(getPos()));
} else {
@@ -8481,19 +8706,19 @@
jj_consume_token(LPAREN);
commonSyntax = JsonApiCommonSyntax();
args.addAll(commonSyntax);
- if (jj_2_888(2)) {
+ if (jj_2_908(2)) {
e = JsonReturningClause();
args.add(SqlJsonValueReturning.RETURNING.symbol(getPos()));
args.add(e);
} else {
;
}
- label_62:
+ label_63:
while (true) {
- if (jj_2_889(2)) {
+ if (jj_2_909(2)) {
;
} else {
- break label_62;
+ break label_63;
}
behavior = JsonValueEmptyOrErrorBehavior();
args.addAll(behavior);
@@ -8505,17 +8730,17 @@
final public List<SqlNode> JsonQueryEmptyOrErrorBehavior() throws ParseException {
final List<SqlNode> list = new ArrayList<SqlNode>();
- if (jj_2_890(2)) {
+ if (jj_2_910(2)) {
jj_consume_token(ERROR);
list.add(SqlLiteral.createSymbol(SqlJsonQueryEmptyOrErrorBehavior.ERROR, getPos()));
- } else if (jj_2_891(2)) {
+ } else if (jj_2_911(2)) {
jj_consume_token(NULL);
list.add(SqlLiteral.createSymbol(SqlJsonQueryEmptyOrErrorBehavior.NULL, getPos()));
- } else if (jj_2_892(2)) {
+ } else if (jj_2_912(2)) {
jj_consume_token(EMPTY);
jj_consume_token(ARRAY);
list.add(SqlLiteral.createSymbol(SqlJsonQueryEmptyOrErrorBehavior.EMPTY_ARRAY, getPos()));
- } else if (jj_2_893(2)) {
+ } else if (jj_2_913(2)) {
jj_consume_token(EMPTY);
jj_consume_token(OBJECT);
list.add(SqlLiteral.createSymbol(SqlJsonQueryEmptyOrErrorBehavior.EMPTY_OBJECT, getPos()));
@@ -8524,10 +8749,10 @@
throw new ParseException();
}
jj_consume_token(ON);
- if (jj_2_894(2)) {
+ if (jj_2_914(2)) {
jj_consume_token(EMPTY);
list.add(SqlLiteral.createSymbol(SqlJsonEmptyOrError.EMPTY, getPos()));
- } else if (jj_2_895(2)) {
+ } else if (jj_2_915(2)) {
jj_consume_token(ERROR);
list.add(SqlLiteral.createSymbol(SqlJsonEmptyOrError.ERROR, getPos()));
} else {
@@ -8539,31 +8764,31 @@
}
final public SqlNode JsonQueryWrapperBehavior() throws ParseException {
- if (jj_2_900(2)) {
+ if (jj_2_920(2)) {
jj_consume_token(WITHOUT);
- if (jj_2_896(2)) {
+ if (jj_2_916(2)) {
jj_consume_token(ARRAY);
} else {
;
}
{if (true) return SqlLiteral.createSymbol(SqlJsonQueryWrapperBehavior.WITHOUT_ARRAY, getPos());}
- } else if (jj_2_901(2)) {
+ } else if (jj_2_921(2)) {
jj_consume_token(WITH);
jj_consume_token(CONDITIONAL);
- if (jj_2_897(2)) {
+ if (jj_2_917(2)) {
jj_consume_token(ARRAY);
} else {
;
}
{if (true) return SqlLiteral.createSymbol(SqlJsonQueryWrapperBehavior.WITH_CONDITIONAL_ARRAY, getPos());}
- } else if (jj_2_902(2)) {
+ } else if (jj_2_922(2)) {
jj_consume_token(WITH);
- if (jj_2_898(2)) {
+ if (jj_2_918(2)) {
jj_consume_token(UNCONDITIONAL);
} else {
;
}
- if (jj_2_899(2)) {
+ if (jj_2_919(2)) {
jj_consume_token(ARRAY);
} else {
;
@@ -8588,25 +8813,25 @@
commonSyntax = JsonApiCommonSyntax();
args[0] = commonSyntax.get(0);
args[1] = commonSyntax.get(1);
- if (jj_2_903(2)) {
+ if (jj_2_923(2)) {
e = JsonReturningClause();
args[5] = e;
} else {
;
}
- if (jj_2_904(2)) {
+ if (jj_2_924(2)) {
e = JsonQueryWrapperBehavior();
jj_consume_token(WRAPPER);
args[2] = e;
} else {
;
}
- label_63:
+ label_64:
while (true) {
- if (jj_2_905(2)) {
+ if (jj_2_925(2)) {
;
} else {
- break label_63;
+ break label_64;
}
behavior = JsonQueryEmptyOrErrorBehavior();
final SqlJsonEmptyOrError symbol =
@@ -8636,7 +8861,7 @@
final List<SqlNode> list = new ArrayList<SqlNode>();
final SqlNode e;
boolean kvMode = false;
- if (jj_2_906(2)) {
+ if (jj_2_926(2)) {
jj_consume_token(KEY);
kvMode = true;
} else {
@@ -8644,16 +8869,16 @@
}
e = JsonName();
list.add(e);
- if (jj_2_907(2)) {
+ if (jj_2_927(2)) {
jj_consume_token(VALUE);
- } else if (jj_2_908(2)) {
+ } else if (jj_2_928(2)) {
jj_consume_token(COMMA);
- if (kvMode) {
+ if (kvMode || this.conformance.isColonFieldAccessAllowed()) {
{if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.illegalComma());}
}
- } else if (jj_2_909(2)) {
+ } else if (jj_2_929(2)) {
jj_consume_token(COLON);
- if (kvMode) {
+ if (kvMode || this.conformance.isColonFieldAccessAllowed()) {
{if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.illegalColon());}
}
} else {
@@ -8666,12 +8891,12 @@
}
final public SqlNode JsonConstructorNullClause() throws ParseException {
- if (jj_2_910(2)) {
+ if (jj_2_930(2)) {
jj_consume_token(NULL);
jj_consume_token(ON);
jj_consume_token(NULL);
{if (true) return SqlLiteral.createSymbol(SqlJsonConstructorNullClause.NULL_ON_NULL, getPos());}
- } else if (jj_2_911(2)) {
+ } else if (jj_2_931(2)) {
jj_consume_token(ABSENT);
jj_consume_token(ON);
jj_consume_token(NULL);
@@ -8692,15 +8917,15 @@
jj_consume_token(JSON_OBJECT);
span = span();
jj_consume_token(LPAREN);
- if (jj_2_913(2)) {
+ if (jj_2_933(2)) {
list = JsonNameAndValue();
nvArgs.addAll(list);
- label_64:
+ label_65:
while (true) {
- if (jj_2_912(2)) {
+ if (jj_2_932(2)) {
;
} else {
- break label_64;
+ break label_65;
}
jj_consume_token(COMMA);
list = JsonNameAndValue();
@@ -8709,7 +8934,7 @@
} else {
;
}
- if (jj_2_914(2)) {
+ if (jj_2_934(2)) {
e = JsonConstructorNullClause();
otherArgs[0] = e;
} else {
@@ -8736,7 +8961,7 @@
list = JsonNameAndValue();
args[0] = list.get(0);
args[1] = list.get(1);
- if (jj_2_915(2)) {
+ if (jj_2_935(2)) {
e = JsonConstructorNullClause();
nullClause = (SqlJsonConstructorNullClause) ((SqlLiteral) e).getValue();
} else {
@@ -8756,14 +8981,14 @@
jj_consume_token(JSON_ARRAY);
span = span();
jj_consume_token(LPAREN);
- if (jj_2_917(2)) {
+ if (jj_2_937(2)) {
AddExpression(elements, ExprContext.ACCEPT_NON_QUERY);
- label_65:
+ label_66:
while (true) {
- if (jj_2_916(2)) {
+ if (jj_2_936(2)) {
;
} else {
- break label_65;
+ break label_66;
}
jj_consume_token(COMMA);
AddExpression(elements, ExprContext.ACCEPT_NON_QUERY);
@@ -8771,7 +8996,7 @@
} else {
;
}
- if (jj_2_918(2)) {
+ if (jj_2_938(2)) {
e = JsonConstructorNullClause();
otherArgs[0] = e;
} else {
@@ -8804,12 +9029,12 @@
jj_consume_token(LPAREN);
e = Expression(ExprContext.ACCEPT_NON_QUERY);
valueExpr = e;
- if (jj_2_919(2)) {
+ if (jj_2_939(2)) {
orderList = JsonArrayAggOrderByClause();
} else {
orderList = null;
}
- if (jj_2_920(2)) {
+ if (jj_2_940(2)) {
e = JsonConstructorNullClause();
nullClause = (SqlJsonConstructorNullClause) ((SqlLiteral) e).getValue();
} else {
@@ -8818,7 +9043,7 @@
jj_consume_token(RPAREN);
aggCall = SqlStdOperatorTable.JSON_ARRAYAGG.with(nullClause)
.createCall(span.end(this), valueExpr, orderList);
- if (jj_2_921(2)) {
+ if (jj_2_941(2)) {
e = withinGroup(aggCall);
if (orderList != null) {
{if (true) throw SqlUtil.newContextException(span.pos().plus(e.getParserPosition()),
@@ -8851,9 +9076,9 @@
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(COMMA);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_922(2)) {
+ if (jj_2_942(2)) {
jj_consume_token(RPAREN);
- } else if (jj_2_923(2)) {
+ } else if (jj_2_943(2)) {
jj_consume_token(COMMA);
jj_consume_token(JSON_SCOPE);
jj_consume_token(NAMED_ARGUMENT_ASSIGNMENT);
@@ -8992,10 +9217,10 @@
jj_consume_token(LPAREN);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
jj_consume_token(COMMA);
- if (jj_2_924(2)) {
+ if (jj_2_944(2)) {
unit = TimeUnit();
args.add(unit);
- } else if (jj_2_925(2)) {
+ } else if (jj_2_945(2)) {
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
} else {
jj_consume_token(-1);
@@ -9093,13 +9318,13 @@
final Span s;
final List<SqlNode> args;
final SqlOperator op;
- if (jj_2_926(2)) {
+ if (jj_2_946(2)) {
jj_consume_token(TUMBLE);
op = SqlStdOperatorTable.TUMBLE_OLD;
- } else if (jj_2_927(2)) {
+ } else if (jj_2_947(2)) {
jj_consume_token(HOP);
op = SqlStdOperatorTable.HOP_OLD;
- } else if (jj_2_928(2)) {
+ } else if (jj_2_948(2)) {
jj_consume_token(SESSION);
op = SqlStdOperatorTable.SESSION_OLD;
} else {
@@ -9115,23 +9340,23 @@
final public SqlCall MatchRecognizeFunctionCall() throws ParseException {
final SqlCall func;
final Span s;
- if (jj_2_929(2)) {
+ if (jj_2_949(2)) {
jj_consume_token(CLASSIFIER);
s = span();
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
func = SqlStdOperatorTable.CLASSIFIER.createCall(s.end(this));
- } else if (jj_2_930(2)) {
+ } else if (jj_2_950(2)) {
jj_consume_token(MATCH_NUMBER);
s = span();
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
func = SqlStdOperatorTable.MATCH_NUMBER.createCall(s.end(this));
- } else if (jj_2_931(3)) {
+ } else if (jj_2_951(3)) {
func = MatchRecognizeNavigationLogical();
- } else if (jj_2_932(2)) {
+ } else if (jj_2_952(2)) {
func = MatchRecognizeNavigationPhysical();
- } else if (jj_2_933(2)) {
+ } else if (jj_2_953(2)) {
func = MatchRecognizeCallWithModifier();
} else {
jj_consume_token(-1);
@@ -9144,11 +9369,11 @@
final public SqlCall MatchRecognizeCallWithModifier() throws ParseException {
final Span s;
final SqlOperator runningOp;
- final SqlNode func;
- if (jj_2_934(2)) {
+ final SqlNode e;
+ if (jj_2_954(2)) {
jj_consume_token(RUNNING);
runningOp = SqlStdOperatorTable.RUNNING;
- } else if (jj_2_935(2)) {
+ } else if (jj_2_955(2)) {
jj_consume_token(FINAL);
runningOp = SqlStdOperatorTable.FINAL;
} else {
@@ -9156,8 +9381,8 @@
throw new ParseException();
}
s = span();
- func = NamedFunctionCall();
- {if (true) return runningOp.createCall(s.end(func), func);}
+ e = Expression3(ExprContext.ACCEPT_NON_QUERY);
+ {if (true) return runningOp.createCall(s.end(e), e);}
throw new Error("Missing return statement in function");
}
@@ -9168,19 +9393,19 @@
final SqlOperator runningOp;
final List<SqlNode> args = new ArrayList<SqlNode>();
SqlNode e;
- if (jj_2_936(2)) {
+ if (jj_2_956(2)) {
jj_consume_token(RUNNING);
runningOp = SqlStdOperatorTable.RUNNING; s.add(this);
- } else if (jj_2_937(2)) {
+ } else if (jj_2_957(2)) {
jj_consume_token(FINAL);
runningOp = SqlStdOperatorTable.FINAL; s.add(this);
} else {
runningOp = null;
}
- if (jj_2_938(2)) {
+ if (jj_2_958(2)) {
jj_consume_token(FIRST);
funcOp = SqlStdOperatorTable.FIRST;
- } else if (jj_2_939(2)) {
+ } else if (jj_2_959(2)) {
jj_consume_token(LAST);
funcOp = SqlStdOperatorTable.LAST;
} else {
@@ -9190,7 +9415,7 @@
s.add(this);
jj_consume_token(LPAREN);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_940(2)) {
+ if (jj_2_960(2)) {
jj_consume_token(COMMA);
e = NumericLiteral();
args.add(e);
@@ -9212,10 +9437,10 @@
final SqlOperator funcOp;
final List<SqlNode> args = new ArrayList<SqlNode>();
SqlNode e;
- if (jj_2_941(2)) {
+ if (jj_2_961(2)) {
jj_consume_token(PREV);
funcOp = SqlStdOperatorTable.PREV;
- } else if (jj_2_942(2)) {
+ } else if (jj_2_962(2)) {
jj_consume_token(NEXT);
funcOp = SqlStdOperatorTable.NEXT;
} else {
@@ -9225,7 +9450,7 @@
s = span();
jj_consume_token(LPAREN);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_943(2)) {
+ if (jj_2_963(2)) {
jj_consume_token(COMMA);
e = NumericLiteral();
args.add(e);
@@ -9267,12 +9492,12 @@
final public Pair<SqlParserPos, SqlOperator> NullTreatment() throws ParseException {
final Span span;
- if (jj_2_944(2)) {
+ if (jj_2_964(2)) {
jj_consume_token(IGNORE);
span = span();
jj_consume_token(NULLS);
{if (true) return Pair.of(span.end(this), SqlStdOperatorTable.IGNORE_NULLS);}
- } else if (jj_2_945(2)) {
+ } else if (jj_2_965(2)) {
jj_consume_token(RESPECT);
span = span();
jj_consume_token(NULLS);
@@ -9312,7 +9537,7 @@
final SqlNode filter;
final Span overSpan;
final SqlNode over;
- if (jj_2_946(2)) {
+ if (jj_2_966(2)) {
call = StringAggFunctionCall();
} else {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
@@ -9321,8 +9546,8 @@
call = PercentileFunctionCall();
break;
default:
- jj_la1[7] = jj_gen;
- if (jj_2_947(2)) {
+ jj_la1[8] = jj_gen;
+ if (jj_2_967(2)) {
call = NamedCall();
} else {
jj_consume_token(-1);
@@ -9330,23 +9555,23 @@
}
}
}
- if (jj_2_948(2)) {
+ if (jj_2_968(2)) {
call = nullTreatment(call);
} else {
;
}
- if (jj_2_949(2)) {
+ if (jj_2_969(2)) {
// decide between WITHIN DISTINCT and WITHIN GROUP
call = withinDistinct(call);
} else {
;
}
- if (jj_2_950(2)) {
+ if (jj_2_970(2)) {
call = withinGroup(call);
} else {
;
}
- if (jj_2_951(2)) {
+ if (jj_2_971(2)) {
jj_consume_token(FILTER);
filterSpan = span();
jj_consume_token(LPAREN);
@@ -9358,12 +9583,12 @@
} else {
;
}
- if (jj_2_954(2)) {
+ if (jj_2_974(2)) {
jj_consume_token(OVER);
overSpan = span();
- if (jj_2_952(2)) {
+ if (jj_2_972(2)) {
over = SimpleIdentifier();
- } else if (jj_2_953(2)) {
+ } else if (jj_2_973(2)) {
over = WindowSpecification();
} else {
jj_consume_token(-1);
@@ -9383,7 +9608,7 @@
final Span s;
final List<SqlNode> args;
SqlLiteral quantifier = null;
- if (jj_2_955(2)) {
+ if (jj_2_975(2)) {
jj_consume_token(SPECIFIC);
funcType = SqlFunctionCategory.USER_DEFINED_SPECIFIC_FUNCTION;
} else {
@@ -9391,16 +9616,16 @@
}
qualifiedName = FunctionName();
s = span();
- if (jj_2_956(2)) {
+ if (jj_2_976(2)) {
jj_consume_token(LPAREN);
jj_consume_token(STAR);
args = ImmutableList.of(SqlIdentifier.star(getPos()));
jj_consume_token(RPAREN);
- } else if (jj_2_957(2)) {
+ } else if (jj_2_977(2)) {
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
args = ImmutableList.of();
- } else if (jj_2_958(2)) {
+ } else if (jj_2_978(2)) {
args = FunctionParameterList(ExprContext.ACCEPT_SUB_QUERY);
quantifier = (SqlLiteral) args.get(0);
args.remove(0);
@@ -9423,7 +9648,7 @@
final Span s1;
jj_consume_token(LPAREN);
AddExpression(args, ExprContext.ACCEPT_SUB_QUERY);
- if (jj_2_959(2)) {
+ if (jj_2_979(2)) {
jj_consume_token(TO);
unit = TimeUnitOrName();
args.add(unit);
@@ -9433,12 +9658,12 @@
jj_consume_token(RPAREN);
SqlOperator op = SqlStdOperatorTable.floorCeil(floorFlag, this.conformance);
function = op.createCall(s.end(this), args);
- if (jj_2_962(2)) {
+ if (jj_2_982(2)) {
jj_consume_token(OVER);
s1 = span();
- if (jj_2_960(2)) {
+ if (jj_2_980(2)) {
e = SimpleIdentifier();
- } else if (jj_2_961(2)) {
+ } else if (jj_2_981(2)) {
e = WindowSpecification();
} else {
jj_consume_token(-1);
@@ -9466,9 +9691,9 @@
*/
final public SqlIdentifier FunctionName() throws ParseException {
SqlIdentifier qualifiedName;
- if (jj_2_963(2)) {
+ if (jj_2_983(2)) {
qualifiedName = CompoundIdentifier();
- } else if (jj_2_964(2)) {
+ } else if (jj_2_984(2)) {
qualifiedName = ReservedFunctionName();
} else {
jj_consume_token(-1);
@@ -9482,135 +9707,135 @@
* Parses a reserved word which is used as the name of a function.
*/
final public SqlIdentifier ReservedFunctionName() throws ParseException {
- if (jj_2_965(2)) {
+ if (jj_2_985(2)) {
jj_consume_token(ABS);
- } else if (jj_2_966(2)) {
- jj_consume_token(AVG);
- } else if (jj_2_967(2)) {
- jj_consume_token(CARDINALITY);
- } else if (jj_2_968(2)) {
- jj_consume_token(CEILING);
- } else if (jj_2_969(2)) {
- jj_consume_token(CHAR);
- } else if (jj_2_970(2)) {
- jj_consume_token(CHAR_LENGTH);
- } else if (jj_2_971(2)) {
- jj_consume_token(CHARACTER_LENGTH);
- } else if (jj_2_972(2)) {
- jj_consume_token(COALESCE);
- } else if (jj_2_973(2)) {
- jj_consume_token(COLLECT);
- } else if (jj_2_974(2)) {
- jj_consume_token(COVAR_POP);
- } else if (jj_2_975(2)) {
- jj_consume_token(COVAR_SAMP);
- } else if (jj_2_976(2)) {
- jj_consume_token(CUME_DIST);
- } else if (jj_2_977(2)) {
- jj_consume_token(COUNT);
- } else if (jj_2_978(2)) {
- jj_consume_token(CURRENT_DATE);
- } else if (jj_2_979(2)) {
- jj_consume_token(CURRENT_TIME);
- } else if (jj_2_980(2)) {
- jj_consume_token(CURRENT_TIMESTAMP);
- } else if (jj_2_981(2)) {
- jj_consume_token(DENSE_RANK);
- } else if (jj_2_982(2)) {
- jj_consume_token(ELEMENT);
- } else if (jj_2_983(2)) {
- jj_consume_token(EVERY);
- } else if (jj_2_984(2)) {
- jj_consume_token(EXP);
- } else if (jj_2_985(2)) {
- jj_consume_token(FIRST_VALUE);
} else if (jj_2_986(2)) {
- jj_consume_token(FLOOR);
+ jj_consume_token(AVG);
} else if (jj_2_987(2)) {
- jj_consume_token(FUSION);
+ jj_consume_token(CARDINALITY);
} else if (jj_2_988(2)) {
- jj_consume_token(INTERSECTION);
+ jj_consume_token(CEILING);
} else if (jj_2_989(2)) {
- jj_consume_token(GROUPING);
+ jj_consume_token(CHAR);
} else if (jj_2_990(2)) {
- jj_consume_token(HOUR);
+ jj_consume_token(CHAR_LENGTH);
} else if (jj_2_991(2)) {
- jj_consume_token(LAG);
+ jj_consume_token(CHARACTER_LENGTH);
} else if (jj_2_992(2)) {
- jj_consume_token(LEAD);
+ jj_consume_token(COALESCE);
} else if (jj_2_993(2)) {
- jj_consume_token(LEFT);
+ jj_consume_token(COLLECT);
} else if (jj_2_994(2)) {
- jj_consume_token(LAST_VALUE);
+ jj_consume_token(COVAR_POP);
} else if (jj_2_995(2)) {
- jj_consume_token(LN);
+ jj_consume_token(COVAR_SAMP);
} else if (jj_2_996(2)) {
- jj_consume_token(LOCALTIME);
+ jj_consume_token(CUME_DIST);
} else if (jj_2_997(2)) {
- jj_consume_token(LOCALTIMESTAMP);
+ jj_consume_token(COUNT);
} else if (jj_2_998(2)) {
- jj_consume_token(LOWER);
+ jj_consume_token(CURRENT_DATE);
} else if (jj_2_999(2)) {
- jj_consume_token(MAX);
+ jj_consume_token(CURRENT_TIME);
} else if (jj_2_1000(2)) {
- jj_consume_token(MIN);
+ jj_consume_token(CURRENT_TIMESTAMP);
} else if (jj_2_1001(2)) {
- jj_consume_token(MINUTE);
+ jj_consume_token(DENSE_RANK);
} else if (jj_2_1002(2)) {
- jj_consume_token(MOD);
+ jj_consume_token(ELEMENT);
} else if (jj_2_1003(2)) {
- jj_consume_token(MONTH);
+ jj_consume_token(EVERY);
} else if (jj_2_1004(2)) {
- jj_consume_token(NTH_VALUE);
+ jj_consume_token(EXP);
} else if (jj_2_1005(2)) {
- jj_consume_token(NTILE);
+ jj_consume_token(FIRST_VALUE);
} else if (jj_2_1006(2)) {
- jj_consume_token(NULLIF);
+ jj_consume_token(FLOOR);
} else if (jj_2_1007(2)) {
- jj_consume_token(OCTET_LENGTH);
+ jj_consume_token(FUSION);
} else if (jj_2_1008(2)) {
- jj_consume_token(PERCENTILE_CONT);
+ jj_consume_token(INTERSECTION);
} else if (jj_2_1009(2)) {
- jj_consume_token(PERCENTILE_DISC);
+ jj_consume_token(GROUPING);
} else if (jj_2_1010(2)) {
- jj_consume_token(PERCENT_RANK);
+ jj_consume_token(HOUR);
} else if (jj_2_1011(2)) {
- jj_consume_token(POWER);
+ jj_consume_token(LAG);
} else if (jj_2_1012(2)) {
- jj_consume_token(RANK);
+ jj_consume_token(LEAD);
} else if (jj_2_1013(2)) {
- jj_consume_token(REGR_COUNT);
+ jj_consume_token(LEFT);
} else if (jj_2_1014(2)) {
- jj_consume_token(REGR_SXX);
+ jj_consume_token(LAST_VALUE);
} else if (jj_2_1015(2)) {
- jj_consume_token(REGR_SYY);
+ jj_consume_token(LN);
} else if (jj_2_1016(2)) {
- jj_consume_token(RIGHT);
+ jj_consume_token(LOCALTIME);
} else if (jj_2_1017(2)) {
- jj_consume_token(ROW_NUMBER);
+ jj_consume_token(LOCALTIMESTAMP);
} else if (jj_2_1018(2)) {
- jj_consume_token(SECOND);
+ jj_consume_token(LOWER);
} else if (jj_2_1019(2)) {
- jj_consume_token(SOME);
+ jj_consume_token(MAX);
} else if (jj_2_1020(2)) {
- jj_consume_token(SQRT);
+ jj_consume_token(MIN);
} else if (jj_2_1021(2)) {
- jj_consume_token(STDDEV_POP);
+ jj_consume_token(MINUTE);
} else if (jj_2_1022(2)) {
- jj_consume_token(STDDEV_SAMP);
+ jj_consume_token(MOD);
} else if (jj_2_1023(2)) {
- jj_consume_token(SUM);
+ jj_consume_token(MONTH);
} else if (jj_2_1024(2)) {
- jj_consume_token(UPPER);
+ jj_consume_token(NTH_VALUE);
} else if (jj_2_1025(2)) {
- jj_consume_token(TRUNCATE);
+ jj_consume_token(NTILE);
} else if (jj_2_1026(2)) {
- jj_consume_token(USER);
+ jj_consume_token(NULLIF);
} else if (jj_2_1027(2)) {
- jj_consume_token(VAR_POP);
+ jj_consume_token(OCTET_LENGTH);
} else if (jj_2_1028(2)) {
- jj_consume_token(VAR_SAMP);
+ jj_consume_token(PERCENTILE_CONT);
} else if (jj_2_1029(2)) {
+ jj_consume_token(PERCENTILE_DISC);
+ } else if (jj_2_1030(2)) {
+ jj_consume_token(PERCENT_RANK);
+ } else if (jj_2_1031(2)) {
+ jj_consume_token(POWER);
+ } else if (jj_2_1032(2)) {
+ jj_consume_token(RANK);
+ } else if (jj_2_1033(2)) {
+ jj_consume_token(REGR_COUNT);
+ } else if (jj_2_1034(2)) {
+ jj_consume_token(REGR_SXX);
+ } else if (jj_2_1035(2)) {
+ jj_consume_token(REGR_SYY);
+ } else if (jj_2_1036(2)) {
+ jj_consume_token(RIGHT);
+ } else if (jj_2_1037(2)) {
+ jj_consume_token(ROW_NUMBER);
+ } else if (jj_2_1038(2)) {
+ jj_consume_token(SECOND);
+ } else if (jj_2_1039(2)) {
+ jj_consume_token(SOME);
+ } else if (jj_2_1040(2)) {
+ jj_consume_token(SQRT);
+ } else if (jj_2_1041(2)) {
+ jj_consume_token(STDDEV_POP);
+ } else if (jj_2_1042(2)) {
+ jj_consume_token(STDDEV_SAMP);
+ } else if (jj_2_1043(2)) {
+ jj_consume_token(SUM);
+ } else if (jj_2_1044(2)) {
+ jj_consume_token(UPPER);
+ } else if (jj_2_1045(2)) {
+ jj_consume_token(TRUNCATE);
+ } else if (jj_2_1046(2)) {
+ jj_consume_token(USER);
+ } else if (jj_2_1047(2)) {
+ jj_consume_token(VAR_POP);
+ } else if (jj_2_1048(2)) {
+ jj_consume_token(VAR_SAMP);
+ } else if (jj_2_1049(2)) {
jj_consume_token(YEAR);
} else {
jj_consume_token(-1);
@@ -9621,33 +9846,33 @@
}
final public SqlIdentifier ContextVariable() throws ParseException {
- if (jj_2_1030(2)) {
+ if (jj_2_1050(2)) {
jj_consume_token(CURRENT_CATALOG);
- } else if (jj_2_1031(2)) {
+ } else if (jj_2_1051(2)) {
jj_consume_token(CURRENT_DATE);
- } else if (jj_2_1032(2)) {
+ } else if (jj_2_1052(2)) {
jj_consume_token(CURRENT_DEFAULT_TRANSFORM_GROUP);
- } else if (jj_2_1033(2)) {
+ } else if (jj_2_1053(2)) {
jj_consume_token(CURRENT_PATH);
- } else if (jj_2_1034(2)) {
+ } else if (jj_2_1054(2)) {
jj_consume_token(CURRENT_ROLE);
- } else if (jj_2_1035(2)) {
+ } else if (jj_2_1055(2)) {
jj_consume_token(CURRENT_SCHEMA);
- } else if (jj_2_1036(2)) {
+ } else if (jj_2_1056(2)) {
jj_consume_token(CURRENT_TIME);
- } else if (jj_2_1037(2)) {
+ } else if (jj_2_1057(2)) {
jj_consume_token(CURRENT_TIMESTAMP);
- } else if (jj_2_1038(2)) {
+ } else if (jj_2_1058(2)) {
jj_consume_token(CURRENT_USER);
- } else if (jj_2_1039(2)) {
+ } else if (jj_2_1059(2)) {
jj_consume_token(LOCALTIME);
- } else if (jj_2_1040(2)) {
+ } else if (jj_2_1060(2)) {
jj_consume_token(LOCALTIMESTAMP);
- } else if (jj_2_1041(2)) {
+ } else if (jj_2_1061(2)) {
jj_consume_token(SESSION_USER);
- } else if (jj_2_1042(2)) {
+ } else if (jj_2_1062(2)) {
jj_consume_token(SYSTEM_USER);
- } else if (jj_2_1043(2)) {
+ } else if (jj_2_1063(2)) {
jj_consume_token(USER);
} else {
jj_consume_token(-1);
@@ -9717,12 +9942,12 @@
args = new SqlNodeList(call.getOperandList(), getPos());
break;
default:
- jj_la1[9] = jj_gen;
- if (jj_2_1054(3)) {
+ jj_la1[10] = jj_gen;
+ if (jj_2_1074(3)) {
call = TimestampDiffFunctionCall();
name = call.getOperator().getName();
args = new SqlNodeList(call.getOperandList(), getPos());
- } else if (jj_2_1055(2)) {
+ } else if (jj_2_1075(2)) {
jj_consume_token(CONVERT);
name = unquotedIdentifier();
jj_consume_token(LPAREN);
@@ -9733,19 +9958,19 @@
tl = JdbcOdbcDataType();
args.add(tl);
jj_consume_token(RPAREN);
- } else if (jj_2_1056(2)) {
+ } else if (jj_2_1076(2)) {
switch ((jj_ntk==-1)?jj_ntk():jj_ntk) {
case INSERT:
case LEFT:
case RIGHT:
case TRUNCATE:
- if (jj_2_1044(2)) {
+ if (jj_2_1064(2)) {
jj_consume_token(INSERT);
- } else if (jj_2_1045(2)) {
+ } else if (jj_2_1065(2)) {
jj_consume_token(LEFT);
- } else if (jj_2_1046(2)) {
+ } else if (jj_2_1066(2)) {
jj_consume_token(RIGHT);
- } else if (jj_2_1047(2)) {
+ } else if (jj_2_1067(2)) {
jj_consume_token(TRUNCATE);
} else {
jj_consume_token(-1);
@@ -9754,33 +9979,33 @@
name = unquotedIdentifier();
break;
default:
- jj_la1[8] = jj_gen;
- if (jj_2_1048(2)) {
+ jj_la1[9] = jj_gen;
+ if (jj_2_1068(2)) {
// For cases like {fn power(1,2)} and {fn lower('a')}
id = ReservedFunctionName();
name = id.getSimple();
- } else if (jj_2_1049(2)) {
+ } else if (jj_2_1069(2)) {
// For cases like {fn substring('foo', 1,2)}
name = NonReservedJdbcFunctionName();
- } else if (jj_2_1050(2)) {
+ } else if (jj_2_1070(2)) {
name = Identifier();
} else {
jj_consume_token(-1);
throw new ParseException();
}
}
- if (jj_2_1051(2)) {
+ if (jj_2_1071(2)) {
jj_consume_token(LPAREN);
jj_consume_token(STAR);
s1 = span();
jj_consume_token(RPAREN);
args = new SqlNodeList(s1.pos());
args.add(SqlIdentifier.star(s1.pos()));
- } else if (jj_2_1052(2)) {
+ } else if (jj_2_1072(2)) {
jj_consume_token(LPAREN);
jj_consume_token(RPAREN);
args = SqlNodeList.EMPTY;
- } else if (jj_2_1053(2)) {
+ } else if (jj_2_1073(2)) {
args = ParenthesizedQueryOrCommaList(ExprContext.ACCEPT_SUB_QUERY);
} else {
jj_consume_token(-1);
@@ -9801,32 +10026,32 @@
* Parses a binary query operator like UNION.
*/
final public SqlBinaryOperator BinaryQueryOperator() throws ParseException {
- if (jj_2_1065(2)) {
+ if (jj_2_1085(2)) {
jj_consume_token(UNION);
- if (jj_2_1057(2)) {
+ if (jj_2_1077(2)) {
jj_consume_token(ALL);
{if (true) return SqlStdOperatorTable.UNION_ALL;}
- } else if (jj_2_1058(2)) {
+ } else if (jj_2_1078(2)) {
jj_consume_token(DISTINCT);
{if (true) return SqlStdOperatorTable.UNION;}
} else {
{if (true) return SqlStdOperatorTable.UNION;}
}
- } else if (jj_2_1066(2)) {
+ } else if (jj_2_1086(2)) {
jj_consume_token(INTERSECT);
- if (jj_2_1059(2)) {
+ if (jj_2_1079(2)) {
jj_consume_token(ALL);
{if (true) return SqlStdOperatorTable.INTERSECT_ALL;}
- } else if (jj_2_1060(2)) {
+ } else if (jj_2_1080(2)) {
jj_consume_token(DISTINCT);
{if (true) return SqlStdOperatorTable.INTERSECT;}
} else {
{if (true) return SqlStdOperatorTable.INTERSECT;}
}
- } else if (jj_2_1067(2)) {
- if (jj_2_1061(2)) {
+ } else if (jj_2_1087(2)) {
+ if (jj_2_1081(2)) {
jj_consume_token(EXCEPT);
- } else if (jj_2_1062(2)) {
+ } else if (jj_2_1082(2)) {
jj_consume_token(SET_MINUS);
if (!this.conformance.isMinusAllowed()) {
{if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.minusNotAllowed());}
@@ -9835,10 +10060,10 @@
jj_consume_token(-1);
throw new ParseException();
}
- if (jj_2_1063(2)) {
+ if (jj_2_1083(2)) {
jj_consume_token(ALL);
{if (true) return SqlStdOperatorTable.EXCEPT_ALL;}
- } else if (jj_2_1064(2)) {
+ } else if (jj_2_1084(2)) {
jj_consume_token(DISTINCT);
{if (true) return SqlStdOperatorTable.EXCEPT;}
} else {
@@ -9856,12 +10081,12 @@
*/
final public SqlBinaryOperator BinaryMultisetOperator() throws ParseException {
jj_consume_token(MULTISET);
- if (jj_2_1077(2)) {
+ if (jj_2_1097(2)) {
jj_consume_token(UNION);
- if (jj_2_1070(2)) {
- if (jj_2_1068(2)) {
+ if (jj_2_1090(2)) {
+ if (jj_2_1088(2)) {
jj_consume_token(ALL);
- } else if (jj_2_1069(2)) {
+ } else if (jj_2_1089(2)) {
jj_consume_token(DISTINCT);
{if (true) return SqlStdOperatorTable.MULTISET_UNION_DISTINCT;}
} else {
@@ -9872,12 +10097,12 @@
;
}
{if (true) return SqlStdOperatorTable.MULTISET_UNION;}
- } else if (jj_2_1078(2)) {
+ } else if (jj_2_1098(2)) {
jj_consume_token(INTERSECT);
- if (jj_2_1073(2)) {
- if (jj_2_1071(2)) {
+ if (jj_2_1093(2)) {
+ if (jj_2_1091(2)) {
jj_consume_token(ALL);
- } else if (jj_2_1072(2)) {
+ } else if (jj_2_1092(2)) {
jj_consume_token(DISTINCT);
{if (true) return SqlStdOperatorTable.MULTISET_INTERSECT_DISTINCT;}
} else {
@@ -9888,12 +10113,12 @@
;
}
{if (true) return SqlStdOperatorTable.MULTISET_INTERSECT;}
- } else if (jj_2_1079(2)) {
+ } else if (jj_2_1099(2)) {
jj_consume_token(EXCEPT);
- if (jj_2_1076(2)) {
- if (jj_2_1074(2)) {
+ if (jj_2_1096(2)) {
+ if (jj_2_1094(2)) {
jj_consume_token(ALL);
- } else if (jj_2_1075(2)) {
+ } else if (jj_2_1095(2)) {
jj_consume_token(DISTINCT);
{if (true) return SqlStdOperatorTable.MULTISET_EXCEPT_DISTINCT;}
} else {
@@ -9916,105 +10141,114 @@
*/
final public SqlBinaryOperator BinaryRowOperator() throws ParseException {
SqlBinaryOperator op;
- if (jj_2_1080(2)) {
+ if (jj_2_1100(2)) {
jj_consume_token(EQ);
{if (true) return SqlStdOperatorTable.EQUALS;}
- } else if (jj_2_1081(2)) {
+ } else if (jj_2_1101(2)) {
+ jj_consume_token(LEFTSHIFT);
+ {if (true) return SqlStdOperatorTable.BIT_LEFT_SHIFT;}
+ } else if (jj_2_1102(2)) {
jj_consume_token(GT);
{if (true) return SqlStdOperatorTable.GREATER_THAN;}
- } else if (jj_2_1082(2)) {
+ } else if (jj_2_1103(2)) {
jj_consume_token(LT);
{if (true) return SqlStdOperatorTable.LESS_THAN;}
- } else if (jj_2_1083(2)) {
+ } else if (jj_2_1104(2)) {
jj_consume_token(LE);
{if (true) return SqlStdOperatorTable.LESS_THAN_OR_EQUAL;}
- } else if (jj_2_1084(2)) {
+ } else if (jj_2_1105(2)) {
jj_consume_token(GE);
{if (true) return SqlStdOperatorTable.GREATER_THAN_OR_EQUAL;}
- } else if (jj_2_1085(2)) {
+ } else if (jj_2_1106(2)) {
jj_consume_token(NE);
{if (true) return SqlStdOperatorTable.NOT_EQUALS;}
- } else if (jj_2_1086(2)) {
+ } else if (jj_2_1107(2)) {
jj_consume_token(NE2);
if (!this.conformance.isBangEqualAllowed()) {
{if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.bangEqualNotAllowed());}
}
{if (true) return SqlStdOperatorTable.NOT_EQUALS;}
- } else if (jj_2_1087(2)) {
+ } else if (jj_2_1108(2)) {
jj_consume_token(PLUS);
{if (true) return SqlStdOperatorTable.PLUS;}
- } else if (jj_2_1088(2)) {
+ } else if (jj_2_1109(2)) {
jj_consume_token(MINUS);
{if (true) return SqlStdOperatorTable.MINUS;}
- } else if (jj_2_1089(2)) {
+ } else if (jj_2_1110(2)) {
jj_consume_token(STAR);
{if (true) return SqlStdOperatorTable.MULTIPLY;}
- } else if (jj_2_1090(2)) {
+ } else if (jj_2_1111(2)) {
jj_consume_token(SLASH);
{if (true) return SqlStdOperatorTable.DIVIDE;}
- } else if (jj_2_1091(2)) {
+ } else if (jj_2_1112(2)) {
jj_consume_token(PERCENT_REMAINDER);
if (!this.conformance.isPercentRemainderAllowed()) {
{if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.percentRemainderNotAllowed());}
}
{if (true) return SqlStdOperatorTable.PERCENT_REMAINDER;}
- } else if (jj_2_1092(2)) {
+ } else if (jj_2_1113(2)) {
jj_consume_token(CONCAT);
{if (true) return SqlStdOperatorTable.CONCAT;}
- } else if (jj_2_1093(2)) {
+ } else if (jj_2_1114(2)) {
jj_consume_token(AND);
{if (true) return SqlStdOperatorTable.AND;}
- } else if (jj_2_1094(2)) {
+ } else if (jj_2_1115(2)) {
jj_consume_token(OR);
{if (true) return SqlStdOperatorTable.OR;}
- } else if (jj_2_1095(2)) {
+ } else if (jj_2_1116(2)) {
jj_consume_token(IS);
jj_consume_token(DISTINCT);
jj_consume_token(FROM);
{if (true) return SqlStdOperatorTable.IS_DISTINCT_FROM;}
- } else if (jj_2_1096(2)) {
+ } else if (jj_2_1117(2)) {
jj_consume_token(IS);
jj_consume_token(NOT);
jj_consume_token(DISTINCT);
jj_consume_token(FROM);
{if (true) return SqlStdOperatorTable.IS_NOT_DISTINCT_FROM;}
- } else if (jj_2_1097(2)) {
+ } else if (jj_2_1118(2)) {
jj_consume_token(MEMBER);
jj_consume_token(OF);
{if (true) return SqlStdOperatorTable.MEMBER_OF;}
- } else if (jj_2_1098(2)) {
+ } else if (jj_2_1119(2)) {
jj_consume_token(SUBMULTISET);
jj_consume_token(OF);
{if (true) return SqlStdOperatorTable.SUBMULTISET_OF;}
- } else if (jj_2_1099(2)) {
+ } else if (jj_2_1120(2)) {
jj_consume_token(NOT);
jj_consume_token(SUBMULTISET);
jj_consume_token(OF);
{if (true) return SqlStdOperatorTable.NOT_SUBMULTISET_OF;}
- } else if (jj_2_1100(2)) {
+ } else if (jj_2_1121(2)) {
jj_consume_token(CONTAINS);
{if (true) return SqlStdOperatorTable.CONTAINS;}
- } else if (jj_2_1101(2)) {
+ } else if (jj_2_1122(2)) {
jj_consume_token(OVERLAPS);
{if (true) return SqlStdOperatorTable.OVERLAPS;}
- } else if (jj_2_1102(2)) {
+ } else if (jj_2_1123(2)) {
+ jj_consume_token(CARET);
+ {if (true) return SqlStdOperatorTable.BITXOR_OPERATOR;}
+ } else if (jj_2_1124(2)) {
jj_consume_token(EQUALS);
{if (true) return SqlStdOperatorTable.PERIOD_EQUALS;}
- } else if (jj_2_1103(2)) {
+ } else if (jj_2_1125(2)) {
+ jj_consume_token(AMPERSAND);
+ {if (true) return SqlStdOperatorTable.BITAND_OPERATOR;}
+ } else if (jj_2_1126(2)) {
jj_consume_token(PRECEDES);
{if (true) return SqlStdOperatorTable.PRECEDES;}
- } else if (jj_2_1104(2)) {
+ } else if (jj_2_1127(2)) {
jj_consume_token(SUCCEEDS);
{if (true) return SqlStdOperatorTable.SUCCEEDS;}
- } else if (jj_2_1105(2)) {
+ } else if (jj_2_1128(2)) {
jj_consume_token(IMMEDIATELY);
jj_consume_token(PRECEDES);
{if (true) return SqlStdOperatorTable.IMMEDIATELY_PRECEDES;}
- } else if (jj_2_1106(2)) {
+ } else if (jj_2_1129(2)) {
jj_consume_token(IMMEDIATELY);
jj_consume_token(SUCCEEDS);
{if (true) return SqlStdOperatorTable.IMMEDIATELY_SUCCEEDS;}
- } else if (jj_2_1107(2)) {
+ } else if (jj_2_1130(2)) {
op = BinaryMultisetOperator();
{if (true) return op;}
} else {
@@ -10028,19 +10262,19 @@
* Parses a prefix row operator like NOT.
*/
final public SqlPrefixOperator PrefixRowOperator() throws ParseException {
- if (jj_2_1108(2)) {
+ if (jj_2_1131(2)) {
jj_consume_token(PLUS);
{if (true) return SqlStdOperatorTable.UNARY_PLUS;}
- } else if (jj_2_1109(2)) {
+ } else if (jj_2_1132(2)) {
jj_consume_token(MINUS);
{if (true) return SqlStdOperatorTable.UNARY_MINUS;}
- } else if (jj_2_1110(2)) {
+ } else if (jj_2_1133(2)) {
jj_consume_token(NOT);
{if (true) return SqlStdOperatorTable.NOT;}
- } else if (jj_2_1111(2)) {
+ } else if (jj_2_1134(2)) {
jj_consume_token(EXISTS);
{if (true) return SqlStdOperatorTable.EXISTS;}
- } else if (jj_2_1112(2)) {
+ } else if (jj_2_1135(2)) {
jj_consume_token(UNIQUE);
{if (true) return SqlStdOperatorTable.UNIQUE;}
} else {
@@ -10054,89 +10288,89 @@
* Parses a postfix row operator like IS NOT NULL.
*/
final public SqlPostfixOperator PostfixRowOperator() throws ParseException {
- if (jj_2_1137(2)) {
+ if (jj_2_1160(2)) {
jj_consume_token(IS);
- if (jj_2_1134(2)) {
+ if (jj_2_1157(2)) {
jj_consume_token(A);
jj_consume_token(SET);
{if (true) return SqlStdOperatorTable.IS_A_SET;}
- } else if (jj_2_1135(2)) {
+ } else if (jj_2_1158(2)) {
jj_consume_token(NOT);
- if (jj_2_1113(2)) {
+ if (jj_2_1136(2)) {
jj_consume_token(NULL);
{if (true) return SqlStdOperatorTable.IS_NOT_NULL;}
- } else if (jj_2_1114(2)) {
+ } else if (jj_2_1137(2)) {
jj_consume_token(TRUE);
{if (true) return SqlStdOperatorTable.IS_NOT_TRUE;}
- } else if (jj_2_1115(2)) {
+ } else if (jj_2_1138(2)) {
jj_consume_token(FALSE);
{if (true) return SqlStdOperatorTable.IS_NOT_FALSE;}
- } else if (jj_2_1116(2)) {
+ } else if (jj_2_1139(2)) {
jj_consume_token(UNKNOWN);
{if (true) return SqlStdOperatorTable.IS_NOT_UNKNOWN;}
- } else if (jj_2_1117(2)) {
+ } else if (jj_2_1140(2)) {
jj_consume_token(A);
jj_consume_token(SET);
{if (true) return SqlStdOperatorTable.IS_NOT_A_SET;}
- } else if (jj_2_1118(2)) {
+ } else if (jj_2_1141(2)) {
jj_consume_token(EMPTY);
{if (true) return SqlStdOperatorTable.IS_NOT_EMPTY;}
- } else if (jj_2_1119(2)) {
+ } else if (jj_2_1142(2)) {
jj_consume_token(JSON);
jj_consume_token(VALUE);
{if (true) return SqlStdOperatorTable.IS_NOT_JSON_VALUE;}
- } else if (jj_2_1120(2)) {
+ } else if (jj_2_1143(2)) {
jj_consume_token(JSON);
jj_consume_token(OBJECT);
{if (true) return SqlStdOperatorTable.IS_NOT_JSON_OBJECT;}
- } else if (jj_2_1121(2)) {
+ } else if (jj_2_1144(2)) {
jj_consume_token(JSON);
jj_consume_token(ARRAY);
{if (true) return SqlStdOperatorTable.IS_NOT_JSON_ARRAY;}
- } else if (jj_2_1122(2)) {
+ } else if (jj_2_1145(2)) {
jj_consume_token(JSON);
jj_consume_token(SCALAR);
{if (true) return SqlStdOperatorTable.IS_NOT_JSON_SCALAR;}
- } else if (jj_2_1123(2)) {
+ } else if (jj_2_1146(2)) {
jj_consume_token(JSON);
{if (true) return SqlStdOperatorTable.IS_NOT_JSON_VALUE;}
} else {
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_1136(2)) {
- if (jj_2_1124(2)) {
+ } else if (jj_2_1159(2)) {
+ if (jj_2_1147(2)) {
jj_consume_token(NULL);
{if (true) return SqlStdOperatorTable.IS_NULL;}
- } else if (jj_2_1125(2)) {
+ } else if (jj_2_1148(2)) {
jj_consume_token(TRUE);
{if (true) return SqlStdOperatorTable.IS_TRUE;}
- } else if (jj_2_1126(2)) {
+ } else if (jj_2_1149(2)) {
jj_consume_token(FALSE);
{if (true) return SqlStdOperatorTable.IS_FALSE;}
- } else if (jj_2_1127(2)) {
+ } else if (jj_2_1150(2)) {
jj_consume_token(UNKNOWN);
{if (true) return SqlStdOperatorTable.IS_UNKNOWN;}
- } else if (jj_2_1128(2)) {
+ } else if (jj_2_1151(2)) {
jj_consume_token(EMPTY);
{if (true) return SqlStdOperatorTable.IS_EMPTY;}
- } else if (jj_2_1129(2)) {
+ } else if (jj_2_1152(2)) {
jj_consume_token(JSON);
jj_consume_token(VALUE);
{if (true) return SqlStdOperatorTable.IS_JSON_VALUE;}
- } else if (jj_2_1130(2)) {
+ } else if (jj_2_1153(2)) {
jj_consume_token(JSON);
jj_consume_token(OBJECT);
{if (true) return SqlStdOperatorTable.IS_JSON_OBJECT;}
- } else if (jj_2_1131(2)) {
+ } else if (jj_2_1154(2)) {
jj_consume_token(JSON);
jj_consume_token(ARRAY);
{if (true) return SqlStdOperatorTable.IS_JSON_ARRAY;}
- } else if (jj_2_1132(2)) {
+ } else if (jj_2_1155(2)) {
jj_consume_token(JSON);
jj_consume_token(SCALAR);
{if (true) return SqlStdOperatorTable.IS_JSON_SCALAR;}
- } else if (jj_2_1133(2)) {
+ } else if (jj_2_1156(2)) {
jj_consume_token(JSON);
{if (true) return SqlStdOperatorTable.IS_JSON_VALUE;}
} else {
@@ -10147,7 +10381,7 @@
jj_consume_token(-1);
throw new ParseException();
}
- } else if (jj_2_1138(2)) {
+ } else if (jj_2_1161(2)) {
jj_consume_token(FORMAT);
JsonRepresentation();
{if (true) return SqlStdOperatorTable.JSON_VALUE_EXPRESSION;}
@@ -10173,11 +10407,11 @@
* @see Glossary#SQL2003 SQL:2003 Part 2 Section 5.2
*/
final public String NonReservedKeyWord() throws ParseException {
- if (jj_2_1139(2)) {
+ if (jj_2_1162(2)) {
NonReservedKeyWord0of3();
- } else if (jj_2_1140(2)) {
+ } else if (jj_2_1163(2)) {
NonReservedKeyWord1of3();
- } else if (jj_2_1141(2)) {
+ } else if (jj_2_1164(2)) {
NonReservedKeyWord2of3();
} else {
jj_consume_token(-1);
@@ -10189,450 +10423,450 @@
/** @see #NonReservedKeyWord */
final public void NonReservedKeyWord0of3() throws ParseException {
- if (jj_2_1142(2)) {
+ if (jj_2_1165(2)) {
jj_consume_token(A);
- } else if (jj_2_1143(2)) {
- jj_consume_token(ACTION);
- } else if (jj_2_1144(2)) {
- jj_consume_token(ADMIN);
- } else if (jj_2_1145(2)) {
- jj_consume_token(APPLY);
- } else if (jj_2_1146(2)) {
- jj_consume_token(ASC);
- } else if (jj_2_1147(2)) {
- jj_consume_token(ATTRIBUTE);
- } else if (jj_2_1148(2)) {
- jj_consume_token(BERNOULLI);
- } else if (jj_2_1149(2)) {
- jj_consume_token(CASCADE);
- } else if (jj_2_1150(2)) {
- jj_consume_token(CENTURY);
- } else if (jj_2_1151(2)) {
- jj_consume_token(CHARACTERS);
- } else if (jj_2_1152(2)) {
- jj_consume_token(CHARACTER_SET_SCHEMA);
- } else if (jj_2_1153(2)) {
- jj_consume_token(COLLATION);
- } else if (jj_2_1154(2)) {
- jj_consume_token(COLLATION_SCHEMA);
- } else if (jj_2_1155(2)) {
- jj_consume_token(COMMAND_FUNCTION_CODE);
- } else if (jj_2_1156(2)) {
- jj_consume_token(CONDITION_NUMBER);
- } else if (jj_2_1157(2)) {
- jj_consume_token(CONSTRAINT_CATALOG);
- } else if (jj_2_1158(2)) {
- jj_consume_token(CONSTRAINT_SCHEMA);
- } else if (jj_2_1159(2)) {
- jj_consume_token(CONTINUE);
- } else if (jj_2_1160(2)) {
- jj_consume_token(DATABASE);
- } else if (jj_2_1161(2)) {
- jj_consume_token(DATETIME_DIFF);
- } else if (jj_2_1162(2)) {
- jj_consume_token(DATETIME_TRUNC);
- } else if (jj_2_1163(2)) {
- jj_consume_token(DAYS);
- } else if (jj_2_1164(2)) {
- jj_consume_token(DEFERRABLE);
- } else if (jj_2_1165(2)) {
- jj_consume_token(DEFINER);
} else if (jj_2_1166(2)) {
- jj_consume_token(DERIVED);
+ jj_consume_token(ACTION);
} else if (jj_2_1167(2)) {
- jj_consume_token(DESCRIPTOR);
+ jj_consume_token(ADMIN);
} else if (jj_2_1168(2)) {
- jj_consume_token(DOMAIN);
+ jj_consume_token(APPLY);
} else if (jj_2_1169(2)) {
- jj_consume_token(DOT_FORMAT);
+ jj_consume_token(ASC);
} else if (jj_2_1170(2)) {
- jj_consume_token(ENCODING);
+ jj_consume_token(ATTRIBUTE);
} else if (jj_2_1171(2)) {
- jj_consume_token(EXCEPTION);
+ jj_consume_token(BERNOULLI);
} else if (jj_2_1172(2)) {
- jj_consume_token(FINAL);
+ jj_consume_token(CASCADE);
} else if (jj_2_1173(2)) {
- jj_consume_token(FORMAT);
+ jj_consume_token(CENTURY);
} else if (jj_2_1174(2)) {
- jj_consume_token(FRAC_SECOND);
+ jj_consume_token(CHARACTERS);
} else if (jj_2_1175(2)) {
- jj_consume_token(GENERATED);
+ jj_consume_token(CHARACTER_SET_SCHEMA);
} else if (jj_2_1176(2)) {
- jj_consume_token(GOTO);
+ jj_consume_token(COLLATION);
} else if (jj_2_1177(2)) {
- jj_consume_token(HIERARCHY);
+ jj_consume_token(COLLATION_SCHEMA);
} else if (jj_2_1178(2)) {
- jj_consume_token(IGNORE);
+ jj_consume_token(COMMAND_FUNCTION_CODE);
} else if (jj_2_1179(2)) {
- jj_consume_token(IMMEDIATELY);
+ jj_consume_token(CONDITION_NUMBER);
} else if (jj_2_1180(2)) {
- jj_consume_token(INCLUDING);
+ jj_consume_token(CONSTRAINT_CATALOG);
} else if (jj_2_1181(2)) {
- jj_consume_token(INPUT);
+ jj_consume_token(CONSTRAINT_SCHEMA);
} else if (jj_2_1182(2)) {
- jj_consume_token(INVOKER);
+ jj_consume_token(CONTINUE);
} else if (jj_2_1183(2)) {
- jj_consume_token(ISOYEAR);
+ jj_consume_token(DATABASE);
} else if (jj_2_1184(2)) {
- jj_consume_token(K);
+ jj_consume_token(DATETIME_DIFF);
} else if (jj_2_1185(2)) {
- jj_consume_token(KEY_TYPE);
+ jj_consume_token(DATETIME_TRUNC);
} else if (jj_2_1186(2)) {
- jj_consume_token(LENGTH);
+ jj_consume_token(DAYS);
} else if (jj_2_1187(2)) {
- jj_consume_token(LOCATOR);
+ jj_consume_token(DEFERRABLE);
} else if (jj_2_1188(2)) {
- jj_consume_token(MATCHED);
+ jj_consume_token(DEFINER);
} else if (jj_2_1189(2)) {
- jj_consume_token(MESSAGE_OCTET_LENGTH);
+ jj_consume_token(DERIVED);
} else if (jj_2_1190(2)) {
- jj_consume_token(MILLENNIUM);
+ jj_consume_token(DESCRIPTOR);
} else if (jj_2_1191(2)) {
- jj_consume_token(MINVALUE);
+ jj_consume_token(DOMAIN);
} else if (jj_2_1192(2)) {
- jj_consume_token(MUMPS);
+ jj_consume_token(DOT_FORMAT);
} else if (jj_2_1193(2)) {
- jj_consume_token(NANOSECOND);
+ jj_consume_token(ENCODING);
} else if (jj_2_1194(2)) {
- jj_consume_token(NULLABLE);
+ jj_consume_token(EXCEPTION);
} else if (jj_2_1195(2)) {
- jj_consume_token(OBJECT);
+ jj_consume_token(FINAL);
} else if (jj_2_1196(2)) {
- jj_consume_token(OPTIONS);
+ jj_consume_token(FORMAT);
} else if (jj_2_1197(2)) {
- jj_consume_token(OTHERS);
+ jj_consume_token(FRAC_SECOND);
} else if (jj_2_1198(2)) {
- jj_consume_token(PAD);
+ jj_consume_token(GENERATED);
} else if (jj_2_1199(2)) {
- jj_consume_token(PARAMETER_ORDINAL_POSITION);
+ jj_consume_token(GOTO);
} else if (jj_2_1200(2)) {
- jj_consume_token(PARAMETER_SPECIFIC_SCHEMA);
+ jj_consume_token(HIERARCHY);
} else if (jj_2_1201(2)) {
- jj_consume_token(PASSING);
+ jj_consume_token(IGNORE);
} else if (jj_2_1202(2)) {
- jj_consume_token(PATH);
+ jj_consume_token(IMMEDIATELY);
} else if (jj_2_1203(2)) {
- jj_consume_token(PLAN);
+ jj_consume_token(INCLUDING);
} else if (jj_2_1204(2)) {
- jj_consume_token(PRESERVE);
+ jj_consume_token(INPUT);
} else if (jj_2_1205(2)) {
- jj_consume_token(PUBLIC);
+ jj_consume_token(INVOKER);
} else if (jj_2_1206(2)) {
- jj_consume_token(READ);
+ jj_consume_token(ISOYEAR);
} else if (jj_2_1207(2)) {
- jj_consume_token(REPLACE);
+ jj_consume_token(K);
} else if (jj_2_1208(2)) {
- jj_consume_token(RESTRICT);
+ jj_consume_token(KEY_TYPE);
} else if (jj_2_1209(2)) {
- jj_consume_token(RETURNED_OCTET_LENGTH);
+ jj_consume_token(LENGTH);
} else if (jj_2_1210(2)) {
- jj_consume_token(RLIKE);
+ jj_consume_token(LOCATOR);
} else if (jj_2_1211(2)) {
- jj_consume_token(ROUTINE_CATALOG);
+ jj_consume_token(MATCHED);
} else if (jj_2_1212(2)) {
- jj_consume_token(ROW_COUNT);
+ jj_consume_token(MESSAGE_OCTET_LENGTH);
} else if (jj_2_1213(2)) {
- jj_consume_token(SCHEMA);
+ jj_consume_token(MILLENNIUM);
} else if (jj_2_1214(2)) {
- jj_consume_token(SCOPE_NAME);
+ jj_consume_token(MINVALUE);
} else if (jj_2_1215(2)) {
- jj_consume_token(SECTION);
+ jj_consume_token(MUMPS);
} else if (jj_2_1216(2)) {
- jj_consume_token(SEPARATOR);
+ jj_consume_token(NANOSECOND);
} else if (jj_2_1217(2)) {
- jj_consume_token(SERVER);
+ jj_consume_token(NULLABLE);
} else if (jj_2_1218(2)) {
- jj_consume_token(SETS);
+ jj_consume_token(OBJECT);
} else if (jj_2_1219(2)) {
- jj_consume_token(SOURCE);
+ jj_consume_token(OPTIONS);
} else if (jj_2_1220(2)) {
- jj_consume_token(SQL_BIGINT);
+ jj_consume_token(OTHERS);
} else if (jj_2_1221(2)) {
- jj_consume_token(SQL_BLOB);
+ jj_consume_token(PAD);
} else if (jj_2_1222(2)) {
- jj_consume_token(SQL_CLOB);
+ jj_consume_token(PARAMETER_ORDINAL_POSITION);
} else if (jj_2_1223(2)) {
- jj_consume_token(SQL_DOUBLE);
+ jj_consume_token(PARAMETER_SPECIFIC_SCHEMA);
} else if (jj_2_1224(2)) {
- jj_consume_token(SQL_INTERVAL_DAY);
+ jj_consume_token(PASSING);
} else if (jj_2_1225(2)) {
- jj_consume_token(SQL_INTERVAL_DAY_TO_SECOND);
+ jj_consume_token(PATH);
} else if (jj_2_1226(2)) {
- jj_consume_token(SQL_INTERVAL_HOUR_TO_SECOND);
+ jj_consume_token(PLAN);
} else if (jj_2_1227(2)) {
- jj_consume_token(SQL_INTERVAL_MONTH);
+ jj_consume_token(PRESERVE);
} else if (jj_2_1228(2)) {
- jj_consume_token(SQL_INTERVAL_YEAR_TO_MONTH);
+ jj_consume_token(PUBLIC);
} else if (jj_2_1229(2)) {
- jj_consume_token(SQL_LONGVARNCHAR);
+ jj_consume_token(READ);
} else if (jj_2_1230(2)) {
- jj_consume_token(SQL_NUMERIC);
+ jj_consume_token(REPLACE);
} else if (jj_2_1231(2)) {
- jj_consume_token(SQL_SMALLINT);
+ jj_consume_token(RESTRICT);
} else if (jj_2_1232(2)) {
- jj_consume_token(SQL_TINYINT);
+ jj_consume_token(RETURNED_OCTET_LENGTH);
} else if (jj_2_1233(2)) {
- jj_consume_token(SQL_TSI_HOUR);
+ jj_consume_token(RLIKE);
} else if (jj_2_1234(2)) {
- jj_consume_token(SQL_TSI_MONTH);
+ jj_consume_token(ROUTINE_CATALOG);
} else if (jj_2_1235(2)) {
- jj_consume_token(SQL_TSI_WEEK);
+ jj_consume_token(ROW_COUNT);
} else if (jj_2_1236(2)) {
- jj_consume_token(SQL_VARCHAR);
+ jj_consume_token(SCHEMA);
} else if (jj_2_1237(2)) {
- jj_consume_token(STRING_AGG);
+ jj_consume_token(SCOPE_NAME);
} else if (jj_2_1238(2)) {
- jj_consume_token(SUBCLASS_ORIGIN);
+ jj_consume_token(SECTION);
} else if (jj_2_1239(2)) {
- jj_consume_token(TEMPORARY);
+ jj_consume_token(SEPARATOR);
} else if (jj_2_1240(2)) {
- jj_consume_token(TIME_TRUNC);
+ jj_consume_token(SERVER);
} else if (jj_2_1241(2)) {
- jj_consume_token(TIMESTAMP_DIFF);
+ jj_consume_token(SETS);
} else if (jj_2_1242(2)) {
- jj_consume_token(TRANSACTION);
+ jj_consume_token(SOURCE);
} else if (jj_2_1243(2)) {
- jj_consume_token(TRANSACTIONS_ROLLED_BACK);
+ jj_consume_token(SQL_BIGINT);
} else if (jj_2_1244(2)) {
- jj_consume_token(TRIGGER_CATALOG);
+ jj_consume_token(SQL_BLOB);
} else if (jj_2_1245(2)) {
- jj_consume_token(TUMBLE);
+ jj_consume_token(SQL_CLOB);
} else if (jj_2_1246(2)) {
- jj_consume_token(UNCOMMITTED);
+ jj_consume_token(SQL_DOUBLE);
} else if (jj_2_1247(2)) {
- jj_consume_token(UNPIVOT);
+ jj_consume_token(SQL_INTERVAL_DAY);
} else if (jj_2_1248(2)) {
- jj_consume_token(USER_DEFINED_TYPE_CATALOG);
+ jj_consume_token(SQL_INTERVAL_DAY_TO_SECOND);
} else if (jj_2_1249(2)) {
- jj_consume_token(USER_DEFINED_TYPE_SCHEMA);
+ jj_consume_token(SQL_INTERVAL_HOUR_TO_SECOND);
} else if (jj_2_1250(2)) {
- jj_consume_token(UTF8);
+ jj_consume_token(SQL_INTERVAL_MONTH);
} else if (jj_2_1251(2)) {
- jj_consume_token(WEEK);
+ jj_consume_token(SQL_INTERVAL_YEAR_TO_MONTH);
} else if (jj_2_1252(2)) {
- jj_consume_token(WRAPPER);
+ jj_consume_token(SQL_LONGVARNCHAR);
} else if (jj_2_1253(2)) {
- jj_consume_token(YEARS);
+ jj_consume_token(SQL_NUMERIC);
} else if (jj_2_1254(2)) {
- jj_consume_token(BACKUPS);
+ jj_consume_token(SQL_SMALLINT);
} else if (jj_2_1255(2)) {
- jj_consume_token(WRITE_SYNCHRONIZATION_MODE);
+ jj_consume_token(SQL_TINYINT);
} else if (jj_2_1256(2)) {
- jj_consume_token(DATA_REGION);
+ jj_consume_token(SQL_TSI_HOUR);
} else if (jj_2_1257(2)) {
- jj_consume_token(WRAP_VALUE);
+ jj_consume_token(SQL_TSI_MONTH);
} else if (jj_2_1258(2)) {
- jj_consume_token(INLINE_SIZE);
+ jj_consume_token(SQL_TSI_WEEK);
} else if (jj_2_1259(2)) {
- jj_consume_token(PASSWORD);
+ jj_consume_token(SQL_VARCHAR);
} else if (jj_2_1260(2)) {
- jj_consume_token(CONTINUOUS);
+ jj_consume_token(STRING_AGG);
} else if (jj_2_1261(2)) {
- jj_consume_token(ASYNC);
+ jj_consume_token(SUBCLASS_ORIGIN);
} else if (jj_2_1262(2)) {
- jj_consume_token(REFRESH);
+ jj_consume_token(TEMPORARY);
} else if (jj_2_1263(2)) {
- jj_consume_token(TOTAL);
+ jj_consume_token(TIME_TRUNC);
} else if (jj_2_1264(2)) {
- jj_consume_token(ALLOW);
+ jj_consume_token(TIMESTAMP_DIFF);
} else if (jj_2_1265(2)) {
- jj_consume_token(ASENSITIVE);
+ jj_consume_token(TRANSACTION);
} else if (jj_2_1266(2)) {
- jj_consume_token(ATOMIC);
+ jj_consume_token(TRANSACTIONS_ROLLED_BACK);
} else if (jj_2_1267(2)) {
- jj_consume_token(BEGIN);
+ jj_consume_token(TRIGGER_CATALOG);
} else if (jj_2_1268(2)) {
- jj_consume_token(BIGINT);
+ jj_consume_token(TUMBLE);
} else if (jj_2_1269(2)) {
- jj_consume_token(BLOB);
+ jj_consume_token(UNCOMMITTED);
} else if (jj_2_1270(2)) {
- jj_consume_token(CALLED);
+ jj_consume_token(UNPIVOT);
} else if (jj_2_1271(2)) {
- jj_consume_token(CEIL);
+ jj_consume_token(USER_DEFINED_TYPE_CATALOG);
} else if (jj_2_1272(2)) {
- jj_consume_token(CHARACTER);
+ jj_consume_token(USER_DEFINED_TYPE_SCHEMA);
} else if (jj_2_1273(2)) {
- jj_consume_token(CHECK);
+ jj_consume_token(UTF8);
} else if (jj_2_1274(2)) {
- jj_consume_token(CLOSE);
+ jj_consume_token(WEEK);
} else if (jj_2_1275(2)) {
- jj_consume_token(COLLECT);
+ jj_consume_token(WRAPPER);
} else if (jj_2_1276(2)) {
- jj_consume_token(CONNECT);
+ jj_consume_token(YEARS);
} else if (jj_2_1277(2)) {
- jj_consume_token(CORR);
+ jj_consume_token(BACKUPS);
} else if (jj_2_1278(2)) {
- jj_consume_token(COVAR_POP);
+ jj_consume_token(WRITE_SYNCHRONIZATION_MODE);
} else if (jj_2_1279(2)) {
- jj_consume_token(CUME_DIST);
+ jj_consume_token(DATA_REGION);
} else if (jj_2_1280(2)) {
- jj_consume_token(CURRENT_DEFAULT_TRANSFORM_GROUP);
+ jj_consume_token(WRAP_VALUE);
} else if (jj_2_1281(2)) {
- jj_consume_token(CURRENT_ROW);
+ jj_consume_token(INLINE_SIZE);
} else if (jj_2_1282(2)) {
- jj_consume_token(CYCLE);
+ jj_consume_token(PASSWORD);
} else if (jj_2_1283(2)) {
- jj_consume_token(DAY);
+ jj_consume_token(CONTINUOUS);
} else if (jj_2_1284(2)) {
- jj_consume_token(DECIMAL);
+ jj_consume_token(ASYNC);
} else if (jj_2_1285(2)) {
- jj_consume_token(DENSE_RANK);
+ jj_consume_token(REFRESH);
} else if (jj_2_1286(2)) {
- jj_consume_token(DETERMINISTIC);
+ jj_consume_token(TOTAL);
} else if (jj_2_1287(2)) {
- jj_consume_token(DOUBLE);
+ jj_consume_token(ALLOW);
} else if (jj_2_1288(2)) {
- jj_consume_token(ELEMENT);
+ jj_consume_token(ASENSITIVE);
} else if (jj_2_1289(2)) {
- jj_consume_token(END_EXEC);
+ jj_consume_token(ATOMIC);
} else if (jj_2_1290(2)) {
- jj_consume_token(EQUALS);
+ jj_consume_token(BEGIN);
} else if (jj_2_1291(2)) {
- jj_consume_token(EXEC);
+ jj_consume_token(BIGINT);
} else if (jj_2_1292(2)) {
- jj_consume_token(EXTEND);
+ jj_consume_token(BLOB);
} else if (jj_2_1293(2)) {
- jj_consume_token(FILTER);
+ jj_consume_token(CALLED);
} else if (jj_2_1294(2)) {
- jj_consume_token(FLOOR);
+ jj_consume_token(CEIL);
} else if (jj_2_1295(2)) {
- jj_consume_token(FREE);
+ jj_consume_token(CHARACTER);
} else if (jj_2_1296(2)) {
- jj_consume_token(GET);
+ jj_consume_token(CHECK);
} else if (jj_2_1297(2)) {
- jj_consume_token(GROUPING);
+ jj_consume_token(CLOSE);
} else if (jj_2_1298(2)) {
- jj_consume_token(HOUR);
+ jj_consume_token(COLLECT);
} else if (jj_2_1299(2)) {
- jj_consume_token(INDICATOR);
+ jj_consume_token(CONNECT);
} else if (jj_2_1300(2)) {
- jj_consume_token(INSENSITIVE);
+ jj_consume_token(CORR);
} else if (jj_2_1301(2)) {
- jj_consume_token(INTERSECTION);
+ jj_consume_token(COVAR_POP);
} else if (jj_2_1302(2)) {
- jj_consume_token(JSON_EXISTS);
+ jj_consume_token(CUME_DIST);
} else if (jj_2_1303(2)) {
- jj_consume_token(JSON_QUERY);
+ jj_consume_token(CURRENT_DEFAULT_TRANSFORM_GROUP);
} else if (jj_2_1304(2)) {
- jj_consume_token(LAG);
+ jj_consume_token(CURRENT_ROW);
} else if (jj_2_1305(2)) {
- jj_consume_token(LAST_VALUE);
+ jj_consume_token(CYCLE);
} else if (jj_2_1306(2)) {
- jj_consume_token(LIKE_REGEX);
+ jj_consume_token(DAY);
} else if (jj_2_1307(2)) {
- jj_consume_token(LOWER);
+ jj_consume_token(DECIMAL);
} else if (jj_2_1308(2)) {
- jj_consume_token(MATCH_CONDITION);
+ jj_consume_token(DENSE_RANK);
} else if (jj_2_1309(2)) {
- jj_consume_token(MAX);
+ jj_consume_token(DETERMINISTIC);
} else if (jj_2_1310(2)) {
- jj_consume_token(MEMBER);
+ jj_consume_token(DOUBLE);
} else if (jj_2_1311(2)) {
- jj_consume_token(MINUTE);
+ jj_consume_token(ELEMENT);
} else if (jj_2_1312(2)) {
- jj_consume_token(MODULE);
+ jj_consume_token(END_EXEC);
} else if (jj_2_1313(2)) {
- jj_consume_token(NATIONAL);
+ jj_consume_token(EQUALS);
} else if (jj_2_1314(2)) {
- jj_consume_token(NEW);
+ jj_consume_token(EXEC);
} else if (jj_2_1315(2)) {
- jj_consume_token(NONE);
+ jj_consume_token(EXTEND);
} else if (jj_2_1316(2)) {
- jj_consume_token(NTILE);
+ jj_consume_token(FILTER);
} else if (jj_2_1317(2)) {
- jj_consume_token(OCCURRENCES_REGEX);
+ jj_consume_token(FLOOR);
} else if (jj_2_1318(2)) {
- jj_consume_token(OLD);
+ jj_consume_token(FREE);
} else if (jj_2_1319(2)) {
- jj_consume_token(ONLY);
+ jj_consume_token(GET);
} else if (jj_2_1320(2)) {
- jj_consume_token(OUT);
+ jj_consume_token(GROUPING);
} else if (jj_2_1321(2)) {
- jj_consume_token(OVERLAY);
+ jj_consume_token(HOUR);
} else if (jj_2_1322(2)) {
- jj_consume_token(PER);
+ jj_consume_token(INDICATOR);
} else if (jj_2_1323(2)) {
- jj_consume_token(PERCENTILE_DISC);
+ jj_consume_token(INSENSITIVE);
} else if (jj_2_1324(2)) {
- jj_consume_token(PERMUTE);
+ jj_consume_token(INTERSECTION);
} else if (jj_2_1325(2)) {
- jj_consume_token(POSITION_REGEX);
+ jj_consume_token(JSON_EXISTS);
} else if (jj_2_1326(2)) {
- jj_consume_token(PRECISION);
+ jj_consume_token(JSON_QUERY);
} else if (jj_2_1327(2)) {
- jj_consume_token(PROCEDURE);
+ jj_consume_token(LAG);
} else if (jj_2_1328(2)) {
- jj_consume_token(RANK);
+ jj_consume_token(LAST_VALUE);
} else if (jj_2_1329(2)) {
- jj_consume_token(RECURSIVE);
+ jj_consume_token(LIKE_REGEX);
} else if (jj_2_1330(2)) {
- jj_consume_token(REFERENCING);
+ jj_consume_token(LOWER);
} else if (jj_2_1331(2)) {
- jj_consume_token(REGR_COUNT);
+ jj_consume_token(MATCH_CONDITION);
} else if (jj_2_1332(2)) {
- jj_consume_token(REGR_SLOPE);
+ jj_consume_token(MAX);
} else if (jj_2_1333(2)) {
- jj_consume_token(REGR_SYY);
+ jj_consume_token(MEMBER);
} else if (jj_2_1334(2)) {
- jj_consume_token(RESULT);
+ jj_consume_token(MINUTE);
} else if (jj_2_1335(2)) {
- jj_consume_token(REVOKE);
+ jj_consume_token(MODULE);
} else if (jj_2_1336(2)) {
- jj_consume_token(ROWS);
+ jj_consume_token(NATIONAL);
} else if (jj_2_1337(2)) {
- jj_consume_token(SAFE_CAST);
+ jj_consume_token(NEW);
} else if (jj_2_1338(2)) {
- jj_consume_token(SAVEPOINT);
+ jj_consume_token(NONE);
} else if (jj_2_1339(2)) {
- jj_consume_token(SEARCH);
+ jj_consume_token(NTILE);
} else if (jj_2_1340(2)) {
- jj_consume_token(SENSITIVE);
+ jj_consume_token(OCCURRENCES_REGEX);
} else if (jj_2_1341(2)) {
- jj_consume_token(SIMILAR);
+ jj_consume_token(OLD);
} else if (jj_2_1342(2)) {
- jj_consume_token(SPECIFIC);
+ jj_consume_token(ONLY);
} else if (jj_2_1343(2)) {
- jj_consume_token(SQLEXCEPTION);
+ jj_consume_token(OUT);
} else if (jj_2_1344(2)) {
- jj_consume_token(SQRT);
+ jj_consume_token(OVERLAY);
} else if (jj_2_1345(2)) {
- jj_consume_token(STDDEV_POP);
+ jj_consume_token(PER);
} else if (jj_2_1346(2)) {
- jj_consume_token(SUBMULTISET);
+ jj_consume_token(PERCENTILE_DISC);
} else if (jj_2_1347(2)) {
- jj_consume_token(SUBSTRING_REGEX);
+ jj_consume_token(PERMUTE);
} else if (jj_2_1348(2)) {
- jj_consume_token(SYSTEM);
+ jj_consume_token(POSITION_REGEX);
} else if (jj_2_1349(2)) {
- jj_consume_token(TABLESAMPLE);
+ jj_consume_token(PRECISION);
} else if (jj_2_1350(2)) {
- jj_consume_token(TIMEZONE_HOUR);
+ jj_consume_token(PROCEDURE);
} else if (jj_2_1351(2)) {
- jj_consume_token(TRANSLATE);
+ jj_consume_token(RANK);
} else if (jj_2_1352(2)) {
- jj_consume_token(TREAT);
+ jj_consume_token(RECURSIVE);
} else if (jj_2_1353(2)) {
- jj_consume_token(TRIM_ARRAY);
+ jj_consume_token(REFERENCING);
} else if (jj_2_1354(2)) {
- jj_consume_token(UESCAPE);
+ jj_consume_token(REGR_COUNT);
} else if (jj_2_1355(2)) {
- jj_consume_token(UPPER);
+ jj_consume_token(REGR_SLOPE);
} else if (jj_2_1356(2)) {
- jj_consume_token(VALUE);
+ jj_consume_token(REGR_SYY);
} else if (jj_2_1357(2)) {
- jj_consume_token(VARIANT);
+ jj_consume_token(RESULT);
} else if (jj_2_1358(2)) {
- jj_consume_token(VAR_POP);
+ jj_consume_token(REVOKE);
} else if (jj_2_1359(2)) {
- jj_consume_token(WHENEVER);
+ jj_consume_token(ROWS);
} else if (jj_2_1360(2)) {
- jj_consume_token(WITHIN);
+ jj_consume_token(SAFE_CAST);
} else if (jj_2_1361(2)) {
- jj_consume_token(MONDAY);
+ jj_consume_token(SAVEPOINT);
} else if (jj_2_1362(2)) {
- jj_consume_token(THURSDAY);
+ jj_consume_token(SEARCH);
} else if (jj_2_1363(2)) {
- jj_consume_token(SUNDAY);
+ jj_consume_token(SENSITIVE);
+ } else if (jj_2_1364(2)) {
+ jj_consume_token(SIMILAR);
+ } else if (jj_2_1365(2)) {
+ jj_consume_token(SPECIFIC);
+ } else if (jj_2_1366(2)) {
+ jj_consume_token(SQLEXCEPTION);
+ } else if (jj_2_1367(2)) {
+ jj_consume_token(SQRT);
+ } else if (jj_2_1368(2)) {
+ jj_consume_token(STDDEV_POP);
+ } else if (jj_2_1369(2)) {
+ jj_consume_token(SUBMULTISET);
+ } else if (jj_2_1370(2)) {
+ jj_consume_token(SUBSTRING_REGEX);
+ } else if (jj_2_1371(2)) {
+ jj_consume_token(SYSTEM);
+ } else if (jj_2_1372(2)) {
+ jj_consume_token(TABLESAMPLE);
+ } else if (jj_2_1373(2)) {
+ jj_consume_token(TIMEZONE_HOUR);
+ } else if (jj_2_1374(2)) {
+ jj_consume_token(TRANSLATE);
+ } else if (jj_2_1375(2)) {
+ jj_consume_token(TREAT);
+ } else if (jj_2_1376(2)) {
+ jj_consume_token(TRIM_ARRAY);
+ } else if (jj_2_1377(2)) {
+ jj_consume_token(UESCAPE);
+ } else if (jj_2_1378(2)) {
+ jj_consume_token(UNSIGNED);
+ } else if (jj_2_1379(2)) {
+ jj_consume_token(UUID);
+ } else if (jj_2_1380(2)) {
+ jj_consume_token(VARBINARY);
+ } else if (jj_2_1381(2)) {
+ jj_consume_token(VARYING);
+ } else if (jj_2_1382(2)) {
+ jj_consume_token(VERSIONING);
+ } else if (jj_2_1383(2)) {
+ jj_consume_token(WINDOW);
+ } else if (jj_2_1384(2)) {
+ jj_consume_token(YEAR);
+ } else if (jj_2_1385(2)) {
+ jj_consume_token(WEDNESDAY);
+ } else if (jj_2_1386(2)) {
+ jj_consume_token(SATURDAY);
} else {
jj_consume_token(-1);
throw new ParseException();
@@ -10641,448 +10875,450 @@
/** @see #NonReservedKeyWord */
final public void NonReservedKeyWord1of3() throws ParseException {
- if (jj_2_1364(2)) {
+ if (jj_2_1387(2)) {
jj_consume_token(ABSENT);
- } else if (jj_2_1365(2)) {
- jj_consume_token(ADA);
- } else if (jj_2_1366(2)) {
- jj_consume_token(AFTER);
- } else if (jj_2_1367(2)) {
- jj_consume_token(ARRAY_AGG);
- } else if (jj_2_1368(2)) {
- jj_consume_token(ASSERTION);
- } else if (jj_2_1369(2)) {
- jj_consume_token(ATTRIBUTES);
- } else if (jj_2_1370(2)) {
- jj_consume_token(BREADTH);
- } else if (jj_2_1371(2)) {
- jj_consume_token(CATALOG);
- } else if (jj_2_1372(2)) {
- jj_consume_token(CHAIN);
- } else if (jj_2_1373(2)) {
- jj_consume_token(CHARACTER_SET_CATALOG);
- } else if (jj_2_1374(2)) {
- jj_consume_token(CLASS_ORIGIN);
- } else if (jj_2_1375(2)) {
- jj_consume_token(COLLATION_CATALOG);
- } else if (jj_2_1376(2)) {
- jj_consume_token(COLUMN_NAME);
- } else if (jj_2_1377(2)) {
- jj_consume_token(COMMITTED);
- } else if (jj_2_1378(2)) {
- jj_consume_token(CONNECTION);
- } else if (jj_2_1379(2)) {
- jj_consume_token(CONSTRAINT_NAME);
- } else if (jj_2_1380(2)) {
- jj_consume_token(CONSTRUCTOR);
- } else if (jj_2_1381(2)) {
- jj_consume_token(CURSOR_NAME);
- } else if (jj_2_1382(2)) {
- jj_consume_token(DATE_DIFF);
- } else if (jj_2_1383(2)) {
- jj_consume_token(DATETIME_INTERVAL_CODE);
- } else if (jj_2_1384(2)) {
- jj_consume_token(DAYOFWEEK);
- } else if (jj_2_1385(2)) {
- jj_consume_token(DECADE);
- } else if (jj_2_1386(2)) {
- jj_consume_token(DEFERRED);
- } else if (jj_2_1387(2)) {
- jj_consume_token(DEGREE);
} else if (jj_2_1388(2)) {
- jj_consume_token(DESC);
+ jj_consume_token(ADA);
} else if (jj_2_1389(2)) {
- jj_consume_token(DIAGNOSTICS);
+ jj_consume_token(AFTER);
} else if (jj_2_1390(2)) {
- jj_consume_token(DOW);
+ jj_consume_token(ARRAY_AGG);
} else if (jj_2_1391(2)) {
- jj_consume_token(DYNAMIC_FUNCTION);
+ jj_consume_token(ASSERTION);
} else if (jj_2_1392(2)) {
- jj_consume_token(EPOCH);
+ jj_consume_token(ATTRIBUTES);
} else if (jj_2_1393(2)) {
- jj_consume_token(EXCLUDE);
+ jj_consume_token(BREADTH);
} else if (jj_2_1394(2)) {
- jj_consume_token(FIRST);
+ jj_consume_token(CATALOG);
} else if (jj_2_1395(2)) {
- jj_consume_token(FORTRAN);
+ jj_consume_token(CHAIN);
} else if (jj_2_1396(2)) {
- jj_consume_token(G);
+ jj_consume_token(CHARACTER_SET_CATALOG);
} else if (jj_2_1397(2)) {
- jj_consume_token(GEOMETRY);
+ jj_consume_token(CLASS_ORIGIN);
} else if (jj_2_1398(2)) {
- jj_consume_token(GRANTED);
+ jj_consume_token(COLLATION_CATALOG);
} else if (jj_2_1399(2)) {
- jj_consume_token(HOP);
+ jj_consume_token(COLUMN_NAME);
} else if (jj_2_1400(2)) {
- jj_consume_token(ILIKE);
+ jj_consume_token(COMMITTED);
} else if (jj_2_1401(2)) {
- jj_consume_token(IMPLEMENTATION);
+ jj_consume_token(CONNECTION);
} else if (jj_2_1402(2)) {
- jj_consume_token(INCREMENT);
+ jj_consume_token(CONSTRAINT_NAME);
} else if (jj_2_1403(2)) {
- jj_consume_token(INSTANCE);
+ jj_consume_token(CONSTRUCTOR);
} else if (jj_2_1404(2)) {
- jj_consume_token(ISODOW);
+ jj_consume_token(CURSOR_NAME);
} else if (jj_2_1405(2)) {
- jj_consume_token(JAVA);
+ jj_consume_token(DATE_DIFF);
} else if (jj_2_1406(2)) {
- jj_consume_token(KEY);
+ jj_consume_token(DATETIME_INTERVAL_CODE);
} else if (jj_2_1407(2)) {
- jj_consume_token(LABEL);
+ jj_consume_token(DAYOFWEEK);
} else if (jj_2_1408(2)) {
- jj_consume_token(LEVEL);
+ jj_consume_token(DECADE);
} else if (jj_2_1409(2)) {
- jj_consume_token(M);
+ jj_consume_token(DEFERRED);
} else if (jj_2_1410(2)) {
- jj_consume_token(MAXVALUE);
+ jj_consume_token(DEGREE);
} else if (jj_2_1411(2)) {
- jj_consume_token(MESSAGE_TEXT);
+ jj_consume_token(DESC);
} else if (jj_2_1412(2)) {
- jj_consume_token(MILLISECOND);
+ jj_consume_token(DIAGNOSTICS);
} else if (jj_2_1413(2)) {
- jj_consume_token(MONTHS);
+ jj_consume_token(DOW);
} else if (jj_2_1414(2)) {
- jj_consume_token(NAME);
+ jj_consume_token(DYNAMIC_FUNCTION);
} else if (jj_2_1415(2)) {
- jj_consume_token(NESTING);
+ jj_consume_token(EPOCH);
} else if (jj_2_1416(2)) {
- jj_consume_token(NULLS);
+ jj_consume_token(EXCLUDE);
} else if (jj_2_1417(2)) {
- jj_consume_token(OCTETS);
+ jj_consume_token(FIRST);
} else if (jj_2_1418(2)) {
- jj_consume_token(ORDERING);
+ jj_consume_token(FORTRAN);
} else if (jj_2_1419(2)) {
- jj_consume_token(OUTPUT);
+ jj_consume_token(G);
} else if (jj_2_1420(2)) {
- jj_consume_token(PARAMETER_MODE);
+ jj_consume_token(GEOMETRY);
} else if (jj_2_1421(2)) {
- jj_consume_token(PARAMETER_SPECIFIC_CATALOG);
+ jj_consume_token(GRANTED);
} else if (jj_2_1422(2)) {
- jj_consume_token(PARTIAL);
+ jj_consume_token(HOP);
} else if (jj_2_1423(2)) {
- jj_consume_token(PASSTHROUGH);
+ jj_consume_token(ILIKE);
} else if (jj_2_1424(2)) {
- jj_consume_token(PIVOT);
+ jj_consume_token(IMPLEMENTATION);
} else if (jj_2_1425(2)) {
- jj_consume_token(PLI);
+ jj_consume_token(INCREMENT);
} else if (jj_2_1426(2)) {
- jj_consume_token(PRIOR);
+ jj_consume_token(INSTANCE);
} else if (jj_2_1427(2)) {
- jj_consume_token(QUARTER);
+ jj_consume_token(ISODOW);
} else if (jj_2_1428(2)) {
- jj_consume_token(RELATIVE);
+ jj_consume_token(JAVA);
} else if (jj_2_1429(2)) {
- jj_consume_token(RESPECT);
+ jj_consume_token(KEY);
} else if (jj_2_1430(2)) {
- jj_consume_token(RETURNED_CARDINALITY);
+ jj_consume_token(LABEL);
} else if (jj_2_1431(2)) {
- jj_consume_token(RETURNED_SQLSTATE);
+ jj_consume_token(LEVEL);
} else if (jj_2_1432(2)) {
- jj_consume_token(ROLE);
+ jj_consume_token(M);
} else if (jj_2_1433(2)) {
- jj_consume_token(ROUTINE_NAME);
+ jj_consume_token(MAXVALUE);
} else if (jj_2_1434(2)) {
- jj_consume_token(SCALAR);
+ jj_consume_token(MESSAGE_TEXT);
} else if (jj_2_1435(2)) {
- jj_consume_token(SCHEMA_NAME);
+ jj_consume_token(MILLISECOND);
} else if (jj_2_1436(2)) {
- jj_consume_token(SCOPE_SCHEMA);
+ jj_consume_token(MONTHS);
} else if (jj_2_1437(2)) {
- jj_consume_token(SECURITY);
+ jj_consume_token(NAME);
} else if (jj_2_1438(2)) {
- jj_consume_token(SEQUENCE);
+ jj_consume_token(NESTING);
} else if (jj_2_1439(2)) {
- jj_consume_token(SERVER_NAME);
+ jj_consume_token(NULLS);
} else if (jj_2_1440(2)) {
- jj_consume_token(SIMPLE);
+ jj_consume_token(OCTETS);
} else if (jj_2_1441(2)) {
- jj_consume_token(SPACE);
+ jj_consume_token(ORDERING);
} else if (jj_2_1442(2)) {
- jj_consume_token(SQL_BINARY);
+ jj_consume_token(OUTPUT);
} else if (jj_2_1443(2)) {
- jj_consume_token(SQL_BOOLEAN);
+ jj_consume_token(PARAMETER_MODE);
} else if (jj_2_1444(2)) {
- jj_consume_token(SQL_DATE);
+ jj_consume_token(PARAMETER_SPECIFIC_CATALOG);
} else if (jj_2_1445(2)) {
- jj_consume_token(SQL_FLOAT);
+ jj_consume_token(PARTIAL);
} else if (jj_2_1446(2)) {
- jj_consume_token(SQL_INTERVAL_DAY_TO_HOUR);
+ jj_consume_token(PASSTHROUGH);
} else if (jj_2_1447(2)) {
- jj_consume_token(SQL_INTERVAL_HOUR);
+ jj_consume_token(PIVOT);
} else if (jj_2_1448(2)) {
- jj_consume_token(SQL_INTERVAL_MINUTE);
+ jj_consume_token(PLI);
} else if (jj_2_1449(2)) {
- jj_consume_token(SQL_INTERVAL_SECOND);
+ jj_consume_token(PRIOR);
} else if (jj_2_1450(2)) {
- jj_consume_token(SQL_LONGVARBINARY);
+ jj_consume_token(QUARTER);
} else if (jj_2_1451(2)) {
- jj_consume_token(SQL_NCHAR);
+ jj_consume_token(RELATIVE);
} else if (jj_2_1452(2)) {
- jj_consume_token(SQL_NVARCHAR);
+ jj_consume_token(RESPECT);
} else if (jj_2_1453(2)) {
- jj_consume_token(SQL_TIME);
+ jj_consume_token(RETURNED_CARDINALITY);
} else if (jj_2_1454(2)) {
- jj_consume_token(SQL_TSI_DAY);
+ jj_consume_token(RETURNED_SQLSTATE);
} else if (jj_2_1455(2)) {
- jj_consume_token(SQL_TSI_MICROSECOND);
+ jj_consume_token(ROLE);
} else if (jj_2_1456(2)) {
- jj_consume_token(SQL_TSI_QUARTER);
+ jj_consume_token(ROUTINE_NAME);
} else if (jj_2_1457(2)) {
- jj_consume_token(SQL_TSI_YEAR);
+ jj_consume_token(SCALAR);
} else if (jj_2_1458(2)) {
- jj_consume_token(STATE);
+ jj_consume_token(SCHEMA_NAME);
} else if (jj_2_1459(2)) {
- jj_consume_token(STRUCTURE);
+ jj_consume_token(SCOPE_SCHEMA);
} else if (jj_2_1460(2)) {
- jj_consume_token(SUBSTITUTE);
+ jj_consume_token(SECURITY);
} else if (jj_2_1461(2)) {
- jj_consume_token(TIES);
+ jj_consume_token(SEQUENCE);
} else if (jj_2_1462(2)) {
- jj_consume_token(TIMESTAMPADD);
+ jj_consume_token(SERVER_NAME);
} else if (jj_2_1463(2)) {
- jj_consume_token(TIMESTAMP_TRUNC);
+ jj_consume_token(SIMPLE);
} else if (jj_2_1464(2)) {
- jj_consume_token(TRANSACTIONS_ACTIVE);
+ jj_consume_token(SPACE);
} else if (jj_2_1465(2)) {
- jj_consume_token(TRANSFORM);
+ jj_consume_token(SQL_BINARY);
} else if (jj_2_1466(2)) {
- jj_consume_token(TRIGGER_NAME);
+ jj_consume_token(SQL_BOOLEAN);
} else if (jj_2_1467(2)) {
- jj_consume_token(TYPE);
+ jj_consume_token(SQL_DATE);
} else if (jj_2_1468(2)) {
- jj_consume_token(UNCONDITIONAL);
+ jj_consume_token(SQL_FLOAT);
} else if (jj_2_1469(2)) {
- jj_consume_token(UNNAMED);
+ jj_consume_token(SQL_INTERVAL_DAY_TO_HOUR);
} else if (jj_2_1470(2)) {
- jj_consume_token(USER_DEFINED_TYPE_CODE);
+ jj_consume_token(SQL_INTERVAL_HOUR);
} else if (jj_2_1471(2)) {
- jj_consume_token(UTF16);
+ jj_consume_token(SQL_INTERVAL_MINUTE);
} else if (jj_2_1472(2)) {
- jj_consume_token(VERSION);
+ jj_consume_token(SQL_INTERVAL_SECOND);
} else if (jj_2_1473(2)) {
- jj_consume_token(WEEKS);
+ jj_consume_token(SQL_LONGVARBINARY);
} else if (jj_2_1474(2)) {
- jj_consume_token(WRITE);
+ jj_consume_token(SQL_NCHAR);
} else if (jj_2_1475(2)) {
- jj_consume_token(ZONE);
+ jj_consume_token(SQL_NVARCHAR);
} else if (jj_2_1476(2)) {
- jj_consume_token(AFFINITY_KEY);
+ jj_consume_token(SQL_TIME);
} else if (jj_2_1477(2)) {
- jj_consume_token(CACHE_GROUP);
+ jj_consume_token(SQL_TSI_DAY);
} else if (jj_2_1478(2)) {
- jj_consume_token(VALUE_TYPE);
+ jj_consume_token(SQL_TSI_MICROSECOND);
} else if (jj_2_1479(2)) {
- jj_consume_token(ENCRYPTED);
+ jj_consume_token(SQL_TSI_QUARTER);
} else if (jj_2_1480(2)) {
- jj_consume_token(LOGGING);
+ jj_consume_token(SQL_TSI_YEAR);
} else if (jj_2_1481(2)) {
- jj_consume_token(KILL);
+ jj_consume_token(STATE);
} else if (jj_2_1482(2)) {
- jj_consume_token(SERVICE);
+ jj_consume_token(STRUCTURE);
} else if (jj_2_1483(2)) {
- jj_consume_token(QUERY);
+ jj_consume_token(SUBSTITUTE);
} else if (jj_2_1484(2)) {
- jj_consume_token(ANALYZE);
+ jj_consume_token(TIES);
} else if (jj_2_1485(2)) {
- jj_consume_token(ABS);
+ jj_consume_token(TIMESTAMPADD);
} else if (jj_2_1486(2)) {
- jj_consume_token(ARE);
+ jj_consume_token(TIMESTAMP_TRUNC);
} else if (jj_2_1487(2)) {
- jj_consume_token(ASOF);
+ jj_consume_token(TRANSACTIONS_ACTIVE);
} else if (jj_2_1488(2)) {
- jj_consume_token(AUTHORIZATION);
+ jj_consume_token(TRANSFORM);
} else if (jj_2_1489(2)) {
- jj_consume_token(BEGIN_FRAME);
+ jj_consume_token(TRIGGER_NAME);
} else if (jj_2_1490(2)) {
- jj_consume_token(BINARY);
+ jj_consume_token(TYPE);
} else if (jj_2_1491(2)) {
- jj_consume_token(BOOLEAN);
+ jj_consume_token(UNCONDITIONAL);
} else if (jj_2_1492(2)) {
- jj_consume_token(CARDINALITY);
+ jj_consume_token(UNNAMED);
} else if (jj_2_1493(2)) {
- jj_consume_token(CEILING);
+ jj_consume_token(USER_DEFINED_TYPE_CODE);
} else if (jj_2_1494(2)) {
- jj_consume_token(CHARACTER_LENGTH);
+ jj_consume_token(UTF16);
} else if (jj_2_1495(2)) {
- jj_consume_token(CLASSIFIER);
+ jj_consume_token(VERSION);
} else if (jj_2_1496(2)) {
- jj_consume_token(COALESCE);
+ jj_consume_token(WEEKS);
} else if (jj_2_1497(2)) {
- jj_consume_token(COMMIT);
+ jj_consume_token(WRITE);
} else if (jj_2_1498(2)) {
- jj_consume_token(CONTAINS);
+ jj_consume_token(ZONE);
} else if (jj_2_1499(2)) {
- jj_consume_token(CORRESPONDING);
+ jj_consume_token(AFFINITY_KEY);
} else if (jj_2_1500(2)) {
- jj_consume_token(COVAR_SAMP);
+ jj_consume_token(CACHE_GROUP);
} else if (jj_2_1501(2)) {
- jj_consume_token(CURRENT);
+ jj_consume_token(VALUE_TYPE);
} else if (jj_2_1502(2)) {
- jj_consume_token(CURRENT_PATH);
+ jj_consume_token(ENCRYPTED);
} else if (jj_2_1503(2)) {
- jj_consume_token(CURRENT_TRANSFORM_GROUP_FOR_TYPE);
+ jj_consume_token(LOGGING);
} else if (jj_2_1504(2)) {
- jj_consume_token(DATE);
+ jj_consume_token(KILL);
} else if (jj_2_1505(2)) {
- jj_consume_token(DEALLOCATE);
+ jj_consume_token(SERVICE);
} else if (jj_2_1506(2)) {
- jj_consume_token(DECLARE);
+ jj_consume_token(QUERY);
} else if (jj_2_1507(2)) {
- jj_consume_token(DEREF);
+ jj_consume_token(ANALYZE);
} else if (jj_2_1508(2)) {
- jj_consume_token(DISALLOW);
+ jj_consume_token(ABS);
} else if (jj_2_1509(2)) {
- jj_consume_token(DYNAMIC);
+ jj_consume_token(ARE);
} else if (jj_2_1510(2)) {
- jj_consume_token(EMPTY);
+ jj_consume_token(ASOF);
} else if (jj_2_1511(2)) {
- jj_consume_token(END_FRAME);
+ jj_consume_token(AUTHORIZATION);
} else if (jj_2_1512(2)) {
- jj_consume_token(ESCAPE);
+ jj_consume_token(BEGIN_FRAME);
} else if (jj_2_1513(2)) {
- jj_consume_token(EXECUTE);
+ jj_consume_token(BINARY);
} else if (jj_2_1514(2)) {
- jj_consume_token(EXTERNAL);
+ jj_consume_token(BOOLEAN);
} else if (jj_2_1515(2)) {
- jj_consume_token(FIRST_VALUE);
+ jj_consume_token(CARDINALITY);
} else if (jj_2_1516(2)) {
- jj_consume_token(FOREIGN);
+ jj_consume_token(CEILING);
} else if (jj_2_1517(2)) {
- jj_consume_token(FUNCTION);
+ jj_consume_token(CHARACTER_LENGTH);
} else if (jj_2_1518(2)) {
- jj_consume_token(GLOBAL);
+ jj_consume_token(CLASSIFIER);
} else if (jj_2_1519(2)) {
- jj_consume_token(GROUPS);
+ jj_consume_token(COALESCE);
} else if (jj_2_1520(2)) {
- jj_consume_token(IDENTITY);
+ jj_consume_token(COMMIT);
} else if (jj_2_1521(2)) {
- jj_consume_token(INITIAL);
+ jj_consume_token(CONTAINS);
} else if (jj_2_1522(2)) {
- jj_consume_token(INT);
+ jj_consume_token(CORRESPONDING);
} else if (jj_2_1523(2)) {
- jj_consume_token(JSON_ARRAY);
+ jj_consume_token(COVAR_SAMP);
} else if (jj_2_1524(2)) {
- jj_consume_token(JSON_OBJECT);
+ jj_consume_token(CURRENT);
} else if (jj_2_1525(2)) {
- jj_consume_token(JSON_SCOPE);
+ jj_consume_token(CURRENT_PATH);
} else if (jj_2_1526(2)) {
- jj_consume_token(LANGUAGE);
+ jj_consume_token(CURRENT_TRANSFORM_GROUP_FOR_TYPE);
} else if (jj_2_1527(2)) {
- jj_consume_token(LATERAL);
+ jj_consume_token(DATE);
} else if (jj_2_1528(2)) {
- jj_consume_token(LN);
+ jj_consume_token(DEALLOCATE);
} else if (jj_2_1529(2)) {
- jj_consume_token(MATCH);
+ jj_consume_token(DECLARE);
} else if (jj_2_1530(2)) {
- jj_consume_token(MATCH_NUMBER);
+ jj_consume_token(DEREF);
} else if (jj_2_1531(2)) {
- jj_consume_token(MEASURE);
+ jj_consume_token(DISALLOW);
} else if (jj_2_1532(2)) {
- jj_consume_token(METHOD);
+ jj_consume_token(DYNAMIC);
} else if (jj_2_1533(2)) {
- jj_consume_token(MOD);
+ jj_consume_token(EMPTY);
} else if (jj_2_1534(2)) {
- jj_consume_token(MONTH);
+ jj_consume_token(END_FRAME);
} else if (jj_2_1535(2)) {
- jj_consume_token(NCHAR);
+ jj_consume_token(ESCAPE);
} else if (jj_2_1536(2)) {
- jj_consume_token(NEXT);
+ jj_consume_token(EXECUTE);
} else if (jj_2_1537(2)) {
- jj_consume_token(NORMALIZE);
+ jj_consume_token(EXTERNAL);
} else if (jj_2_1538(2)) {
- jj_consume_token(NULLIF);
+ jj_consume_token(FIRST_VALUE);
} else if (jj_2_1539(2)) {
- jj_consume_token(OCTET_LENGTH);
+ jj_consume_token(FOREIGN);
} else if (jj_2_1540(2)) {
- jj_consume_token(OMIT);
+ jj_consume_token(FUNCTION);
} else if (jj_2_1541(2)) {
- jj_consume_token(OPEN);
+ jj_consume_token(GLOBAL);
} else if (jj_2_1542(2)) {
- jj_consume_token(OVER);
+ jj_consume_token(GROUPS);
} else if (jj_2_1543(2)) {
- jj_consume_token(PARAMETER);
+ jj_consume_token(IDENTITY);
} else if (jj_2_1544(2)) {
- jj_consume_token(PERCENT);
+ jj_consume_token(INITIAL);
} else if (jj_2_1545(2)) {
- jj_consume_token(PERCENT_RANK);
+ jj_consume_token(INT);
} else if (jj_2_1546(2)) {
- jj_consume_token(PORTION);
+ jj_consume_token(JSON_ARRAY);
} else if (jj_2_1547(2)) {
- jj_consume_token(POWER);
+ jj_consume_token(JSON_OBJECT);
} else if (jj_2_1548(2)) {
- jj_consume_token(PREPARE);
+ jj_consume_token(JSON_SCOPE);
} else if (jj_2_1549(2)) {
- jj_consume_token(QUALIFY);
+ jj_consume_token(LANGUAGE);
} else if (jj_2_1550(2)) {
- jj_consume_token(READS);
+ jj_consume_token(LATERAL);
} else if (jj_2_1551(2)) {
- jj_consume_token(REF);
+ jj_consume_token(LN);
} else if (jj_2_1552(2)) {
- jj_consume_token(REGR_AVGX);
+ jj_consume_token(MATCH);
} else if (jj_2_1553(2)) {
- jj_consume_token(REGR_INTERCEPT);
+ jj_consume_token(MATCH_NUMBER);
} else if (jj_2_1554(2)) {
- jj_consume_token(REGR_SXX);
+ jj_consume_token(MEASURE);
} else if (jj_2_1555(2)) {
- jj_consume_token(RELEASE);
+ jj_consume_token(METHOD);
} else if (jj_2_1556(2)) {
- jj_consume_token(RETURN);
+ jj_consume_token(MOD);
} else if (jj_2_1557(2)) {
- jj_consume_token(ROLLBACK);
+ jj_consume_token(MONTH);
} else if (jj_2_1558(2)) {
- jj_consume_token(ROW_NUMBER);
+ jj_consume_token(NCHAR);
} else if (jj_2_1559(2)) {
- jj_consume_token(SAFE_OFFSET);
+ jj_consume_token(NEXT);
} else if (jj_2_1560(2)) {
- jj_consume_token(SCOPE);
+ jj_consume_token(NORMALIZE);
} else if (jj_2_1561(2)) {
- jj_consume_token(SECOND);
+ jj_consume_token(NULLIF);
} else if (jj_2_1562(2)) {
- jj_consume_token(SESSION_USER);
+ jj_consume_token(OCTET_LENGTH);
} else if (jj_2_1563(2)) {
- jj_consume_token(SKIP_);
+ jj_consume_token(OMIT);
} else if (jj_2_1564(2)) {
- jj_consume_token(SPECIFICTYPE);
+ jj_consume_token(OPEN);
} else if (jj_2_1565(2)) {
- jj_consume_token(SQLSTATE);
+ jj_consume_token(OVER);
} else if (jj_2_1566(2)) {
- jj_consume_token(START);
+ jj_consume_token(PARAMETER);
} else if (jj_2_1567(2)) {
- jj_consume_token(STDDEV_SAMP);
+ jj_consume_token(PERCENT);
} else if (jj_2_1568(2)) {
- jj_consume_token(SUBSET);
+ jj_consume_token(PERCENT_RANK);
} else if (jj_2_1569(2)) {
- jj_consume_token(SUCCEEDS);
+ jj_consume_token(PORTION);
} else if (jj_2_1570(2)) {
- jj_consume_token(SYSTEM_TIME);
+ jj_consume_token(POWER);
} else if (jj_2_1571(2)) {
- jj_consume_token(TIME);
+ jj_consume_token(PREPARE);
} else if (jj_2_1572(2)) {
- jj_consume_token(TIMEZONE_MINUTE);
+ jj_consume_token(QUALIFY);
} else if (jj_2_1573(2)) {
- jj_consume_token(TRANSLATE_REGEX);
+ jj_consume_token(READS);
} else if (jj_2_1574(2)) {
- jj_consume_token(TRIGGER);
+ jj_consume_token(REF);
} else if (jj_2_1575(2)) {
- jj_consume_token(TRUNCATE);
+ jj_consume_token(REGR_AVGX);
} else if (jj_2_1576(2)) {
- jj_consume_token(UNIQUE);
+ jj_consume_token(REGR_INTERCEPT);
} else if (jj_2_1577(2)) {
- jj_consume_token(UPSERT);
+ jj_consume_token(REGR_SXX);
} else if (jj_2_1578(2)) {
- jj_consume_token(VALUE_OF);
+ jj_consume_token(RELEASE);
} else if (jj_2_1579(2)) {
- jj_consume_token(VARCHAR);
+ jj_consume_token(RETURN);
} else if (jj_2_1580(2)) {
- jj_consume_token(VAR_SAMP);
+ jj_consume_token(ROLLBACK);
} else if (jj_2_1581(2)) {
- jj_consume_token(WIDTH_BUCKET);
+ jj_consume_token(ROW_NUMBER);
} else if (jj_2_1582(2)) {
- jj_consume_token(WITHOUT);
+ jj_consume_token(SAFE_OFFSET);
} else if (jj_2_1583(2)) {
- jj_consume_token(TUESDAY);
+ jj_consume_token(SCOPE);
} else if (jj_2_1584(2)) {
- jj_consume_token(FRIDAY);
+ jj_consume_token(SECOND);
+ } else if (jj_2_1585(2)) {
+ jj_consume_token(SESSION_USER);
+ } else if (jj_2_1586(2)) {
+ jj_consume_token(SKIP_);
+ } else if (jj_2_1587(2)) {
+ jj_consume_token(SPECIFICTYPE);
+ } else if (jj_2_1588(2)) {
+ jj_consume_token(SQLSTATE);
+ } else if (jj_2_1589(2)) {
+ jj_consume_token(START);
+ } else if (jj_2_1590(2)) {
+ jj_consume_token(STDDEV_SAMP);
+ } else if (jj_2_1591(2)) {
+ jj_consume_token(SUBSET);
+ } else if (jj_2_1592(2)) {
+ jj_consume_token(SUCCEEDS);
+ } else if (jj_2_1593(2)) {
+ jj_consume_token(SYSTEM_TIME);
+ } else if (jj_2_1594(2)) {
+ jj_consume_token(TIME);
+ } else if (jj_2_1595(2)) {
+ jj_consume_token(TIMEZONE_MINUTE);
+ } else if (jj_2_1596(2)) {
+ jj_consume_token(TRANSLATE_REGEX);
+ } else if (jj_2_1597(2)) {
+ jj_consume_token(TRIGGER);
+ } else if (jj_2_1598(2)) {
+ jj_consume_token(TRUNCATE);
+ } else if (jj_2_1599(2)) {
+ jj_consume_token(UNIQUE);
+ } else if (jj_2_1600(2)) {
+ jj_consume_token(UPPER);
+ } else if (jj_2_1601(2)) {
+ jj_consume_token(VALUE);
+ } else if (jj_2_1602(2)) {
+ jj_consume_token(VARIANT);
+ } else if (jj_2_1603(2)) {
+ jj_consume_token(VAR_POP);
+ } else if (jj_2_1604(2)) {
+ jj_consume_token(WHENEVER);
+ } else if (jj_2_1605(2)) {
+ jj_consume_token(WITHIN);
+ } else if (jj_2_1606(2)) {
+ jj_consume_token(MONDAY);
+ } else if (jj_2_1607(2)) {
+ jj_consume_token(THURSDAY);
+ } else if (jj_2_1608(2)) {
+ jj_consume_token(SUNDAY);
} else {
jj_consume_token(-1);
throw new ParseException();
@@ -11091,448 +11327,448 @@
/** @see #NonReservedKeyWord */
final public void NonReservedKeyWord2of3() throws ParseException {
- if (jj_2_1585(2)) {
+ if (jj_2_1609(2)) {
jj_consume_token(ABSOLUTE);
- } else if (jj_2_1586(2)) {
- jj_consume_token(ADD);
- } else if (jj_2_1587(2)) {
- jj_consume_token(ALWAYS);
- } else if (jj_2_1588(2)) {
- jj_consume_token(ARRAY_CONCAT_AGG);
- } else if (jj_2_1589(2)) {
- jj_consume_token(ASSIGNMENT);
- } else if (jj_2_1590(2)) {
- jj_consume_token(BEFORE);
- } else if (jj_2_1591(2)) {
- jj_consume_token(C);
- } else if (jj_2_1592(2)) {
- jj_consume_token(CATALOG_NAME);
- } else if (jj_2_1593(2)) {
- jj_consume_token(CHARACTERISTICS);
- } else if (jj_2_1594(2)) {
- jj_consume_token(CHARACTER_SET_NAME);
- } else if (jj_2_1595(2)) {
- jj_consume_token(COBOL);
- } else if (jj_2_1596(2)) {
- jj_consume_token(COLLATION_NAME);
- } else if (jj_2_1597(2)) {
- jj_consume_token(COMMAND_FUNCTION);
- } else if (jj_2_1598(2)) {
- jj_consume_token(CONDITIONAL);
- } else if (jj_2_1599(2)) {
- jj_consume_token(CONNECTION_NAME);
- } else if (jj_2_1600(2)) {
- jj_consume_token(CONSTRAINTS);
- } else if (jj_2_1601(2)) {
- jj_consume_token(CONTAINS_SUBSTR);
- } else if (jj_2_1602(2)) {
- jj_consume_token(DATA);
- } else if (jj_2_1603(2)) {
- jj_consume_token(DATE_TRUNC);
- } else if (jj_2_1604(2)) {
- jj_consume_token(DATETIME_INTERVAL_PRECISION);
- } else if (jj_2_1605(2)) {
- jj_consume_token(DAYOFYEAR);
- } else if (jj_2_1606(2)) {
- jj_consume_token(DEFAULTS);
- } else if (jj_2_1607(2)) {
- jj_consume_token(DEFINED);
- } else if (jj_2_1608(2)) {
- jj_consume_token(DEPTH);
- } else if (jj_2_1609(2)) {
- jj_consume_token(DESCRIPTION);
} else if (jj_2_1610(2)) {
- jj_consume_token(DISPATCH);
+ jj_consume_token(ADD);
} else if (jj_2_1611(2)) {
- jj_consume_token(DOY);
+ jj_consume_token(ALWAYS);
} else if (jj_2_1612(2)) {
- jj_consume_token(DYNAMIC_FUNCTION_CODE);
+ jj_consume_token(ARRAY_CONCAT_AGG);
} else if (jj_2_1613(2)) {
- jj_consume_token(ERROR);
+ jj_consume_token(ASSIGNMENT);
} else if (jj_2_1614(2)) {
- jj_consume_token(EXCLUDING);
+ jj_consume_token(BEFORE);
} else if (jj_2_1615(2)) {
- jj_consume_token(FOLLOWING);
+ jj_consume_token(C);
} else if (jj_2_1616(2)) {
- jj_consume_token(FOUND);
+ jj_consume_token(CATALOG_NAME);
} else if (jj_2_1617(2)) {
- jj_consume_token(GENERAL);
+ jj_consume_token(CHARACTERISTICS);
} else if (jj_2_1618(2)) {
- jj_consume_token(GO);
+ jj_consume_token(CHARACTER_SET_NAME);
} else if (jj_2_1619(2)) {
- jj_consume_token(GROUP_CONCAT);
+ jj_consume_token(COBOL);
} else if (jj_2_1620(2)) {
- jj_consume_token(HOURS);
+ jj_consume_token(COLLATION_NAME);
} else if (jj_2_1621(2)) {
- jj_consume_token(IMMEDIATE);
+ jj_consume_token(COMMAND_FUNCTION);
} else if (jj_2_1622(2)) {
- jj_consume_token(INCLUDE);
+ jj_consume_token(CONDITIONAL);
} else if (jj_2_1623(2)) {
- jj_consume_token(INITIALLY);
+ jj_consume_token(CONNECTION_NAME);
} else if (jj_2_1624(2)) {
- jj_consume_token(INSTANTIABLE);
+ jj_consume_token(CONSTRAINTS);
} else if (jj_2_1625(2)) {
- jj_consume_token(ISOLATION);
+ jj_consume_token(CONTAINS_SUBSTR);
} else if (jj_2_1626(2)) {
- jj_consume_token(JSON);
+ jj_consume_token(DATA);
} else if (jj_2_1627(2)) {
- jj_consume_token(KEY_MEMBER);
+ jj_consume_token(DATE_TRUNC);
} else if (jj_2_1628(2)) {
- jj_consume_token(LAST);
+ jj_consume_token(DATETIME_INTERVAL_PRECISION);
} else if (jj_2_1629(2)) {
- jj_consume_token(LIBRARY);
+ jj_consume_token(DAYOFYEAR);
} else if (jj_2_1630(2)) {
- jj_consume_token(MAP);
+ jj_consume_token(DEFAULTS);
} else if (jj_2_1631(2)) {
- jj_consume_token(MESSAGE_LENGTH);
+ jj_consume_token(DEFINED);
} else if (jj_2_1632(2)) {
- jj_consume_token(MICROSECOND);
+ jj_consume_token(DEPTH);
} else if (jj_2_1633(2)) {
- jj_consume_token(MINUTES);
+ jj_consume_token(DESCRIPTION);
} else if (jj_2_1634(2)) {
- jj_consume_token(MORE_);
+ jj_consume_token(DISPATCH);
} else if (jj_2_1635(2)) {
- jj_consume_token(NAMES);
+ jj_consume_token(DOY);
} else if (jj_2_1636(2)) {
- jj_consume_token(NORMALIZED);
+ jj_consume_token(DYNAMIC_FUNCTION_CODE);
} else if (jj_2_1637(2)) {
- jj_consume_token(NUMBER);
+ jj_consume_token(ERROR);
} else if (jj_2_1638(2)) {
- jj_consume_token(OPTION);
+ jj_consume_token(EXCLUDING);
} else if (jj_2_1639(2)) {
- jj_consume_token(ORDINALITY);
+ jj_consume_token(FOLLOWING);
} else if (jj_2_1640(2)) {
- jj_consume_token(OVERRIDING);
+ jj_consume_token(FOUND);
} else if (jj_2_1641(2)) {
- jj_consume_token(PARAMETER_NAME);
+ jj_consume_token(GENERAL);
} else if (jj_2_1642(2)) {
- jj_consume_token(PARAMETER_SPECIFIC_NAME);
+ jj_consume_token(GO);
} else if (jj_2_1643(2)) {
- jj_consume_token(PASCAL);
+ jj_consume_token(GROUP_CONCAT);
} else if (jj_2_1644(2)) {
- jj_consume_token(PAST);
+ jj_consume_token(HOURS);
} else if (jj_2_1645(2)) {
- jj_consume_token(PLACING);
+ jj_consume_token(IMMEDIATE);
} else if (jj_2_1646(2)) {
- jj_consume_token(PRECEDING);
+ jj_consume_token(INCLUDE);
} else if (jj_2_1647(2)) {
- jj_consume_token(PRIVILEGES);
+ jj_consume_token(INITIALLY);
} else if (jj_2_1648(2)) {
- jj_consume_token(QUARTERS);
+ jj_consume_token(INSTANTIABLE);
} else if (jj_2_1649(2)) {
- jj_consume_token(REPEATABLE);
+ jj_consume_token(ISOLATION);
} else if (jj_2_1650(2)) {
- jj_consume_token(RESTART);
+ jj_consume_token(JSON);
} else if (jj_2_1651(2)) {
- jj_consume_token(RETURNED_LENGTH);
+ jj_consume_token(KEY_MEMBER);
} else if (jj_2_1652(2)) {
- jj_consume_token(RETURNING);
+ jj_consume_token(LAST);
} else if (jj_2_1653(2)) {
- jj_consume_token(ROUTINE);
+ jj_consume_token(LIBRARY);
} else if (jj_2_1654(2)) {
- jj_consume_token(ROUTINE_SCHEMA);
+ jj_consume_token(MAP);
} else if (jj_2_1655(2)) {
- jj_consume_token(SCALE);
+ jj_consume_token(MESSAGE_LENGTH);
} else if (jj_2_1656(2)) {
- jj_consume_token(SCOPE_CATALOGS);
+ jj_consume_token(MICROSECOND);
} else if (jj_2_1657(2)) {
- jj_consume_token(SECONDS);
+ jj_consume_token(MINUTES);
} else if (jj_2_1658(2)) {
- jj_consume_token(SELF);
+ jj_consume_token(MORE_);
} else if (jj_2_1659(2)) {
- jj_consume_token(SERIALIZABLE);
+ jj_consume_token(NAMES);
} else if (jj_2_1660(2)) {
- jj_consume_token(SESSION);
+ jj_consume_token(NORMALIZED);
} else if (jj_2_1661(2)) {
- jj_consume_token(SIZE);
+ jj_consume_token(NUMBER);
} else if (jj_2_1662(2)) {
- jj_consume_token(SPECIFIC_NAME);
+ jj_consume_token(OPTION);
} else if (jj_2_1663(2)) {
- jj_consume_token(SQL_BIT);
+ jj_consume_token(ORDINALITY);
} else if (jj_2_1664(2)) {
- jj_consume_token(SQL_CHAR);
+ jj_consume_token(OVERRIDING);
} else if (jj_2_1665(2)) {
- jj_consume_token(SQL_DECIMAL);
+ jj_consume_token(PARAMETER_NAME);
} else if (jj_2_1666(2)) {
- jj_consume_token(SQL_INTEGER);
+ jj_consume_token(PARAMETER_SPECIFIC_NAME);
} else if (jj_2_1667(2)) {
- jj_consume_token(SQL_INTERVAL_DAY_TO_MINUTE);
+ jj_consume_token(PASCAL);
} else if (jj_2_1668(2)) {
- jj_consume_token(SQL_INTERVAL_HOUR_TO_MINUTE);
+ jj_consume_token(PAST);
} else if (jj_2_1669(2)) {
- jj_consume_token(SQL_INTERVAL_MINUTE_TO_SECOND);
+ jj_consume_token(PLACING);
} else if (jj_2_1670(2)) {
- jj_consume_token(SQL_INTERVAL_YEAR);
+ jj_consume_token(PRECEDING);
} else if (jj_2_1671(2)) {
- jj_consume_token(SQL_LONGVARCHAR);
+ jj_consume_token(PRIVILEGES);
} else if (jj_2_1672(2)) {
- jj_consume_token(SQL_NCLOB);
+ jj_consume_token(QUARTERS);
} else if (jj_2_1673(2)) {
- jj_consume_token(SQL_REAL);
+ jj_consume_token(REPEATABLE);
} else if (jj_2_1674(2)) {
- jj_consume_token(SQL_TIMESTAMP);
+ jj_consume_token(RESTART);
} else if (jj_2_1675(2)) {
- jj_consume_token(SQL_TSI_FRAC_SECOND);
+ jj_consume_token(RETURNED_LENGTH);
} else if (jj_2_1676(2)) {
- jj_consume_token(SQL_TSI_MINUTE);
+ jj_consume_token(RETURNING);
} else if (jj_2_1677(2)) {
- jj_consume_token(SQL_TSI_SECOND);
+ jj_consume_token(ROUTINE);
} else if (jj_2_1678(2)) {
- jj_consume_token(SQL_VARBINARY);
+ jj_consume_token(ROUTINE_SCHEMA);
} else if (jj_2_1679(2)) {
- jj_consume_token(STATEMENT);
+ jj_consume_token(SCALE);
} else if (jj_2_1680(2)) {
- jj_consume_token(STYLE);
+ jj_consume_token(SCOPE_CATALOGS);
} else if (jj_2_1681(2)) {
- jj_consume_token(TABLE_NAME);
+ jj_consume_token(SECONDS);
} else if (jj_2_1682(2)) {
- jj_consume_token(TIME_DIFF);
+ jj_consume_token(SELF);
} else if (jj_2_1683(2)) {
- jj_consume_token(TIMESTAMPDIFF);
+ jj_consume_token(SERIALIZABLE);
} else if (jj_2_1684(2)) {
- jj_consume_token(TOP_LEVEL_COUNT);
+ jj_consume_token(SESSION);
} else if (jj_2_1685(2)) {
- jj_consume_token(TRANSACTIONS_COMMITTED);
+ jj_consume_token(SIZE);
} else if (jj_2_1686(2)) {
- jj_consume_token(TRANSFORMS);
+ jj_consume_token(SPECIFIC_NAME);
} else if (jj_2_1687(2)) {
- jj_consume_token(TRIGGER_SCHEMA);
+ jj_consume_token(SQL_BIT);
} else if (jj_2_1688(2)) {
- jj_consume_token(UNBOUNDED);
+ jj_consume_token(SQL_CHAR);
} else if (jj_2_1689(2)) {
- jj_consume_token(UNDER);
+ jj_consume_token(SQL_DECIMAL);
} else if (jj_2_1690(2)) {
- jj_consume_token(USAGE);
+ jj_consume_token(SQL_INTEGER);
} else if (jj_2_1691(2)) {
- jj_consume_token(USER_DEFINED_TYPE_NAME);
+ jj_consume_token(SQL_INTERVAL_DAY_TO_MINUTE);
} else if (jj_2_1692(2)) {
- jj_consume_token(UTF32);
+ jj_consume_token(SQL_INTERVAL_HOUR_TO_MINUTE);
} else if (jj_2_1693(2)) {
- jj_consume_token(VIEW);
+ jj_consume_token(SQL_INTERVAL_MINUTE_TO_SECOND);
} else if (jj_2_1694(2)) {
- jj_consume_token(WORK);
+ jj_consume_token(SQL_INTERVAL_YEAR);
} else if (jj_2_1695(2)) {
- jj_consume_token(XML);
+ jj_consume_token(SQL_LONGVARCHAR);
} else if (jj_2_1696(2)) {
- jj_consume_token(TEMPLATE);
+ jj_consume_token(SQL_NCLOB);
} else if (jj_2_1697(2)) {
- jj_consume_token(ATOMICITY);
+ jj_consume_token(SQL_REAL);
} else if (jj_2_1698(2)) {
- jj_consume_token(CACHE_NAME);
+ jj_consume_token(SQL_TIMESTAMP);
} else if (jj_2_1699(2)) {
- jj_consume_token(WRAP_KEY);
+ jj_consume_token(SQL_TSI_FRAC_SECOND);
} else if (jj_2_1700(2)) {
- jj_consume_token(PARALLEL);
+ jj_consume_token(SQL_TSI_MINUTE);
} else if (jj_2_1701(2)) {
- jj_consume_token(NOLOGGING);
+ jj_consume_token(SQL_TSI_SECOND);
} else if (jj_2_1702(2)) {
- jj_consume_token(SCAN);
+ jj_consume_token(SQL_VARBINARY);
} else if (jj_2_1703(2)) {
- jj_consume_token(COMPUTE);
+ jj_consume_token(STATEMENT);
} else if (jj_2_1704(2)) {
- jj_consume_token(STATISTICS);
+ jj_consume_token(STYLE);
} else if (jj_2_1705(2)) {
- jj_consume_token(MAX_CHANGED_PARTITION_ROWS_PERCENT);
+ jj_consume_token(TABLE_NAME);
} else if (jj_2_1706(2)) {
- jj_consume_token(ALLOCATE);
+ jj_consume_token(TIME_DIFF);
} else if (jj_2_1707(2)) {
- jj_consume_token(ARRAY_MAX_CARDINALITY);
+ jj_consume_token(TIMESTAMPDIFF);
} else if (jj_2_1708(2)) {
- jj_consume_token(AT);
+ jj_consume_token(TOP_LEVEL_COUNT);
} else if (jj_2_1709(2)) {
- jj_consume_token(AVG);
+ jj_consume_token(TRANSACTIONS_COMMITTED);
} else if (jj_2_1710(2)) {
- jj_consume_token(BEGIN_PARTITION);
+ jj_consume_token(TRANSFORMS);
} else if (jj_2_1711(2)) {
- jj_consume_token(BIT);
+ jj_consume_token(TRIGGER_SCHEMA);
} else if (jj_2_1712(2)) {
- jj_consume_token(CALL);
+ jj_consume_token(UNBOUNDED);
} else if (jj_2_1713(2)) {
- jj_consume_token(CASCADED);
+ jj_consume_token(UNDER);
} else if (jj_2_1714(2)) {
- jj_consume_token(CHAR);
+ jj_consume_token(USAGE);
} else if (jj_2_1715(2)) {
- jj_consume_token(CHAR_LENGTH);
+ jj_consume_token(USER_DEFINED_TYPE_NAME);
} else if (jj_2_1716(2)) {
- jj_consume_token(CLOB);
+ jj_consume_token(UTF32);
} else if (jj_2_1717(2)) {
- jj_consume_token(COLLATE);
+ jj_consume_token(VIEW);
} else if (jj_2_1718(2)) {
- jj_consume_token(CONDITION);
+ jj_consume_token(WORK);
} else if (jj_2_1719(2)) {
- jj_consume_token(CONVERT);
+ jj_consume_token(XML);
} else if (jj_2_1720(2)) {
- jj_consume_token(COUNT);
+ jj_consume_token(TEMPLATE);
} else if (jj_2_1721(2)) {
- jj_consume_token(CUBE);
+ jj_consume_token(ATOMICITY);
} else if (jj_2_1722(2)) {
- jj_consume_token(CURRENT_CATALOG);
+ jj_consume_token(CACHE_NAME);
} else if (jj_2_1723(2)) {
- jj_consume_token(CURRENT_ROLE);
+ jj_consume_token(WRAP_KEY);
} else if (jj_2_1724(2)) {
- jj_consume_token(CURSOR);
+ jj_consume_token(PARALLEL);
} else if (jj_2_1725(2)) {
- jj_consume_token(DATETIME);
+ jj_consume_token(NOLOGGING);
} else if (jj_2_1726(2)) {
- jj_consume_token(DEC);
+ jj_consume_token(SCAN);
} else if (jj_2_1727(2)) {
- jj_consume_token(DEFINE);
+ jj_consume_token(COMPUTE);
} else if (jj_2_1728(2)) {
- jj_consume_token(DESCRIBE);
+ jj_consume_token(STATISTICS);
} else if (jj_2_1729(2)) {
- jj_consume_token(DISCONNECT);
+ jj_consume_token(MAX_CHANGED_PARTITION_ROWS_PERCENT);
} else if (jj_2_1730(2)) {
- jj_consume_token(EACH);
+ jj_consume_token(ALLOCATE);
} else if (jj_2_1731(2)) {
- jj_consume_token(END);
+ jj_consume_token(ARRAY_MAX_CARDINALITY);
} else if (jj_2_1732(2)) {
- jj_consume_token(END_PARTITION);
+ jj_consume_token(AT);
} else if (jj_2_1733(2)) {
- jj_consume_token(EVERY);
+ jj_consume_token(AVG);
} else if (jj_2_1734(2)) {
- jj_consume_token(EXP);
+ jj_consume_token(BEGIN_PARTITION);
} else if (jj_2_1735(2)) {
- jj_consume_token(EXTRACT);
+ jj_consume_token(BIT);
} else if (jj_2_1736(2)) {
- jj_consume_token(FLOAT);
+ jj_consume_token(CALL);
} else if (jj_2_1737(2)) {
- jj_consume_token(FRAME_ROW);
+ jj_consume_token(CASCADED);
} else if (jj_2_1738(2)) {
- jj_consume_token(FUSION);
+ jj_consume_token(CHAR);
} else if (jj_2_1739(2)) {
- jj_consume_token(GRANT);
+ jj_consume_token(CHAR_LENGTH);
} else if (jj_2_1740(2)) {
- jj_consume_token(HOLD);
+ jj_consume_token(CLOB);
} else if (jj_2_1741(2)) {
- jj_consume_token(IMPORT);
+ jj_consume_token(COLLATE);
} else if (jj_2_1742(2)) {
- jj_consume_token(INOUT);
+ jj_consume_token(CONDITION);
} else if (jj_2_1743(2)) {
- jj_consume_token(INTEGER);
+ jj_consume_token(CONVERT);
} else if (jj_2_1744(2)) {
- jj_consume_token(JSON_ARRAYAGG);
+ jj_consume_token(COUNT);
} else if (jj_2_1745(2)) {
- jj_consume_token(JSON_OBJECTAGG);
+ jj_consume_token(CUBE);
} else if (jj_2_1746(2)) {
- jj_consume_token(JSON_VALUE);
+ jj_consume_token(CURRENT_CATALOG);
} else if (jj_2_1747(2)) {
- jj_consume_token(LARGE);
+ jj_consume_token(CURRENT_ROLE);
} else if (jj_2_1748(2)) {
- jj_consume_token(LEAD);
+ jj_consume_token(CURSOR);
} else if (jj_2_1749(2)) {
- jj_consume_token(LOCAL);
+ jj_consume_token(DATETIME);
} else if (jj_2_1750(2)) {
- jj_consume_token(MATCHES);
+ jj_consume_token(DEC);
} else if (jj_2_1751(2)) {
- jj_consume_token(MATCH_RECOGNIZE);
+ jj_consume_token(DEFINE);
} else if (jj_2_1752(2)) {
- jj_consume_token(MEASURES);
+ jj_consume_token(DESCRIBE);
} else if (jj_2_1753(2)) {
- jj_consume_token(MIN);
+ jj_consume_token(DISCONNECT);
} else if (jj_2_1754(2)) {
- jj_consume_token(MODIFIES);
+ jj_consume_token(EACH);
} else if (jj_2_1755(2)) {
- jj_consume_token(MULTISET);
+ jj_consume_token(END);
} else if (jj_2_1756(2)) {
- jj_consume_token(NCLOB);
+ jj_consume_token(END_PARTITION);
} else if (jj_2_1757(2)) {
- jj_consume_token(NO);
+ jj_consume_token(EVERY);
} else if (jj_2_1758(2)) {
- jj_consume_token(NTH_VALUE);
+ jj_consume_token(EXP);
} else if (jj_2_1759(2)) {
- jj_consume_token(NUMERIC);
+ jj_consume_token(EXTRACT);
} else if (jj_2_1760(2)) {
- jj_consume_token(OF);
+ jj_consume_token(FLOAT);
} else if (jj_2_1761(2)) {
- jj_consume_token(ONE);
+ jj_consume_token(FRAME_ROW);
} else if (jj_2_1762(2)) {
- jj_consume_token(ORDINAL);
+ jj_consume_token(FUSION);
} else if (jj_2_1763(2)) {
- jj_consume_token(OVERLAPS);
+ jj_consume_token(GRANT);
} else if (jj_2_1764(2)) {
- jj_consume_token(PATTERN);
+ jj_consume_token(HOLD);
} else if (jj_2_1765(2)) {
- jj_consume_token(PERCENTILE_CONT);
+ jj_consume_token(IMPORT);
} else if (jj_2_1766(2)) {
- jj_consume_token(PERIOD);
+ jj_consume_token(INOUT);
} else if (jj_2_1767(2)) {
- jj_consume_token(POSITION);
+ jj_consume_token(INTEGER);
} else if (jj_2_1768(2)) {
- jj_consume_token(PRECEDES);
+ jj_consume_token(JSON_ARRAYAGG);
} else if (jj_2_1769(2)) {
- jj_consume_token(PREV);
+ jj_consume_token(JSON_OBJECTAGG);
} else if (jj_2_1770(2)) {
- jj_consume_token(RANGE);
+ jj_consume_token(JSON_VALUE);
} else if (jj_2_1771(2)) {
- jj_consume_token(REAL);
+ jj_consume_token(LARGE);
} else if (jj_2_1772(2)) {
- jj_consume_token(REFERENCES);
+ jj_consume_token(LEAD);
} else if (jj_2_1773(2)) {
- jj_consume_token(REGR_AVGY);
+ jj_consume_token(LOCAL);
} else if (jj_2_1774(2)) {
- jj_consume_token(REGR_R2);
+ jj_consume_token(MATCHES);
} else if (jj_2_1775(2)) {
- jj_consume_token(REGR_SXY);
+ jj_consume_token(MATCH_RECOGNIZE);
} else if (jj_2_1776(2)) {
- jj_consume_token(RESET);
+ jj_consume_token(MEASURES);
} else if (jj_2_1777(2)) {
- jj_consume_token(RETURNS);
+ jj_consume_token(MIN);
} else if (jj_2_1778(2)) {
- jj_consume_token(ROLLUP);
+ jj_consume_token(MODIFIES);
} else if (jj_2_1779(2)) {
- jj_consume_token(RUNNING);
+ jj_consume_token(MULTISET);
} else if (jj_2_1780(2)) {
- jj_consume_token(SAFE_ORDINAL);
+ jj_consume_token(NCLOB);
} else if (jj_2_1781(2)) {
- jj_consume_token(SCROLL);
+ jj_consume_token(NO);
} else if (jj_2_1782(2)) {
- jj_consume_token(SEEK);
+ jj_consume_token(NTH_VALUE);
} else if (jj_2_1783(2)) {
- jj_consume_token(SHOW);
+ jj_consume_token(NUMERIC);
} else if (jj_2_1784(2)) {
- jj_consume_token(SMALLINT);
+ jj_consume_token(OF);
} else if (jj_2_1785(2)) {
- jj_consume_token(SQL);
+ jj_consume_token(ONE);
} else if (jj_2_1786(2)) {
- jj_consume_token(SQLWARNING);
+ jj_consume_token(ORDINAL);
} else if (jj_2_1787(2)) {
- jj_consume_token(STATIC);
+ jj_consume_token(OVERLAPS);
} else if (jj_2_1788(2)) {
- jj_consume_token(STREAM);
+ jj_consume_token(PATTERN);
} else if (jj_2_1789(2)) {
- jj_consume_token(SUBSTRING);
+ jj_consume_token(PERCENTILE_CONT);
} else if (jj_2_1790(2)) {
- jj_consume_token(SUM);
+ jj_consume_token(PERIOD);
} else if (jj_2_1791(2)) {
- jj_consume_token(SYSTEM_USER);
+ jj_consume_token(POSITION);
} else if (jj_2_1792(2)) {
- jj_consume_token(TIMESTAMP);
+ jj_consume_token(PRECEDES);
} else if (jj_2_1793(2)) {
- jj_consume_token(TINYINT);
+ jj_consume_token(PREV);
} else if (jj_2_1794(2)) {
- jj_consume_token(TRANSLATION);
+ jj_consume_token(RANGE);
} else if (jj_2_1795(2)) {
- jj_consume_token(TRIM);
+ jj_consume_token(REAL);
} else if (jj_2_1796(2)) {
- jj_consume_token(TRY_CAST);
+ jj_consume_token(REFERENCES);
} else if (jj_2_1797(2)) {
- jj_consume_token(UNKNOWN);
+ jj_consume_token(REGR_AVGY);
} else if (jj_2_1798(2)) {
- jj_consume_token(UUID);
+ jj_consume_token(REGR_R2);
} else if (jj_2_1799(2)) {
- jj_consume_token(VARBINARY);
+ jj_consume_token(REGR_SXY);
} else if (jj_2_1800(2)) {
- jj_consume_token(VARYING);
+ jj_consume_token(RESET);
} else if (jj_2_1801(2)) {
- jj_consume_token(VERSIONING);
+ jj_consume_token(RETURNS);
} else if (jj_2_1802(2)) {
- jj_consume_token(WINDOW);
+ jj_consume_token(ROLLUP);
} else if (jj_2_1803(2)) {
- jj_consume_token(YEAR);
+ jj_consume_token(RUNNING);
} else if (jj_2_1804(2)) {
- jj_consume_token(WEDNESDAY);
+ jj_consume_token(SAFE_ORDINAL);
} else if (jj_2_1805(2)) {
- jj_consume_token(SATURDAY);
+ jj_consume_token(SCROLL);
+ } else if (jj_2_1806(2)) {
+ jj_consume_token(SEEK);
+ } else if (jj_2_1807(2)) {
+ jj_consume_token(SHOW);
+ } else if (jj_2_1808(2)) {
+ jj_consume_token(SMALLINT);
+ } else if (jj_2_1809(2)) {
+ jj_consume_token(SQL);
+ } else if (jj_2_1810(2)) {
+ jj_consume_token(SQLWARNING);
+ } else if (jj_2_1811(2)) {
+ jj_consume_token(STATIC);
+ } else if (jj_2_1812(2)) {
+ jj_consume_token(STREAM);
+ } else if (jj_2_1813(2)) {
+ jj_consume_token(SUBSTRING);
+ } else if (jj_2_1814(2)) {
+ jj_consume_token(SUM);
+ } else if (jj_2_1815(2)) {
+ jj_consume_token(SYSTEM_USER);
+ } else if (jj_2_1816(2)) {
+ jj_consume_token(TIMESTAMP);
+ } else if (jj_2_1817(2)) {
+ jj_consume_token(TINYINT);
+ } else if (jj_2_1818(2)) {
+ jj_consume_token(TRANSLATION);
+ } else if (jj_2_1819(2)) {
+ jj_consume_token(TRIM);
+ } else if (jj_2_1820(2)) {
+ jj_consume_token(TRY_CAST);
+ } else if (jj_2_1821(2)) {
+ jj_consume_token(UNKNOWN);
+ } else if (jj_2_1822(2)) {
+ jj_consume_token(UPSERT);
+ } else if (jj_2_1823(2)) {
+ jj_consume_token(VALUE_OF);
+ } else if (jj_2_1824(2)) {
+ jj_consume_token(VARCHAR);
+ } else if (jj_2_1825(2)) {
+ jj_consume_token(VAR_SAMP);
+ } else if (jj_2_1826(2)) {
+ jj_consume_token(WIDTH_BUCKET);
+ } else if (jj_2_1827(2)) {
+ jj_consume_token(WITHOUT);
+ } else if (jj_2_1828(2)) {
+ jj_consume_token(TUESDAY);
+ } else if (jj_2_1829(2)) {
+ jj_consume_token(FRIDAY);
} else {
jj_consume_token(-1);
throw new ParseException();
@@ -24191,735 +24427,469 @@
finally { jj_save(1804, xla); }
}
- final private boolean jj_3_642() {
- if (jj_scan_token(HOUR)) return true;
+ final private boolean jj_2_1806(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1806(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1805, xla); }
+ }
+
+ final private boolean jj_2_1807(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1807(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1806, xla); }
+ }
+
+ final private boolean jj_2_1808(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1808(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1807, xla); }
+ }
+
+ final private boolean jj_2_1809(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1809(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1808, xla); }
+ }
+
+ final private boolean jj_2_1810(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1810(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1809, xla); }
+ }
+
+ final private boolean jj_2_1811(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1811(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1810, xla); }
+ }
+
+ final private boolean jj_2_1812(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1812(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1811, xla); }
+ }
+
+ final private boolean jj_2_1813(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1813(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1812, xla); }
+ }
+
+ final private boolean jj_2_1814(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1814(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1813, xla); }
+ }
+
+ final private boolean jj_2_1815(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1815(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1814, xla); }
+ }
+
+ final private boolean jj_2_1816(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1816(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1815, xla); }
+ }
+
+ final private boolean jj_2_1817(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1817(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1816, xla); }
+ }
+
+ final private boolean jj_2_1818(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1818(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1817, xla); }
+ }
+
+ final private boolean jj_2_1819(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1819(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1818, xla); }
+ }
+
+ final private boolean jj_2_1820(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1820(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1819, xla); }
+ }
+
+ final private boolean jj_2_1821(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1821(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1820, xla); }
+ }
+
+ final private boolean jj_2_1822(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1822(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1821, xla); }
+ }
+
+ final private boolean jj_2_1823(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1823(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1822, xla); }
+ }
+
+ final private boolean jj_2_1824(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1824(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1823, xla); }
+ }
+
+ final private boolean jj_2_1825(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1825(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1824, xla); }
+ }
+
+ final private boolean jj_2_1826(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1826(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1825, xla); }
+ }
+
+ final private boolean jj_2_1827(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1827(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1826, xla); }
+ }
+
+ final private boolean jj_2_1828(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1828(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1827, xla); }
+ }
+
+ final private boolean jj_2_1829(int xla) {
+ jj_la = xla; jj_lastpos = jj_scanpos = token;
+ try { return !jj_3_1829(); }
+ catch(LookaheadSuccess ls) { return true; }
+ finally { jj_save(1828, xla); }
+ }
+
+ final private boolean jj_3R_262() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_615()) {
+ jj_scanpos = xsp;
+ if (jj_3_616()) return true;
+ }
return false;
}
- final private boolean jj_3_641() {
- if (jj_scan_token(MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_264() {
- if (jj_scan_token(WITH)) return true;
- if (jj_scan_token(ORDINALITY)) return true;
- return false;
- }
-
- final private boolean jj_3_640() {
+ final private boolean jj_3_615() {
if (jj_scan_token(SECOND)) return true;
return false;
}
- final private boolean jj_3_639() {
- if (jj_scan_token(MILLISECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_638() {
- if (jj_scan_token(MICROSECOND)) return true;
- return false;
- }
-
- final private boolean jj_3R_270() {
+ final private boolean jj_3R_349() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_637()) {
- jj_scanpos = xsp;
- if (jj_3_638()) {
- jj_scanpos = xsp;
- if (jj_3_639()) {
- jj_scanpos = xsp;
- if (jj_3_640()) {
- jj_scanpos = xsp;
- if (jj_3_641()) {
- jj_scanpos = xsp;
- if (jj_3_642()) {
- jj_scanpos = xsp;
- if (jj_3_643()) {
- jj_scanpos = xsp;
- if (jj_3_644()) {
- jj_scanpos = xsp;
- if (jj_3_645()) {
- jj_scanpos = xsp;
- if (jj_3_646()) {
- jj_scanpos = xsp;
- if (jj_3_647()) {
- jj_scanpos = xsp;
- if (jj_3_648()) {
- jj_scanpos = xsp;
- if (jj_3_649()) {
- jj_scanpos = xsp;
- if (jj_3_650()) {
- jj_scanpos = xsp;
- if (jj_3_651()) {
- jj_scanpos = xsp;
- if (jj_3_652()) {
- jj_scanpos = xsp;
- if (jj_3_653()) {
- jj_scanpos = xsp;
- if (jj_3_654()) {
- jj_scanpos = xsp;
- if (jj_3_655()) {
- jj_scanpos = xsp;
- if (jj_3_656()) {
- jj_scanpos = xsp;
- if (jj_3_657()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_637() {
- if (jj_scan_token(NANOSECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_263() {
- if (jj_scan_token(LATERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_262() {
- if (jj_3R_168()) return true;
- return false;
- }
-
- final private boolean jj_3_268() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_263()) jj_scanpos = xsp;
- if (jj_scan_token(UNNEST)) return true;
- if (jj_3R_173()) return true;
- return false;
- }
-
- final private boolean jj_3_259() {
- if (jj_3R_168()) return true;
- return false;
- }
-
- final private boolean jj_3_261() {
- if (jj_scan_token(LATERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_258() {
- if (jj_3R_167()) return true;
- return false;
- }
-
- final private boolean jj_3_257() {
- if (jj_3R_158()) return true;
- return false;
- }
-
- final private boolean jj_3_267() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_261()) jj_scanpos = xsp;
- if (jj_3R_172()) return true;
- return false;
- }
-
- final private boolean jj_3_256() {
- if (jj_3R_157()) return true;
- return false;
- }
-
- final private boolean jj_3R_171() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_256()) {
- jj_scanpos = xsp;
- if (jj_3R_372()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_257()) jj_scanpos = xsp;
- if (jj_3R_373()) return true;
- xsp = jj_scanpos;
- if (jj_3_258()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3_259()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_260() {
- if (jj_3R_169()) return true;
- return false;
- }
-
- final private boolean jj_3_635() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3R_332() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_634()) {
- jj_scanpos = xsp;
- if (jj_3_635()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_634() {
- if (jj_3R_270()) return true;
- return false;
- }
-
- final private boolean jj_3_266() {
- if (jj_3R_170()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_260()) {
- jj_scanpos = xsp;
- if (jj_3R_171()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_345() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_266()) {
- jj_scanpos = xsp;
- if (jj_3_267()) {
- jj_scanpos = xsp;
if (jj_3_268()) {
jj_scanpos = xsp;
if (jj_3_269()) {
jj_scanpos = xsp;
- if (jj_3_270()) return true;
+ if (jj_3_270()) {
+ jj_scanpos = xsp;
+ if (jj_3_271()) {
+ jj_scanpos = xsp;
+ if (jj_3_272()) return true;
}
}
}
}
xsp = jj_scanpos;
- if (jj_3_271()) jj_scanpos = xsp;
+ if (jj_3_273()) jj_scanpos = xsp;
xsp = jj_scanpos;
- if (jj_3_272()) jj_scanpos = xsp;
+ if (jj_3_274()) jj_scanpos = xsp;
xsp = jj_scanpos;
- if (jj_3_275()) jj_scanpos = xsp;
+ if (jj_3_277()) jj_scanpos = xsp;
xsp = jj_scanpos;
- if (jj_3_276()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_630() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_260()) return true;
- return false;
- }
-
- final private boolean jj_3_631() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_260()) return true;
- return false;
- }
-
- final private boolean jj_3R_69() {
- if (jj_3R_345()) return true;
- return false;
- }
-
- final private boolean jj_3_633() {
- if (jj_3R_258()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_631()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_629() {
- if (jj_3R_257()) return true;
- return false;
- }
-
- final private boolean jj_3_628() {
- if (jj_3R_256()) return true;
- return false;
- }
-
- final private boolean jj_3_627() {
- if (jj_3R_265()) return true;
- return false;
- }
-
- final private boolean jj_3_626() {
- if (jj_3R_264()) return true;
- return false;
- }
-
- final private boolean jj_3_625() {
- if (jj_3R_255()) return true;
- return false;
- }
-
- final private boolean jj_3_624() {
- if (jj_3R_263()) return true;
- return false;
- }
-
- final private boolean jj_3_623() {
- if (jj_3R_261()) return true;
- return false;
- }
-
- final private boolean jj_3_632() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_623()) {
- jj_scanpos = xsp;
- if (jj_3_624()) {
- jj_scanpos = xsp;
- if (jj_3_625()) {
- jj_scanpos = xsp;
- if (jj_3_626()) {
- jj_scanpos = xsp;
- if (jj_3_627()) {
- jj_scanpos = xsp;
- if (jj_3_628()) {
- jj_scanpos = xsp;
- if (jj_3_629()) return true;
- }
- }
- }
- }
- }
- }
- if (jj_3R_259()) return true;
- return false;
- }
-
- final private boolean jj_3R_254() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_632()) {
- jj_scanpos = xsp;
- if (jj_3_633()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_269() {
- return false;
- }
-
- final private boolean jj_3_613() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_260()) return true;
- return false;
- }
-
- final private boolean jj_3_255() {
- if (jj_scan_token(OUTER)) return true;
- if (jj_scan_token(APPLY)) return true;
+ if (jj_3_278()) jj_scanpos = xsp;
return false;
}
final private boolean jj_3_614() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_260()) return true;
+ if (jj_scan_token(MINUTES)) return true;
return false;
}
- final private boolean jj_3_611() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_260()) return true;
- return false;
- }
-
- final private boolean jj_3R_268() {
- return false;
- }
-
- final private boolean jj_3_622() {
- if (jj_3R_258()) return true;
+ final private boolean jj_3R_261() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_614()) {
+ if (jj_3_613()) {
jj_scanpos = xsp;
- if (jj_3R_269()) return true;
+ if (jj_3_614()) return true;
}
return false;
}
+ final private boolean jj_3_613() {
+ if (jj_scan_token(MINUTE)) return true;
+ return false;
+ }
+
final private boolean jj_3_612() {
- if (jj_scan_token(TO)) return true;
- if (jj_3R_258()) return true;
+ if (jj_scan_token(HOURS)) return true;
return false;
}
- final private boolean jj_3_607() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_260()) return true;
- return false;
- }
-
- final private boolean jj_3_609() {
- if (jj_3R_258()) return true;
+ final private boolean jj_3R_260() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_607()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3R_267() {
- return false;
- }
-
- final private boolean jj_3_254() {
- if (jj_scan_token(CROSS)) return true;
- if (jj_scan_token(APPLY)) return true;
- return false;
- }
-
- final private boolean jj_3_608() {
- if (jj_3R_257()) return true;
- return false;
- }
-
- final private boolean jj_3_621() {
- if (jj_3R_257()) return true;
- if (jj_3R_259()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_612()) {
+ if (jj_3_611()) {
jj_scanpos = xsp;
- if (jj_3R_268()) return true;
+ if (jj_3_612()) return true;
}
return false;
}
- final private boolean jj_3R_166() {
+ final private boolean jj_3_611() {
+ if (jj_scan_token(HOUR)) return true;
return false;
}
final private boolean jj_3_610() {
- if (jj_scan_token(TO)) return true;
+ if (jj_scan_token(DAYS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_269() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_608()) {
+ if (jj_3_609()) {
jj_scanpos = xsp;
- if (jj_3_609()) return true;
+ if (jj_3_610()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_609() {
+ if (jj_scan_token(DAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_70() {
+ if (jj_3R_349()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_608() {
+ if (jj_scan_token(WEEKS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_268() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_607()) {
+ jj_scanpos = xsp;
+ if (jj_3_608()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_607() {
+ if (jj_scan_token(WEEK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_606() {
+ if (jj_scan_token(MONTHS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_259() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_605()) {
+ jj_scanpos = xsp;
+ if (jj_3_606()) return true;
}
return false;
}
final private boolean jj_3_605() {
- if (jj_3R_258()) return true;
- if (jj_3R_259()) return true;
- return false;
- }
-
- final private boolean jj_3R_266() {
+ if (jj_scan_token(MONTH)) return true;
return false;
}
final private boolean jj_3_604() {
- if (jj_3R_257()) return true;
+ if (jj_scan_token(QUARTERS)) return true;
return false;
}
- final private boolean jj_3_620() {
- if (jj_3R_256()) return true;
- if (jj_3R_259()) return true;
+ final private boolean jj_3R_267() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_610()) {
+ if (jj_3_603()) {
jj_scanpos = xsp;
- if (jj_3R_267()) return true;
+ if (jj_3_604()) return true;
}
return false;
}
final private boolean jj_3_603() {
- if (jj_3R_256()) return true;
+ if (jj_scan_token(QUARTER)) return true;
return false;
}
- final private boolean jj_3_252() {
- if (jj_scan_token(USING)) return true;
- if (jj_3R_124()) return true;
- return false;
- }
-
- final private boolean jj_3_606() {
- if (jj_scan_token(TO)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_603()) {
- jj_scanpos = xsp;
- if (jj_3_604()) {
- jj_scanpos = xsp;
- if (jj_3_605()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_619() {
- if (jj_3R_265()) return true;
- if (jj_3R_259()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_606()) {
- jj_scanpos = xsp;
- if (jj_3R_266()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_618() {
- if (jj_3R_264()) return true;
- if (jj_3R_259()) return true;
- return false;
- }
-
- final private boolean jj_3_617() {
- if (jj_3R_255()) return true;
- if (jj_3R_259()) return true;
- return false;
- }
-
- final private boolean jj_3R_262() {
+ final private boolean jj_3_257() {
+ if (jj_scan_token(OUTER)) return true;
+ if (jj_scan_token(APPLY)) return true;
return false;
}
final private boolean jj_3_602() {
- if (jj_scan_token(TO)) return true;
- if (jj_3R_255()) return true;
- return false;
- }
-
- final private boolean jj_3_616() {
- if (jj_3R_263()) return true;
- if (jj_3R_259()) return true;
- return false;
- }
-
- final private boolean jj_3_615() {
- if (jj_3R_261()) return true;
- if (jj_3R_259()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_602()) {
- jj_scanpos = xsp;
- if (jj_3R_262()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_215() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_615()) {
- jj_scanpos = xsp;
- if (jj_3_616()) {
- jj_scanpos = xsp;
- if (jj_3_617()) {
- jj_scanpos = xsp;
- if (jj_3_618()) {
- jj_scanpos = xsp;
- if (jj_3_619()) {
- jj_scanpos = xsp;
- if (jj_3_620()) {
- jj_scanpos = xsp;
- if (jj_3_621()) {
- jj_scanpos = xsp;
- if (jj_3_622()) return true;
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_250() {
- if (jj_scan_token(MATCH_CONDITION)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_251() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_250()) jj_scanpos = xsp;
- if (jj_scan_token(ON)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3R_66() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_253()) {
- jj_scanpos = xsp;
- if (jj_3_254()) {
- jj_scanpos = xsp;
- if (jj_3_255()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_253() {
- if (jj_3R_164()) return true;
- if (jj_3R_165()) return true;
- if (jj_3R_69()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_251()) {
- jj_scanpos = xsp;
- if (jj_3_252()) {
- jj_scanpos = xsp;
- if (jj_3R_166()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_601() {
- if (jj_scan_token(SECONDS)) return true;
- return false;
- }
-
- final private boolean jj_3R_258() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_600()) {
- jj_scanpos = xsp;
- if (jj_3_601()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_600() {
- if (jj_scan_token(SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_599() {
- if (jj_scan_token(MINUTES)) return true;
- return false;
- }
-
- final private boolean jj_3R_257() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_598()) {
- jj_scanpos = xsp;
- if (jj_3_599()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_598() {
- if (jj_scan_token(MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_597() {
- if (jj_scan_token(HOURS)) return true;
- return false;
- }
-
- final private boolean jj_3R_256() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_596()) {
- jj_scanpos = xsp;
- if (jj_3_597()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_596() {
- if (jj_scan_token(HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_249() {
- if (jj_3R_66()) return true;
- return false;
- }
-
- final private boolean jj_3_595() {
- if (jj_scan_token(DAYS)) return true;
+ if (jj_scan_token(YEARS)) return true;
return false;
}
final private boolean jj_3R_265() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_594()) {
+ if (jj_3_601()) {
jj_scanpos = xsp;
- if (jj_3_595()) return true;
+ if (jj_3_602()) return true;
}
return false;
}
+ final private boolean jj_3_601() {
+ if (jj_scan_token(YEAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_598() {
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_597() {
+ if (jj_3R_200()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_256() {
+ if (jj_scan_token(CROSS)) return true;
+ if (jj_scan_token(APPLY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_596() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_167() {
+ return false;
+ }
+
+ final private boolean jj_3_600() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_596()) {
+ jj_scanpos = xsp;
+ if (jj_3_597()) {
+ jj_scanpos = xsp;
+ if (jj_3_598()) return true;
+ }
+ }
+ if (jj_3R_258()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_599() {
+ if (jj_3R_251()) return true;
+ if (jj_3R_219()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_254() {
+ if (jj_scan_token(USING)) return true;
+ if (jj_3R_125()) return true;
+ return false;
+ }
+
final private boolean jj_3_594() {
- if (jj_scan_token(DAY)) return true;
- return false;
- }
-
- final private boolean jj_3_248() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_69()) return true;
+ if (jj_scan_token(PLUS)) return true;
return false;
}
final private boolean jj_3_593() {
- if (jj_scan_token(WEEKS)) return true;
+ if (jj_scan_token(MINUS)) return true;
return false;
}
- final private boolean jj_3R_264() {
+ final private boolean jj_3_595() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_592()) {
+ if (jj_3_593()) {
jj_scanpos = xsp;
- if (jj_3_593()) return true;
+ if (jj_3_594()) return true;
}
return false;
}
- final private boolean jj_3_592() {
- if (jj_scan_token(WEEK)) return true;
+ final private boolean jj_3R_250() {
+ if (jj_scan_token(INTERVAL)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_595()) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3_599()) {
+ jj_scanpos = xsp;
+ if (jj_3_600()) return true;
+ }
return false;
}
final private boolean jj_3_591() {
- if (jj_scan_token(MONTHS)) return true;
+ if (jj_scan_token(PLUS)) return true;
return false;
}
- final private boolean jj_3R_255() {
+ final private boolean jj_3_252() {
+ if (jj_scan_token(MATCH_CONDITION)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_590() {
+ if (jj_scan_token(MINUS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_592() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_590()) {
@@ -24929,22 +24899,118 @@
return false;
}
- final private boolean jj_3_590() {
- if (jj_scan_token(MONTH)) return true;
+ final private boolean jj_3_253() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_252()) jj_scanpos = xsp;
+ if (jj_scan_token(ON)) return true;
+ if (jj_3R_82()) return true;
return false;
}
- final private boolean jj_3R_150() {
- if (jj_3R_69()) return true;
+ final private boolean jj_3R_195() {
+ if (jj_scan_token(INTERVAL)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_592()) jj_scanpos = xsp;
+ if (jj_3R_251()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_67() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_255()) {
+ jj_scanpos = xsp;
+ if (jj_3_256()) {
+ jj_scanpos = xsp;
+ if (jj_3_257()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_255() {
+ if (jj_3R_165()) return true;
+ if (jj_3R_166()) return true;
+ if (jj_3R_70()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_253()) {
+ jj_scanpos = xsp;
+ if (jj_3_254()) {
+ jj_scanpos = xsp;
+ if (jj_3R_167()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_232() {
+ if (jj_scan_token(PERIOD)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_251() {
+ if (jj_3R_67()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_257() {
+ return false;
+ }
+
+ final private boolean jj_3_587() {
+ if (jj_3R_238()) return true;
return false;
}
final private boolean jj_3_589() {
- if (jj_scan_token(QUARTERS)) return true;
+ if (jj_scan_token(LBRACKET)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_587()) {
+ jj_scanpos = xsp;
+ if (jj_3R_257()) return true;
+ }
return false;
}
- final private boolean jj_3R_263() {
+ final private boolean jj_3_250() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_70()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_586() {
+ if (jj_3R_174()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_585() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_588() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_585()) {
+ jj_scanpos = xsp;
+ if (jj_3_586()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_151() {
+ if (jj_3R_70()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_231() {
+ if (jj_scan_token(MAP)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3_588()) {
@@ -24954,148 +25020,134 @@
return false;
}
- final private boolean jj_3_588() {
- if (jj_scan_token(QUARTER)) return true;
- return false;
- }
-
- final private boolean jj_3_237() {
+ final private boolean jj_3_239() {
if (jj_scan_token(ASOF)) return true;
return false;
}
- final private boolean jj_3_240() {
+ final private boolean jj_3_242() {
if (jj_scan_token(OUTER)) return true;
return false;
}
- final private boolean jj_3_587() {
- if (jj_scan_token(YEARS)) return true;
- return false;
- }
-
- final private boolean jj_3_239() {
+ final private boolean jj_3_241() {
if (jj_scan_token(OUTER)) return true;
return false;
}
- final private boolean jj_3R_261() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_586()) {
- jj_scanpos = xsp;
- if (jj_3_587()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_586() {
- if (jj_scan_token(YEAR)) return true;
- return false;
- }
-
- final private boolean jj_3_236() {
- if (jj_scan_token(OUTER)) return true;
+ final private boolean jj_3R_409() {
return false;
}
final private boolean jj_3_238() {
+ if (jj_scan_token(OUTER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_240() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_236()) {
+ if (jj_3_238()) {
jj_scanpos = xsp;
- if (jj_3_237()) return true;
+ if (jj_3_239()) return true;
}
return false;
}
- final private boolean jj_3_247() {
+ final private boolean jj_3_582() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_256()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_249() {
if (jj_scan_token(CROSS)) return true;
if (jj_scan_token(JOIN)) return true;
return false;
}
- final private boolean jj_3_246() {
+ final private boolean jj_3_581() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_120()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_584() {
+ if (jj_3R_256()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_248() {
if (jj_scan_token(FULL)) return true;
Token xsp;
xsp = jj_scanpos;
+ if (jj_3_242()) jj_scanpos = xsp;
+ if (jj_scan_token(JOIN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_583() {
+ if (jj_3R_120()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_581()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_247() {
+ if (jj_scan_token(RIGHT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_241()) jj_scanpos = xsp;
+ if (jj_scan_token(JOIN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_246() {
+ if (jj_scan_token(LEFT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
if (jj_3_240()) jj_scanpos = xsp;
if (jj_scan_token(JOIN)) return true;
return false;
}
- final private boolean jj_3_583() {
- if (jj_3R_152()) return true;
- return false;
- }
-
final private boolean jj_3_245() {
- if (jj_scan_token(RIGHT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_239()) jj_scanpos = xsp;
- if (jj_scan_token(JOIN)) return true;
- return false;
- }
-
- final private boolean jj_3_582() {
- if (jj_3R_198()) return true;
- return false;
- }
-
- final private boolean jj_3_244() {
- if (jj_scan_token(LEFT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_238()) jj_scanpos = xsp;
- if (jj_scan_token(JOIN)) return true;
- return false;
- }
-
- final private boolean jj_3_243() {
if (jj_scan_token(ASOF)) return true;
if (jj_scan_token(JOIN)) return true;
return false;
}
- final private boolean jj_3_581() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_81()) return true;
+ final private boolean jj_3R_256() {
+ if (jj_scan_token(LBRACE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_583()) {
+ jj_scanpos = xsp;
+ if (jj_3_584()) {
+ jj_scanpos = xsp;
+ if (jj_3R_409()) return true;
+ }
+ }
return false;
}
- final private boolean jj_3_242() {
+ final private boolean jj_3_244() {
if (jj_scan_token(INNER)) return true;
if (jj_scan_token(JOIN)) return true;
return false;
}
- final private boolean jj_3_241() {
+ final private boolean jj_3_243() {
if (jj_scan_token(JOIN)) return true;
return false;
}
- final private boolean jj_3_585() {
+ final private boolean jj_3R_166() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_581()) {
- jj_scanpos = xsp;
- if (jj_3_582()) {
- jj_scanpos = xsp;
- if (jj_3_583()) return true;
- }
- }
- if (jj_3R_254()) return true;
- return false;
- }
-
- final private boolean jj_3R_165() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_241()) {
- jj_scanpos = xsp;
- if (jj_3_242()) {
- jj_scanpos = xsp;
if (jj_3_243()) {
jj_scanpos = xsp;
if (jj_3_244()) {
@@ -25104,7 +25156,11 @@
jj_scanpos = xsp;
if (jj_3_246()) {
jj_scanpos = xsp;
- if (jj_3_247()) return true;
+ if (jj_3_247()) {
+ jj_scanpos = xsp;
+ if (jj_3_248()) {
+ jj_scanpos = xsp;
+ if (jj_3_249()) return true;
}
}
}
@@ -25114,695 +25170,715 @@
return false;
}
- final private boolean jj_3_584() {
- if (jj_3R_247()) return true;
- if (jj_3R_215()) return true;
+ final private boolean jj_3R_255() {
return false;
}
- final private boolean jj_3R_371() {
+ final private boolean jj_3_578() {
+ if (jj_3R_238()) return true;
return false;
}
- final private boolean jj_3_579() {
- if (jj_scan_token(PLUS)) return true;
+ final private boolean jj_3R_375() {
return false;
}
- final private boolean jj_3R_164() {
+ final private boolean jj_3_580() {
+ if (jj_scan_token(LBRACKET)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_578()) {
+ jj_scanpos = xsp;
+ if (jj_3R_255()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_165() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_237()) {
+ jj_scanpos = xsp;
+ if (jj_3R_375()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_237() {
+ if (jj_scan_token(NATURAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1156() {
+ if (jj_scan_token(JSON)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1155() {
+ if (jj_scan_token(JSON)) return true;
+ if (jj_scan_token(SCALAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_577() {
+ if (jj_3R_174()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1154() {
+ if (jj_scan_token(JSON)) return true;
+ if (jj_scan_token(ARRAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_236() {
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1153() {
+ if (jj_scan_token(JSON)) return true;
+ if (jj_scan_token(OBJECT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1161() {
+ if (jj_scan_token(FORMAT)) return true;
+ if (jj_3R_317()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1152() {
+ if (jj_scan_token(JSON)) return true;
+ if (jj_scan_token(VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_576() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1151() {
+ if (jj_scan_token(EMPTY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_369() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_235()) {
jj_scanpos = xsp;
- if (jj_3R_371()) return true;
+ if (jj_3_236()) return true;
}
return false;
}
final private boolean jj_3_235() {
- if (jj_scan_token(NATURAL)) return true;
- return false;
- }
-
- final private boolean jj_3_578() {
- if (jj_scan_token(MINUS)) return true;
- return false;
- }
-
- final private boolean jj_3_580() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_578()) {
- jj_scanpos = xsp;
- if (jj_3_579()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_246() {
- if (jj_scan_token(INTERVAL)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_580()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3_584()) {
- jj_scanpos = xsp;
- if (jj_3_585()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_234() {
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3R_365() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_233()) {
- jj_scanpos = xsp;
- if (jj_3_234()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_233() {
if (jj_scan_token(STAR)) return true;
return false;
}
- final private boolean jj_3R_163() {
- if (jj_3R_370()) return true;
- return false;
- }
-
- final private boolean jj_3_576() {
- if (jj_scan_token(PLUS)) return true;
- return false;
- }
-
- final private boolean jj_3_231() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_575() {
- if (jj_scan_token(MINUS)) return true;
- return false;
- }
-
- final private boolean jj_3_577() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_575()) {
- jj_scanpos = xsp;
- if (jj_3_576()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_229() {
- if (jj_scan_token(MEASURE)) return true;
- return false;
- }
-
- final private boolean jj_3R_193() {
- if (jj_scan_token(INTERVAL)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_577()) jj_scanpos = xsp;
- if (jj_3R_247()) return true;
- return false;
- }
-
- final private boolean jj_3_230() {
- if (jj_scan_token(AS)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_229()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_232() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_230()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3_231()) {
- jj_scanpos = xsp;
- if (jj_3R_163()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_144() {
- if (jj_3R_365()) return true;
- return false;
- }
-
- final private boolean jj_3R_228() {
- if (jj_scan_token(PERIOD)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3R_253() {
- return false;
- }
-
- final private boolean jj_3_228() {
- if (jj_scan_token(VALUES)) return true;
- if (jj_3R_162()) return true;
- return false;
- }
-
- final private boolean jj_3_572() {
- if (jj_3R_234()) return true;
- return false;
- }
-
- final private boolean jj_3_227() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(VALUES)) return true;
- return false;
- }
-
- final private boolean jj_3_574() {
- if (jj_scan_token(LBRACKET)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_572()) {
- jj_scanpos = xsp;
- if (jj_3R_253()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_226() {
- if (jj_3R_124()) return true;
- return false;
- }
-
- final private boolean jj_3_571() {
- if (jj_3R_173()) return true;
- return false;
- }
-
- final private boolean jj_3R_160() {
- if (jj_scan_token(WHEN)) return true;
- if (jj_scan_token(NOT)) return true;
- return false;
- }
-
- final private boolean jj_3_570() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_573() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_570()) {
- jj_scanpos = xsp;
- if (jj_3_571()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_227() {
- if (jj_scan_token(MAP)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_573()) {
- jj_scanpos = xsp;
- if (jj_3_574()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_225() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3R_397() {
- return false;
- }
-
- final private boolean jj_3_567() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_252()) return true;
- return false;
- }
-
- final private boolean jj_3_569() {
- if (jj_3R_252()) return true;
- return false;
- }
-
- final private boolean jj_3_566() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_119()) return true;
- return false;
- }
-
- final private boolean jj_3R_161() {
- if (jj_scan_token(WHEN)) return true;
- if (jj_scan_token(MATCHED)) return true;
- return false;
- }
-
- final private boolean jj_3_568() {
- if (jj_3R_119()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_566()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3R_252() {
- if (jj_scan_token(LBRACE)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_568()) {
- jj_scanpos = xsp;
- if (jj_3_569()) {
- jj_scanpos = xsp;
- if (jj_3R_397()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_222() {
- if (jj_3R_160()) return true;
- return false;
- }
-
- final private boolean jj_3_224() {
- if (jj_3R_160()) return true;
- return false;
- }
-
- final private boolean jj_3R_251() {
- return false;
- }
-
- final private boolean jj_3_563() {
- if (jj_3R_234()) return true;
- return false;
- }
-
- final private boolean jj_3_223() {
- if (jj_3R_161()) return true;
- return false;
- }
-
- final private boolean jj_3_220() {
- if (jj_scan_token(AS)) return true;
- return false;
- }
-
- final private boolean jj_3_565() {
- if (jj_scan_token(LBRACKET)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_563()) {
- jj_scanpos = xsp;
- if (jj_3R_251()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_221() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_220()) jj_scanpos = xsp;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_219() {
- if (jj_3R_158()) return true;
- return false;
- }
-
- final private boolean jj_3_218() {
- if (jj_3R_157()) return true;
- return false;
- }
-
- final private boolean jj_3R_116() {
- if (jj_scan_token(MERGE)) return true;
- if (jj_scan_token(INTO)) return true;
- return false;
- }
-
- final private boolean jj_3_562() {
- if (jj_3R_173()) return true;
- return false;
- }
-
- final private boolean jj_3_561() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_564() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_561()) {
- jj_scanpos = xsp;
- if (jj_3_562()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_226() {
- if (jj_scan_token(ARRAY)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_564()) {
- jj_scanpos = xsp;
- if (jj_3_565()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_217() {
- if (jj_3R_145()) return true;
- return false;
- }
-
- final private boolean jj_3_216() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3_214() {
- if (jj_scan_token(AS)) return true;
- return false;
- }
-
- final private boolean jj_3_558() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_215() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_214()) jj_scanpos = xsp;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_213() {
- if (jj_3R_158()) return true;
- return false;
- }
-
- final private boolean jj_3_212() {
- if (jj_3R_157()) return true;
- return false;
- }
-
- final private boolean jj_3_560() {
- if (jj_scan_token(LBRACKET)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_557() {
- if (jj_scan_token(TIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3R_115() {
- if (jj_scan_token(UPDATE)) return true;
- if (jj_3R_170()) return true;
- return false;
- }
-
- final private boolean jj_3_559() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_250()) return true;
- return false;
- }
-
- final private boolean jj_3_1133() {
- if (jj_scan_token(JSON)) return true;
- return false;
- }
-
- final private boolean jj_3_543() {
- if (jj_scan_token(LOCAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1132() {
- if (jj_scan_token(JSON)) return true;
- if (jj_scan_token(SCALAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1131() {
- if (jj_scan_token(JSON)) return true;
- if (jj_scan_token(ARRAY)) return true;
- return false;
- }
-
- final private boolean jj_3R_225() {
- if (jj_scan_token(MULTISET)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_559()) {
- jj_scanpos = xsp;
- if (jj_3_560()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_556() {
- if (jj_scan_token(DATETIME)) return true;
- return false;
- }
-
- final private boolean jj_3_1130() {
- if (jj_scan_token(JSON)) return true;
- if (jj_scan_token(OBJECT)) return true;
- return false;
- }
-
- final private boolean jj_3_1129() {
- if (jj_scan_token(JSON)) return true;
- if (jj_scan_token(VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1138() {
- if (jj_scan_token(FORMAT)) return true;
- if (jj_3R_313()) return true;
- return false;
- }
-
- final private boolean jj_3_1128() {
- if (jj_scan_token(EMPTY)) return true;
- return false;
- }
-
- final private boolean jj_3_1127() {
+ final private boolean jj_3_1150() {
if (jj_scan_token(UNKNOWN)) return true;
return false;
}
- final private boolean jj_3_1126() {
+ final private boolean jj_3_1149() {
if (jj_scan_token(FALSE)) return true;
return false;
}
- final private boolean jj_3_1125() {
+ final private boolean jj_3_1148() {
if (jj_scan_token(TRUE)) return true;
return false;
}
- final private boolean jj_3_1124() {
+ final private boolean jj_3_1147() {
if (jj_scan_token(NULL)) return true;
return false;
}
- final private boolean jj_3_542() {
- if (jj_scan_token(LOCAL)) return true;
+ final private boolean jj_3_579() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_576()) {
+ jj_scanpos = xsp;
+ if (jj_3_577()) return true;
+ }
return false;
}
- final private boolean jj_3_555() {
- if (jj_scan_token(TIME)) return true;
- return false;
- }
-
- final private boolean jj_3_1123() {
+ final private boolean jj_3_1146() {
if (jj_scan_token(JSON)) return true;
return false;
}
- final private boolean jj_3_209() {
- if (jj_scan_token(AS)) return true;
+ final private boolean jj_3R_164() {
+ if (jj_3R_374()) return true;
return false;
}
- final private boolean jj_3_1122() {
+ final private boolean jj_3_1159() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1147()) {
+ jj_scanpos = xsp;
+ if (jj_3_1148()) {
+ jj_scanpos = xsp;
+ if (jj_3_1149()) {
+ jj_scanpos = xsp;
+ if (jj_3_1150()) {
+ jj_scanpos = xsp;
+ if (jj_3_1151()) {
+ jj_scanpos = xsp;
+ if (jj_3_1152()) {
+ jj_scanpos = xsp;
+ if (jj_3_1153()) {
+ jj_scanpos = xsp;
+ if (jj_3_1154()) {
+ jj_scanpos = xsp;
+ if (jj_3_1155()) {
+ jj_scanpos = xsp;
+ if (jj_3_1156()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1145() {
if (jj_scan_token(JSON)) return true;
if (jj_scan_token(SCALAR)) return true;
return false;
}
- final private boolean jj_3_1136() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1124()) {
- jj_scanpos = xsp;
- if (jj_3_1125()) {
- jj_scanpos = xsp;
- if (jj_3_1126()) {
- jj_scanpos = xsp;
- if (jj_3_1127()) {
- jj_scanpos = xsp;
- if (jj_3_1128()) {
- jj_scanpos = xsp;
- if (jj_3_1129()) {
- jj_scanpos = xsp;
- if (jj_3_1130()) {
- jj_scanpos = xsp;
- if (jj_3_1131()) {
- jj_scanpos = xsp;
- if (jj_3_1132()) {
- jj_scanpos = xsp;
- if (jj_3_1133()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_211() {
- if (jj_3R_145()) return true;
- return false;
- }
-
- final private boolean jj_3_1121() {
+ final private boolean jj_3_1144() {
if (jj_scan_token(JSON)) return true;
if (jj_scan_token(ARRAY)) return true;
return false;
}
- final private boolean jj_3_210() {
+ final private boolean jj_3R_230() {
+ if (jj_scan_token(ARRAY)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_209()) jj_scanpos = xsp;
- if (jj_3R_84()) return true;
+ if (jj_3_579()) {
+ jj_scanpos = xsp;
+ if (jj_3_580()) return true;
+ }
return false;
}
- final private boolean jj_3_1120() {
+ final private boolean jj_3_1143() {
if (jj_scan_token(JSON)) return true;
if (jj_scan_token(OBJECT)) return true;
return false;
}
- final private boolean jj_3_208() {
- if (jj_3R_158()) return true;
- return false;
- }
-
- final private boolean jj_3_1119() {
+ final private boolean jj_3_1142() {
if (jj_scan_token(JSON)) return true;
if (jj_scan_token(VALUE)) return true;
return false;
}
- final private boolean jj_3_207() {
- if (jj_3R_157()) return true;
+ final private boolean jj_3_233() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_1118() {
+ final private boolean jj_3_1141() {
if (jj_scan_token(EMPTY)) return true;
return false;
}
- final private boolean jj_3_1117() {
+ final private boolean jj_3_1140() {
if (jj_scan_token(A)) return true;
if (jj_scan_token(SET)) return true;
return false;
}
- final private boolean jj_3_1116() {
+ final private boolean jj_3_1139() {
if (jj_scan_token(UNKNOWN)) return true;
return false;
}
- final private boolean jj_3_554() {
- if (jj_scan_token(DATE)) return true;
- return false;
- }
-
- final private boolean jj_3_1115() {
+ final private boolean jj_3_1138() {
if (jj_scan_token(FALSE)) return true;
return false;
}
- final private boolean jj_3R_293() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_554()) {
- jj_scanpos = xsp;
- if (jj_3_555()) {
- jj_scanpos = xsp;
- if (jj_3_556()) {
- jj_scanpos = xsp;
- if (jj_3_557()) return true;
- }
- }
- }
- if (jj_3R_220()) return true;
- return false;
- }
-
- final private boolean jj_3_1114() {
+ final private boolean jj_3_1137() {
if (jj_scan_token(TRUE)) return true;
return false;
}
- final private boolean jj_3_1113() {
+ final private boolean jj_3_231() {
+ if (jj_scan_token(MEASURE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1136() {
if (jj_scan_token(NULL)) return true;
return false;
}
- final private boolean jj_3R_114() {
- if (jj_scan_token(DELETE)) return true;
- if (jj_scan_token(FROM)) return true;
+ final private boolean jj_3_232() {
+ if (jj_scan_token(AS)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_231()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_573() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1158() {
+ if (jj_scan_token(NOT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1136()) {
+ jj_scanpos = xsp;
+ if (jj_3_1137()) {
+ jj_scanpos = xsp;
+ if (jj_3_1138()) {
+ jj_scanpos = xsp;
+ if (jj_3_1139()) {
+ jj_scanpos = xsp;
+ if (jj_3_1140()) {
+ jj_scanpos = xsp;
+ if (jj_3_1141()) {
+ jj_scanpos = xsp;
+ if (jj_3_1142()) {
+ jj_scanpos = xsp;
+ if (jj_3_1143()) {
+ jj_scanpos = xsp;
+ if (jj_3_1144()) {
+ jj_scanpos = xsp;
+ if (jj_3_1145()) {
+ jj_scanpos = xsp;
+ if (jj_3_1146()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_234() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_232()) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3_233()) {
+ jj_scanpos = xsp;
+ if (jj_3R_164()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1157() {
+ if (jj_scan_token(A)) return true;
+ if (jj_scan_token(SET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_575() {
+ if (jj_scan_token(LBRACKET)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_572() {
+ if (jj_scan_token(TIMESTAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_145() {
+ if (jj_3R_369()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_218() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1160()) {
+ jj_scanpos = xsp;
+ if (jj_3_1161()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1160() {
+ if (jj_scan_token(IS)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1157()) {
+ jj_scanpos = xsp;
+ if (jj_3_1158()) {
+ jj_scanpos = xsp;
+ if (jj_3_1159()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_574() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_254()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_558() {
+ if (jj_scan_token(LOCAL)) return true;
return false;
}
final private boolean jj_3_1135() {
- if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(UNIQUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1134() {
+ if (jj_scan_token(EXISTS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_229() {
+ if (jj_scan_token(MULTISET)) return true;
Token xsp;
xsp = jj_scanpos;
+ if (jj_3_574()) {
+ jj_scanpos = xsp;
+ if (jj_3_575()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_571() {
+ if (jj_scan_token(DATETIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1133() {
+ if (jj_scan_token(NOT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1132() {
+ if (jj_scan_token(MINUS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_426() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1131()) {
+ jj_scanpos = xsp;
+ if (jj_3_1132()) {
+ jj_scanpos = xsp;
+ if (jj_3_1133()) {
+ jj_scanpos = xsp;
+ if (jj_3_1134()) {
+ jj_scanpos = xsp;
+ if (jj_3_1135()) return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1131() {
+ if (jj_scan_token(PLUS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_230() {
+ if (jj_scan_token(VALUES)) return true;
+ if (jj_3R_163()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_557() {
+ if (jj_scan_token(LOCAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_570() {
+ if (jj_scan_token(TIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_229() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(VALUES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1130() {
+ if (jj_3R_344()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1129() {
+ if (jj_scan_token(IMMEDIATELY)) return true;
+ if (jj_scan_token(SUCCEEDS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1128() {
+ if (jj_scan_token(IMMEDIATELY)) return true;
+ if (jj_scan_token(PRECEDES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1127() {
+ if (jj_scan_token(SUCCEEDS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_228() {
+ if (jj_3R_125()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1126() {
+ if (jj_scan_token(PRECEDES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1125() {
+ if (jj_scan_token(AMPERSAND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1124() {
+ if (jj_scan_token(EQUALS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_569() {
+ if (jj_scan_token(DATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1123() {
+ if (jj_scan_token(CARET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_297() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_569()) {
+ jj_scanpos = xsp;
+ if (jj_3_570()) {
+ jj_scanpos = xsp;
+ if (jj_3_571()) {
+ jj_scanpos = xsp;
+ if (jj_3_572()) return true;
+ }
+ }
+ }
+ if (jj_3R_224()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1122() {
+ if (jj_scan_token(OVERLAPS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1121() {
+ if (jj_scan_token(CONTAINS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1120() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(SUBMULTISET)) return true;
+ if (jj_scan_token(OF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1119() {
+ if (jj_scan_token(SUBMULTISET)) return true;
+ if (jj_scan_token(OF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1118() {
+ if (jj_scan_token(MEMBER)) return true;
+ if (jj_scan_token(OF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1117() {
+ if (jj_scan_token(IS)) return true;
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(DISTINCT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1116() {
+ if (jj_scan_token(IS)) return true;
+ if (jj_scan_token(DISTINCT)) return true;
+ if (jj_scan_token(FROM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_161() {
+ if (jj_scan_token(WHEN)) return true;
+ if (jj_scan_token(NOT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1115() {
+ if (jj_scan_token(OR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1114() {
+ if (jj_scan_token(AND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1113() {
+ if (jj_scan_token(CONCAT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1112() {
+ if (jj_scan_token(PERCENT_REMAINDER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1111() {
+ if (jj_scan_token(SLASH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_568() {
+ if (jj_scan_token(TIMESTAMP)) return true;
+ if (jj_scan_token(WITH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1110() {
+ if (jj_scan_token(STAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1109() {
+ if (jj_scan_token(MINUS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1108() {
+ if (jj_scan_token(PLUS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_567() {
+ if (jj_scan_token(TIME)) return true;
+ if (jj_scan_token(WITH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_227() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1107() {
+ if (jj_scan_token(NE2)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1106() {
+ if (jj_scan_token(NE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_566() {
+ if (jj_scan_token(TIMESTAMP)) return true;
+ if (jj_3R_251()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1105() {
+ if (jj_scan_token(GE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1104() {
+ if (jj_scan_token(LE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1103() {
+ if (jj_scan_token(LT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1102() {
+ if (jj_scan_token(GT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1101() {
+ if (jj_scan_token(LEFTSHIFT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_217() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1100()) {
+ jj_scanpos = xsp;
+ if (jj_3_1101()) {
+ jj_scanpos = xsp;
+ if (jj_3_1102()) {
+ jj_scanpos = xsp;
+ if (jj_3_1103()) {
+ jj_scanpos = xsp;
+ if (jj_3_1104()) {
+ jj_scanpos = xsp;
+ if (jj_3_1105()) {
+ jj_scanpos = xsp;
+ if (jj_3_1106()) {
+ jj_scanpos = xsp;
+ if (jj_3_1107()) {
+ jj_scanpos = xsp;
+ if (jj_3_1108()) {
+ jj_scanpos = xsp;
+ if (jj_3_1109()) {
+ jj_scanpos = xsp;
+ if (jj_3_1110()) {
+ jj_scanpos = xsp;
+ if (jj_3_1111()) {
+ jj_scanpos = xsp;
+ if (jj_3_1112()) {
+ jj_scanpos = xsp;
if (jj_3_1113()) {
jj_scanpos = xsp;
if (jj_3_1114()) {
@@ -25823,100 +25899,47 @@
jj_scanpos = xsp;
if (jj_3_1122()) {
jj_scanpos = xsp;
- if (jj_3_1123()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_1134() {
- if (jj_scan_token(A)) return true;
- if (jj_scan_token(SET)) return true;
- return false;
- }
-
- final private boolean jj_3R_214() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1137()) {
+ if (jj_3_1123()) {
jj_scanpos = xsp;
- if (jj_3_1138()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1137() {
- if (jj_scan_token(IS)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1134()) {
+ if (jj_3_1124()) {
jj_scanpos = xsp;
- if (jj_3_1135()) {
+ if (jj_3_1125()) {
jj_scanpos = xsp;
- if (jj_3_1136()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_553() {
- if (jj_scan_token(TIMESTAMP)) return true;
- if (jj_scan_token(WITH)) return true;
- return false;
- }
-
- final private boolean jj_3_552() {
- if (jj_scan_token(TIME)) return true;
- if (jj_scan_token(WITH)) return true;
- return false;
- }
-
- final private boolean jj_3_1112() {
- if (jj_scan_token(UNIQUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1111() {
- if (jj_scan_token(EXISTS)) return true;
- return false;
- }
-
- final private boolean jj_3_1110() {
- if (jj_scan_token(NOT)) return true;
- return false;
- }
-
- final private boolean jj_3_551() {
- if (jj_scan_token(TIMESTAMP)) return true;
- if (jj_3R_247()) return true;
- return false;
- }
-
- final private boolean jj_3_1109() {
- if (jj_scan_token(MINUS)) return true;
- return false;
- }
-
- final private boolean jj_3R_414() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1108()) {
+ if (jj_3_1126()) {
jj_scanpos = xsp;
- if (jj_3_1109()) {
+ if (jj_3_1127()) {
jj_scanpos = xsp;
- if (jj_3_1110()) {
+ if (jj_3_1128()) {
jj_scanpos = xsp;
- if (jj_3_1111()) {
+ if (jj_3_1129()) {
jj_scanpos = xsp;
- if (jj_3_1112()) return true;
+ if (jj_3_1130()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
}
@@ -25924,211 +25947,778 @@
return false;
}
- final private boolean jj_3_1108() {
- if (jj_scan_token(PLUS)) return true;
- return false;
- }
-
- final private boolean jj_3_550() {
+ final private boolean jj_3_565() {
if (jj_scan_token(UUID)) return true;
- if (jj_3R_247()) return true;
- return false;
- }
-
- final private boolean jj_3_206() {
- if (jj_3R_159()) return true;
- return false;
- }
-
- final private boolean jj_3_549() {
- if (jj_scan_token(TIME)) return true;
- if (jj_3R_247()) return true;
- return false;
- }
-
- final private boolean jj_3_1107() {
- if (jj_3R_340()) return true;
- return false;
- }
-
- final private boolean jj_3_1106() {
- if (jj_scan_token(IMMEDIATELY)) return true;
- if (jj_scan_token(SUCCEEDS)) return true;
- return false;
- }
-
- final private boolean jj_3_1105() {
- if (jj_scan_token(IMMEDIATELY)) return true;
- if (jj_scan_token(PRECEDES)) return true;
- return false;
- }
-
- final private boolean jj_3_1104() {
- if (jj_scan_token(SUCCEEDS)) return true;
- return false;
- }
-
- final private boolean jj_3_205() {
- if (jj_3R_158()) return true;
- return false;
- }
-
- final private boolean jj_3_548() {
- if (jj_scan_token(DATETIME)) return true;
- if (jj_3R_247()) return true;
- return false;
- }
-
- final private boolean jj_3_1103() {
- if (jj_scan_token(PRECEDES)) return true;
- return false;
- }
-
- final private boolean jj_3_204() {
- if (jj_3R_157()) return true;
- return false;
- }
-
- final private boolean jj_3_1102() {
- if (jj_scan_token(EQUALS)) return true;
- return false;
- }
-
- final private boolean jj_3_1101() {
- if (jj_scan_token(OVERLAPS)) return true;
+ if (jj_3R_251()) return true;
return false;
}
final private boolean jj_3_1100() {
- if (jj_scan_token(CONTAINS)) return true;
+ if (jj_scan_token(EQ)) return true;
return false;
}
- final private boolean jj_3_547() {
- if (jj_scan_token(DATE)) return true;
- if (jj_3R_247()) return true;
+ final private boolean jj_3R_162() {
+ if (jj_scan_token(WHEN)) return true;
+ if (jj_scan_token(MATCHED)) return true;
return false;
}
- final private boolean jj_3_1099() {
- if (jj_scan_token(NOT)) return true;
- if (jj_scan_token(SUBMULTISET)) return true;
- if (jj_scan_token(OF)) return true;
- return false;
- }
-
- final private boolean jj_3_1098() {
- if (jj_scan_token(SUBMULTISET)) return true;
- if (jj_scan_token(OF)) return true;
- return false;
- }
-
- final private boolean jj_3_203() {
- if (jj_scan_token(UPSERT)) return true;
- return false;
- }
-
- final private boolean jj_3_1097() {
- if (jj_scan_token(MEMBER)) return true;
- if (jj_scan_token(OF)) return true;
- return false;
- }
-
- final private boolean jj_3_1096() {
- if (jj_scan_token(IS)) return true;
- if (jj_scan_token(NOT)) return true;
- if (jj_scan_token(DISTINCT)) return true;
- return false;
- }
-
- final private boolean jj_3_202() {
- if (jj_scan_token(INSERT)) return true;
+ final private boolean jj_3_564() {
+ if (jj_scan_token(TIME)) return true;
+ if (jj_3R_251()) return true;
return false;
}
final private boolean jj_3_1095() {
- if (jj_scan_token(IS)) return true;
if (jj_scan_token(DISTINCT)) return true;
- if (jj_scan_token(FROM)) return true;
return false;
}
final private boolean jj_3_1094() {
- if (jj_scan_token(OR)) return true;
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1096() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1094()) {
+ jj_scanpos = xsp;
+ if (jj_3_1095()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_563() {
+ if (jj_scan_token(DATETIME)) return true;
+ if (jj_3R_251()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_562() {
+ if (jj_scan_token(DATE)) return true;
+ if (jj_3R_251()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1092() {
+ if (jj_scan_token(DISTINCT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1099() {
+ if (jj_scan_token(EXCEPT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1096()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1091() {
+ if (jj_scan_token(ALL)) return true;
return false;
}
final private boolean jj_3_1093() {
- if (jj_scan_token(AND)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1091()) {
+ jj_scanpos = xsp;
+ if (jj_3_1092()) return true;
+ }
return false;
}
- final private boolean jj_3_546() {
+ final private boolean jj_3_224() {
+ if (jj_3R_161()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_226() {
+ if (jj_3R_161()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_561() {
if (jj_scan_token(LBRACE_TS)) return true;
if (jj_scan_token(QUOTED_STRING)) return true;
return false;
}
- final private boolean jj_3_1092() {
- if (jj_scan_token(CONCAT)) return true;
+ final private boolean jj_3_225() {
+ if (jj_3R_162()) return true;
return false;
}
- final private boolean jj_3R_113() {
+ final private boolean jj_3_1089() {
+ if (jj_scan_token(DISTINCT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1098() {
+ if (jj_scan_token(INTERSECT)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_202()) {
+ if (jj_3_1093()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1088() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1090() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1088()) {
jj_scanpos = xsp;
- if (jj_3_203()) return true;
+ if (jj_3_1089()) return true;
}
- if (jj_3R_357()) return true;
return false;
}
- final private boolean jj_3_1091() {
- if (jj_scan_token(PERCENT_REMAINDER)) return true;
+ final private boolean jj_3_222() {
+ if (jj_scan_token(AS)) return true;
return false;
}
- final private boolean jj_3_545() {
+ final private boolean jj_3_223() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_222()) jj_scanpos = xsp;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_560() {
if (jj_scan_token(LBRACE_T)) return true;
if (jj_scan_token(QUOTED_STRING)) return true;
return false;
}
- final private boolean jj_3_1090() {
- if (jj_scan_token(SLASH)) return true;
+ final private boolean jj_3_221() {
+ if (jj_3R_159()) return true;
return false;
}
- final private boolean jj_3_1089() {
- if (jj_scan_token(STAR)) return true;
+ final private boolean jj_3_1097() {
+ if (jj_scan_token(UNION)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1090()) jj_scanpos = xsp;
return false;
}
- final private boolean jj_3_1088() {
- if (jj_scan_token(MINUS)) return true;
+ final private boolean jj_3_220() {
+ if (jj_3R_158()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_117() {
+ if (jj_scan_token(MERGE)) return true;
+ if (jj_scan_token(INTO)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_344() {
+ if (jj_scan_token(MULTISET)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1097()) {
+ jj_scanpos = xsp;
+ if (jj_3_1098()) {
+ jj_scanpos = xsp;
+ if (jj_3_1099()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_249() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_559()) {
+ jj_scanpos = xsp;
+ if (jj_3_560()) {
+ jj_scanpos = xsp;
+ if (jj_3_561()) {
+ jj_scanpos = xsp;
+ if (jj_3_562()) {
+ jj_scanpos = xsp;
+ if (jj_3_563()) {
+ jj_scanpos = xsp;
+ if (jj_3_564()) {
+ jj_scanpos = xsp;
+ if (jj_3_565()) {
+ jj_scanpos = xsp;
+ if (jj_3_566()) {
+ jj_scanpos = xsp;
+ if (jj_3_567()) {
+ jj_scanpos = xsp;
+ if (jj_3_568()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_559() {
+ if (jj_scan_token(LBRACE_D)) return true;
+ if (jj_scan_token(QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_343() {
+ return false;
+ }
+
+ final private boolean jj_3_1084() {
+ if (jj_scan_token(DISTINCT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1083() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1082() {
+ if (jj_scan_token(SET_MINUS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_556() {
+ if (jj_scan_token(BIG_QUERY_DOUBLE_QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1081() {
+ if (jj_scan_token(EXCEPT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_555() {
+ if (jj_scan_token(BIG_QUERY_QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_342() {
+ return false;
+ }
+
+ final private boolean jj_3_219() {
+ if (jj_3R_146()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1080() {
+ if (jj_scan_token(DISTINCT)) return true;
return false;
}
final private boolean jj_3_1087() {
- if (jj_scan_token(PLUS)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1081()) {
+ jj_scanpos = xsp;
+ if (jj_3_1082()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_1083()) {
+ jj_scanpos = xsp;
+ if (jj_3_1084()) {
+ jj_scanpos = xsp;
+ if (jj_3R_343()) return true;
+ }
+ }
return false;
}
- final private boolean jj_3R_245() {
+ final private boolean jj_3_218() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1079() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_251() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_544()) {
+ if (jj_3_554()) {
jj_scanpos = xsp;
+ if (jj_3_555()) {
+ jj_scanpos = xsp;
+ if (jj_3_556()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_554() {
+ if (jj_scan_token(QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_341() {
+ return false;
+ }
+
+ final private boolean jj_3_1078() {
+ if (jj_scan_token(DISTINCT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1086() {
+ if (jj_scan_token(INTERSECT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1079()) {
+ jj_scanpos = xsp;
+ if (jj_3_1080()) {
+ jj_scanpos = xsp;
+ if (jj_3R_342()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_216() {
+ if (jj_scan_token(AS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1077() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_217() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_216()) jj_scanpos = xsp;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_215() {
+ if (jj_3R_159()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_214() {
+ if (jj_3R_158()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1085() {
+ if (jj_scan_token(UNION)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1077()) {
+ jj_scanpos = xsp;
+ if (jj_3_1078()) {
+ jj_scanpos = xsp;
+ if (jj_3R_341()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1067() {
+ if (jj_scan_token(TRUNCATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_348() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1085()) {
+ jj_scanpos = xsp;
+ if (jj_3_1086()) {
+ jj_scanpos = xsp;
+ if (jj_3_1087()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_116() {
+ if (jj_scan_token(UPDATE)) return true;
+ if (jj_3R_171()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_553() {
+ if (jj_scan_token(BIG_QUERY_QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1066() {
+ if (jj_scan_token(RIGHT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1073() {
+ if (jj_3R_174()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1072() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1065() {
+ if (jj_scan_token(LEFT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_552() {
+ if (jj_scan_token(BIG_QUERY_DOUBLE_QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1071() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(STAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_211() {
+ if (jj_scan_token(AS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1070() {
+ if (jj_3R_339()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_213() {
+ if (jj_3R_146()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_212() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_211()) jj_scanpos = xsp;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1069() {
+ if (jj_3R_338()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_210() {
+ if (jj_3R_159()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_209() {
+ if (jj_3R_158()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1068() {
+ if (jj_3R_337()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1064() {
+ if (jj_scan_token(INSERT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_551() {
+ if (jj_scan_token(C_STYLE_ESCAPED_STRING_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_340() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1064()) {
+ jj_scanpos = xsp;
+ if (jj_3_1065()) {
+ jj_scanpos = xsp;
+ if (jj_3_1066()) {
+ jj_scanpos = xsp;
+ if (jj_3_1067()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_115() {
+ if (jj_scan_token(DELETE)) return true;
+ if (jj_scan_token(FROM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1076() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_340()) {
+ jj_scanpos = xsp;
+ if (jj_3_1068()) {
+ jj_scanpos = xsp;
+ if (jj_3_1069()) {
+ jj_scanpos = xsp;
+ if (jj_3_1070()) return true;
+ }
+ }
+ }
+ xsp = jj_scanpos;
+ if (jj_3_1071()) {
+ jj_scanpos = xsp;
+ if (jj_3_1072()) {
+ jj_scanpos = xsp;
+ if (jj_3_1073()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1075() {
+ if (jj_scan_token(CONVERT)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_548() {
+ if (jj_scan_token(UESCAPE)) return true;
+ if (jj_scan_token(QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1074() {
+ if (jj_3R_303()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_406() {
+ if (jj_3R_306()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_405() {
+ if (jj_3R_304()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_253() {
+ if (jj_scan_token(QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_208() {
+ if (jj_3R_160()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_207() {
+ if (jj_3R_159()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_404() {
+ if (jj_3R_307()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_206() {
+ if (jj_3R_158()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_205() {
+ if (jj_scan_token(UPSERT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_403() {
+ if (jj_3R_305()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_204() {
+ if (jj_scan_token(INSERT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_402() {
+ if (jj_3R_299()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_114() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_204()) {
+ jj_scanpos = xsp;
+ if (jj_3_205()) return true;
+ }
+ if (jj_3R_361()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_401() {
+ if (jj_3R_301()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_547() {
+ if (jj_scan_token(UNICODE_STRING_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_546() {
+ if (jj_scan_token(QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_545() {
+ if (jj_scan_token(PREFIXED_STRING_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_400() {
+ if (jj_3R_302()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_550() {
+ Token xsp;
+ xsp = jj_scanpos;
if (jj_3_545()) {
jj_scanpos = xsp;
if (jj_3_546()) {
jj_scanpos = xsp;
- if (jj_3_547()) {
+ if (jj_3_547()) return true;
+ }
+ }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_253()) { jj_scanpos = xsp; break; }
+ }
+ xsp = jj_scanpos;
+ if (jj_3_548()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3R_399() {
+ if (jj_3R_298()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_398() {
+ if (jj_3R_296()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_252() {
+ if (jj_scan_token(QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_228() {
+ if (jj_scan_token(LBRACE_FN)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_398()) {
jj_scanpos = xsp;
- if (jj_3_548()) {
+ if (jj_3R_399()) {
jj_scanpos = xsp;
+ if (jj_3R_400()) {
+ jj_scanpos = xsp;
+ if (jj_3R_401()) {
+ jj_scanpos = xsp;
+ if (jj_3R_402()) {
+ jj_scanpos = xsp;
+ if (jj_3R_403()) {
+ jj_scanpos = xsp;
+ if (jj_3R_404()) {
+ jj_scanpos = xsp;
+ if (jj_3R_405()) {
+ jj_scanpos = xsp;
+ if (jj_3R_406()) {
+ jj_scanpos = xsp;
+ if (jj_3_1074()) {
+ jj_scanpos = xsp;
+ if (jj_3_1075()) {
+ jj_scanpos = xsp;
+ if (jj_3_1076()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_203() {
+ if (jj_3R_157()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_201() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_157()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1063() {
+ if (jj_scan_token(USER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1062() {
+ if (jj_scan_token(SYSTEM_USER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_202() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_157()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1061() {
+ if (jj_scan_token(SESSION_USER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1060() {
+ if (jj_scan_token(LOCALTIMESTAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_139() {
+ Token xsp;
+ xsp = jj_scanpos;
if (jj_3_549()) {
jj_scanpos = xsp;
if (jj_3_550()) {
@@ -26142,331 +26732,347 @@
}
}
}
- }
- }
- }
- }
- }
return false;
}
- final private boolean jj_3_544() {
- if (jj_scan_token(LBRACE_D)) return true;
- if (jj_scan_token(QUOTED_STRING)) return true;
- return false;
- }
-
- final private boolean jj_3_1086() {
- if (jj_scan_token(NE2)) return true;
- return false;
- }
-
- final private boolean jj_3_1085() {
- if (jj_scan_token(NE)) return true;
- return false;
- }
-
- final private boolean jj_3_1084() {
- if (jj_scan_token(GE)) return true;
- return false;
- }
-
- final private boolean jj_3_1083() {
- if (jj_scan_token(LE)) return true;
- return false;
- }
-
- final private boolean jj_3_1082() {
- if (jj_scan_token(LT)) return true;
- return false;
- }
-
- final private boolean jj_3_1081() {
- if (jj_scan_token(GT)) return true;
- return false;
- }
-
- final private boolean jj_3R_213() {
+ final private boolean jj_3_549() {
+ if (jj_scan_token(BINARY_STRING_LITERAL)) return true;
Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1080()) {
- jj_scanpos = xsp;
- if (jj_3_1081()) {
- jj_scanpos = xsp;
- if (jj_3_1082()) {
- jj_scanpos = xsp;
- if (jj_3_1083()) {
- jj_scanpos = xsp;
- if (jj_3_1084()) {
- jj_scanpos = xsp;
- if (jj_3_1085()) {
- jj_scanpos = xsp;
- if (jj_3_1086()) {
- jj_scanpos = xsp;
- if (jj_3_1087()) {
- jj_scanpos = xsp;
- if (jj_3_1088()) {
- jj_scanpos = xsp;
- if (jj_3_1089()) {
- jj_scanpos = xsp;
- if (jj_3_1090()) {
- jj_scanpos = xsp;
- if (jj_3_1091()) {
- jj_scanpos = xsp;
- if (jj_3_1092()) {
- jj_scanpos = xsp;
- if (jj_3_1093()) {
- jj_scanpos = xsp;
- if (jj_3_1094()) {
- jj_scanpos = xsp;
- if (jj_3_1095()) {
- jj_scanpos = xsp;
- if (jj_3_1096()) {
- jj_scanpos = xsp;
- if (jj_3_1097()) {
- jj_scanpos = xsp;
- if (jj_3_1098()) {
- jj_scanpos = xsp;
- if (jj_3_1099()) {
- jj_scanpos = xsp;
- if (jj_3_1100()) {
- jj_scanpos = xsp;
- if (jj_3_1101()) {
- jj_scanpos = xsp;
- if (jj_3_1102()) {
- jj_scanpos = xsp;
- if (jj_3_1103()) {
- jj_scanpos = xsp;
- if (jj_3_1104()) {
- jj_scanpos = xsp;
- if (jj_3_1105()) {
- jj_scanpos = xsp;
- if (jj_3_1106()) {
- jj_scanpos = xsp;
- if (jj_3_1107()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_252()) { jj_scanpos = xsp; break; }
}
return false;
}
- final private boolean jj_3_1080() {
- if (jj_scan_token(EQ)) return true;
+ final private boolean jj_3_1059() {
+ if (jj_scan_token(LOCALTIME)) return true;
return false;
}
- final private boolean jj_3_541() {
- if (jj_scan_token(BIG_QUERY_DOUBLE_QUOTED_STRING)) return true;
+ final private boolean jj_3_1058() {
+ if (jj_scan_token(CURRENT_USER)) return true;
return false;
}
- final private boolean jj_3_1075() {
- if (jj_scan_token(DISTINCT)) return true;
+ final private boolean jj_3_1057() {
+ if (jj_scan_token(CURRENT_TIMESTAMP)) return true;
return false;
}
- final private boolean jj_3_1074() {
- if (jj_scan_token(ALL)) return true;
+ final private boolean jj_3_1056() {
+ if (jj_scan_token(CURRENT_TIME)) return true;
return false;
}
- final private boolean jj_3_1076() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1074()) {
- jj_scanpos = xsp;
- if (jj_3_1075()) return true;
- }
+ final private boolean jj_3_1055() {
+ if (jj_scan_token(CURRENT_SCHEMA)) return true;
return false;
}
- final private boolean jj_3_540() {
- if (jj_scan_token(BIG_QUERY_QUOTED_STRING)) return true;
+ final private boolean jj_3_1054() {
+ if (jj_scan_token(CURRENT_ROLE)) return true;
return false;
}
- final private boolean jj_3_1072() {
- if (jj_scan_token(DISTINCT)) return true;
- return false;
- }
-
- final private boolean jj_3_1079() {
- if (jj_scan_token(EXCEPT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1076()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3R_247() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_539()) {
- jj_scanpos = xsp;
- if (jj_3_540()) {
- jj_scanpos = xsp;
- if (jj_3_541()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_539() {
- if (jj_scan_token(QUOTED_STRING)) return true;
- return false;
- }
-
- final private boolean jj_3_1071() {
- if (jj_scan_token(ALL)) return true;
- return false;
- }
-
- final private boolean jj_3_1073() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1071()) {
- jj_scanpos = xsp;
- if (jj_3_1072()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_201() {
- if (jj_3R_156()) return true;
- return false;
- }
-
- final private boolean jj_3_1069() {
- if (jj_scan_token(DISTINCT)) return true;
- return false;
- }
-
- final private boolean jj_3_1078() {
- if (jj_scan_token(INTERSECT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1073()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_1068() {
- if (jj_scan_token(ALL)) return true;
- return false;
- }
-
- final private boolean jj_3_1070() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1068()) {
- jj_scanpos = xsp;
- if (jj_3_1069()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_199() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_156()) return true;
- return false;
- }
-
- final private boolean jj_3_1077() {
- if (jj_scan_token(UNION)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1070()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_200() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_156()) return true;
- return false;
- }
-
- final private boolean jj_3R_340() {
- if (jj_scan_token(MULTISET)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1077()) {
- jj_scanpos = xsp;
- if (jj_3_1078()) {
- jj_scanpos = xsp;
- if (jj_3_1079()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_538() {
- if (jj_scan_token(BIG_QUERY_QUOTED_STRING)) return true;
- return false;
- }
-
- final private boolean jj_3R_339() {
- return false;
- }
-
- final private boolean jj_3R_155() {
+ final private boolean jj_3R_156() {
if (jj_scan_token(ORDER)) return true;
if (jj_scan_token(BY)) return true;
return false;
}
- final private boolean jj_3_1064() {
- if (jj_scan_token(DISTINCT)) return true;
+ final private boolean jj_3_1053() {
+ if (jj_scan_token(CURRENT_PATH)) return true;
return false;
}
- final private boolean jj_3_1063() {
- if (jj_scan_token(ALL)) return true;
+ final private boolean jj_3_1052() {
+ if (jj_scan_token(CURRENT_DEFAULT_TRANSFORM_GROUP)) return true;
return false;
}
- final private boolean jj_3R_410() {
+ final private boolean jj_3_1051() {
+ if (jj_scan_token(CURRENT_DATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1050() {
+ if (jj_scan_token(CURRENT_CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_422() {
+ return false;
+ }
+
+ final private boolean jj_3_200() {
+ if (jj_3R_156()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_234() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1050()) {
+ jj_scanpos = xsp;
+ if (jj_3_1051()) {
+ jj_scanpos = xsp;
+ if (jj_3_1052()) {
+ jj_scanpos = xsp;
+ if (jj_3_1053()) {
+ jj_scanpos = xsp;
+ if (jj_3_1054()) {
+ jj_scanpos = xsp;
+ if (jj_3_1055()) {
+ jj_scanpos = xsp;
+ if (jj_3_1056()) {
+ jj_scanpos = xsp;
+ if (jj_3_1057()) {
+ jj_scanpos = xsp;
+ if (jj_3_1058()) {
+ jj_scanpos = xsp;
+ if (jj_3_1059()) {
+ jj_scanpos = xsp;
+ if (jj_3_1060()) {
+ jj_scanpos = xsp;
+ if (jj_3_1061()) {
+ jj_scanpos = xsp;
+ if (jj_3_1062()) {
+ jj_scanpos = xsp;
+ if (jj_3_1063()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_421() {
+ return false;
+ }
+
+ final private boolean jj_3_199() {
+ if (jj_scan_token(PARTITION)) return true;
+ if (jj_scan_token(BY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1049() {
+ if (jj_scan_token(YEAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1048() {
+ if (jj_scan_token(VAR_SAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_357() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_199()) {
+ jj_scanpos = xsp;
+ if (jj_3R_421()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_200()) {
+ jj_scanpos = xsp;
+ if (jj_3R_422()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1047() {
+ if (jj_scan_token(VAR_POP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1046() {
+ if (jj_scan_token(USER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1045() {
+ if (jj_scan_token(TRUNCATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1044() {
+ if (jj_scan_token(UPPER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1043() {
+ if (jj_scan_token(SUM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1042() {
+ if (jj_scan_token(STDDEV_SAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_544() {
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1041() {
+ if (jj_scan_token(STDDEV_POP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1040() {
+ if (jj_scan_token(SQRT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_543() {
+ if (jj_scan_token(UNKNOWN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1039() {
+ if (jj_scan_token(SOME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1038() {
+ if (jj_scan_token(SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_542() {
+ if (jj_scan_token(FALSE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1037() {
+ if (jj_scan_token(ROW_NUMBER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1036() {
+ if (jj_scan_token(RIGHT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_248() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_541()) {
+ jj_scanpos = xsp;
+ if (jj_3_542()) {
+ jj_scanpos = xsp;
+ if (jj_3_543()) {
+ jj_scanpos = xsp;
+ if (jj_3_544()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_541() {
+ if (jj_scan_token(TRUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1035() {
+ if (jj_scan_token(REGR_SYY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_89() {
+ if (jj_3R_80()) return true;
+ if (jj_3R_357()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1034() {
+ if (jj_scan_token(REGR_SXX)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1033() {
+ if (jj_scan_token(REGR_COUNT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1032() {
+ if (jj_scan_token(RANK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1031() {
+ if (jj_scan_token(POWER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1030() {
+ if (jj_scan_token(PERCENT_RANK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1029() {
+ if (jj_scan_token(PERCENTILE_DISC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_356() {
+ return false;
+ }
+
+ final private boolean jj_3_1028() {
+ if (jj_scan_token(PERCENTILE_CONT)) return true;
return false;
}
final private boolean jj_3_198() {
- if (jj_3R_155()) return true;
+ if (jj_3R_156()) return true;
return false;
}
- final private boolean jj_3R_409() {
+ final private boolean jj_3_1027() {
+ if (jj_scan_token(OCTET_LENGTH)) return true;
return false;
}
- final private boolean jj_3_537() {
- if (jj_scan_token(BIG_QUERY_DOUBLE_QUOTED_STRING)) return true;
+ final private boolean jj_3_1026() {
+ if (jj_scan_token(NULLIF)) return true;
return false;
}
- final private boolean jj_3_1062() {
- if (jj_scan_token(SET_MINUS)) return true;
+ final private boolean jj_3_540() {
+ if (jj_3R_200()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1025() {
+ if (jj_scan_token(NTILE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_355() {
+ return false;
+ }
+
+ final private boolean jj_3_1024() {
+ if (jj_scan_token(NTH_VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1023() {
+ if (jj_scan_token(MONTH)) return true;
return false;
}
@@ -26476,388 +27082,220 @@
return false;
}
- final private boolean jj_3_1061() {
- if (jj_scan_token(EXCEPT)) return true;
+ final private boolean jj_3_1022() {
+ if (jj_scan_token(MOD)) return true;
return false;
}
- final private boolean jj_3R_338() {
+ final private boolean jj_3_539() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_3R_200()) return true;
return false;
}
- final private boolean jj_3_1060() {
- if (jj_scan_token(DISTINCT)) return true;
+ final private boolean jj_3_1021() {
+ if (jj_scan_token(MINUTE)) return true;
return false;
}
- final private boolean jj_3_1067() {
+ final private boolean jj_3_1020() {
+ if (jj_scan_token(MIN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1019() {
+ if (jj_scan_token(MAX)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1018() {
+ if (jj_scan_token(LOWER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_140() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_1061()) {
+ if (jj_3_538()) {
jj_scanpos = xsp;
- if (jj_3_1062()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_1063()) {
+ if (jj_3_539()) {
jj_scanpos = xsp;
- if (jj_3_1064()) {
- jj_scanpos = xsp;
- if (jj_3R_339()) return true;
+ if (jj_3_540()) return true;
}
}
return false;
}
- final private boolean jj_3R_353() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_197()) {
- jj_scanpos = xsp;
- if (jj_3R_409()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_198()) {
- jj_scanpos = xsp;
- if (jj_3R_410()) return true;
- }
+ final private boolean jj_3_538() {
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_3R_200()) return true;
return false;
}
- final private boolean jj_3_1059() {
- if (jj_scan_token(ALL)) return true;
+ final private boolean jj_3_1017() {
+ if (jj_scan_token(LOCALTIMESTAMP)) return true;
return false;
}
- final private boolean jj_3_536() {
- if (jj_scan_token(C_STYLE_ESCAPED_STRING_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3R_337() {
- return false;
- }
-
- final private boolean jj_3_1058() {
- if (jj_scan_token(DISTINCT)) return true;
- return false;
- }
-
- final private boolean jj_3_1066() {
- if (jj_scan_token(INTERSECT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1059()) {
- jj_scanpos = xsp;
- if (jj_3_1060()) {
- jj_scanpos = xsp;
- if (jj_3R_338()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_1057() {
- if (jj_scan_token(ALL)) return true;
+ final private boolean jj_3_1016() {
+ if (jj_scan_token(LOCALTIME)) return true;
return false;
}
final private boolean jj_3R_88() {
- if (jj_3R_79()) return true;
- if (jj_3R_353()) return true;
- return false;
- }
-
- final private boolean jj_3_1065() {
- if (jj_scan_token(UNION)) return true;
+ if (jj_3R_78()) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_1057()) {
+ if (jj_3_197()) {
jj_scanpos = xsp;
- if (jj_3_1058()) {
- jj_scanpos = xsp;
- if (jj_3R_337()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_1047() {
- if (jj_scan_token(TRUNCATE)) return true;
- return false;
- }
-
- final private boolean jj_3R_344() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1065()) {
- jj_scanpos = xsp;
- if (jj_3_1066()) {
- jj_scanpos = xsp;
- if (jj_3_1067()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3R_352() {
- return false;
- }
-
- final private boolean jj_3_196() {
- if (jj_3R_155()) return true;
- return false;
- }
-
- final private boolean jj_3R_351() {
- return false;
- }
-
- final private boolean jj_3_1046() {
- if (jj_scan_token(RIGHT)) return true;
- return false;
- }
-
- final private boolean jj_3_195() {
- if (jj_scan_token(PARTITION)) return true;
- if (jj_scan_token(BY)) return true;
- return false;
- }
-
- final private boolean jj_3_533() {
- if (jj_scan_token(UESCAPE)) return true;
- if (jj_scan_token(QUOTED_STRING)) return true;
- return false;
- }
-
- final private boolean jj_3_1053() {
- if (jj_3R_173()) return true;
- return false;
- }
-
- final private boolean jj_3_1052() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3R_87() {
- if (jj_3R_77()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_195()) {
- jj_scanpos = xsp;
- if (jj_3R_351()) return true;
+ if (jj_3R_355()) return true;
}
xsp = jj_scanpos;
- if (jj_3_196()) {
+ if (jj_3_198()) {
jj_scanpos = xsp;
- if (jj_3R_352()) return true;
+ if (jj_3R_356()) return true;
}
return false;
}
- final private boolean jj_3_1045() {
+ final private boolean jj_3_1015() {
+ if (jj_scan_token(LN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1014() {
+ if (jj_scan_token(LAST_VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1013() {
if (jj_scan_token(LEFT)) return true;
return false;
}
- final private boolean jj_3_1051() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(STAR)) return true;
+ final private boolean jj_3_1012() {
+ if (jj_scan_token(LEAD)) return true;
return false;
}
- final private boolean jj_3_1050() {
- if (jj_3R_335()) return true;
+ final private boolean jj_3_1011() {
+ if (jj_scan_token(LAG)) return true;
return false;
}
- final private boolean jj_3R_249() {
- if (jj_scan_token(QUOTED_STRING)) return true;
+ final private boolean jj_3_1010() {
+ if (jj_scan_token(HOUR)) return true;
return false;
}
- final private boolean jj_3_1049() {
- if (jj_3R_334()) return true;
+ final private boolean jj_3_1009() {
+ if (jj_scan_token(GROUPING)) return true;
return false;
}
- final private boolean jj_3_1048() {
- if (jj_3R_333()) return true;
+ final private boolean jj_3_1008() {
+ if (jj_scan_token(INTERSECTION)) return true;
return false;
}
- final private boolean jj_3_1044() {
- if (jj_scan_token(INSERT)) return true;
+ final private boolean jj_3_1007() {
+ if (jj_scan_token(FUSION)) return true;
return false;
}
- final private boolean jj_3R_336() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1044()) {
- jj_scanpos = xsp;
- if (jj_3_1045()) {
- jj_scanpos = xsp;
- if (jj_3_1046()) {
- jj_scanpos = xsp;
- if (jj_3_1047()) return true;
- }
- }
- }
+ final private boolean jj_3_1006() {
+ if (jj_scan_token(FLOOR)) return true;
return false;
}
- final private boolean jj_3_193() {
+ final private boolean jj_3_537() {
+ if (jj_scan_token(APPROX_NUMERIC_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1005() {
+ if (jj_scan_token(FIRST_VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1004() {
+ if (jj_scan_token(EXP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1003() {
+ if (jj_scan_token(EVERY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1002() {
+ if (jj_scan_token(ELEMENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1001() {
+ if (jj_scan_token(DENSE_RANK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_536() {
+ if (jj_scan_token(DECIMAL)) return true;
+ if (jj_3R_251()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1000() {
+ if (jj_scan_token(CURRENT_TIMESTAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_999() {
+ if (jj_scan_token(CURRENT_TIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_195() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_83()) return true;
+ if (jj_3R_84()) return true;
return false;
}
- final private boolean jj_3_1056() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_336()) {
- jj_scanpos = xsp;
- if (jj_3_1048()) {
- jj_scanpos = xsp;
- if (jj_3_1049()) {
- jj_scanpos = xsp;
- if (jj_3_1050()) return true;
- }
- }
- }
- xsp = jj_scanpos;
- if (jj_3_1051()) {
- jj_scanpos = xsp;
- if (jj_3_1052()) {
- jj_scanpos = xsp;
- if (jj_3_1053()) return true;
- }
- }
+ final private boolean jj_3_998() {
+ if (jj_scan_token(CURRENT_DATE)) return true;
return false;
}
- final private boolean jj_3_194() {
- if (jj_3R_154()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_193()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3R_358() {
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3_532() {
- if (jj_scan_token(UNICODE_STRING_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1055() {
- if (jj_scan_token(CONVERT)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_531() {
- if (jj_scan_token(QUOTED_STRING)) return true;
- return false;
- }
-
- final private boolean jj_3_530() {
- if (jj_scan_token(PREFIXED_STRING_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1054() {
- if (jj_3R_299()) return true;
+ final private boolean jj_3_997() {
+ if (jj_scan_token(COUNT)) return true;
return false;
}
final private boolean jj_3_535() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_530()) {
- jj_scanpos = xsp;
- if (jj_3_531()) {
- jj_scanpos = xsp;
- if (jj_3_532()) return true;
- }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_249()) { jj_scanpos = xsp; break; }
- }
- xsp = jj_scanpos;
- if (jj_3_533()) jj_scanpos = xsp;
+ if (jj_scan_token(DECIMAL_NUMERIC_LITERAL)) return true;
return false;
}
- final private boolean jj_3R_394() {
- if (jj_3R_302()) return true;
+ final private boolean jj_3_996() {
+ if (jj_scan_token(CUME_DIST)) return true;
return false;
}
- final private boolean jj_3R_393() {
- if (jj_3R_300()) return true;
+ final private boolean jj_3_995() {
+ if (jj_scan_token(COVAR_SAMP)) return true;
return false;
}
- final private boolean jj_3R_117() {
- if (jj_scan_token(CALL)) return true;
- if (jj_3R_358()) return true;
+ final private boolean jj_3_994() {
+ if (jj_scan_token(COVAR_POP)) return true;
return false;
}
- final private boolean jj_3R_392() {
- if (jj_3R_303()) return true;
+ final private boolean jj_3_993() {
+ if (jj_scan_token(COLLECT)) return true;
return false;
}
- final private boolean jj_3R_248() {
- if (jj_scan_token(QUOTED_STRING)) return true;
- return false;
- }
-
- final private boolean jj_3_187() {
- if (jj_scan_token(SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3R_391() {
- if (jj_3R_301()) return true;
- return false;
- }
-
- final private boolean jj_3R_390() {
- if (jj_3R_295()) return true;
- return false;
- }
-
- final private boolean jj_3_186() {
- if (jj_scan_token(CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3R_389() {
- if (jj_3R_297()) return true;
- return false;
- }
-
- final private boolean jj_3_192() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_scan_token(601)) jj_scanpos = xsp;
- if (jj_3R_153()) return true;
- return false;
- }
-
- final private boolean jj_3R_138() {
+ final private boolean jj_3R_200() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_534()) {
@@ -26866,925 +27304,86 @@
jj_scanpos = xsp;
if (jj_3_536()) {
jj_scanpos = xsp;
- if (jj_3_537()) {
- jj_scanpos = xsp;
- if (jj_3_538()) return true;
- }
+ if (jj_3_537()) return true;
}
}
}
return false;
}
- final private boolean jj_3_189() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_191() {
+ final private boolean jj_3_196() {
+ if (jj_3R_155()) return true;
Token xsp;
- xsp = jj_scanpos;
- if (jj_scan_token(622)) {
- jj_scanpos = xsp;
- if (jj_scan_token(821)) {
- jj_scanpos = xsp;
- if (jj_scan_token(820)) {
- jj_scanpos = xsp;
- if (jj_scan_token(817)) {
- jj_scanpos = xsp;
- if (jj_scan_token(818)) {
- jj_scanpos = xsp;
- if (jj_scan_token(819)) {
- jj_scanpos = xsp;
- if (jj_scan_token(816)) return true;
- }
- }
- }
- }
- }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_195()) { jj_scanpos = xsp; break; }
}
return false;
}
final private boolean jj_3_534() {
- if (jj_scan_token(BINARY_STRING_LITERAL)) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_248()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3R_388() {
- if (jj_3R_298()) return true;
- return false;
- }
-
- final private boolean jj_3_188() {
- if (jj_scan_token(TABLE)) return true;
- return false;
- }
-
- final private boolean jj_3R_387() {
- if (jj_3R_294()) return true;
- return false;
- }
-
- final private boolean jj_3_185() {
- if (jj_scan_token(DATABASE)) return true;
- return false;
- }
-
- final private boolean jj_3R_356() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_188()) jj_scanpos = xsp;
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3R_386() {
- if (jj_3R_292()) return true;
- return false;
- }
-
- final private boolean jj_3R_224() {
- if (jj_scan_token(LBRACE_FN)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_386()) {
- jj_scanpos = xsp;
- if (jj_3R_387()) {
- jj_scanpos = xsp;
- if (jj_3R_388()) {
- jj_scanpos = xsp;
- if (jj_3R_389()) {
- jj_scanpos = xsp;
- if (jj_3R_390()) {
- jj_scanpos = xsp;
- if (jj_3R_391()) {
- jj_scanpos = xsp;
- if (jj_3R_392()) {
- jj_scanpos = xsp;
- if (jj_3R_393()) {
- jj_scanpos = xsp;
- if (jj_3R_394()) {
- jj_scanpos = xsp;
- if (jj_3_1054()) {
- jj_scanpos = xsp;
- if (jj_3_1055()) {
- jj_scanpos = xsp;
- if (jj_3_1056()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_190() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_185()) {
- jj_scanpos = xsp;
- if (jj_3_186()) {
- jj_scanpos = xsp;
- if (jj_3_187()) return true;
- }
- }
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3R_112() {
- if (jj_scan_token(DESCRIBE)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_190()) {
- jj_scanpos = xsp;
- if (jj_3R_356()) {
- jj_scanpos = xsp;
- if (jj_3_192()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_529() {
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_528() {
- if (jj_scan_token(UNKNOWN)) return true;
- return false;
- }
-
- final private boolean jj_3_527() {
- if (jj_scan_token(FALSE)) return true;
- return false;
- }
-
- final private boolean jj_3R_244() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_526()) {
- jj_scanpos = xsp;
- if (jj_3_527()) {
- jj_scanpos = xsp;
- if (jj_3_528()) {
- jj_scanpos = xsp;
- if (jj_3_529()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_526() {
- if (jj_scan_token(TRUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1043() {
- if (jj_scan_token(USER)) return true;
- return false;
- }
-
- final private boolean jj_3_1042() {
- if (jj_scan_token(SYSTEM_USER)) return true;
- return false;
- }
-
- final private boolean jj_3_1041() {
- if (jj_scan_token(SESSION_USER)) return true;
- return false;
- }
-
- final private boolean jj_3_1040() {
- if (jj_scan_token(LOCALTIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_1039() {
- if (jj_scan_token(LOCALTIME)) return true;
- return false;
- }
-
- final private boolean jj_3_182() {
- if (jj_scan_token(ALL)) return true;
- return false;
- }
-
- final private boolean jj_3_1038() {
- if (jj_scan_token(CURRENT_USER)) return true;
- return false;
- }
-
- final private boolean jj_3_1037() {
- if (jj_scan_token(CURRENT_TIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_525() {
- if (jj_3R_198()) return true;
- return false;
- }
-
- final private boolean jj_3_1036() {
- if (jj_scan_token(CURRENT_TIME)) return true;
- return false;
- }
-
- final private boolean jj_3_184() {
- if (jj_scan_token(INCLUDING)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_182()) jj_scanpos = xsp;
- if (jj_scan_token(ATTRIBUTES)) return true;
- return false;
- }
-
- final private boolean jj_3_1035() {
- if (jj_scan_token(CURRENT_SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3_1034() {
- if (jj_scan_token(CURRENT_ROLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1033() {
- if (jj_scan_token(CURRENT_PATH)) return true;
- return false;
- }
-
- final private boolean jj_3_524() {
- if (jj_scan_token(MINUS)) return true;
- if (jj_3R_198()) return true;
- return false;
- }
-
- final private boolean jj_3_1032() {
- if (jj_scan_token(CURRENT_DEFAULT_TRANSFORM_GROUP)) return true;
- return false;
- }
-
- final private boolean jj_3_1031() {
- if (jj_scan_token(CURRENT_DATE)) return true;
- return false;
- }
-
- final private boolean jj_3_183() {
- if (jj_scan_token(EXCLUDING)) return true;
- if (jj_scan_token(ATTRIBUTES)) return true;
- return false;
- }
-
- final private boolean jj_3_1030() {
- if (jj_scan_token(CURRENT_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3R_139() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_523()) {
- jj_scanpos = xsp;
- if (jj_3_524()) {
- jj_scanpos = xsp;
- if (jj_3_525()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_523() {
- if (jj_scan_token(PLUS)) return true;
- if (jj_3R_198()) return true;
- return false;
- }
-
- final private boolean jj_3R_230() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1030()) {
- jj_scanpos = xsp;
- if (jj_3_1031()) {
- jj_scanpos = xsp;
- if (jj_3_1032()) {
- jj_scanpos = xsp;
- if (jj_3_1033()) {
- jj_scanpos = xsp;
- if (jj_3_1034()) {
- jj_scanpos = xsp;
- if (jj_3_1035()) {
- jj_scanpos = xsp;
- if (jj_3_1036()) {
- jj_scanpos = xsp;
- if (jj_3_1037()) {
- jj_scanpos = xsp;
- if (jj_3_1038()) {
- jj_scanpos = xsp;
- if (jj_3_1039()) {
- jj_scanpos = xsp;
- if (jj_3_1040()) {
- jj_scanpos = xsp;
- if (jj_3_1041()) {
- jj_scanpos = xsp;
- if (jj_3_1042()) {
- jj_scanpos = xsp;
- if (jj_3_1043()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3R_151() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_183()) {
- jj_scanpos = xsp;
- if (jj_3_184()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1029() {
- if (jj_scan_token(YEAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1028() {
- if (jj_scan_token(VAR_SAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_522() {
- if (jj_scan_token(APPROX_NUMERIC_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1027() {
- if (jj_scan_token(VAR_POP)) return true;
- return false;
- }
-
- final private boolean jj_3_1026() {
- if (jj_scan_token(USER)) return true;
- return false;
- }
-
- final private boolean jj_3_1025() {
- if (jj_scan_token(TRUNCATE)) return true;
- return false;
- }
-
- final private boolean jj_3_1024() {
- if (jj_scan_token(UPPER)) return true;
- return false;
- }
-
- final private boolean jj_3_1023() {
- if (jj_scan_token(SUM)) return true;
- return false;
- }
-
- final private boolean jj_3_521() {
- if (jj_scan_token(DECIMAL)) return true;
- if (jj_3R_247()) return true;
- return false;
- }
-
- final private boolean jj_3_1022() {
- if (jj_scan_token(STDDEV_SAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_1021() {
- if (jj_scan_token(STDDEV_POP)) return true;
- return false;
- }
-
- final private boolean jj_3_181() {
- if (jj_scan_token(WITHOUT)) return true;
- if (jj_scan_token(IMPLEMENTATION)) return true;
- return false;
- }
-
- final private boolean jj_3_1020() {
- if (jj_scan_token(SQRT)) return true;
- return false;
- }
-
- final private boolean jj_3_1019() {
- if (jj_scan_token(SOME)) return true;
- return false;
- }
-
- final private boolean jj_3_520() {
- if (jj_scan_token(DECIMAL_NUMERIC_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1018() {
- if (jj_scan_token(SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1017() {
- if (jj_scan_token(ROW_NUMBER)) return true;
- return false;
- }
-
- final private boolean jj_3_1016() {
- if (jj_scan_token(RIGHT)) return true;
- return false;
- }
-
- final private boolean jj_3_180() {
- if (jj_scan_token(WITH)) return true;
- if (jj_scan_token(IMPLEMENTATION)) return true;
- return false;
- }
-
- final private boolean jj_3_1015() {
- if (jj_scan_token(REGR_SYY)) return true;
- return false;
- }
-
- final private boolean jj_3R_198() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_519()) {
- jj_scanpos = xsp;
- if (jj_3_520()) {
- jj_scanpos = xsp;
- if (jj_3_521()) {
- jj_scanpos = xsp;
- if (jj_3_522()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_519() {
if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
return false;
}
- final private boolean jj_3_1014() {
- if (jj_scan_token(REGR_SXX)) return true;
- return false;
- }
-
- final private boolean jj_3_1013() {
- if (jj_scan_token(REGR_COUNT)) return true;
- return false;
- }
-
- final private boolean jj_3_1012() {
- if (jj_scan_token(RANK)) return true;
- return false;
- }
-
- final private boolean jj_3_1011() {
- if (jj_scan_token(POWER)) return true;
- return false;
- }
-
- final private boolean jj_3_1010() {
- if (jj_scan_token(PERCENT_RANK)) return true;
- return false;
- }
-
- final private boolean jj_3_179() {
- if (jj_scan_token(WITH)) return true;
- if (jj_scan_token(TYPE)) return true;
- return false;
- }
-
- final private boolean jj_3_1009() {
- if (jj_scan_token(PERCENTILE_DISC)) return true;
- return false;
- }
-
- final private boolean jj_3_1008() {
- if (jj_scan_token(PERCENTILE_CONT)) return true;
- return false;
- }
-
- final private boolean jj_3_518() {
- if (jj_3R_243()) return true;
- return false;
- }
-
- final private boolean jj_3_1007() {
- if (jj_scan_token(OCTET_LENGTH)) return true;
- return false;
- }
-
- final private boolean jj_3_1006() {
- if (jj_scan_token(NULLIF)) return true;
- return false;
- }
-
- final private boolean jj_3_517() {
- if (jj_3R_246()) return true;
- return false;
- }
-
- final private boolean jj_3_1005() {
- if (jj_scan_token(NTILE)) return true;
- return false;
- }
-
- final private boolean jj_3_1004() {
- if (jj_scan_token(NTH_VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1003() {
- if (jj_scan_token(MONTH)) return true;
- return false;
- }
-
- final private boolean jj_3_1002() {
- if (jj_scan_token(MOD)) return true;
- return false;
- }
-
- final private boolean jj_3_1001() {
- if (jj_scan_token(MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3R_222() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_517()) {
- jj_scanpos = xsp;
- if (jj_3_518()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1000() {
- if (jj_scan_token(MIN)) return true;
- return false;
- }
-
- final private boolean jj_3_999() {
- if (jj_scan_token(MAX)) return true;
- return false;
- }
-
- final private boolean jj_3_998() {
- if (jj_scan_token(LOWER)) return true;
- return false;
- }
-
- final private boolean jj_3_997() {
- if (jj_scan_token(LOCALTIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_178() {
- if (jj_3R_116()) return true;
- return false;
- }
-
- final private boolean jj_3_996() {
- if (jj_scan_token(LOCALTIME)) return true;
- return false;
- }
-
- final private boolean jj_3_995() {
- if (jj_scan_token(LN)) return true;
- return false;
- }
-
- final private boolean jj_3_177() {
- if (jj_3R_115()) return true;
- return false;
- }
-
- final private boolean jj_3_994() {
- if (jj_scan_token(LAST_VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_993() {
- if (jj_scan_token(LEFT)) return true;
- return false;
- }
-
- final private boolean jj_3_176() {
- if (jj_3R_114()) return true;
- return false;
- }
-
final private boolean jj_3_992() {
- if (jj_scan_token(LEAD)) return true;
- return false;
- }
-
- final private boolean jj_3_991() {
- if (jj_scan_token(LAG)) return true;
- return false;
- }
-
- final private boolean jj_3_175() {
- if (jj_3R_113()) return true;
- return false;
- }
-
- final private boolean jj_3_990() {
- if (jj_scan_token(HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_989() {
- if (jj_scan_token(GROUPING)) return true;
- return false;
- }
-
- final private boolean jj_3_174() {
- if (jj_3R_79()) return true;
- return false;
- }
-
- final private boolean jj_3_988() {
- if (jj_scan_token(INTERSECTION)) return true;
- return false;
- }
-
- final private boolean jj_3_987() {
- if (jj_scan_token(FUSION)) return true;
- return false;
- }
-
- final private boolean jj_3_516() {
- if (jj_3R_245()) return true;
- return false;
- }
-
- final private boolean jj_3_986() {
- if (jj_scan_token(FLOOR)) return true;
- return false;
- }
-
- final private boolean jj_3_985() {
- if (jj_scan_token(FIRST_VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_515() {
- if (jj_3R_244()) return true;
- return false;
- }
-
- final private boolean jj_3_984() {
- if (jj_scan_token(EXP)) return true;
- return false;
- }
-
- final private boolean jj_3R_153() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_174()) {
- jj_scanpos = xsp;
- if (jj_3_175()) {
- jj_scanpos = xsp;
- if (jj_3_176()) {
- jj_scanpos = xsp;
- if (jj_3_177()) {
- jj_scanpos = xsp;
- if (jj_3_178()) return true;
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_983() {
- if (jj_scan_token(EVERY)) return true;
- return false;
- }
-
- final private boolean jj_3_514() {
- if (jj_3R_138()) return true;
- return false;
- }
-
- final private boolean jj_3_982() {
- if (jj_scan_token(ELEMENT)) return true;
- return false;
- }
-
- final private boolean jj_3_981() {
- if (jj_scan_token(DENSE_RANK)) return true;
- return false;
- }
-
- final private boolean jj_3_513() {
- if (jj_3R_139()) return true;
- return false;
- }
-
- final private boolean jj_3_980() {
- if (jj_scan_token(CURRENT_TIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_979() {
- if (jj_scan_token(CURRENT_TIME)) return true;
- return false;
- }
-
- final private boolean jj_3_978() {
- if (jj_scan_token(CURRENT_DATE)) return true;
- return false;
- }
-
- final private boolean jj_3_977() {
- if (jj_scan_token(COUNT)) return true;
- return false;
- }
-
- final private boolean jj_3_976() {
- if (jj_scan_token(CUME_DIST)) return true;
- return false;
- }
-
- final private boolean jj_3R_243() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_513()) {
- jj_scanpos = xsp;
- if (jj_3_514()) {
- jj_scanpos = xsp;
- if (jj_3_515()) {
- jj_scanpos = xsp;
- if (jj_3_516()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_975() {
- if (jj_scan_token(COVAR_SAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_974() {
- if (jj_scan_token(COVAR_POP)) return true;
- return false;
- }
-
- final private boolean jj_3_973() {
- if (jj_scan_token(COLLECT)) return true;
- return false;
- }
-
- final private boolean jj_3_972() {
if (jj_scan_token(COALESCE)) return true;
return false;
}
- final private boolean jj_3_971() {
+ final private boolean jj_3_991() {
if (jj_scan_token(CHARACTER_LENGTH)) return true;
return false;
}
- final private boolean jj_3_970() {
+ final private boolean jj_3_990() {
if (jj_scan_token(CHAR_LENGTH)) return true;
return false;
}
- final private boolean jj_3_969() {
+ final private boolean jj_3_989() {
if (jj_scan_token(CHAR)) return true;
return false;
}
- final private boolean jj_3_512() {
- if (jj_3R_193()) return true;
- return false;
- }
-
- final private boolean jj_3_968() {
+ final private boolean jj_3_988() {
if (jj_scan_token(CEILING)) return true;
return false;
}
- final private boolean jj_3_967() {
+ final private boolean jj_3_987() {
if (jj_scan_token(CARDINALITY)) return true;
return false;
}
- final private boolean jj_3_173() {
- if (jj_scan_token(AS)) return true;
- if (jj_scan_token(DOT_FORMAT)) return true;
- return false;
- }
-
- final private boolean jj_3_511() {
- if (jj_3R_243()) return true;
- return false;
- }
-
- final private boolean jj_3_966() {
+ final private boolean jj_3_986() {
if (jj_scan_token(AVG)) return true;
return false;
}
- final private boolean jj_3_965() {
+ final private boolean jj_3_533() {
+ if (jj_3R_247()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_985() {
if (jj_scan_token(ABS)) return true;
return false;
}
- final private boolean jj_3_172() {
- if (jj_scan_token(AS)) return true;
- if (jj_scan_token(JSON)) return true;
+ final private boolean jj_3R_362() {
+ if (jj_3R_153()) return true;
return false;
}
- final private boolean jj_3R_119() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_511()) {
- jj_scanpos = xsp;
- if (jj_3_512()) return true;
- }
+ final private boolean jj_3_532() {
+ if (jj_3R_250()) return true;
return false;
}
- final private boolean jj_3R_333() {
+ final private boolean jj_3R_337() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_965()) {
- jj_scanpos = xsp;
- if (jj_3_966()) {
- jj_scanpos = xsp;
- if (jj_3_967()) {
- jj_scanpos = xsp;
- if (jj_3_968()) {
- jj_scanpos = xsp;
- if (jj_3_969()) {
- jj_scanpos = xsp;
- if (jj_3_970()) {
- jj_scanpos = xsp;
- if (jj_3_971()) {
- jj_scanpos = xsp;
- if (jj_3_972()) {
- jj_scanpos = xsp;
- if (jj_3_973()) {
- jj_scanpos = xsp;
- if (jj_3_974()) {
- jj_scanpos = xsp;
- if (jj_3_975()) {
- jj_scanpos = xsp;
- if (jj_3_976()) {
- jj_scanpos = xsp;
- if (jj_3_977()) {
- jj_scanpos = xsp;
- if (jj_3_978()) {
- jj_scanpos = xsp;
- if (jj_3_979()) {
- jj_scanpos = xsp;
- if (jj_3_980()) {
- jj_scanpos = xsp;
- if (jj_3_981()) {
- jj_scanpos = xsp;
- if (jj_3_982()) {
- jj_scanpos = xsp;
- if (jj_3_983()) {
- jj_scanpos = xsp;
- if (jj_3_984()) {
- jj_scanpos = xsp;
if (jj_3_985()) {
jj_scanpos = xsp;
if (jj_3_986()) {
@@ -27873,7 +27472,47 @@
jj_scanpos = xsp;
if (jj_3_1028()) {
jj_scanpos = xsp;
- if (jj_3_1029()) return true;
+ if (jj_3_1029()) {
+ jj_scanpos = xsp;
+ if (jj_3_1030()) {
+ jj_scanpos = xsp;
+ if (jj_3_1031()) {
+ jj_scanpos = xsp;
+ if (jj_3_1032()) {
+ jj_scanpos = xsp;
+ if (jj_3_1033()) {
+ jj_scanpos = xsp;
+ if (jj_3_1034()) {
+ jj_scanpos = xsp;
+ if (jj_3_1035()) {
+ jj_scanpos = xsp;
+ if (jj_3_1036()) {
+ jj_scanpos = xsp;
+ if (jj_3_1037()) {
+ jj_scanpos = xsp;
+ if (jj_3_1038()) {
+ jj_scanpos = xsp;
+ if (jj_3_1039()) {
+ jj_scanpos = xsp;
+ if (jj_3_1040()) {
+ jj_scanpos = xsp;
+ if (jj_3_1041()) {
+ jj_scanpos = xsp;
+ if (jj_3_1042()) {
+ jj_scanpos = xsp;
+ if (jj_3_1043()) {
+ jj_scanpos = xsp;
+ if (jj_3_1044()) {
+ jj_scanpos = xsp;
+ if (jj_3_1045()) {
+ jj_scanpos = xsp;
+ if (jj_3_1046()) {
+ jj_scanpos = xsp;
+ if (jj_3_1047()) {
+ jj_scanpos = xsp;
+ if (jj_3_1048()) {
+ jj_scanpos = xsp;
+ if (jj_3_1049()) return true;
}
}
}
@@ -27941,329 +27580,1020 @@
return false;
}
- final private boolean jj_3_171() {
- if (jj_scan_token(AS)) return true;
- if (jj_scan_token(XML)) return true;
- return false;
- }
-
- final private boolean jj_3_170() {
- if (jj_3R_151()) return true;
- return false;
- }
-
- final private boolean jj_3R_111() {
- if (jj_scan_token(EXPLAIN)) return true;
- if (jj_scan_token(PLAN)) return true;
- return false;
- }
-
- final private boolean jj_3_964() {
- if (jj_3R_333()) return true;
- return false;
- }
-
- final private boolean jj_3_963() {
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3R_229() {
+ final private boolean jj_3R_226() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_963()) {
+ if (jj_3_532()) {
jj_scanpos = xsp;
- if (jj_3_964()) return true;
+ if (jj_3_533()) return true;
}
return false;
}
- final private boolean jj_3_510() {
- if (jj_3R_242()) return true;
+ final private boolean jj_3_984() {
+ if (jj_3R_337()) return true;
return false;
}
- final private boolean jj_3_509() {
- if (jj_3R_241()) return true;
+ final private boolean jj_3_983() {
+ if (jj_3R_153()) return true;
return false;
}
- final private boolean jj_3_508() {
- if (jj_3R_240()) return true;
+ final private boolean jj_3_531() {
+ if (jj_3R_249()) return true;
return false;
}
- final private boolean jj_3_507() {
- if (jj_3R_239()) return true;
- return false;
- }
-
- final private boolean jj_3R_110() {
- if (jj_scan_token(DROP)) return true;
+ final private boolean jj_3R_233() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_507()) {
+ if (jj_3_983()) {
jj_scanpos = xsp;
- if (jj_3_508()) {
+ if (jj_3_984()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_118() {
+ if (jj_scan_token(CALL)) return true;
+ if (jj_3R_362()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_530() {
+ if (jj_3R_248()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_529() {
+ if (jj_3R_139()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_528() {
+ if (jj_3R_140()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_189() {
+ if (jj_scan_token(SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_247() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_528()) {
jj_scanpos = xsp;
- if (jj_3_509()) {
+ if (jj_3_529()) {
jj_scanpos = xsp;
- if (jj_3_510()) return true;
+ if (jj_3_530()) {
+ jj_scanpos = xsp;
+ if (jj_3_531()) return true;
}
}
}
return false;
}
- final private boolean jj_3R_334() {
+ final private boolean jj_3R_338() {
if (jj_scan_token(SUBSTRING)) return true;
return false;
}
- final private boolean jj_3_159() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_143()) return true;
+ final private boolean jj_3_527() {
+ if (jj_3R_195()) return true;
return false;
}
- final private boolean jj_3_168() {
- if (jj_3R_149()) return true;
+ final private boolean jj_3_526() {
+ if (jj_3R_247()) return true;
return false;
}
- final private boolean jj_3_167() {
- if (jj_3R_148()) return true;
+ final private boolean jj_3_188() {
+ if (jj_scan_token(CATALOG)) return true;
return false;
}
- final private boolean jj_3_166() {
- if (jj_3R_147()) return true;
+ final private boolean jj_3_194() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(601)) jj_scanpos = xsp;
+ if (jj_3R_154()) return true;
return false;
}
- final private boolean jj_3_165() {
- if (jj_3R_146()) return true;
+ final private boolean jj_3R_120() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_526()) {
+ jj_scanpos = xsp;
+ if (jj_3_527()) return true;
+ }
return false;
}
- final private boolean jj_3_961() {
- if (jj_3R_331()) return true;
+ final private boolean jj_3_981() {
+ if (jj_3R_335()) return true;
return false;
}
- final private boolean jj_3_164() {
- if (jj_3R_145()) return true;
+ final private boolean jj_3_191() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_506() {
- if (jj_3R_238()) return true;
+ final private boolean jj_3_193() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(622)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(824)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(823)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(820)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(821)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(822)) {
+ jj_scanpos = xsp;
+ if (jj_scan_token(819)) return true;
+ }
+ }
+ }
+ }
+ }
+ }
return false;
}
- final private boolean jj_3_960() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3_980() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_505() {
- if (jj_3R_237()) return true;
+ final private boolean jj_3_190() {
+ if (jj_scan_token(TABLE)) return true;
return false;
}
- final private boolean jj_3_169() {
- if (jj_scan_token(FROM)) return true;
- if (jj_3R_150()) return true;
+ final private boolean jj_3_187() {
+ if (jj_scan_token(DATABASE)) return true;
return false;
}
- final private boolean jj_3_504() {
- if (jj_3R_236()) return true;
- return false;
- }
-
- final private boolean jj_3_163() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_144()) return true;
- return false;
- }
-
- final private boolean jj_3_503() {
- if (jj_3R_235()) return true;
- return false;
- }
-
- final private boolean jj_3_962() {
+ final private boolean jj_3_982() {
if (jj_scan_token(OVER)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_960()) {
+ if (jj_3_980()) {
jj_scanpos = xsp;
- if (jj_3_961()) return true;
+ if (jj_3_981()) return true;
}
return false;
}
- final private boolean jj_3_162() {
- if (jj_3R_82()) return true;
- return false;
- }
-
- final private boolean jj_3_502() {
- if (jj_scan_token(OR)) return true;
- if (jj_scan_token(REPLACE)) return true;
- return false;
- }
-
- final private boolean jj_3_161() {
- if (jj_scan_token(STREAM)) return true;
- return false;
- }
-
- final private boolean jj_3_959() {
- if (jj_scan_token(TO)) return true;
- if (jj_3R_332()) return true;
- return false;
- }
-
- final private boolean jj_3R_109() {
- if (jj_scan_token(CREATE)) return true;
+ final private boolean jj_3R_360() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_502()) jj_scanpos = xsp;
+ if (jj_3_190()) jj_scanpos = xsp;
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_979() {
+ if (jj_scan_token(TO)) return true;
+ if (jj_3R_336()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_525() {
+ if (jj_3R_246()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_524() {
+ if (jj_3R_245()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_192() {
+ Token xsp;
xsp = jj_scanpos;
- if (jj_3_503()) {
+ if (jj_3_187()) {
jj_scanpos = xsp;
- if (jj_3_504()) {
+ if (jj_3_188()) {
jj_scanpos = xsp;
- if (jj_3_505()) {
- jj_scanpos = xsp;
- if (jj_3_506()) return true;
+ if (jj_3_189()) return true;
}
}
- }
+ if (jj_3R_153()) return true;
return false;
}
- final private boolean jj_3_501() {
- if (jj_scan_token(SESSION)) return true;
+ final private boolean jj_3_523() {
+ if (jj_3R_244()) return true;
return false;
}
- final private boolean jj_3_160() {
- if (jj_scan_token(HINT_BEG)) return true;
- if (jj_3R_143()) return true;
- return false;
- }
-
- final private boolean jj_3R_400() {
+ final private boolean jj_3R_412() {
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3_158() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_143()) return true;
+ final private boolean jj_3_522() {
+ if (jj_3R_243()) return true;
return false;
}
- final private boolean jj_3R_75() {
- if (jj_scan_token(SELECT)) return true;
+ final private boolean jj_3R_113() {
+ if (jj_scan_token(DESCRIBE)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_160()) jj_scanpos = xsp;
- if (jj_3R_346()) return true;
- return false;
- }
-
- final private boolean jj_3_500() {
- if (jj_scan_token(SYSTEM)) return true;
- return false;
- }
-
- final private boolean jj_3R_355() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_500()) {
+ if (jj_3_192()) {
jj_scanpos = xsp;
- if (jj_3_501()) return true;
+ if (jj_3R_360()) {
+ jj_scanpos = xsp;
+ if (jj_3_194()) return true;
+ }
}
return false;
}
- final private boolean jj_3_958() {
- if (jj_3R_220()) return true;
+ final private boolean jj_3R_111() {
+ if (jj_scan_token(DROP)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_522()) {
+ jj_scanpos = xsp;
+ if (jj_3_523()) {
+ jj_scanpos = xsp;
+ if (jj_3_524()) {
+ jj_scanpos = xsp;
+ if (jj_3_525()) return true;
+ }
+ }
+ }
return false;
}
- final private boolean jj_3_957() {
+ final private boolean jj_3_978() {
+ if (jj_3R_224()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_521() {
+ if (jj_3R_242()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_184() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_520() {
+ if (jj_3R_241()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_977() {
if (jj_scan_token(LPAREN)) return true;
if (jj_scan_token(RPAREN)) return true;
return false;
}
- final private boolean jj_3R_108() {
- if (jj_scan_token(ALTER)) return true;
- if (jj_3R_355()) return true;
+ final private boolean jj_3_186() {
+ if (jj_scan_token(INCLUDING)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_184()) jj_scanpos = xsp;
+ if (jj_scan_token(ATTRIBUTES)) return true;
return false;
}
- final private boolean jj_3_956() {
+ final private boolean jj_3_519() {
+ if (jj_3R_240()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_518() {
+ if (jj_3R_239()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_976() {
if (jj_scan_token(LPAREN)) return true;
if (jj_scan_token(STAR)) return true;
return false;
}
- final private boolean jj_3R_157() {
- if (jj_scan_token(HINT_BEG)) return true;
- if (jj_3R_143()) return true;
+ final private boolean jj_3_185() {
+ if (jj_scan_token(EXCLUDING)) return true;
+ if (jj_scan_token(ATTRIBUTES)) return true;
return false;
}
- final private boolean jj_3R_404() {
+ final private boolean jj_3R_416() {
return false;
}
- final private boolean jj_3_497() {
- if (jj_scan_token(ALL)) return true;
+ final private boolean jj_3_517() {
+ if (jj_scan_token(OR)) return true;
+ if (jj_scan_token(REPLACE)) return true;
return false;
}
- final private boolean jj_3_955() {
+ final private boolean jj_3R_152() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_185()) {
+ jj_scanpos = xsp;
+ if (jj_3_186()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_975() {
if (jj_scan_token(SPECIFIC)) return true;
return false;
}
- final private boolean jj_3_496() {
+ final private boolean jj_3R_110() {
+ if (jj_scan_token(CREATE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_517()) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3_518()) {
+ jj_scanpos = xsp;
+ if (jj_3_519()) {
+ jj_scanpos = xsp;
+ if (jj_3_520()) {
+ jj_scanpos = xsp;
+ if (jj_3_521()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_516() {
+ if (jj_scan_token(SESSION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_332() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_975()) {
+ jj_scanpos = xsp;
+ if (jj_3R_416()) return true;
+ }
+ if (jj_3R_233()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_183() {
+ if (jj_scan_token(WITHOUT)) return true;
+ if (jj_scan_token(IMPLEMENTATION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_515() {
+ if (jj_scan_token(SYSTEM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_359() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_515()) {
+ jj_scanpos = xsp;
+ if (jj_3_516()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_973() {
+ if (jj_3R_335()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_182() {
+ if (jj_scan_token(WITH)) return true;
+ if (jj_scan_token(IMPLEMENTATION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_972() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_181() {
+ if (jj_scan_token(WITH)) return true;
+ if (jj_scan_token(TYPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_974() {
+ if (jj_scan_token(OVER)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_972()) {
+ jj_scanpos = xsp;
+ if (jj_3_973()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_109() {
+ if (jj_scan_token(ALTER)) return true;
+ if (jj_3R_359()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_971() {
+ if (jj_scan_token(FILTER)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_180() {
+ if (jj_3R_117()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_970() {
+ if (jj_3R_327()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_179() {
+ if (jj_3R_116()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_178() {
+ if (jj_3R_115()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_969() {
+ if (jj_3R_334()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_177() {
+ if (jj_3R_114()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_512() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_176() {
+ if (jj_3R_80()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_968() {
+ if (jj_3R_333()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_511() {
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_967() {
+ if (jj_3R_332()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_154() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_176()) {
+ jj_scanpos = xsp;
+ if (jj_3_177()) {
+ jj_scanpos = xsp;
+ if (jj_3_178()) {
+ jj_scanpos = xsp;
+ if (jj_3_179()) {
+ jj_scanpos = xsp;
+ if (jj_3_180()) return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_425() {
+ if (jj_3R_429()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_514() {
+ if (jj_scan_token(RESET)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_511()) {
+ jj_scanpos = xsp;
+ if (jj_3_512()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_966() {
+ if (jj_3R_331()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_387() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_966()) {
+ jj_scanpos = xsp;
+ if (jj_3R_425()) {
+ jj_scanpos = xsp;
+ if (jj_3_967()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_510() {
+ if (jj_scan_token(ON)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_509() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_508() {
+ if (jj_3R_120()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_175() {
+ if (jj_scan_token(AS)) return true;
+ if (jj_scan_token(DOT_FORMAT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_174() {
+ if (jj_scan_token(AS)) return true;
+ if (jj_scan_token(JSON)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_173() {
+ if (jj_scan_token(AS)) return true;
+ if (jj_scan_token(XML)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_513() {
+ if (jj_scan_token(SET)) return true;
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_172() {
if (jj_3R_152()) return true;
return false;
}
+ final private boolean jj_3R_108() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_513()) {
+ jj_scanpos = xsp;
+ if (jj_3_514()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_112() {
+ if (jj_scan_token(EXPLAIN)) return true;
+ if (jj_scan_token(PLAN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_333() {
+ if (jj_3R_225()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_507() {
+ if (jj_scan_token(CURRENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_506() {
+ if (jj_scan_token(NEXT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_965() {
+ if (jj_scan_token(RESPECT)) return true;
+ if (jj_scan_token(NULLS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_237() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_506()) {
+ jj_scanpos = xsp;
+ if (jj_3_507()) return true;
+ }
+ if (jj_scan_token(VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_225() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_964()) {
+ jj_scanpos = xsp;
+ if (jj_3_965()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_964() {
+ if (jj_scan_token(IGNORE)) return true;
+ if (jj_scan_token(NULLS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_161() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_144()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_505() {
+ if (jj_scan_token(ELSE)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_327() {
+ if (jj_scan_token(WITHIN)) return true;
+ if (jj_scan_token(GROUP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_170() {
+ if (jj_3R_150()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_169() {
+ if (jj_3R_149()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_168() {
+ if (jj_3R_148()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_167() {
+ if (jj_3R_147()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_166() {
+ if (jj_3R_146()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_171() {
+ if (jj_scan_token(FROM)) return true;
+ if (jj_3R_151()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_165() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_145()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_504() {
+ if (jj_scan_token(WHEN)) return true;
+ if (jj_3R_238()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_407() {
+ return false;
+ }
+
+ final private boolean jj_3R_334() {
+ if (jj_scan_token(WITHIN)) return true;
+ if (jj_scan_token(DISTINCT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_164() {
+ if (jj_3R_83()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_503() {
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_163() {
+ if (jj_scan_token(STREAM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_236() {
+ if (jj_scan_token(CASE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_503()) {
+ jj_scanpos = xsp;
+ if (jj_3R_407()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_162() {
+ if (jj_scan_token(HINT_BEG)) return true;
+ if (jj_3R_144()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_963() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_140()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_160() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_144()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_76() {
+ if (jj_scan_token(SELECT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_162()) jj_scanpos = xsp;
+ if (jj_3R_350()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_962() {
+ if (jj_scan_token(NEXT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_502() {
+ if (jj_3R_237()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_961() {
+ if (jj_scan_token(PREV)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_501() {
+ if (jj_3R_236()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_497() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(542)) jj_scanpos = xsp;
+ if (jj_3R_233()) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_500() {
+ if (jj_3R_235()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_329() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_961()) {
+ jj_scanpos = xsp;
+ if (jj_3_962()) return true;
+ }
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_396() {
+ if (jj_scan_token(STAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_499() {
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_498() {
+ if (jj_3R_234()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_395() {
+ if (jj_3R_387()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_496() {
+ if (jj_3R_232()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_158() {
+ if (jj_scan_token(HINT_BEG)) return true;
+ if (jj_3R_144()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_495() {
+ if (jj_3R_231()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_960() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_140()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_494() {
+ if (jj_3R_230()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_493() {
+ if (jj_3R_229()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_492() {
+ if (jj_3R_228()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_959() {
+ if (jj_scan_token(LAST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_491() {
+ if (jj_3R_227()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_958() {
+ if (jj_scan_token(FIRST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_490() {
+ if (jj_3R_223()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_415() {
+ return false;
+ }
+
+ final private boolean jj_3_957() {
+ if (jj_scan_token(FINAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_156() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_489() {
+ if (jj_3R_226()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_956() {
+ if (jj_scan_token(RUNNING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_220() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_489()) {
+ jj_scanpos = xsp;
+ if (jj_3_490()) {
+ jj_scanpos = xsp;
+ if (jj_3_491()) {
+ jj_scanpos = xsp;
+ if (jj_3_492()) {
+ jj_scanpos = xsp;
+ if (jj_3_493()) {
+ jj_scanpos = xsp;
+ if (jj_3_494()) {
+ jj_scanpos = xsp;
+ if (jj_3_495()) {
+ jj_scanpos = xsp;
+ if (jj_3_496()) {
+ jj_scanpos = xsp;
+ if (jj_3R_395()) {
+ jj_scanpos = xsp;
+ if (jj_3_498()) {
+ jj_scanpos = xsp;
+ if (jj_3_499()) {
+ jj_scanpos = xsp;
+ lookingAhead = true;
+ jj_semLA = allowRowValueStar();
+ lookingAhead = false;
+ if (!jj_semLA || jj_3R_396()) {
+ jj_scanpos = xsp;
+ if (jj_3_500()) {
+ jj_scanpos = xsp;
+ if (jj_3_501()) {
+ jj_scanpos = xsp;
+ if (jj_3_502()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
final private boolean jj_3R_328() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_955()) {
+ if (jj_3_956()) {
jj_scanpos = xsp;
- if (jj_3R_404()) return true;
+ if (jj_3_957()) {
+ jj_scanpos = xsp;
+ if (jj_3R_415()) return true;
}
- if (jj_3R_229()) return true;
- return false;
- }
-
- final private boolean jj_3_154() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_499() {
- if (jj_scan_token(RESET)) return true;
- Token xsp;
+ }
xsp = jj_scanpos;
- if (jj_3_496()) {
+ if (jj_3_958()) {
jj_scanpos = xsp;
- if (jj_3_497()) return true;
+ if (jj_3_959()) return true;
}
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_159() {
+ if (jj_3R_143()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_158() {
+ if (jj_3R_125()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_155() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_141()) return true;
return false;
}
@@ -28272,139 +28602,159 @@
return false;
}
- final private boolean jj_3_495() {
- if (jj_scan_token(ON)) return true;
+ final private boolean jj_3_955() {
+ if (jj_scan_token(FINAL)) return true;
return false;
}
- final private boolean jj_3_953() {
- if (jj_3R_331()) return true;
+ final private boolean jj_3_954() {
+ if (jj_scan_token(RUNNING)) return true;
return false;
}
- final private boolean jj_3_156() {
- if (jj_3R_124()) return true;
+ final private boolean jj_3R_144() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_494() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3_486() {
+ if (jj_3R_225()) return true;
return false;
}
- final private boolean jj_3_153() {
+ final private boolean jj_3R_330() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_954()) {
+ jj_scanpos = xsp;
+ if (jj_3_955()) return true;
+ }
+ if (jj_3R_213()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_488() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_140()) return true;
return false;
}
- final private boolean jj_3_952() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_493() {
- if (jj_3R_119()) return true;
- return false;
- }
-
- final private boolean jj_3_155() {
- if (jj_3R_141()) return true;
- return false;
- }
-
- final private boolean jj_3_954() {
- if (jj_scan_token(OVER)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_952()) {
- jj_scanpos = xsp;
- if (jj_3_953()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_143() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_498() {
- if (jj_scan_token(SET)) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3R_107() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_498()) {
- jj_scanpos = xsp;
- if (jj_3_499()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_951() {
- if (jj_scan_token(FILTER)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_950() {
- if (jj_3R_323()) return true;
- return false;
- }
-
- final private boolean jj_3_949() {
+ final private boolean jj_3_953() {
if (jj_3R_330()) return true;
return false;
}
- final private boolean jj_3R_142() {
+ final private boolean jj_3_487() {
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_952() {
+ if (jj_3R_329()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_143() {
if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_140()) return true;
+ if (jj_3R_141()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3_153()) { jj_scanpos = xsp; break; }
+ if (jj_3_155()) { jj_scanpos = xsp; break; }
}
if (jj_scan_token(RPAREN)) return true;
return false;
}
- final private boolean jj_3_948() {
- if (jj_3R_329()) return true;
- return false;
- }
-
- final private boolean jj_3_947() {
+ final private boolean jj_3_951() {
if (jj_3R_328()) return true;
return false;
}
- final private boolean jj_3_492() {
- if (jj_scan_token(CURRENT)) return true;
+ final private boolean jj_3_485() {
+ if (jj_scan_token(PERCENTILE_DISC)) return true;
return false;
}
- final private boolean jj_3R_413() {
- if (jj_3R_416()) return true;
+ final private boolean jj_3_484() {
+ if (jj_scan_token(PERCENTILE_CONT)) return true;
return false;
}
- final private boolean jj_3_491() {
- if (jj_scan_token(NEXT)) return true;
+ final private boolean jj_3_950() {
+ if (jj_scan_token(MATCH_NUMBER)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_429() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_484()) {
+ jj_scanpos = xsp;
+ if (jj_3_485()) return true;
+ }
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_154() {
+ if (jj_3R_139()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_949() {
+ if (jj_scan_token(CLASSIFIER)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_153() {
+ if (jj_3R_140()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_308() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_949()) {
+ jj_scanpos = xsp;
+ if (jj_3_950()) {
+ jj_scanpos = xsp;
+ if (jj_3_951()) {
+ jj_scanpos = xsp;
+ if (jj_3_952()) {
+ jj_scanpos = xsp;
+ if (jj_3_953()) return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_141() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_153()) {
+ jj_scanpos = xsp;
+ if (jj_3_154()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_948() {
+ if (jj_scan_token(SESSION)) return true;
return false;
}
final private boolean jj_3_152() {
- if (jj_3R_138()) return true;
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_946() {
- if (jj_3R_327()) return true;
+ final private boolean jj_3_947() {
+ if (jj_scan_token(HOP)) return true;
return false;
}
@@ -28413,33 +28763,50 @@
return false;
}
- final private boolean jj_3R_233() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_491()) {
- jj_scanpos = xsp;
- if (jj_3_492()) return true;
- }
- if (jj_scan_token(VALUE)) return true;
+ final private boolean jj_3_946() {
+ if (jj_scan_token(TUMBLE)) return true;
return false;
}
- final private boolean jj_3R_378() {
+ final private boolean jj_3_150() {
+ if (jj_3R_139()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_316() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_946()) {
jj_scanpos = xsp;
- if (jj_3R_413()) {
+ if (jj_3_947()) {
jj_scanpos = xsp;
- if (jj_3_947()) return true;
+ if (jj_3_948()) return true;
}
}
+ if (jj_3R_413()) return true;
return false;
}
- final private boolean jj_3R_140() {
+ final private boolean jj_3_149() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_483() {
+ if (jj_scan_token(SEPARATOR)) return true;
+ if (jj_3R_139()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_138() {
Token xsp;
xsp = jj_scanpos;
+ if (jj_3_149()) {
+ jj_scanpos = xsp;
+ if (jj_3_150()) return true;
+ }
+ if (jj_scan_token(EQ)) return true;
+ xsp = jj_scanpos;
if (jj_3_151()) {
jj_scanpos = xsp;
if (jj_3_152()) return true;
@@ -28447,90 +28814,42 @@
return false;
}
- final private boolean jj_3_490() {
- if (jj_scan_token(ELSE)) return true;
- if (jj_3R_81()) return true;
+ final private boolean jj_3_482() {
+ if (jj_3R_71()) return true;
return false;
}
- final private boolean jj_3_150() {
- if (jj_3R_138()) return true;
- return false;
- }
-
- final private boolean jj_3_149() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3R_137() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_149()) {
- jj_scanpos = xsp;
- if (jj_3_150()) return true;
- }
- if (jj_scan_token(EQ)) return true;
- if (jj_3R_138()) return true;
- return false;
- }
-
- final private boolean jj_3_489() {
- if (jj_scan_token(WHEN)) return true;
- if (jj_3R_234()) return true;
- return false;
- }
-
- final private boolean jj_3R_395() {
- return false;
- }
-
- final private boolean jj_3R_329() {
- if (jj_3R_221()) return true;
- return false;
- }
-
- final private boolean jj_3_488() {
- if (jj_3R_81()) return true;
+ final private boolean jj_3_481() {
+ if (jj_3R_225()) return true;
return false;
}
final private boolean jj_3_148() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_137()) return true;
+ if (jj_3R_138()) return true;
return false;
}
- final private boolean jj_3R_232() {
- if (jj_scan_token(CASE)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_488()) {
- jj_scanpos = xsp;
- if (jj_3R_395()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_945() {
- if (jj_scan_token(RESPECT)) return true;
- if (jj_scan_token(NULLS)) return true;
- return false;
- }
-
- final private boolean jj_3R_221() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_944()) {
- jj_scanpos = xsp;
- if (jj_3_945()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_141() {
+ final private boolean jj_3R_307() {
+ if (jj_scan_token(TIME_TRUNC)) return true;
if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_137()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_480() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_84()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_479() {
+ if (jj_3R_83()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_142() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_138()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
@@ -28540,286 +28859,167 @@
return false;
}
- final private boolean jj_3_944() {
- if (jj_scan_token(IGNORE)) return true;
- if (jj_scan_token(NULLS)) return true;
- return false;
- }
-
- final private boolean jj_3_487() {
- if (jj_3R_233()) return true;
- return false;
- }
-
- final private boolean jj_3_482() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_scan_token(542)) jj_scanpos = xsp;
- if (jj_3R_229()) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_486() {
- if (jj_3R_232()) return true;
- return false;
- }
-
- final private boolean jj_3_485() {
- if (jj_3R_231()) return true;
- return false;
- }
-
- final private boolean jj_3R_242() {
- if (jj_scan_token(VIEW)) return true;
- if (jj_3R_133()) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3_484() {
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3_483() {
- if (jj_3R_230()) return true;
- return false;
- }
-
- final private boolean jj_3R_323() {
- if (jj_scan_token(WITHIN)) return true;
- if (jj_scan_token(GROUP)) return true;
- return false;
- }
-
- final private boolean jj_3R_384() {
- if (jj_3R_378()) return true;
- return false;
- }
-
- final private boolean jj_3_481() {
- if (jj_3R_228()) return true;
- return false;
- }
-
- final private boolean jj_3R_238() {
- if (jj_scan_token(VIEW)) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3_480() {
- if (jj_3R_227()) return true;
- return false;
- }
-
- final private boolean jj_3_479() {
- if (jj_3R_226()) return true;
- return false;
- }
-
final private boolean jj_3_478() {
- if (jj_3R_225()) return true;
- return false;
- }
-
- final private boolean jj_3R_330() {
- if (jj_scan_token(WITHIN)) return true;
- if (jj_scan_token(DISTINCT)) return true;
+ if (jj_scan_token(STRING_AGG)) return true;
return false;
}
final private boolean jj_3_477() {
- if (jj_3R_224()) return true;
+ if (jj_scan_token(GROUP_CONCAT)) return true;
return false;
}
final private boolean jj_3_476() {
- if (jj_3R_223()) return true;
+ if (jj_scan_token(ARRAY_CONCAT_AGG)) return true;
return false;
}
final private boolean jj_3_475() {
- if (jj_3R_219()) return true;
+ if (jj_scan_token(ARRAY_AGG)) return true;
return false;
}
- final private boolean jj_3R_104() {
- if (jj_scan_token(ANALYZE)) return true;
- if (jj_3R_354()) return true;
- return false;
- }
-
- final private boolean jj_3_474() {
- if (jj_3R_222()) return true;
- return false;
- }
-
- final private boolean jj_3_943() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_139()) return true;
- return false;
- }
-
- final private boolean jj_3R_216() {
+ final private boolean jj_3R_331() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_474()) {
- jj_scanpos = xsp;
if (jj_3_475()) {
jj_scanpos = xsp;
if (jj_3_476()) {
jj_scanpos = xsp;
if (jj_3_477()) {
jj_scanpos = xsp;
- if (jj_3_478()) {
- jj_scanpos = xsp;
- if (jj_3_479()) {
- jj_scanpos = xsp;
- if (jj_3_480()) {
- jj_scanpos = xsp;
- if (jj_3_481()) {
- jj_scanpos = xsp;
- if (jj_3R_384()) {
- jj_scanpos = xsp;
- if (jj_3_483()) {
- jj_scanpos = xsp;
- if (jj_3_484()) {
- jj_scanpos = xsp;
- if (jj_3_485()) {
- jj_scanpos = xsp;
- if (jj_3_486()) {
- jj_scanpos = xsp;
- if (jj_3_487()) return true;
+ if (jj_3_478()) return true;
}
}
}
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_942() {
- if (jj_scan_token(NEXT)) return true;
- return false;
- }
-
- final private boolean jj_3_941() {
- if (jj_scan_token(PREV)) return true;
- return false;
- }
-
- final private boolean jj_3R_105() {
- if (jj_scan_token(REFRESH)) return true;
- if (jj_scan_token(STATISTICS)) return true;
- return false;
- }
-
- final private boolean jj_3R_325() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_941()) {
- jj_scanpos = xsp;
- if (jj_3_942()) return true;
- }
if (jj_scan_token(LPAREN)) return true;
return false;
}
+ final private boolean jj_3R_246() {
+ if (jj_scan_token(VIEW)) return true;
+ if (jj_3R_134()) return true;
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_300() {
+ if (jj_scan_token(DATETIME_TRUNC)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_242() {
+ if (jj_scan_token(VIEW)) return true;
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_473() {
+ if (jj_3R_224()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_472() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_474() {
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_306() {
+ if (jj_scan_token(TIME_DIFF)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_105() {
+ if (jj_scan_token(ANALYZE)) return true;
+ if (jj_3R_358()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_471() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(STAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_211() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
final private boolean jj_3R_106() {
+ if (jj_scan_token(REFRESH)) return true;
+ if (jj_scan_token(STATISTICS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_305() {
+ if (jj_scan_token(TIMESTAMP_TRUNC)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_107() {
if (jj_scan_token(DROP)) return true;
if (jj_scan_token(STATISTICS)) return true;
return false;
}
- final private boolean jj_3_471() {
- if (jj_3R_221()) return true;
- return false;
- }
-
- final private boolean jj_3_147() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_473() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_139()) return true;
- return false;
- }
-
- final private boolean jj_3_940() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_139()) return true;
- return false;
- }
-
- final private boolean jj_3_146() {
- if (jj_3R_119()) return true;
- return false;
- }
-
- final private boolean jj_3_472() {
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_939() {
- if (jj_scan_token(LAST)) return true;
- return false;
- }
-
- final private boolean jj_3R_136() {
- if (jj_3R_364()) return true;
- if (jj_scan_token(EQ)) return true;
- return false;
- }
-
- final private boolean jj_3_938() {
- if (jj_scan_token(FIRST)) return true;
- return false;
- }
-
final private boolean jj_3_470() {
- if (jj_scan_token(PERCENTILE_DISC)) return true;
+ if (jj_3R_223()) return true;
return false;
}
final private boolean jj_3_469() {
- if (jj_scan_token(PERCENTILE_CONT)) return true;
+ if (jj_3R_200()) return true;
return false;
}
- final private boolean jj_3R_403() {
+ final private boolean jj_3_945() {
+ if (jj_3R_79()) return true;
return false;
}
- final private boolean jj_3_937() {
- if (jj_scan_token(FINAL)) return true;
- return false;
- }
-
- final private boolean jj_3_936() {
- if (jj_scan_token(RUNNING)) return true;
- return false;
- }
-
- final private boolean jj_3R_416() {
+ final private boolean jj_3R_75() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_469()) {
jj_scanpos = xsp;
if (jj_3_470()) return true;
}
+ return false;
+ }
+
+ final private boolean jj_3_147() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_944() {
+ if (jj_3R_274()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_146() {
+ if (jj_3R_120()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_137() {
+ if (jj_3R_368()) return true;
+ if (jj_scan_token(EQ)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_299() {
+ if (jj_scan_token(DATE_TRUNC)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
@@ -28829,25 +29029,6 @@
return false;
}
- final private boolean jj_3R_324() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_936()) {
- jj_scanpos = xsp;
- if (jj_3_937()) {
- jj_scanpos = xsp;
- if (jj_3R_403()) return true;
- }
- }
- xsp = jj_scanpos;
- if (jj_3_938()) {
- jj_scanpos = xsp;
- if (jj_3_939()) return true;
- }
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
final private boolean jj_3_144() {
if (jj_scan_token(NULLS)) return true;
return false;
@@ -28858,12 +29039,22 @@
return false;
}
+ final private boolean jj_3_468() {
+ if (jj_scan_token(EQUALS)) return true;
+ return false;
+ }
+
final private boolean jj_3_142() {
if (jj_scan_token(TOTAL)) return true;
return false;
}
- final private boolean jj_3R_364() {
+ final private boolean jj_3_467() {
+ if (jj_scan_token(SUCCEEDS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_368() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_141()) {
@@ -28887,8 +29078,26 @@
return false;
}
- final private boolean jj_3_935() {
- if (jj_scan_token(FINAL)) return true;
+ final private boolean jj_3_466() {
+ if (jj_scan_token(IMMEDIATELY)) return true;
+ if (jj_scan_token(SUCCEEDS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_465() {
+ if (jj_scan_token(PRECEDES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_464() {
+ if (jj_scan_token(IMMEDIATELY)) return true;
+ if (jj_scan_token(PRECEDES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_302() {
+ if (jj_scan_token(DATETIME_DIFF)) return true;
+ if (jj_scan_token(LPAREN)) return true;
return false;
}
@@ -28897,36 +29106,40 @@
return false;
}
- final private boolean jj_3_934() {
- if (jj_scan_token(RUNNING)) return true;
+ final private boolean jj_3_463() {
+ if (jj_scan_token(OVERLAPS)) return true;
return false;
}
final private boolean jj_3_137() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_136()) return true;
- return false;
- }
-
- final private boolean jj_3R_326() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_934()) {
- jj_scanpos = xsp;
- if (jj_3_935()) return true;
- }
- if (jj_3R_378()) return true;
+ if (jj_3R_137()) return true;
return false;
}
final private boolean jj_3_138() {
- if (jj_3R_136()) return true;
+ if (jj_3R_137()) return true;
return false;
}
- final private boolean jj_3_468() {
- if (jj_scan_token(SEPARATOR)) return true;
- if (jj_3R_138()) return true;
+ final private boolean jj_3_462() {
+ if (jj_3R_135()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_428() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_461()) {
+ jj_scanpos = xsp;
+ if (jj_3_462()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_461() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
return false;
}
@@ -28941,157 +29154,43 @@
return false;
}
- final private boolean jj_3_467() {
- if (jj_3R_70()) return true;
- return false;
- }
-
- final private boolean jj_3_933() {
- if (jj_3R_326()) return true;
- return false;
- }
-
- final private boolean jj_3_932() {
- if (jj_3R_325()) return true;
- return false;
- }
-
- final private boolean jj_3_466() {
- if (jj_3R_221()) return true;
- return false;
- }
-
- final private boolean jj_3_931() {
- if (jj_3R_324()) return true;
- return false;
- }
-
- final private boolean jj_3_930() {
- if (jj_scan_token(MATCH_NUMBER)) return true;
+ final private boolean jj_3R_304() {
+ if (jj_scan_token(TIMESTAMP_DIFF)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3_465() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_83()) return true;
- return false;
- }
-
final private boolean jj_3_136() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_135()) return true;
+ if (jj_3R_136()) return true;
return false;
}
- final private boolean jj_3_929() {
- if (jj_scan_token(CLASSIFIER)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3R_420() {
+ if (jj_3R_428()) return true;
+ if (jj_scan_token(LAMBDA)) return true;
return false;
}
- final private boolean jj_3_464() {
- if (jj_3R_82()) return true;
- return false;
- }
-
- final private boolean jj_3R_304() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_929()) {
- jj_scanpos = xsp;
- if (jj_3_930()) {
- jj_scanpos = xsp;
- if (jj_3_931()) {
- jj_scanpos = xsp;
- if (jj_3_932()) {
- jj_scanpos = xsp;
- if (jj_3_933()) return true;
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3R_354() {
- if (jj_3R_135()) return true;
- return false;
- }
-
- final private boolean jj_3_463() {
- if (jj_scan_token(STRING_AGG)) return true;
- return false;
- }
-
- final private boolean jj_3_462() {
- if (jj_scan_token(GROUP_CONCAT)) return true;
- return false;
- }
-
- final private boolean jj_3_461() {
- if (jj_scan_token(ARRAY_CONCAT_AGG)) return true;
- return false;
- }
-
- final private boolean jj_3_460() {
- if (jj_scan_token(ARRAY_AGG)) return true;
- return false;
- }
-
- final private boolean jj_3R_327() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_460()) {
- jj_scanpos = xsp;
- if (jj_3_461()) {
- jj_scanpos = xsp;
- if (jj_3_462()) {
- jj_scanpos = xsp;
- if (jj_3_463()) return true;
- }
- }
- }
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_928() {
- if (jj_scan_token(SESSION)) return true;
- return false;
- }
-
- final private boolean jj_3_927() {
- if (jj_scan_token(HOP)) return true;
+ final private boolean jj_3R_358() {
+ if (jj_3R_136()) return true;
return false;
}
final private boolean jj_3_135() {
- if (jj_3R_124()) return true;
+ if (jj_3R_125()) return true;
return false;
}
- final private boolean jj_3_926() {
- if (jj_scan_token(TUMBLE)) return true;
+ final private boolean jj_3R_303() {
+ if (jj_scan_token(TIMESTAMPDIFF)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_336()) return true;
return false;
}
- final private boolean jj_3R_312() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_926()) {
- jj_scanpos = xsp;
- if (jj_3_927()) {
- jj_scanpos = xsp;
- if (jj_3_928()) return true;
- }
- }
- if (jj_3R_401()) return true;
- return false;
- }
-
- final private boolean jj_3R_135() {
- if (jj_3R_152()) return true;
+ final private boolean jj_3R_136() {
+ if (jj_3R_153()) return true;
return false;
}
@@ -29100,57 +29199,30 @@
return false;
}
- final private boolean jj_3_458() {
- if (jj_3R_220()) return true;
- return false;
- }
-
- final private boolean jj_3R_101() {
+ final private boolean jj_3R_102() {
if (jj_scan_token(ROLLBACK)) return true;
if (jj_scan_token(TO)) return true;
return false;
}
- final private boolean jj_3_457() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_459() {
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
final private boolean jj_3_133() {
if (jj_scan_token(TRANSACTION)) return true;
return false;
}
- final private boolean jj_3_456() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(STAR)) return true;
- return false;
- }
-
- final private boolean jj_3R_303() {
- if (jj_scan_token(TIME_TRUNC)) return true;
+ final private boolean jj_3R_301() {
+ if (jj_scan_token(TIMESTAMPADD)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3R_100() {
+ final private boolean jj_3R_101() {
if (jj_scan_token(SAVEPOINT)) return true;
- if (jj_3R_84()) return true;
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3R_207() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3R_103() {
+ final private boolean jj_3R_104() {
if (jj_scan_token(ROLLBACK)) return true;
Token xsp;
xsp = jj_scanpos;
@@ -29158,13 +29230,18 @@
return false;
}
- final private boolean jj_3R_296() {
- if (jj_scan_token(DATETIME_TRUNC)) return true;
+ final private boolean jj_3_456() {
+ if (jj_3R_219()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_298() {
+ if (jj_scan_token(DATE_DIFF)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3R_102() {
+ final private boolean jj_3R_103() {
if (jj_scan_token(COMMIT)) return true;
Token xsp;
xsp = jj_scanpos;
@@ -29172,34 +29249,45 @@
return false;
}
+ final private boolean jj_3R_222() {
+ return false;
+ }
+
+ final private boolean jj_3_943() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_scan_token(JSON_SCOPE)) return true;
+ return false;
+ }
+
final private boolean jj_3_455() {
- if (jj_3R_219()) return true;
+ if (jj_scan_token(ROW)) return true;
return false;
}
- final private boolean jj_3_454() {
- if (jj_3R_198()) return true;
+ final private boolean jj_3_942() {
+ if (jj_scan_token(RPAREN)) return true;
return false;
}
- final private boolean jj_3R_74() {
+ final private boolean jj_3_460() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_454()) {
+ if (jj_3_455()) {
jj_scanpos = xsp;
- if (jj_3_455()) return true;
+ if (jj_3R_222()) return true;
}
+ if (jj_3R_174()) return true;
return false;
}
- final private boolean jj_3R_99() {
+ final private boolean jj_3R_100() {
if (jj_scan_token(KILL)) return true;
if (jj_scan_token(QUERY)) return true;
return false;
}
- final private boolean jj_3R_302() {
- if (jj_scan_token(TIME_DIFF)) return true;
+ final private boolean jj_3R_296() {
+ if (jj_scan_token(CONTAINS_SUBSTR)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
@@ -29209,312 +29297,227 @@
return false;
}
- final private boolean jj_3_453() {
- if (jj_scan_token(EQUALS)) return true;
- return false;
- }
-
- final private boolean jj_3_452() {
- if (jj_scan_token(SUCCEEDS)) return true;
- return false;
- }
-
- final private boolean jj_3R_98() {
+ final private boolean jj_3R_99() {
if (jj_scan_token(KILL)) return true;
if (jj_scan_token(COMPUTE)) return true;
return false;
}
- final private boolean jj_3_451() {
- if (jj_scan_token(IMMEDIATELY)) return true;
- if (jj_scan_token(SUCCEEDS)) return true;
+ final private boolean jj_3_459() {
+ if (jj_scan_token(ROW)) return true;
+ if (jj_3R_174()) return true;
return false;
}
- final private boolean jj_3_450() {
- if (jj_scan_token(PRECEDES)) return true;
+ final private boolean jj_3_458() {
+ if (jj_3R_221()) return true;
return false;
}
- final private boolean jj_3R_301() {
- if (jj_scan_token(TIMESTAMP_TRUNC)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_449() {
- if (jj_scan_token(IMMEDIATELY)) return true;
- if (jj_scan_token(PRECEDES)) return true;
- return false;
- }
-
- final private boolean jj_3_448() {
- if (jj_scan_token(OVERLAPS)) return true;
- return false;
- }
-
- final private boolean jj_3R_96() {
- if (jj_scan_token(KILL)) return true;
- if (jj_scan_token(SERVICE)) return true;
- return false;
- }
-
- final private boolean jj_3_447() {
- if (jj_3R_134()) return true;
- return false;
- }
-
- final private boolean jj_3_925() {
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3R_415() {
+ final private boolean jj_3R_213() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_446()) {
+ if (jj_3_457()) {
jj_scanpos = xsp;
- if (jj_3_447()) return true;
+ if (jj_3_458()) {
+ jj_scanpos = xsp;
+ if (jj_3_459()) {
+ jj_scanpos = xsp;
+ if (jj_3_460()) return true;
+ }
+ }
}
return false;
}
- final private boolean jj_3_446() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
+ final private boolean jj_3_457() {
+ if (jj_3R_220()) return true;
return false;
}
- final private boolean jj_3_924() {
- if (jj_3R_270()) return true;
+ final private boolean jj_3_941() {
+ if (jj_3R_327()) return true;
return false;
}
final private boolean jj_3R_97() {
if (jj_scan_token(KILL)) return true;
+ if (jj_scan_token(SERVICE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_940() {
+ if (jj_3R_325()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_98() {
+ if (jj_scan_token(KILL)) return true;
if (jj_scan_token(TRANSACTION)) return true;
return false;
}
- final private boolean jj_3R_295() {
- if (jj_scan_token(DATE_TRUNC)) return true;
+ final private boolean jj_3_939() {
+ if (jj_3R_326()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_454() {
+ if (jj_scan_token(NE2)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_315() {
+ if (jj_scan_token(JSON_ARRAYAGG)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3R_95() {
+ final private boolean jj_3_453() {
+ if (jj_scan_token(NE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_452() {
+ if (jj_scan_token(EQ)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_451() {
+ if (jj_scan_token(GE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_96() {
if (jj_scan_token(KILL)) return true;
if (jj_scan_token(CONTINUOUS)) return true;
return false;
}
- final private boolean jj_3R_408() {
- if (jj_3R_415()) return true;
- if (jj_scan_token(LAMBDA)) return true;
+ final private boolean jj_3_450() {
+ if (jj_scan_token(GT)) return true;
return false;
}
- final private boolean jj_3R_298() {
- if (jj_scan_token(DATETIME_DIFF)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3_449() {
+ if (jj_scan_token(LE)) return true;
return false;
}
- final private boolean jj_3R_94() {
+ final private boolean jj_3R_212() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_448()) {
+ jj_scanpos = xsp;
+ if (jj_3_449()) {
+ jj_scanpos = xsp;
+ if (jj_3_450()) {
+ jj_scanpos = xsp;
+ if (jj_3_451()) {
+ jj_scanpos = xsp;
+ if (jj_3_452()) {
+ jj_scanpos = xsp;
+ if (jj_3_453()) {
+ jj_scanpos = xsp;
+ if (jj_3_454()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_448() {
+ if (jj_scan_token(LT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_326() {
+ if (jj_3R_71()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_419() {
+ return false;
+ }
+
+ final private boolean jj_3_445() {
+ if (jj_3R_218()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_95() {
if (jj_scan_token(KILL)) return true;
if (jj_scan_token(SCAN)) return true;
return false;
}
- final private boolean jj_3R_300() {
- if (jj_scan_token(TIMESTAMP_DIFF)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_441() {
- if (jj_3R_215()) return true;
- return false;
- }
-
- final private boolean jj_3R_299() {
- if (jj_scan_token(TIMESTAMPDIFF)) return true;
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_332()) return true;
- return false;
- }
-
- final private boolean jj_3_131() {
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3R_218() {
- return false;
- }
-
- final private boolean jj_3_130() {
- if (jj_scan_token(MINUS)) return true;
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_440() {
- if (jj_scan_token(ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_129() {
- if (jj_scan_token(PLUS)) return true;
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_445() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_440()) {
- jj_scanpos = xsp;
- if (jj_3R_218()) return true;
- }
- if (jj_3R_173()) return true;
- return false;
- }
-
- final private boolean jj_3R_297() {
- if (jj_scan_token(TIMESTAMPADD)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3R_241() {
- if (jj_scan_token(USER)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_444() {
- if (jj_scan_token(ROW)) return true;
- if (jj_3R_173()) return true;
- return false;
- }
-
- final private boolean jj_3_443() {
- if (jj_3R_217()) return true;
- return false;
- }
-
- final private boolean jj_3R_209() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_442()) {
- jj_scanpos = xsp;
- if (jj_3_443()) {
- jj_scanpos = xsp;
- if (jj_3_444()) {
- jj_scanpos = xsp;
- if (jj_3_445()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_442() {
- if (jj_3R_216()) return true;
- return false;
- }
-
- final private boolean jj_3R_93() {
- if (jj_scan_token(ALTER)) return true;
- if (jj_scan_token(USER)) return true;
- return false;
- }
-
- final private boolean jj_3R_294() {
- if (jj_scan_token(DATE_DIFF)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3R_237() {
- if (jj_scan_token(USER)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_124() {
- if (jj_scan_token(COLUMN)) return true;
- return false;
- }
-
- final private boolean jj_3_439() {
- if (jj_scan_token(NE2)) return true;
- return false;
- }
-
final private boolean jj_3_438() {
- if (jj_scan_token(NE)) return true;
+ if (jj_scan_token(DOT)) return true;
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_923() {
+ final private boolean jj_3_938() {
+ if (jj_3R_325()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_936() {
if (jj_scan_token(COMMA)) return true;
- if (jj_scan_token(JSON_SCOPE)) return true;
+ if (jj_3R_79()) return true;
return false;
}
- final private boolean jj_3_123() {
- if (jj_scan_token(COLUMN)) return true;
+ final private boolean jj_3_937() {
+ if (jj_3R_79()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_936()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_314() {
+ if (jj_scan_token(JSON_ARRAY)) return true;
+ if (jj_scan_token(LPAREN)) return true;
return false;
}
final private boolean jj_3_437() {
- if (jj_scan_token(EQ)) return true;
- return false;
- }
-
- final private boolean jj_3_922() {
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_128() {
- if (jj_scan_token(DROP)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_124()) jj_scanpos = xsp;
- if (jj_3R_133()) return true;
- if (jj_3R_134()) return true;
+ if (jj_3R_82()) return true;
return false;
}
final private boolean jj_3_436() {
- if (jj_scan_token(GE)) return true;
+ if (jj_scan_token(SAFE_ORDINAL)) return true;
+ if (jj_scan_token(LPAREN)) return true;
return false;
}
final private boolean jj_3_435() {
- if (jj_scan_token(GT)) return true;
- return false;
- }
-
- final private boolean jj_3_127() {
- if (jj_scan_token(ADD)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_123()) jj_scanpos = xsp;
- if (jj_3R_131()) return true;
- if (jj_3R_132()) return true;
+ if (jj_scan_token(SAFE_OFFSET)) return true;
+ if (jj_scan_token(LPAREN)) return true;
return false;
}
final private boolean jj_3_434() {
- if (jj_scan_token(LE)) return true;
+ if (jj_scan_token(ORDINAL)) return true;
+ if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3R_208() {
+ final private boolean jj_3_433() {
+ if (jj_scan_token(OFFSET)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_444() {
+ if (jj_scan_token(LBRACKET)) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3_433()) {
@@ -29525,17 +29528,350 @@
jj_scanpos = xsp;
if (jj_3_436()) {
jj_scanpos = xsp;
- if (jj_3_437()) {
+ if (jj_3_437()) return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_443() {
+ if (jj_3R_217()) return true;
+ if (jj_3R_214()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_935() {
+ if (jj_3R_325()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_442() {
+ if (jj_3R_216()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_432() {
+ if (jj_scan_token(ESCAPE)) return true;
+ if (jj_3R_213()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_313() {
+ if (jj_scan_token(JSON_OBJECTAGG)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_428() {
+ if (jj_scan_token(STAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_431() {
+ if (jj_scan_token(TILDE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_428()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_427() {
+ if (jj_scan_token(STAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_426() {
+ if (jj_scan_token(SIMILAR)) return true;
+ if (jj_scan_token(TO)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_430() {
+ if (jj_scan_token(NEGATE)) return true;
+ if (jj_scan_token(TILDE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_425() {
+ if (jj_scan_token(RLIKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_131() {
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_424() {
+ if (jj_scan_token(ILIKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_421() {
+ if (jj_scan_token(SIMILAR)) return true;
+ if (jj_scan_token(TO)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_423() {
+ if (jj_scan_token(LIKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_130() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_420() {
+ if (jj_scan_token(RLIKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_419() {
+ if (jj_scan_token(ILIKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_129() {
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_418() {
+ if (jj_scan_token(LIKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_934() {
+ if (jj_3R_325()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_932() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_324()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_422() {
+ if (jj_scan_token(NOT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_418()) {
jj_scanpos = xsp;
- if (jj_3_438()) {
+ if (jj_3_419()) {
jj_scanpos = xsp;
- if (jj_3_439()) return true;
+ if (jj_3_420()) {
+ jj_scanpos = xsp;
+ if (jj_3_421()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_429() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_422()) {
+ jj_scanpos = xsp;
+ if (jj_3_423()) {
+ jj_scanpos = xsp;
+ if (jj_3_424()) {
+ jj_scanpos = xsp;
+ if (jj_3_425()) {
+ jj_scanpos = xsp;
+ if (jj_3_426()) return true;
}
}
}
}
+ return false;
+ }
+
+ final private boolean jj_3_933() {
+ if (jj_3R_324()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_245() {
+ if (jj_scan_token(USER)) return true;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_312() {
+ if (jj_scan_token(JSON_OBJECT)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_441() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_429()) {
+ jj_scanpos = xsp;
+ if (jj_3_430()) {
+ jj_scanpos = xsp;
+ if (jj_3_431()) return true;
}
}
+ if (jj_3R_215()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_414() {
+ if (jj_scan_token(ASYMMETRIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_415() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_413()) {
+ jj_scanpos = xsp;
+ if (jj_3_414()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_413() {
+ if (jj_scan_token(SYMMETRIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_94() {
+ if (jj_scan_token(ALTER)) return true;
+ if (jj_scan_token(USER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_411() {
+ if (jj_scan_token(ASYMMETRIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_931() {
+ if (jj_scan_token(ABSENT)) return true;
+ if (jj_scan_token(ON)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_417() {
+ if (jj_scan_token(BETWEEN)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_415()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_412() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_410()) {
+ jj_scanpos = xsp;
+ if (jj_3_411()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_410() {
+ if (jj_scan_token(SYMMETRIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_325() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_930()) {
+ jj_scanpos = xsp;
+ if (jj_3_931()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_930() {
+ if (jj_scan_token(NULL)) return true;
+ if (jj_scan_token(ON)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_416() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(BETWEEN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_241() {
+ if (jj_scan_token(USER)) return true;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_124() {
+ if (jj_scan_token(COLUMN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_929() {
+ if (jj_scan_token(COLON)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_123() {
+ if (jj_scan_token(COLUMN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_926() {
+ if (jj_scan_token(KEY)) return true;
+ if (jj_3R_323()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_440() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_416()) {
+ jj_scanpos = xsp;
+ if (jj_3_417()) return true;
+ }
+ if (jj_3R_214()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_128() {
+ if (jj_scan_token(DROP)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_124()) jj_scanpos = xsp;
+ if (jj_3R_134()) return true;
+ if (jj_3R_135()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_928() {
+ if (jj_scan_token(COMMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_927() {
+ if (jj_scan_token(VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_127() {
+ if (jj_scan_token(ADD)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_123()) jj_scanpos = xsp;
+ if (jj_3R_132()) return true;
+ if (jj_3R_133()) return true;
return false;
}
@@ -29544,14 +29880,7 @@
return false;
}
- final private boolean jj_3_433() {
- if (jj_scan_token(LT)) return true;
- return false;
- }
-
- final private boolean jj_3R_292() {
- if (jj_scan_token(CONTAINS_SUBSTR)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3R_424() {
return false;
}
@@ -29560,33 +29889,95 @@
return false;
}
- final private boolean jj_3R_407() {
+ final private boolean jj_3R_414() {
+ if (jj_scan_token(KEY)) return true;
return false;
}
- final private boolean jj_3R_92() {
+ final private boolean jj_3_406() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_405() {
+ if (jj_scan_token(ANY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_324() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_414()) jj_scanpos = xsp;
+ if (jj_3R_323()) return true;
+ xsp = jj_scanpos;
+ if (jj_3_927()) {
+ jj_scanpos = xsp;
+ if (jj_3_928()) {
+ jj_scanpos = xsp;
+ if (jj_3_929()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_93() {
if (jj_scan_token(ALTER)) return true;
if (jj_scan_token(TABLE)) return true;
return false;
}
- final private boolean jj_3_430() {
- if (jj_3R_214()) return true;
+ final private boolean jj_3_404() {
+ if (jj_scan_token(SOME)) return true;
return false;
}
- final private boolean jj_3_423() {
- if (jj_scan_token(DOT)) return true;
- if (jj_3R_84()) return true;
+ final private boolean jj_3_409() {
+ if (jj_3R_212()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_404()) {
+ jj_scanpos = xsp;
+ if (jj_3_405()) {
+ jj_scanpos = xsp;
+ if (jj_3_406()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_384() {
+ Token xsp;
+ xsp = jj_scanpos;
+ lookingAhead = true;
+ jj_semLA = false;
+ lookingAhead = false;
+ if (!jj_semLA || jj_3R_424()) return true;
+ if (jj_scan_token(ZONE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_408() {
+ if (jj_scan_token(IN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_323() {
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_407() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(IN)) return true;
return false;
}
final private boolean jj_3_122() {
- if (jj_3R_130()) return true;
+ if (jj_3R_131()) return true;
return false;
}
- final private boolean jj_3R_132() {
+ final private boolean jj_3R_133() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_121()) {
@@ -29597,61 +29988,21 @@
}
final private boolean jj_3_121() {
- if (jj_3R_129()) return true;
+ if (jj_3R_130()) return true;
return false;
}
- final private boolean jj_3_422() {
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_921() {
- if (jj_3R_323()) return true;
- return false;
- }
-
- final private boolean jj_3_421() {
- if (jj_scan_token(SAFE_ORDINAL)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_420() {
- if (jj_scan_token(SAFE_OFFSET)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_419() {
- if (jj_scan_token(ORDINAL)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_418() {
- if (jj_scan_token(OFFSET)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_429() {
- if (jj_scan_token(LBRACKET)) return true;
+ final private boolean jj_3_439() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_418()) {
+ if (jj_3_407()) {
jj_scanpos = xsp;
- if (jj_3_419()) {
+ if (jj_3_408()) {
jj_scanpos = xsp;
- if (jj_3_420()) {
- jj_scanpos = xsp;
- if (jj_3_421()) {
- jj_scanpos = xsp;
- if (jj_3_422()) return true;
+ if (jj_3_409()) return true;
}
}
- }
- }
+ if (jj_3R_174()) return true;
return false;
}
@@ -29661,294 +30012,238 @@
return false;
}
- final private boolean jj_3_920() {
- if (jj_3R_321()) return true;
+ final private boolean jj_3_446() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_439()) {
+ jj_scanpos = xsp;
+ if (jj_3_440()) {
+ jj_scanpos = xsp;
+ if (jj_3_441()) {
+ jj_scanpos = xsp;
+ if (jj_3_442()) {
+ jj_scanpos = xsp;
+ if (jj_3_443()) {
+ jj_scanpos = xsp;
+ if (jj_3_444()) {
+ jj_scanpos = xsp;
+ if (jj_3_445()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
return false;
}
- final private boolean jj_3_428() {
- if (jj_3R_213()) return true;
- if (jj_3R_210()) return true;
- return false;
- }
-
- final private boolean jj_3R_129() {
- if (jj_3R_84()) return true;
- if (jj_3R_122()) return true;
- return false;
- }
-
- final private boolean jj_3_427() {
- if (jj_3R_212()) return true;
- return false;
- }
-
- final private boolean jj_3_919() {
+ final private boolean jj_3_925() {
if (jj_3R_322()) return true;
return false;
}
- final private boolean jj_3R_311() {
- if (jj_scan_token(JSON_ARRAYAGG)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3R_130() {
+ if (jj_3R_85()) return true;
+ if (jj_3R_123()) return true;
return false;
}
- final private boolean jj_3_417() {
- if (jj_scan_token(ESCAPE)) return true;
- if (jj_3R_209()) return true;
+ final private boolean jj_3_447() {
+ Token xsp;
+ if (jj_3_446()) return true;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_446()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_924() {
+ if (jj_3R_321()) return true;
+ if (jj_scan_token(WRAPPER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_215() {
+ if (jj_3R_214()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_447()) {
+ jj_scanpos = xsp;
+ if (jj_3R_419()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_919() {
+ if (jj_scan_token(ARRAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_923() {
+ if (jj_3R_319()) return true;
return false;
}
final private boolean jj_3_119() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_129()) return true;
- return false;
- }
-
- final private boolean jj_3_413() {
- if (jj_scan_token(STAR)) return true;
- return false;
- }
-
- final private boolean jj_3_416() {
- if (jj_scan_token(TILDE)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_413()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_412() {
- if (jj_scan_token(STAR)) return true;
- return false;
- }
-
- final private boolean jj_3_411() {
- if (jj_scan_token(SIMILAR)) return true;
- if (jj_scan_token(TO)) return true;
- return false;
- }
-
- final private boolean jj_3_415() {
- if (jj_scan_token(NEGATE)) return true;
- if (jj_scan_token(TILDE)) return true;
- return false;
- }
-
- final private boolean jj_3R_130() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_129()) return true;
- return false;
- }
-
- final private boolean jj_3_410() {
- if (jj_scan_token(RLIKE)) return true;
- return false;
- }
-
- final private boolean jj_3R_322() {
- if (jj_3R_70()) return true;
- return false;
- }
-
- final private boolean jj_3_409() {
- if (jj_scan_token(ILIKE)) return true;
- return false;
- }
-
- final private boolean jj_3_406() {
- if (jj_scan_token(SIMILAR)) return true;
- if (jj_scan_token(TO)) return true;
- return false;
- }
-
- final private boolean jj_3_408() {
- if (jj_scan_token(LIKE)) return true;
- return false;
- }
-
- final private boolean jj_3_405() {
- if (jj_scan_token(RLIKE)) return true;
- return false;
- }
-
- final private boolean jj_3_404() {
- if (jj_scan_token(ILIKE)) return true;
- return false;
- }
-
- final private boolean jj_3_403() {
- if (jj_scan_token(LIKE)) return true;
- return false;
- }
-
- final private boolean jj_3_407() {
- if (jj_scan_token(NOT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_403()) {
- jj_scanpos = xsp;
- if (jj_3_404()) {
- jj_scanpos = xsp;
- if (jj_3_405()) {
- jj_scanpos = xsp;
- if (jj_3_406()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_918() {
- if (jj_3R_321()) return true;
- return false;
- }
-
- final private boolean jj_3_916() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3R_212() {
- if (jj_scan_token(INFIX_CAST)) return true;
- if (jj_3R_122()) return true;
- return false;
- }
-
- final private boolean jj_3_414() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_407()) {
- jj_scanpos = xsp;
- if (jj_3_408()) {
- jj_scanpos = xsp;
- if (jj_3_409()) {
- jj_scanpos = xsp;
- if (jj_3_410()) {
- jj_scanpos = xsp;
- if (jj_3_411()) return true;
- }
- }
- }
- }
+ if (jj_3R_130()) return true;
return false;
}
final private boolean jj_3_917() {
- if (jj_3R_78()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_916()) { jj_scanpos = xsp; break; }
- }
+ if (jj_scan_token(ARRAY)) return true;
return false;
}
- final private boolean jj_3R_310() {
- if (jj_scan_token(JSON_ARRAY)) return true;
+ final private boolean jj_3R_311() {
+ if (jj_scan_token(JSON_QUERY)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3R_240() {
- if (jj_scan_token(INDEX)) return true;
- if (jj_3R_133()) return true;
- if (jj_3R_152()) return true;
+ final private boolean jj_3R_131() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_130()) return true;
return false;
}
- final private boolean jj_3_426() {
+ final private boolean jj_3_918() {
+ if (jj_scan_token(UNCONDITIONAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_916() {
+ if (jj_scan_token(ARRAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_922() {
+ if (jj_scan_token(WITH)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_414()) {
- jj_scanpos = xsp;
- if (jj_3_415()) {
- jj_scanpos = xsp;
- if (jj_3_416()) return true;
- }
- }
+ if (jj_3_918()) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3_919()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3R_216() {
+ if (jj_scan_token(INFIX_CAST)) return true;
+ if (jj_3R_123()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_921() {
+ if (jj_scan_token(WITH)) return true;
+ if (jj_scan_token(CONDITIONAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_403() {
+ if (jj_scan_token(DOT)) return true;
if (jj_3R_211()) return true;
return false;
}
- final private boolean jj_3_399() {
- if (jj_scan_token(ASYMMETRIC)) return true;
- return false;
- }
-
- final private boolean jj_3_400() {
+ final private boolean jj_3R_321() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_398()) {
+ if (jj_3_920()) {
jj_scanpos = xsp;
- if (jj_3_399()) return true;
+ if (jj_3_921()) {
+ jj_scanpos = xsp;
+ if (jj_3_922()) return true;
+ }
}
return false;
}
- final private boolean jj_3_398() {
- if (jj_scan_token(SYMMETRIC)) return true;
+ final private boolean jj_3_920() {
+ if (jj_scan_token(WITHOUT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_916()) jj_scanpos = xsp;
return false;
}
- final private boolean jj_3R_239() {
- if (jj_scan_token(TABLE)) return true;
- if (jj_3R_133()) return true;
- if (jj_3R_152()) return true;
+ final private boolean jj_3R_244() {
+ if (jj_scan_token(INDEX)) return true;
+ if (jj_3R_134()) return true;
+ if (jj_3R_153()) return true;
return false;
}
final private boolean jj_3_915() {
- if (jj_3R_321()) return true;
+ if (jj_scan_token(ERROR)) return true;
return false;
}
- final private boolean jj_3_396() {
- if (jj_scan_token(ASYMMETRIC)) return true;
+ final private boolean jj_3R_393() {
+ if (jj_3R_426()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_914() {
+ if (jj_scan_token(EMPTY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_214() {
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3R_393()) { jj_scanpos = xsp; break; }
+ }
+ if (jj_3R_213()) return true;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_403()) { jj_scanpos = xsp; break; }
+ }
+ if (jj_3R_394()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_243() {
+ if (jj_scan_token(TABLE)) return true;
+ if (jj_3R_134()) return true;
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_913() {
+ if (jj_scan_token(EMPTY)) return true;
+ if (jj_scan_token(OBJECT)) return true;
return false;
}
final private boolean jj_3_402() {
- if (jj_scan_token(BETWEEN)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_400()) jj_scanpos = xsp;
+ if (jj_3R_85()) return true;
+ if (jj_scan_token(RBRACKET)) return true;
return false;
}
- final private boolean jj_3_397() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_395()) {
- jj_scanpos = xsp;
- if (jj_3_396()) return true;
- }
+ final private boolean jj_3_912() {
+ if (jj_scan_token(EMPTY)) return true;
+ if (jj_scan_token(ARRAY)) return true;
return false;
}
- final private boolean jj_3_395() {
- if (jj_scan_token(SYMMETRIC)) return true;
+ final private boolean jj_3R_367() {
return false;
}
- final private boolean jj_3R_363() {
+ final private boolean jj_3_911() {
+ if (jj_scan_token(NULL)) return true;
return false;
}
- final private boolean jj_3R_309() {
- if (jj_scan_token(JSON_OBJECTAGG)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3R_133() {
+ final private boolean jj_3R_134() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_118()) {
jj_scanpos = xsp;
- if (jj_3R_363()) return true;
+ if (jj_3R_367()) return true;
}
return false;
}
@@ -29959,20 +30254,40 @@
return false;
}
- final private boolean jj_3_401() {
- if (jj_scan_token(NOT)) return true;
- if (jj_scan_token(BETWEEN)) return true;
+ final private boolean jj_3R_392() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_425() {
+ final private boolean jj_3_910() {
+ if (jj_scan_token(ERROR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_401() {
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_400() {
+ if (jj_3R_139()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_322() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_401()) {
+ if (jj_3_910()) {
jj_scanpos = xsp;
- if (jj_3_402()) return true;
+ if (jj_3_911()) {
+ jj_scanpos = xsp;
+ if (jj_3_912()) {
+ jj_scanpos = xsp;
+ if (jj_3_913()) return true;
}
- if (jj_3R_210()) return true;
+ }
+ }
+ if (jj_scan_token(ON)) return true;
return false;
}
@@ -29982,8 +30297,22 @@
return false;
}
- final private boolean jj_3_914() {
- if (jj_3R_321()) return true;
+ final private boolean jj_3R_209() {
+ if (jj_scan_token(LBRACKET)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_400()) {
+ jj_scanpos = xsp;
+ if (jj_3_401()) {
+ jj_scanpos = xsp;
+ if (jj_3R_392()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_909() {
+ if (jj_3R_320()) return true;
return false;
}
@@ -30003,54 +30332,56 @@
return false;
}
- final private boolean jj_3_912() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_320()) return true;
+ final private boolean jj_3_398() {
+ if (jj_3R_209()) return true;
return false;
}
- final private boolean jj_3_391() {
- if (jj_scan_token(ALL)) return true;
- return false;
- }
-
- final private boolean jj_3_390() {
- if (jj_scan_token(ANY)) return true;
+ final private boolean jj_3_908() {
+ if (jj_3R_319()) return true;
return false;
}
final private boolean jj_3_114() {
- if (jj_3R_84()) return true;
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_389() {
- if (jj_scan_token(SOME)) return true;
+ final private boolean jj_3R_210() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_913() {
- if (jj_3R_320()) return true;
+ final private boolean jj_3_397() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_394() {
- if (jj_3R_208()) return true;
+ final private boolean jj_3_396() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_389()) {
+ if (jj_3_397()) {
jj_scanpos = xsp;
- if (jj_3_390()) {
- jj_scanpos = xsp;
- if (jj_3_391()) return true;
- }
+ if (jj_3_398()) return true;
}
return false;
}
- final private boolean jj_3R_236() {
+ final private boolean jj_3R_310() {
+ if (jj_scan_token(JSON_VALUE)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_395() {
+ if (jj_3R_209()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_240() {
if (jj_scan_token(INDEX)) return true;
- if (jj_3R_131()) return true;
+ if (jj_3R_132()) return true;
Token xsp;
xsp = jj_scanpos;
if (jj_3_114()) jj_scanpos = xsp;
@@ -30058,116 +30389,66 @@
return false;
}
- final private boolean jj_3R_308() {
- if (jj_scan_token(JSON_OBJECT)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_393() {
- if (jj_scan_token(IN)) return true;
- return false;
- }
-
- final private boolean jj_3_392() {
- if (jj_scan_token(NOT)) return true;
- if (jj_scan_token(IN)) return true;
- return false;
- }
-
- final private boolean jj_3_424() {
+ final private boolean jj_3_399() {
+ if (jj_scan_token(COLON)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_392()) {
+ if (jj_3R_210()) {
jj_scanpos = xsp;
- if (jj_3_393()) {
- jj_scanpos = xsp;
- if (jj_3_394()) return true;
+ if (jj_scan_token(775)) return true;
}
- }
- if (jj_3R_173()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_394() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_907() {
+ if (jj_scan_token(ERROR)) return true;
return false;
}
final private boolean jj_3_113() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_128()) return true;
+ if (jj_3R_129()) return true;
return false;
}
- final private boolean jj_3_911() {
- if (jj_scan_token(ABSENT)) return true;
- if (jj_scan_token(ON)) return true;
+ final private boolean jj_3_906() {
+ if (jj_scan_token(EMPTY)) return true;
return false;
}
- final private boolean jj_3R_321() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_910()) {
- jj_scanpos = xsp;
- if (jj_3_911()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_431() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_424()) {
- jj_scanpos = xsp;
- if (jj_3_425()) {
- jj_scanpos = xsp;
- if (jj_3_426()) {
- jj_scanpos = xsp;
- if (jj_3_427()) {
- jj_scanpos = xsp;
- if (jj_3_428()) {
- jj_scanpos = xsp;
- if (jj_3_429()) {
- jj_scanpos = xsp;
- if (jj_3_430()) return true;
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_910() {
- if (jj_scan_token(NULL)) return true;
- if (jj_scan_token(ON)) return true;
- return false;
- }
-
- final private boolean jj_3_432() {
- Token xsp;
- if (jj_3_431()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_431()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3R_211() {
- if (jj_3R_210()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_432()) {
- jj_scanpos = xsp;
- if (jj_3R_407()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_909() {
+ final private boolean jj_3R_427() {
if (jj_scan_token(COLON)) return true;
return false;
}
+ final private boolean jj_3_905() {
+ if (jj_scan_token(DEFAULT_)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_394() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_427()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_904() {
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_903() {
+ if (jj_scan_token(ERROR)) return true;
+ return false;
+ }
+
final private boolean jj_3_111() {
if (jj_scan_token(DESC)) return true;
return false;
@@ -30188,58 +30469,53 @@
return false;
}
- final private boolean jj_3_906() {
- if (jj_scan_token(KEY)) return true;
- if (jj_3R_319()) return true;
+ final private boolean jj_3R_320() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_903()) {
+ jj_scanpos = xsp;
+ if (jj_3_904()) {
+ jj_scanpos = xsp;
+ if (jj_3_905()) return true;
+ }
+ }
+ if (jj_scan_token(ON)) return true;
return false;
}
- final private boolean jj_3_908() {
- if (jj_scan_token(COMMA)) return true;
+ final private boolean jj_3R_129() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3R_128() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3R_82() {
+ if (jj_3R_215()) return true;
return false;
}
- final private boolean jj_3_907() {
- if (jj_scan_token(VALUE)) return true;
+ final private boolean jj_3_902() {
+ if (jj_3R_318()) return true;
+ if (jj_scan_token(ON)) return true;
return false;
}
- final private boolean jj_3R_402() {
- if (jj_scan_token(KEY)) return true;
- return false;
- }
-
- final private boolean jj_3R_126() {
+ final private boolean jj_3R_127() {
return false;
}
final private boolean jj_3_107() {
- if (jj_3R_124()) return true;
+ if (jj_3R_125()) return true;
return false;
}
- final private boolean jj_3R_412() {
+ final private boolean jj_3R_79() {
+ if (jj_3R_82()) return true;
return false;
}
- final private boolean jj_3R_320() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_402()) jj_scanpos = xsp;
- if (jj_3R_319()) return true;
- xsp = jj_scanpos;
- if (jj_3_907()) {
- jj_scanpos = xsp;
- if (jj_3_908()) {
- jj_scanpos = xsp;
- if (jj_3_909()) return true;
- }
- }
+ final private boolean jj_3R_309() {
+ if (jj_scan_token(JSON_EXISTS)) return true;
+ if (jj_scan_token(LPAREN)) return true;
return false;
}
@@ -30248,124 +30524,139 @@
xsp = jj_scanpos;
if (jj_3_107()) {
jj_scanpos = xsp;
- if (jj_3R_126()) return true;
- }
if (jj_3R_127()) return true;
+ }
+ if (jj_3R_128()) return true;
if (jj_scan_token(AS)) return true;
- if (jj_3R_79()) return true;
+ if (jj_3R_80()) return true;
return false;
}
final private boolean jj_3_108() {
- if (jj_3R_125()) return true;
+ if (jj_3R_126()) return true;
return false;
}
- final private boolean jj_3R_319() {
- if (jj_3R_81()) return true;
+ final private boolean jj_3_393() {
+ if (jj_3R_82()) return true;
return false;
}
- final private boolean jj_3_388() {
- if (jj_scan_token(DOT)) return true;
+ final private boolean jj_3R_254() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_392()) {
+ jj_scanpos = xsp;
+ if (jj_3_393()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_392() {
if (jj_3R_207()) return true;
return false;
}
- final private boolean jj_3R_375() {
+ final private boolean jj_3_901() {
+ if (jj_scan_token(ERROR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_900() {
+ if (jj_scan_token(UNKNOWN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_899() {
+ if (jj_scan_token(FALSE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_318() {
Token xsp;
xsp = jj_scanpos;
- lookingAhead = true;
- jj_semLA = false;
- lookingAhead = false;
- if (!jj_semLA || jj_3R_412()) return true;
- if (jj_scan_token(ZONE)) return true;
+ if (jj_3_898()) {
+ jj_scanpos = xsp;
+ if (jj_3_899()) {
+ jj_scanpos = xsp;
+ if (jj_3_900()) {
+ jj_scanpos = xsp;
+ if (jj_3_901()) return true;
+ }
+ }
+ }
return false;
}
- final private boolean jj_3R_235() {
+ final private boolean jj_3_898() {
+ if (jj_scan_token(TRUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_239() {
if (jj_scan_token(TABLE)) return true;
- if (jj_3R_131()) return true;
- if (jj_3R_152()) return true;
+ if (jj_3R_132()) return true;
+ if (jj_3R_153()) return true;
return false;
}
- final private boolean jj_3R_383() {
- if (jj_3R_414()) return true;
+ final private boolean jj_3_391() {
+ if (jj_3R_125()) return true;
return false;
}
- final private boolean jj_3R_210() {
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3R_383()) { jj_scanpos = xsp; break; }
- }
- if (jj_3R_209()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_388()) { jj_scanpos = xsp; break; }
- }
+ final private boolean jj_3R_208() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_905() {
- if (jj_3R_318()) return true;
+ final private boolean jj_3_896() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_389() {
+ if (jj_scan_token(RECURSIVE)) return true;
return false;
}
final private boolean jj_3_106() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_123()) return true;
+ if (jj_3R_124()) return true;
return false;
}
- final private boolean jj_3_904() {
- if (jj_3R_317()) return true;
- if (jj_scan_token(WRAPPER)) return true;
+ final private boolean jj_3_390() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_208()) return true;
return false;
}
- final private boolean jj_3R_81() {
- if (jj_3R_211()) return true;
+ final private boolean jj_3R_206() {
+ if (jj_scan_token(WITH)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_389()) jj_scanpos = xsp;
+ if (jj_3R_208()) return true;
return false;
}
- final private boolean jj_3_899() {
- if (jj_scan_token(ARRAY)) return true;
- return false;
- }
-
- final private boolean jj_3R_125() {
+ final private boolean jj_3R_126() {
if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_123()) return true;
- return false;
- }
-
- final private boolean jj_3_903() {
- if (jj_3R_315()) return true;
+ if (jj_3R_124()) return true;
return false;
}
final private boolean jj_3_897() {
- if (jj_scan_token(ARRAY)) return true;
- return false;
- }
-
- final private boolean jj_3R_78() {
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3R_307() {
- if (jj_scan_token(JSON_QUERY)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(PASSING)) return true;
+ if (jj_3R_82()) return true;
return false;
}
final private boolean jj_3_103() {
if (jj_scan_token(CONSTRAINT)) return true;
- if (jj_3R_84()) return true;
+ if (jj_3R_85()) return true;
return false;
}
@@ -30378,96 +30669,30 @@
return false;
}
- final private boolean jj_3_898() {
- if (jj_scan_token(UNCONDITIONAL)) return true;
- return false;
- }
-
- final private boolean jj_3_387() {
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3R_250() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_386()) {
- jj_scanpos = xsp;
- if (jj_3_387()) return true;
- }
- return false;
- }
-
final private boolean jj_3_102() {
if (jj_scan_token(PRIMARY)) return true;
if (jj_scan_token(KEY)) return true;
return false;
}
- final private boolean jj_3_386() {
- if (jj_3R_206()) return true;
+ final private boolean jj_3R_68() {
+ if (jj_3R_348()) return true;
return false;
}
- final private boolean jj_3_896() {
- if (jj_scan_token(ARRAY)) return true;
- return false;
- }
-
- final private boolean jj_3_902() {
- if (jj_scan_token(WITH)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_898()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3_899()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_901() {
- if (jj_scan_token(WITH)) return true;
- if (jj_scan_token(CONDITIONAL)) return true;
+ final private boolean jj_3_895() {
+ if (jj_scan_token(FORMAT)) return true;
+ if (jj_3R_317()) return true;
return false;
}
final private boolean jj_3_101() {
if (jj_scan_token(DEFAULT_)) return true;
- if (jj_3R_119()) return true;
+ if (jj_3R_120()) return true;
return false;
}
- final private boolean jj_3_385() {
- if (jj_3R_124()) return true;
- return false;
- }
-
- final private boolean jj_3R_317() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_900()) {
- jj_scanpos = xsp;
- if (jj_3_901()) {
- jj_scanpos = xsp;
- if (jj_3_902()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_900() {
- if (jj_scan_token(WITHOUT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_896()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3R_205() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3R_123() {
+ final private boolean jj_3R_124() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_104()) {
@@ -30478,84 +30703,52 @@
}
final private boolean jj_3_104() {
- if (jj_3R_84()) return true;
- if (jj_3R_122()) return true;
+ if (jj_3R_85()) return true;
+ if (jj_3R_123()) return true;
return false;
}
- final private boolean jj_3_383() {
- if (jj_scan_token(RECURSIVE)) return true;
- return false;
- }
-
- final private boolean jj_3_895() {
- if (jj_scan_token(ERROR)) return true;
- return false;
- }
-
- final private boolean jj_3_384() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_205()) return true;
- return false;
- }
-
- final private boolean jj_3_894() {
- if (jj_scan_token(EMPTY)) return true;
- return false;
- }
-
- final private boolean jj_3R_204() {
- if (jj_scan_token(WITH)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_383()) jj_scanpos = xsp;
- if (jj_3R_205()) return true;
- return false;
- }
-
- final private boolean jj_3_893() {
- if (jj_scan_token(EMPTY)) return true;
- if (jj_scan_token(OBJECT)) return true;
- return false;
- }
-
- final private boolean jj_3R_121() {
- if (jj_scan_token(INTERVAL)) return true;
- if (jj_3R_215()) return true;
- return false;
- }
-
- final private boolean jj_3_892() {
- if (jj_scan_token(EMPTY)) return true;
- if (jj_scan_token(ARRAY)) return true;
- return false;
- }
-
- final private boolean jj_3_891() {
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_100() {
+ final private boolean jj_3R_319() {
+ if (jj_scan_token(RETURNING)) return true;
if (jj_3R_121()) return true;
return false;
}
+ final private boolean jj_3R_122() {
+ if (jj_scan_token(INTERVAL)) return true;
+ if (jj_3R_219()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_893() {
+ if (jj_scan_token(UTF32)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_892() {
+ if (jj_scan_token(UTF16)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_891() {
+ if (jj_scan_token(UTF8)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_100() {
+ if (jj_3R_122()) return true;
+ return false;
+ }
+
final private boolean jj_3_99() {
- if (jj_3R_120()) return true;
+ if (jj_3R_121()) return true;
return false;
}
- final private boolean jj_3_890() {
- if (jj_scan_token(ERROR)) return true;
- return false;
- }
-
- final private boolean jj_3R_318() {
+ final private boolean jj_3_894() {
+ if (jj_scan_token(ENCODING)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_890()) {
- jj_scanpos = xsp;
if (jj_3_891()) {
jj_scanpos = xsp;
if (jj_3_892()) {
@@ -30563,12 +30756,10 @@
if (jj_3_893()) return true;
}
}
- }
- if (jj_scan_token(ON)) return true;
return false;
}
- final private boolean jj_3R_122() {
+ final private boolean jj_3R_123() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_99()) {
@@ -30578,40 +30769,121 @@
return false;
}
- final private boolean jj_3R_67() {
- if (jj_3R_344()) return true;
+ final private boolean jj_3R_317() {
+ if (jj_scan_token(JSON)) return true;
return false;
}
- final private boolean jj_3_98() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3_388() {
+ if (jj_3R_68()) return true;
return false;
}
- final private boolean jj_3_97() {
- if (jj_3R_119()) return true;
+ final private boolean jj_3_387() {
+ if (jj_3R_207()) return true;
return false;
}
- final private boolean jj_3_889() {
+ final private boolean jj_3_386() {
+ if (jj_3R_206()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_890() {
if (jj_3R_316()) return true;
return false;
}
- final private boolean jj_3R_118() {
- if (jj_3R_359()) return true;
- if (jj_scan_token(EQ)) return true;
+ final private boolean jj_3_98() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_888() {
+ final private boolean jj_3_889() {
if (jj_3R_315()) return true;
return false;
}
- final private boolean jj_3R_306() {
- if (jj_scan_token(JSON_VALUE)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3_97() {
+ if (jj_3R_120()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_888() {
+ if (jj_3R_314()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_69() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_386()) {
+ jj_scanpos = xsp;
+ if (jj_3_387()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_887() {
+ if (jj_3R_313()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_886() {
+ if (jj_3R_312()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_119() {
+ if (jj_3R_363()) return true;
+ if (jj_scan_token(EQ)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_885() {
+ if (jj_3R_311()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_884() {
+ if (jj_3R_310()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_385() {
+ if (jj_3R_68()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_883() {
+ if (jj_3R_309()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_384() {
+ if (jj_3R_206()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_882() {
+ if (jj_3R_308()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_351() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_384()) jj_scanpos = xsp;
+ if (jj_3R_254()) return true;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_385()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_881() {
+ if (jj_3R_307()) return true;
return false;
}
@@ -30620,33 +30892,58 @@
return false;
}
+ final private boolean jj_3_880() {
+ if (jj_3R_306()) return true;
+ return false;
+ }
+
final private boolean jj_3_95() {
if (jj_scan_token(WRAP_KEY)) return true;
return false;
}
+ final private boolean jj_3_879() {
+ if (jj_3R_305()) return true;
+ return false;
+ }
+
final private boolean jj_3_94() {
if (jj_scan_token(ENCRYPTED)) return true;
return false;
}
+ final private boolean jj_3_878() {
+ if (jj_3R_304()) return true;
+ return false;
+ }
+
final private boolean jj_3_93() {
if (jj_scan_token(VALUE_TYPE)) return true;
return false;
}
+ final private boolean jj_3_877() {
+ if (jj_3R_303()) return true;
+ return false;
+ }
+
final private boolean jj_3_92() {
if (jj_scan_token(KEY_TYPE)) return true;
return false;
}
+ final private boolean jj_3_876() {
+ if (jj_3R_302()) return true;
+ return false;
+ }
+
final private boolean jj_3_91() {
if (jj_scan_token(DATA_REGION)) return true;
return false;
}
- final private boolean jj_3_887() {
- if (jj_scan_token(ERROR)) return true;
+ final private boolean jj_3_875() {
+ if (jj_3R_301()) return true;
return false;
}
@@ -30655,13 +30952,18 @@
return false;
}
+ final private boolean jj_3_874() {
+ if (jj_3R_300()) return true;
+ return false;
+ }
+
final private boolean jj_3_89() {
if (jj_scan_token(CACHE_GROUP)) return true;
return false;
}
- final private boolean jj_3_886() {
- if (jj_scan_token(EMPTY)) return true;
+ final private boolean jj_3_873() {
+ if (jj_3R_299()) return true;
return false;
}
@@ -30670,28 +30972,37 @@
return false;
}
+ final private boolean jj_3_872() {
+ if (jj_3R_298()) return true;
+ return false;
+ }
+
final private boolean jj_3_87() {
if (jj_scan_token(ATOMICITY)) return true;
return false;
}
+ final private boolean jj_3_871() {
+ if (jj_3R_297()) return true;
+ return false;
+ }
+
final private boolean jj_3_86() {
if (jj_scan_token(AFFINITY_KEY)) return true;
return false;
}
+ final private boolean jj_3_870() {
+ if (jj_3R_296()) return true;
+ return false;
+ }
+
final private boolean jj_3_85() {
if (jj_scan_token(BACKUPS)) return true;
return false;
}
- final private boolean jj_3_885() {
- if (jj_scan_token(DEFAULT_)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3R_359() {
+ final private boolean jj_3R_363() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_84()) {
@@ -30739,56 +31050,38 @@
return false;
}
+ final private boolean jj_3_857() {
+ if (jj_scan_token(FROM)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
final private boolean jj_3_80() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_118()) return true;
- return false;
- }
-
- final private boolean jj_3_884() {
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_382() {
- if (jj_3R_67()) return true;
- return false;
- }
-
- final private boolean jj_3_381() {
- if (jj_3R_204()) return true;
- return false;
- }
-
- final private boolean jj_3_883() {
- if (jj_scan_token(ERROR)) return true;
- return false;
- }
-
- final private boolean jj_3R_68() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_381()) jj_scanpos = xsp;
- if (jj_3R_206()) return true;
+ if (jj_3R_119()) return true;
return false;
}
final private boolean jj_3_82() {
- if (jj_3R_118()) return true;
+ if (jj_3R_119()) return true;
return false;
}
- final private boolean jj_3R_316() {
+ final private boolean jj_3_856() {
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_859() {
+ if (jj_3R_82()) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_883()) {
- jj_scanpos = xsp;
- if (jj_3_884()) {
- jj_scanpos = xsp;
- if (jj_3_885()) return true;
- }
- }
- if (jj_scan_token(ON)) return true;
+ if (jj_3_857()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_855() {
+ if (jj_scan_token(LEADING)) return true;
return false;
}
@@ -30797,31 +31090,8 @@
return false;
}
- final private boolean jj_3_380() {
- if (jj_3R_67()) return true;
- return false;
- }
-
- final private boolean jj_3_379() {
- if (jj_3R_204()) return true;
- return false;
- }
-
- final private boolean jj_3R_347() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_379()) jj_scanpos = xsp;
- if (jj_3R_250()) return true;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_380()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3_882() {
- if (jj_3R_314()) return true;
- if (jj_scan_token(ON)) return true;
+ final private boolean jj_3_854() {
+ if (jj_scan_token(TRAILING)) return true;
return false;
}
@@ -30836,251 +31106,835 @@
return false;
}
- final private boolean jj_3R_127() {
+ final private boolean jj_3_853() {
+ if (jj_scan_token(BOTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_205() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_128() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_83()) jj_scanpos = xsp;
return false;
}
- final private boolean jj_3R_305() {
- if (jj_scan_token(JSON_EXISTS)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3_858() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_853()) {
+ jj_scanpos = xsp;
+ if (jj_3_854()) {
+ jj_scanpos = xsp;
+ if (jj_3_855()) return true;
+ }
+ }
+ xsp = jj_scanpos;
+ if (jj_3_856()) jj_scanpos = xsp;
+ if (jj_scan_token(FROM)) return true;
return false;
}
- final private boolean jj_3R_362() {
+ final private boolean jj_3R_366() {
return false;
}
- final private boolean jj_3R_131() {
+ final private boolean jj_3_1829() {
+ if (jj_scan_token(FRIDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1828() {
+ if (jj_scan_token(TUESDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_132() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_79()) {
jj_scanpos = xsp;
- if (jj_3R_362()) return true;
+ if (jj_3R_366()) return true;
}
return false;
}
+ final private boolean jj_3_1827() {
+ if (jj_scan_token(WITHOUT)) return true;
+ return false;
+ }
+
final private boolean jj_3_79() {
if (jj_scan_token(IF)) return true;
if (jj_scan_token(NOT)) return true;
return false;
}
- final private boolean jj_3_881() {
- if (jj_scan_token(ERROR)) return true;
+ final private boolean jj_3_383() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_205()) return true;
return false;
}
- final private boolean jj_3_880() {
+ final private boolean jj_3_1826() {
+ if (jj_scan_token(WIDTH_BUCKET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1825() {
+ if (jj_scan_token(VAR_SAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_851() {
+ if (jj_scan_token(COMMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1824() {
+ if (jj_scan_token(VARCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1823() {
+ if (jj_scan_token(VALUE_OF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1822() {
+ if (jj_scan_token(UPSERT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1821() {
if (jj_scan_token(UNKNOWN)) return true;
return false;
}
- final private boolean jj_3_879() {
- if (jj_scan_token(FALSE)) return true;
+ final private boolean jj_3_1820() {
+ if (jj_scan_token(TRY_CAST)) return true;
return false;
}
- final private boolean jj_3R_314() {
+ final private boolean jj_3_849() {
+ if (jj_scan_token(COMMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_869() {
+ if (jj_scan_token(TRIM)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1819() {
+ if (jj_scan_token(TRIM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1818() {
+ if (jj_scan_token(TRANSLATION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1817() {
+ if (jj_scan_token(TINYINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_850() {
+ if (jj_scan_token(FOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1816() {
+ if (jj_scan_token(TIMESTAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_852() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_878()) {
+ if (jj_3_850()) {
jj_scanpos = xsp;
- if (jj_3_879()) {
- jj_scanpos = xsp;
- if (jj_3_880()) {
- jj_scanpos = xsp;
- if (jj_3_881()) return true;
+ if (jj_3_851()) return true;
}
- }
- }
- return false;
- }
-
- final private boolean jj_3_878() {
- if (jj_scan_token(TRUE)) return true;
- return false;
- }
-
- final private boolean jj_3_876() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_78() {
- if (jj_3R_117()) return true;
- return false;
- }
-
- final private boolean jj_3_77() {
- if (jj_3R_116()) return true;
- return false;
- }
-
- final private boolean jj_3_76() {
- if (jj_3R_115()) return true;
- return false;
- }
-
- final private boolean jj_3_75() {
- if (jj_3R_114()) return true;
- return false;
- }
-
- final private boolean jj_3_74() {
- if (jj_3R_113()) return true;
- return false;
- }
-
- final private boolean jj_3_877() {
- if (jj_scan_token(PASSING)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_73() {
- if (jj_3R_112()) return true;
- return false;
- }
-
- final private boolean jj_3R_203() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_72() {
- if (jj_3R_111()) return true;
- return false;
- }
-
- final private boolean jj_3_71() {
if (jj_3R_79()) return true;
return false;
}
+ final private boolean jj_3_1815() {
+ if (jj_scan_token(SYSTEM_USER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1814() {
+ if (jj_scan_token(SUM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1813() {
+ if (jj_scan_token(SUBSTRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1812() {
+ if (jj_scan_token(STREAM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_847() {
+ if (jj_scan_token(CEILING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1811() {
+ if (jj_scan_token(STATIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_848() {
+ if (jj_scan_token(FROM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1810() {
+ if (jj_scan_token(SQLWARNING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1809() {
+ if (jj_scan_token(SQL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1808() {
+ if (jj_scan_token(SMALLINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1807() {
+ if (jj_scan_token(SHOW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1806() {
+ if (jj_scan_token(SEEK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_868() {
+ if (jj_scan_token(SUBSTRING)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1805() {
+ if (jj_scan_token(SCROLL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_78() {
+ if (jj_3R_118()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1804() {
+ if (jj_scan_token(SAFE_ORDINAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1803() {
+ if (jj_scan_token(RUNNING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_77() {
+ if (jj_3R_117()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_846() {
+ if (jj_scan_token(CEIL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_204() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1802() {
+ if (jj_scan_token(ROLLUP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1801() {
+ if (jj_scan_token(RETURNS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_76() {
+ if (jj_3R_116()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_867() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_846()) {
+ jj_scanpos = xsp;
+ if (jj_3_847()) return true;
+ }
+ if (jj_3R_295()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1800() {
+ if (jj_scan_token(RESET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1799() {
+ if (jj_scan_token(REGR_SXY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_75() {
+ if (jj_3R_115()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1798() {
+ if (jj_scan_token(REGR_R2)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1797() {
+ if (jj_scan_token(REGR_AVGY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_74() {
+ if (jj_3R_114()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1796() {
+ if (jj_scan_token(REFERENCES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_866() {
+ if (jj_scan_token(FLOOR)) return true;
+ if (jj_3R_295()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1795() {
+ if (jj_scan_token(REAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_73() {
+ if (jj_3R_113()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1794() {
+ if (jj_scan_token(RANGE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_382() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_204()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1793() {
+ if (jj_scan_token(PREV)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_72() {
+ if (jj_3R_112()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_845() {
+ if (jj_scan_token(FOR)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1792() {
+ if (jj_scan_token(PRECEDES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_196() {
+ if (jj_3R_204()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1791() {
+ if (jj_scan_token(POSITION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_71() {
+ if (jj_3R_80()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1790() {
+ if (jj_scan_token(PERIOD)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1789() {
+ if (jj_scan_token(PERCENTILE_CONT)) return true;
+ return false;
+ }
+
final private boolean jj_3_70() {
- if (jj_3R_110()) return true;
+ if (jj_3R_111()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1788() {
+ if (jj_scan_token(PATTERN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1787() {
+ if (jj_scan_token(OVERLAPS)) return true;
return false;
}
final private boolean jj_3_69() {
- if (jj_3R_109()) return true;
+ if (jj_3R_110()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_865() {
+ if (jj_scan_token(OVERLAY)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1786() {
+ if (jj_scan_token(ORDINAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_842() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1785() {
+ if (jj_scan_token(ONE)) return true;
return false;
}
final private boolean jj_3_68() {
- if (jj_3R_108()) return true;
+ if (jj_3R_109()) return true;
return false;
}
- final private boolean jj_3_67() {
- if (jj_3R_107()) return true;
+ final private boolean jj_3_1784() {
+ if (jj_scan_token(OF)) return true;
return false;
}
- final private boolean jj_3_66() {
- if (jj_3R_106()) return true;
- return false;
- }
-
- final private boolean jj_3_378() {
+ final private boolean jj_3_377() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_203()) return true;
return false;
}
+ final private boolean jj_3_844() {
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_842()) { jj_scanpos = xsp; break; }
+ }
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1783() {
+ if (jj_scan_token(NUMERIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_67() {
+ if (jj_3R_108()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1782() {
+ if (jj_scan_token(NTH_VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1781() {
+ if (jj_scan_token(NO)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_66() {
+ if (jj_3R_107()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1780() {
+ if (jj_scan_token(NCLOB)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1779() {
+ if (jj_scan_token(MULTISET)) return true;
+ return false;
+ }
+
final private boolean jj_3_65() {
- if (jj_3R_105()) return true;
+ if (jj_3R_106()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1778() {
+ if (jj_scan_token(MODIFIES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_843() {
+ if (jj_scan_token(USING)) return true;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1777() {
+ if (jj_scan_token(MIN)) return true;
return false;
}
final private boolean jj_3_64() {
- if (jj_3R_104()) return true;
+ if (jj_3R_105()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1776() {
+ if (jj_scan_token(MEASURES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1775() {
+ if (jj_scan_token(MATCH_RECOGNIZE)) return true;
return false;
}
final private boolean jj_3_63() {
- if (jj_3R_103()) return true;
+ if (jj_3R_104()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1774() {
+ if (jj_scan_token(MATCHES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_381() {
+ if (jj_scan_token(PERMUTE)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_838() {
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1773() {
+ if (jj_scan_token(LOCAL)) return true;
return false;
}
final private boolean jj_3_62() {
- if (jj_3R_102()) return true;
+ if (jj_3R_103()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1772() {
+ if (jj_scan_token(LEAD)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_837() {
+ if (jj_3R_200()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1771() {
+ if (jj_scan_token(LARGE)) return true;
return false;
}
final private boolean jj_3_61() {
- if (jj_3R_101()) return true;
+ if (jj_3R_102()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1770() {
+ if (jj_scan_token(JSON_VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_864() {
+ if (jj_scan_token(TRANSLATE)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1769() {
+ if (jj_scan_token(JSON_OBJECTAGG)) return true;
return false;
}
final private boolean jj_3_60() {
- if (jj_3R_100()) return true;
+ if (jj_3R_101()) return true;
return false;
}
- final private boolean jj_3_875() {
- if (jj_scan_token(FORMAT)) return true;
- if (jj_3R_313()) return true;
+ final private boolean jj_3_1768() {
+ if (jj_scan_token(JSON_ARRAYAGG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_380() {
+ if (jj_scan_token(LBRACE)) return true;
+ if (jj_scan_token(MINUS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1767() {
+ if (jj_scan_token(INTEGER)) return true;
return false;
}
final private boolean jj_3_59() {
- if (jj_3R_99()) return true;
+ if (jj_3R_100()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1766() {
+ if (jj_scan_token(INOUT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_379() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_203()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_839() {
+ if (jj_scan_token(COMMA)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_837()) {
+ jj_scanpos = xsp;
+ if (jj_3_838()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1765() {
+ if (jj_scan_token(IMPORT)) return true;
return false;
}
final private boolean jj_3_58() {
- if (jj_3R_98()) return true;
+ if (jj_3R_99()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_389() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_378()) {
+ jj_scanpos = xsp;
+ if (jj_3_379()) {
+ jj_scanpos = xsp;
+ if (jj_3_380()) {
+ jj_scanpos = xsp;
+ if (jj_3_381()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1764() {
+ if (jj_scan_token(HOLD)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_378() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1763() {
+ if (jj_scan_token(GRANT)) return true;
return false;
}
final private boolean jj_3_57() {
- if (jj_3R_97()) return true;
+ if (jj_3R_98()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1762() {
+ if (jj_scan_token(FUSION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1761() {
+ if (jj_scan_token(FRAME_ROW)) return true;
return false;
}
final private boolean jj_3_56() {
- if (jj_3R_96()) return true;
+ if (jj_3R_97()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_836() {
+ if (jj_scan_token(INTERVAL)) return true;
+ if (jj_3R_219()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1760() {
+ if (jj_scan_token(FLOAT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1759() {
+ if (jj_scan_token(EXTRACT)) return true;
return false;
}
final private boolean jj_3_55() {
- if (jj_3R_95()) return true;
+ if (jj_3R_96()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_835() {
+ if (jj_3R_121()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1758() {
+ if (jj_scan_token(EXP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1757() {
+ if (jj_scan_token(EVERY)) return true;
return false;
}
final private boolean jj_3_54() {
- if (jj_3R_94()) return true;
+ if (jj_3R_95()) return true;
return false;
}
- final private boolean jj_3R_202() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3_1756() {
+ if (jj_scan_token(END_PARTITION)) return true;
return false;
}
- final private boolean jj_3R_315() {
- if (jj_scan_token(RETURNING)) return true;
- if (jj_3R_120()) return true;
+ final private boolean jj_3_1755() {
+ if (jj_scan_token(END)) return true;
return false;
}
final private boolean jj_3_53() {
- if (jj_3R_93()) return true;
+ if (jj_3R_94()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_832() {
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1754() {
+ if (jj_scan_token(EACH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_841() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_835()) {
+ jj_scanpos = xsp;
+ if (jj_3_836()) return true;
+ }
+ if (jj_scan_token(COMMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_391() {
+ return false;
+ }
+
+ final private boolean jj_3_1753() {
+ if (jj_scan_token(DISCONNECT)) return true;
return false;
}
final private boolean jj_3_52() {
- if (jj_3R_92()) return true;
+ if (jj_3R_93()) return true;
return false;
}
- final private boolean jj_3R_91() {
+ final private boolean jj_3_1752() {
+ if (jj_scan_token(DESCRIBE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1751() {
+ if (jj_scan_token(DEFINE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1750() {
+ if (jj_scan_token(DEC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1749() {
+ if (jj_scan_token(DATETIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_831() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_92() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_52()) {
@@ -31165,40 +32019,125 @@
return false;
}
- final private boolean jj_3_377() {
+ final private boolean jj_3_1748() {
+ if (jj_scan_token(CURSOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_376() {
+ if (jj_scan_token(HOOK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1747() {
+ if (jj_scan_token(CURRENT_ROLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1746() {
+ if (jj_scan_token(CURRENT_CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1745() {
+ if (jj_scan_token(CUBE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1744() {
+ if (jj_scan_token(COUNT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1743() {
+ if (jj_scan_token(CONVERT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_371() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_3R_203()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_834() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_202()) return true;
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3R_194() {
- if (jj_3R_202()) return true;
+ final private boolean jj_3_1742() {
+ if (jj_scan_token(CONDITION)) return true;
return false;
}
- final private boolean jj_3_873() {
- if (jj_scan_token(UTF32)) return true;
+ final private boolean jj_3_1741() {
+ if (jj_scan_token(COLLATE)) return true;
return false;
}
- final private boolean jj_3_872() {
- if (jj_scan_token(UTF16)) return true;
+ final private boolean jj_3_1740() {
+ if (jj_scan_token(CLOB)) return true;
return false;
}
final private boolean jj_3_50() {
- if (jj_3R_91()) return true;
+ if (jj_3R_92()) return true;
return false;
}
- final private boolean jj_3_871() {
- if (jj_scan_token(UTF8)) return true;
+ final private boolean jj_3R_202() {
return false;
}
- final private boolean jj_3_372() {
+ final private boolean jj_3R_201() {
+ return false;
+ }
+
+ final private boolean jj_3_1739() {
+ if (jj_scan_token(CHAR_LENGTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1738() {
+ if (jj_scan_token(CHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_370() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_201()) return true;
+ if (jj_3R_200()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_833() {
+ if (jj_scan_token(USING)) return true;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1737() {
+ if (jj_scan_token(CASCADED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_367() {
+ if (jj_3R_200()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1736() {
+ if (jj_scan_token(CALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1735() {
+ if (jj_scan_token(BIT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1734() {
+ if (jj_scan_token(BEGIN_PARTITION)) return true;
return false;
}
@@ -31210,33 +32149,70 @@
return false;
}
- final private boolean jj_3_874() {
- if (jj_scan_token(ENCODING)) return true;
+ final private boolean jj_3_1733() {
+ if (jj_scan_token(AVG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1732() {
+ if (jj_scan_token(AT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1731() {
+ if (jj_scan_token(ARRAY_MAX_CARDINALITY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_368() {
+ if (jj_scan_token(COMMA)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_871()) {
+ if (jj_3_367()) {
jj_scanpos = xsp;
- if (jj_3_872()) {
- jj_scanpos = xsp;
- if (jj_3_873()) return true;
- }
+ if (jj_3R_201()) return true;
}
return false;
}
- final private boolean jj_3_376() {
- if (jj_scan_token(PERMUTE)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3_840() {
+ if (jj_3R_79()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_833()) {
+ jj_scanpos = xsp;
+ if (jj_3_834()) return true;
+ }
return false;
}
- final private boolean jj_3R_313() {
- if (jj_scan_token(JSON)) return true;
+ final private boolean jj_3_1730() {
+ if (jj_scan_token(ALLOCATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1729() {
+ if (jj_scan_token(MAX_CHANGED_PARTITION_ROWS_PERCENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1728() {
+ if (jj_scan_token(STATISTICS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1727() {
+ if (jj_scan_token(COMPUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1726() {
+ if (jj_scan_token(SCAN)) return true;
return false;
}
final private boolean jj_3_51() {
- if (jj_3R_91()) return true;
+ if (jj_3R_92()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
@@ -31245,1744 +32221,465 @@
return false;
}
- final private boolean jj_3_375() {
- if (jj_scan_token(LBRACE)) return true;
- if (jj_scan_token(MINUS)) return true;
+ final private boolean jj_3_1725() {
+ if (jj_scan_token(NOLOGGING)) return true;
return false;
}
- final private boolean jj_3_870() {
- if (jj_3R_312()) return true;
- return false;
- }
-
- final private boolean jj_3_374() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_201()) return true;
- return false;
- }
-
- final private boolean jj_3_869() {
- if (jj_3R_311()) return true;
- return false;
- }
-
- final private boolean jj_3R_380() {
+ final private boolean jj_3_369() {
+ if (jj_3R_200()) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_373()) {
+ if (jj_3_368()) {
jj_scanpos = xsp;
- if (jj_3_374()) {
+ if (jj_3R_202()) return true;
+ }
+ if (jj_scan_token(RBRACE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1724() {
+ if (jj_scan_token(PARALLEL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1723() {
+ if (jj_scan_token(WRAP_KEY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1722() {
+ if (jj_scan_token(CACHE_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1721() {
+ if (jj_scan_token(ATOMICITY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1720() {
+ if (jj_scan_token(TEMPLATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1719() {
+ if (jj_scan_token(XML)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_375() {
+ if (jj_scan_token(LBRACE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_369()) {
jj_scanpos = xsp;
- if (jj_3_375()) {
+ if (jj_3_370()) {
jj_scanpos = xsp;
- if (jj_3_376()) return true;
+ if (jj_3_371()) return true;
}
}
- }
return false;
}
- final private boolean jj_3_373() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3_863() {
+ if (jj_scan_token(CONVERT)) return true;
+ if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3_868() {
- if (jj_3R_310()) return true;
+ final private boolean jj_3_1718() {
+ if (jj_scan_token(WORK)) return true;
return false;
}
- final private boolean jj_3_867() {
- if (jj_3R_309()) return true;
+ final private boolean jj_3_1717() {
+ if (jj_scan_token(VIEW)) return true;
return false;
}
- final private boolean jj_3R_90() {
+ final private boolean jj_3_1716() {
+ if (jj_scan_token(UTF32)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_830() {
+ if (jj_scan_token(FROM)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_91() {
if (jj_scan_token(LPAREN)) return true;
if (jj_scan_token(RPAREN)) return true;
return false;
}
- final private boolean jj_3_866() {
- if (jj_3R_308()) return true;
+ final private boolean jj_3_1715() {
+ if (jj_scan_token(USER_DEFINED_TYPE_NAME)) return true;
return false;
}
- final private boolean jj_3_865() {
- if (jj_3R_307()) return true;
+ final private boolean jj_3_1714() {
+ if (jj_scan_token(USAGE)) return true;
return false;
}
- final private boolean jj_3_864() {
- if (jj_3R_306()) return true;
- return false;
- }
-
- final private boolean jj_3_863() {
- if (jj_3R_305()) return true;
- return false;
- }
-
- final private boolean jj_3R_382() {
- return false;
- }
-
- final private boolean jj_3_862() {
- if (jj_3R_304()) return true;
- return false;
- }
-
- final private boolean jj_3_861() {
- if (jj_3R_303()) return true;
- return false;
- }
-
- final private boolean jj_3_371() {
+ final private boolean jj_3_374() {
if (jj_scan_token(HOOK)) return true;
return false;
}
- final private boolean jj_3_860() {
- if (jj_3R_302()) return true;
+ final private boolean jj_3_1713() {
+ if (jj_scan_token(UNDER)) return true;
return false;
}
- final private boolean jj_3_859() {
- if (jj_3R_301()) return true;
+ final private boolean jj_3_1712() {
+ if (jj_scan_token(UNBOUNDED)) return true;
return false;
}
- final private boolean jj_3_858() {
- if (jj_3R_300()) return true;
+ final private boolean jj_3_1711() {
+ if (jj_scan_token(TRIGGER_SCHEMA)) return true;
return false;
}
- final private boolean jj_3_366() {
- if (jj_scan_token(MINUS)) return true;
- if (jj_3R_201()) return true;
+ final private boolean jj_3_1710() {
+ if (jj_scan_token(TRANSFORMS)) return true;
return false;
}
- final private boolean jj_3_857() {
- if (jj_3R_299()) return true;
+ final private boolean jj_3_1709() {
+ if (jj_scan_token(TRANSACTIONS_COMMITTED)) return true;
return false;
}
- final private boolean jj_3_856() {
- if (jj_3R_298()) return true;
+ final private boolean jj_3_373() {
+ if (jj_scan_token(PLUS)) return true;
return false;
}
- final private boolean jj_3R_200() {
+ final private boolean jj_3_1708() {
+ if (jj_scan_token(TOP_LEVEL_COUNT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1707() {
+ if (jj_scan_token(TIMESTAMPDIFF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1706() {
+ if (jj_scan_token(TIME_DIFF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_862() {
+ if (jj_scan_token(POSITION)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1705() {
+ if (jj_scan_token(TABLE_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1704() {
+ if (jj_scan_token(STYLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_372() {
+ if (jj_scan_token(STAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1703() {
+ if (jj_scan_token(STATEMENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1702() {
+ if (jj_scan_token(SQL_VARBINARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1701() {
+ if (jj_scan_token(SQL_TSI_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1700() {
+ if (jj_scan_token(SQL_TSI_MINUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1699() {
+ if (jj_scan_token(SQL_TSI_FRAC_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_390() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_372()) {
+ jj_scanpos = xsp;
+ if (jj_3_373()) {
+ jj_scanpos = xsp;
+ if (jj_3_374()) {
+ jj_scanpos = xsp;
+ if (jj_3_375()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1698() {
+ if (jj_scan_token(SQL_TIMESTAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1697() {
+ if (jj_scan_token(SQL_REAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1696() {
+ if (jj_scan_token(SQL_NCLOB)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_861() {
+ if (jj_scan_token(EXTRACT)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1695() {
+ if (jj_scan_token(SQL_LONGVARCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1694() {
+ if (jj_scan_token(SQL_INTERVAL_YEAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1693() {
+ if (jj_scan_token(SQL_INTERVAL_MINUTE_TO_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_829() {
+ if (jj_scan_token(FORMAT)) return true;
+ if (jj_3R_139()) return true;
return false;
}
final private boolean jj_3R_199() {
+ if (jj_3R_389()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_390()) {
+ jj_scanpos = xsp;
+ if (jj_3R_391()) return true;
+ }
return false;
}
- final private boolean jj_3_365() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_198()) return true;
+ final private boolean jj_3_1692() {
+ if (jj_scan_token(SQL_INTERVAL_HOUR_TO_MINUTE)) return true;
return false;
}
- final private boolean jj_3_855() {
- if (jj_3R_297()) return true;
+ final private boolean jj_3_828() {
+ if (jj_scan_token(INTERVAL)) return true;
+ if (jj_3R_219()) return true;
return false;
}
- final private boolean jj_3R_80() {
+ final private boolean jj_3R_81() {
if (jj_scan_token(DEFAULT_)) return true;
return false;
}
- final private boolean jj_3_362() {
- if (jj_3R_198()) return true;
+ final private boolean jj_3_1691() {
+ if (jj_scan_token(SQL_INTERVAL_DAY_TO_MINUTE)) return true;
return false;
}
- final private boolean jj_3_854() {
- if (jj_3R_296()) return true;
+ final private boolean jj_3_1690() {
+ if (jj_scan_token(SQL_INTEGER)) return true;
return false;
}
- final private boolean jj_3R_89() {
- if (jj_3R_134()) return true;
+ final private boolean jj_3_827() {
+ if (jj_3R_121()) return true;
return false;
}
- final private boolean jj_3_853() {
- if (jj_3R_295()) return true;
+ final private boolean jj_3_1689() {
+ if (jj_scan_token(SQL_DECIMAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_90() {
+ if (jj_3R_135()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1688() {
+ if (jj_scan_token(SQL_CHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1687() {
+ if (jj_scan_token(SQL_BIT)) return true;
return false;
}
final private boolean jj_3_46() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3R_89()) {
+ if (jj_3R_90()) {
jj_scanpos = xsp;
- if (jj_3R_90()) return true;
+ if (jj_3R_91()) return true;
}
if (jj_scan_token(LAMBDA)) return true;
return false;
}
- final private boolean jj_3_852() {
- if (jj_3R_294()) return true;
- return false;
- }
-
- final private boolean jj_3R_86() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_363() {
- if (jj_scan_token(COMMA)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_362()) {
- jj_scanpos = xsp;
- if (jj_3R_199()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_851() {
- if (jj_3R_293()) return true;
- return false;
- }
-
- final private boolean jj_3_48() {
- if (jj_3R_87()) return true;
- return false;
- }
-
- final private boolean jj_3_850() {
- if (jj_3R_292()) return true;
- return false;
- }
-
- final private boolean jj_3_47() {
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_364() {
- if (jj_3R_198()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_363()) {
- jj_scanpos = xsp;
- if (jj_3R_200()) return true;
- }
- if (jj_scan_token(RBRACE)) return true;
- return false;
- }
-
- final private boolean jj_3_837() {
- if (jj_scan_token(FROM)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3R_350() {
- if (jj_3R_408()) return true;
- return false;
- }
-
- final private boolean jj_3_45() {
- if (jj_3R_80()) return true;
- return false;
- }
-
- final private boolean jj_3_370() {
- if (jj_scan_token(LBRACE)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_364()) {
- jj_scanpos = xsp;
- if (jj_3_365()) {
- jj_scanpos = xsp;
- if (jj_3_366()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3R_349() {
- return false;
- }
-
- final private boolean jj_3_44() {
- if (jj_3R_84()) return true;
- if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true;
- return false;
- }
-
- final private boolean jj_3_369() {
- if (jj_scan_token(HOOK)) return true;
- return false;
- }
-
- final private boolean jj_3_836() {
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_839() {
- if (jj_3R_81()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_837()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3R_83() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_44()) {
- jj_scanpos = xsp;
- if (jj_3R_349()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_45()) {
- jj_scanpos = xsp;
- if (jj_3R_350()) {
- jj_scanpos = xsp;
- if (jj_3_47()) {
- jj_scanpos = xsp;
- if (jj_3_48()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_835() {
- if (jj_scan_token(LEADING)) return true;
- return false;
- }
-
- final private boolean jj_3_368() {
- if (jj_scan_token(PLUS)) return true;
- return false;
- }
-
- final private boolean jj_3_834() {
- if (jj_scan_token(TRAILING)) return true;
- return false;
- }
-
- final private boolean jj_3R_85() {
- if (jj_3R_134()) return true;
- return false;
- }
-
- final private boolean jj_3_367() {
- if (jj_scan_token(STAR)) return true;
- return false;
- }
-
- final private boolean jj_3_41() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_85()) {
- jj_scanpos = xsp;
- if (jj_3R_86()) return true;
- }
- if (jj_scan_token(LAMBDA)) return true;
- return false;
- }
-
- final private boolean jj_3_833() {
- if (jj_scan_token(BOTH)) return true;
- return false;
- }
-
- final private boolean jj_3_43() {
- if (jj_3R_88()) return true;
- return false;
- }
-
- final private boolean jj_3R_381() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_367()) {
- jj_scanpos = xsp;
- if (jj_3_368()) {
- jj_scanpos = xsp;
- if (jj_3_369()) {
- jj_scanpos = xsp;
- if (jj_3_370()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_42() {
- if (jj_3R_87()) return true;
- return false;
- }
-
- final private boolean jj_3R_367() {
- if (jj_3R_408()) return true;
- return false;
- }
-
- final private boolean jj_3R_197() {
- if (jj_3R_380()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_381()) {
- jj_scanpos = xsp;
- if (jj_3R_382()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_40() {
- if (jj_3R_80()) return true;
- return false;
- }
-
- final private boolean jj_3_838() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_833()) {
- jj_scanpos = xsp;
- if (jj_3_834()) {
- jj_scanpos = xsp;
- if (jj_3_835()) return true;
- }
- }
- xsp = jj_scanpos;
- if (jj_3_836()) jj_scanpos = xsp;
- if (jj_scan_token(FROM)) return true;
- return false;
- }
-
- final private boolean jj_3R_366() {
- return false;
- }
-
- final private boolean jj_3_39() {
- if (jj_3R_84()) return true;
- if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true;
- return false;
- }
-
- final private boolean jj_3_831() {
- if (jj_scan_token(COMMA)) return true;
- return false;
- }
-
- final private boolean jj_3_1805() {
- if (jj_scan_token(SATURDAY)) return true;
- return false;
- }
-
- final private boolean jj_3R_154() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_39()) {
- jj_scanpos = xsp;
- if (jj_3R_366()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_40()) {
- jj_scanpos = xsp;
- if (jj_3R_367()) {
- jj_scanpos = xsp;
- if (jj_3_42()) {
- jj_scanpos = xsp;
- if (jj_3_43()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_1804() {
- if (jj_scan_token(WEDNESDAY)) return true;
- return false;
- }
-
- final private boolean jj_3_1803() {
- if (jj_scan_token(YEAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1802() {
- if (jj_scan_token(WINDOW)) return true;
- return false;
- }
-
- final private boolean jj_3_1801() {
- if (jj_scan_token(VERSIONING)) return true;
- return false;
- }
-
- final private boolean jj_3_829() {
- if (jj_scan_token(COMMA)) return true;
- return false;
- }
-
- final private boolean jj_3_849() {
- if (jj_scan_token(TRIM)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1800() {
- if (jj_scan_token(VARYING)) return true;
- return false;
- }
-
- final private boolean jj_3_1799() {
- if (jj_scan_token(VARBINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_361() {
- if (jj_3R_197()) return true;
- return false;
- }
-
- final private boolean jj_3_1798() {
- if (jj_scan_token(UUID)) return true;
- return false;
- }
-
- final private boolean jj_3_830() {
- if (jj_scan_token(FOR)) return true;
- return false;
- }
-
- final private boolean jj_3_1797() {
- if (jj_scan_token(UNKNOWN)) return true;
- return false;
- }
-
- final private boolean jj_3_832() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_830()) {
- jj_scanpos = xsp;
- if (jj_3_831()) return true;
- }
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_1796() {
- if (jj_scan_token(TRY_CAST)) return true;
- return false;
- }
-
- final private boolean jj_3_1795() {
- if (jj_scan_token(TRIM)) return true;
- return false;
- }
-
- final private boolean jj_3_1794() {
- if (jj_scan_token(TRANSLATION)) return true;
- return false;
- }
-
- final private boolean jj_3R_196() {
- if (jj_3R_197()) return true;
- return false;
- }
-
- final private boolean jj_3_1793() {
- if (jj_scan_token(TINYINT)) return true;
- return false;
- }
-
- final private boolean jj_3_827() {
- if (jj_scan_token(CEILING)) return true;
- return false;
- }
-
- final private boolean jj_3_1792() {
- if (jj_scan_token(TIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_828() {
- if (jj_scan_token(FROM)) return true;
- return false;
- }
-
- final private boolean jj_3_1791() {
- if (jj_scan_token(SYSTEM_USER)) return true;
- return false;
- }
-
- final private boolean jj_3_1790() {
- if (jj_scan_token(SUM)) return true;
- return false;
- }
-
- final private boolean jj_3_1789() {
- if (jj_scan_token(SUBSTRING)) return true;
- return false;
- }
-
- final private boolean jj_3_1788() {
- if (jj_scan_token(STREAM)) return true;
- return false;
- }
-
- final private boolean jj_3_1787() {
- if (jj_scan_token(STATIC)) return true;
- return false;
- }
-
- final private boolean jj_3_848() {
- if (jj_scan_token(SUBSTRING)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1786() {
- if (jj_scan_token(SQLWARNING)) return true;
- return false;
- }
-
- final private boolean jj_3_1785() {
- if (jj_scan_token(SQL)) return true;
- return false;
- }
-
- final private boolean jj_3_1784() {
- if (jj_scan_token(SMALLINT)) return true;
- return false;
- }
-
- final private boolean jj_3_826() {
- if (jj_scan_token(CEIL)) return true;
- return false;
- }
-
- final private boolean jj_3_1783() {
- if (jj_scan_token(SHOW)) return true;
- return false;
- }
-
- final private boolean jj_3_1782() {
- if (jj_scan_token(SEEK)) return true;
- return false;
- }
-
- final private boolean jj_3_847() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_826()) {
- jj_scanpos = xsp;
- if (jj_3_827()) return true;
- }
- if (jj_3R_291()) return true;
- return false;
- }
-
- final private boolean jj_3_1781() {
- if (jj_scan_token(SCROLL)) return true;
- return false;
- }
-
- final private boolean jj_3_1780() {
- if (jj_scan_token(SAFE_ORDINAL)) return true;
- return false;
- }
-
- final private boolean jj_3_360() {
- if (jj_scan_token(VERTICAL_BAR)) return true;
- if (jj_3R_196()) return true;
- return false;
- }
-
- final private boolean jj_3_1779() {
- if (jj_scan_token(RUNNING)) return true;
- return false;
- }
-
- final private boolean jj_3_38() {
- if (jj_scan_token(ALL)) return true;
- return false;
- }
-
- final private boolean jj_3_1778() {
- if (jj_scan_token(ROLLUP)) return true;
- return false;
- }
-
- final private boolean jj_3R_82() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_37()) {
- jj_scanpos = xsp;
- if (jj_3_38()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1777() {
- if (jj_scan_token(RETURNS)) return true;
- return false;
- }
-
- final private boolean jj_3_37() {
- if (jj_scan_token(DISTINCT)) return true;
- return false;
- }
-
- final private boolean jj_3_846() {
- if (jj_scan_token(FLOOR)) return true;
- if (jj_3R_291()) return true;
- return false;
- }
-
- final private boolean jj_3_1776() {
- if (jj_scan_token(RESET)) return true;
- return false;
- }
-
- final private boolean jj_3_1775() {
- if (jj_scan_token(REGR_SXY)) return true;
- return false;
- }
-
- final private boolean jj_3R_201() {
- if (jj_3R_196()) return true;
- return false;
- }
-
- final private boolean jj_3_1774() {
- if (jj_scan_token(REGR_R2)) return true;
- return false;
- }
-
- final private boolean jj_3_825() {
- if (jj_scan_token(FOR)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_1773() {
- if (jj_scan_token(REGR_AVGY)) return true;
- return false;
- }
-
- final private boolean jj_3_1772() {
- if (jj_scan_token(REFERENCES)) return true;
- return false;
- }
-
- final private boolean jj_3_1771() {
- if (jj_scan_token(REAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1770() {
- if (jj_scan_token(RANGE)) return true;
- return false;
- }
-
- final private boolean jj_3_1769() {
- if (jj_scan_token(PREV)) return true;
- return false;
- }
-
- final private boolean jj_3_1768() {
- if (jj_scan_token(PRECEDES)) return true;
- return false;
- }
-
- final private boolean jj_3_845() {
- if (jj_scan_token(OVERLAY)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1767() {
- if (jj_scan_token(POSITION)) return true;
- return false;
- }
-
- final private boolean jj_3_822() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_1766() {
- if (jj_scan_token(PERIOD)) return true;
- return false;
- }
-
- final private boolean jj_3_1765() {
- if (jj_scan_token(PERCENTILE_CONT)) return true;
- return false;
- }
-
- final private boolean jj_3_36() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_83()) return true;
- return false;
- }
-
- final private boolean jj_3_824() {
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_822()) { jj_scanpos = xsp; break; }
- }
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1764() {
- if (jj_scan_token(PATTERN)) return true;
- return false;
- }
-
- final private boolean jj_3_1763() {
- if (jj_scan_token(OVERLAPS)) return true;
- return false;
- }
-
- final private boolean jj_3_1762() {
- if (jj_scan_token(ORDINAL)) return true;
- return false;
- }
-
- final private boolean jj_3R_385() {
- return false;
- }
-
- final private boolean jj_3R_195() {
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_1761() {
- if (jj_scan_token(ONE)) return true;
- return false;
- }
-
- final private boolean jj_3_1760() {
- if (jj_scan_token(OF)) return true;
- return false;
- }
-
- final private boolean jj_3_1759() {
- if (jj_scan_token(NUMERIC)) return true;
- return false;
- }
-
- final private boolean jj_3_35() {
- if (jj_3R_82()) return true;
- return false;
- }
-
- final private boolean jj_3_823() {
- if (jj_scan_token(USING)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1758() {
- if (jj_scan_token(NTH_VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1757() {
- if (jj_scan_token(NO)) return true;
- return false;
- }
-
- final private boolean jj_3_1756() {
- if (jj_scan_token(NCLOB)) return true;
- return false;
- }
-
- final private boolean jj_3_1755() {
- if (jj_scan_token(MULTISET)) return true;
- return false;
- }
-
- final private boolean jj_3_818() {
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_1754() {
- if (jj_scan_token(MODIFIES)) return true;
- return false;
- }
-
- final private boolean jj_3R_220() {
- if (jj_scan_token(LPAREN)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_35()) {
- jj_scanpos = xsp;
- if (jj_3R_385()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1753() {
- if (jj_scan_token(MIN)) return true;
- return false;
- }
-
- final private boolean jj_3_359() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_195()) return true;
- return false;
- }
-
- final private boolean jj_3_817() {
- if (jj_3R_198()) return true;
- return false;
- }
-
- final private boolean jj_3_1752() {
- if (jj_scan_token(MEASURES)) return true;
- return false;
- }
-
- final private boolean jj_3_1751() {
- if (jj_scan_token(MATCH_RECOGNIZE)) return true;
- return false;
- }
-
- final private boolean jj_3_844() {
- if (jj_scan_token(TRANSLATE)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3R_191() {
- if (jj_3R_195()) return true;
- return false;
- }
-
- final private boolean jj_3_1750() {
- if (jj_scan_token(MATCHES)) return true;
- return false;
- }
-
- final private boolean jj_3_1749() {
- if (jj_scan_token(LOCAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1748() {
- if (jj_scan_token(LEAD)) return true;
- return false;
- }
-
- final private boolean jj_3_1747() {
- if (jj_scan_token(LARGE)) return true;
- return false;
- }
-
- final private boolean jj_3_819() {
- if (jj_scan_token(COMMA)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_817()) {
- jj_scanpos = xsp;
- if (jj_3_818()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1746() {
- if (jj_scan_token(JSON_VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1745() {
- if (jj_scan_token(JSON_OBJECTAGG)) return true;
- return false;
- }
-
- final private boolean jj_3_1744() {
- if (jj_scan_token(JSON_ARRAYAGG)) return true;
- return false;
- }
-
- final private boolean jj_3_1743() {
- if (jj_scan_token(INTEGER)) return true;
- return false;
- }
-
- final private boolean jj_3_1742() {
- if (jj_scan_token(INOUT)) return true;
- return false;
- }
-
- final private boolean jj_3_816() {
- if (jj_scan_token(INTERVAL)) return true;
- if (jj_3R_215()) return true;
- return false;
- }
-
- final private boolean jj_3_1741() {
- if (jj_scan_token(IMPORT)) return true;
- return false;
- }
-
- final private boolean jj_3_1740() {
- if (jj_scan_token(HOLD)) return true;
- return false;
- }
-
- final private boolean jj_3_815() {
- if (jj_3R_120()) return true;
- return false;
- }
-
- final private boolean jj_3_1739() {
- if (jj_scan_token(GRANT)) return true;
- return false;
- }
-
- final private boolean jj_3_1738() {
- if (jj_scan_token(FUSION)) return true;
- return false;
- }
-
- final private boolean jj_3R_401() {
- if (jj_3R_220()) return true;
- return false;
- }
-
- final private boolean jj_3_1737() {
- if (jj_scan_token(FRAME_ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_358() {
- if (jj_scan_token(SUBSET)) return true;
- if (jj_3R_194()) return true;
- return false;
- }
-
- final private boolean jj_3_1736() {
- if (jj_scan_token(FLOAT)) return true;
- return false;
- }
-
- final private boolean jj_3_812() {
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1735() {
- if (jj_scan_token(EXTRACT)) return true;
- return false;
- }
-
- final private boolean jj_3_821() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_815()) {
- jj_scanpos = xsp;
- if (jj_3_816()) return true;
- }
- if (jj_scan_token(COMMA)) return true;
- return false;
- }
-
- final private boolean jj_3_1734() {
- if (jj_scan_token(EXP)) return true;
- return false;
- }
-
- final private boolean jj_3_1733() {
- if (jj_scan_token(EVERY)) return true;
- return false;
- }
-
- final private boolean jj_3_357() {
- if (jj_scan_token(WITHIN)) return true;
- if (jj_3R_193()) return true;
- return false;
- }
-
- final private boolean jj_3_1732() {
- if (jj_scan_token(END_PARTITION)) return true;
- return false;
- }
-
- final private boolean jj_3_1731() {
- if (jj_scan_token(END)) return true;
- return false;
- }
-
- final private boolean jj_3_1730() {
- if (jj_scan_token(EACH)) return true;
- return false;
- }
-
- final private boolean jj_3_349() {
- if (jj_scan_token(LAST)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_811() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1729() {
- if (jj_scan_token(DISCONNECT)) return true;
- return false;
- }
-
- final private boolean jj_3_1728() {
- if (jj_scan_token(DESCRIBE)) return true;
- return false;
- }
-
- final private boolean jj_3_356() {
- if (jj_scan_token(DOLLAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1727() {
- if (jj_scan_token(DEFINE)) return true;
- return false;
- }
-
- final private boolean jj_3_34() {
- if (jj_3R_80()) return true;
- return false;
- }
-
- final private boolean jj_3_1726() {
- if (jj_scan_token(DEC)) return true;
- return false;
- }
-
- final private boolean jj_3_1725() {
- if (jj_scan_token(DATETIME)) return true;
- return false;
- }
-
- final private boolean jj_3_33() {
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_1724() {
- if (jj_scan_token(CURSOR)) return true;
- return false;
- }
-
- final private boolean jj_3_814() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1723() {
- if (jj_scan_token(CURRENT_ROLE)) return true;
- return false;
- }
-
- final private boolean jj_3_355() {
- if (jj_scan_token(CARET)) return true;
- return false;
- }
-
- final private boolean jj_3_1722() {
- if (jj_scan_token(CURRENT_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3_1721() {
- if (jj_scan_token(CUBE)) return true;
- return false;
- }
-
- final private boolean jj_3_1720() {
- if (jj_scan_token(COUNT)) return true;
- return false;
- }
-
- final private boolean jj_3_1719() {
- if (jj_scan_token(CONVERT)) return true;
- return false;
- }
-
- final private boolean jj_3_813() {
- if (jj_scan_token(USING)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1718() {
- if (jj_scan_token(CONDITION)) return true;
- return false;
- }
-
- final private boolean jj_3_1717() {
- if (jj_scan_token(COLLATE)) return true;
- return false;
- }
-
- final private boolean jj_3_353() {
- if (jj_scan_token(PAST)) return true;
- if (jj_scan_token(LAST)) return true;
- return false;
- }
-
- final private boolean jj_3_1716() {
- if (jj_scan_token(CLOB)) return true;
- return false;
- }
-
- final private boolean jj_3_1715() {
- if (jj_scan_token(CHAR_LENGTH)) return true;
- return false;
- }
-
- final private boolean jj_3_32() {
- if (jj_scan_token(COMMA)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_33()) {
- jj_scanpos = xsp;
- if (jj_3_34()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_192() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_scan_token(304)) jj_scanpos = xsp;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1714() {
- if (jj_scan_token(CHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1713() {
- if (jj_scan_token(CASCADED)) return true;
- return false;
- }
-
- final private boolean jj_3_1712() {
- if (jj_scan_token(CALL)) return true;
- return false;
- }
-
- final private boolean jj_3_31() {
- if (jj_3R_80()) return true;
- return false;
- }
-
- final private boolean jj_3_820() {
- if (jj_3R_78()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_813()) {
- jj_scanpos = xsp;
- if (jj_3_814()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1711() {
- if (jj_scan_token(BIT)) return true;
- return false;
- }
-
- final private boolean jj_3_1710() {
- if (jj_scan_token(BEGIN_PARTITION)) return true;
- return false;
- }
-
- final private boolean jj_3_30() {
- if (jj_3R_79()) return true;
- return false;
- }
-
- final private boolean jj_3_1709() {
- if (jj_scan_token(AVG)) return true;
- return false;
- }
-
- final private boolean jj_3_1708() {
- if (jj_scan_token(AT)) return true;
- return false;
- }
-
- final private boolean jj_3_1707() {
- if (jj_scan_token(ARRAY_MAX_CARDINALITY)) return true;
- return false;
- }
-
- final private boolean jj_3_1706() {
- if (jj_scan_token(ALLOCATE)) return true;
- return false;
- }
-
- final private boolean jj_3_1705() {
- if (jj_scan_token(MAX_CHANGED_PARTITION_ROWS_PERCENT)) return true;
- return false;
- }
-
- final private boolean jj_3_1704() {
- if (jj_scan_token(STATISTICS)) return true;
- return false;
- }
-
- final private boolean jj_3_1703() {
- if (jj_scan_token(COMPUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_1702() {
- if (jj_scan_token(SCAN)) return true;
- return false;
- }
-
- final private boolean jj_3_1701() {
- if (jj_scan_token(NOLOGGING)) return true;
- return false;
- }
-
- final private boolean jj_3_1700() {
- if (jj_scan_token(PARALLEL)) return true;
- return false;
- }
-
- final private boolean jj_3_843() {
- if (jj_scan_token(CONVERT)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1699() {
- if (jj_scan_token(WRAP_KEY)) return true;
- return false;
- }
-
- final private boolean jj_3_351() {
- if (jj_scan_token(FIRST)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1698() {
- if (jj_scan_token(CACHE_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_1697() {
- if (jj_scan_token(ATOMICITY)) return true;
- return false;
- }
-
- final private boolean jj_3_810() {
- if (jj_scan_token(FROM)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_1696() {
- if (jj_scan_token(TEMPLATE)) return true;
- return false;
- }
-
- final private boolean jj_3_1695() {
- if (jj_scan_token(XML)) return true;
- return false;
- }
-
- final private boolean jj_3_1694() {
- if (jj_scan_token(WORK)) return true;
- return false;
- }
-
- final private boolean jj_3_1693() {
- if (jj_scan_token(VIEW)) return true;
- return false;
- }
-
- final private boolean jj_3_350() {
- if (jj_scan_token(NEXT)) return true;
- if (jj_scan_token(ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_1692() {
- if (jj_scan_token(UTF32)) return true;
- return false;
- }
-
- final private boolean jj_3R_183() {
- if (jj_scan_token(LPAREN)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_30()) {
- jj_scanpos = xsp;
- if (jj_3_31()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1691() {
- if (jj_scan_token(USER_DEFINED_TYPE_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_1690() {
- if (jj_scan_token(USAGE)) return true;
- return false;
- }
-
- final private boolean jj_3_1689() {
- if (jj_scan_token(UNDER)) return true;
- return false;
- }
-
- final private boolean jj_3_1688() {
- if (jj_scan_token(UNBOUNDED)) return true;
- return false;
- }
-
- final private boolean jj_3_1687() {
- if (jj_scan_token(TRIGGER_SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3_352() {
- if (jj_scan_token(TO)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_350()) {
- jj_scanpos = xsp;
- if (jj_3_351()) {
- jj_scanpos = xsp;
- lookingAhead = true;
- jj_semLA = true;
- lookingAhead = false;
- if (!jj_semLA || jj_3R_192()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_842() {
- if (jj_scan_token(POSITION)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
final private boolean jj_3_1686() {
- if (jj_scan_token(TRANSFORMS)) return true;
- return false;
- }
-
- final private boolean jj_3_1685() {
- if (jj_scan_token(TRANSACTIONS_COMMITTED)) return true;
- return false;
- }
-
- final private boolean jj_3_1684() {
- if (jj_scan_token(TOP_LEVEL_COUNT)) return true;
- return false;
- }
-
- final private boolean jj_3_1683() {
- if (jj_scan_token(TIMESTAMPDIFF)) return true;
- return false;
- }
-
- final private boolean jj_3_1682() {
- if (jj_scan_token(TIME_DIFF)) return true;
- return false;
- }
-
- final private boolean jj_3_1681() {
- if (jj_scan_token(TABLE_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_354() {
- if (jj_scan_token(AFTER)) return true;
- if (jj_scan_token(MATCH)) return true;
- return false;
- }
-
- final private boolean jj_3_1680() {
- if (jj_scan_token(STYLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1679() {
- if (jj_scan_token(STATEMENT)) return true;
- return false;
- }
-
- final private boolean jj_3_1678() {
- if (jj_scan_token(SQL_VARBINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_1677() {
- if (jj_scan_token(SQL_TSI_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_841() {
- if (jj_scan_token(EXTRACT)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1676() {
- if (jj_scan_token(SQL_TSI_MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_1675() {
- if (jj_scan_token(SQL_TSI_FRAC_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_348() {
- if (jj_scan_token(ALL)) return true;
- if (jj_scan_token(ROWS)) return true;
- return false;
- }
-
- final private boolean jj_3_1674() {
- if (jj_scan_token(SQL_TIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_808() {
- if (jj_scan_token(INTERVAL)) return true;
- if (jj_3R_215()) return true;
- return false;
- }
-
- final private boolean jj_3_809() {
- if (jj_scan_token(FORMAT)) return true;
- if (jj_3R_138()) return true;
- return false;
- }
-
- final private boolean jj_3_1673() {
- if (jj_scan_token(SQL_REAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1672() {
- if (jj_scan_token(SQL_NCLOB)) return true;
- return false;
- }
-
- final private boolean jj_3_807() {
- if (jj_3R_120()) return true;
- return false;
- }
-
- final private boolean jj_3_1671() {
- if (jj_scan_token(SQL_LONGVARCHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_347() {
- if (jj_scan_token(ONE)) return true;
- if (jj_scan_token(ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_1670() {
- if (jj_scan_token(SQL_INTERVAL_YEAR)) return true;
- return false;
- }
-
- final private boolean jj_3_29() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_1669() {
- if (jj_scan_token(SQL_INTERVAL_MINUTE_TO_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1668() {
- if (jj_scan_token(SQL_INTERVAL_HOUR_TO_MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_1667() {
- if (jj_scan_token(SQL_INTERVAL_DAY_TO_MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_1666() {
- if (jj_scan_token(SQL_INTEGER)) return true;
- return false;
- }
-
- final private boolean jj_3_1665() {
- if (jj_scan_token(SQL_DECIMAL)) return true;
- return false;
- }
-
- final private boolean jj_3_346() {
- if (jj_scan_token(MEASURES)) return true;
- if (jj_3R_191()) return true;
- return false;
- }
-
- final private boolean jj_3_1664() {
- if (jj_scan_token(SQL_CHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_806() {
- if (jj_scan_token(TRY_CAST)) return true;
- return false;
- }
-
- final private boolean jj_3_1663() {
- if (jj_scan_token(SQL_BIT)) return true;
- return false;
- }
-
- final private boolean jj_3_804() {
- if (jj_scan_token(CAST)) return true;
- return false;
- }
-
- final private boolean jj_3_805() {
- if (jj_scan_token(SAFE_CAST)) return true;
- return false;
- }
-
- final private boolean jj_3_1662() {
if (jj_scan_token(SPECIFIC_NAME)) return true;
return false;
}
- final private boolean jj_3_1661() {
+ final private boolean jj_3R_87() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1685() {
if (jj_scan_token(SIZE)) return true;
return false;
}
- final private boolean jj_3_1660() {
+ final private boolean jj_3_1684() {
if (jj_scan_token(SESSION)) return true;
return false;
}
- final private boolean jj_3_345() {
- if (jj_3R_70()) return true;
+ final private boolean jj_3_1683() {
+ if (jj_scan_token(SERIALIZABLE)) return true;
return false;
}
- final private boolean jj_3_840() {
+ final private boolean jj_3_1682() {
+ if (jj_scan_token(SELF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_48() {
+ if (jj_3R_88()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_826() {
+ if (jj_scan_token(TRY_CAST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1681() {
+ if (jj_scan_token(SECONDS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_824() {
+ if (jj_scan_token(CAST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_825() {
+ if (jj_scan_token(SAFE_CAST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1680() {
+ if (jj_scan_token(SCOPE_CATALOGS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_47() {
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1679() {
+ if (jj_scan_token(SCALE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1678() {
+ if (jj_scan_token(ROUTINE_SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_860() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_804()) {
+ if (jj_3_824()) {
jj_scanpos = xsp;
- if (jj_3_805()) {
+ if (jj_3_825()) {
jj_scanpos = xsp;
- if (jj_3_806()) return true;
+ if (jj_3_826()) return true;
}
}
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3_1659() {
- if (jj_scan_token(SERIALIZABLE)) return true;
+ final private boolean jj_3R_354() {
+ if (jj_3R_420()) return true;
return false;
}
- final private boolean jj_3_1658() {
- if (jj_scan_token(SELF)) return true;
+ final private boolean jj_3_1677() {
+ if (jj_scan_token(ROUTINE)) return true;
return false;
}
- final private boolean jj_3_1657() {
- if (jj_scan_token(SECONDS)) return true;
+ final private boolean jj_3_366() {
+ if (jj_3R_199()) return true;
return false;
}
- final private boolean jj_3_1656() {
- if (jj_scan_token(SCOPE_CATALOGS)) return true;
+ final private boolean jj_3_1676() {
+ if (jj_scan_token(RETURNING)) return true;
return false;
}
- final private boolean jj_3R_223() {
+ final private boolean jj_3_1675() {
+ if (jj_scan_token(RETURNED_LENGTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_45() {
+ if (jj_3R_81()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1674() {
+ if (jj_scan_token(RESTART)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_227() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_840()) {
- jj_scanpos = xsp;
- if (jj_3_841()) {
- jj_scanpos = xsp;
- if (jj_3_842()) {
- jj_scanpos = xsp;
- if (jj_3_843()) {
- jj_scanpos = xsp;
- if (jj_3_844()) {
- jj_scanpos = xsp;
- if (jj_3_845()) {
- jj_scanpos = xsp;
- if (jj_3_846()) {
- jj_scanpos = xsp;
- if (jj_3_847()) {
- jj_scanpos = xsp;
- if (jj_3_848()) {
- jj_scanpos = xsp;
- if (jj_3_849()) {
- jj_scanpos = xsp;
- if (jj_3_850()) {
- jj_scanpos = xsp;
- if (jj_3_851()) {
- jj_scanpos = xsp;
- if (jj_3_852()) {
- jj_scanpos = xsp;
- if (jj_3_853()) {
- jj_scanpos = xsp;
- if (jj_3_854()) {
- jj_scanpos = xsp;
- if (jj_3_855()) {
- jj_scanpos = xsp;
- if (jj_3_856()) {
- jj_scanpos = xsp;
- if (jj_3_857()) {
- jj_scanpos = xsp;
- if (jj_3_858()) {
- jj_scanpos = xsp;
- if (jj_3_859()) {
- jj_scanpos = xsp;
if (jj_3_860()) {
jj_scanpos = xsp;
if (jj_3_861()) {
@@ -33003,7 +32700,47 @@
jj_scanpos = xsp;
if (jj_3_869()) {
jj_scanpos = xsp;
- if (jj_3_870()) return true;
+ if (jj_3_870()) {
+ jj_scanpos = xsp;
+ if (jj_3_871()) {
+ jj_scanpos = xsp;
+ if (jj_3_872()) {
+ jj_scanpos = xsp;
+ if (jj_3_873()) {
+ jj_scanpos = xsp;
+ if (jj_3_874()) {
+ jj_scanpos = xsp;
+ if (jj_3_875()) {
+ jj_scanpos = xsp;
+ if (jj_3_876()) {
+ jj_scanpos = xsp;
+ if (jj_3_877()) {
+ jj_scanpos = xsp;
+ if (jj_3_878()) {
+ jj_scanpos = xsp;
+ if (jj_3_879()) {
+ jj_scanpos = xsp;
+ if (jj_3_880()) {
+ jj_scanpos = xsp;
+ if (jj_3_881()) {
+ jj_scanpos = xsp;
+ if (jj_3_882()) {
+ jj_scanpos = xsp;
+ if (jj_3_883()) {
+ jj_scanpos = xsp;
+ if (jj_3_884()) {
+ jj_scanpos = xsp;
+ if (jj_3_885()) {
+ jj_scanpos = xsp;
+ if (jj_3_886()) {
+ jj_scanpos = xsp;
+ if (jj_3_887()) {
+ jj_scanpos = xsp;
+ if (jj_3_888()) {
+ jj_scanpos = xsp;
+ if (jj_3_889()) {
+ jj_scanpos = xsp;
+ if (jj_3_890()) return true;
}
}
}
@@ -33037,558 +32774,555 @@
return false;
}
- final private boolean jj_3_1655() {
- if (jj_scan_token(SCALE)) return true;
- return false;
- }
-
- final private boolean jj_3_1654() {
- if (jj_scan_token(ROUTINE_SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3_344() {
- if (jj_scan_token(PARTITION)) return true;
- if (jj_scan_token(BY)) return true;
- return false;
- }
-
- final private boolean jj_3_1653() {
- if (jj_scan_token(ROUTINE)) return true;
- return false;
- }
-
- final private boolean jj_3_1652() {
- if (jj_scan_token(RETURNING)) return true;
- return false;
- }
-
- final private boolean jj_3_1651() {
- if (jj_scan_token(RETURNED_LENGTH)) return true;
- return false;
- }
-
- final private boolean jj_3R_173() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_79()) return true;
- return false;
- }
-
- final private boolean jj_3_1650() {
- if (jj_scan_token(RESTART)) return true;
- return false;
- }
-
- final private boolean jj_3_1649() {
+ final private boolean jj_3_1673() {
if (jj_scan_token(REPEATABLE)) return true;
return false;
}
- final private boolean jj_3R_168() {
- if (jj_scan_token(MATCH_RECOGNIZE)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3R_353() {
return false;
}
- final private boolean jj_3_1648() {
+ final private boolean jj_3_1672() {
if (jj_scan_token(QUARTERS)) return true;
return false;
}
- final private boolean jj_3_1647() {
+ final private boolean jj_3R_198() {
+ if (jj_3R_199()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1671() {
if (jj_scan_token(PRIVILEGES)) return true;
return false;
}
- final private boolean jj_3_1646() {
+ final private boolean jj_3_44() {
+ if (jj_3R_85()) return true;
+ if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1670() {
if (jj_scan_token(PRECEDING)) return true;
return false;
}
- final private boolean jj_3_1645() {
+ final private boolean jj_3_1669() {
if (jj_scan_token(PLACING)) return true;
return false;
}
- final private boolean jj_3_1644() {
+ final private boolean jj_3_1668() {
if (jj_scan_token(PAST)) return true;
return false;
}
- final private boolean jj_3_1643() {
+ final private boolean jj_3_1667() {
if (jj_scan_token(PASCAL)) return true;
return false;
}
- final private boolean jj_3_1642() {
+ final private boolean jj_3R_84() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_44()) {
+ jj_scanpos = xsp;
+ if (jj_3R_353()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_45()) {
+ jj_scanpos = xsp;
+ if (jj_3R_354()) {
+ jj_scanpos = xsp;
+ if (jj_3_47()) {
+ jj_scanpos = xsp;
+ if (jj_3_48()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1666() {
if (jj_scan_token(PARAMETER_SPECIFIC_NAME)) return true;
return false;
}
- final private boolean jj_3_1641() {
+ final private boolean jj_3_1665() {
if (jj_scan_token(PARAMETER_NAME)) return true;
return false;
}
- final private boolean jj_3_1640() {
+ final private boolean jj_3_1664() {
if (jj_scan_token(OVERRIDING)) return true;
return false;
}
- final private boolean jj_3_1639() {
+ final private boolean jj_3_1663() {
if (jj_scan_token(ORDINALITY)) return true;
return false;
}
- final private boolean jj_3_1638() {
+ final private boolean jj_3_1662() {
if (jj_scan_token(OPTION)) return true;
return false;
}
- final private boolean jj_3_1637() {
+ final private boolean jj_3_1661() {
if (jj_scan_token(NUMBER)) return true;
return false;
}
- final private boolean jj_3_1636() {
+ final private boolean jj_3_1660() {
if (jj_scan_token(NORMALIZED)) return true;
return false;
}
- final private boolean jj_3_1635() {
+ final private boolean jj_3_1659() {
if (jj_scan_token(NAMES)) return true;
return false;
}
- final private boolean jj_3_1634() {
+ final private boolean jj_3R_86() {
+ if (jj_3R_135()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1658() {
if (jj_scan_token(MORE_)) return true;
return false;
}
- final private boolean jj_3_1633() {
+ final private boolean jj_3_365() {
+ if (jj_scan_token(VERTICAL_BAR)) return true;
+ if (jj_3R_198()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1657() {
if (jj_scan_token(MINUTES)) return true;
return false;
}
- final private boolean jj_3_1632() {
+ final private boolean jj_3_41() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_86()) {
+ jj_scanpos = xsp;
+ if (jj_3R_87()) return true;
+ }
+ if (jj_scan_token(LAMBDA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1656() {
if (jj_scan_token(MICROSECOND)) return true;
return false;
}
- final private boolean jj_3_1631() {
+ final private boolean jj_3_1655() {
if (jj_scan_token(MESSAGE_LENGTH)) return true;
return false;
}
- final private boolean jj_3_1630() {
+ final private boolean jj_3_1654() {
if (jj_scan_token(MAP)) return true;
return false;
}
- final private boolean jj_3_1629() {
+ final private boolean jj_3_1653() {
if (jj_scan_token(LIBRARY)) return true;
return false;
}
- final private boolean jj_3_1628() {
+ final private boolean jj_3_43() {
+ if (jj_3R_89()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_203() {
+ if (jj_3R_198()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1652() {
if (jj_scan_token(LAST)) return true;
return false;
}
- final private boolean jj_3_1627() {
+ final private boolean jj_3_1651() {
if (jj_scan_token(KEY_MEMBER)) return true;
return false;
}
- final private boolean jj_3_1626() {
+ final private boolean jj_3_1650() {
if (jj_scan_token(JSON)) return true;
return false;
}
- final private boolean jj_3_342() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_190()) return true;
+ final private boolean jj_3_42() {
+ if (jj_3R_88()) return true;
return false;
}
- final private boolean jj_3_1625() {
+ final private boolean jj_3_1649() {
if (jj_scan_token(ISOLATION)) return true;
return false;
}
- final private boolean jj_3R_217() {
- if (jj_scan_token(CURSOR)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_1624() {
+ final private boolean jj_3_1648() {
if (jj_scan_token(INSTANTIABLE)) return true;
return false;
}
- final private boolean jj_3_1623() {
+ final private boolean jj_3R_371() {
+ if (jj_3R_420()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1647() {
if (jj_scan_token(INITIALLY)) return true;
return false;
}
- final private boolean jj_3_1622() {
+ final private boolean jj_3_1646() {
if (jj_scan_token(INCLUDE)) return true;
return false;
}
- final private boolean jj_3_1621() {
+ final private boolean jj_3_1645() {
if (jj_scan_token(IMMEDIATE)) return true;
return false;
}
- final private boolean jj_3_343() {
- if (jj_scan_token(AS)) return true;
- if (jj_3R_162()) return true;
+ final private boolean jj_3_40() {
+ if (jj_3R_81()) return true;
return false;
}
- final private boolean jj_3_1620() {
+ final private boolean jj_3_1644() {
if (jj_scan_token(HOURS)) return true;
return false;
}
- final private boolean jj_3_1619() {
+ final private boolean jj_3_1643() {
if (jj_scan_token(GROUP_CONCAT)) return true;
return false;
}
- final private boolean jj_3_1618() {
+ final private boolean jj_3R_370() {
+ return false;
+ }
+
+ final private boolean jj_3R_221() {
+ if (jj_scan_token(CURSOR)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1642() {
if (jj_scan_token(GO)) return true;
return false;
}
- final private boolean jj_3_1617() {
+ final private boolean jj_3_1641() {
if (jj_scan_token(GENERAL)) return true;
return false;
}
- final private boolean jj_3_1616() {
+ final private boolean jj_3_39() {
+ if (jj_3R_85()) return true;
+ if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1640() {
if (jj_scan_token(FOUND)) return true;
return false;
}
- final private boolean jj_3R_190() {
- if (jj_3R_134()) return true;
+ final private boolean jj_3R_197() {
+ if (jj_3R_82()) return true;
return false;
}
- final private boolean jj_3_1615() {
+ final private boolean jj_3_1639() {
if (jj_scan_token(FOLLOWING)) return true;
return false;
}
- final private boolean jj_3_801() {
- if (jj_scan_token(LOCAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1614() {
+ final private boolean jj_3_1638() {
if (jj_scan_token(EXCLUDING)) return true;
return false;
}
- final private boolean jj_3_1613() {
+ final private boolean jj_3_1637() {
if (jj_scan_token(ERROR)) return true;
return false;
}
- final private boolean jj_3_1612() {
+ final private boolean jj_3R_155() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_39()) {
+ jj_scanpos = xsp;
+ if (jj_3R_370()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_40()) {
+ jj_scanpos = xsp;
+ if (jj_3R_371()) {
+ jj_scanpos = xsp;
+ if (jj_3_42()) {
+ jj_scanpos = xsp;
+ if (jj_3_43()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1636() {
if (jj_scan_token(DYNAMIC_FUNCTION_CODE)) return true;
return false;
}
- final private boolean jj_3_1611() {
+ final private boolean jj_3_1635() {
if (jj_scan_token(DOY)) return true;
return false;
}
- final private boolean jj_3R_399() {
- return false;
- }
-
- final private boolean jj_3_1610() {
+ final private boolean jj_3_1634() {
if (jj_scan_token(DISPATCH)) return true;
return false;
}
- final private boolean jj_3_1609() {
+ final private boolean jj_3_1633() {
if (jj_scan_token(DESCRIPTION)) return true;
return false;
}
- final private boolean jj_3_1608() {
+ final private boolean jj_3_821() {
+ if (jj_scan_token(LOCAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1632() {
if (jj_scan_token(DEPTH)) return true;
return false;
}
- final private boolean jj_3_1607() {
+ final private boolean jj_3_1631() {
if (jj_scan_token(DEFINED)) return true;
return false;
}
- final private boolean jj_3_1606() {
+ final private boolean jj_3_364() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_197()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1630() {
if (jj_scan_token(DEFAULTS)) return true;
return false;
}
- final private boolean jj_3_803() {
- if (jj_scan_token(WITH)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_801()) jj_scanpos = xsp;
- if (jj_scan_token(TIME)) return true;
- return false;
- }
-
- final private boolean jj_3_1605() {
+ final private boolean jj_3_1629() {
if (jj_scan_token(DAYOFYEAR)) return true;
return false;
}
- final private boolean jj_3_1604() {
+ final private boolean jj_3R_411() {
+ return false;
+ }
+
+ final private boolean jj_3R_193() {
+ if (jj_3R_197()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1628() {
if (jj_scan_token(DATETIME_INTERVAL_PRECISION)) return true;
return false;
}
- final private boolean jj_3R_290() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_802()) {
- jj_scanpos = xsp;
- if (jj_3_803()) {
- jj_scanpos = xsp;
- if (jj_3R_399()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_1603() {
+ final private boolean jj_3_1627() {
if (jj_scan_token(DATE_TRUNC)) return true;
return false;
}
- final private boolean jj_3_802() {
+ final private boolean jj_3_1626() {
+ if (jj_scan_token(DATA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1625() {
+ if (jj_scan_token(CONTAINS_SUBSTR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1624() {
+ if (jj_scan_token(CONSTRAINTS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_823() {
+ if (jj_scan_token(WITH)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_821()) jj_scanpos = xsp;
+ if (jj_scan_token(TIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1623() {
+ if (jj_scan_token(CONNECTION_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1622() {
+ if (jj_scan_token(CONDITIONAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_294() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_822()) {
+ jj_scanpos = xsp;
+ if (jj_3_823()) {
+ jj_scanpos = xsp;
+ if (jj_3R_411()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1621() {
+ if (jj_scan_token(COMMAND_FUNCTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_822() {
if (jj_scan_token(WITHOUT)) return true;
if (jj_scan_token(TIME)) return true;
if (jj_scan_token(ZONE)) return true;
return false;
}
- final private boolean jj_3_1602() {
- if (jj_scan_token(DATA)) return true;
- return false;
- }
-
- final private boolean jj_3_1601() {
- if (jj_scan_token(CONTAINS_SUBSTR)) return true;
- return false;
- }
-
- final private boolean jj_3_1600() {
- if (jj_scan_token(CONSTRAINTS)) return true;
- return false;
- }
-
- final private boolean jj_3_1599() {
- if (jj_scan_token(CONNECTION_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_1598() {
- if (jj_scan_token(CONDITIONAL)) return true;
- return false;
- }
-
- final private boolean jj_3R_376() {
- return false;
- }
-
- final private boolean jj_3_1597() {
- if (jj_scan_token(COMMAND_FUNCTION)) return true;
- return false;
- }
-
- final private boolean jj_3R_172() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_374()) return true;
- return false;
- }
-
- final private boolean jj_3_1596() {
+ final private boolean jj_3_1620() {
if (jj_scan_token(COLLATION_NAME)) return true;
return false;
}
- final private boolean jj_3_341() {
- if (jj_scan_token(EXCLUDE)) return true;
- if (jj_scan_token(NULLS)) return true;
- return false;
- }
-
- final private boolean jj_3_1595() {
+ final private boolean jj_3_1619() {
if (jj_scan_token(COBOL)) return true;
return false;
}
- final private boolean jj_3_340() {
- if (jj_scan_token(INCLUDE)) return true;
- if (jj_scan_token(NULLS)) return true;
- return false;
- }
-
- final private boolean jj_3_1594() {
+ final private boolean jj_3_1618() {
if (jj_scan_token(CHARACTER_SET_NAME)) return true;
return false;
}
- final private boolean jj_3_1593() {
+ final private boolean jj_3_1617() {
if (jj_scan_token(CHARACTERISTICS)) return true;
return false;
}
- final private boolean jj_3_1592() {
+ final private boolean jj_3_1616() {
if (jj_scan_token(CATALOG_NAME)) return true;
return false;
}
- final private boolean jj_3_1591() {
+ final private boolean jj_3_1615() {
if (jj_scan_token(C)) return true;
return false;
}
- final private boolean jj_3R_398() {
+ final private boolean jj_3_363() {
+ if (jj_scan_token(SUBSET)) return true;
+ if (jj_3R_196()) return true;
return false;
}
- final private boolean jj_3_1590() {
+ final private boolean jj_3_1614() {
if (jj_scan_token(BEFORE)) return true;
return false;
}
- final private boolean jj_3R_177() {
- if (jj_scan_token(UNPIVOT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_340()) {
- jj_scanpos = xsp;
- if (jj_3_341()) {
- jj_scanpos = xsp;
- if (jj_3R_376()) return true;
- }
- }
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1589() {
+ final private boolean jj_3_1613() {
if (jj_scan_token(ASSIGNMENT)) return true;
return false;
}
- final private boolean jj_3_1588() {
+ final private boolean jj_3_1612() {
if (jj_scan_token(ARRAY_CONCAT_AGG)) return true;
return false;
}
- final private boolean jj_3_1587() {
+ final private boolean jj_3_1611() {
if (jj_scan_token(ALWAYS)) return true;
return false;
}
- final private boolean jj_3_1586() {
+ final private boolean jj_3_38() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_362() {
+ if (jj_scan_token(WITHIN)) return true;
+ if (jj_3R_195()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1610() {
if (jj_scan_token(ADD)) return true;
return false;
}
- final private boolean jj_3R_259() {
+ final private boolean jj_3R_83() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_800()) {
+ if (jj_3_37()) {
jj_scanpos = xsp;
- if (jj_3R_398()) return true;
+ if (jj_3_38()) return true;
}
return false;
}
- final private boolean jj_3_1585() {
+ final private boolean jj_3_1609() {
if (jj_scan_token(ABSOLUTE)) return true;
return false;
}
- final private boolean jj_3_800() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_260()) return true;
+ final private boolean jj_3_37() {
+ if (jj_scan_token(DISTINCT)) return true;
return false;
}
- final private boolean jj_3_28() {
- if (jj_3R_77()) return true;
+ final private boolean jj_3R_410() {
return false;
}
- final private boolean jj_3_27() {
- if (jj_3R_76()) return true;
+ final private boolean jj_3_354() {
+ if (jj_scan_token(LAST)) return true;
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3R_343() {
+ final private boolean jj_3_361() {
+ if (jj_scan_token(DOLLAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_347() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_1585()) {
- jj_scanpos = xsp;
- if (jj_3_1586()) {
- jj_scanpos = xsp;
- if (jj_3_1587()) {
- jj_scanpos = xsp;
- if (jj_3_1588()) {
- jj_scanpos = xsp;
- if (jj_3_1589()) {
- jj_scanpos = xsp;
- if (jj_3_1590()) {
- jj_scanpos = xsp;
- if (jj_3_1591()) {
- jj_scanpos = xsp;
- if (jj_3_1592()) {
- jj_scanpos = xsp;
- if (jj_3_1593()) {
- jj_scanpos = xsp;
- if (jj_3_1594()) {
- jj_scanpos = xsp;
- if (jj_3_1595()) {
- jj_scanpos = xsp;
- if (jj_3_1596()) {
- jj_scanpos = xsp;
- if (jj_3_1597()) {
- jj_scanpos = xsp;
- if (jj_3_1598()) {
- jj_scanpos = xsp;
- if (jj_3_1599()) {
- jj_scanpos = xsp;
- if (jj_3_1600()) {
- jj_scanpos = xsp;
- if (jj_3_1601()) {
- jj_scanpos = xsp;
- if (jj_3_1602()) {
- jj_scanpos = xsp;
- if (jj_3_1603()) {
- jj_scanpos = xsp;
- if (jj_3_1604()) {
- jj_scanpos = xsp;
- if (jj_3_1605()) {
- jj_scanpos = xsp;
- if (jj_3_1606()) {
- jj_scanpos = xsp;
- if (jj_3_1607()) {
- jj_scanpos = xsp;
- if (jj_3_1608()) {
- jj_scanpos = xsp;
if (jj_3_1609()) {
jj_scanpos = xsp;
if (jj_3_1610()) {
@@ -33981,7 +33715,55 @@
jj_scanpos = xsp;
if (jj_3_1804()) {
jj_scanpos = xsp;
- if (jj_3_1805()) return true;
+ if (jj_3_1805()) {
+ jj_scanpos = xsp;
+ if (jj_3_1806()) {
+ jj_scanpos = xsp;
+ if (jj_3_1807()) {
+ jj_scanpos = xsp;
+ if (jj_3_1808()) {
+ jj_scanpos = xsp;
+ if (jj_3_1809()) {
+ jj_scanpos = xsp;
+ if (jj_3_1810()) {
+ jj_scanpos = xsp;
+ if (jj_3_1811()) {
+ jj_scanpos = xsp;
+ if (jj_3_1812()) {
+ jj_scanpos = xsp;
+ if (jj_3_1813()) {
+ jj_scanpos = xsp;
+ if (jj_3_1814()) {
+ jj_scanpos = xsp;
+ if (jj_3_1815()) {
+ jj_scanpos = xsp;
+ if (jj_3_1816()) {
+ jj_scanpos = xsp;
+ if (jj_3_1817()) {
+ jj_scanpos = xsp;
+ if (jj_3_1818()) {
+ jj_scanpos = xsp;
+ if (jj_3_1819()) {
+ jj_scanpos = xsp;
+ if (jj_3_1820()) {
+ jj_scanpos = xsp;
+ if (jj_3_1821()) {
+ jj_scanpos = xsp;
+ if (jj_3_1822()) {
+ jj_scanpos = xsp;
+ if (jj_3_1823()) {
+ jj_scanpos = xsp;
+ if (jj_3_1824()) {
+ jj_scanpos = xsp;
+ if (jj_3_1825()) {
+ jj_scanpos = xsp;
+ if (jj_3_1826()) {
+ jj_scanpos = xsp;
+ if (jj_3_1827()) {
+ jj_scanpos = xsp;
+ if (jj_3_1828()) {
+ jj_scanpos = xsp;
+ if (jj_3_1829()) return true;
}
}
}
@@ -34198,18 +33980,1513 @@
}
}
}
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_263() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_820()) {
+ jj_scanpos = xsp;
+ if (jj_3R_410()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_820() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_264()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_360() {
+ if (jj_scan_token(CARET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1608() {
+ if (jj_scan_token(SUNDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1607() {
+ if (jj_scan_token(THURSDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1606() {
+ if (jj_scan_token(MONDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_36() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_84()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_380() {
+ return false;
+ }
+
+ final private boolean jj_3_1605() {
+ if (jj_scan_token(WITHIN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1604() {
+ if (jj_scan_token(WHENEVER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_358() {
+ if (jj_scan_token(PAST)) return true;
+ if (jj_scan_token(LAST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1603() {
+ if (jj_scan_token(VAR_POP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_397() {
+ return false;
+ }
+
+ final private boolean jj_3_1602() {
+ if (jj_scan_token(VARIANT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_194() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_scan_token(304)) jj_scanpos = xsp;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1601() {
+ if (jj_scan_token(VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1600() {
+ if (jj_scan_token(UPPER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_35() {
+ if (jj_3R_83()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1599() {
+ if (jj_scan_token(UNIQUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1598() {
+ if (jj_scan_token(TRUNCATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_819() {
+ if (jj_scan_token(TIMESTAMP)) return true;
+ if (jj_3R_263()) return true;
+ if (jj_3R_294()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1597() {
+ if (jj_scan_token(TRIGGER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1596() {
+ if (jj_scan_token(TRANSLATE_REGEX)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1595() {
+ if (jj_scan_token(TIMEZONE_MINUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_224() {
+ if (jj_scan_token(LPAREN)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_35()) {
+ jj_scanpos = xsp;
+ if (jj_3R_397()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1594() {
+ if (jj_scan_token(TIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1593() {
+ if (jj_scan_token(SYSTEM_TIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1592() {
+ if (jj_scan_token(SUCCEEDS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1591() {
+ if (jj_scan_token(SUBSET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1590() {
+ if (jj_scan_token(STDDEV_SAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_818() {
+ if (jj_scan_token(TIME)) return true;
+ if (jj_3R_263()) return true;
+ if (jj_3R_294()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1589() {
+ if (jj_scan_token(START)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1588() {
+ if (jj_scan_token(SQLSTATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1587() {
+ if (jj_scan_token(SPECIFICTYPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1586() {
+ if (jj_scan_token(SKIP_)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_356() {
+ if (jj_scan_token(FIRST)) return true;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_289() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_817()) {
+ jj_scanpos = xsp;
+ if (jj_3_818()) {
+ jj_scanpos = xsp;
+ if (jj_3_819()) return true;
}
}
+ return false;
+ }
+
+ final private boolean jj_3_1585() {
+ if (jj_scan_token(SESSION_USER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_817() {
+ if (jj_scan_token(DATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1584() {
+ if (jj_scan_token(SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1583() {
+ if (jj_scan_token(SCOPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1582() {
+ if (jj_scan_token(SAFE_OFFSET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1581() {
+ if (jj_scan_token(ROW_NUMBER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1580() {
+ if (jj_scan_token(ROLLBACK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_355() {
+ if (jj_scan_token(NEXT)) return true;
+ if (jj_scan_token(ROW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1579() {
+ if (jj_scan_token(RETURN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_413() {
+ if (jj_3R_224()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1578() {
+ if (jj_scan_token(RELEASE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1577() {
+ if (jj_scan_token(REGR_SXX)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1576() {
+ if (jj_scan_token(REGR_INTERCEPT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1575() {
+ if (jj_scan_token(REGR_AVGX)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_812() {
+ if (jj_scan_token(CHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1574() {
+ if (jj_scan_token(REF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_357() {
+ if (jj_scan_token(TO)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_355()) {
+ jj_scanpos = xsp;
+ if (jj_3_356()) {
+ jj_scanpos = xsp;
+ lookingAhead = true;
+ jj_semLA = true;
+ lookingAhead = false;
+ if (!jj_semLA || jj_3R_194()) return true;
}
}
return false;
}
+ final private boolean jj_3_1573() {
+ if (jj_scan_token(READS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1572() {
+ if (jj_scan_token(QUALIFY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1571() {
+ if (jj_scan_token(PREPARE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_816() {
+ if (jj_scan_token(CHARACTER)) return true;
+ if (jj_scan_token(SET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1570() {
+ if (jj_scan_token(POWER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1569() {
+ if (jj_scan_token(PORTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_293() {
+ return false;
+ }
+
+ final private boolean jj_3_1568() {
+ if (jj_scan_token(PERCENT_RANK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_34() {
+ if (jj_3R_81()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_359() {
+ if (jj_scan_token(AFTER)) return true;
+ if (jj_scan_token(MATCH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1567() {
+ if (jj_scan_token(PERCENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_815() {
+ if (jj_scan_token(VARCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1566() {
+ if (jj_scan_token(PARAMETER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_33() {
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_813() {
+ if (jj_scan_token(VARYING)) return true;
+ return false;
+ }
+
final private boolean jj_3R_379() {
return false;
}
- final private boolean jj_3R_206() {
+ final private boolean jj_3_1565() {
+ if (jj_scan_token(OVER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1564() {
+ if (jj_scan_token(OPEN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1563() {
+ if (jj_scan_token(OMIT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1562() {
+ if (jj_scan_token(OCTET_LENGTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_353() {
+ if (jj_scan_token(ALL)) return true;
+ if (jj_scan_token(ROWS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1561() {
+ if (jj_scan_token(NULLIF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_811() {
+ if (jj_scan_token(CHARACTER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1560() {
+ if (jj_scan_token(NORMALIZE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_814() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_811()) {
+ jj_scanpos = xsp;
+ if (jj_3_812()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_813()) {
+ jj_scanpos = xsp;
+ if (jj_3R_293()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1559() {
+ if (jj_scan_token(NEXT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1558() {
+ if (jj_scan_token(NCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_352() {
+ if (jj_scan_token(ONE)) return true;
+ if (jj_scan_token(ROW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1557() {
+ if (jj_scan_token(MONTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1556() {
+ if (jj_scan_token(MOD)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_32() {
+ if (jj_scan_token(COMMA)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_33()) {
+ jj_scanpos = xsp;
+ if (jj_3_34()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_378() {
+ return false;
+ }
+
+ final private boolean jj_3R_288() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_814()) {
+ jj_scanpos = xsp;
+ if (jj_3_815()) return true;
+ }
+ if (jj_3R_263()) return true;
+ xsp = jj_scanpos;
+ if (jj_3_816()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1555() {
+ if (jj_scan_token(METHOD)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1554() {
+ if (jj_scan_token(MEASURE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1553() {
+ if (jj_scan_token(MATCH_NUMBER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_31() {
+ if (jj_3R_81()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1552() {
+ if (jj_scan_token(MATCH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_351() {
+ if (jj_scan_token(MEASURES)) return true;
+ if (jj_3R_193()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1551() {
+ if (jj_scan_token(LN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_30() {
+ if (jj_3R_80()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1550() {
+ if (jj_scan_token(LATERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_377() {
+ return false;
+ }
+
+ final private boolean jj_3_1549() {
+ if (jj_scan_token(LANGUAGE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1548() {
+ if (jj_scan_token(JSON_SCOPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1547() {
+ if (jj_scan_token(JSON_OBJECT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_350() {
+ if (jj_3R_71()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1546() {
+ if (jj_scan_token(JSON_ARRAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1545() {
+ if (jj_scan_token(INT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_376() {
+ return false;
+ }
+
+ final private boolean jj_3_1544() {
+ if (jj_scan_token(INITIAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1543() {
+ if (jj_scan_token(IDENTITY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1542() {
+ if (jj_scan_token(GROUPS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1541() {
+ if (jj_scan_token(GLOBAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_349() {
+ if (jj_scan_token(PARTITION)) return true;
+ if (jj_scan_token(BY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1540() {
+ if (jj_scan_token(FUNCTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1539() {
+ if (jj_scan_token(FOREIGN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1538() {
+ if (jj_scan_token(FIRST_VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1537() {
+ if (jj_scan_token(EXTERNAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1536() {
+ if (jj_scan_token(EXECUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1535() {
+ if (jj_scan_token(ESCAPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_284() {
+ if (jj_scan_token(MAP)) return true;
+ if (jj_scan_token(LT)) return true;
+ if (jj_3R_121()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1534() {
+ if (jj_scan_token(END_FRAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1533() {
+ if (jj_scan_token(EMPTY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_184() {
+ if (jj_scan_token(LPAREN)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_30()) {
+ jj_scanpos = xsp;
+ if (jj_3_31()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1532() {
+ if (jj_scan_token(DYNAMIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_348() {
+ if (jj_scan_token(AS)) return true;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1531() {
+ if (jj_scan_token(DISALLOW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1530() {
+ if (jj_scan_token(DEREF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_169() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_348()) jj_scanpos = xsp;
+ if (jj_scan_token(MATCH_RECOGNIZE)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ xsp = jj_scanpos;
+ if (jj_3_349()) {
+ jj_scanpos = xsp;
+ if (jj_3R_376()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_350()) {
+ jj_scanpos = xsp;
+ if (jj_3R_377()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_351()) {
+ jj_scanpos = xsp;
+ if (jj_3R_378()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_352()) {
+ jj_scanpos = xsp;
+ if (jj_3_353()) {
+ jj_scanpos = xsp;
+ if (jj_3R_379()) return true;
+ }
+ }
+ xsp = jj_scanpos;
+ if (jj_3_359()) {
+ jj_scanpos = xsp;
+ if (jj_3R_380()) return true;
+ }
+ if (jj_scan_token(PATTERN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1529() {
+ if (jj_scan_token(DECLARE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1528() {
+ if (jj_scan_token(DEALLOCATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1527() {
+ if (jj_scan_token(DATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1526() {
+ if (jj_scan_token(CURRENT_TRANSFORM_GROUP_FOR_TYPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1525() {
+ if (jj_scan_token(CURRENT_PATH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1524() {
+ if (jj_scan_token(CURRENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1523() {
+ if (jj_scan_token(COVAR_SAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1522() {
+ if (jj_scan_token(CORRESPONDING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_283() {
+ if (jj_scan_token(ROW)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_430()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1521() {
+ if (jj_scan_token(CONTAINS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1520() {
+ if (jj_scan_token(COMMIT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1519() {
+ if (jj_scan_token(COALESCE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1518() {
+ if (jj_scan_token(CLASSIFIER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1517() {
+ if (jj_scan_token(CHARACTER_LENGTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1516() {
+ if (jj_scan_token(CEILING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1515() {
+ if (jj_scan_token(CARDINALITY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1514() {
+ if (jj_scan_token(BOOLEAN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1513() {
+ if (jj_scan_token(BINARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1512() {
+ if (jj_scan_token(BEGIN_FRAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1511() {
+ if (jj_scan_token(AUTHORIZATION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_29() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1510() {
+ if (jj_scan_token(ASOF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1509() {
+ if (jj_scan_token(ARE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1508() {
+ if (jj_scan_token(ABS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1507() {
+ if (jj_scan_token(ANALYZE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1506() {
+ if (jj_scan_token(QUERY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_346() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_192()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1505() {
+ if (jj_scan_token(SERVICE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1504() {
+ if (jj_scan_token(KILL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1503() {
+ if (jj_scan_token(LOGGING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1502() {
+ if (jj_scan_token(ENCRYPTED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_292() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1501() {
+ if (jj_scan_token(VALUE_TYPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_347() {
+ if (jj_scan_token(AS)) return true;
+ if (jj_3R_163()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1500() {
+ if (jj_scan_token(CACHE_GROUP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1499() {
+ if (jj_scan_token(AFFINITY_KEY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1498() {
+ if (jj_scan_token(ZONE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1497() {
+ if (jj_scan_token(WRITE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1496() {
+ if (jj_scan_token(WEEKS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_192() {
+ if (jj_3R_135()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1495() {
+ if (jj_scan_token(VERSION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1494() {
+ if (jj_scan_token(UTF16)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1493() {
+ if (jj_scan_token(USER_DEFINED_TYPE_CODE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1492() {
+ if (jj_scan_token(UNNAMED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_810() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_292()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_174() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_80()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1491() {
+ if (jj_scan_token(UNCONDITIONAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1490() {
+ if (jj_scan_token(TYPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_430() {
+ if (jj_3R_292()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1489() {
+ if (jj_scan_token(TRIGGER_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1488() {
+ if (jj_scan_token(TRANSFORM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1487() {
+ if (jj_scan_token(TRANSACTIONS_ACTIVE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1486() {
+ if (jj_scan_token(TIMESTAMP_TRUNC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1485() {
+ if (jj_scan_token(TIMESTAMPADD)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1484() {
+ if (jj_scan_token(TIES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1483() {
+ if (jj_scan_token(SUBSTITUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1482() {
+ if (jj_scan_token(STRUCTURE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1481() {
+ if (jj_scan_token(STATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1480() {
+ if (jj_scan_token(SQL_TSI_YEAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1479() {
+ if (jj_scan_token(SQL_TSI_QUARTER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1478() {
+ if (jj_scan_token(SQL_TSI_MICROSECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_386() {
+ return false;
+ }
+
+ final private boolean jj_3R_385() {
+ return false;
+ }
+
+ final private boolean jj_3_1477() {
+ if (jj_scan_token(SQL_TSI_DAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1476() {
+ if (jj_scan_token(SQL_TIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_345() {
+ if (jj_scan_token(EXCLUDE)) return true;
+ if (jj_scan_token(NULLS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_182() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_809()) {
+ jj_scanpos = xsp;
+ if (jj_3R_386()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1475() {
+ if (jj_scan_token(SQL_NVARCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_344() {
+ if (jj_scan_token(INCLUDE)) return true;
+ if (jj_scan_token(NULLS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_809() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1474() {
+ if (jj_scan_token(SQL_NCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1473() {
+ if (jj_scan_token(SQL_LONGVARBINARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1472() {
+ if (jj_scan_token(SQL_INTERVAL_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1471() {
+ if (jj_scan_token(SQL_INTERVAL_MINUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1470() {
+ if (jj_scan_token(SQL_INTERVAL_HOUR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_178() {
+ if (jj_scan_token(UNPIVOT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_344()) {
+ jj_scanpos = xsp;
+ if (jj_3_345()) {
+ jj_scanpos = xsp;
+ if (jj_3R_385()) return true;
+ }
+ }
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1469() {
+ if (jj_scan_token(SQL_INTERVAL_DAY_TO_HOUR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1468() {
+ if (jj_scan_token(SQL_FLOAT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1467() {
+ if (jj_scan_token(SQL_DATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1466() {
+ if (jj_scan_token(SQL_BOOLEAN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1465() {
+ if (jj_scan_token(SQL_BINARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_808() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1464() {
+ if (jj_scan_token(SPACE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1463() {
+ if (jj_scan_token(SIMPLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_807() {
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1462() {
+ if (jj_scan_token(SERVER_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1461() {
+ if (jj_scan_token(SEQUENCE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1460() {
+ if (jj_scan_token(SECURITY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1459() {
+ if (jj_scan_token(SCOPE_SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1458() {
+ if (jj_scan_token(SCHEMA_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_388() {
+ return false;
+ }
+
+ final private boolean jj_3_1457() {
+ if (jj_scan_token(SCALAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1456() {
+ if (jj_scan_token(ROUTINE_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1455() {
+ if (jj_scan_token(ROLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1454() {
+ if (jj_scan_token(RETURNED_SQLSTATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1453() {
+ if (jj_scan_token(RETURNED_CARDINALITY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_342() {
+ if (jj_scan_token(AS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1452() {
+ if (jj_scan_token(RESPECT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1451() {
+ if (jj_scan_token(RELATIVE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_343() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_342()) jj_scanpos = xsp;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_806() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1450() {
+ if (jj_scan_token(QUARTER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1449() {
+ if (jj_scan_token(PRIOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_805() {
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1448() {
+ if (jj_scan_token(PLI)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1447() {
+ if (jj_scan_token(PIVOT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1446() {
+ if (jj_scan_token(PASSTHROUGH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_191() {
+ if (jj_3R_163()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_343()) {
+ jj_scanpos = xsp;
+ if (jj_3R_388()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1445() {
+ if (jj_scan_token(PARTIAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1444() {
+ if (jj_scan_token(PARAMETER_SPECIFIC_CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1443() {
+ if (jj_scan_token(PARAMETER_MODE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1442() {
+ if (jj_scan_token(OUTPUT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1441() {
+ if (jj_scan_token(ORDERING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1440() {
+ if (jj_scan_token(OCTETS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1439() {
+ if (jj_scan_token(NULLS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1438() {
+ if (jj_scan_token(NESTING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_804() {
+ if (jj_scan_token(ARRAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_173() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_383()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1437() {
+ if (jj_scan_token(NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1436() {
+ if (jj_scan_token(MONTHS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_803() {
+ if (jj_scan_token(MULTISET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1435() {
+ if (jj_scan_token(MILLISECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_339() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_191()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1434() {
+ if (jj_scan_token(MESSAGE_TEXT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_341() {
+ if (jj_scan_token(AS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1433() {
+ if (jj_scan_token(MAXVALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1432() {
+ if (jj_scan_token(M)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_281() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_803()) {
+ jj_scanpos = xsp;
+ if (jj_3_804()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1431() {
+ if (jj_scan_token(LEVEL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1430() {
+ if (jj_scan_token(LABEL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1429() {
+ if (jj_scan_token(KEY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1428() {
+ if (jj_scan_token(JAVA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1427() {
+ if (jj_scan_token(ISODOW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1426() {
+ if (jj_scan_token(INSTANCE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_338() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_190()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1425() {
+ if (jj_scan_token(INCREMENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_28() {
+ if (jj_3R_78()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_190() {
+ if (jj_3R_387()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1424() {
+ if (jj_scan_token(IMPLEMENTATION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1423() {
+ if (jj_scan_token(ILIKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_27() {
+ if (jj_3R_77()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1422() {
+ if (jj_scan_token(HOP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1421() {
+ if (jj_scan_token(GRANTED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1420() {
+ if (jj_scan_token(GEOMETRY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1419() {
+ if (jj_scan_token(G)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1418() {
+ if (jj_scan_token(FORTRAN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_207() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_26()) {
@@ -34222,68 +35499,68 @@
return false;
}
+ final private boolean jj_3_1417() {
+ if (jj_scan_token(FIRST)) return true;
+ return false;
+ }
+
final private boolean jj_3_26() {
- if (jj_3R_75()) return true;
+ if (jj_3R_76()) return true;
return false;
}
- final private boolean jj_3_1584() {
- if (jj_scan_token(FRIDAY)) return true;
+ final private boolean jj_3_1416() {
+ if (jj_scan_token(EXCLUDE)) return true;
return false;
}
- final private boolean jj_3_1583() {
- if (jj_scan_token(TUESDAY)) return true;
+ final private boolean jj_3_1415() {
+ if (jj_scan_token(EPOCH)) return true;
return false;
}
- final private boolean jj_3_1582() {
- if (jj_scan_token(WITHOUT)) return true;
+ final private boolean jj_3_1414() {
+ if (jj_scan_token(DYNAMIC_FUNCTION)) return true;
return false;
}
- final private boolean jj_3_338() {
- if (jj_scan_token(AS)) return true;
+ final private boolean jj_3_1413() {
+ if (jj_scan_token(DOW)) return true;
return false;
}
- final private boolean jj_3_1581() {
- if (jj_scan_token(WIDTH_BUCKET)) return true;
+ final private boolean jj_3_1412() {
+ if (jj_scan_token(DIAGNOSTICS)) return true;
return false;
}
- final private boolean jj_3_1580() {
- if (jj_scan_token(VAR_SAMP)) return true;
+ final private boolean jj_3_1411() {
+ if (jj_scan_token(DESC)) return true;
return false;
}
- final private boolean jj_3_339() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_338()) jj_scanpos = xsp;
- if (jj_3R_84()) return true;
+ final private boolean jj_3_770() {
+ if (jj_scan_token(DOUBLE)) return true;
return false;
}
- final private boolean jj_3_799() {
- if (jj_scan_token(TIMESTAMP)) return true;
- if (jj_3R_259()) return true;
- if (jj_3R_290()) return true;
+ final private boolean jj_3_772() {
+ if (jj_scan_token(FLOAT)) return true;
return false;
}
- final private boolean jj_3_1579() {
- if (jj_scan_token(VARCHAR)) return true;
+ final private boolean jj_3_1410() {
+ if (jj_scan_token(DEGREE)) return true;
return false;
}
- final private boolean jj_3_1578() {
- if (jj_scan_token(VALUE_OF)) return true;
+ final private boolean jj_3_764() {
+ if (jj_scan_token(SMALLINT)) return true;
return false;
}
- final private boolean jj_3_1577() {
- if (jj_scan_token(UPSERT)) return true;
+ final private boolean jj_3_1409() {
+ if (jj_scan_token(DEFERRED)) return true;
return false;
}
@@ -34292,66 +35569,149 @@
return false;
}
- final private boolean jj_3_1576() {
- if (jj_scan_token(UNIQUE)) return true;
+ final private boolean jj_3_760() {
+ if (jj_scan_token(VARBINARY)) return true;
return false;
}
- final private boolean jj_3_1575() {
- if (jj_scan_token(TRUNCATE)) return true;
+ final private boolean jj_3_766() {
+ if (jj_scan_token(BIGINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_802() {
+ if (jj_scan_token(SQL_INTERVAL_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1408() {
+ if (jj_scan_token(DECADE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_340() {
+ if (jj_3R_191()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_762() {
+ if (jj_scan_token(TINYINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_801() {
+ if (jj_scan_token(SQL_INTERVAL_MINUTE_TO_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1407() {
+ if (jj_scan_token(DAYOFWEEK)) return true;
return false;
}
final private boolean jj_3_24() {
- if (jj_3R_74()) return true;
+ if (jj_3R_75()) return true;
return false;
}
- final private boolean jj_3R_189() {
- if (jj_3R_162()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_339()) {
- jj_scanpos = xsp;
- if (jj_3R_379()) return true;
- }
+ final private boolean jj_3_768() {
+ if (jj_scan_token(REAL)) return true;
return false;
}
- final private boolean jj_3_1574() {
- if (jj_scan_token(TRIGGER)) return true;
+ final private boolean jj_3_800() {
+ if (jj_scan_token(SQL_INTERVAL_MINUTE)) return true;
return false;
}
- final private boolean jj_3_1573() {
- if (jj_scan_token(TRANSLATE_REGEX)) return true;
+ final private boolean jj_3_1406() {
+ if (jj_scan_token(DATETIME_INTERVAL_CODE)) return true;
return false;
}
- final private boolean jj_3_1572() {
- if (jj_scan_token(TIMEZONE_MINUTE)) return true;
+ final private boolean jj_3_799() {
+ if (jj_scan_token(SQL_INTERVAL_HOUR_TO_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1405() {
+ if (jj_scan_token(DATE_DIFF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_756() {
+ if (jj_scan_token(INTEGER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_758() {
+ if (jj_scan_token(BINARY)) return true;
return false;
}
final private boolean jj_3_798() {
- if (jj_scan_token(TIME)) return true;
- if (jj_3R_259()) return true;
- if (jj_3R_290()) return true;
+ if (jj_scan_token(SQL_INTERVAL_HOUR_TO_MINUTE)) return true;
return false;
}
- final private boolean jj_3_1571() {
- if (jj_scan_token(TIME)) return true;
+ final private boolean jj_3_1404() {
+ if (jj_scan_token(CURSOR_NAME)) return true;
return false;
}
- final private boolean jj_3_1570() {
- if (jj_scan_token(SYSTEM_TIME)) return true;
+ final private boolean jj_3_754() {
+ if (jj_scan_token(BOOLEAN)) return true;
return false;
}
- final private boolean jj_3_1569() {
- if (jj_scan_token(SUCCEEDS)) return true;
+ final private boolean jj_3_797() {
+ if (jj_scan_token(SQL_INTERVAL_HOUR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1403() {
+ if (jj_scan_token(CONSTRUCTOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_748() {
+ if (jj_scan_token(TIMESTAMP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_752() {
+ if (jj_scan_token(NUMERIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_796() {
+ if (jj_scan_token(SQL_INTERVAL_DAY_TO_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1402() {
+ if (jj_scan_token(CONSTRAINT_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_750() {
+ if (jj_scan_token(DECIMAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_795() {
+ if (jj_scan_token(SQL_INTERVAL_DAY_TO_MINUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_177() {
+ if (jj_scan_token(PIVOT)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1401() {
+ if (jj_scan_token(CONNECTION)) return true;
return false;
}
@@ -34360,102 +35720,228 @@
return false;
}
- final private boolean jj_3_1568() {
- if (jj_scan_token(SUBSET)) return true;
+ final private boolean jj_3_794() {
+ if (jj_scan_token(SQL_INTERVAL_DAY_TO_HOUR)) return true;
return false;
}
- final private boolean jj_3R_285() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_797()) {
- jj_scanpos = xsp;
- if (jj_3_798()) {
- jj_scanpos = xsp;
- if (jj_3_799()) return true;
- }
- }
+ final private boolean jj_3_1400() {
+ if (jj_scan_token(COMMITTED)) return true;
return false;
}
- final private boolean jj_3_1567() {
- if (jj_scan_token(STDDEV_SAMP)) return true;
+ final private boolean jj_3_793() {
+ if (jj_scan_token(SQL_INTERVAL_DAY)) return true;
return false;
}
- final private boolean jj_3_797() {
- if (jj_scan_token(DATE)) return true;
+ final private boolean jj_3_1399() {
+ if (jj_scan_token(COLUMN_NAME)) return true;
return false;
}
- final private boolean jj_3_1566() {
- if (jj_scan_token(START)) return true;
+ final private boolean jj_3_792() {
+ if (jj_scan_token(SQL_INTERVAL_MONTH)) return true;
return false;
}
- final private boolean jj_3_1565() {
- if (jj_scan_token(SQLSTATE)) return true;
+ final private boolean jj_3_1398() {
+ if (jj_scan_token(COLLATION_CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_742() {
+ if (jj_scan_token(VARCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_791() {
+ if (jj_scan_token(SQL_INTERVAL_YEAR_TO_MONTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1397() {
+ if (jj_scan_token(CLASS_ORIGIN)) return true;
return false;
}
final private boolean jj_3_21() {
- if (jj_3R_74()) return true;
+ if (jj_3R_75()) return true;
return false;
}
- final private boolean jj_3_1564() {
- if (jj_scan_token(SPECIFICTYPE)) return true;
+ final private boolean jj_3_746() {
+ if (jj_scan_token(TIME)) return true;
return false;
}
- final private boolean jj_3_335() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_189()) return true;
+ final private boolean jj_3_771() {
+ if (jj_scan_token(SQL_FLOAT)) return true;
return false;
}
- final private boolean jj_3_1563() {
- if (jj_scan_token(SKIP_)) return true;
+ final private boolean jj_3_790() {
+ if (jj_scan_token(SQL_INTERVAL_YEAR)) return true;
return false;
}
- final private boolean jj_3_337() {
- if (jj_scan_token(AS)) return true;
+ final private boolean jj_3_1396() {
+ if (jj_scan_token(CHARACTER_SET_CATALOG)) return true;
return false;
}
- final private boolean jj_3_1562() {
- if (jj_scan_token(SESSION_USER)) return true;
+ final private boolean jj_3_744() {
+ if (jj_scan_token(DATE)) return true;
return false;
}
- final private boolean jj_3_1561() {
- if (jj_scan_token(SECOND)) return true;
+ final private boolean jj_3_769() {
+ if (jj_scan_token(SQL_DOUBLE)) return true;
return false;
}
- final private boolean jj_3_1560() {
- if (jj_scan_token(SCOPE)) return true;
+ final private boolean jj_3_789() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_771()) {
+ jj_scanpos = xsp;
+ if (jj_3_772()) return true;
+ }
return false;
}
- final private boolean jj_3_1559() {
- if (jj_scan_token(SAFE_OFFSET)) return true;
+ final private boolean jj_3_1395() {
+ if (jj_scan_token(CHAIN)) return true;
return false;
}
- final private boolean jj_3_1558() {
- if (jj_scan_token(ROW_NUMBER)) return true;
+ final private boolean jj_3_767() {
+ if (jj_scan_token(SQL_REAL)) return true;
return false;
}
- final private boolean jj_3_1557() {
- if (jj_scan_token(ROLLBACK)) return true;
+ final private boolean jj_3_788() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_769()) {
+ jj_scanpos = xsp;
+ if (jj_3_770()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1394() {
+ if (jj_scan_token(CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_740() {
+ if (jj_scan_token(CHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_765() {
+ if (jj_scan_token(SQL_BIGINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_787() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_767()) {
+ jj_scanpos = xsp;
+ if (jj_3_768()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1393() {
+ if (jj_scan_token(BREADTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_763() {
+ if (jj_scan_token(SQL_SMALLINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_786() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_765()) {
+ jj_scanpos = xsp;
+ if (jj_3_766()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1392() {
+ if (jj_scan_token(ATTRIBUTES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_761() {
+ if (jj_scan_token(SQL_TINYINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_785() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_763()) {
+ jj_scanpos = xsp;
+ if (jj_3_764()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1391() {
+ if (jj_scan_token(ASSERTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_759() {
+ if (jj_scan_token(SQL_VARBINARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_784() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_761()) {
+ jj_scanpos = xsp;
+ if (jj_3_762()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1390() {
+ if (jj_scan_token(ARRAY_AGG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_757() {
+ if (jj_scan_token(SQL_BINARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_783() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_759()) {
+ jj_scanpos = xsp;
+ if (jj_3_760()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1389() {
+ if (jj_scan_token(AFTER)) return true;
return false;
}
final private boolean jj_3_23() {
- if (jj_3R_74()) return true;
+ if (jj_3R_75()) return true;
if (jj_scan_token(COMMA)) return true;
return false;
}
@@ -34465,1539 +35951,67 @@
return false;
}
- final private boolean jj_3_792() {
- if (jj_scan_token(CHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1556() {
- if (jj_scan_token(RETURN)) return true;
- return false;
- }
-
- final private boolean jj_3_1555() {
- if (jj_scan_token(RELEASE)) return true;
- return false;
- }
-
- final private boolean jj_3_334() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_188()) return true;
- return false;
- }
-
- final private boolean jj_3_1554() {
- if (jj_scan_token(REGR_SXX)) return true;
- return false;
- }
-
- final private boolean jj_3R_188() {
- if (jj_3R_378()) return true;
- return false;
- }
-
- final private boolean jj_3_1553() {
- if (jj_scan_token(REGR_INTERCEPT)) return true;
- return false;
- }
-
- final private boolean jj_3_796() {
- if (jj_scan_token(CHARACTER)) return true;
- if (jj_scan_token(SET)) return true;
- return false;
- }
-
- final private boolean jj_3_1552() {
- if (jj_scan_token(REGR_AVGX)) return true;
- return false;
- }
-
- final private boolean jj_3_1551() {
- if (jj_scan_token(REF)) return true;
- return false;
- }
-
- final private boolean jj_3R_289() {
- return false;
- }
-
- final private boolean jj_3R_72() {
- if (jj_scan_token(LIMIT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_23()) {
- jj_scanpos = xsp;
- if (jj_3_24()) {
- jj_scanpos = xsp;
- if (jj_3_25()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_1550() {
- if (jj_scan_token(READS)) return true;
- return false;
- }
-
- final private boolean jj_3_1549() {
- if (jj_scan_token(QUALIFY)) return true;
- return false;
- }
-
- final private boolean jj_3_795() {
- if (jj_scan_token(VARCHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1548() {
- if (jj_scan_token(PREPARE)) return true;
- return false;
- }
-
- final private boolean jj_3_20() {
- if (jj_scan_token(ROWS)) return true;
- return false;
- }
-
- final private boolean jj_3_793() {
- if (jj_scan_token(VARYING)) return true;
- return false;
- }
-
- final private boolean jj_3_1547() {
- if (jj_scan_token(POWER)) return true;
- return false;
- }
-
- final private boolean jj_3_17() {
- if (jj_scan_token(FIRST)) return true;
- return false;
- }
-
- final private boolean jj_3_1546() {
- if (jj_scan_token(PORTION)) return true;
- return false;
- }
-
- final private boolean jj_3_1545() {
- if (jj_scan_token(PERCENT_RANK)) return true;
- return false;
- }
-
- final private boolean jj_3_1544() {
- if (jj_scan_token(PERCENT)) return true;
- return false;
- }
-
- final private boolean jj_3_1543() {
- if (jj_scan_token(PARAMETER)) return true;
- return false;
- }
-
- final private boolean jj_3_791() {
- if (jj_scan_token(CHARACTER)) return true;
- return false;
- }
-
- final private boolean jj_3_1542() {
- if (jj_scan_token(OVER)) return true;
- return false;
- }
-
- final private boolean jj_3_794() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_791()) {
- jj_scanpos = xsp;
- if (jj_3_792()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_793()) {
- jj_scanpos = xsp;
- if (jj_3R_289()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1541() {
- if (jj_scan_token(OPEN)) return true;
- return false;
- }
-
- final private boolean jj_3_1540() {
- if (jj_scan_token(OMIT)) return true;
- return false;
- }
-
- final private boolean jj_3_19() {
- if (jj_scan_token(ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_1539() {
- if (jj_scan_token(OCTET_LENGTH)) return true;
- return false;
- }
-
- final private boolean jj_3_1538() {
- if (jj_scan_token(NULLIF)) return true;
- return false;
- }
-
- final private boolean jj_3R_284() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_794()) {
- jj_scanpos = xsp;
- if (jj_3_795()) return true;
- }
- if (jj_3R_259()) return true;
- xsp = jj_scanpos;
- if (jj_3_796()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3R_73() {
- if (jj_scan_token(FETCH)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_17()) {
- jj_scanpos = xsp;
- if (jj_3_18()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1537() {
- if (jj_scan_token(NORMALIZE)) return true;
- return false;
- }
-
- final private boolean jj_3_336() {
- if (jj_3R_189()) return true;
- return false;
- }
-
- final private boolean jj_3_1536() {
- if (jj_scan_token(NEXT)) return true;
- return false;
- }
-
- final private boolean jj_3_1535() {
- if (jj_scan_token(NCHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_15() {
- if (jj_scan_token(ROWS)) return true;
- return false;
- }
-
- final private boolean jj_3_1534() {
- if (jj_scan_token(MONTH)) return true;
- return false;
- }
-
- final private boolean jj_3_1533() {
- if (jj_scan_token(MOD)) return true;
- return false;
- }
-
- final private boolean jj_3_1532() {
- if (jj_scan_token(METHOD)) return true;
- return false;
- }
-
- final private boolean jj_3_1531() {
- if (jj_scan_token(MEASURE)) return true;
- return false;
- }
-
- final private boolean jj_3R_176() {
- if (jj_scan_token(PIVOT)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1530() {
- if (jj_scan_token(MATCH_NUMBER)) return true;
- return false;
- }
-
- final private boolean jj_3_1529() {
- if (jj_scan_token(MATCH)) return true;
- return false;
- }
-
- final private boolean jj_3_1528() {
- if (jj_scan_token(LN)) return true;
- return false;
- }
-
- final private boolean jj_3_1527() {
- if (jj_scan_token(LATERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_14() {
- if (jj_scan_token(ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_16() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_14()) {
- jj_scanpos = xsp;
- if (jj_3_15()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1526() {
- if (jj_scan_token(LANGUAGE)) return true;
- return false;
- }
-
- final private boolean jj_3_1525() {
- if (jj_scan_token(JSON_SCOPE)) return true;
- return false;
- }
-
- final private boolean jj_3_1524() {
- if (jj_scan_token(JSON_OBJECT)) return true;
- return false;
- }
-
- final private boolean jj_3R_71() {
- if (jj_scan_token(OFFSET)) return true;
- if (jj_3R_74()) return true;
- return false;
- }
-
- final private boolean jj_3_1523() {
- if (jj_scan_token(JSON_ARRAY)) return true;
- return false;
- }
-
- final private boolean jj_3_1522() {
- if (jj_scan_token(INT)) return true;
- return false;
- }
-
- final private boolean jj_3_1521() {
- if (jj_scan_token(INITIAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1520() {
- if (jj_scan_token(IDENTITY)) return true;
- return false;
- }
-
- final private boolean jj_3_1519() {
- if (jj_scan_token(GROUPS)) return true;
- return false;
- }
-
- final private boolean jj_3_1518() {
- if (jj_scan_token(GLOBAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1517() {
- if (jj_scan_token(FUNCTION)) return true;
- return false;
- }
-
- final private boolean jj_3R_280() {
- if (jj_scan_token(MAP)) return true;
- if (jj_scan_token(LT)) return true;
- if (jj_3R_120()) return true;
- return false;
- }
-
- final private boolean jj_3_1516() {
- if (jj_scan_token(FOREIGN)) return true;
- return false;
- }
-
- final private boolean jj_3_1515() {
- if (jj_scan_token(FIRST_VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1514() {
- if (jj_scan_token(EXTERNAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1513() {
- if (jj_scan_token(EXECUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_1512() {
- if (jj_scan_token(ESCAPE)) return true;
- return false;
- }
-
- final private boolean jj_3_1511() {
- if (jj_scan_token(END_FRAME)) return true;
- return false;
- }
-
- final private boolean jj_3_1510() {
- if (jj_scan_token(EMPTY)) return true;
- return false;
- }
-
- final private boolean jj_3_1509() {
- if (jj_scan_token(DYNAMIC)) return true;
- return false;
- }
-
- final private boolean jj_3_1508() {
- if (jj_scan_token(DISALLOW)) return true;
- return false;
- }
-
- final private boolean jj_3_1507() {
- if (jj_scan_token(DEREF)) return true;
- return false;
- }
-
- final private boolean jj_3_8() {
- if (jj_3R_73()) return true;
- return false;
- }
-
- final private boolean jj_3_1506() {
- if (jj_scan_token(DECLARE)) return true;
- return false;
- }
-
- final private boolean jj_3_12() {
- if (jj_3R_73()) return true;
- return false;
- }
-
- final private boolean jj_3_1505() {
- if (jj_scan_token(DEALLOCATE)) return true;
- return false;
- }
-
- final private boolean jj_3R_167() {
- if (jj_scan_token(FOR)) return true;
- if (jj_scan_token(SYSTEM_TIME)) return true;
- return false;
- }
-
- final private boolean jj_3_1504() {
- if (jj_scan_token(DATE)) return true;
- return false;
- }
-
- final private boolean jj_3R_279() {
- if (jj_scan_token(ROW)) return true;
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_417()) return true;
- return false;
- }
-
- final private boolean jj_3_1503() {
- if (jj_scan_token(CURRENT_TRANSFORM_GROUP_FOR_TYPE)) return true;
- return false;
- }
-
- final private boolean jj_3_1502() {
- if (jj_scan_token(CURRENT_PATH)) return true;
- return false;
- }
-
- final private boolean jj_3_1501() {
- if (jj_scan_token(CURRENT)) return true;
- return false;
- }
-
- final private boolean jj_3_1500() {
- if (jj_scan_token(COVAR_SAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_7() {
- if (jj_3R_72()) return true;
- return false;
- }
-
- final private boolean jj_3_9() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_7()) {
- jj_scanpos = xsp;
- if (jj_3_8()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1499() {
- if (jj_scan_token(CORRESPONDING)) return true;
- return false;
- }
-
- final private boolean jj_3_1498() {
- if (jj_scan_token(CONTAINS)) return true;
- return false;
- }
-
- final private boolean jj_3_1497() {
- if (jj_scan_token(COMMIT)) return true;
- return false;
- }
-
- final private boolean jj_3_1496() {
- if (jj_scan_token(COALESCE)) return true;
- return false;
- }
-
- final private boolean jj_3_1495() {
- if (jj_scan_token(CLASSIFIER)) return true;
- return false;
- }
-
- final private boolean jj_3_1494() {
- if (jj_scan_token(CHARACTER_LENGTH)) return true;
- return false;
- }
-
- final private boolean jj_3_6() {
- if (jj_3R_71()) return true;
- return false;
- }
-
- final private boolean jj_3_11() {
- if (jj_3R_71()) return true;
- return false;
- }
-
- final private boolean jj_3_1493() {
- if (jj_scan_token(CEILING)) return true;
- return false;
- }
-
- final private boolean jj_3_1492() {
- if (jj_scan_token(CARDINALITY)) return true;
- return false;
- }
-
- final private boolean jj_3_1491() {
- if (jj_scan_token(BOOLEAN)) return true;
- return false;
- }
-
- final private boolean jj_3_10() {
- if (jj_3R_72()) return true;
- return false;
- }
-
- final private boolean jj_3_13() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_10()) {
- jj_scanpos = xsp;
- if (jj_3_11()) {
- jj_scanpos = xsp;
- if (jj_3_12()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_1490() {
- if (jj_scan_token(BINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_1489() {
- if (jj_scan_token(BEGIN_FRAME)) return true;
- return false;
- }
-
- final private boolean jj_3R_406() {
- return false;
- }
-
- final private boolean jj_3_1488() {
- if (jj_scan_token(AUTHORIZATION)) return true;
- return false;
- }
-
- final private boolean jj_3_1487() {
- if (jj_scan_token(ASOF)) return true;
- return false;
- }
-
- final private boolean jj_3_5() {
- if (jj_3R_70()) return true;
- return false;
- }
-
- final private boolean jj_3_1486() {
- if (jj_scan_token(ARE)) return true;
- return false;
- }
-
- final private boolean jj_3_1485() {
- if (jj_scan_token(ABS)) return true;
- return false;
- }
-
- final private boolean jj_3_1484() {
- if (jj_scan_token(ANALYZE)) return true;
- return false;
- }
-
- final private boolean jj_3R_288() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1483() {
- if (jj_scan_token(QUERY)) return true;
- return false;
- }
-
- final private boolean jj_3_1482() {
- if (jj_scan_token(SERVICE)) return true;
- return false;
- }
-
- final private boolean jj_3_1481() {
- if (jj_scan_token(KILL)) return true;
- return false;
- }
-
- final private boolean jj_3R_348() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_5()) {
- jj_scanpos = xsp;
- if (jj_3R_406()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_13()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_1480() {
- if (jj_scan_token(LOGGING)) return true;
- return false;
- }
-
- final private boolean jj_3_1479() {
- if (jj_scan_token(ENCRYPTED)) return true;
- return false;
- }
-
- final private boolean jj_3_1478() {
- if (jj_scan_token(VALUE_TYPE)) return true;
- return false;
- }
-
- final private boolean jj_3R_373() {
- if (jj_3R_411()) return true;
- return false;
- }
-
- final private boolean jj_3_1477() {
- if (jj_scan_token(CACHE_GROUP)) return true;
- return false;
- }
-
- final private boolean jj_3_1476() {
- if (jj_scan_token(AFFINITY_KEY)) return true;
- return false;
- }
-
- final private boolean jj_3_1475() {
- if (jj_scan_token(ZONE)) return true;
- return false;
- }
-
- final private boolean jj_3_1474() {
- if (jj_scan_token(WRITE)) return true;
- return false;
- }
-
- final private boolean jj_3_790() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_288()) return true;
- return false;
- }
-
- final private boolean jj_3_1473() {
- if (jj_scan_token(WEEKS)) return true;
- return false;
- }
-
- final private boolean jj_3_1472() {
- if (jj_scan_token(VERSION)) return true;
- return false;
- }
-
- final private boolean jj_3R_417() {
- if (jj_3R_288()) return true;
- return false;
- }
-
- final private boolean jj_3_1471() {
- if (jj_scan_token(UTF16)) return true;
- return false;
- }
-
- final private boolean jj_3_1470() {
- if (jj_scan_token(USER_DEFINED_TYPE_CODE)) return true;
- return false;
- }
-
- final private boolean jj_3_1469() {
- if (jj_scan_token(UNNAMED)) return true;
- return false;
- }
-
- final private boolean jj_3_1468() {
- if (jj_scan_token(UNCONDITIONAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1467() {
- if (jj_scan_token(TYPE)) return true;
- return false;
- }
-
- final private boolean jj_3_1466() {
- if (jj_scan_token(TRIGGER_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_1465() {
- if (jj_scan_token(TRANSFORM)) return true;
- return false;
- }
-
- final private boolean jj_3_332() {
- if (jj_scan_token(NULLS)) return true;
- if (jj_scan_token(LAST)) return true;
- return false;
- }
-
- final private boolean jj_3R_79() {
- if (jj_3R_347()) return true;
- if (jj_3R_348()) return true;
- return false;
- }
-
- final private boolean jj_3_1464() {
- if (jj_scan_token(TRANSACTIONS_ACTIVE)) return true;
- return false;
- }
-
- final private boolean jj_3_1463() {
- if (jj_scan_token(TIMESTAMP_TRUNC)) return true;
- return false;
- }
-
- final private boolean jj_3_1462() {
- if (jj_scan_token(TIMESTAMPADD)) return true;
- return false;
- }
-
- final private boolean jj_3_1461() {
- if (jj_scan_token(TIES)) return true;
- return false;
- }
-
- final private boolean jj_3_1460() {
- if (jj_scan_token(SUBSTITUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_333() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_331()) {
- jj_scanpos = xsp;
- if (jj_3_332()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_331() {
- if (jj_scan_token(NULLS)) return true;
- if (jj_scan_token(FIRST)) return true;
- return false;
- }
-
- final private boolean jj_3R_377() {
- return false;
- }
-
- final private boolean jj_3_1459() {
- if (jj_scan_token(STRUCTURE)) return true;
- return false;
- }
-
- final private boolean jj_3_1458() {
- if (jj_scan_token(STATE)) return true;
- return false;
- }
-
- final private boolean jj_3R_181() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_789()) {
- jj_scanpos = xsp;
- if (jj_3R_377()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1457() {
- if (jj_scan_token(SQL_TSI_YEAR)) return true;
- return false;
- }
-
- final private boolean jj_3_789() {
- if (jj_scan_token(NOT)) return true;
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_1456() {
- if (jj_scan_token(SQL_TSI_QUARTER)) return true;
- return false;
- }
-
- final private boolean jj_3_1455() {
- if (jj_scan_token(SQL_TSI_MICROSECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_329() {
- if (jj_scan_token(DESC)) return true;
- return false;
- }
-
- final private boolean jj_3_1454() {
- if (jj_scan_token(SQL_TSI_DAY)) return true;
- return false;
- }
-
- final private boolean jj_3_330() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_328()) {
- jj_scanpos = xsp;
- if (jj_3_329()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_328() {
- if (jj_scan_token(ASC)) return true;
- return false;
- }
-
- final private boolean jj_3_1453() {
- if (jj_scan_token(SQL_TIME)) return true;
- return false;
- }
-
- final private boolean jj_3_1452() {
- if (jj_scan_token(SQL_NVARCHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1451() {
- if (jj_scan_token(SQL_NCHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1450() {
- if (jj_scan_token(SQL_LONGVARBINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_1449() {
- if (jj_scan_token(SQL_INTERVAL_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3R_156() {
- if (jj_3R_81()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_330()) jj_scanpos = xsp;
- xsp = jj_scanpos;
- if (jj_3_333()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_1448() {
- if (jj_scan_token(SQL_INTERVAL_MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_1447() {
- if (jj_scan_token(SQL_INTERVAL_HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_788() {
- if (jj_scan_token(NOT)) return true;
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_1446() {
- if (jj_scan_token(SQL_INTERVAL_DAY_TO_HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_1445() {
- if (jj_scan_token(SQL_FLOAT)) return true;
- return false;
- }
-
- final private boolean jj_3_787() {
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_1444() {
- if (jj_scan_token(SQL_DATE)) return true;
- return false;
- }
-
- final private boolean jj_3_1443() {
- if (jj_scan_token(SQL_BOOLEAN)) return true;
- return false;
- }
-
- final private boolean jj_3_1442() {
- if (jj_scan_token(SQL_BINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_1441() {
- if (jj_scan_token(SPACE)) return true;
- return false;
- }
-
- final private boolean jj_3_1440() {
- if (jj_scan_token(SIMPLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1439() {
- if (jj_scan_token(SERVER_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_1438() {
- if (jj_scan_token(SEQUENCE)) return true;
- return false;
- }
-
- final private boolean jj_3_1437() {
- if (jj_scan_token(SECURITY)) return true;
- return false;
- }
-
- final private boolean jj_3_327() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_156()) return true;
- return false;
- }
-
- final private boolean jj_3_1436() {
- if (jj_scan_token(SCOPE_SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3_1435() {
- if (jj_scan_token(SCHEMA_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_1434() {
- if (jj_scan_token(SCALAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1433() {
- if (jj_scan_token(ROUTINE_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_786() {
- if (jj_scan_token(NOT)) return true;
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_1432() {
- if (jj_scan_token(ROLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1431() {
- if (jj_scan_token(RETURNED_SQLSTATE)) return true;
- return false;
- }
-
- final private boolean jj_3_785() {
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_1430() {
- if (jj_scan_token(RETURNED_CARDINALITY)) return true;
- return false;
- }
-
- final private boolean jj_3_1429() {
- if (jj_scan_token(RESPECT)) return true;
- return false;
- }
-
- final private boolean jj_3_2() {
- if (jj_3R_67()) return true;
- return false;
- }
-
- final private boolean jj_3_1428() {
- if (jj_scan_token(RELATIVE)) return true;
- return false;
- }
-
- final private boolean jj_3_1427() {
- if (jj_scan_token(QUARTER)) return true;
- return false;
- }
-
- final private boolean jj_3_1() {
- if (jj_3R_66()) return true;
- return false;
- }
-
- final private boolean jj_3_1426() {
- if (jj_scan_token(PRIOR)) return true;
- return false;
- }
-
- final private boolean jj_3_1425() {
- if (jj_scan_token(PLI)) return true;
- return false;
- }
-
- final private boolean jj_3_1424() {
- if (jj_scan_token(PIVOT)) return true;
- return false;
- }
-
- final private boolean jj_3_4() {
- if (jj_3R_69()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_1()) { jj_scanpos = xsp; break; }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_2()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3_1423() {
- if (jj_scan_token(PASSTHROUGH)) return true;
- return false;
- }
-
- final private boolean jj_3_1422() {
- if (jj_scan_token(PARTIAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1421() {
- if (jj_scan_token(PARAMETER_SPECIFIC_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3R_70() {
- if (jj_scan_token(ORDER)) return true;
- if (jj_scan_token(BY)) return true;
- return false;
- }
-
- final private boolean jj_3_1420() {
- if (jj_scan_token(PARAMETER_MODE)) return true;
- return false;
- }
-
- final private boolean jj_3_784() {
- if (jj_scan_token(ARRAY)) return true;
- return false;
- }
-
- final private boolean jj_3_1419() {
- if (jj_scan_token(OUTPUT)) return true;
- return false;
- }
-
- final private boolean jj_3_3() {
- if (jj_3R_68()) return true;
- return false;
- }
-
- final private boolean jj_3_1418() {
- if (jj_scan_token(ORDERING)) return true;
- return false;
- }
-
- final private boolean jj_3_783() {
- if (jj_scan_token(MULTISET)) return true;
- return false;
- }
-
- final private boolean jj_3_1417() {
- if (jj_scan_token(OCTETS)) return true;
- return false;
- }
-
- final private boolean jj_3_1416() {
- if (jj_scan_token(NULLS)) return true;
- return false;
- }
-
- final private boolean jj_3_1415() {
- if (jj_scan_token(NESTING)) return true;
- return false;
- }
-
- final private boolean jj_3R_374() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_3()) {
- jj_scanpos = xsp;
- if (jj_3_4()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1414() {
- if (jj_scan_token(NAME)) return true;
- return false;
- }
-
- final private boolean jj_3R_277() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_783()) {
- jj_scanpos = xsp;
- if (jj_3_784()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1413() {
- if (jj_scan_token(MONTHS)) return true;
- return false;
- }
-
- final private boolean jj_3_1412() {
- if (jj_scan_token(MILLISECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1411() {
- if (jj_scan_token(MESSAGE_TEXT)) return true;
- return false;
- }
-
- final private boolean jj_3_1410() {
- if (jj_scan_token(MAXVALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1409() {
- if (jj_scan_token(M)) return true;
- return false;
- }
-
- final private boolean jj_3R_149() {
- if (jj_scan_token(QUALIFY)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_1408() {
- if (jj_scan_token(LEVEL)) return true;
- return false;
- }
-
- final private boolean jj_3_1407() {
- if (jj_scan_token(LABEL)) return true;
- return false;
- }
-
- final private boolean jj_3_1406() {
- if (jj_scan_token(KEY)) return true;
- return false;
- }
-
- final private boolean jj_3_1405() {
- if (jj_scan_token(JAVA)) return true;
- return false;
- }
-
- final private boolean jj_3_1404() {
- if (jj_scan_token(ISODOW)) return true;
- return false;
- }
-
- final private boolean jj_3_1403() {
- if (jj_scan_token(INSTANCE)) return true;
- return false;
- }
-
- final private boolean jj_3_325() {
- if (jj_scan_token(TIES)) return true;
- return false;
- }
-
- final private boolean jj_3_1402() {
- if (jj_scan_token(INCREMENT)) return true;
- return false;
- }
-
- final private boolean jj_3_1401() {
- if (jj_scan_token(IMPLEMENTATION)) return true;
- return false;
- }
-
- final private boolean jj_3_324() {
- if (jj_scan_token(GROUP)) return true;
- return false;
- }
-
- final private boolean jj_3_1400() {
- if (jj_scan_token(ILIKE)) return true;
- return false;
- }
-
- final private boolean jj_3_1399() {
- if (jj_scan_token(HOP)) return true;
- return false;
- }
-
- final private boolean jj_3_323() {
- if (jj_scan_token(NO)) return true;
- if (jj_scan_token(OTHERS)) return true;
- return false;
- }
-
- final private boolean jj_3_1398() {
- if (jj_scan_token(GRANTED)) return true;
- return false;
- }
-
- final private boolean jj_3_1397() {
- if (jj_scan_token(GEOMETRY)) return true;
- return false;
- }
-
- final private boolean jj_3_322() {
- if (jj_scan_token(CURRENT)) return true;
- if (jj_scan_token(ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_1396() {
- if (jj_scan_token(G)) return true;
- return false;
- }
-
- final private boolean jj_3_1395() {
- if (jj_scan_token(FORTRAN)) return true;
- return false;
- }
-
- final private boolean jj_3_1394() {
- if (jj_scan_token(FIRST)) return true;
- return false;
- }
-
- final private boolean jj_3_1393() {
- if (jj_scan_token(EXCLUDE)) return true;
- return false;
- }
-
- final private boolean jj_3_750() {
- if (jj_scan_token(DOUBLE)) return true;
- return false;
- }
-
- final private boolean jj_3_752() {
- if (jj_scan_token(FLOAT)) return true;
- return false;
- }
-
- final private boolean jj_3_1392() {
- if (jj_scan_token(EPOCH)) return true;
- return false;
- }
-
- final private boolean jj_3_744() {
- if (jj_scan_token(SMALLINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1391() {
- if (jj_scan_token(DYNAMIC_FUNCTION)) return true;
- return false;
- }
-
- final private boolean jj_3_326() {
- if (jj_scan_token(EXCLUDE)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_322()) {
- jj_scanpos = xsp;
- if (jj_3_323()) {
- jj_scanpos = xsp;
- if (jj_3_324()) {
- jj_scanpos = xsp;
- if (jj_3_325()) return true;
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_740() {
- if (jj_scan_token(VARBINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_746() {
- if (jj_scan_token(BIGINT)) return true;
+ final private boolean jj_3_755() {
+ if (jj_scan_token(SQL_INTEGER)) return true;
return false;
}
final private boolean jj_3_782() {
- if (jj_scan_token(SQL_INTERVAL_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1390() {
- if (jj_scan_token(DOW)) return true;
- return false;
- }
-
- final private boolean jj_3_742() {
- if (jj_scan_token(TINYINT)) return true;
- return false;
- }
-
- final private boolean jj_3_781() {
- if (jj_scan_token(SQL_INTERVAL_MINUTE_TO_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1389() {
- if (jj_scan_token(DIAGNOSTICS)) return true;
- return false;
- }
-
- final private boolean jj_3_748() {
- if (jj_scan_token(REAL)) return true;
- return false;
- }
-
- final private boolean jj_3_780() {
- if (jj_scan_token(SQL_INTERVAL_MINUTE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_757()) {
+ jj_scanpos = xsp;
+ if (jj_3_758()) return true;
+ }
return false;
}
final private boolean jj_3_1388() {
- if (jj_scan_token(DESC)) return true;
+ if (jj_scan_token(ADA)) return true;
return false;
}
- final private boolean jj_3_779() {
- if (jj_scan_token(SQL_INTERVAL_HOUR_TO_SECOND)) return true;
+ final private boolean jj_3_753() {
+ if (jj_scan_token(SQL_BOOLEAN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_781() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_755()) {
+ jj_scanpos = xsp;
+ if (jj_3_756()) return true;
+ }
return false;
}
final private boolean jj_3_1387() {
- if (jj_scan_token(DEGREE)) return true;
- return false;
- }
-
- final private boolean jj_3_736() {
- if (jj_scan_token(INTEGER)) return true;
- return false;
- }
-
- final private boolean jj_3_738() {
- if (jj_scan_token(BINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_778() {
- if (jj_scan_token(SQL_INTERVAL_HOUR_TO_MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_1386() {
- if (jj_scan_token(DEFERRED)) return true;
- return false;
- }
-
- final private boolean jj_3_734() {
- if (jj_scan_token(BOOLEAN)) return true;
- return false;
- }
-
- final private boolean jj_3_777() {
- if (jj_scan_token(SQL_INTERVAL_HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_1385() {
- if (jj_scan_token(DECADE)) return true;
- return false;
- }
-
- final private boolean jj_3_728() {
- if (jj_scan_token(TIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_732() {
- if (jj_scan_token(NUMERIC)) return true;
- return false;
- }
-
- final private boolean jj_3_776() {
- if (jj_scan_token(SQL_INTERVAL_DAY_TO_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1384() {
- if (jj_scan_token(DAYOFWEEK)) return true;
- return false;
- }
-
- final private boolean jj_3_730() {
- if (jj_scan_token(DECIMAL)) return true;
- return false;
- }
-
- final private boolean jj_3_775() {
- if (jj_scan_token(SQL_INTERVAL_DAY_TO_MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_1383() {
- if (jj_scan_token(DATETIME_INTERVAL_CODE)) return true;
- return false;
- }
-
- final private boolean jj_3_774() {
- if (jj_scan_token(SQL_INTERVAL_DAY_TO_HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_1382() {
- if (jj_scan_token(DATE_DIFF)) return true;
- return false;
- }
-
- final private boolean jj_3_773() {
- if (jj_scan_token(SQL_INTERVAL_DAY)) return true;
- return false;
- }
-
- final private boolean jj_3_1381() {
- if (jj_scan_token(CURSOR_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_772() {
- if (jj_scan_token(SQL_INTERVAL_MONTH)) return true;
- return false;
- }
-
- final private boolean jj_3_1380() {
- if (jj_scan_token(CONSTRUCTOR)) return true;
- return false;
- }
-
- final private boolean jj_3_722() {
- if (jj_scan_token(VARCHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_771() {
- if (jj_scan_token(SQL_INTERVAL_YEAR_TO_MONTH)) return true;
- return false;
- }
-
- final private boolean jj_3_1379() {
- if (jj_scan_token(CONSTRAINT_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_318() {
- if (jj_scan_token(FOLLOWING)) return true;
- return false;
- }
-
- final private boolean jj_3_726() {
- if (jj_scan_token(TIME)) return true;
+ if (jj_scan_token(ABSENT)) return true;
return false;
}
final private boolean jj_3_751() {
- if (jj_scan_token(SQL_FLOAT)) return true;
+ if (jj_scan_token(SQL_NUMERIC)) return true;
return false;
}
- final private boolean jj_3_770() {
- if (jj_scan_token(SQL_INTERVAL_YEAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1378() {
- if (jj_scan_token(CONNECTION)) return true;
- return false;
- }
-
- final private boolean jj_3_724() {
- if (jj_scan_token(DATE)) return true;
+ final private boolean jj_3_780() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_753()) {
+ jj_scanpos = xsp;
+ if (jj_3_754()) return true;
+ }
return false;
}
final private boolean jj_3_749() {
- if (jj_scan_token(SQL_DOUBLE)) return true;
+ if (jj_scan_token(SQL_DECIMAL)) return true;
return false;
}
- final private boolean jj_3_769() {
+ final private boolean jj_3_779() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_751()) {
@@ -36007,17 +36021,12 @@
return false;
}
- final private boolean jj_3_1377() {
- if (jj_scan_token(COMMITTED)) return true;
- return false;
- }
-
final private boolean jj_3_747() {
- if (jj_scan_token(SQL_REAL)) return true;
+ if (jj_scan_token(SQL_TIMESTAMP)) return true;
return false;
}
- final private boolean jj_3_768() {
+ final private boolean jj_3_778() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_749()) {
@@ -36027,22 +36036,12 @@
return false;
}
- final private boolean jj_3_1376() {
- if (jj_scan_token(COLUMN_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_720() {
- if (jj_scan_token(CHAR)) return true;
- return false;
- }
-
final private boolean jj_3_745() {
- if (jj_scan_token(SQL_BIGINT)) return true;
+ if (jj_scan_token(SQL_TIME)) return true;
return false;
}
- final private boolean jj_3_767() {
+ final private boolean jj_3_777() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_747()) {
@@ -36052,22 +36051,12 @@
return false;
}
- final private boolean jj_3_1375() {
- if (jj_scan_token(COLLATION_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3_317() {
- if (jj_scan_token(PRECEDING)) return true;
- return false;
- }
-
final private boolean jj_3_743() {
- if (jj_scan_token(SQL_SMALLINT)) return true;
+ if (jj_scan_token(SQL_DATE)) return true;
return false;
}
- final private boolean jj_3_766() {
+ final private boolean jj_3_776() {
Token xsp;
xsp = jj_scanpos;
if (jj_3_745()) {
@@ -36077,326 +36066,9 @@
return false;
}
- final private boolean jj_3_1374() {
- if (jj_scan_token(CLASS_ORIGIN)) return true;
- return false;
- }
-
- final private boolean jj_3_741() {
- if (jj_scan_token(SQL_TINYINT)) return true;
- return false;
- }
-
- final private boolean jj_3_765() {
+ final private boolean jj_3R_346() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_743()) {
- jj_scanpos = xsp;
- if (jj_3_744()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1373() {
- if (jj_scan_token(CHARACTER_SET_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3_739() {
- if (jj_scan_token(SQL_VARBINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_764() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_741()) {
- jj_scanpos = xsp;
- if (jj_3_742()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1372() {
- if (jj_scan_token(CHAIN)) return true;
- return false;
- }
-
- final private boolean jj_3_737() {
- if (jj_scan_token(SQL_BINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_763() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_739()) {
- jj_scanpos = xsp;
- if (jj_3_740()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1371() {
- if (jj_scan_token(CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3_735() {
- if (jj_scan_token(SQL_INTEGER)) return true;
- return false;
- }
-
- final private boolean jj_3_762() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_737()) {
- jj_scanpos = xsp;
- if (jj_3_738()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1370() {
- if (jj_scan_token(BREADTH)) return true;
- return false;
- }
-
- final private boolean jj_3_733() {
- if (jj_scan_token(SQL_BOOLEAN)) return true;
- return false;
- }
-
- final private boolean jj_3_761() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_735()) {
- jj_scanpos = xsp;
- if (jj_3_736()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1369() {
- if (jj_scan_token(ATTRIBUTES)) return true;
- return false;
- }
-
- final private boolean jj_3_321() {
- if (jj_3R_81()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_317()) {
- jj_scanpos = xsp;
- if (jj_3_318()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_731() {
- if (jj_scan_token(SQL_NUMERIC)) return true;
- return false;
- }
-
- final private boolean jj_3_760() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_733()) {
- jj_scanpos = xsp;
- if (jj_3_734()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1368() {
- if (jj_scan_token(ASSERTION)) return true;
- return false;
- }
-
- final private boolean jj_3_316() {
- if (jj_scan_token(FOLLOWING)) return true;
- return false;
- }
-
- final private boolean jj_3_729() {
- if (jj_scan_token(SQL_DECIMAL)) return true;
- return false;
- }
-
- final private boolean jj_3_759() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_731()) {
- jj_scanpos = xsp;
- if (jj_3_732()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1367() {
- if (jj_scan_token(ARRAY_AGG)) return true;
- return false;
- }
-
- final private boolean jj_3_727() {
- if (jj_scan_token(SQL_TIMESTAMP)) return true;
- return false;
- }
-
- final private boolean jj_3_758() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_729()) {
- jj_scanpos = xsp;
- if (jj_3_730()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1366() {
- if (jj_scan_token(AFTER)) return true;
- return false;
- }
-
- final private boolean jj_3_725() {
- if (jj_scan_token(SQL_TIME)) return true;
- return false;
- }
-
- final private boolean jj_3_757() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_727()) {
- jj_scanpos = xsp;
- if (jj_3_728()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1365() {
- if (jj_scan_token(ADA)) return true;
- return false;
- }
-
- final private boolean jj_3_723() {
- if (jj_scan_token(SQL_DATE)) return true;
- return false;
- }
-
- final private boolean jj_3_756() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_725()) {
- jj_scanpos = xsp;
- if (jj_3_726()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1364() {
- if (jj_scan_token(ABSENT)) return true;
- return false;
- }
-
- final private boolean jj_3_315() {
- if (jj_scan_token(PRECEDING)) return true;
- return false;
- }
-
- final private boolean jj_3_714() {
- if (jj_scan_token(NUMERIC)) return true;
- return false;
- }
-
- final private boolean jj_3_721() {
- if (jj_scan_token(SQL_VARCHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_755() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_723()) {
- jj_scanpos = xsp;
- if (jj_3_724()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_719() {
- if (jj_scan_token(SQL_CHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_754() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_721()) {
- jj_scanpos = xsp;
- if (jj_3_722()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_753() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_719()) {
- jj_scanpos = xsp;
- if (jj_3_720()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_342() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_1364()) {
- jj_scanpos = xsp;
- if (jj_3_1365()) {
- jj_scanpos = xsp;
- if (jj_3_1366()) {
- jj_scanpos = xsp;
- if (jj_3_1367()) {
- jj_scanpos = xsp;
- if (jj_3_1368()) {
- jj_scanpos = xsp;
- if (jj_3_1369()) {
- jj_scanpos = xsp;
- if (jj_3_1370()) {
- jj_scanpos = xsp;
- if (jj_3_1371()) {
- jj_scanpos = xsp;
- if (jj_3_1372()) {
- jj_scanpos = xsp;
- if (jj_3_1373()) {
- jj_scanpos = xsp;
- if (jj_3_1374()) {
- jj_scanpos = xsp;
- if (jj_3_1375()) {
- jj_scanpos = xsp;
- if (jj_3_1376()) {
- jj_scanpos = xsp;
- if (jj_3_1377()) {
- jj_scanpos = xsp;
- if (jj_3_1378()) {
- jj_scanpos = xsp;
- if (jj_3_1379()) {
- jj_scanpos = xsp;
- if (jj_3_1380()) {
- jj_scanpos = xsp;
- if (jj_3_1381()) {
- jj_scanpos = xsp;
- if (jj_3_1382()) {
- jj_scanpos = xsp;
- if (jj_3_1383()) {
- jj_scanpos = xsp;
- if (jj_3_1384()) {
- jj_scanpos = xsp;
- if (jj_3_1385()) {
- jj_scanpos = xsp;
- if (jj_3_1386()) {
- jj_scanpos = xsp;
if (jj_3_1387()) {
jj_scanpos = xsp;
if (jj_3_1388()) {
@@ -36791,7 +36463,56 @@
jj_scanpos = xsp;
if (jj_3_1583()) {
jj_scanpos = xsp;
- if (jj_3_1584()) return true;
+ if (jj_3_1584()) {
+ jj_scanpos = xsp;
+ if (jj_3_1585()) {
+ jj_scanpos = xsp;
+ if (jj_3_1586()) {
+ jj_scanpos = xsp;
+ if (jj_3_1587()) {
+ jj_scanpos = xsp;
+ if (jj_3_1588()) {
+ jj_scanpos = xsp;
+ if (jj_3_1589()) {
+ jj_scanpos = xsp;
+ if (jj_3_1590()) {
+ jj_scanpos = xsp;
+ if (jj_3_1591()) {
+ jj_scanpos = xsp;
+ if (jj_3_1592()) {
+ jj_scanpos = xsp;
+ if (jj_3_1593()) {
+ jj_scanpos = xsp;
+ if (jj_3_1594()) {
+ jj_scanpos = xsp;
+ if (jj_3_1595()) {
+ jj_scanpos = xsp;
+ if (jj_3_1596()) {
+ jj_scanpos = xsp;
+ if (jj_3_1597()) {
+ jj_scanpos = xsp;
+ if (jj_3_1598()) {
+ jj_scanpos = xsp;
+ if (jj_3_1599()) {
+ jj_scanpos = xsp;
+ if (jj_3_1600()) {
+ jj_scanpos = xsp;
+ if (jj_3_1601()) {
+ jj_scanpos = xsp;
+ if (jj_3_1602()) {
+ jj_scanpos = xsp;
+ if (jj_3_1603()) {
+ jj_scanpos = xsp;
+ if (jj_3_1604()) {
+ jj_scanpos = xsp;
+ if (jj_3_1605()) {
+ jj_scanpos = xsp;
+ if (jj_3_1606()) {
+ jj_scanpos = xsp;
+ if (jj_3_1607()) {
+ jj_scanpos = xsp;
+ if (jj_3_1608()) return true;
+ }
}
}
}
@@ -37015,1745 +36736,1986 @@
return false;
}
- final private boolean jj_3_320() {
- if (jj_scan_token(UNBOUNDED)) return true;
+ final private boolean jj_3R_73() {
+ if (jj_scan_token(LIMIT)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_315()) {
+ if (jj_3_23()) {
jj_scanpos = xsp;
- if (jj_3_316()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_713() {
- if (jj_scan_token(DEC)) return true;
- return false;
- }
-
- final private boolean jj_3_717() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_287()) return true;
- return false;
- }
-
- final private boolean jj_3_1363() {
- if (jj_scan_token(SUNDAY)) return true;
- return false;
- }
-
- final private boolean jj_3_1362() {
- if (jj_scan_token(THURSDAY)) return true;
- return false;
- }
-
- final private boolean jj_3R_187() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_319()) {
+ if (jj_3_24()) {
jj_scanpos = xsp;
- if (jj_3_320()) {
- jj_scanpos = xsp;
- if (jj_3_321()) return true;
+ if (jj_3_25()) return true;
}
}
return false;
}
- final private boolean jj_3_1361() {
- if (jj_scan_token(MONDAY)) return true;
+ final private boolean jj_3_734() {
+ if (jj_scan_token(NUMERIC)) return true;
return false;
}
- final private boolean jj_3_319() {
- if (jj_scan_token(CURRENT)) return true;
- if (jj_scan_token(ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_1360() {
- if (jj_scan_token(WITHIN)) return true;
- return false;
- }
-
- final private boolean jj_3_1359() {
- if (jj_scan_token(WHENEVER)) return true;
- return false;
- }
-
- final private boolean jj_3_1358() {
- if (jj_scan_token(VAR_POP)) return true;
- return false;
- }
-
- final private boolean jj_3_1357() {
- if (jj_scan_token(VARIANT)) return true;
- return false;
- }
-
- final private boolean jj_3_718() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_260()) return true;
- return false;
- }
-
- final private boolean jj_3_1356() {
- if (jj_scan_token(VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1355() {
- if (jj_scan_token(UPPER)) return true;
- return false;
- }
-
- final private boolean jj_3_1354() {
- if (jj_scan_token(UESCAPE)) return true;
- return false;
- }
-
- final private boolean jj_3_716() {
- if (jj_scan_token(ANY)) return true;
- return false;
- }
-
- final private boolean jj_3_1353() {
- if (jj_scan_token(TRIM_ARRAY)) return true;
- return false;
- }
-
- final private boolean jj_3_712() {
- if (jj_scan_token(DECIMAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1352() {
- if (jj_scan_token(TREAT)) return true;
- return false;
- }
-
- final private boolean jj_3_715() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_712()) {
- jj_scanpos = xsp;
- if (jj_3_713()) {
- jj_scanpos = xsp;
- if (jj_3_714()) return true;
- }
- }
- return false;
- }
-
- final private boolean jj_3_1351() {
- if (jj_scan_token(TRANSLATE)) return true;
- return false;
- }
-
- final private boolean jj_3_1350() {
- if (jj_scan_token(TIMEZONE_HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_1349() {
- if (jj_scan_token(TABLESAMPLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1348() {
- if (jj_scan_token(SYSTEM)) return true;
- return false;
- }
-
- final private boolean jj_3R_283() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_715()) {
- jj_scanpos = xsp;
- if (jj_3_716()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_718()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_1347() {
- if (jj_scan_token(SUBSTRING_REGEX)) return true;
- return false;
- }
-
- final private boolean jj_3_314() {
- if (jj_scan_token(DISALLOW)) return true;
- if (jj_scan_token(PARTIAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1346() {
- if (jj_scan_token(SUBMULTISET)) return true;
- return false;
- }
-
- final private boolean jj_3_1345() {
- if (jj_scan_token(STDDEV_POP)) return true;
- return false;
- }
-
- final private boolean jj_3_1344() {
- if (jj_scan_token(SQRT)) return true;
- return false;
- }
-
- final private boolean jj_3_1343() {
- if (jj_scan_token(SQLEXCEPTION)) return true;
- return false;
- }
-
- final private boolean jj_3_313() {
- if (jj_scan_token(ALLOW)) return true;
- if (jj_scan_token(PARTIAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1342() {
- if (jj_scan_token(SPECIFIC)) return true;
- return false;
- }
-
- final private boolean jj_3_1341() {
- if (jj_scan_token(SIMILAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1340() {
- if (jj_scan_token(SENSITIVE)) return true;
- return false;
- }
-
- final private boolean jj_3_1339() {
- if (jj_scan_token(SEARCH)) return true;
- return false;
- }
-
- final private boolean jj_3_1338() {
- if (jj_scan_token(SAVEPOINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1337() {
- if (jj_scan_token(SAFE_CAST)) return true;
- return false;
- }
-
- final private boolean jj_3R_286() {
- return false;
- }
-
- final private boolean jj_3_1336() {
- if (jj_scan_token(ROWS)) return true;
- return false;
- }
-
- final private boolean jj_3_1335() {
- if (jj_scan_token(REVOKE)) return true;
- return false;
- }
-
- final private boolean jj_3_311() {
- if (jj_3R_187()) return true;
- return false;
- }
-
- final private boolean jj_3_711() {
- if (jj_scan_token(VARBINARY)) return true;
- return false;
- }
-
- final private boolean jj_3_1334() {
- if (jj_scan_token(RESULT)) return true;
- return false;
- }
-
- final private boolean jj_3_709() {
- if (jj_scan_token(VARYING)) return true;
- return false;
- }
-
- final private boolean jj_3_1333() {
- if (jj_scan_token(REGR_SYY)) return true;
- return false;
- }
-
- final private boolean jj_3_1332() {
- if (jj_scan_token(REGR_SLOPE)) return true;
- return false;
- }
-
- final private boolean jj_3_310() {
- if (jj_scan_token(BETWEEN)) return true;
- if (jj_3R_187()) return true;
- return false;
- }
-
- final private boolean jj_3_1331() {
- if (jj_scan_token(REGR_COUNT)) return true;
- return false;
- }
-
- final private boolean jj_3_1330() {
- if (jj_scan_token(REFERENCING)) return true;
- return false;
- }
-
- final private boolean jj_3_1329() {
- if (jj_scan_token(RECURSIVE)) return true;
- return false;
- }
-
- final private boolean jj_3_309() {
- if (jj_scan_token(RANGE)) return true;
- return false;
- }
-
- final private boolean jj_3_1328() {
- if (jj_scan_token(RANK)) return true;
- return false;
- }
-
- final private boolean jj_3_710() {
- if (jj_scan_token(BINARY)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_709()) {
- jj_scanpos = xsp;
- if (jj_3R_286()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1327() {
- if (jj_scan_token(PROCEDURE)) return true;
- return false;
- }
-
- final private boolean jj_3_308() {
- if (jj_scan_token(ROWS)) return true;
- return false;
- }
-
- final private boolean jj_3_1326() {
- if (jj_scan_token(PRECISION)) return true;
- return false;
- }
-
- final private boolean jj_3_1325() {
- if (jj_scan_token(POSITION_REGEX)) return true;
- return false;
- }
-
- final private boolean jj_3_1324() {
- if (jj_scan_token(PERMUTE)) return true;
- return false;
- }
-
- final private boolean jj_3R_282() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_710()) {
- jj_scanpos = xsp;
- if (jj_3_711()) return true;
- }
- if (jj_3R_259()) return true;
- return false;
- }
-
- final private boolean jj_3_1323() {
- if (jj_scan_token(PERCENTILE_DISC)) return true;
- return false;
- }
-
- final private boolean jj_3_1322() {
- if (jj_scan_token(PER)) return true;
- return false;
- }
-
- final private boolean jj_3_312() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_308()) {
- jj_scanpos = xsp;
- if (jj_3_309()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_310()) {
- jj_scanpos = xsp;
- if (jj_3_311()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1321() {
- if (jj_scan_token(OVERLAY)) return true;
- return false;
- }
-
- final private boolean jj_3_1320() {
- if (jj_scan_token(OUT)) return true;
- return false;
- }
-
- final private boolean jj_3_1319() {
- if (jj_scan_token(ONLY)) return true;
- return false;
- }
-
- final private boolean jj_3_1318() {
- if (jj_scan_token(OLD)) return true;
- return false;
- }
-
- final private boolean jj_3_307() {
- if (jj_3R_70()) return true;
- return false;
- }
-
- final private boolean jj_3_1317() {
- if (jj_scan_token(OCCURRENCES_REGEX)) return true;
- return false;
- }
-
- final private boolean jj_3_1316() {
- if (jj_scan_token(NTILE)) return true;
- return false;
- }
-
- final private boolean jj_3_1315() {
- if (jj_scan_token(NONE)) return true;
- return false;
- }
-
- final private boolean jj_3_1314() {
- if (jj_scan_token(NEW)) return true;
- return false;
- }
-
- final private boolean jj_3_1313() {
- if (jj_scan_token(NATIONAL)) return true;
- return false;
- }
-
- final private boolean jj_3_708() {
- if (jj_scan_token(UUID)) return true;
- return false;
- }
-
- final private boolean jj_3_1312() {
- if (jj_scan_token(MODULE)) return true;
- return false;
- }
-
- final private boolean jj_3_306() {
- if (jj_scan_token(PARTITION)) return true;
- if (jj_scan_token(BY)) return true;
- return false;
- }
-
- final private boolean jj_3_1311() {
- if (jj_scan_token(MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_707() {
- if (jj_scan_token(VARIANT)) return true;
- return false;
- }
-
- final private boolean jj_3_1310() {
- if (jj_scan_token(MEMBER)) return true;
- return false;
- }
-
- final private boolean jj_3_696() {
- if (jj_scan_token(INT)) return true;
- return false;
- }
-
- final private boolean jj_3R_405() {
- return false;
- }
-
- final private boolean jj_3_1309() {
- if (jj_scan_token(MAX)) return true;
- return false;
- }
-
- final private boolean jj_3_697() {
- if (jj_scan_token(PRECISION)) return true;
- return false;
- }
-
- final private boolean jj_3_706() {
- if (jj_scan_token(FLOAT)) return true;
- return false;
- }
-
- final private boolean jj_3_1308() {
- if (jj_scan_token(MATCH_CONDITION)) return true;
- return false;
- }
-
- final private boolean jj_3_305() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1307() {
- if (jj_scan_token(LOWER)) return true;
- return false;
- }
-
- final private boolean jj_3_1306() {
- if (jj_scan_token(LIKE_REGEX)) return true;
- return false;
- }
-
- final private boolean jj_3_705() {
- if (jj_scan_token(DOUBLE)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_697()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_1305() {
- if (jj_scan_token(LAST_VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1304() {
- if (jj_scan_token(LAG)) return true;
- return false;
- }
-
- final private boolean jj_3_704() {
- if (jj_scan_token(REAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1303() {
- if (jj_scan_token(JSON_QUERY)) return true;
- return false;
- }
-
- final private boolean jj_3R_331() {
- if (jj_scan_token(LPAREN)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_305()) {
- jj_scanpos = xsp;
- if (jj_3R_405()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1302() {
- if (jj_scan_token(JSON_EXISTS)) return true;
- return false;
- }
-
- final private boolean jj_3_703() {
- if (jj_scan_token(BIGINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1301() {
- if (jj_scan_token(INTERSECTION)) return true;
- return false;
- }
-
- final private boolean jj_3_1300() {
- if (jj_scan_token(INSENSITIVE)) return true;
- return false;
- }
-
- final private boolean jj_3_702() {
- if (jj_scan_token(SMALLINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1299() {
- if (jj_scan_token(INDICATOR)) return true;
- return false;
- }
-
- final private boolean jj_3_1298() {
- if (jj_scan_token(HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_695() {
- if (jj_scan_token(INTEGER)) return true;
- return false;
- }
-
- final private boolean jj_3_701() {
- if (jj_scan_token(TINYINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1297() {
- if (jj_scan_token(GROUPING)) return true;
- return false;
- }
-
- final private boolean jj_3_1296() {
- if (jj_scan_token(GET)) return true;
- return false;
- }
-
- final private boolean jj_3_700() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_695()) {
- jj_scanpos = xsp;
- if (jj_3_696()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_1295() {
- if (jj_scan_token(FREE)) return true;
- return false;
- }
-
- final private boolean jj_3_1294() {
- if (jj_scan_token(FLOOR)) return true;
- return false;
- }
-
- final private boolean jj_3_699() {
- if (jj_scan_token(BOOLEAN)) return true;
- return false;
- }
-
- final private boolean jj_3_1293() {
- if (jj_scan_token(FILTER)) return true;
- return false;
- }
-
- final private boolean jj_3_1292() {
- if (jj_scan_token(EXTEND)) return true;
- return false;
- }
-
- final private boolean jj_3_1291() {
- if (jj_scan_token(EXEC)) return true;
- return false;
- }
-
- final private boolean jj_3_1290() {
- if (jj_scan_token(EQUALS)) return true;
- return false;
- }
-
- final private boolean jj_3_1289() {
- if (jj_scan_token(END_EXEC)) return true;
- return false;
- }
-
- final private boolean jj_3_1288() {
- if (jj_scan_token(ELEMENT)) return true;
- return false;
- }
-
- final private boolean jj_3_1287() {
- if (jj_scan_token(DOUBLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1286() {
- if (jj_scan_token(DETERMINISTIC)) return true;
- return false;
- }
-
- final private boolean jj_3_698() {
- if (jj_scan_token(GEOMETRY)) return true;
- return false;
- }
-
- final private boolean jj_3_1285() {
- if (jj_scan_token(DENSE_RANK)) return true;
- return false;
- }
-
- final private boolean jj_3_1284() {
- if (jj_scan_token(DECIMAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1283() {
- if (jj_scan_token(DAY)) return true;
- return false;
- }
-
- final private boolean jj_3_1282() {
- if (jj_scan_token(CYCLE)) return true;
- return false;
- }
-
- final private boolean jj_3R_281() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_698()) {
- jj_scanpos = xsp;
- if (jj_3_699()) {
- jj_scanpos = xsp;
- if (jj_3_700()) {
- jj_scanpos = xsp;
- if (jj_3_701()) {
- jj_scanpos = xsp;
- if (jj_3_702()) {
- jj_scanpos = xsp;
- if (jj_3_703()) {
- jj_scanpos = xsp;
- if (jj_3_704()) {
- jj_scanpos = xsp;
- if (jj_3_705()) {
- jj_scanpos = xsp;
- if (jj_3_706()) {
- jj_scanpos = xsp;
- if (jj_3_707()) {
- jj_scanpos = xsp;
- if (jj_3_708()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3R_186() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_1281() {
- if (jj_scan_token(CURRENT_ROW)) return true;
- return false;
- }
-
- final private boolean jj_3_1280() {
- if (jj_scan_token(CURRENT_DEFAULT_TRANSFORM_GROUP)) return true;
- return false;
- }
-
- final private boolean jj_3_1279() {
- if (jj_scan_token(CUME_DIST)) return true;
- return false;
- }
-
- final private boolean jj_3_1278() {
- if (jj_scan_token(COVAR_POP)) return true;
- return false;
- }
-
- final private boolean jj_3_1277() {
- if (jj_scan_token(CORR)) return true;
- return false;
- }
-
- final private boolean jj_3_1276() {
- if (jj_scan_token(CONNECT)) return true;
- return false;
- }
-
- final private boolean jj_3_1275() {
- if (jj_scan_token(COLLECT)) return true;
- return false;
- }
-
- final private boolean jj_3_1274() {
- if (jj_scan_token(CLOSE)) return true;
- return false;
- }
-
- final private boolean jj_3_1273() {
- if (jj_scan_token(CHECK)) return true;
- return false;
- }
-
- final private boolean jj_3_1272() {
- if (jj_scan_token(CHARACTER)) return true;
- return false;
- }
-
- final private boolean jj_3_1271() {
- if (jj_scan_token(CEIL)) return true;
- return false;
- }
-
- final private boolean jj_3_304() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_186()) return true;
- return false;
- }
-
- final private boolean jj_3_694() {
- if (jj_3R_285()) return true;
- return false;
- }
-
- final private boolean jj_3_1270() {
- if (jj_scan_token(CALLED)) return true;
- return false;
- }
-
- final private boolean jj_3_1269() {
- if (jj_scan_token(BLOB)) return true;
- return false;
- }
-
- final private boolean jj_3_693() {
- if (jj_3R_284()) return true;
- return false;
- }
-
- final private boolean jj_3_1268() {
- if (jj_scan_token(BIGINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1267() {
- if (jj_scan_token(BEGIN)) return true;
- return false;
- }
-
- final private boolean jj_3_692() {
- if (jj_3R_283()) return true;
- return false;
- }
-
- final private boolean jj_3_1266() {
- if (jj_scan_token(ATOMIC)) return true;
- return false;
- }
-
- final private boolean jj_3_1265() {
- if (jj_scan_token(ASENSITIVE)) return true;
- return false;
- }
-
- final private boolean jj_3_691() {
- if (jj_3R_282()) return true;
- return false;
- }
-
- final private boolean jj_3R_148() {
- if (jj_scan_token(WINDOW)) return true;
- if (jj_3R_186()) return true;
- return false;
- }
-
- final private boolean jj_3_1264() {
- if (jj_scan_token(ALLOW)) return true;
- return false;
- }
-
- final private boolean jj_3_1263() {
- if (jj_scan_token(TOTAL)) return true;
- return false;
- }
-
- final private boolean jj_3_690() {
- if (jj_3R_281()) return true;
- return false;
- }
-
- final private boolean jj_3_1262() {
- if (jj_scan_token(REFRESH)) return true;
- return false;
- }
-
- final private boolean jj_3_1261() {
- if (jj_scan_token(ASYNC)) return true;
- return false;
- }
-
- final private boolean jj_3_1260() {
- if (jj_scan_token(CONTINUOUS)) return true;
- return false;
- }
-
- final private boolean jj_3_1259() {
- if (jj_scan_token(PASSWORD)) return true;
- return false;
- }
-
- final private boolean jj_3R_278() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_690()) {
- jj_scanpos = xsp;
- if (jj_3_691()) {
- jj_scanpos = xsp;
- if (jj_3_692()) {
- jj_scanpos = xsp;
- if (jj_3_693()) {
- jj_scanpos = xsp;
- if (jj_3_694()) return true;
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_1258() {
- if (jj_scan_token(INLINE_SIZE)) return true;
- return false;
- }
-
- final private boolean jj_3_1257() {
- if (jj_scan_token(WRAP_VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1256() {
- if (jj_scan_token(DATA_REGION)) return true;
- return false;
- }
-
- final private boolean jj_3_1255() {
- if (jj_scan_token(WRITE_SYNCHRONIZATION_MODE)) return true;
- return false;
- }
-
- final private boolean jj_3R_147() {
- if (jj_scan_token(HAVING)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
- final private boolean jj_3_1254() {
- if (jj_scan_token(BACKUPS)) return true;
- return false;
- }
-
- final private boolean jj_3_1253() {
- if (jj_scan_token(YEARS)) return true;
- return false;
- }
-
- final private boolean jj_3_1252() {
- if (jj_scan_token(WRAPPER)) return true;
- return false;
- }
-
- final private boolean jj_3_1251() {
- if (jj_scan_token(WEEK)) return true;
- return false;
- }
-
- final private boolean jj_3_1250() {
- if (jj_scan_token(UTF8)) return true;
- return false;
- }
-
- final private boolean jj_3_1249() {
- if (jj_scan_token(USER_DEFINED_TYPE_SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3_1248() {
- if (jj_scan_token(USER_DEFINED_TYPE_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3_1247() {
- if (jj_scan_token(UNPIVOT)) return true;
- return false;
- }
-
- final private boolean jj_3_303() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_689() {
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3_1246() {
- if (jj_scan_token(UNCOMMITTED)) return true;
- return false;
- }
-
- final private boolean jj_3_1245() {
- if (jj_scan_token(TUMBLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1244() {
- if (jj_scan_token(TRIGGER_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3_688() {
- if (jj_3R_280()) return true;
- return false;
- }
-
- final private boolean jj_3_1243() {
- if (jj_scan_token(TRANSACTIONS_ROLLED_BACK)) return true;
- return false;
- }
-
- final private boolean jj_3_1242() {
- if (jj_scan_token(TRANSACTION)) return true;
- return false;
- }
-
- final private boolean jj_3_687() {
- if (jj_3R_279()) return true;
- return false;
- }
-
- final private boolean jj_3_1241() {
- if (jj_scan_token(TIMESTAMP_DIFF)) return true;
- return false;
- }
-
- final private boolean jj_3_1240() {
- if (jj_scan_token(TIME_TRUNC)) return true;
- return false;
- }
-
- final private boolean jj_3R_396() {
- if (jj_3R_78()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_303()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3_1239() {
- if (jj_scan_token(TEMPORARY)) return true;
- return false;
- }
-
- final private boolean jj_3_686() {
- if (jj_3R_278()) return true;
- return false;
- }
-
- final private boolean jj_3_1238() {
- if (jj_scan_token(SUBCLASS_ORIGIN)) return true;
- return false;
- }
-
- final private boolean jj_3_1237() {
- if (jj_scan_token(STRING_AGG)) return true;
- return false;
- }
-
- final private boolean jj_3_1236() {
+ final private boolean jj_3_741() {
if (jj_scan_token(SQL_VARCHAR)) return true;
return false;
}
- final private boolean jj_3_1235() {
- if (jj_scan_token(SQL_TSI_WEEK)) return true;
- return false;
- }
-
- final private boolean jj_3R_360() {
+ final private boolean jj_3_775() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_686()) {
+ if (jj_3_743()) {
jj_scanpos = xsp;
- if (jj_3_687()) {
- jj_scanpos = xsp;
- if (jj_3_688()) {
- jj_scanpos = xsp;
- if (jj_3_689()) return true;
- }
- }
+ if (jj_3_744()) return true;
}
return false;
}
- final private boolean jj_3_1234() {
- if (jj_scan_token(SQL_TSI_MONTH)) return true;
+ final private boolean jj_3_739() {
+ if (jj_scan_token(SQL_CHAR)) return true;
return false;
}
- final private boolean jj_3_1233() {
- if (jj_scan_token(SQL_TSI_HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_1232() {
- if (jj_scan_token(SQL_TINYINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1231() {
- if (jj_scan_token(SQL_SMALLINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1230() {
- if (jj_scan_token(SQL_NUMERIC)) return true;
- return false;
- }
-
- final private boolean jj_3_1229() {
- if (jj_scan_token(SQL_LONGVARNCHAR)) return true;
- return false;
- }
-
- final private boolean jj_3_1228() {
- if (jj_scan_token(SQL_INTERVAL_YEAR_TO_MONTH)) return true;
- return false;
- }
-
- final private boolean jj_3_1227() {
- if (jj_scan_token(SQL_INTERVAL_MONTH)) return true;
- return false;
- }
-
- final private boolean jj_3R_234() {
- if (jj_3R_396()) return true;
- return false;
- }
-
- final private boolean jj_3_1226() {
- if (jj_scan_token(SQL_INTERVAL_HOUR_TO_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1225() {
- if (jj_scan_token(SQL_INTERVAL_DAY_TO_SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1224() {
- if (jj_scan_token(SQL_INTERVAL_DAY)) return true;
- return false;
- }
-
- final private boolean jj_3_1223() {
- if (jj_scan_token(SQL_DOUBLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1222() {
- if (jj_scan_token(SQL_CLOB)) return true;
- return false;
- }
-
- final private boolean jj_3_685() {
- if (jj_3R_277()) return true;
- return false;
- }
-
- final private boolean jj_3_1221() {
- if (jj_scan_token(SQL_BLOB)) return true;
- return false;
- }
-
- final private boolean jj_3_1220() {
- if (jj_scan_token(SQL_BIGINT)) return true;
- return false;
- }
-
- final private boolean jj_3_1219() {
- if (jj_scan_token(SOURCE)) return true;
- return false;
- }
-
- final private boolean jj_3_1218() {
- if (jj_scan_token(SETS)) return true;
- return false;
- }
-
- final private boolean jj_3_1217() {
- if (jj_scan_token(SERVER)) return true;
- return false;
- }
-
- final private boolean jj_3_1216() {
- if (jj_scan_token(SEPARATOR)) return true;
- return false;
- }
-
- final private boolean jj_3_1215() {
- if (jj_scan_token(SECTION)) return true;
- return false;
- }
-
- final private boolean jj_3R_120() {
- if (jj_3R_360()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_685()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
- final private boolean jj_3_1214() {
- if (jj_scan_token(SCOPE_NAME)) return true;
- return false;
- }
-
- final private boolean jj_3_1213() {
- if (jj_scan_token(SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3_302() {
- if (jj_3R_78()) return true;
- return false;
- }
-
- final private boolean jj_3_1212() {
- if (jj_scan_token(ROW_COUNT)) return true;
- return false;
- }
-
- final private boolean jj_3_1211() {
- if (jj_scan_token(ROUTINE_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3_1210() {
- if (jj_scan_token(RLIKE)) return true;
- return false;
- }
-
- final private boolean jj_3_1209() {
- if (jj_scan_token(RETURNED_OCTET_LENGTH)) return true;
- return false;
- }
-
- final private boolean jj_3_301() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1208() {
- if (jj_scan_token(RESTRICT)) return true;
- return false;
- }
-
- final private boolean jj_3_1207() {
- if (jj_scan_token(REPLACE)) return true;
- return false;
- }
-
- final private boolean jj_3_1206() {
- if (jj_scan_token(READ)) return true;
- return false;
- }
-
- final private boolean jj_3_1205() {
- if (jj_scan_token(PUBLIC)) return true;
- return false;
- }
-
- final private boolean jj_3_1204() {
- if (jj_scan_token(PRESERVE)) return true;
- return false;
- }
-
- final private boolean jj_3_1203() {
- if (jj_scan_token(PLAN)) return true;
- return false;
- }
-
- final private boolean jj_3_300() {
- if (jj_scan_token(CUBE)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_1202() {
- if (jj_scan_token(PATH)) return true;
- return false;
- }
-
- final private boolean jj_3_1201() {
- if (jj_scan_token(PASSING)) return true;
- return false;
- }
-
- final private boolean jj_3_1200() {
- if (jj_scan_token(PARAMETER_SPECIFIC_SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3_1199() {
- if (jj_scan_token(PARAMETER_ORDINAL_POSITION)) return true;
- return false;
- }
-
- final private boolean jj_3_1198() {
- if (jj_scan_token(PAD)) return true;
- return false;
- }
-
- final private boolean jj_3_1197() {
- if (jj_scan_token(OTHERS)) return true;
- return false;
- }
-
- final private boolean jj_3_299() {
- if (jj_scan_token(ROLLUP)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_684() {
- if (jj_scan_token(MINUS)) return true;
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1196() {
- if (jj_scan_token(OPTIONS)) return true;
- return false;
- }
-
- final private boolean jj_3_1195() {
- if (jj_scan_token(OBJECT)) return true;
- return false;
- }
-
- final private boolean jj_3_1194() {
- if (jj_scan_token(NULLABLE)) return true;
- return false;
- }
-
- final private boolean jj_3_1193() {
- if (jj_scan_token(NANOSECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_1192() {
- if (jj_scan_token(MUMPS)) return true;
- return false;
- }
-
- final private boolean jj_3R_185() {
+ final private boolean jj_3_774() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_298()) {
+ if (jj_3_741()) {
jj_scanpos = xsp;
- if (jj_3_299()) {
- jj_scanpos = xsp;
- if (jj_3_300()) {
- jj_scanpos = xsp;
- if (jj_3_301()) {
- jj_scanpos = xsp;
- if (jj_3_302()) return true;
+ if (jj_3_742()) return true;
}
+ return false;
+ }
+
+ final private boolean jj_3_20() {
+ if (jj_scan_token(ROWS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_773() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_739()) {
+ jj_scanpos = xsp;
+ if (jj_3_740()) return true;
}
+ return false;
+ }
+
+ final private boolean jj_3_17() {
+ if (jj_scan_token(FIRST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1386() {
+ if (jj_scan_token(SATURDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1385() {
+ if (jj_scan_token(WEDNESDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_168() {
+ if (jj_scan_token(FOR)) return true;
+ if (jj_scan_token(SYSTEM_TIME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1384() {
+ if (jj_scan_token(YEAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1383() {
+ if (jj_scan_token(WINDOW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_733() {
+ if (jj_scan_token(DEC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1382() {
+ if (jj_scan_token(VERSIONING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_737() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_291()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1381() {
+ if (jj_scan_token(VARYING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_19() {
+ if (jj_scan_token(ROW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1380() {
+ if (jj_scan_token(VARBINARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1379() {
+ if (jj_scan_token(UUID)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_74() {
+ if (jj_scan_token(FETCH)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_17()) {
+ jj_scanpos = xsp;
+ if (jj_3_18()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1378() {
+ if (jj_scan_token(UNSIGNED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1377() {
+ if (jj_scan_token(UESCAPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1376() {
+ if (jj_scan_token(TRIM_ARRAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_15() {
+ if (jj_scan_token(ROWS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1375() {
+ if (jj_scan_token(TREAT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_738() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_264()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1374() {
+ if (jj_scan_token(TRANSLATE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1373() {
+ if (jj_scan_token(TIMEZONE_HOUR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1372() {
+ if (jj_scan_token(TABLESAMPLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_736() {
+ if (jj_scan_token(ANY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1371() {
+ if (jj_scan_token(SYSTEM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_732() {
+ if (jj_scan_token(DECIMAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1370() {
+ if (jj_scan_token(SUBSTRING_REGEX)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_735() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_732()) {
+ jj_scanpos = xsp;
+ if (jj_3_733()) {
+ jj_scanpos = xsp;
+ if (jj_3_734()) return true;
}
}
return false;
}
- final private boolean jj_3_1191() {
- if (jj_scan_token(MINVALUE)) return true;
+ final private boolean jj_3_1369() {
+ if (jj_scan_token(SUBMULTISET)) return true;
return false;
}
- final private boolean jj_3_298() {
- if (jj_scan_token(GROUPING)) return true;
- if (jj_scan_token(SETS)) return true;
+ final private boolean jj_3_1368() {
+ if (jj_scan_token(STDDEV_POP)) return true;
return false;
}
- final private boolean jj_3_1190() {
- if (jj_scan_token(MILLENNIUM)) return true;
+ final private boolean jj_3_14() {
+ if (jj_scan_token(ROW)) return true;
return false;
}
- final private boolean jj_3_682() {
- if (jj_scan_token(PLUS)) return true;
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ final private boolean jj_3_16() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_14()) {
+ jj_scanpos = xsp;
+ if (jj_3_15()) return true;
+ }
return false;
}
- final private boolean jj_3_1189() {
- if (jj_scan_token(MESSAGE_OCTET_LENGTH)) return true;
+ final private boolean jj_3_1367() {
+ if (jj_scan_token(SQRT)) return true;
return false;
}
- final private boolean jj_3_1188() {
- if (jj_scan_token(MATCHED)) return true;
- return false;
- }
-
- final private boolean jj_3_681() {
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1187() {
- if (jj_scan_token(LOCATOR)) return true;
- return false;
- }
-
- final private boolean jj_3_1186() {
- if (jj_scan_token(LENGTH)) return true;
- return false;
- }
-
- final private boolean jj_3_1185() {
- if (jj_scan_token(KEY_TYPE)) return true;
- return false;
- }
-
- final private boolean jj_3_1184() {
- if (jj_scan_token(K)) return true;
+ final private boolean jj_3_1366() {
+ if (jj_scan_token(SQLEXCEPTION)) return true;
return false;
}
final private boolean jj_3R_287() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_683()) {
+ if (jj_3_735()) {
jj_scanpos = xsp;
- if (jj_3_684()) return true;
+ if (jj_3_736()) return true;
}
+ xsp = jj_scanpos;
+ if (jj_3_738()) jj_scanpos = xsp;
return false;
}
- final private boolean jj_3_1183() {
- if (jj_scan_token(ISOYEAR)) return true;
+ final private boolean jj_3_1365() {
+ if (jj_scan_token(SPECIFIC)) return true;
return false;
}
- final private boolean jj_3_683() {
+ final private boolean jj_3R_72() {
+ if (jj_scan_token(OFFSET)) return true;
+ if (jj_3R_75()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1364() {
+ if (jj_scan_token(SIMILAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1363() {
+ if (jj_scan_token(SENSITIVE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1362() {
+ if (jj_scan_token(SEARCH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1361() {
+ if (jj_scan_token(SAVEPOINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1360() {
+ if (jj_scan_token(SAFE_CAST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1359() {
+ if (jj_scan_token(ROWS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1358() {
+ if (jj_scan_token(REVOKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_382() {
+ if (jj_3R_423()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1357() {
+ if (jj_scan_token(RESULT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1356() {
+ if (jj_scan_token(REGR_SYY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1355() {
+ if (jj_scan_token(REGR_SLOPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_290() {
+ return false;
+ }
+
+ final private boolean jj_3_1354() {
+ if (jj_scan_token(REGR_COUNT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1353() {
+ if (jj_scan_token(REFERENCING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_731() {
+ if (jj_scan_token(VARBINARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1352() {
+ if (jj_scan_token(RECURSIVE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_729() {
+ if (jj_scan_token(VARYING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1351() {
+ if (jj_scan_token(RANK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1350() {
+ if (jj_scan_token(PROCEDURE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1349() {
+ if (jj_scan_token(PRECISION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1348() {
+ if (jj_scan_token(POSITION_REGEX)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1347() {
+ if (jj_scan_token(PERMUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1346() {
+ if (jj_scan_token(PERCENTILE_DISC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_730() {
+ if (jj_scan_token(BINARY)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_681()) {
+ if (jj_3_729()) {
jj_scanpos = xsp;
- if (jj_3_682()) return true;
+ if (jj_3R_290()) return true;
}
return false;
}
- final private boolean jj_3_1182() {
- if (jj_scan_token(INVOKER)) return true;
+ final private boolean jj_3_1345() {
+ if (jj_scan_token(PER)) return true;
return false;
}
- final private boolean jj_3_297() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_185()) return true;
+ final private boolean jj_3_336() {
+ if (jj_scan_token(NULLS)) return true;
+ if (jj_scan_token(LAST)) return true;
return false;
}
- final private boolean jj_3_1181() {
- if (jj_scan_token(INPUT)) return true;
+ final private boolean jj_3_1344() {
+ if (jj_scan_token(OVERLAY)) return true;
return false;
}
- final private boolean jj_3_1180() {
- if (jj_scan_token(INCLUDING)) return true;
+ final private boolean jj_3_1343() {
+ if (jj_scan_token(OUT)) return true;
return false;
}
- final private boolean jj_3_1179() {
- if (jj_scan_token(IMMEDIATELY)) return true;
+ final private boolean jj_3_1342() {
+ if (jj_scan_token(ONLY)) return true;
return false;
}
- final private boolean jj_3_1178() {
- if (jj_scan_token(IGNORE)) return true;
+ final private boolean jj_3_8() {
+ if (jj_3R_74()) return true;
return false;
}
- final private boolean jj_3_1177() {
- if (jj_scan_token(HIERARCHY)) return true;
+ final private boolean jj_3R_286() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_730()) {
+ jj_scanpos = xsp;
+ if (jj_3_731()) return true;
+ }
+ if (jj_3R_263()) return true;
return false;
}
- final private boolean jj_3_1176() {
- if (jj_scan_token(GOTO)) return true;
+ final private boolean jj_3_1341() {
+ if (jj_scan_token(OLD)) return true;
return false;
}
- final private boolean jj_3_1175() {
- if (jj_scan_token(GENERATED)) return true;
+ final private boolean jj_3_12() {
+ if (jj_3R_74()) return true;
return false;
}
- final private boolean jj_3_1174() {
- if (jj_scan_token(FRAC_SECOND)) return true;
+ final private boolean jj_3_1340() {
+ if (jj_scan_token(OCCURRENCES_REGEX)) return true;
return false;
}
- final private boolean jj_3_1173() {
- if (jj_scan_token(FORMAT)) return true;
+ final private boolean jj_3_337() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_335()) {
+ jj_scanpos = xsp;
+ if (jj_3_336()) return true;
+ }
return false;
}
- final private boolean jj_3_1172() {
- if (jj_scan_token(FINAL)) return true;
+ final private boolean jj_3_335() {
+ if (jj_scan_token(NULLS)) return true;
+ if (jj_scan_token(FIRST)) return true;
return false;
}
- final private boolean jj_3_1171() {
- if (jj_scan_token(EXCEPTION)) return true;
+ final private boolean jj_3_1339() {
+ if (jj_scan_token(NTILE)) return true;
return false;
}
- final private boolean jj_3_1170() {
- if (jj_scan_token(ENCODING)) return true;
+ final private boolean jj_3_1338() {
+ if (jj_scan_token(NONE)) return true;
return false;
}
- final private boolean jj_3_1169() {
- if (jj_scan_token(DOT_FORMAT)) return true;
- return false;
- }
-
- final private boolean jj_3_1168() {
- if (jj_scan_token(DOMAIN)) return true;
- return false;
- }
-
- final private boolean jj_3R_260() {
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_1167() {
- if (jj_scan_token(DESCRIPTOR)) return true;
- return false;
- }
-
- final private boolean jj_3_1166() {
- if (jj_scan_token(DERIVED)) return true;
- return false;
- }
-
- final private boolean jj_3_1165() {
- if (jj_scan_token(DEFINER)) return true;
- return false;
- }
-
- final private boolean jj_3_296() {
- if (jj_scan_token(ALL)) return true;
- return false;
- }
-
- final private boolean jj_3_1164() {
- if (jj_scan_token(DEFERRABLE)) return true;
- return false;
- }
-
- final private boolean jj_3_295() {
- if (jj_scan_token(DISTINCT)) return true;
- return false;
- }
-
- final private boolean jj_3_1163() {
- if (jj_scan_token(DAYS)) return true;
- return false;
- }
-
- final private boolean jj_3_1162() {
- if (jj_scan_token(DATETIME_TRUNC)) return true;
- return false;
- }
-
- final private boolean jj_3_1161() {
- if (jj_scan_token(DATETIME_DIFF)) return true;
- return false;
- }
-
- final private boolean jj_3_1160() {
- if (jj_scan_token(DATABASE)) return true;
- return false;
- }
-
- final private boolean jj_3_1159() {
- if (jj_scan_token(CONTINUE)) return true;
- return false;
- }
-
- final private boolean jj_3_1158() {
- if (jj_scan_token(CONSTRAINT_SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3R_146() {
- if (jj_scan_token(GROUP)) return true;
- if (jj_scan_token(BY)) return true;
- return false;
- }
-
- final private boolean jj_3_1157() {
- if (jj_scan_token(CONSTRAINT_CATALOG)) return true;
- return false;
- }
-
- final private boolean jj_3_1156() {
- if (jj_scan_token(CONDITION_NUMBER)) return true;
- return false;
- }
-
- final private boolean jj_3_1155() {
- if (jj_scan_token(COMMAND_FUNCTION_CODE)) return true;
- return false;
- }
-
- final private boolean jj_3_1154() {
- if (jj_scan_token(COLLATION_SCHEMA)) return true;
- return false;
- }
-
- final private boolean jj_3R_231() {
+ final private boolean jj_3_1337() {
if (jj_scan_token(NEW)) return true;
- if (jj_3R_358()) return true;
return false;
}
- final private boolean jj_3_1153() {
- if (jj_scan_token(COLLATION)) return true;
+ final private boolean jj_3_1336() {
+ if (jj_scan_token(NATIONAL)) return true;
return false;
}
- final private boolean jj_3_1152() {
- if (jj_scan_token(CHARACTER_SET_SCHEMA)) return true;
+ final private boolean jj_3R_189() {
+ if (jj_3R_374()) return true;
return false;
}
- final private boolean jj_3_1151() {
- if (jj_scan_token(CHARACTERS)) return true;
+ final private boolean jj_3_1335() {
+ if (jj_scan_token(MODULE)) return true;
return false;
}
- final private boolean jj_3_1150() {
- if (jj_scan_token(CENTURY)) return true;
+ final private boolean jj_3_7() {
+ if (jj_3R_73()) return true;
return false;
}
- final private boolean jj_3_1149() {
- if (jj_scan_token(CASCADE)) return true;
+ final private boolean jj_3_9() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_7()) {
+ jj_scanpos = xsp;
+ if (jj_3_8()) return true;
+ }
return false;
}
- final private boolean jj_3_1148() {
- if (jj_scan_token(BERNOULLI)) return true;
+ final private boolean jj_3_333() {
+ if (jj_scan_token(DESC)) return true;
return false;
}
- final private boolean jj_3_1147() {
- if (jj_scan_token(ATTRIBUTE)) return true;
+ final private boolean jj_3_1334() {
+ if (jj_scan_token(MINUTE)) return true;
return false;
}
- final private boolean jj_3_1146() {
+ final private boolean jj_3_334() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_332()) {
+ jj_scanpos = xsp;
+ if (jj_3_333()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_332() {
if (jj_scan_token(ASC)) return true;
return false;
}
- final private boolean jj_3_1145() {
- if (jj_scan_token(APPLY)) return true;
+ final private boolean jj_3_1333() {
+ if (jj_scan_token(MEMBER)) return true;
return false;
}
- final private boolean jj_3R_145() {
- if (jj_scan_token(WHERE)) return true;
- if (jj_3R_81()) return true;
+ final private boolean jj_3_330() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_1144() {
- if (jj_scan_token(ADMIN)) return true;
+ final private boolean jj_3_1332() {
+ if (jj_scan_token(MAX)) return true;
return false;
}
- final private boolean jj_3_1143() {
- if (jj_scan_token(ACTION)) return true;
+ final private boolean jj_3_1331() {
+ if (jj_scan_token(MATCH_CONDITION)) return true;
return false;
}
- final private boolean jj_3_1142() {
- if (jj_scan_token(A)) return true;
+ final private boolean jj_3_728() {
+ if (jj_scan_token(UUID)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1330() {
+ if (jj_scan_token(LOWER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1329() {
+ if (jj_scan_token(LIKE_REGEX)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_6() {
+ if (jj_3R_72()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_11() {
+ if (jj_3R_72()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_727() {
+ if (jj_scan_token(VARIANT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1328() {
+ if (jj_scan_token(LAST_VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1327() {
+ if (jj_scan_token(LAG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_716() {
+ if (jj_scan_token(PRECISION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_726() {
+ if (jj_scan_token(FLOAT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1326() {
+ if (jj_scan_token(JSON_QUERY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_10() {
+ if (jj_3R_73()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_13() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_10()) {
+ jj_scanpos = xsp;
+ if (jj_3_11()) {
+ jj_scanpos = xsp;
+ if (jj_3_12()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_715() {
+ if (jj_scan_token(UNSIGNED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1325() {
+ if (jj_scan_token(JSON_EXISTS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_331() {
+ if (jj_scan_token(AS)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_330()) {
+ jj_scanpos = xsp;
+ if (jj_3R_189()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1324() {
+ if (jj_scan_token(INTERSECTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_725() {
+ if (jj_scan_token(DOUBLE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_716()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3R_418() {
+ return false;
+ }
+
+ final private boolean jj_3_1323() {
+ if (jj_scan_token(INSENSITIVE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1322() {
+ if (jj_scan_token(INDICATOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_5() {
+ if (jj_3R_71()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_724() {
+ if (jj_scan_token(REAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1321() {
+ if (jj_scan_token(HOUR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_714() {
+ if (jj_scan_token(UNSIGNED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1320() {
+ if (jj_scan_token(GROUPING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1319() {
+ if (jj_scan_token(GET)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1318() {
+ if (jj_scan_token(FREE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_157() {
+ if (jj_3R_82()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_331()) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3_334()) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3_337()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1317() {
+ if (jj_scan_token(FLOOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1316() {
+ if (jj_scan_token(FILTER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_352() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_5()) {
+ jj_scanpos = xsp;
+ if (jj_3R_418()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_13()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1315() {
+ if (jj_scan_token(EXTEND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_723() {
+ if (jj_scan_token(BIGINT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_715()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1314() {
+ if (jj_scan_token(EXEC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1313() {
+ if (jj_scan_token(EQUALS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_713() {
+ if (jj_scan_token(UNSIGNED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1312() {
+ if (jj_scan_token(END_EXEC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1311() {
+ if (jj_scan_token(ELEMENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_712() {
+ if (jj_scan_token(UNSIGNED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1310() {
+ if (jj_scan_token(DOUBLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1309() {
+ if (jj_scan_token(DETERMINISTIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1308() {
+ if (jj_scan_token(DENSE_RANK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_329() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_157()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_722() {
+ if (jj_scan_token(SMALLINT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_714()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1307() {
+ if (jj_scan_token(DECIMAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1306() {
+ if (jj_scan_token(DAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1305() {
+ if (jj_scan_token(CYCLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1304() {
+ if (jj_scan_token(CURRENT_ROW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1303() {
+ if (jj_scan_token(CURRENT_DEFAULT_TRANSFORM_GROUP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1302() {
+ if (jj_scan_token(CUME_DIST)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1301() {
+ if (jj_scan_token(COVAR_POP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_711() {
+ if (jj_scan_token(INT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_721() {
+ if (jj_scan_token(TINYINT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_713()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1300() {
+ if (jj_scan_token(CORR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_80() {
+ if (jj_3R_351()) return true;
+ if (jj_3R_352()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1299() {
+ if (jj_scan_token(CONNECT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1298() {
+ if (jj_scan_token(COLLECT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1297() {
+ if (jj_scan_token(CLOSE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1296() {
+ if (jj_scan_token(CHECK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1295() {
+ if (jj_scan_token(CHARACTER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1294() {
+ if (jj_scan_token(CEIL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_720() {
+ if (jj_scan_token(UNSIGNED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1293() {
+ if (jj_scan_token(CALLED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1292() {
+ if (jj_scan_token(BLOB)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1291() {
+ if (jj_scan_token(BIGINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1290() {
+ if (jj_scan_token(BEGIN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1289() {
+ if (jj_scan_token(ATOMIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_710() {
+ if (jj_scan_token(INTEGER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1288() {
+ if (jj_scan_token(ASENSITIVE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1287() {
+ if (jj_scan_token(ALLOW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_719() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_710()) {
+ jj_scanpos = xsp;
+ if (jj_3_711()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_712()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_1286() {
+ if (jj_scan_token(TOTAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1285() {
+ if (jj_scan_token(REFRESH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_718() {
+ if (jj_scan_token(BOOLEAN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1284() {
+ if (jj_scan_token(ASYNC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1283() {
+ if (jj_scan_token(CONTINUOUS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1282() {
+ if (jj_scan_token(PASSWORD)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1281() {
+ if (jj_scan_token(INLINE_SIZE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1280() {
+ if (jj_scan_token(WRAP_VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1279() {
+ if (jj_scan_token(DATA_REGION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_71() {
+ if (jj_scan_token(ORDER)) return true;
+ if (jj_scan_token(BY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1278() {
+ if (jj_scan_token(WRITE_SYNCHRONIZATION_MODE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1277() {
+ if (jj_scan_token(BACKUPS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_717() {
+ if (jj_scan_token(GEOMETRY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1276() {
+ if (jj_scan_token(YEARS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1275() {
+ if (jj_scan_token(WRAPPER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1274() {
+ if (jj_scan_token(WEEK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1273() {
+ if (jj_scan_token(UTF8)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_285() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_717()) {
+ jj_scanpos = xsp;
+ if (jj_3_718()) {
+ jj_scanpos = xsp;
+ if (jj_3_719()) {
+ jj_scanpos = xsp;
+ if (jj_3_720()) {
+ jj_scanpos = xsp;
+ if (jj_3_721()) {
+ jj_scanpos = xsp;
+ if (jj_3_722()) {
+ jj_scanpos = xsp;
+ if (jj_3_723()) {
+ jj_scanpos = xsp;
+ if (jj_3_724()) {
+ jj_scanpos = xsp;
+ if (jj_3_725()) {
+ jj_scanpos = xsp;
+ if (jj_3_726()) {
+ jj_scanpos = xsp;
+ if (jj_3_727()) {
+ jj_scanpos = xsp;
+ if (jj_3_728()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1272() {
+ if (jj_scan_token(USER_DEFINED_TYPE_SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1271() {
+ if (jj_scan_token(USER_DEFINED_TYPE_CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1270() {
+ if (jj_scan_token(UNPIVOT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1269() {
+ if (jj_scan_token(UNCOMMITTED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1268() {
+ if (jj_scan_token(TUMBLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1267() {
+ if (jj_scan_token(TRIGGER_CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_150() {
+ if (jj_scan_token(QUALIFY)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1266() {
+ if (jj_scan_token(TRANSACTIONS_ROLLED_BACK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1265() {
+ if (jj_scan_token(TRANSACTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1264() {
+ if (jj_scan_token(TIMESTAMP_DIFF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_2() {
+ if (jj_3R_68()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1263() {
+ if (jj_scan_token(TIME_TRUNC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1262() {
+ if (jj_scan_token(TEMPORARY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1() {
+ if (jj_3R_67()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1261() {
+ if (jj_scan_token(SUBCLASS_ORIGIN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_327() {
+ if (jj_scan_token(TIES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_709() {
+ if (jj_3R_289()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1260() {
+ if (jj_scan_token(STRING_AGG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1259() {
+ if (jj_scan_token(SQL_VARCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_4() {
+ if (jj_3R_70()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_1()) { jj_scanpos = xsp; break; }
+ }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_2()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_326() {
+ if (jj_scan_token(GROUP)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_708() {
+ if (jj_3R_288()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1258() {
+ if (jj_scan_token(SQL_TSI_WEEK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1257() {
+ if (jj_scan_token(SQL_TSI_MONTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_325() {
+ if (jj_scan_token(NO)) return true;
+ if (jj_scan_token(OTHERS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_707() {
+ if (jj_3R_287()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1256() {
+ if (jj_scan_token(SQL_TSI_HOUR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1255() {
+ if (jj_scan_token(SQL_TINYINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_324() {
+ if (jj_scan_token(CURRENT)) return true;
+ if (jj_scan_token(ROW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_706() {
+ if (jj_3R_286()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1254() {
+ if (jj_scan_token(SQL_SMALLINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_3() {
+ if (jj_3R_69()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1253() {
+ if (jj_scan_token(SQL_NUMERIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_705() {
+ if (jj_3R_285()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1252() {
+ if (jj_scan_token(SQL_LONGVARNCHAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1251() {
+ if (jj_scan_token(SQL_INTERVAL_YEAR_TO_MONTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1250() {
+ if (jj_scan_token(SQL_INTERVAL_MONTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_383() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_3()) {
+ jj_scanpos = xsp;
+ if (jj_3_4()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1249() {
+ if (jj_scan_token(SQL_INTERVAL_HOUR_TO_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_328() {
+ if (jj_scan_token(EXCLUDE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_324()) {
+ jj_scanpos = xsp;
+ if (jj_3_325()) {
+ jj_scanpos = xsp;
+ if (jj_3_326()) {
+ jj_scanpos = xsp;
+ if (jj_3_327()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_282() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_705()) {
+ jj_scanpos = xsp;
+ if (jj_3_706()) {
+ jj_scanpos = xsp;
+ if (jj_3_707()) {
+ jj_scanpos = xsp;
+ if (jj_3_708()) {
+ jj_scanpos = xsp;
+ if (jj_3_709()) return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1248() {
+ if (jj_scan_token(SQL_INTERVAL_DAY_TO_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1247() {
+ if (jj_scan_token(SQL_INTERVAL_DAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1246() {
+ if (jj_scan_token(SQL_DOUBLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1245() {
+ if (jj_scan_token(SQL_CLOB)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1244() {
+ if (jj_scan_token(SQL_BLOB)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1243() {
+ if (jj_scan_token(SQL_BIGINT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1242() {
+ if (jj_scan_token(SOURCE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1241() {
+ if (jj_scan_token(SETS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1240() {
+ if (jj_scan_token(SERVER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1239() {
+ if (jj_scan_token(SEPARATOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1238() {
+ if (jj_scan_token(SECTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1237() {
+ if (jj_scan_token(SCOPE_NAME)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_320() {
+ if (jj_scan_token(FOLLOWING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_704() {
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1236() {
+ if (jj_scan_token(SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1235() {
+ if (jj_scan_token(ROW_COUNT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1234() {
+ if (jj_scan_token(ROUTINE_CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_703() {
+ if (jj_3R_284()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1233() {
+ if (jj_scan_token(RLIKE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_319() {
+ if (jj_scan_token(PRECEDING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1232() {
+ if (jj_scan_token(RETURNED_OCTET_LENGTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_702() {
+ if (jj_3R_283()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1231() {
+ if (jj_scan_token(RESTRICT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1230() {
+ if (jj_scan_token(REPLACE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1229() {
+ if (jj_scan_token(READ)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_701() {
+ if (jj_3R_282()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1228() {
+ if (jj_scan_token(PUBLIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1227() {
+ if (jj_scan_token(PRESERVE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_323() {
+ if (jj_3R_82()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_319()) {
+ jj_scanpos = xsp;
+ if (jj_3_320()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1226() {
+ if (jj_scan_token(PLAN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_318() {
+ if (jj_scan_token(FOLLOWING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1225() {
+ if (jj_scan_token(PATH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_364() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_701()) {
+ jj_scanpos = xsp;
+ if (jj_3_702()) {
+ jj_scanpos = xsp;
+ if (jj_3_703()) {
+ jj_scanpos = xsp;
+ if (jj_3_704()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1224() {
+ if (jj_scan_token(PASSING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1223() {
+ if (jj_scan_token(PARAMETER_SPECIFIC_SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1222() {
+ if (jj_scan_token(PARAMETER_ORDINAL_POSITION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_317() {
+ if (jj_scan_token(PRECEDING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1221() {
+ if (jj_scan_token(PAD)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1220() {
+ if (jj_scan_token(OTHERS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1219() {
+ if (jj_scan_token(OPTIONS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1218() {
+ if (jj_scan_token(OBJECT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1217() {
+ if (jj_scan_token(NULLABLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1216() {
+ if (jj_scan_token(NANOSECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1215() {
+ if (jj_scan_token(MUMPS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_322() {
+ if (jj_scan_token(UNBOUNDED)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_317()) {
+ jj_scanpos = xsp;
+ if (jj_3_318()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1214() {
+ if (jj_scan_token(MINVALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1213() {
+ if (jj_scan_token(MILLENNIUM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1212() {
+ if (jj_scan_token(MESSAGE_OCTET_LENGTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_700() {
+ if (jj_3R_281()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1211() {
+ if (jj_scan_token(MATCHED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_188() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_321()) {
+ jj_scanpos = xsp;
+ if (jj_3_322()) {
+ jj_scanpos = xsp;
+ if (jj_3_323()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1210() {
+ if (jj_scan_token(LOCATOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_321() {
+ if (jj_scan_token(CURRENT)) return true;
+ if (jj_scan_token(ROW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1209() {
+ if (jj_scan_token(LENGTH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1208() {
+ if (jj_scan_token(KEY_TYPE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1207() {
+ if (jj_scan_token(K)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1206() {
+ if (jj_scan_token(ISOYEAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1205() {
+ if (jj_scan_token(INVOKER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_121() {
+ if (jj_3R_364()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_700()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1204() {
+ if (jj_scan_token(INPUT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1203() {
+ if (jj_scan_token(INCLUDING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1202() {
+ if (jj_scan_token(IMMEDIATELY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1201() {
+ if (jj_scan_token(IGNORE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1200() {
+ if (jj_scan_token(HIERARCHY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1199() {
+ if (jj_scan_token(GOTO)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1198() {
+ if (jj_scan_token(GENERATED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1197() {
+ if (jj_scan_token(FRAC_SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1196() {
+ if (jj_scan_token(FORMAT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_316() {
+ if (jj_scan_token(DISALLOW)) return true;
+ if (jj_scan_token(PARTIAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1195() {
+ if (jj_scan_token(FINAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1194() {
+ if (jj_scan_token(EXCEPTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1193() {
+ if (jj_scan_token(ENCODING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1192() {
+ if (jj_scan_token(DOT_FORMAT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_315() {
+ if (jj_scan_token(ALLOW)) return true;
+ if (jj_scan_token(PARTIAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1191() {
+ if (jj_scan_token(DOMAIN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1190() {
+ if (jj_scan_token(DESCRIPTOR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1189() {
+ if (jj_scan_token(DERIVED)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1188() {
+ if (jj_scan_token(DEFINER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1187() {
+ if (jj_scan_token(DEFERRABLE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_699() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1186() {
+ if (jj_scan_token(DAYS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1185() {
+ if (jj_scan_token(DATETIME_TRUNC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1184() {
+ if (jj_scan_token(DATETIME_DIFF)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_313() {
+ if (jj_3R_188()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1183() {
+ if (jj_scan_token(DATABASE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1182() {
+ if (jj_scan_token(CONTINUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1181() {
+ if (jj_scan_token(CONSTRAINT_SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_312() {
+ if (jj_scan_token(BETWEEN)) return true;
+ if (jj_3R_188()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1180() {
+ if (jj_scan_token(CONSTRAINT_CATALOG)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_697() {
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1179() {
+ if (jj_scan_token(CONDITION_NUMBER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1178() {
+ if (jj_scan_token(COMMAND_FUNCTION_CODE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_311() {
+ if (jj_scan_token(RANGE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_696() {
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1177() {
+ if (jj_scan_token(COLLATION_SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1176() {
+ if (jj_scan_token(COLLATION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_310() {
+ if (jj_scan_token(ROWS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1175() {
+ if (jj_scan_token(CHARACTER_SET_SCHEMA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1174() {
+ if (jj_scan_token(CHARACTERS)) return true;
return false;
}
final private boolean jj_3R_291() {
- if (jj_3R_400()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_698()) {
+ jj_scanpos = xsp;
+ if (jj_3_699()) return true;
+ }
return false;
}
- final private boolean jj_3R_341() {
+ final private boolean jj_3_1173() {
+ if (jj_scan_token(CENTURY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_698() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_1142()) {
+ if (jj_3_696()) {
jj_scanpos = xsp;
- if (jj_3_1143()) {
+ if (jj_3_697()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1172() {
+ if (jj_scan_token(CASCADE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1171() {
+ if (jj_scan_token(BERNOULLI)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_314() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_310()) {
jj_scanpos = xsp;
- if (jj_3_1144()) {
+ if (jj_3_311()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_312()) {
jj_scanpos = xsp;
- if (jj_3_1145()) {
- jj_scanpos = xsp;
- if (jj_3_1146()) {
- jj_scanpos = xsp;
- if (jj_3_1147()) {
- jj_scanpos = xsp;
- if (jj_3_1148()) {
- jj_scanpos = xsp;
- if (jj_3_1149()) {
- jj_scanpos = xsp;
- if (jj_3_1150()) {
- jj_scanpos = xsp;
- if (jj_3_1151()) {
- jj_scanpos = xsp;
- if (jj_3_1152()) {
- jj_scanpos = xsp;
- if (jj_3_1153()) {
- jj_scanpos = xsp;
- if (jj_3_1154()) {
- jj_scanpos = xsp;
- if (jj_3_1155()) {
- jj_scanpos = xsp;
- if (jj_3_1156()) {
- jj_scanpos = xsp;
- if (jj_3_1157()) {
- jj_scanpos = xsp;
- if (jj_3_1158()) {
- jj_scanpos = xsp;
- if (jj_3_1159()) {
- jj_scanpos = xsp;
- if (jj_3_1160()) {
- jj_scanpos = xsp;
- if (jj_3_1161()) {
- jj_scanpos = xsp;
- if (jj_3_1162()) {
- jj_scanpos = xsp;
- if (jj_3_1163()) {
- jj_scanpos = xsp;
- if (jj_3_1164()) {
- jj_scanpos = xsp;
+ if (jj_3_313()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1170() {
+ if (jj_scan_token(ATTRIBUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1169() {
+ if (jj_scan_token(ASC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1168() {
+ if (jj_scan_token(APPLY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1167() {
+ if (jj_scan_token(ADMIN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_309() {
+ if (jj_3R_71()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1166() {
+ if (jj_scan_token(ACTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1165() {
+ if (jj_scan_token(A)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_308() {
+ if (jj_scan_token(PARTITION)) return true;
+ if (jj_scan_token(BY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_345() {
+ Token xsp;
+ xsp = jj_scanpos;
if (jj_3_1165()) {
jj_scanpos = xsp;
if (jj_3_1166()) {
@@ -39150,7 +39112,53 @@
jj_scanpos = xsp;
if (jj_3_1362()) {
jj_scanpos = xsp;
- if (jj_3_1363()) return true;
+ if (jj_3_1363()) {
+ jj_scanpos = xsp;
+ if (jj_3_1364()) {
+ jj_scanpos = xsp;
+ if (jj_3_1365()) {
+ jj_scanpos = xsp;
+ if (jj_3_1366()) {
+ jj_scanpos = xsp;
+ if (jj_3_1367()) {
+ jj_scanpos = xsp;
+ if (jj_3_1368()) {
+ jj_scanpos = xsp;
+ if (jj_3_1369()) {
+ jj_scanpos = xsp;
+ if (jj_3_1370()) {
+ jj_scanpos = xsp;
+ if (jj_3_1371()) {
+ jj_scanpos = xsp;
+ if (jj_3_1372()) {
+ jj_scanpos = xsp;
+ if (jj_3_1373()) {
+ jj_scanpos = xsp;
+ if (jj_3_1374()) {
+ jj_scanpos = xsp;
+ if (jj_3_1375()) {
+ jj_scanpos = xsp;
+ if (jj_3_1376()) {
+ jj_scanpos = xsp;
+ if (jj_3_1377()) {
+ jj_scanpos = xsp;
+ if (jj_3_1378()) {
+ jj_scanpos = xsp;
+ if (jj_3_1379()) {
+ jj_scanpos = xsp;
+ if (jj_3_1380()) {
+ jj_scanpos = xsp;
+ if (jj_3_1381()) {
+ jj_scanpos = xsp;
+ if (jj_3_1382()) {
+ jj_scanpos = xsp;
+ if (jj_3_1383()) {
+ jj_scanpos = xsp;
+ if (jj_3_1384()) {
+ jj_scanpos = xsp;
+ if (jj_3_1385()) {
+ jj_scanpos = xsp;
+ if (jj_3_1386()) return true;
}
}
}
@@ -39375,505 +39383,732 @@
return false;
}
- final private boolean jj_3R_159() {
+ final private boolean jj_3R_417() {
+ return false;
+ }
+
+ final private boolean jj_3R_264() {
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_307() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1164() {
+ if (jj_3R_347()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_335() {
if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_369()) return true;
- return false;
- }
-
- final private boolean jj_3_1141() {
- if (jj_3R_343()) return true;
- return false;
- }
-
- final private boolean jj_3_1140() {
- if (jj_3R_342()) return true;
- return false;
- }
-
- final private boolean jj_3R_357() {
- if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
- return false;
- }
-
- final private boolean jj_3_1139() {
- if (jj_3R_341()) return true;
- return false;
- }
-
- final private boolean jj_3_680() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_276()) return true;
- return false;
- }
-
- final private boolean jj_3R_369() {
- if (jj_3R_276()) return true;
- return false;
- }
-
- final private boolean jj_3R_273() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_1139()) {
+ if (jj_3_307()) {
jj_scanpos = xsp;
- if (jj_3_1140()) {
+ if (jj_3R_417()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_1163() {
+ if (jj_3R_346()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_1162() {
+ if (jj_3R_345()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_277() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_1162()) {
jj_scanpos = xsp;
- if (jj_3_1141()) return true;
+ if (jj_3_1163()) {
+ jj_scanpos = xsp;
+ if (jj_3_1164()) return true;
}
}
return false;
}
- final private boolean jj_3R_184() {
+ final private boolean jj_3R_235() {
+ if (jj_scan_token(NEW)) return true;
+ if (jj_3R_362()) return true;
return false;
}
- final private boolean jj_3_294() {
- if (jj_3R_81()) return true;
+ final private boolean jj_3R_187() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3R_346() {
- if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+ final private boolean jj_3R_160() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_373()) return true;
return false;
}
- final private boolean jj_3_291() {
- if (jj_scan_token(ROW)) return true;
+ final private boolean jj_3_306() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_187()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_695() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_280()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_149() {
+ if (jj_scan_token(WINDOW)) return true;
+ if (jj_3R_187()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_373() {
+ if (jj_3R_280()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_148() {
+ if (jj_scan_token(HAVING)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_694() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_3R_279()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_305() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_171() {
+ if (jj_3R_279()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_694()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_408() {
+ if (jj_3R_79()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_305()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_238() {
+ if (jj_3R_408()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_693() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_scan_token(STAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_692() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_3R_278()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_304() {
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_153() {
+ if (jj_3R_278()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_692()) { jj_scanpos = xsp; break; }
+ }
+ xsp = jj_scanpos;
+ if (jj_3_693()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_303() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_302() {
+ if (jj_scan_token(CUBE)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_301() {
+ if (jj_scan_token(ROLLUP)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_691() {
+ if (jj_3R_125()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_135() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_690()) {
+ jj_scanpos = xsp;
+ if (jj_3_691()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_690() {
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_186() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_300()) {
+ jj_scanpos = xsp;
+ if (jj_3_301()) {
+ jj_scanpos = xsp;
+ if (jj_3_302()) {
+ jj_scanpos = xsp;
+ if (jj_3_303()) {
+ jj_scanpos = xsp;
+ if (jj_3_304()) return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_300() {
+ if (jj_scan_token(GROUPING)) return true;
+ if (jj_scan_token(SETS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_299() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_186()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_125() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_365()) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_298() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_297() {
+ if (jj_scan_token(DISTINCT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_689() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_85()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_147() {
+ if (jj_scan_token(GROUP)) return true;
+ if (jj_scan_token(BY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_365() {
+ if (jj_3R_85()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_689()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_146() {
+ if (jj_scan_token(WHERE)) return true;
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_374() {
+ if (jj_scan_token(QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_85() {
+ if (jj_3R_278()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_185() {
+ return false;
+ }
+
+ final private boolean jj_3_296() {
+ if (jj_3R_82()) return true;
return false;
}
final private boolean jj_3_293() {
+ if (jj_scan_token(ROW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_295() {
+ if (jj_3R_412()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_295() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_291()) {
+ if (jj_3_293()) {
jj_scanpos = xsp;
- if (jj_3R_184()) return true;
+ if (jj_3R_185()) return true;
}
- if (jj_3R_183()) return true;
+ if (jj_3R_184()) return true;
return false;
}
- final private boolean jj_3_679() {
- if (jj_scan_token(DOT)) return true;
- if (jj_3R_275()) return true;
+ final private boolean jj_3R_339() {
+ if (jj_3R_278()) return true;
return false;
}
- final private boolean jj_3R_411() {
+ final private boolean jj_3_294() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(ROW)) return true;
+ if (jj_3R_184()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_361() {
+ if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+ return false;
+ }
+
+ final private boolean jj_3R_163() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_294()) {
+ jj_scanpos = xsp;
+ if (jj_3_295()) {
+ jj_scanpos = xsp;
+ if (jj_3_296()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_350() {
+ if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+ return false;
+ }
+
+ final private boolean jj_3R_423() {
+ return false;
+ }
+
+ final private boolean jj_3R_279() {
+ if (jj_3R_278()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_183() {
+ if (jj_3R_163()) return true;
return false;
}
final private boolean jj_3_292() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(ROW)) return true;
+ if (jj_scan_token(COMMA)) return true;
if (jj_3R_183()) return true;
return false;
}
- final private boolean jj_3R_170() {
- if (jj_3R_275()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_679()) { jj_scanpos = xsp; break; }
- }
+ final private boolean jj_3R_176() {
+ if (jj_3R_384()) return true;
return false;
}
- final private boolean jj_3R_162() {
+ final private boolean jj_3_291() {
+ if (jj_scan_token(VALUE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_290() {
+ if (jj_scan_token(VALUES)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_688() {
+ if (jj_3R_277()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_77() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_292()) {
+ if (jj_3_290()) {
jj_scanpos = xsp;
- if (jj_3_293()) {
+ if (jj_3_291()) return true;
+ }
+ if (jj_3R_183()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_680() {
+ if (jj_scan_token(UESCAPE)) return true;
+ if (jj_scan_token(QUOTED_STRING)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_687() {
+ if (jj_scan_token(UNICODE_QUOTED_IDENTIFIER)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_680()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3R_78() {
+ if (jj_scan_token(TABLE)) return true;
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_686() {
+ if (jj_scan_token(BRACKET_QUOTED_IDENTIFIER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_685() {
+ if (jj_scan_token(BIG_QUERY_BACK_QUOTED_IDENTIFIER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_684() {
+ if (jj_scan_token(BACK_QUOTED_IDENTIFIER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_683() {
+ if (jj_scan_token(QUOTED_IDENTIFIER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_682() {
+ if (jj_scan_token(HYPHENATED_IDENTIFIER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_289() {
+ if (jj_scan_token(SPECIFIC)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_681() {
+ if (jj_scan_token(IDENTIFIER)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_278() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_681()) {
jj_scanpos = xsp;
- if (jj_3_294()) return true;
+ if (jj_3_682()) {
+ jj_scanpos = xsp;
+ if (jj_3_683()) {
+ jj_scanpos = xsp;
+ if (jj_3_684()) {
+ jj_scanpos = xsp;
+ if (jj_3_685()) {
+ jj_scanpos = xsp;
+ if (jj_3_686()) {
+ jj_scanpos = xsp;
+ if (jj_3_687()) {
+ jj_scanpos = xsp;
+ if (jj_3_688()) return true;
+ }
+ }
+ }
+ }
+ }
}
}
return false;
}
final private boolean jj_3R_175() {
- if (jj_3R_375()) return true;
- return false;
- }
-
- final private boolean jj_3R_182() {
- if (jj_3R_162()) return true;
- return false;
- }
-
- final private boolean jj_3_678() {
- if (jj_scan_token(DOT)) return true;
- if (jj_scan_token(STAR)) return true;
- return false;
- }
-
- final private boolean jj_3_677() {
- if (jj_scan_token(DOT)) return true;
- if (jj_3R_274()) return true;
- return false;
- }
-
- final private boolean jj_3_290() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_182()) return true;
- return false;
- }
-
- final private boolean jj_3R_152() {
- if (jj_3R_274()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_677()) { jj_scanpos = xsp; break; }
- }
- xsp = jj_scanpos;
- if (jj_3_678()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_289() {
- if (jj_scan_token(VALUE)) return true;
- return false;
- }
-
- final private boolean jj_3_288() {
- if (jj_scan_token(VALUES)) return true;
- return false;
- }
-
- final private boolean jj_3R_76() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_288()) {
- jj_scanpos = xsp;
- if (jj_3_289()) return true;
- }
- if (jj_3R_182()) return true;
- return false;
- }
-
- final private boolean jj_3_676() {
- if (jj_3R_124()) return true;
- return false;
- }
-
- final private boolean jj_3R_134() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_675()) {
- jj_scanpos = xsp;
- if (jj_3_676()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_675() {
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3R_77() {
if (jj_scan_token(TABLE)) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3R_124() {
if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_361()) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3_674() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3R_361() {
- if (jj_3R_84()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_674()) { jj_scanpos = xsp; break; }
- }
return false;
}
final private boolean jj_3_287() {
- if (jj_scan_token(SPECIFIC)) return true;
- return false;
- }
-
- final private boolean jj_3R_174() {
- if (jj_scan_token(TABLE)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3R_370() {
- if (jj_scan_token(QUOTED_STRING)) return true;
- return false;
- }
-
- final private boolean jj_3_285() {
if (jj_scan_token(COMMA)) return true;
- if (jj_3R_83()) return true;
+ if (jj_3R_84()) return true;
return false;
}
- final private boolean jj_3R_84() {
- if (jj_3R_274()) return true;
+ final private boolean jj_3R_223() {
+ if (jj_scan_token(HOOK)) return true;
return false;
}
- final private boolean jj_3_286() {
- if (jj_3R_154()) return true;
+ final private boolean jj_3_288() {
+ if (jj_3R_155()) return true;
Token xsp;
while (true) {
xsp = jj_scanpos;
- if (jj_3_285()) { jj_scanpos = xsp; break; }
+ if (jj_3_287()) { jj_scanpos = xsp; break; }
}
return false;
}
- final private boolean jj_3R_169() {
+ final private boolean jj_3_679() {
+ if (jj_scan_token(SATURDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_170() {
if (jj_scan_token(LPAREN)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_286()) jj_scanpos = xsp;
+ if (jj_3_288()) jj_scanpos = xsp;
if (jj_scan_token(RPAREN)) return true;
return false;
}
- final private boolean jj_3R_335() {
- if (jj_3R_274()) return true;
+ final private boolean jj_3_678() {
+ if (jj_scan_token(FRIDAY)) return true;
return false;
}
- final private boolean jj_3_284() {
- if (jj_3R_120()) return true;
- if (jj_3R_181()) return true;
+ final private boolean jj_3_677() {
+ if (jj_scan_token(THURSDAY)) return true;
return false;
}
- final private boolean jj_3R_276() {
- if (jj_3R_152()) return true;
+ final private boolean jj_3_676() {
+ if (jj_scan_token(WEDNESDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_675() {
+ if (jj_scan_token(TUESDAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_674() {
+ if (jj_scan_token(MONDAY)) return true;
return false;
}
final private boolean jj_3R_275() {
- if (jj_3R_274()) return true;
- return false;
- }
-
- final private boolean jj_3R_180() {
- if (jj_3R_152()) return true;
- if (jj_3R_120()) return true;
- if (jj_3R_181()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_673()) {
+ jj_scanpos = xsp;
+ if (jj_3_674()) {
+ jj_scanpos = xsp;
+ if (jj_3_675()) {
+ jj_scanpos = xsp;
+ if (jj_3_676()) {
+ jj_scanpos = xsp;
+ if (jj_3_677()) {
+ jj_scanpos = xsp;
+ if (jj_3_678()) {
+ jj_scanpos = xsp;
+ if (jj_3_679()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
return false;
}
final private boolean jj_3_673() {
- if (jj_3R_273()) return true;
- return false;
- }
-
- final private boolean jj_3_283() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_180()) return true;
- return false;
- }
-
- final private boolean jj_3_665() {
- if (jj_scan_token(UESCAPE)) return true;
- if (jj_scan_token(QUOTED_STRING)) return true;
- return false;
- }
-
- final private boolean jj_3R_368() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_180()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_283()) { jj_scanpos = xsp; break; }
- }
- if (jj_scan_token(RPAREN)) return true;
+ if (jj_scan_token(SUNDAY)) return true;
return false;
}
final private boolean jj_3_672() {
- if (jj_scan_token(UNICODE_QUOTED_IDENTIFIER)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_665()) jj_scanpos = xsp;
- return false;
- }
-
- final private boolean jj_3_282() {
- if (jj_scan_token(EXTEND)) return true;
- return false;
- }
-
- final private boolean jj_3R_158() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_282()) jj_scanpos = xsp;
- if (jj_3R_368()) return true;
+ if (jj_scan_token(MILLENNIUM)) return true;
return false;
}
final private boolean jj_3_671() {
- if (jj_scan_token(BRACKET_QUOTED_IDENTIFIER)) return true;
+ if (jj_scan_token(CENTURY)) return true;
return false;
}
final private boolean jj_3_670() {
- if (jj_scan_token(BIG_QUERY_BACK_QUOTED_IDENTIFIER)) return true;
+ if (jj_scan_token(DECADE)) return true;
return false;
}
final private boolean jj_3_669() {
- if (jj_scan_token(BACK_QUOTED_IDENTIFIER)) return true;
+ if (jj_scan_token(EPOCH)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_276() {
return false;
}
final private boolean jj_3_668() {
- if (jj_scan_token(QUOTED_IDENTIFIER)) return true;
- return false;
- }
-
- final private boolean jj_3_279() {
- if (jj_scan_token(REPEATABLE)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(YEAR)) return true;
return false;
}
final private boolean jj_3_667() {
- if (jj_scan_token(HYPHENATED_IDENTIFIER)) return true;
- return false;
- }
-
- final private boolean jj_3_278() {
- if (jj_scan_token(SYSTEM)) return true;
- return false;
- }
-
- final private boolean jj_3_277() {
- if (jj_scan_token(BERNOULLI)) return true;
+ if (jj_scan_token(QUARTER)) return true;
return false;
}
final private boolean jj_3_666() {
- if (jj_scan_token(IDENTIFIER)) return true;
+ if (jj_scan_token(MONTH)) return true;
return false;
}
- final private boolean jj_3_281() {
+ final private boolean jj_3_651() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_275()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_286() {
+ if (jj_3R_121()) return true;
+ if (jj_3R_182()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_280() {
+ if (jj_3R_153()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_665() {
+ if (jj_scan_token(WEEK)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_277()) {
+ if (jj_3_651()) {
jj_scanpos = xsp;
- if (jj_3_278()) return true;
+ if (jj_3R_276()) return true;
}
- if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_664() {
+ if (jj_scan_token(ISOYEAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_663() {
+ if (jj_scan_token(ISODOW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_662() {
+ if (jj_scan_token(DOY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_661() {
+ if (jj_scan_token(DOW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_660() {
+ if (jj_scan_token(DAYOFYEAR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_659() {
+ if (jj_scan_token(DAYOFWEEK)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_658() {
+ if (jj_scan_token(DAY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_657() {
+ if (jj_scan_token(HOUR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_656() {
+ if (jj_scan_token(MINUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_655() {
+ if (jj_scan_token(SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_654() {
+ if (jj_scan_token(MILLISECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_653() {
+ if (jj_scan_token(MICROSECOND)) return true;
return false;
}
final private boolean jj_3R_274() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_666()) {
+ if (jj_3_652()) {
jj_scanpos = xsp;
- if (jj_3_667()) {
+ if (jj_3_653()) {
jj_scanpos = xsp;
- if (jj_3_668()) {
+ if (jj_3_654()) {
jj_scanpos = xsp;
- if (jj_3_669()) {
+ if (jj_3_655()) {
jj_scanpos = xsp;
- if (jj_3_670()) {
+ if (jj_3_656()) {
jj_scanpos = xsp;
- if (jj_3_671()) {
+ if (jj_3_657()) {
jj_scanpos = xsp;
- if (jj_3_672()) {
- jj_scanpos = xsp;
- if (jj_3_673()) return true;
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_280() {
- if (jj_scan_token(SUBSTITUTE)) return true;
- if (jj_scan_token(LPAREN)) return true;
- return false;
- }
-
- final private boolean jj_3R_179() {
- if (jj_scan_token(TABLESAMPLE)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_280()) {
- jj_scanpos = xsp;
- if (jj_3_281()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_219() {
- if (jj_scan_token(HOOK)) return true;
- return false;
- }
-
- final private boolean jj_3_276() {
- if (jj_3R_179()) return true;
- return false;
- }
-
- final private boolean jj_3_664() {
- if (jj_scan_token(SATURDAY)) return true;
- return false;
- }
-
- final private boolean jj_3_663() {
- if (jj_scan_token(FRIDAY)) return true;
- return false;
- }
-
- final private boolean jj_3_662() {
- if (jj_scan_token(THURSDAY)) return true;
- return false;
- }
-
- final private boolean jj_3_661() {
- if (jj_scan_token(WEDNESDAY)) return true;
- return false;
- }
-
- final private boolean jj_3_660() {
- if (jj_scan_token(TUESDAY)) return true;
- return false;
- }
-
- final private boolean jj_3_659() {
- if (jj_scan_token(MONDAY)) return true;
- return false;
- }
-
- final private boolean jj_3R_271() {
- Token xsp;
- xsp = jj_scanpos;
if (jj_3_658()) {
jj_scanpos = xsp;
if (jj_3_659()) {
@@ -39886,7 +40121,37 @@
jj_scanpos = xsp;
if (jj_3_663()) {
jj_scanpos = xsp;
- if (jj_3_664()) return true;
+ if (jj_3_664()) {
+ jj_scanpos = xsp;
+ if (jj_3_665()) {
+ jj_scanpos = xsp;
+ if (jj_3_666()) {
+ jj_scanpos = xsp;
+ if (jj_3_667()) {
+ jj_scanpos = xsp;
+ if (jj_3_668()) {
+ jj_scanpos = xsp;
+ if (jj_3_669()) {
+ jj_scanpos = xsp;
+ if (jj_3_670()) {
+ jj_scanpos = xsp;
+ if (jj_3_671()) {
+ jj_scanpos = xsp;
+ if (jj_3_672()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
}
}
}
@@ -39896,37 +40161,228 @@
return false;
}
- final private boolean jj_3_658() {
- if (jj_scan_token(SUNDAY)) return true;
+ final private boolean jj_3_652() {
+ if (jj_scan_token(NANOSECOND)) return true;
return false;
}
- final private boolean jj_3R_178() {
+ final private boolean jj_3R_181() {
+ if (jj_3R_153()) return true;
+ if (jj_3R_121()) return true;
+ if (jj_3R_182()) return true;
return false;
}
- final private boolean jj_3_657() {
- if (jj_scan_token(MILLENNIUM)) return true;
+ final private boolean jj_3_285() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_181()) return true;
return false;
}
- final private boolean jj_3_274() {
- if (jj_3R_124()) return true;
+ final private boolean jj_3_650() {
+ if (jj_3R_85()) return true;
return false;
}
- final private boolean jj_3_656() {
- if (jj_scan_token(CENTURY)) return true;
+ final private boolean jj_3R_372() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_181()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_285()) { jj_scanpos = xsp; break; }
+ }
+ if (jj_scan_token(RPAREN)) return true;
return false;
}
- final private boolean jj_3_655() {
- if (jj_scan_token(DECADE)) return true;
+ final private boolean jj_3R_336() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_649()) {
+ jj_scanpos = xsp;
+ if (jj_3_650()) return true;
+ }
return false;
}
- final private boolean jj_3_654() {
- if (jj_scan_token(EPOCH)) return true;
+ final private boolean jj_3_649() {
+ if (jj_3R_274()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_284() {
+ if (jj_scan_token(EXTEND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_159() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_284()) jj_scanpos = xsp;
+ if (jj_3R_372()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_645() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_264()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_281() {
+ if (jj_scan_token(REPEATABLE)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_646() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_264()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_280() {
+ if (jj_scan_token(SYSTEM)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_648() {
+ if (jj_3R_262()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_646()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_279() {
+ if (jj_scan_token(BERNOULLI)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_644() {
+ if (jj_3R_261()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_643() {
+ if (jj_3R_260()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_642() {
+ if (jj_3R_269()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_641() {
+ if (jj_3R_268()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_640() {
+ if (jj_3R_259()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_283() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_279()) {
+ jj_scanpos = xsp;
+ if (jj_3_280()) return true;
+ }
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_639() {
+ if (jj_3R_267()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_638() {
+ if (jj_3R_265()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_647() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_638()) {
+ jj_scanpos = xsp;
+ if (jj_3_639()) {
+ jj_scanpos = xsp;
+ if (jj_3_640()) {
+ jj_scanpos = xsp;
+ if (jj_3_641()) {
+ jj_scanpos = xsp;
+ if (jj_3_642()) {
+ jj_scanpos = xsp;
+ if (jj_3_643()) {
+ jj_scanpos = xsp;
+ if (jj_3_644()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ if (jj_3R_263()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_258() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_647()) {
+ jj_scanpos = xsp;
+ if (jj_3_648()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_282() {
+ if (jj_scan_token(SUBSTITUTE)) return true;
+ if (jj_scan_token(LPAREN)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_180() {
+ if (jj_scan_token(TABLESAMPLE)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_282()) {
+ jj_scanpos = xsp;
+ if (jj_3_283()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_273() {
+ return false;
+ }
+
+ final private boolean jj_3_628() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_264()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_629() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_264()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_278() {
+ if (jj_3R_180()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_626() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_264()) return true;
return false;
}
@@ -39934,82 +40390,217 @@
return false;
}
- final private boolean jj_3_653() {
- if (jj_scan_token(YEAR)) return true;
- return false;
- }
-
- final private boolean jj_3_273() {
- if (jj_scan_token(AS)) return true;
- return false;
- }
-
- final private boolean jj_3_652() {
- if (jj_scan_token(QUARTER)) return true;
- return false;
- }
-
- final private boolean jj_3_651() {
- if (jj_scan_token(MONTH)) return true;
- return false;
- }
-
- final private boolean jj_3_275() {
+ final private boolean jj_3_637() {
+ if (jj_3R_262()) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_273()) jj_scanpos = xsp;
- if (jj_3R_84()) return true;
- xsp = jj_scanpos;
- if (jj_3_274()) {
+ if (jj_3_629()) {
jj_scanpos = xsp;
- if (jj_3R_178()) return true;
+ if (jj_3R_273()) return true;
}
return false;
}
- final private boolean jj_3R_372() {
+ final private boolean jj_3_627() {
+ if (jj_scan_token(TO)) return true;
+ if (jj_3R_262()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_622() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_264()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_624() {
+ if (jj_3R_262()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_622()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3R_271() {
+ return false;
+ }
+
+ final private boolean jj_3_623() {
+ if (jj_3R_261()) return true;
return false;
}
final private boolean jj_3_636() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_271()) return true;
- return false;
- }
-
- final private boolean jj_3_272() {
- if (jj_3R_177()) return true;
- return false;
- }
-
- final private boolean jj_3_271() {
- if (jj_3R_176()) return true;
- return false;
- }
-
- final private boolean jj_3_650() {
- if (jj_scan_token(WEEK)) return true;
+ if (jj_3R_261()) return true;
+ if (jj_3R_263()) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_636()) {
+ if (jj_3_627()) {
jj_scanpos = xsp;
if (jj_3R_272()) return true;
}
return false;
}
- final private boolean jj_3_270() {
+ final private boolean jj_3R_179() {
+ return false;
+ }
+
+ final private boolean jj_3_625() {
+ if (jj_scan_token(TO)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_623()) {
+ jj_scanpos = xsp;
+ if (jj_3_624()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_276() {
+ if (jj_3R_125()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_620() {
+ if (jj_3R_262()) return true;
+ if (jj_3R_263()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_270() {
+ return false;
+ }
+
+ final private boolean jj_3_275() {
+ if (jj_scan_token(AS)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_619() {
+ if (jj_3R_261()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_635() {
+ if (jj_3R_260()) return true;
+ if (jj_3R_263()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_625()) {
+ jj_scanpos = xsp;
+ if (jj_3R_271()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_277() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_275()) jj_scanpos = xsp;
+ if (jj_3R_85()) return true;
+ xsp = jj_scanpos;
+ if (jj_3_276()) {
+ jj_scanpos = xsp;
+ if (jj_3R_179()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_618() {
+ if (jj_3R_260()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_274() {
+ if (jj_3R_178()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_621() {
+ if (jj_scan_token(TO)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_618()) {
+ jj_scanpos = xsp;
+ if (jj_3_619()) {
+ jj_scanpos = xsp;
+ if (jj_3_620()) return true;
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3R_381() {
+ return false;
+ }
+
+ final private boolean jj_3_273() {
+ if (jj_3R_177()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_272() {
+ if (jj_3R_176()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_634() {
+ if (jj_3R_269()) return true;
+ if (jj_3R_263()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_621()) {
+ jj_scanpos = xsp;
+ if (jj_3R_270()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_267() {
+ if (jj_scan_token(LATERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_271() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_267()) jj_scanpos = xsp;
if (jj_3R_175()) return true;
return false;
}
- final private boolean jj_3_649() {
- if (jj_scan_token(ISOYEAR)) return true;
+ final private boolean jj_3_633() {
+ if (jj_3R_268()) return true;
+ if (jj_3R_263()) return true;
return false;
}
- final private boolean jj_3_648() {
- if (jj_scan_token(ISODOW)) return true;
+ final private boolean jj_3_632() {
+ if (jj_3R_259()) return true;
+ if (jj_3R_263()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_266() {
+ if (jj_scan_token(WITH)) return true;
+ if (jj_scan_token(ORDINALITY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_266() {
+ return false;
+ }
+
+ final private boolean jj_3_617() {
+ if (jj_scan_token(TO)) return true;
+ if (jj_3R_259()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_631() {
+ if (jj_3R_267()) return true;
+ if (jj_3R_263()) return true;
return false;
}
@@ -40018,36 +40609,128 @@
return false;
}
- final private boolean jj_3_647() {
- if (jj_scan_token(DOY)) return true;
+ final private boolean jj_3_630() {
+ if (jj_3R_265()) return true;
+ if (jj_3R_263()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_617()) {
+ jj_scanpos = xsp;
+ if (jj_3R_266()) return true;
+ }
return false;
}
- final private boolean jj_3_646() {
- if (jj_scan_token(DOW)) return true;
+ final private boolean jj_3_270() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_265()) jj_scanpos = xsp;
+ if (jj_scan_token(UNNEST)) return true;
+ if (jj_3R_174()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_264() {
+ if (jj_3R_169()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_219() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_630()) {
+ jj_scanpos = xsp;
+ if (jj_3_631()) {
+ jj_scanpos = xsp;
+ if (jj_3_632()) {
+ jj_scanpos = xsp;
+ if (jj_3_633()) {
+ jj_scanpos = xsp;
+ if (jj_3_634()) {
+ jj_scanpos = xsp;
+ if (jj_3_635()) {
+ jj_scanpos = xsp;
+ if (jj_3_636()) {
+ jj_scanpos = xsp;
+ if (jj_3_637()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_263() {
+ if (jj_scan_token(LATERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_261() {
+ if (jj_3R_169()) return true;
return false;
}
final private boolean jj_3_269() {
Token xsp;
xsp = jj_scanpos;
- if (jj_3_265()) jj_scanpos = xsp;
- if (jj_3R_174()) return true;
+ if (jj_3_263()) jj_scanpos = xsp;
+ if (jj_3R_173()) return true;
return false;
}
- final private boolean jj_3_645() {
- if (jj_scan_token(DAYOFYEAR)) return true;
+ final private boolean jj_3_260() {
+ if (jj_3R_168()) return true;
return false;
}
- final private boolean jj_3_644() {
- if (jj_scan_token(DAYOFWEEK)) return true;
+ final private boolean jj_3_259() {
+ if (jj_3R_159()) return true;
return false;
}
- final private boolean jj_3_643() {
- if (jj_scan_token(DAY)) return true;
+ final private boolean jj_3_258() {
+ if (jj_3R_158()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_172() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_258()) {
+ jj_scanpos = xsp;
+ if (jj_3R_381()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_259()) jj_scanpos = xsp;
+ if (jj_3R_382()) return true;
+ xsp = jj_scanpos;
+ if (jj_3_260()) jj_scanpos = xsp;
+ xsp = jj_scanpos;
+ if (jj_3_261()) jj_scanpos = xsp;
+ return false;
+ }
+
+ final private boolean jj_3_262() {
+ if (jj_3R_170()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_268() {
+ if (jj_3R_171()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_262()) {
+ jj_scanpos = xsp;
+ if (jj_3R_172()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_616() {
+ if (jj_scan_token(SECONDS)) return true;
return false;
}
@@ -40060,7 +40743,7 @@
public boolean lookingAhead = false;
private boolean jj_semLA;
private int jj_gen;
- final private int[] jj_la1 = new int[10];
+ final private int[] jj_la1 = new int[11];
static private int[] jj_la1_0;
static private int[] jj_la1_1;
static private int[] jj_la1_2;
@@ -40116,84 +40799,84 @@
jj_la1_25();
}
private static void jj_la1_0() {
- jj_la1_0 = new int[] {0x0,0x0,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_0 = new int[] {0x0,0x0,0x4000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_1() {
- jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_1 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_2() {
- jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_2 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_3() {
- jj_la1_3 = new int[] {0x0,0x0,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x800,};
+ jj_la1_3 = new int[] {0x0,0x0,0x100000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x800,};
}
private static void jj_la1_4() {
- jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1600,};
+ jj_la1_4 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1600,};
}
private static void jj_la1_5() {
- jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_5 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_6() {
- jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_6 = new int[] {0x0,0x0,0x0,0x0,0x0,0x2000,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_7() {
- jj_la1_7 = new int[] {0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_7 = new int[] {0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_8() {
- jj_la1_8 = new int[] {0x0,0x0,0x40000800,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,};
+ jj_la1_8 = new int[] {0x0,0x0,0x40000800,0x0,0x0,0x0,0x0,0x0,0x0,0x8000,0x0,};
}
private static void jj_la1_9() {
- jj_la1_9 = new int[] {0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,};
+ jj_la1_9 = new int[] {0x0,0x0,0x200000,0x0,0x0,0x0,0x0,0x0,0x0,0x200000,0x0,};
}
private static void jj_la1_10() {
- jj_la1_10 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_10 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_11() {
- jj_la1_11 = new int[] {0x0,0x0,0x100,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_11 = new int[] {0x0,0x0,0x100,0x0,0x0,0x40000,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_12() {
- jj_la1_12 = new int[] {0x0,0x0,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_12 = new int[] {0x0,0x0,0x10000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_13() {
- jj_la1_13 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300,0x0,0x0,};
+ jj_la1_13 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x300,0x0,0x0,};
}
private static void jj_la1_14() {
- jj_la1_14 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_14 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_15() {
- jj_la1_15 = new int[] {0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x40,0x0,};
+ jj_la1_15 = new int[] {0x0,0x0,0x40,0x0,0x0,0x0,0x0,0x0,0x0,0x40,0x0,};
}
private static void jj_la1_16() {
- jj_la1_16 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_16 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_17() {
- jj_la1_17 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_17 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_18() {
- jj_la1_18 = new int[] {0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_18 = new int[] {0x2000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_19() {
- jj_la1_19 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ac00000,};
+ jj_la1_19 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1ac00000,};
}
private static void jj_la1_20() {
- jj_la1_20 = new int[] {0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x100000,0x0,};
+ jj_la1_20 = new int[] {0x0,0x0,0x0,0x0,0x0,0x80000000,0x0,0x0,0x0,0x100000,0x0,};
}
private static void jj_la1_21() {
- jj_la1_21 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_21 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_22() {
- jj_la1_22 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_22 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_23() {
- jj_la1_23 = new int[] {0x0,0x400000,0x0,0x0,0x0,0x400000,0x400000,0x0,0x0,0x0,};
+ jj_la1_23 = new int[] {0x0,0x800000,0x0,0x800000,0x0,0x0,0x800000,0x800000,0x0,0x0,0x0,};
}
private static void jj_la1_24() {
- jj_la1_24 = new int[] {0x0,0x0,0x400,0x904010,0x300000,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_24 = new int[] {0x0,0x0,0x800,0x0,0x1208020,0x600000,0x0,0x0,0x0,0x0,0x0,};
}
private static void jj_la1_25() {
- jj_la1_25 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
+ jj_la1_25 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,};
}
- final private JJCalls[] jj_2_rtns = new JJCalls[1805];
+ final private JJCalls[] jj_2_rtns = new JJCalls[1829];
private boolean jj_rescan = false;
private int jj_gc = 0;
@@ -40206,7 +40889,7 @@
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -40219,7 +40902,7 @@
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -40229,7 +40912,7 @@
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -40239,7 +40922,7 @@
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -40248,7 +40931,7 @@
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -40257,7 +40940,7 @@
token = new Token();
jj_ntk = -1;
jj_gen = 0;
- for (int i = 0; i < 10; i++) jj_la1[i] = -1;
+ for (int i = 0; i < 11; i++) jj_la1[i] = -1;
for (int i = 0; i < jj_2_rtns.length; i++) jj_2_rtns[i] = new JJCalls();
}
@@ -40368,15 +41051,15 @@
public ParseException generateParseException() {
jj_expentries.removeAllElements();
- boolean[] la1tokens = new boolean[827];
- for (int i = 0; i < 827; i++) {
+ boolean[] la1tokens = new boolean[830];
+ for (int i = 0; i < 830; i++) {
la1tokens[i] = false;
}
if (jj_kind >= 0) {
la1tokens[jj_kind] = true;
jj_kind = -1;
}
- for (int i = 0; i < 10; i++) {
+ for (int i = 0; i < 11; i++) {
if (jj_la1[i] == jj_gen) {
for (int j = 0; j < 32; j++) {
if ((jj_la1_0[i] & (1<<j)) != 0) {
@@ -40460,7 +41143,7 @@
}
}
}
- for (int i = 0; i < 827; i++) {
+ for (int i = 0; i < 830; i++) {
if (la1tokens[i]) {
jj_expentry = new int[1];
jj_expentry[0] = i;
@@ -40485,7 +41168,7 @@
final private void jj_rescan_token() {
jj_rescan = true;
- for (int i = 0; i < 1805; i++) {
+ for (int i = 0; i < 1829; i++) {
try {
JJCalls p = jj_2_rtns[i];
do {
@@ -42297,6 +42980,30 @@
case 1802: jj_3_1803(); break;
case 1803: jj_3_1804(); break;
case 1804: jj_3_1805(); break;
+ case 1805: jj_3_1806(); break;
+ case 1806: jj_3_1807(); break;
+ case 1807: jj_3_1808(); break;
+ case 1808: jj_3_1809(); break;
+ case 1809: jj_3_1810(); break;
+ case 1810: jj_3_1811(); break;
+ case 1811: jj_3_1812(); break;
+ case 1812: jj_3_1813(); break;
+ case 1813: jj_3_1814(); break;
+ case 1814: jj_3_1815(); break;
+ case 1815: jj_3_1816(); break;
+ case 1816: jj_3_1817(); break;
+ case 1817: jj_3_1818(); break;
+ case 1818: jj_3_1819(); break;
+ case 1819: jj_3_1820(); break;
+ case 1820: jj_3_1821(); break;
+ case 1821: jj_3_1822(); break;
+ case 1822: jj_3_1823(); break;
+ case 1823: jj_3_1824(); break;
+ case 1824: jj_3_1825(); break;
+ case 1825: jj_3_1826(); break;
+ case 1826: jj_3_1827(); break;
+ case 1827: jj_3_1828(); break;
+ case 1828: jj_3_1829(); break;
}
}
p = p.next;
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImplConstants.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImplConstants.java
index d047b22..f25711d 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImplConstants.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImplConstants.java
@@ -679,149 +679,152 @@
int UNPIVOT = 673;
int UNNAMED = 674;
int UNNEST = 675;
- int UPDATE = 676;
- int UPPER = 677;
- int UPSERT = 678;
- int USAGE = 679;
- int USER = 680;
- int USER_DEFINED_TYPE_CATALOG = 681;
- int USER_DEFINED_TYPE_CODE = 682;
- int USER_DEFINED_TYPE_NAME = 683;
- int USER_DEFINED_TYPE_SCHEMA = 684;
- int USING = 685;
- int UTF8 = 686;
- int UTF16 = 687;
- int UTF32 = 688;
- int UUID = 689;
- int VALUE = 690;
- int VALUES = 691;
- int VALUE_OF = 692;
- int VAR_POP = 693;
- int VAR_SAMP = 694;
- int VARBINARY = 695;
- int VARCHAR = 696;
- int VARIANT = 697;
- int VARYING = 698;
- int VERSION = 699;
- int VERSIONING = 700;
- int VIEW = 701;
- int WEDNESDAY = 702;
- int WEEK = 703;
- int WEEKS = 704;
- int WHEN = 705;
- int WHENEVER = 706;
- int WHERE = 707;
- int WIDTH_BUCKET = 708;
- int WINDOW = 709;
- int WITH = 710;
- int WITHIN = 711;
- int WITHOUT = 712;
- int WORK = 713;
- int WRAPPER = 714;
- int WRITE = 715;
- int XML = 716;
- int YEAR = 717;
- int YEARS = 718;
- int ZONE = 719;
- int IF = 720;
- int TEMPLATE = 721;
- int BACKUPS = 722;
- int AFFINITY_KEY = 723;
- int ATOMICITY = 724;
- int WRITE_SYNCHRONIZATION_MODE = 725;
- int CACHE_GROUP = 726;
- int CACHE_NAME = 727;
- int DATA_REGION = 728;
- int VALUE_TYPE = 729;
- int WRAP_KEY = 730;
- int WRAP_VALUE = 731;
- int ENCRYPTED = 732;
- int INDEX = 733;
- int PARALLEL = 734;
- int INLINE_SIZE = 735;
- int LOGGING = 736;
- int NOLOGGING = 737;
- int PASSWORD = 738;
- int KILL = 739;
- int SCAN = 740;
- int CONTINUOUS = 741;
- int SERVICE = 742;
- int COMPUTE = 743;
- int ASYNC = 744;
- int QUERY = 745;
- int STATISTICS = 746;
- int REFRESH = 747;
- int ANALYZE = 748;
- int MAX_CHANGED_PARTITION_ROWS_PERCENT = 749;
- int TOTAL = 750;
- int UNSIGNED_INTEGER_LITERAL = 751;
- int APPROX_NUMERIC_LITERAL = 752;
- int DECIMAL_NUMERIC_LITERAL = 753;
- int EXPONENT = 754;
- int HEXDIGIT = 755;
- int WHITESPACE = 756;
- int BINARY_STRING_LITERAL = 757;
- int QUOTED_STRING = 758;
- int PREFIXED_STRING_LITERAL = 759;
- int UNICODE_STRING_LITERAL = 760;
- int C_STYLE_ESCAPED_STRING_LITERAL = 761;
- int CHARSETNAME = 762;
- int BIG_QUERY_DOUBLE_QUOTED_STRING = 763;
- int BIG_QUERY_QUOTED_STRING = 764;
- int UNICODE_QUOTED_ESCAPE_CHAR = 765;
- int LPAREN = 766;
- int RPAREN = 767;
- int LBRACE_D = 768;
- int LBRACE_T = 769;
- int LBRACE_TS = 770;
- int LBRACE_FN = 771;
- int LBRACE = 772;
- int RBRACE = 773;
- int LBRACKET = 774;
- int RBRACKET = 775;
- int SEMICOLON = 776;
- int DOT = 777;
- int COMMA = 778;
- int EQ = 779;
- int GT = 780;
- int LT = 781;
- int HOOK = 782;
- int COLON = 783;
- int LE = 784;
- int GE = 785;
- int NE = 786;
- int NE2 = 787;
- int PLUS = 788;
- int MINUS = 789;
- int LAMBDA = 790;
- int STAR = 791;
- int SLASH = 792;
- int PERCENT_REMAINDER = 793;
- int CONCAT = 794;
- int NAMED_ARGUMENT_ASSIGNMENT = 795;
- int DOUBLE_PERIOD = 796;
- int QUOTE = 797;
- int DOUBLE_QUOTE = 798;
- int VERTICAL_BAR = 799;
- int CARET = 800;
- int DOLLAR = 801;
- int INFIX_CAST = 802;
- int HINT_BEG = 808;
- int COMMENT_END = 809;
- int SINGLE_LINE_COMMENT = 812;
- int FORMAL_COMMENT = 813;
- int MULTI_LINE_COMMENT = 814;
- int BRACKET_QUOTED_IDENTIFIER = 816;
- int QUOTED_IDENTIFIER = 817;
- int BACK_QUOTED_IDENTIFIER = 818;
- int BIG_QUERY_BACK_QUOTED_IDENTIFIER = 819;
- int HYPHENATED_IDENTIFIER = 820;
- int IDENTIFIER = 821;
- int COLLATION_ID = 822;
- int UNICODE_QUOTED_IDENTIFIER = 823;
- int LETTER = 824;
- int DIGIT = 825;
- int BEL = 826;
+ int UNSIGNED = 676;
+ int UPDATE = 677;
+ int UPPER = 678;
+ int UPSERT = 679;
+ int USAGE = 680;
+ int USER = 681;
+ int USER_DEFINED_TYPE_CATALOG = 682;
+ int USER_DEFINED_TYPE_CODE = 683;
+ int USER_DEFINED_TYPE_NAME = 684;
+ int USER_DEFINED_TYPE_SCHEMA = 685;
+ int USING = 686;
+ int UTF8 = 687;
+ int UTF16 = 688;
+ int UTF32 = 689;
+ int UUID = 690;
+ int VALUE = 691;
+ int VALUES = 692;
+ int VALUE_OF = 693;
+ int VAR_POP = 694;
+ int VAR_SAMP = 695;
+ int VARBINARY = 696;
+ int VARCHAR = 697;
+ int VARIANT = 698;
+ int VARYING = 699;
+ int VERSION = 700;
+ int VERSIONING = 701;
+ int VIEW = 702;
+ int WEDNESDAY = 703;
+ int WEEK = 704;
+ int WEEKS = 705;
+ int WHEN = 706;
+ int WHENEVER = 707;
+ int WHERE = 708;
+ int WIDTH_BUCKET = 709;
+ int WINDOW = 710;
+ int WITH = 711;
+ int WITHIN = 712;
+ int WITHOUT = 713;
+ int WORK = 714;
+ int WRAPPER = 715;
+ int WRITE = 716;
+ int XML = 717;
+ int YEAR = 718;
+ int YEARS = 719;
+ int ZONE = 720;
+ int IF = 721;
+ int TEMPLATE = 722;
+ int BACKUPS = 723;
+ int AFFINITY_KEY = 724;
+ int ATOMICITY = 725;
+ int WRITE_SYNCHRONIZATION_MODE = 726;
+ int CACHE_GROUP = 727;
+ int CACHE_NAME = 728;
+ int DATA_REGION = 729;
+ int VALUE_TYPE = 730;
+ int WRAP_KEY = 731;
+ int WRAP_VALUE = 732;
+ int ENCRYPTED = 733;
+ int INDEX = 734;
+ int PARALLEL = 735;
+ int INLINE_SIZE = 736;
+ int LOGGING = 737;
+ int NOLOGGING = 738;
+ int PASSWORD = 739;
+ int KILL = 740;
+ int SCAN = 741;
+ int CONTINUOUS = 742;
+ int SERVICE = 743;
+ int COMPUTE = 744;
+ int ASYNC = 745;
+ int QUERY = 746;
+ int STATISTICS = 747;
+ int REFRESH = 748;
+ int ANALYZE = 749;
+ int MAX_CHANGED_PARTITION_ROWS_PERCENT = 750;
+ int TOTAL = 751;
+ int UNSIGNED_INTEGER_LITERAL = 752;
+ int APPROX_NUMERIC_LITERAL = 753;
+ int DECIMAL_NUMERIC_LITERAL = 754;
+ int EXPONENT = 755;
+ int HEXDIGIT = 756;
+ int WHITESPACE = 757;
+ int BINARY_STRING_LITERAL = 758;
+ int QUOTED_STRING = 759;
+ int PREFIXED_STRING_LITERAL = 760;
+ int UNICODE_STRING_LITERAL = 761;
+ int C_STYLE_ESCAPED_STRING_LITERAL = 762;
+ int CHARSETNAME = 763;
+ int BIG_QUERY_DOUBLE_QUOTED_STRING = 764;
+ int BIG_QUERY_QUOTED_STRING = 765;
+ int UNICODE_QUOTED_ESCAPE_CHAR = 766;
+ int LPAREN = 767;
+ int RPAREN = 768;
+ int LBRACE_D = 769;
+ int LBRACE_T = 770;
+ int LBRACE_TS = 771;
+ int LBRACE_FN = 772;
+ int LBRACE = 773;
+ int RBRACE = 774;
+ int LBRACKET = 775;
+ int RBRACKET = 776;
+ int SEMICOLON = 777;
+ int DOT = 778;
+ int COMMA = 779;
+ int EQ = 780;
+ int GT = 781;
+ int LT = 782;
+ int HOOK = 783;
+ int COLON = 784;
+ int LE = 785;
+ int GE = 786;
+ int NE = 787;
+ int NE2 = 788;
+ int PLUS = 789;
+ int MINUS = 790;
+ int LAMBDA = 791;
+ int STAR = 792;
+ int SLASH = 793;
+ int PERCENT_REMAINDER = 794;
+ int CONCAT = 795;
+ int NAMED_ARGUMENT_ASSIGNMENT = 796;
+ int DOUBLE_PERIOD = 797;
+ int QUOTE = 798;
+ int DOUBLE_QUOTE = 799;
+ int VERTICAL_BAR = 800;
+ int CARET = 801;
+ int AMPERSAND = 802;
+ int LEFTSHIFT = 803;
+ int DOLLAR = 804;
+ int INFIX_CAST = 805;
+ int HINT_BEG = 811;
+ int COMMENT_END = 812;
+ int SINGLE_LINE_COMMENT = 815;
+ int FORMAL_COMMENT = 816;
+ int MULTI_LINE_COMMENT = 817;
+ int BRACKET_QUOTED_IDENTIFIER = 819;
+ int QUOTED_IDENTIFIER = 820;
+ int BACK_QUOTED_IDENTIFIER = 821;
+ int BIG_QUERY_BACK_QUOTED_IDENTIFIER = 822;
+ int HYPHENATED_IDENTIFIER = 823;
+ int IDENTIFIER = 824;
+ int COLLATION_ID = 825;
+ int UNICODE_QUOTED_IDENTIFIER = 826;
+ int LETTER = 827;
+ int DIGIT = 828;
+ int BEL = 829;
int DEFAULT = 0;
int DQID = 1;
@@ -1508,6 +1511,7 @@
"\"UNPIVOT\"",
"\"UNNAMED\"",
"\"UNNEST\"",
+ "\"UNSIGNED\"",
"\"UPDATE\"",
"\"UPPER\"",
"\"UPSERT\"",
@@ -1633,6 +1637,8 @@
"\"\\\"\"",
"\"|\"",
"\"^\"",
+ "\"&\"",
+ "\"<<\"",
"\"$\"",
"\"::\"",
"\" \"",
@@ -1642,12 +1648,12 @@
"\"\\f\"",
"\"/*+\"",
"\"*/\"",
- "<token of kind 810>",
+ "<token of kind 813>",
"\"/*\"",
"<SINGLE_LINE_COMMENT>",
"<FORMAL_COMMENT>",
"<MULTI_LINE_COMMENT>",
- "<token of kind 815>",
+ "<token of kind 818>",
"<BRACKET_QUOTED_IDENTIFIER>",
"<QUOTED_IDENTIFIER>",
"<BACK_QUOTED_IDENTIFIER>",
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImplTokenManager.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImplTokenManager.java
index c40a229..6b58d3d 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImplTokenManager.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/IgniteSqlParserImplTokenManager.java
@@ -67,7 +67,10 @@
import org.apache.calcite.sql.SqlRowTypeNameSpec;
import org.apache.calcite.sql.SqlSampleSpec;
import org.apache.calcite.sql.SqlSelect;
+import org.apache.calcite.sql.SqlByRewriter;
import org.apache.calcite.sql.SqlSelectKeyword;
+import org.apache.calcite.sql.SqlStarExclude;
+import org.apache.calcite.sql.SqlStarReplace;
import org.apache.calcite.sql.SqlSetOption;
import org.apache.calcite.sql.SqlSnapshot;
import org.apache.calcite.sql.SqlTableRef;
@@ -144,205 +147,205 @@
switch (pos)
{
case 0:
- if ((active2 & 0xfe00000000000000L) != 0L || (active3 & 0x7ffffL) != 0L || (active11 & 0x10000000L) != 0L)
- {
- jjmatchedKind = 821;
- return 16;
- }
- if ((active12 & 0x10L) != 0L)
+ if ((active12 & 0x20L) != 0L)
return 94;
- if ((active12 & 0x20000000L) != 0L)
+ if ((active12 & 0x40000000L) != 0L)
return 63;
- if ((active5 & 0x7fffff000000000L) != 0L || (active11 & 0x200000000L) != 0L)
+ if ((active12 & 0x480002000000L) != 0L)
+ return 92;
+ if ((active5 & 0x7fffff000000000L) != 0L || (active11 & 0x400000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 95;
}
- if ((active12 & 0x90001000000L) != 0L)
- return 92;
- if ((active11 & 0x1000L) != 0L)
+ if ((active11 & 0x2000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 1;
}
- if ((active12 & 0x40000000L) != 0L)
+ if ((active12 & 0x80000000L) != 0L)
return 96;
- if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0x1ffffffffffffc0L) != 0L || (active3 & 0xff8001fffff80000L) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xf800000000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffc000001ffffffL) != 0L || (active11 & 0x4e55ef27efffL) != 0L)
+ if ((active2 & 0xfe00000000000000L) != 0L || (active3 & 0x7ffffL) != 0L || (active11 & 0x20000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
+ return 16;
+ }
+ if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x635001b00000L) != 0L || (active12 & 0x1000000000L) != 0L)
+ return 97;
+ if ((active12 & 0x20000400L) != 0L)
+ return 98;
+ if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0x1ffffffffffffc0L) != 0L || (active3 & 0xff8001fffff80000L) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xf800000000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfff8000001ffffffL) != 0L || (active11 & 0x9cabde4fdfffL) != 0L)
+ {
+ jjmatchedKind = 824;
return 97;
}
- if ((active10 & 0x3fffffe000000L) != 0L)
+ if ((active10 & 0x7fffffe000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 66;
}
- if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x31a800d80000L) != 0L || (active12 & 0x200000000L) != 0L)
- return 97;
- if ((active12 & 0x10000200L) != 0L)
- return 98;
- if ((active12 & 0x600000L) != 0L)
+ if ((active12 & 0xc00000L) != 0L)
return 23;
return -1;
case 1:
- if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x3efd5feeffffL) != 0L)
+ if ((active12 & 0x480000000000L) != 0L)
+ return 90;
+ if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x820540220000L) != 0L)
+ return 97;
+ if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x7dfabfddffffL) != 0L)
{
if (jjmatchedPos != 1)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 1;
}
return 97;
}
- if ((active12 & 0x90000000000L) != 0L)
- return 90;
- if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x4102a0110000L) != 0L)
- return 97;
return -1;
case 2:
- if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0x57fffffeefffL) != 0L)
+ if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x500000002000L) != 0L)
+ return 97;
+ if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0xaffffffddfffL) != 0L)
{
if (jjmatchedPos != 2)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 2;
}
return 97;
}
- if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x280000001000L) != 0L)
- return 97;
return -1;
case 3:
- if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0xa0025f00010e0000L) != 0L || (active11 & 0x180100e3c7L) != 0L)
- return 97;
- if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0x5ffda0fffef1fffeL) != 0L || (active11 & 0x7fe7fefe0c38L) != 0L)
+ if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0xbffb41fffef1fffeL) != 0L || (active11 & 0xffcffdfc1870L) != 0L)
{
if (jjmatchedPos != 3)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 3;
}
return 97;
}
+ if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0x4004be00010e0000L) != 0L || (active11 & 0x300201c78fL) != 0L)
+ return 97;
if ((active2 & 0x8000000000000000L) != 0L)
return 99;
return -1;
case 4:
- if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x1da0a060001000L) != 0L || (active11 & 0x430022204809L) != 0L)
- return 97;
- if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0x5fe01e5f9ef5effeL) != 0L || (active11 & 0x3ce7ddde05b4L) != 0L)
+ if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0xbfc03cbf9ef5effeL) != 0L || (active11 & 0x79cfbbbc0b68L) != 0L)
{
if (jjmatchedPos != 4)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 4;
}
return 97;
}
+ if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x3b414060001000L) != 0L || (active11 & 0x860044409012L) != 0L)
+ return 97;
if ((active2 & 0x8000000000000000L) != 0L)
return 99;
return -1;
case 5:
- if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0x5ff01e071e75effeL) != 0L || (active11 & 0x3ce7dfee0514L) != 0L)
+ if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x1000a880800000L) != 0L || (active11 & 0x200140L) != 0L)
+ return 97;
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 99;
+ if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0xbfe03c171e75effeL) != 0L || (active11 & 0x79cfbfdc0a28L) != 0L)
{
if (jjmatchedPos != 5)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 5;
}
return 97;
}
- if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x8005880800000L) != 0L || (active11 & 0x1000a0L) != 0L)
- return 97;
- if ((active2 & 0x8000000000000000L) != 0L)
- return 99;
return -1;
case 6:
- if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x1f2000070241e000L) != 0L || (active11 & 0x18c100040500L) != 0L)
+ if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x3e4000070241e000L) != 0L || (active11 & 0x318200080a00L) != 0L)
return 97;
- if ((active2 & 0x8000000000000000L) != 0L)
- return 99;
- if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x40d01e001c340ffeL) != 0L || (active11 & 0x2426dffa0014L) != 0L)
+ if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x81a03c101c340ffeL) != 0L || (active11 & 0x484dbff40028L) != 0L)
{
if (jjmatchedPos != 6)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 6;
}
return 97;
}
- return -1;
- case 7:
- if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0x50000000300004L) != 0L || (active11 & 0x444020004L) != 0L)
- return 97;
if ((active2 & 0x8000000000000000L) != 0L)
return 99;
- if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0x50801e001c05cffaL) != 0L || (active11 & 0x24229bf80010L) != 0L)
+ return -1;
+ case 7:
+ if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0xa1003c001c05cffaL) != 0L || (active11 & 0x484537f00020L) != 0L)
{
if (jjmatchedPos != 7)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 7;
}
return 97;
}
+ if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0xa0001000300004L) != 0L || (active11 & 0x888040008L) != 0L)
+ return 97;
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 99;
return -1;
case 8:
- if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x10001e001805c87aL) != 0L || (active11 & 0x24208be80010L) != 0L)
+ if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x20003c001805c87aL) != 0L || (active11 & 0x484117d00020L) != 0L)
{
if (jjmatchedPos != 8)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 8;
}
return 97;
}
- if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x4080000004000780L) != 0L || (active11 & 0x210100000L) != 0L)
+ if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x8100000004000780L) != 0L || (active11 & 0x420200000L) != 0L)
return 97;
return -1;
case 9:
- if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x1e001801cc7aL) != 0L || (active11 & 0x200081680010L) != 0L)
+ if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x2000000000040100L) != 0L || (active11 & 0x84015000000L) != 0L)
+ return 97;
+ if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x3c001801cc7aL) != 0L || (active11 & 0x400102d00020L) != 0L)
{
if (jjmatchedPos != 9)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 9;
}
return 97;
}
- if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x1000000000040100L) != 0L || (active11 & 0x4200a800000L) != 0L)
- return 97;
return -1;
case 10:
- if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x81400000L) != 0L)
+ if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x102800000L) != 0L)
return 97;
- if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x1e001001c402L) != 0L || (active11 & 0x200000280010L) != 0L)
+ if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x3c001001c402L) != 0L || (active11 & 0x400000500020L) != 0L)
{
if (jjmatchedPos != 10)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 10;
}
return 97;
}
return -1;
case 11:
- if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x1e0010014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x3c0010014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 11)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 11;
}
return 97;
}
- if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x80010L) != 0L)
+ if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x100020L) != 0L)
return 97;
return -1;
case 12:
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x1e0000014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x3c0000014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 12;
return 97;
}
@@ -352,9 +355,9 @@
case 13:
if ((active1 & 0x4000000000200000L) != 0L || (active2 & 0x8000L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x10000L) != 0L || (active6 & 0x8000003000000L) != 0L || (active7 & 0x4000400000008000L) != 0L || (active9 & 0x800000000024000L) != 0L || (active10 & 0x10000L) != 0L)
return 97;
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x1e0000004472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x3c0000004472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 13;
return 97;
}
@@ -362,19 +365,19 @@
case 14:
if ((active0 & 0x20000000000L) != 0L || (active1 & 0x100084800000200L) != 0L || (active5 & 0x280L) != 0L || (active6 & 0x30000000000L) != 0L || (active7 & 0x100100000000L) != 0L || (active8 & 0x8000000000000000L) != 0L || (active9 & 0x5000004200010000L) != 0L || (active10 & 0x4402L) != 0L)
return 97;
- if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 14;
return 97;
}
return -1;
case 15:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 15)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 15;
}
return 97;
@@ -383,11 +386,11 @@
return 97;
return -1;
case 16:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 16)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 16;
}
return 97;
@@ -398,9 +401,9 @@
case 17:
if ((active1 & 0x2000000080L) != 0L || (active8 & 0x400000000000000L) != 0L)
return 97;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 17;
return 97;
}
@@ -408,20 +411,20 @@
case 18:
if ((active8 & 0xb00000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x10L) != 0L)
return 97;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 18)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 18;
}
return 97;
}
return -1;
case 19:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 19;
return 97;
}
@@ -431,27 +434,27 @@
case 20:
if ((active0 & 0x1000000L) != 0L || (active1 & 0x8000040L) != 0L || (active2 & 0x100000000000000L) != 0L || (active7 & 0x200000000L) != 0L)
return 97;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 20;
return 97;
}
return -1;
case 21:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 21;
return 97;
}
- if ((active2 & 0x2000L) != 0L || (active10 & 0xc0000000020L) != 0L)
+ if ((active2 & 0x2000L) != 0L || (active10 & 0x180000000020L) != 0L)
return 97;
return -1;
case 22:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 22;
return 97;
}
@@ -459,39 +462,39 @@
return 97;
return -1;
case 23:
- if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x100000000040L) != 0L)
+ if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x200000000040L) != 0L)
return 97;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x20000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x40000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 23;
return 97;
}
return -1;
case 24:
- if ((active6 & 0x20000000L) != 0L || (active10 & 0x20000000000L) != 0L)
+ if ((active6 & 0x20000000L) != 0L || (active10 & 0x40000000000L) != 0L)
return 97;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 24;
return 97;
}
return -1;
case 25:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 25;
return 97;
}
- if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x200000L) != 0L)
+ if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x400000L) != 0L)
return 97;
return -1;
case 26:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 26;
return 97;
}
@@ -499,9 +502,9 @@
return 97;
return -1;
case 27:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 27;
return 97;
}
@@ -509,17 +512,17 @@
case 28:
if ((active8 & 0x200000000000000L) != 0L)
return 97;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 28;
return 97;
}
return -1;
case 29:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 29;
return 97;
}
@@ -527,17 +530,17 @@
case 30:
if ((active1 & 0x400000000000000L) != 0L)
return 97;
- if ((active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 30;
return 97;
}
return -1;
case 31:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 31;
return 97;
}
@@ -545,9 +548,9 @@
return 97;
return -1;
case 32:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 32;
return 97;
}
@@ -580,74 +583,76 @@
{
case 33:
jjmatchedKind = 1;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000L);
case 34:
- return jjStartNfaWithStates_1(0, 798, 96);
+ return jjStartNfaWithStates_1(0, 799, 96);
case 36:
- return jjStartNfaWithStates_1(0, 801, 97);
+ return jjStartNfaWithStates_1(0, 804, 97);
case 37:
- return jjStopAtPos(0, 793);
+ return jjStopAtPos(0, 794);
+ case 38:
+ return jjStopAtPos(0, 802);
case 39:
- return jjStartNfaWithStates_1(0, 797, 63);
+ return jjStartNfaWithStates_1(0, 798, 63);
case 40:
- return jjStopAtPos(0, 766);
- case 41:
return jjStopAtPos(0, 767);
+ case 41:
+ return jjStopAtPos(0, 768);
case 42:
- jjmatchedKind = 791;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000000L);
- case 43:
- return jjStopAtPos(0, 788);
- case 44:
- return jjStopAtPos(0, 778);
- case 45:
- jjmatchedKind = 789;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000L);
- case 46:
- jjmatchedKind = 777;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
- case 47:
jjmatchedKind = 792;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x90000000000L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000000L);
+ case 43:
+ return jjStopAtPos(0, 789);
+ case 44:
+ return jjStopAtPos(0, 779);
+ case 45:
+ jjmatchedKind = 790;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000L);
+ case 46:
+ jjmatchedKind = 778;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L);
+ case 47:
+ jjmatchedKind = 793;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x480000000000L);
case 58:
- jjmatchedKind = 783;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L);
+ jjmatchedKind = 784;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000000L);
case 59:
- return jjStopAtPos(0, 776);
+ return jjStopAtPos(0, 777);
case 60:
- jjmatchedKind = 781;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x50000L);
+ jjmatchedKind = 782;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000a0000L);
case 61:
- jjmatchedKind = 779;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
- case 62:
jjmatchedKind = 780;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
+ case 62:
+ jjmatchedKind = 781;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L);
case 63:
- return jjStopAtPos(0, 782);
+ return jjStopAtPos(0, 783);
case 91:
- return jjStopAtPos(0, 774);
- case 93:
return jjStopAtPos(0, 775);
+ case 93:
+ return jjStopAtPos(0, 776);
case 94:
- return jjStopAtPos(0, 800);
+ return jjStopAtPos(0, 801);
case 65:
case 97:
jjmatchedKind = 3;
- return jjMoveStringLiteralDfa1_1(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x110000180000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x220000300000L, 0x0L);
case 66:
case 98:
- return jjMoveStringLiteralDfa1_1(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L, 0x0L);
case 67:
case 99:
jjmatchedKind = 52;
- return jjMoveStringLiteralDfa1_1(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa000c00000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x14001800000L, 0x0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000L, 0x0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L, 0x0L);
case 70:
case 102:
return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x1fffff80000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
@@ -660,67 +665,67 @@
return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x1f80000000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa0010000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x140020000L, 0x0L);
case 74:
case 106:
return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0xffe0000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 75:
case 107:
jjmatchedKind = 296;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000000L, 0x0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
case 77:
case 109:
jjmatchedKind = 322;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x200000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x400000000000L, 0x0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L, 0x0L);
case 79:
case 111:
return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xf800000000000000L, 0x3fffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x440000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x880000000L, 0x0L);
case 81:
case 113:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x20000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x40000000000L, 0x0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x80000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x100000000000L, 0x0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x45000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x8a000000000L, 0x0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x400000020000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x800000040000L, 0x0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3fffffe000000L, 0x0L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffffe000000L, 0x0L, 0x0L);
case 86:
case 118:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3ffc000000000000L, 0x2000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7ff8000000000000L, 0x4000000L, 0x0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000000000000000L, 0xc200fffL, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000000000000L, 0x18401fffL, 0x0L);
case 88:
case 120:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000L, 0x0L);
case 89:
case 121:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x6000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000L, 0x0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000L, 0x0L);
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000L, 0x0L);
case 123:
- return jjStartNfaWithStates_1(0, 772, 94);
+ return jjStartNfaWithStates_1(0, 773, 94);
case 124:
- jjmatchedKind = 799;
- return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x4000000L);
+ jjmatchedKind = 800;
+ return jjMoveStringLiteralDfa1_1(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
case 125:
- return jjStopAtPos(0, 773);
+ return jjStopAtPos(0, 774);
case 126:
return jjStopAtPos(0, 2);
default :
@@ -737,55 +742,59 @@
switch(curChar)
{
case 42:
- if ((active12 & 0x80000000000L) != 0L)
+ if ((active12 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 811;
+ jjmatchedKind = 814;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x10000000000L);
+ return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x80000000000L);
case 46:
- if ((active12 & 0x10000000L) != 0L)
- return jjStopAtPos(1, 796);
+ if ((active12 & 0x20000000L) != 0L)
+ return jjStopAtPos(1, 797);
break;
case 47:
- if ((active12 & 0x20000000000L) != 0L)
- return jjStopAtPos(1, 809);
+ if ((active12 & 0x100000000000L) != 0L)
+ return jjStopAtPos(1, 812);
break;
case 58:
- if ((active12 & 0x400000000L) != 0L)
- return jjStopAtPos(1, 802);
+ if ((active12 & 0x2000000000L) != 0L)
+ return jjStopAtPos(1, 805);
+ break;
+ case 60:
+ if ((active12 & 0x800000000L) != 0L)
+ return jjStopAtPos(1, 803);
break;
case 61:
- if ((active12 & 0x10000L) != 0L)
- return jjStopAtPos(1, 784);
- else if ((active12 & 0x20000L) != 0L)
+ if ((active12 & 0x20000L) != 0L)
return jjStopAtPos(1, 785);
- else if ((active12 & 0x80000L) != 0L)
- return jjStopAtPos(1, 787);
+ else if ((active12 & 0x40000L) != 0L)
+ return jjStopAtPos(1, 786);
+ else if ((active12 & 0x100000L) != 0L)
+ return jjStopAtPos(1, 788);
break;
case 62:
- if ((active12 & 0x40000L) != 0L)
- return jjStopAtPos(1, 786);
- else if ((active12 & 0x400000L) != 0L)
- return jjStopAtPos(1, 790);
- else if ((active12 & 0x8000000L) != 0L)
- return jjStopAtPos(1, 795);
+ if ((active12 & 0x80000L) != 0L)
+ return jjStopAtPos(1, 787);
+ else if ((active12 & 0x800000L) != 0L)
+ return jjStopAtPos(1, 791);
+ else if ((active12 & 0x10000000L) != 0L)
+ return jjStopAtPos(1, 796);
break;
case 65:
case 97:
- return jjMoveStringLiteralDfa2_1(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0x7fc000000000000L, active11, 0x200443c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0xff8000000000000L, active11, 0x400887880000L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa2_1(active0, 0x70L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa2_1(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x1000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x2000000000L, active12, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa2_1(active0, 0x700L, active1, 0L, active2, 0L, active3, 0x2000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa2_1(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xd800000002000000L, active11, 0x84000026001L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xb000000002000000L, active11, 0x10800004c003L, active12, 0L);
case 70:
case 102:
if ((active5 & 0x8000000000000000L) != 0L)
@@ -793,18 +802,18 @@
jjmatchedKind = 383;
jjmatchedPos = 1;
}
- else if ((active11 & 0x10000L) != 0L)
- return jjStartNfaWithStates_1(1, 720, 97);
- return jjMoveStringLiteralDfa2_1(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000L, active12, 0L);
+ else if ((active11 & 0x20000L) != 0L)
+ return jjStartNfaWithStates_1(1, 721, 97);
+ return jjMoveStringLiteralDfa2_1(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
case 71:
case 103:
return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 72:
case 104:
- return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0xeL, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0x1cL, active12, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa2_1(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x2000000000000000L, active11, 0x8000001f0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x4000000000000000L, active11, 0x10000003e0L, active12, 0L);
case 75:
case 107:
return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -813,7 +822,7 @@
return jjMoveStringLiteralDfa2_1(active0, 0x80000001f000L, active1, 0xf000L, active2, 0xc00000000000000L, active3, 0x8000400006000000L, active4, 0L, active5, 0L, active6, 0x1c00000000002L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x1000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x2000L, active12, 0L);
case 78:
case 110:
if ((active4 & 0x10L) != 0L)
@@ -828,7 +837,7 @@
jjmatchedKind = 387;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_1(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0xffc000000L, active11, 0x1000b0000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1ffc000000L, active11, 0x200160000000L, active12, 0L);
case 79:
case 111:
if ((active3 & 0x800000000000L) != 0L)
@@ -846,10 +855,10 @@
jjmatchedKind = 640;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_1(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x40a300008200L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x814600010400L, active12, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa2_1(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0x7000000000L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0xe000000000L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x8L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xfffffffe00000000L, active9, 0x7fffffL, active10, 0L, active11, 0L, active12, 0L);
@@ -860,7 +869,7 @@
jjmatchedKind = 393;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_1(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0xc200c00L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0x18401800L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x2000000L) != 0L)
@@ -873,7 +882,7 @@
jjmatchedKind = 281;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_1(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3f8000000000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x7f0000000000L, active11, 0x20000000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x100000000L) != 0L)
@@ -881,10 +890,10 @@
jjmatchedKind = 32;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_1(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x1c00000000000L, active11, 0x40000100000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x3800000000000L, active11, 0x80000200000L, active12, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa2_1(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x2000000c00000L, active11, 0x20000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_1(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x4000000c00000L, active11, 0x40000000000L, active12, 0L);
case 86:
case 118:
return jjMoveStringLiteralDfa2_1(active0, 0x2000000000L, active1, 0L, active2, 0L, active3, 0x40L, active4, 0L, active5, 0L, active6, 0x3c0000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -897,8 +906,8 @@
return jjStartNfaWithStates_1(1, 51, 97);
return jjMoveStringLiteralDfa2_1(active0, 0L, active1, 0L, active2, 0x1c0000000000020L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x3c0000000000L, active10, 0x1000000L, active11, 0L, active12, 0L);
case 124:
- if ((active12 & 0x4000000L) != 0L)
- return jjStopAtPos(1, 794);
+ if ((active12 & 0x8000000L) != 0L)
+ return jjStopAtPos(1, 795);
break;
default :
break;
@@ -917,14 +926,14 @@
switch(curChar)
{
case 43:
- if ((active12 & 0x10000000000L) != 0L)
- return jjStopAtPos(2, 808);
+ if ((active12 & 0x80000000000L) != 0L)
+ return jjStopAtPos(2, 811);
break;
case 65:
case 97:
if ((active0 & 0x100L) != 0L)
return jjStartNfaWithStates_1(2, 8, 97);
- return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x8000000ffcL, active11, 0x14100c006400L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x10000000ffcL, active11, 0x28201800c800L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x20000000020000L, active2, 0L, active3, 0L, active4, 0x100100000000000L, active5, 0L, active6, 0x8000000000000000L, active7, 0L, active8, 0L, active9, 0x1c07e00000000L, active10, 0x4000000L, active11, 0L, active12, 0L);
@@ -937,7 +946,7 @@
jjmatchedKind = 149;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x10c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x21880000L, active12, 0L);
case 68:
case 100:
if ((active0 & 0x200L) != 0L)
@@ -958,14 +967,14 @@
return jjStartNfaWithStates_1(2, 385, 97);
else if ((active6 & 0x400000L) != 0L)
return jjStartNfaWithStates_1(2, 406, 97);
- return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x4000001020000000L, active11, 0x20000010L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x8000002020000000L, active11, 0x40000020L, active12, 0L);
case 69:
case 101:
if ((active0 & 0x100000L) != 0L)
return jjStartNfaWithStates_1(2, 20, 97);
else if ((active6 & 0x10L) != 0L)
return jjStartNfaWithStates_1(2, 388, 97);
- return jjMoveStringLiteralDfa3_1(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0xa0001f0000401000L, active11, 0x2000000000fL, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0x40003e0000401000L, active11, 0x4000000001fL, active12, 0L);
case 70:
case 102:
if ((active7 & 0x200L) != 0L)
@@ -973,14 +982,14 @@
jjmatchedKind = 457;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_1(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x1c00000000000L, active11, 0x80000080000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x3800000000000L, active11, 0x100000100000L, active12, 0L);
case 71:
case 103:
if ((active0 & 0x2000000000L) != 0L)
return jjStartNfaWithStates_1(2, 37, 97);
else if ((active4 & 0x200000000000L) != 0L)
return jjStartNfaWithStates_1(2, 301, 97);
- return jjMoveStringLiteralDfa3_1(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000L, active12, 0L);
case 72:
case 104:
return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x8020000000000L, active6, 0x4000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -988,7 +997,7 @@
case 105:
if ((active6 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_1(2, 432, 97);
- return jjMoveStringLiteralDfa3_1(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x22000c007e000L, active11, 0x200800L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x44000c007e000L, active11, 0x401000L, active12, 0L);
case 74:
case 106:
return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -1007,14 +1016,14 @@
jjmatchedKind = 545;
jjmatchedPos = 2;
}
- else if ((active11 & 0x1000L) != 0L)
- return jjStartNfaWithStates_1(2, 716, 97);
- return jjMoveStringLiteralDfa3_1(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x1c000000000000L, active11, 0xa82000000L, active12, 0L);
+ else if ((active11 & 0x2000L) != 0L)
+ return jjStartNfaWithStates_1(2, 717, 97);
+ return jjMoveStringLiteralDfa3_1(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x38000000000000L, active11, 0x1504000000L, active12, 0L);
case 77:
case 109:
if ((active9 & 0x10000000000L) != 0L)
return jjStartNfaWithStates_1(2, 616, 97);
- return jjMoveStringLiteralDfa3_1(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x8000020000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x10000040000L, active12, 0L);
case 78:
case 110:
if ((active5 & 0x800000L) != 0L)
@@ -1022,10 +1031,10 @@
jjmatchedKind = 343;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_1(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x2000008020L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x4000010040L, active12, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa3_1(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x200000L, active12, 0L);
case 80:
case 112:
if ((active3 & 0x4000L) != 0L)
@@ -1037,7 +1046,7 @@
return jjStartNfaWithStates_1(2, 250, 97);
else if ((active5 & 0x8L) != 0L)
return jjStartNfaWithStates_1(2, 323, 97);
- return jjMoveStringLiteralDfa3_1(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x2201000002L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x4201000002L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -1053,7 +1062,7 @@
jjmatchedKind = 422;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_1(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x1fe0000000000000L, active11, 0x4040000200L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x3fc0000000000000L, active11, 0x8080000400L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x10L) != 0L)
@@ -1061,7 +1070,7 @@
jjmatchedKind = 4;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_1(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x4002000000L, active11, 0x400000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x9002000000L, active11, 0x800000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x400000000000L) != 0L)
@@ -1087,7 +1096,7 @@
jjmatchedKind = 530;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_1(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x4000010001c0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x800002000380L, active12, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0x1000000000000L, active2, 0x4000000000000L, active3, 0x1800000100000008L, active4, 0L, active5, 0L, active6, 0L, active7, 0x780000000000L, active8, 0x10000000L, active9, 0x8000000000000L, active10, 0x180000L, active11, 0L, active12, 0L);
@@ -1113,7 +1122,7 @@
jjmatchedKind = 330;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L, active12, 0L);
case 89:
case 121:
if ((active0 & 0x40000L) != 0L)
@@ -1130,7 +1139,7 @@
jjmatchedKind = 297;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_1(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_1(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x20000000000L, active12, 0L);
case 90:
case 122:
return jjMoveStringLiteralDfa3_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -1153,15 +1162,15 @@
case 45:
return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 49:
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x800000000000L, active11, 0L);
- case 51:
return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1000000000000L, active11, 0L);
+ case 51:
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000000000L, active11, 0L);
case 56:
- if ((active10 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_1(3, 686, 97);
+ if ((active10 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 687, 97);
break;
case 95:
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0x60000000200002L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0xc0000000200002L, active11, 0x400000000000L);
case 65:
case 97:
if ((active2 & 0x40L) != 0L)
@@ -1171,14 +1180,14 @@
}
else if ((active4 & 0x20000000L) != 0L)
return jjStartNfaWithStates_1(3, 285, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x1400001000L, active11, 0x400041000000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x2400001000L, active11, 0x800082000000L);
case 66:
case 98:
if ((active0 & 0x800000000000L) != 0L)
return jjStartNfaWithStates_1(3, 47, 97);
else if ((active1 & 0x4000L) != 0L)
return jjStartNfaWithStates_1(3, 78, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000800000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000800000L, active11, 0L);
case 67:
case 99:
if ((active2 & 0x4000000000L) != 0L)
@@ -1191,7 +1200,7 @@
jjmatchedKind = 203;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_1(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x100000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_1(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x200000002000000L, active11, 0L);
case 68:
case 100:
if ((active3 & 0x200000000000000L) != 0L)
@@ -1206,9 +1215,9 @@
jjmatchedKind = 453;
jjmatchedPos = 3;
}
- else if ((active10 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_1(3, 689, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x20L);
+ else if ((active10 & 0x4000000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 690, 97);
+ return jjMoveStringLiteralDfa4_1(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x40L);
case 69:
case 101:
if ((active0 & 0x400000000000000L) != 0L)
@@ -1253,9 +1262,9 @@
return jjStartNfaWithStates_1(3, 659, 97);
else if ((active10 & 0x1000000L) != 0L)
return jjStartNfaWithStates_1(3, 664, 97);
- else if ((active11 & 0x8000L) != 0L)
- return jjStartNfaWithStates_1(3, 719, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0x6820000000L, active11, 0x20000000L);
+ else if ((active11 & 0x10000L) != 0L)
+ return jjStartNfaWithStates_1(3, 720, 97);
+ return jjMoveStringLiteralDfa4_1(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0xc820000000L, active11, 0x40000000L);
case 70:
case 102:
if ((active0 & 0x4000000L) != 0L)
@@ -1265,7 +1274,7 @@
break;
case 71:
case 103:
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x800001e000L, active11, 0x100000000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x1000001e000L, active11, 0x200000000L);
case 72:
case 104:
if ((active0 & 0x2000000000000L) != 0L)
@@ -1274,29 +1283,29 @@
return jjStartNfaWithStates_1(3, 185, 97);
else if ((active6 & 0x1000000000L) != 0L)
return jjStartNfaWithStates_1(3, 420, 97);
- else if ((active11 & 0x40L) != 0L)
+ else if ((active11 & 0x80L) != 0L)
{
- jjmatchedKind = 710;
+ jjmatchedKind = 711;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_1(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0xc00180L);
+ return jjMoveStringLiteralDfa4_1(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x1800300L);
case 73:
case 105:
- return jjMoveStringLiteralDfa4_1(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x200000200000004L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x400001200000004L, active11, 0x100100000L);
case 75:
case 107:
if ((active7 & 0x10L) != 0L)
return jjStartNfaWithStates_1(3, 452, 97);
else if ((active8 & 0x80L) != 0L)
return jjStartNfaWithStates_1(3, 519, 97);
- else if ((active10 & 0x8000000000000000L) != 0L)
+ else if ((active11 & 0x1L) != 0L)
{
- jjmatchedKind = 703;
+ jjmatchedKind = 704;
jjmatchedPos = 3;
}
- else if ((active11 & 0x200L) != 0L)
- return jjStartNfaWithStates_1(3, 713, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x40001L);
+ else if ((active11 & 0x400L) != 0L)
+ return jjStartNfaWithStates_1(3, 714, 97);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80002L);
case 76:
case 108:
if ((active0 & 0x20000000000000L) != 0L)
@@ -1318,9 +1327,9 @@
}
else if ((active7 & 0x80L) != 0L)
return jjStartNfaWithStates_1(3, 455, 97);
- else if ((active11 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_1(3, 739, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x100000000000L);
+ else if ((active11 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 740, 97);
+ return jjMoveStringLiteralDfa4_1(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x200000000000L);
case 77:
case 109:
if ((active3 & 0x2000000000L) != 0L)
@@ -1330,7 +1339,7 @@
jjmatchedKind = 657;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_1(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x200000L);
case 78:
case 110:
if ((active4 & 0x40000000L) != 0L)
@@ -1346,28 +1355,28 @@
return jjStartNfaWithStates_1(3, 431, 97);
else if ((active9 & 0x4000000000000L) != 0L)
return jjStartNfaWithStates_1(3, 626, 97);
- else if ((active11 & 0x2L) != 0L)
+ else if ((active11 & 0x4L) != 0L)
{
- jjmatchedKind = 705;
+ jjmatchedKind = 706;
jjmatchedPos = 3;
}
- else if ((active11 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_1(3, 740, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x4000200100100ff8L, active11, 0x10000000004L);
+ else if ((active11 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 741, 97);
+ return jjMoveStringLiteralDfa4_1(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x8000400100100ff8L, active11, 0x20000000008L);
case 79:
case 111:
if ((active3 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_1(3, 240, 97);
else if ((active4 & 0x800000L) != 0L)
return jjStartNfaWithStates_1(3, 279, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x200000000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x400000000L);
case 80:
case 112:
if ((active2 & 0x20000000000000L) != 0L)
return jjStartNfaWithStates_1(3, 181, 97);
else if ((active8 & 0x2000000L) != 0L)
return jjStartNfaWithStates_1(3, 537, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x800c020400L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x10018040800L);
case 81:
case 113:
return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000L, active11, 0L);
@@ -1393,17 +1402,17 @@
jjmatchedKind = 402;
jjmatchedPos = 3;
}
- else if ((active10 & 0x10000000000L) != 0L)
+ else if ((active10 & 0x20000000000L) != 0L)
{
- jjmatchedKind = 680;
+ jjmatchedKind = 681;
jjmatchedPos = 3;
}
- else if ((active11 & 0x2000L) != 0L)
+ else if ((active11 & 0x4000L) != 0L)
{
- jjmatchedKind = 717;
+ jjmatchedKind = 718;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_1(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x1e0000000000L, active11, 0xa0010004008L);
+ return jjMoveStringLiteralDfa4_1(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x3c0000000000L, active11, 0x140020008010L);
case 83:
case 115:
if ((active2 & 0x80000L) != 0L)
@@ -1414,7 +1423,7 @@
return jjStartNfaWithStates_1(3, 531, 97);
else if ((active9 & 0x10000000000000L) != 0L)
return jjStartNfaWithStates_1(3, 628, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x1800000000400000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x3000000000400000L, active11, 0x800000000L);
case 84:
case 116:
if ((active0 & 0x800000000000000L) != 0L)
@@ -1434,27 +1443,27 @@
return jjStartNfaWithStates_1(3, 419, 97);
else if ((active9 & 0x400000L) != 0L)
return jjStartNfaWithStates_1(3, 598, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x42000200810L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x84000401020L);
case 85:
case 117:
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x1c000000000000L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x38000000000000L, active11, 0x4000000L);
case 86:
case 118:
if ((active6 & 0x400000000000000L) != 0L)
return jjStartNfaWithStates_1(3, 442, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x4000000000L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x8000000000L);
case 87:
case 119:
if ((active8 & 0x200000L) != 0L)
return jjStartNfaWithStates_1(3, 533, 97);
- else if ((active10 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_1(3, 701, 97);
+ else if ((active10 & 0x4000000000000000L) != 0L)
+ return jjStartNfaWithStates_1(3, 702, 97);
return jjMoveStringLiteralDfa4_1(active0, 0x80000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
if ((active6 & 0x20L) != 0L)
return jjStartNfaWithStates_1(3, 389, 97);
- return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x400000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x800000000000000L, active11, 0L);
default :
break;
}
@@ -1472,18 +1481,18 @@
switch(curChar)
{
case 50:
+ if ((active10 & 0x2000000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 689, 97);
+ break;
+ case 54:
if ((active10 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_1(4, 688, 97);
break;
- case 54:
- if ((active10 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_1(4, 687, 97);
- break;
case 95:
- return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x1e0000040000L, active11, 0xd000000L);
+ return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x3c0000040000L, active11, 0x1a000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa5_1(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x200000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_1(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x400000002000000L, active11, 0L);
case 66:
case 98:
if ((active5 & 0x40000000000L) != 0L)
@@ -1491,9 +1500,9 @@
return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0x80L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000L, active8, 0x3e000000000L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- if ((active11 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_1(4, 744, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x200000000000L);
+ if ((active11 & 0x20000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 745, 97);
+ return jjMoveStringLiteralDfa5_1(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x400000000000L);
case 68:
case 100:
if ((active3 & 0x100000000L) != 0L)
@@ -1540,21 +1549,21 @@
jjmatchedKind = 622;
jjmatchedPos = 4;
}
- else if ((active10 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_1(4, 679, 97);
- else if ((active10 & 0x4000000000000L) != 0L)
+ else if ((active10 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 680, 97);
+ else if ((active10 & 0x8000000000000L) != 0L)
{
- jjmatchedKind = 690;
+ jjmatchedKind = 691;
jjmatchedPos = 4;
}
- else if ((active11 & 0x8L) != 0L)
- return jjStartNfaWithStates_1(4, 707, 97);
- else if ((active11 & 0x800L) != 0L)
+ else if ((active11 & 0x10L) != 0L)
+ return jjStartNfaWithStates_1(4, 708, 97);
+ else if ((active11 & 0x1000L) != 0L)
{
- jjmatchedKind = 715;
+ jjmatchedKind = 716;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_1(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x4018000000000000L, active11, 0x80002e00004L);
+ return jjMoveStringLiteralDfa5_1(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x8030000000000000L, active11, 0x100005c00008L);
case 70:
case 102:
if ((active2 & 0x1000000000L) != 0L)
@@ -1562,9 +1571,9 @@
return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0x60000L, active3, 0x1L, active4, 0L, active5, 0x10000000L, active6, 0L, active7, 0L, active8, 0x800000000000L, active9, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_1(4, 685, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e000L, active11, 0x200000000L);
+ if ((active10 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 686, 97);
+ return jjMoveStringLiteralDfa5_1(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100001e000L, active11, 0x400000000L);
case 72:
case 104:
if ((active2 & 0x800000000L) != 0L)
@@ -1583,10 +1592,10 @@
jjmatchedKind = 351;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000000L, active11, 0x10L);
+ return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000000L, active11, 0x20L);
case 73:
case 105:
- return jjMoveStringLiteralDfa5_1(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x1c80000000000000L, active11, 0x46100100080L);
+ return jjMoveStringLiteralDfa5_1(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x3900000000000000L, active11, 0x8c200200100L);
case 75:
case 107:
if ((active1 & 0x800L) != 0L)
@@ -1607,9 +1616,9 @@
jjmatchedKind = 317;
jjmatchedPos = 4;
}
- else if ((active11 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_1(4, 750, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x40020000L);
+ else if ((active11 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 751, 97);
+ return jjMoveStringLiteralDfa5_1(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x80040000L);
case 77:
case 109:
return jjMoveStringLiteralDfa5_1(active0, 0x80000000L, active1, 0x3000000L, active2, 0x1c0000000800000L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0x3f800000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0x408000000L, active11, 0L);
@@ -1626,10 +1635,10 @@
return jjStartNfaWithStates_1(4, 65, 97);
else if ((active10 & 0x40000000L) != 0L)
return jjStartNfaWithStates_1(4, 670, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa5_1(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x100100000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa5_1(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x120L);
+ return jjMoveStringLiteralDfa5_1(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x240L);
case 80:
case 112:
if ((active3 & 0x8000000000000L) != 0L)
@@ -1637,7 +1646,7 @@
jjmatchedKind = 243;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x20000000000000L, active11, 0x400L);
+ return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x40000000000000L, active11, 0x800L);
case 82:
case 114:
if ((active0 & 0x800L) != 0L)
@@ -1667,9 +1676,9 @@
return jjStartNfaWithStates_1(4, 444, 97);
else if ((active10 & 0x20000000L) != 0L)
return jjStartNfaWithStates_1(4, 669, 97);
- else if ((active10 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_1(4, 677, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x4000000000L, active11, 0L);
+ else if ((active10 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 678, 97);
+ return jjMoveStringLiteralDfa5_1(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x8000000000L, active11, 0L);
case 83:
case 115:
if ((active1 & 0x10000000000000L) != 0L)
@@ -1686,11 +1695,11 @@
return jjStartNfaWithStates_1(4, 454, 97);
else if ((active8 & 0x100000L) != 0L)
return jjStartNfaWithStates_1(4, 532, 97);
- else if ((active11 & 0x1L) != 0L)
- return jjStartNfaWithStates_1(4, 704, 97);
- else if ((active11 & 0x4000L) != 0L)
- return jjStartNfaWithStates_1(4, 718, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x40000800000ff8L, active11, 0L);
+ else if ((active11 & 0x2L) != 0L)
+ return jjStartNfaWithStates_1(4, 705, 97);
+ else if ((active11 & 0x8000L) != 0L)
+ return jjStartNfaWithStates_1(4, 719, 97);
+ return jjMoveStringLiteralDfa5_1(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x80000800000ff8L, active11, 0L);
case 84:
case 116:
if ((active1 & 0x1000000000000L) != 0L)
@@ -1723,10 +1732,10 @@
return jjStartNfaWithStates_1(4, 599, 97);
else if ((active10 & 0x1000L) != 0L)
return jjStartNfaWithStates_1(4, 652, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x1000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x2000000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x8000040000L);
+ return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x10000080000L);
case 86:
case 118:
return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0x2000000000L, active3, 0L, active4, 0L, active5, 0x8000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x300000L, active10, 0x200000000L, active11, 0L);
@@ -1734,11 +1743,11 @@
case 119:
if ((active0 & 0x4000L) != 0L)
return jjStartNfaWithStates_1(4, 14, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x800000000L);
case 88:
case 120:
- if ((active11 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_1(4, 733, 97);
+ if ((active11 & 0x40000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 734, 97);
return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
@@ -1753,9 +1762,9 @@
return jjStartNfaWithStates_1(4, 188, 97);
else if ((active3 & 0x40L) != 0L)
return jjStartNfaWithStates_1(4, 198, 97);
- else if ((active11 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_1(4, 745, 97);
- return jjMoveStringLiteralDfa5_1(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100010000000L);
+ else if ((active11 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_1(4, 746, 97);
+ return jjMoveStringLiteralDfa5_1(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200020000000L);
case 90:
case 122:
return jjMoveStringLiteralDfa5_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x6000000000000000L, active10, 0L, active11, 0L);
@@ -1776,7 +1785,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa6_1(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x10000000000000L, active11, 0x2e00010L);
+ return jjMoveStringLiteralDfa6_1(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x20000000000000L, active11, 0x5c00020L);
case 65:
case 97:
if ((active7 & 0x800000000000000L) != 0L)
@@ -1784,7 +1793,7 @@
jjmatchedKind = 507;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_1(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x140000000740078L, active11, 0x20000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x280000000740078L, active11, 0x40000L);
case 66:
case 98:
return jjMoveStringLiteralDfa6_1(active0, 0xc00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x40000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -1799,7 +1808,7 @@
return jjStartNfaWithStates_1(5, 447, 97);
else if ((active9 & 0x4000000L) != 0L)
return jjStartNfaWithStates_1(5, 602, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x4000100000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x8000200000L);
case 68:
case 100:
if ((active0 & 0x40000000000000L) != 0L)
@@ -1815,7 +1824,7 @@
jjmatchedKind = 515;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_1(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x1e0010000000L, active11, 0L);
+ return jjMoveStringLiteralDfa6_1(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x3c0010000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x4000000000L) != 0L)
@@ -1856,9 +1865,9 @@
return jjStartNfaWithStates_1(5, 663, 97);
else if ((active10 & 0x80000000L) != 0L)
return jjStartNfaWithStates_1(5, 671, 97);
- else if ((active10 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_1(5, 676, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x80000400L);
+ else if ((active10 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 677, 97);
+ return jjMoveStringLiteralDfa6_1(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x100000800L);
case 70:
case 102:
if ((active5 & 0x80000000000000L) != 0L)
@@ -1868,20 +1877,20 @@
case 103:
if ((active3 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_1(5, 247, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x200000000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x400000000L);
case 72:
case 104:
if ((active4 & 0x40000000000000L) != 0L)
return jjStartNfaWithStates_1(5, 310, 97);
else if ((active8 & 0x4L) != 0L)
return jjStartNfaWithStates_1(5, 514, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 73:
case 105:
- return jjMoveStringLiteralDfa6_1(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x100000L);
case 75:
case 107:
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x4000000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x8000000L);
case 76:
case 108:
if ((active3 & 0x400000000000L) != 0L)
@@ -1890,7 +1899,7 @@
return jjStartNfaWithStates_1(5, 416, 97);
else if ((active8 & 0x2L) != 0L)
return jjStartNfaWithStates_1(5, 513, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x40000000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x80000000L);
case 77:
case 109:
if ((active9 & 0x20000000L) != 0L)
@@ -1924,17 +1933,17 @@
jjmatchedKind = 478;
jjmatchedPos = 5;
}
- else if ((active11 & 0x80L) != 0L)
- return jjStartNfaWithStates_1(5, 711, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0x680000004000000L, active11, 0x2100000000L);
+ else if ((active11 & 0x100L) != 0L)
+ return jjStartNfaWithStates_1(5, 712, 97);
+ return jjMoveStringLiteralDfa6_1(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0xd00001004000000L, active11, 0x4200000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa6_1(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x1820000200000000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x3040000200000000L, active11, 0x800000000L);
case 80:
case 112:
if ((active7 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_1(5, 490, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x10040000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x20080000L);
case 81:
case 113:
return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -1958,7 +1967,7 @@
jjmatchedKind = 526;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_1(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x2000000L);
case 83:
case 115:
if ((active0 & 0x10000L) != 0L)
@@ -1975,9 +1984,9 @@
return jjStartNfaWithStates_1(5, 382, 97);
else if ((active6 & 0x4000L) != 0L)
return jjStartNfaWithStates_1(5, 398, 97);
- else if ((active10 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_1(5, 691, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x4000000000000000L, active11, 0xc0000000000L);
+ else if ((active10 & 0x10000000000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 692, 97);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x8000000000000000L, active11, 0x180000000000L);
case 84:
case 116:
if ((active0 & 0x20L) != 0L)
@@ -2014,21 +2023,21 @@
return jjStartNfaWithStates_1(5, 611, 97);
else if ((active10 & 0x800000000L) != 0L)
return jjStartNfaWithStates_1(5, 675, 97);
- else if ((active10 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_1(5, 678, 97);
- return jjMoveStringLiteralDfa6_1(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x8000000000L);
+ else if ((active10 & 0x8000000000L) != 0L)
+ return jjStartNfaWithStates_1(5, 679, 97);
+ return jjMoveStringLiteralDfa6_1(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x10000000000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa6_1(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x100L);
+ return jjMoveStringLiteralDfa6_1(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x200L);
case 86:
case 118:
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x8000004L);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x10000008L);
case 87:
case 119:
if ((active4 & 0x4000000L) != 0L)
return jjStartNfaWithStates_1(5, 282, 97);
- else if ((active11 & 0x20L) != 0L)
- return jjStartNfaWithStates_1(5, 709, 97);
+ else if ((active11 & 0x40L) != 0L)
+ return jjStartNfaWithStates_1(5, 710, 97);
return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0x20000L, active3, 0x8000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000L, active11, 0L);
case 88:
case 120:
@@ -2046,7 +2055,7 @@
return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0x40000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000000L);
+ return jjMoveStringLiteralDfa6_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
default :
break;
}
@@ -2068,13 +2077,13 @@
return jjStartNfaWithStates_1(6, 464, 97);
break;
case 95:
- return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x100000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa7_1(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x80000000000e00L, active11, 0x200008000000L);
+ return jjMoveStringLiteralDfa7_1(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x100000000000e00L, active11, 0x400010000000L);
case 66:
case 98:
- return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x20L);
case 67:
case 99:
if ((active2 & 0x40000000000000L) != 0L)
@@ -2097,7 +2106,7 @@
return jjStartNfaWithStates_1(6, 325, 97);
else if ((active10 & 0x400000000L) != 0L)
return jjStartNfaWithStates_1(6, 674, 97);
- return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x4000000004000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x8000000004000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x100000000000000L) != 0L)
@@ -2135,13 +2144,13 @@
}
else if ((active10 & 0x2000000L) != 0L)
return jjStartNfaWithStates_1(6, 665, 97);
- else if ((active11 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_1(6, 742, 97);
else if ((active11 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_1(6, 743, 97);
- else if ((active11 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_1(6, 748, 97);
- return jjMoveStringLiteralDfa7_1(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x1e0000000000L, active11, 0x45000004L);
+ else if ((active11 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 744, 97);
+ else if ((active11 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 749, 97);
+ return jjMoveStringLiteralDfa7_1(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x3c1000000000L, active11, 0x8a000008L);
case 70:
case 102:
return jjMoveStringLiteralDfa7_1(active0, 0x10000000000L, active1, 0x1000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -2164,21 +2173,21 @@
return jjStartNfaWithStates_1(6, 430, 97);
else if ((active7 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_1(6, 499, 97);
- else if ((active10 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_1(6, 698, 97);
- else if ((active11 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_1(6, 736, 97);
- return jjMoveStringLiteralDfa7_1(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
+ else if ((active10 & 0x800000000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 699, 97);
+ else if ((active11 & 0x200000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 737, 97);
+ return jjMoveStringLiteralDfa7_1(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x800000L);
case 72:
case 104:
if ((active0 & 0x4000000000000L) != 0L)
return jjStartNfaWithStates_1(6, 50, 97);
- else if ((active11 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_1(6, 747, 97);
+ else if ((active11 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 748, 97);
return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa7_1(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x200100000L);
+ return jjMoveStringLiteralDfa7_1(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x400200000L);
case 76:
case 108:
if ((active2 & 0x800000L) != 0L)
@@ -2204,7 +2213,7 @@
return jjMoveStringLiteralDfa7_1(active0, 0x40000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400L, active5, 0x2048000000000000L, active6, 0x2000L, active7, 0x20000L, active8, 0L, active9, 0x4L, active10, 0L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa7_1(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x40000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_1(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x80000000000000L, active11, 0L);
case 78:
case 110:
if ((active0 & 0x80000000000L) != 0L)
@@ -2230,19 +2239,19 @@
}
else if ((active10 & 0x100000000L) != 0L)
return jjStartNfaWithStates_1(6, 672, 97);
- else if ((active10 & 0x800000000000000L) != 0L)
+ else if ((active10 & 0x1000000000000000L) != 0L)
{
- jjmatchedKind = 699;
+ jjmatchedKind = 700;
jjmatchedPos = 6;
}
- return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x1000000000000004L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x2000000000000004L, active11, 0x1000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x10000000000180L, active11, 0L);
+ return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x20000000000180L, active11, 0L);
case 80:
case 112:
- if ((active10 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_1(6, 693, 97);
+ if ((active10 & 0x40000000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 694, 97);
return jjMoveStringLiteralDfa7_1(active0, 0x20000000000L, active1, 0x2800000000000L, active2, 0x30000000000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0x80000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
@@ -2268,11 +2277,11 @@
jjmatchedKind = 653;
jjmatchedPos = 6;
}
- else if ((active10 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_1(6, 696, 97);
- else if ((active11 & 0x400L) != 0L)
- return jjStartNfaWithStates_1(6, 714, 97);
- return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x400000000L);
+ else if ((active10 & 0x200000000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 697, 97);
+ else if ((active11 & 0x800L) != 0L)
+ return jjStartNfaWithStates_1(6, 715, 97);
+ return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x800000000L);
case 83:
case 115:
if ((active5 & 0x40L) != 0L)
@@ -2285,9 +2294,9 @@
return jjStartNfaWithStates_1(6, 484, 97);
else if ((active8 & 0x10L) != 0L)
return jjStartNfaWithStates_1(6, 516, 97);
- else if ((active11 & 0x40000L) != 0L)
- return jjStartNfaWithStates_1(6, 722, 97);
- return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x200000L);
+ else if ((active11 & 0x80000L) != 0L)
+ return jjStartNfaWithStates_1(6, 723, 97);
+ return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x400000L);
case 84:
case 116:
if ((active1 & 0x800000L) != 0L)
@@ -2328,14 +2337,14 @@
return jjStartNfaWithStates_1(6, 639, 97);
else if ((active10 & 0x200000000L) != 0L)
return jjStartNfaWithStates_1(6, 673, 97);
- else if ((active10 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_1(6, 697, 97);
- else if ((active11 & 0x100L) != 0L)
- return jjStartNfaWithStates_1(6, 712, 97);
- return jjMoveStringLiteralDfa7_1(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x400120a0000L);
+ else if ((active10 & 0x400000000000000L) != 0L)
+ return jjStartNfaWithStates_1(6, 698, 97);
+ else if ((active11 & 0x200L) != 0L)
+ return jjStartNfaWithStates_1(6, 713, 97);
+ return jjMoveStringLiteralDfa7_1(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x80024140000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa7_1(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa7_1(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x4000000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa7_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0x200000000000000L, active7, 0x203000L, active8, 0L, active9, 0L, active10, 0x2L, active11, 0L);
@@ -2377,7 +2386,7 @@
return jjMoveStringLiteralDfa8_1(active0, 0x2000000000000000L, active1, 0xff0000000c000000L, active2, 0x180000000000007L, active3, 0L, active4, 0L, active5, 0x70000L, active6, 0x40000000000L, active7, 0x700000000000L, active8, 0x20000L, active9, 0xffc00L, active10, 0x1c000L, active11, 0L);
case 65:
case 97:
- return jjMoveStringLiteralDfa8_1(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x4000000000000000L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa8_1(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x8000000000000000L, active11, 0x1000000L);
case 66:
case 98:
if ((active8 & 0x10000000000L) != 0L)
@@ -2401,8 +2410,10 @@
return jjStartNfaWithStates_1(7, 57, 97);
else if ((active2 & 0x10000000L) != 0L)
return jjStartNfaWithStates_1(7, 156, 97);
- else if ((active11 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_1(7, 738, 97);
+ else if ((active10 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_1(7, 676, 97);
+ else if ((active11 & 0x800000000L) != 0L)
+ return jjStartNfaWithStates_1(7, 739, 97);
return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40000780000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -2452,14 +2463,14 @@
}
else if ((active10 & 0x100000L) != 0L)
return jjStartNfaWithStates_1(7, 660, 97);
- else if ((active11 & 0x20000L) != 0L)
- return jjStartNfaWithStates_1(7, 721, 97);
- return jjMoveStringLiteralDfa8_1(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x10000000L);
+ else if ((active11 & 0x40000L) != 0L)
+ return jjStartNfaWithStates_1(7, 722, 97);
+ return jjMoveStringLiteralDfa8_1(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x20000000L);
case 70:
case 102:
- if ((active10 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_1(7, 692, 97);
- return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ if ((active10 & 0x20000000000000L) != 0L)
+ return jjStartNfaWithStates_1(7, 693, 97);
+ return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active2 & 0x2000000000000000L) != 0L)
@@ -2470,7 +2481,7 @@
return jjStartNfaWithStates_1(7, 395, 97);
else if ((active10 & 0x4L) != 0L)
return jjStartNfaWithStates_1(7, 642, 97);
- return jjMoveStringLiteralDfa8_1(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa8_1(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x2000000L);
case 72:
case 104:
if ((active2 & 0x400000000000L) != 0L)
@@ -2478,7 +2489,7 @@
return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x100000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa8_1(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x1000000000000000L, active11, 0x40000000000L);
+ return jjMoveStringLiteralDfa8_1(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x2000000000000000L, active11, 0x80000000000L);
case 74:
case 106:
return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -2497,9 +2508,9 @@
return jjStartNfaWithStates_1(7, 359, 97);
else if ((active9 & 0x20L) != 0L)
return jjStartNfaWithStates_1(7, 581, 97);
- else if ((active11 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_1(7, 734, 97);
- return jjMoveStringLiteralDfa8_1(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x8000000L);
+ else if ((active11 & 0x80000000L) != 0L)
+ return jjStartNfaWithStates_1(7, 735, 97);
+ return jjMoveStringLiteralDfa8_1(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x10000000L);
case 77:
case 109:
return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0L, active3, 0x1L, active4, 0xc000000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f01000000000000L, active10, 0L, active11, 0L);
@@ -2512,22 +2523,22 @@
jjmatchedKind = 434;
jjmatchedPos = 7;
}
- return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x200200000000L);
+ return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x400400000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa8_1(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa8_1(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x4000000000L);
case 80:
case 112:
- if ((active10 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_1(7, 694, 97);
+ if ((active10 & 0x80000000000000L) != 0L)
+ return jjStartNfaWithStates_1(7, 695, 97);
return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0x8000000L, active10, 0L, active11, 0L);
case 82:
case 114:
if ((active8 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_1(7, 554, 97);
- else if ((active11 & 0x4L) != 0L)
- return jjStartNfaWithStates_1(7, 706, 97);
- return jjMoveStringLiteralDfa8_1(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x80000000040180L, active11, 0x400000L);
+ else if ((active11 & 0x8L) != 0L)
+ return jjStartNfaWithStates_1(7, 707, 97);
+ return jjMoveStringLiteralDfa8_1(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x100000000040180L, active11, 0x800000L);
case 83:
case 115:
if ((active1 & 0x40000000000L) != 0L)
@@ -2549,7 +2560,7 @@
return jjStartNfaWithStates_1(7, 450, 97);
else if ((active9 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_1(7, 615, 97);
- return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x100000000L);
case 84:
case 116:
if ((active2 & 0x800000000000L) != 0L)
@@ -2562,10 +2573,10 @@
return jjStartNfaWithStates_1(7, 538, 97);
else if ((active10 & 0x200000L) != 0L)
return jjStartNfaWithStates_1(7, 661, 97);
- return jjMoveStringLiteralDfa8_1(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa8_1(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x200000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x20L);
case 86:
case 118:
return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100L, active8, 0x400L, active9, 0L, active10, 0L, active11, 0L);
@@ -2595,9 +2606,9 @@
return jjStartNfaWithStates_1(7, 518, 97);
else if ((active9 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_1(7, 627, 97);
- else if ((active11 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_1(7, 730, 97);
- return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x2280000L);
+ else if ((active11 & 0x8000000L) != 0L)
+ return jjStartNfaWithStates_1(7, 731, 97);
+ return jjMoveStringLiteralDfa8_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x4500000L);
case 90:
case 122:
return jjMoveStringLiteralDfa8_1(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x3000000000000L, active6, 0L, active7, 0L, active8, 0x2000L, active9, 0L, active10, 0L, active11, 0L);
@@ -2618,7 +2629,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x100000L);
case 65:
case 97:
return jjMoveStringLiteralDfa9_1(active0, 0x11000000000L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0x300020000L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0xa000L, active9, 0x10000000L, active10, 0x40000L, active11, 0L);
@@ -2631,7 +2642,7 @@
case 99:
if ((active9 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_1(8, 618, 97);
- return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x40000000010L);
+ return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x80000000020L);
case 68:
case 100:
if ((active1 & 0x20000000L) != 0L)
@@ -2640,8 +2651,8 @@
return jjStartNfaWithStates_1(8, 235, 97);
else if ((active10 & 0x4000000L) != 0L)
return jjStartNfaWithStates_1(8, 666, 97);
- else if ((active11 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_1(8, 732, 97);
+ else if ((active11 & 0x20000000L) != 0L)
+ return jjStartNfaWithStates_1(8, 733, 97);
return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x600000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x400L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -2709,9 +2720,9 @@
jjmatchedKind = 613;
jjmatchedPos = 8;
}
- else if ((active11 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_1(8, 737, 97);
- return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x200000000000L);
+ else if ((active11 & 0x400000000L) != 0L)
+ return jjStartNfaWithStates_1(8, 738, 97);
+ return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x400000000000L);
case 72:
case 104:
return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x201000L, active10, 0L, active11, 0L);
@@ -2719,7 +2730,7 @@
case 105:
if ((active0 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_1(8, 42, 97);
- return jjMoveStringLiteralDfa9_1(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x1e0010000878L, active11, 0x81000000L);
+ return jjMoveStringLiteralDfa9_1(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x3c0010000878L, active11, 0x102000000L);
case 75:
case 107:
if ((active2 & 0x20000L) != 0L)
@@ -2735,7 +2746,7 @@
jjmatchedKind = 647;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x1000000L);
case 78:
case 110:
if ((active0 & 0x20000000L) != 0L)
@@ -2758,10 +2769,10 @@
return jjStartNfaWithStates_1(8, 415, 97);
else if ((active6 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_1(8, 439, 97);
- return jjMoveStringLiteralDfa9_1(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x1000000000008000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa9_1(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x2000000000008000L, active11, 0x400000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x800000L);
case 80:
case 112:
if ((active1 & 0x2000000000000L) != 0L)
@@ -2771,7 +2782,7 @@
jjmatchedKind = 632;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x4000000L);
case 81:
case 113:
return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0L);
@@ -2823,7 +2834,7 @@
return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0x8000020000000000L, active2, 0x100003L, active3, 0L, active4, 0x200004L, active5, 0x40000L, active6, 0x2000L, active7, 0x4000000000000000L, active8, 0x500000000L, active9, 0x1000000000L, active10, 0x8000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x2008000000L);
+ return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x4010000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa9_1(active0, 0x10000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0L);
@@ -2847,12 +2858,12 @@
return jjStartNfaWithStates_1(8, 461, 97);
else if ((active9 & 0x2000000000000L) != 0L)
return jjStartNfaWithStates_1(8, 625, 97);
- else if ((active10 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_1(8, 695, 97);
- else if ((active10 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_1(8, 702, 97);
- else if ((active11 & 0x100000L) != 0L)
- return jjStartNfaWithStates_1(8, 724, 97);
+ else if ((active10 & 0x100000000000000L) != 0L)
+ return jjStartNfaWithStates_1(8, 696, 97);
+ else if ((active10 & 0x8000000000000000L) != 0L)
+ return jjStartNfaWithStates_1(8, 703, 97);
+ else if ((active11 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_1(8, 725, 97);
return jjMoveStringLiteralDfa9_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x80000L, active10, 0L, active11, 0L);
default :
break;
@@ -2886,7 +2897,7 @@
return jjStartNfaWithStates_1(9, 138, 97);
else if ((active9 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_1(9, 631, 97);
- return jjMoveStringLiteralDfa10_1(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa10_1(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 68:
case 100:
if ((active5 & 0x4000000000L) != 0L)
@@ -2920,13 +2931,13 @@
return jjStartNfaWithStates_1(9, 612, 97);
else if ((active9 & 0x800000000000L) != 0L)
return jjStartNfaWithStates_1(9, 623, 97);
- else if ((active11 & 0x800000L) != 0L)
- return jjStartNfaWithStates_1(9, 727, 97);
- else if ((active11 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_1(9, 729, 97);
- else if ((active11 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_1(9, 731, 97);
- return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x200000000000L);
+ else if ((active11 & 0x1000000L) != 0L)
+ return jjStartNfaWithStates_1(9, 728, 97);
+ else if ((active11 & 0x4000000L) != 0L)
+ return jjStartNfaWithStates_1(9, 730, 97);
+ else if ((active11 & 0x10000000L) != 0L)
+ return jjStartNfaWithStates_1(9, 732, 97);
+ return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x400000000000L);
case 71:
case 103:
if ((active6 & 0x200000L) != 0L)
@@ -2935,8 +2946,8 @@
return jjStartNfaWithStates_1(9, 548, 97);
else if ((active9 & 0x40000000L) != 0L)
return jjStartNfaWithStates_1(9, 606, 97);
- else if ((active10 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_1(9, 700, 97);
+ else if ((active10 & 0x2000000000000000L) != 0L)
+ return jjStartNfaWithStates_1(9, 701, 97);
return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x2000000000000000L, active6, 0x400000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
@@ -2948,7 +2959,7 @@
case 107:
if ((active2 & 0x400000000L) != 0L)
return jjStartNfaWithStates_1(9, 162, 97);
- return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80010L);
+ return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100020L);
case 76:
case 108:
return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2L, active5, 0L, active6, 0L, active7, 0x100000000L, active8, 0L, active9, 0x1000000000000L, active10, 0L, active11, 0L);
@@ -2964,10 +2975,10 @@
jjmatchedKind = 98;
jjmatchedPos = 9;
}
- return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x3c0000000000L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x2000000L);
case 80:
case 112:
if ((active1 & 0x4000000000000L) != 0L)
@@ -2998,10 +3009,10 @@
return jjStartNfaWithStates_1(9, 458, 97);
else if ((active10 & 0x100L) != 0L)
return jjStartNfaWithStates_1(9, 648, 97);
- else if ((active11 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_1(9, 741, 97);
- else if ((active11 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_1(9, 746, 97);
+ else if ((active11 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_1(9, 742, 97);
+ else if ((active11 & 0x80000000000L) != 0L)
+ return jjStartNfaWithStates_1(9, 747, 97);
return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0x80000000000L, active2, 0x40000000004L, active3, 0L, active4, 0x8000000000000000L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
@@ -3021,7 +3032,7 @@
return jjMoveStringLiteralDfa10_1(active0, 0x80021000000000L, active1, 0x1e000000008L, active2, 0x8000L, active3, 0x2L, active4, 0x400000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100L, active10, 0L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x800000L);
case 86:
case 118:
return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -3048,7 +3059,7 @@
return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x200000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa10_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L);
default :
break;
}
@@ -3085,7 +3096,7 @@
return jjStartNfaWithStates_1(10, 341, 97);
else if ((active10 & 0x8000000L) != 0L)
return jjStartNfaWithStates_1(10, 667, 97);
- return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x400000000000L);
case 69:
case 101:
if ((active0 & 0x10000000000L) != 0L)
@@ -3106,9 +3117,9 @@
return jjStartNfaWithStates_1(10, 620, 97);
else if ((active9 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_1(10, 624, 97);
- else if ((active11 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_1(10, 735, 97);
- return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x1e0000000000L, active11, 0x80010L);
+ else if ((active11 & 0x100000000L) != 0L)
+ return jjStartNfaWithStates_1(10, 736, 97);
+ return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x3c0000000000L, active11, 0x100020L);
case 70:
case 102:
return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -3123,7 +3134,7 @@
return jjStartNfaWithStates_1(10, 67, 97);
else if ((active6 & 0x400000000L) != 0L)
return jjStartNfaWithStates_1(10, 418, 97);
- return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 73:
case 105:
return jjMoveStringLiteralDfa11_1(active0, 0x21000000000L, active1, 0x800000002000L, active2, 0x1000L, active3, 0x2L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0L, active8, 0L, active9, 0x4400000000000000L, active10, 0L, active11, 0L);
@@ -3150,8 +3161,8 @@
}
else if ((active10 & 0x800L) != 0L)
return jjStartNfaWithStates_1(10, 651, 97);
- else if ((active11 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_1(10, 728, 97);
+ else if ((active11 & 0x2000000L) != 0L)
+ return jjStartNfaWithStates_1(10, 729, 97);
return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0x10c200000L, active2, 0x180000000006000L, active3, 0L, active4, 0L, active5, 0x10000L, active6, 0x40002000000L, active7, 0L, active8, 0L, active9, 0xc040L, active10, 0x10000070L, active11, 0L);
case 79:
case 111:
@@ -3160,8 +3171,8 @@
case 112:
if ((active9 & 0x10000000L) != 0L)
return jjStartNfaWithStates_1(10, 604, 97);
- else if ((active11 & 0x400000L) != 0L)
- return jjStartNfaWithStates_1(10, 726, 97);
+ else if ((active11 & 0x800000L) != 0L)
+ return jjStartNfaWithStates_1(10, 727, 97);
return jjMoveStringLiteralDfa11_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 81:
case 113:
@@ -3237,7 +3248,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa12_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa12_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 65:
case 97:
if ((active8 & 0x1L) != 0L)
@@ -3253,7 +3264,7 @@
case 100:
if ((active9 & 0x200000000000000L) != 0L)
return jjStartNfaWithStates_1(11, 633, 97);
- return jjMoveStringLiteralDfa12_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa12_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x2000000000000000L) != 0L)
@@ -3338,7 +3349,7 @@
return jjStartNfaWithStates_1(11, 588, 97);
else if ((active9 & 0x80000L) != 0L)
return jjStartNfaWithStates_1(11, 595, 97);
- return jjMoveStringLiteralDfa12_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa12_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x400000L);
case 83:
case 115:
return jjMoveStringLiteralDfa12_1(active0, 0L, active1, 0x8000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x70L, active11, 0L);
@@ -3350,16 +3361,16 @@
return jjStartNfaWithStates_1(11, 338, 97);
else if ((active9 & 0x40L) != 0L)
return jjStartNfaWithStates_1(11, 582, 97);
- else if ((active11 & 0x10L) != 0L)
- return jjStartNfaWithStates_1(11, 708, 97);
+ else if ((active11 & 0x20L) != 0L)
+ return jjStartNfaWithStates_1(11, 709, 97);
return jjMoveStringLiteralDfa12_1(active0, 0x20000800000L, active1, 0x200L, active2, 0x6000L, active3, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x8000L, active10, 0L, active11, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa12_1(active0, 0L, active1, 0x100000000L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2000000000004000L, active10, 0L, active11, 0L);
case 89:
case 121:
- if ((active11 & 0x80000L) != 0L)
- return jjStartNfaWithStates_1(11, 723, 97);
+ if ((active11 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_1(11, 724, 97);
break;
default :
break;
@@ -3378,7 +3389,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa13_1(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x1e0000000070L, active11, 0L);
+ return jjMoveStringLiteralDfa13_1(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x3c0000000070L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa13_1(active0, 0L, active1, 0x6800000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -3434,12 +3445,12 @@
return jjMoveStringLiteralDfa13_1(active0, 0L, active1, 0x20L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x20000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa13_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa13_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x400000L);
case 80:
case 112:
if ((active9 & 0x100L) != 0L)
return jjStartNfaWithStates_1(12, 584, 97);
- return jjMoveStringLiteralDfa13_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa13_1(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 82:
case 114:
if ((active9 & 0x2000000000000000L) != 0L)
@@ -3485,7 +3496,7 @@
return jjStartNfaWithStates_1(13, 494, 97);
else if ((active10 & 0x10000L) != 0L)
return jjStartNfaWithStates_1(13, 656, 97);
- return jjMoveStringLiteralDfa14_1(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa14_1(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 66:
case 98:
return jjMoveStringLiteralDfa14_1(active0, 0L, active1, 0x100000000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -3538,7 +3549,7 @@
case 110:
if ((active4 & 0x4L) != 0L)
return jjStartNfaWithStates_1(13, 258, 97);
- return jjMoveStringLiteralDfa14_1(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa14_1(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa14_1(active0, 0x20000000000L, active1, 0x100000000000000L, active2, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0L, active10, 0x4000L, active11, 0L);
@@ -3559,7 +3570,7 @@
case 116:
if ((active7 & 0x8000L) != 0L)
return jjStartNfaWithStates_1(13, 463, 97);
- return jjMoveStringLiteralDfa14_1(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa14_1(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 88:
case 120:
if ((active6 & 0x8000000000000L) != 0L)
@@ -3626,7 +3637,7 @@
break;
case 73:
case 105:
- return jjMoveStringLiteralDfa15_1(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa15_1(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa15_1(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -3653,7 +3664,7 @@
return jjStartNfaWithStates_1(14, 575, 97);
else if ((active9 & 0x10000L) != 0L)
return jjStartNfaWithStates_1(14, 592, 97);
- return jjMoveStringLiteralDfa15_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa15_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 83:
case 115:
if ((active1 & 0x200L) != 0L)
@@ -3678,7 +3689,7 @@
break;
case 89:
case 121:
- return jjMoveStringLiteralDfa15_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa15_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
default :
break;
}
@@ -3745,7 +3756,7 @@
return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 82:
case 114:
if ((active1 & 0x100000000L) != 0L)
@@ -3755,7 +3766,7 @@
return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xe0000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -3769,7 +3780,7 @@
return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa16_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
default :
break;
}
@@ -3792,12 +3803,12 @@
case 97:
if ((active1 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_1(16, 103, 97);
- return jjMoveStringLiteralDfa17_1(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa17_1(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
if ((active7 & 0x400000000L) != 0L)
return jjStartNfaWithStates_1(16, 482, 97);
- return jjMoveStringLiteralDfa17_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa17_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x100000L) != 0L)
@@ -3808,7 +3819,7 @@
return jjMoveStringLiteralDfa17_1(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa17_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa17_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 76:
case 108:
return jjMoveStringLiteralDfa17_1(active0, 0L, active1, 0L, active2, 0x6000L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0L, active10, 0x40L, active11, 0L);
@@ -3872,7 +3883,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa18_1(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa18_1(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa18_1(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -3908,7 +3919,7 @@
return jjMoveStringLiteralDfa18_1(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa18_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa18_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 86:
case 118:
return jjMoveStringLiteralDfa18_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0L);
@@ -3935,7 +3946,7 @@
return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x60000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0xc0000000000L, active11, 0L);
case 68:
case 100:
if ((active8 & 0x800000000000000L) != 0L)
@@ -3960,7 +3971,7 @@
return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa19_1(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa19_1(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -3969,7 +3980,7 @@
return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
case 79:
case 111:
return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -3978,7 +3989,7 @@
return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0x4000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000L, active11, 0L);
case 84:
case 116:
return jjMoveStringLiteralDfa19_1(active0, 0L, active1, 0L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0x80000000L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x20L, active11, 0L);
@@ -4004,10 +4015,10 @@
case 97:
if ((active1 & 0x100L) != 0L)
return jjStartNfaWithStates_1(19, 72, 97);
- return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0xa0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0x140000000000L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x200000000000L, active11, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -4021,7 +4032,7 @@
return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0x10000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x40000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x80000000000L, active11, 0x400000400000L);
case 82:
case 114:
return jjMoveStringLiteralDfa20_1(active0, 0L, active1, 0L, active2, 0x4002L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -4065,7 +4076,7 @@
return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0x20000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x80000000000L, active11, 0L);
case 69:
case 101:
if ((active1 & 0x8000000L) != 0L)
@@ -4082,13 +4093,13 @@
case 104:
if ((active7 & 0x200000000L) != 0L)
return jjStartNfaWithStates_1(20, 481, 97);
- return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x200000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x100000000000L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0x2L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -4097,7 +4108,7 @@
return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0x400000000000000L, active2, 0L, active6, 0x4000000L, active7, 0L, active8, 0x10000000000000L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_1(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x40000000000L, active11, 0L);
case 89:
case 121:
if ((active0 & 0x1000000L) != 0L)
@@ -4120,10 +4131,10 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa22_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa22_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa22_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000040L, active11, 0L);
+ return jjMoveStringLiteralDfa22_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000040L, active11, 0L);
case 67:
case 99:
return jjMoveStringLiteralDfa22_1(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -4136,11 +4147,11 @@
case 101:
if ((active2 & 0x2000L) != 0L)
return jjStartNfaWithStates_1(21, 141, 97);
- else if ((active10 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_1(21, 682, 97);
else if ((active10 & 0x80000000000L) != 0L)
return jjStartNfaWithStates_1(21, 683, 97);
- return jjMoveStringLiteralDfa22_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x100000000000L, active11, 0L);
+ else if ((active10 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_1(21, 684, 97);
+ return jjMoveStringLiteralDfa22_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x200000000000L, active11, 0L);
case 70:
case 102:
return jjMoveStringLiteralDfa22_1(active1, 0x400000000000000L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -4199,10 +4210,10 @@
return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x100000000000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x200000000000L, active11, 0x400000L);
case 78:
case 110:
return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x8000000000000L, active10, 0L, active11, 0L);
@@ -4214,7 +4225,7 @@
return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa23_1(active1, 0L, active2, 0L, active6, 0x4000000L, active8, 0L, active10, 0L, active11, 0L);
@@ -4241,8 +4252,8 @@
return jjMoveStringLiteralDfa24_1(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 65:
case 97:
- if ((active10 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_1(23, 684, 97);
+ if ((active10 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_1(23, 685, 97);
break;
case 67:
case 99:
@@ -4266,7 +4277,7 @@
return jjMoveStringLiteralDfa24_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x2040000000000000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa24_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x20000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa24_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x40000000000L, active11, 0x400000400000L);
case 82:
case 114:
if ((active8 & 0x4000000000000L) != 0L)
@@ -4301,7 +4312,7 @@
break;
case 68:
case 100:
- return jjMoveStringLiteralDfa25_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa25_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
return jjMoveStringLiteralDfa25_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x200000000000000L, active10, 0L, active11, 0L);
@@ -4310,8 +4321,8 @@
return jjMoveStringLiteralDfa25_1(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_1(24, 681, 97);
+ if ((active10 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_1(24, 682, 97);
break;
case 73:
case 105:
@@ -4333,7 +4344,7 @@
return jjMoveStringLiteralDfa25_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa25_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa25_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -4364,8 +4375,8 @@
case 101:
if ((active8 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_1(25, 563, 97);
- else if ((active11 & 0x200000L) != 0L)
- return jjStartNfaWithStates_1(25, 725, 97);
+ else if ((active11 & 0x400000L) != 0L)
+ return jjStartNfaWithStates_1(25, 726, 97);
break;
case 71:
case 103:
@@ -4387,7 +4398,7 @@
return jjMoveStringLiteralDfa26_1(active1, 0L, active2, 0x4002L, active6, 0L, active8, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa26_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa26_1(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa26_1(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active11, 0L);
@@ -4408,7 +4419,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa27_1(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa27_1(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 68:
case 100:
if ((active8 & 0x80000000000000L) != 0L)
@@ -4456,7 +4467,7 @@
return jjMoveStringLiteralDfa28_1(active1, 0L, active2, 0L, active8, 0x200000000000000L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa28_1(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa28_1(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 82:
case 114:
return jjMoveStringLiteralDfa28_1(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -4483,7 +4494,7 @@
break;
case 69:
case 101:
- return jjMoveStringLiteralDfa29_1(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa29_1(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 79:
case 111:
return jjMoveStringLiteralDfa29_1(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -4508,7 +4519,7 @@
{
case 82:
case 114:
- return jjMoveStringLiteralDfa30_1(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa30_1(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa30_1(active1, 0x400000000000000L, active2, 0L, active11, 0L);
@@ -4533,7 +4544,7 @@
{
case 67:
case 99:
- return jjMoveStringLiteralDfa31_1(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa31_1(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 80:
case 112:
if ((active1 & 0x400000000000000L) != 0L)
@@ -4559,7 +4570,7 @@
case 101:
if ((active2 & 0x2L) != 0L)
return jjStartNfaWithStates_1(31, 129, 97);
- return jjMoveStringLiteralDfa32_1(active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa32_1(active2, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -4578,7 +4589,7 @@
{
case 78:
case 110:
- return jjMoveStringLiteralDfa33_1(active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa33_1(active11, 0x400000000000L);
default :
break;
}
@@ -4597,8 +4608,8 @@
{
case 84:
case 116:
- if ((active11 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_1(33, 749, 97);
+ if ((active11 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_1(33, 750, 97);
break;
default :
break;
@@ -4692,8 +4703,8 @@
jjCheckNAddTwoStates(56, 57);
else if (curChar == 7)
{
- if (kind > 826)
- kind = 826;
+ if (kind > 829)
+ kind = 829;
}
else if (curChar == 34)
jjCheckNAddTwoStates(30, 32);
@@ -4701,14 +4712,14 @@
jjstateSet[jjnewStateCnt++] = 23;
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(9, 15);
}
else if (curChar == 36)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -4721,8 +4732,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -4735,8 +4746,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -4751,8 +4762,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -4775,8 +4786,8 @@
jjstateSet[jjnewStateCnt++] = 67;
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -4785,8 +4796,8 @@
case 92:
if (curChar == 47)
{
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
}
else if (curChar == 42)
@@ -4801,8 +4812,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -4823,8 +4834,8 @@
jjCheckNAddStates(32, 34);
else if (curChar == 39)
{
- if (kind > 758)
- kind = 758;
+ if (kind > 759)
+ kind = 759;
}
if ((0xfc00f7faffffc9ffL & l) != 0L)
jjstateSet[jjnewStateCnt++] = 64;
@@ -4834,8 +4845,8 @@
case 98:
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(57);
}
if ((0x3ff000000000000L & l) != 0L)
@@ -4860,8 +4871,8 @@
jjstateSet[jjnewStateCnt++] = 3;
break;
case 5:
- if (curChar == 39 && kind > 757)
- kind = 757;
+ if (curChar == 39 && kind > 758)
+ kind = 758;
break;
case 7:
if ((0x3ff000000000000L & l) != 0L)
@@ -4885,8 +4896,8 @@
jjstateSet[jjnewStateCnt++] = 11;
break;
case 13:
- if (curChar == 39 && kind > 759)
- kind = 759;
+ if (curChar == 39 && kind > 760)
+ kind = 760;
break;
case 17:
if ((0xffffff7fffffffffL & l) != 0L)
@@ -4904,30 +4915,30 @@
jjstateSet[jjnewStateCnt++] = 20;
break;
case 22:
- if (curChar == 39 && kind > 761)
- kind = 761;
+ if (curChar == 39 && kind > 762)
+ kind = 762;
break;
case 23:
if (curChar != 45)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
case 24:
if ((0xffffffffffffdbffL & l) == 0L)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
case 25:
- if ((0x2400L & l) != 0L && kind > 812)
- kind = 812;
+ if ((0x2400L & l) != 0L && kind > 815)
+ kind = 815;
break;
case 26:
- if (curChar == 10 && kind > 812)
- kind = 812;
+ if (curChar == 10 && kind > 815)
+ kind = 815;
break;
case 27:
if (curChar == 13)
@@ -4954,21 +4965,21 @@
jjstateSet[jjnewStateCnt++] = 31;
break;
case 33:
- if (curChar == 34 && kind > 817)
- kind = 817;
+ if (curChar == 34 && kind > 820)
+ kind = 820;
break;
case 34:
if (curChar != 36)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -4986,8 +4997,8 @@
case 39:
if (curChar != 36)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAddTwoStates(39, 40);
break;
case 40:
@@ -4997,26 +5008,26 @@
case 41:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAdd(41);
break;
case 42:
- if (curChar == 7 && kind > 826)
- kind = 826;
+ if (curChar == 7 && kind > 829)
+ kind = 829;
break;
case 43:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(9, 15);
break;
case 44:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAdd(44);
break;
case 45:
@@ -5030,8 +5041,8 @@
case 48:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 752)
- kind = 752;
+ if (kind > 753)
+ kind = 753;
jjCheckNAdd(48);
break;
case 49:
@@ -5045,22 +5056,22 @@
case 51:
if (curChar != 46)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
break;
case 52:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
break;
case 53:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAddStates(35, 37);
break;
case 54:
@@ -5078,8 +5089,8 @@
case 57:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(57);
break;
case 58:
@@ -5099,12 +5110,12 @@
jjstateSet[jjnewStateCnt++] = 60;
break;
case 62:
- if (curChar == 39 && kind > 758)
- kind = 758;
+ if (curChar == 39 && kind > 759)
+ kind = 759;
break;
case 64:
- if (curChar == 39 && kind > 765)
- kind = 765;
+ if (curChar == 39 && kind > 766)
+ kind = 766;
break;
case 67:
case 69:
@@ -5120,8 +5131,8 @@
jjstateSet[jjnewStateCnt++] = 69;
break;
case 71:
- if (curChar == 39 && kind > 760)
- kind = 760;
+ if (curChar == 39 && kind > 761)
+ kind = 761;
break;
case 72:
if (curChar == 38)
@@ -5144,8 +5155,8 @@
jjstateSet[jjnewStateCnt++] = 75;
break;
case 77:
- if (curChar == 34 && kind > 823)
- kind = 823;
+ if (curChar == 34 && kind > 826)
+ kind = 826;
break;
case 79:
if (curChar == 32)
@@ -5172,14 +5183,14 @@
jjstateSet[jjnewStateCnt++] = 91;
break;
case 91:
- if ((0xffff7fffffffffffL & l) != 0L && kind > 810)
- kind = 810;
+ if ((0xffff7fffffffffffL & l) != 0L && kind > 813)
+ kind = 813;
break;
case 93:
if (curChar != 47)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
default : break;
@@ -5200,8 +5211,8 @@
jjAddStates(48, 55);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if ((0x20000000200000L & l) != 0L)
@@ -5222,8 +5233,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -5234,8 +5245,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -5246,8 +5257,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -5262,8 +5273,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -5274,8 +5285,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -5286,13 +5297,13 @@
jjstateSet[jjnewStateCnt++] = 85;
else if ((0x1000000010L & l) != 0L)
{
- if (kind > 768)
- kind = 768;
+ if (kind > 769)
+ kind = 769;
}
if ((0x10000000100000L & l) != 0L)
{
- if (kind > 769)
- kind = 769;
+ if (kind > 770)
+ kind = 770;
}
break;
case 63:
@@ -5343,22 +5354,22 @@
jjCheckNAddStates(28, 31);
break;
case 24:
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(25, 27);
break;
case 34:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -5368,15 +5379,15 @@
case 39:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(58, 59);
break;
case 41:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 41;
break;
case 46:
@@ -5401,32 +5412,32 @@
jjAddStates(48, 55);
break;
case 80:
- if ((0x1000000010L & l) != 0L && kind > 768)
- kind = 768;
+ if ((0x1000000010L & l) != 0L && kind > 769)
+ kind = 769;
break;
case 82:
- if ((0x10000000100000L & l) != 0L && kind > 769)
- kind = 769;
+ if ((0x10000000100000L & l) != 0L && kind > 770)
+ kind = 770;
break;
case 84:
if ((0x10000000100000L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 85;
break;
case 85:
- if ((0x8000000080000L & l) != 0L && kind > 770)
- kind = 770;
+ if ((0x8000000080000L & l) != 0L && kind > 771)
+ kind = 771;
break;
case 87:
if ((0x4000000040L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 88;
break;
case 88:
- if ((0x400000004000L & l) != 0L && kind > 771)
- kind = 771;
+ if ((0x400000004000L & l) != 0L && kind > 772)
+ kind = 772;
break;
case 91:
- if (kind > 810)
- kind = 810;
+ if (kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -5446,8 +5457,8 @@
case 0:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -5456,8 +5467,8 @@
case 1:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -5468,8 +5479,8 @@
case 97:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -5480,8 +5491,8 @@
case 95:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -5497,8 +5508,8 @@
case 66:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -5509,8 +5520,8 @@
case 16:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -5545,22 +5556,22 @@
case 24:
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(25, 27);
break;
case 34:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -5570,15 +5581,15 @@
case 39:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(58, 59);
break;
case 41:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 41;
break;
case 59:
@@ -5594,8 +5605,8 @@
jjAddStates(45, 47);
break;
case 91:
- if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 810)
- kind = 810;
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -5619,205 +5630,205 @@
switch (pos)
{
case 0:
- if ((active2 & 0xfe00000000000000L) != 0L || (active3 & 0x7ffffL) != 0L || (active11 & 0x10000000L) != 0L)
- {
- jjmatchedKind = 821;
- return 16;
- }
- if ((active12 & 0x10L) != 0L)
+ if ((active12 & 0x20L) != 0L)
return 94;
- if ((active12 & 0x20000000L) != 0L)
+ if ((active12 & 0x40000000L) != 0L)
return 63;
- if ((active5 & 0x7fffff000000000L) != 0L || (active11 & 0x200000000L) != 0L)
+ if ((active12 & 0x480002000000L) != 0L)
+ return 92;
+ if ((active5 & 0x7fffff000000000L) != 0L || (active11 & 0x400000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 95;
}
- if ((active12 & 0x90001000000L) != 0L)
- return 92;
- if ((active11 & 0x1000L) != 0L)
+ if ((active11 & 0x2000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 1;
}
- if ((active12 & 0x40L) != 0L)
+ if ((active12 & 0x80L) != 0L)
return 96;
- if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0x1ffffffffffffc0L) != 0L || (active3 & 0xff8001fffff80000L) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xf800000000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffc000001ffffffL) != 0L || (active11 & 0x4e55ef27efffL) != 0L)
+ if ((active2 & 0xfe00000000000000L) != 0L || (active3 & 0x7ffffL) != 0L || (active11 & 0x20000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
+ return 16;
+ }
+ if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x635001b00000L) != 0L || (active12 & 0x1000000000L) != 0L)
+ return 97;
+ if ((active12 & 0x20000400L) != 0L)
+ return 98;
+ if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0x1ffffffffffffc0L) != 0L || (active3 & 0xff8001fffff80000L) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xf800000000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfff8000001ffffffL) != 0L || (active11 & 0x9cabde4fdfffL) != 0L)
+ {
+ jjmatchedKind = 824;
return 97;
}
- if ((active10 & 0x3fffffe000000L) != 0L)
+ if ((active10 & 0x7fffffe000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 66;
}
- if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x31a800d80000L) != 0L || (active12 & 0x200000000L) != 0L)
- return 97;
- if ((active12 & 0x10000200L) != 0L)
- return 98;
- if ((active12 & 0x600000L) != 0L)
+ if ((active12 & 0xc00000L) != 0L)
return 23;
return -1;
case 1:
- if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x3efd5feeffffL) != 0L)
+ if ((active12 & 0x480000000000L) != 0L)
+ return 90;
+ if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x820540220000L) != 0L)
+ return 97;
+ if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x7dfabfddffffL) != 0L)
{
if (jjmatchedPos != 1)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 1;
}
return 97;
}
- if ((active12 & 0x90000000000L) != 0L)
- return 90;
- if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x4102a0110000L) != 0L)
- return 97;
return -1;
case 2:
- if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0x57fffffeefffL) != 0L)
+ if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x500000002000L) != 0L)
+ return 97;
+ if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0xaffffffddfffL) != 0L)
{
if (jjmatchedPos != 2)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 2;
}
return 97;
}
- if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x280000001000L) != 0L)
- return 97;
return -1;
case 3:
- if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0xa0025f00010e0000L) != 0L || (active11 & 0x180100e3c7L) != 0L)
- return 97;
- if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0x5ffda0fffef1fffeL) != 0L || (active11 & 0x7fe7fefe0c38L) != 0L)
+ if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0xbffb41fffef1fffeL) != 0L || (active11 & 0xffcffdfc1870L) != 0L)
{
if (jjmatchedPos != 3)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 3;
}
return 97;
}
+ if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0x4004be00010e0000L) != 0L || (active11 & 0x300201c78fL) != 0L)
+ return 97;
if ((active2 & 0x8000000000000000L) != 0L)
return 99;
return -1;
case 4:
- if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x1da0a060001000L) != 0L || (active11 & 0x430022204809L) != 0L)
- return 97;
- if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0x5fe01e5f9ef5effeL) != 0L || (active11 & 0x3ce7ddde05b4L) != 0L)
+ if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0xbfc03cbf9ef5effeL) != 0L || (active11 & 0x79cfbbbc0b68L) != 0L)
{
if (jjmatchedPos != 4)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 4;
}
return 97;
}
+ if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x3b414060001000L) != 0L || (active11 & 0x860044409012L) != 0L)
+ return 97;
if ((active2 & 0x8000000000000000L) != 0L)
return 99;
return -1;
case 5:
- if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0x5ff01e071e75effeL) != 0L || (active11 & 0x3ce7dfee0514L) != 0L)
+ if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x1000a880800000L) != 0L || (active11 & 0x200140L) != 0L)
+ return 97;
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 99;
+ if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0xbfe03c171e75effeL) != 0L || (active11 & 0x79cfbfdc0a28L) != 0L)
{
if (jjmatchedPos != 5)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 5;
}
return 97;
}
- if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x8005880800000L) != 0L || (active11 & 0x1000a0L) != 0L)
- return 97;
- if ((active2 & 0x8000000000000000L) != 0L)
- return 99;
return -1;
case 6:
- if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x1f2000070241e000L) != 0L || (active11 & 0x18c100040500L) != 0L)
+ if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x3e4000070241e000L) != 0L || (active11 & 0x318200080a00L) != 0L)
return 97;
- if ((active2 & 0x8000000000000000L) != 0L)
- return 99;
- if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x40d01e001c340ffeL) != 0L || (active11 & 0x2426dffa0014L) != 0L)
+ if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x81a03c101c340ffeL) != 0L || (active11 & 0x484dbff40028L) != 0L)
{
if (jjmatchedPos != 6)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 6;
}
return 97;
}
- return -1;
- case 7:
- if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0x50000000300004L) != 0L || (active11 & 0x444020004L) != 0L)
- return 97;
if ((active2 & 0x8000000000000000L) != 0L)
return 99;
- if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0x50801e001c05cffaL) != 0L || (active11 & 0x24229bf80010L) != 0L)
+ return -1;
+ case 7:
+ if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0xa1003c001c05cffaL) != 0L || (active11 & 0x484537f00020L) != 0L)
{
if (jjmatchedPos != 7)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 7;
}
return 97;
}
+ if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0xa0001000300004L) != 0L || (active11 & 0x888040008L) != 0L)
+ return 97;
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 99;
return -1;
case 8:
- if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x10001e001805c87aL) != 0L || (active11 & 0x24208be80010L) != 0L)
+ if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x20003c001805c87aL) != 0L || (active11 & 0x484117d00020L) != 0L)
{
if (jjmatchedPos != 8)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 8;
}
return 97;
}
- if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x4080000004000780L) != 0L || (active11 & 0x210100000L) != 0L)
+ if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x8100000004000780L) != 0L || (active11 & 0x420200000L) != 0L)
return 97;
return -1;
case 9:
- if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x1e001801cc7aL) != 0L || (active11 & 0x200081680010L) != 0L)
+ if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x2000000000040100L) != 0L || (active11 & 0x84015000000L) != 0L)
+ return 97;
+ if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x3c001801cc7aL) != 0L || (active11 & 0x400102d00020L) != 0L)
{
if (jjmatchedPos != 9)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 9;
}
return 97;
}
- if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x1000000000040100L) != 0L || (active11 & 0x4200a800000L) != 0L)
- return 97;
return -1;
case 10:
- if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x81400000L) != 0L)
+ if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x102800000L) != 0L)
return 97;
- if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x1e001001c402L) != 0L || (active11 & 0x200000280010L) != 0L)
+ if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x3c001001c402L) != 0L || (active11 & 0x400000500020L) != 0L)
{
if (jjmatchedPos != 10)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 10;
}
return 97;
}
return -1;
case 11:
- if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x1e0010014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x3c0010014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 11)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 11;
}
return 97;
}
- if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x80010L) != 0L)
+ if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x100020L) != 0L)
return 97;
return -1;
case 12:
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x1e0000014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x3c0000014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 12;
return 97;
}
@@ -5827,9 +5838,9 @@
case 13:
if ((active1 & 0x4000000000200000L) != 0L || (active2 & 0x8000L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x10000L) != 0L || (active6 & 0x8000003000000L) != 0L || (active7 & 0x4000400000008000L) != 0L || (active9 & 0x800000000024000L) != 0L || (active10 & 0x10000L) != 0L)
return 97;
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x1e0000004472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x3c0000004472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 13;
return 97;
}
@@ -5837,19 +5848,19 @@
case 14:
if ((active0 & 0x20000000000L) != 0L || (active1 & 0x100084800000200L) != 0L || (active5 & 0x280L) != 0L || (active6 & 0x30000000000L) != 0L || (active7 & 0x100100000000L) != 0L || (active8 & 0x8000000000000000L) != 0L || (active9 & 0x5000004200010000L) != 0L || (active10 & 0x4402L) != 0L)
return 97;
- if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 14;
return 97;
}
return -1;
case 15:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 15)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 15;
}
return 97;
@@ -5858,11 +5869,11 @@
return 97;
return -1;
case 16:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 16)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 16;
}
return 97;
@@ -5873,9 +5884,9 @@
case 17:
if ((active1 & 0x2000000080L) != 0L || (active8 & 0x400000000000000L) != 0L)
return 97;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 17;
return 97;
}
@@ -5883,20 +5894,20 @@
case 18:
if ((active8 & 0xb00000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x10L) != 0L)
return 97;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 18)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 18;
}
return 97;
}
return -1;
case 19:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 19;
return 97;
}
@@ -5906,27 +5917,27 @@
case 20:
if ((active0 & 0x1000000L) != 0L || (active1 & 0x8000040L) != 0L || (active2 & 0x100000000000000L) != 0L || (active7 & 0x200000000L) != 0L)
return 97;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 20;
return 97;
}
return -1;
case 21:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 21;
return 97;
}
- if ((active2 & 0x2000L) != 0L || (active10 & 0xc0000000020L) != 0L)
+ if ((active2 & 0x2000L) != 0L || (active10 & 0x180000000020L) != 0L)
return 97;
return -1;
case 22:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 22;
return 97;
}
@@ -5934,39 +5945,39 @@
return 97;
return -1;
case 23:
- if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x100000000040L) != 0L)
+ if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x200000000040L) != 0L)
return 97;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x20000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x40000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 23;
return 97;
}
return -1;
case 24:
- if ((active6 & 0x20000000L) != 0L || (active10 & 0x20000000000L) != 0L)
+ if ((active6 & 0x20000000L) != 0L || (active10 & 0x40000000000L) != 0L)
return 97;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 24;
return 97;
}
return -1;
case 25:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 25;
return 97;
}
- if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x200000L) != 0L)
+ if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x400000L) != 0L)
return 97;
return -1;
case 26:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 26;
return 97;
}
@@ -5974,9 +5985,9 @@
return 97;
return -1;
case 27:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 27;
return 97;
}
@@ -5984,17 +5995,17 @@
case 28:
if ((active8 & 0x200000000000000L) != 0L)
return 97;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 28;
return 97;
}
return -1;
case 29:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 29;
return 97;
}
@@ -6002,17 +6013,17 @@
case 30:
if ((active1 & 0x400000000000000L) != 0L)
return 97;
- if ((active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 30;
return 97;
}
return -1;
case 31:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 31;
return 97;
}
@@ -6020,9 +6031,9 @@
return 97;
return -1;
case 32:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 32;
return 97;
}
@@ -6049,74 +6060,76 @@
{
case 33:
jjmatchedKind = 1;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000L);
case 34:
- return jjStopAtPos(0, 798);
+ return jjStopAtPos(0, 799);
case 36:
- return jjStartNfaWithStates_0(0, 801, 97);
+ return jjStartNfaWithStates_0(0, 804, 97);
case 37:
- return jjStopAtPos(0, 793);
+ return jjStopAtPos(0, 794);
+ case 38:
+ return jjStopAtPos(0, 802);
case 39:
- return jjStartNfaWithStates_0(0, 797, 63);
+ return jjStartNfaWithStates_0(0, 798, 63);
case 40:
- return jjStopAtPos(0, 766);
- case 41:
return jjStopAtPos(0, 767);
+ case 41:
+ return jjStopAtPos(0, 768);
case 42:
- jjmatchedKind = 791;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000000L);
- case 43:
- return jjStopAtPos(0, 788);
- case 44:
- return jjStopAtPos(0, 778);
- case 45:
- jjmatchedKind = 789;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000L);
- case 46:
- jjmatchedKind = 777;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
- case 47:
jjmatchedKind = 792;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x90000000000L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000000L);
+ case 43:
+ return jjStopAtPos(0, 789);
+ case 44:
+ return jjStopAtPos(0, 779);
+ case 45:
+ jjmatchedKind = 790;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000L);
+ case 46:
+ jjmatchedKind = 778;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L);
+ case 47:
+ jjmatchedKind = 793;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x480000000000L);
case 58:
- jjmatchedKind = 783;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L);
+ jjmatchedKind = 784;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000000L);
case 59:
- return jjStopAtPos(0, 776);
+ return jjStopAtPos(0, 777);
case 60:
- jjmatchedKind = 781;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x50000L);
+ jjmatchedKind = 782;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000a0000L);
case 61:
- jjmatchedKind = 779;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
- case 62:
jjmatchedKind = 780;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
+ case 62:
+ jjmatchedKind = 781;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L);
case 63:
- return jjStopAtPos(0, 782);
+ return jjStopAtPos(0, 783);
case 91:
- return jjStartNfaWithStates_0(0, 774, 96);
+ return jjStartNfaWithStates_0(0, 775, 96);
case 93:
- return jjStopAtPos(0, 775);
+ return jjStopAtPos(0, 776);
case 94:
- return jjStopAtPos(0, 800);
+ return jjStopAtPos(0, 801);
case 65:
case 97:
jjmatchedKind = 3;
- return jjMoveStringLiteralDfa1_0(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x110000180000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x220000300000L, 0x0L);
case 66:
case 98:
- return jjMoveStringLiteralDfa1_0(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L, 0x0L);
case 67:
case 99:
jjmatchedKind = 52;
- return jjMoveStringLiteralDfa1_0(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa000c00000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x14001800000L, 0x0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000L, 0x0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L, 0x0L);
case 70:
case 102:
return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x1fffff80000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
@@ -6129,67 +6142,67 @@
return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x1f80000000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa0010000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x140020000L, 0x0L);
case 74:
case 106:
return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0xffe0000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 75:
case 107:
jjmatchedKind = 296;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000000L, 0x0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
case 77:
case 109:
jjmatchedKind = 322;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x200000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x400000000000L, 0x0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L, 0x0L);
case 79:
case 111:
return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xf800000000000000L, 0x3fffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x440000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x880000000L, 0x0L);
case 81:
case 113:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x20000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x40000000000L, 0x0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x80000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x100000000000L, 0x0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x45000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x8a000000000L, 0x0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x400000020000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x800000040000L, 0x0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3fffffe000000L, 0x0L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffffe000000L, 0x0L, 0x0L);
case 86:
case 118:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3ffc000000000000L, 0x2000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7ff8000000000000L, 0x4000000L, 0x0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000000000000000L, 0xc200fffL, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000000000000L, 0x18401fffL, 0x0L);
case 88:
case 120:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000L, 0x0L);
case 89:
case 121:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x6000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000L, 0x0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000L, 0x0L);
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000L, 0x0L);
case 123:
- return jjStartNfaWithStates_0(0, 772, 94);
+ return jjStartNfaWithStates_0(0, 773, 94);
case 124:
- jjmatchedKind = 799;
- return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x4000000L);
+ jjmatchedKind = 800;
+ return jjMoveStringLiteralDfa1_0(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
case 125:
- return jjStopAtPos(0, 773);
+ return jjStopAtPos(0, 774);
case 126:
return jjStopAtPos(0, 2);
default :
@@ -6206,55 +6219,59 @@
switch(curChar)
{
case 42:
- if ((active12 & 0x80000000000L) != 0L)
+ if ((active12 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 811;
+ jjmatchedKind = 814;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x10000000000L);
+ return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x80000000000L);
case 46:
- if ((active12 & 0x10000000L) != 0L)
- return jjStopAtPos(1, 796);
+ if ((active12 & 0x20000000L) != 0L)
+ return jjStopAtPos(1, 797);
break;
case 47:
- if ((active12 & 0x20000000000L) != 0L)
- return jjStopAtPos(1, 809);
+ if ((active12 & 0x100000000000L) != 0L)
+ return jjStopAtPos(1, 812);
break;
case 58:
- if ((active12 & 0x400000000L) != 0L)
- return jjStopAtPos(1, 802);
+ if ((active12 & 0x2000000000L) != 0L)
+ return jjStopAtPos(1, 805);
+ break;
+ case 60:
+ if ((active12 & 0x800000000L) != 0L)
+ return jjStopAtPos(1, 803);
break;
case 61:
- if ((active12 & 0x10000L) != 0L)
- return jjStopAtPos(1, 784);
- else if ((active12 & 0x20000L) != 0L)
+ if ((active12 & 0x20000L) != 0L)
return jjStopAtPos(1, 785);
- else if ((active12 & 0x80000L) != 0L)
- return jjStopAtPos(1, 787);
+ else if ((active12 & 0x40000L) != 0L)
+ return jjStopAtPos(1, 786);
+ else if ((active12 & 0x100000L) != 0L)
+ return jjStopAtPos(1, 788);
break;
case 62:
- if ((active12 & 0x40000L) != 0L)
- return jjStopAtPos(1, 786);
- else if ((active12 & 0x400000L) != 0L)
- return jjStopAtPos(1, 790);
- else if ((active12 & 0x8000000L) != 0L)
- return jjStopAtPos(1, 795);
+ if ((active12 & 0x80000L) != 0L)
+ return jjStopAtPos(1, 787);
+ else if ((active12 & 0x800000L) != 0L)
+ return jjStopAtPos(1, 791);
+ else if ((active12 & 0x10000000L) != 0L)
+ return jjStopAtPos(1, 796);
break;
case 65:
case 97:
- return jjMoveStringLiteralDfa2_0(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0x7fc000000000000L, active11, 0x200443c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0xff8000000000000L, active11, 0x400887880000L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa2_0(active0, 0x70L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa2_0(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x1000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x2000000000L, active12, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa2_0(active0, 0x700L, active1, 0L, active2, 0L, active3, 0x2000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa2_0(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xd800000002000000L, active11, 0x84000026001L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xb000000002000000L, active11, 0x10800004c003L, active12, 0L);
case 70:
case 102:
if ((active5 & 0x8000000000000000L) != 0L)
@@ -6262,18 +6279,18 @@
jjmatchedKind = 383;
jjmatchedPos = 1;
}
- else if ((active11 & 0x10000L) != 0L)
- return jjStartNfaWithStates_0(1, 720, 97);
- return jjMoveStringLiteralDfa2_0(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000L, active12, 0L);
+ else if ((active11 & 0x20000L) != 0L)
+ return jjStartNfaWithStates_0(1, 721, 97);
+ return jjMoveStringLiteralDfa2_0(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
case 71:
case 103:
return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 72:
case 104:
- return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0xeL, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0x1cL, active12, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa2_0(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x2000000000000000L, active11, 0x8000001f0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x4000000000000000L, active11, 0x10000003e0L, active12, 0L);
case 75:
case 107:
return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -6282,7 +6299,7 @@
return jjMoveStringLiteralDfa2_0(active0, 0x80000001f000L, active1, 0xf000L, active2, 0xc00000000000000L, active3, 0x8000400006000000L, active4, 0L, active5, 0L, active6, 0x1c00000000002L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x1000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x2000L, active12, 0L);
case 78:
case 110:
if ((active4 & 0x10L) != 0L)
@@ -6297,7 +6314,7 @@
jjmatchedKind = 387;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_0(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0xffc000000L, active11, 0x1000b0000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1ffc000000L, active11, 0x200160000000L, active12, 0L);
case 79:
case 111:
if ((active3 & 0x800000000000L) != 0L)
@@ -6315,10 +6332,10 @@
jjmatchedKind = 640;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_0(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x40a300008200L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x814600010400L, active12, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa2_0(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0x7000000000L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0xe000000000L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x8L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xfffffffe00000000L, active9, 0x7fffffL, active10, 0L, active11, 0L, active12, 0L);
@@ -6329,7 +6346,7 @@
jjmatchedKind = 393;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_0(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0xc200c00L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0x18401800L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x2000000L) != 0L)
@@ -6342,7 +6359,7 @@
jjmatchedKind = 281;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_0(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3f8000000000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x7f0000000000L, active11, 0x20000000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x100000000L) != 0L)
@@ -6350,10 +6367,10 @@
jjmatchedKind = 32;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_0(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x1c00000000000L, active11, 0x40000100000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x3800000000000L, active11, 0x80000200000L, active12, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa2_0(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x2000000c00000L, active11, 0x20000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_0(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x4000000c00000L, active11, 0x40000000000L, active12, 0L);
case 86:
case 118:
return jjMoveStringLiteralDfa2_0(active0, 0x2000000000L, active1, 0L, active2, 0L, active3, 0x40L, active4, 0L, active5, 0L, active6, 0x3c0000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -6366,8 +6383,8 @@
return jjStartNfaWithStates_0(1, 51, 97);
return jjMoveStringLiteralDfa2_0(active0, 0L, active1, 0L, active2, 0x1c0000000000020L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x3c0000000000L, active10, 0x1000000L, active11, 0L, active12, 0L);
case 124:
- if ((active12 & 0x4000000L) != 0L)
- return jjStopAtPos(1, 794);
+ if ((active12 & 0x8000000L) != 0L)
+ return jjStopAtPos(1, 795);
break;
default :
break;
@@ -6386,14 +6403,14 @@
switch(curChar)
{
case 43:
- if ((active12 & 0x10000000000L) != 0L)
- return jjStopAtPos(2, 808);
+ if ((active12 & 0x80000000000L) != 0L)
+ return jjStopAtPos(2, 811);
break;
case 65:
case 97:
if ((active0 & 0x100L) != 0L)
return jjStartNfaWithStates_0(2, 8, 97);
- return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x8000000ffcL, active11, 0x14100c006400L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x10000000ffcL, active11, 0x28201800c800L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x20000000020000L, active2, 0L, active3, 0L, active4, 0x100100000000000L, active5, 0L, active6, 0x8000000000000000L, active7, 0L, active8, 0L, active9, 0x1c07e00000000L, active10, 0x4000000L, active11, 0L, active12, 0L);
@@ -6406,7 +6423,7 @@
jjmatchedKind = 149;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x10c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x21880000L, active12, 0L);
case 68:
case 100:
if ((active0 & 0x200L) != 0L)
@@ -6427,14 +6444,14 @@
return jjStartNfaWithStates_0(2, 385, 97);
else if ((active6 & 0x400000L) != 0L)
return jjStartNfaWithStates_0(2, 406, 97);
- return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x4000001020000000L, active11, 0x20000010L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x8000002020000000L, active11, 0x40000020L, active12, 0L);
case 69:
case 101:
if ((active0 & 0x100000L) != 0L)
return jjStartNfaWithStates_0(2, 20, 97);
else if ((active6 & 0x10L) != 0L)
return jjStartNfaWithStates_0(2, 388, 97);
- return jjMoveStringLiteralDfa3_0(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0xa0001f0000401000L, active11, 0x2000000000fL, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0x40003e0000401000L, active11, 0x4000000001fL, active12, 0L);
case 70:
case 102:
if ((active7 & 0x200L) != 0L)
@@ -6442,14 +6459,14 @@
jjmatchedKind = 457;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_0(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x1c00000000000L, active11, 0x80000080000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x3800000000000L, active11, 0x100000100000L, active12, 0L);
case 71:
case 103:
if ((active0 & 0x2000000000L) != 0L)
return jjStartNfaWithStates_0(2, 37, 97);
else if ((active4 & 0x200000000000L) != 0L)
return jjStartNfaWithStates_0(2, 301, 97);
- return jjMoveStringLiteralDfa3_0(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000L, active12, 0L);
case 72:
case 104:
return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x8020000000000L, active6, 0x4000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -6457,7 +6474,7 @@
case 105:
if ((active6 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_0(2, 432, 97);
- return jjMoveStringLiteralDfa3_0(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x22000c007e000L, active11, 0x200800L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x44000c007e000L, active11, 0x401000L, active12, 0L);
case 74:
case 106:
return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -6476,14 +6493,14 @@
jjmatchedKind = 545;
jjmatchedPos = 2;
}
- else if ((active11 & 0x1000L) != 0L)
- return jjStartNfaWithStates_0(2, 716, 97);
- return jjMoveStringLiteralDfa3_0(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x1c000000000000L, active11, 0xa82000000L, active12, 0L);
+ else if ((active11 & 0x2000L) != 0L)
+ return jjStartNfaWithStates_0(2, 717, 97);
+ return jjMoveStringLiteralDfa3_0(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x38000000000000L, active11, 0x1504000000L, active12, 0L);
case 77:
case 109:
if ((active9 & 0x10000000000L) != 0L)
return jjStartNfaWithStates_0(2, 616, 97);
- return jjMoveStringLiteralDfa3_0(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x8000020000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x10000040000L, active12, 0L);
case 78:
case 110:
if ((active5 & 0x800000L) != 0L)
@@ -6491,10 +6508,10 @@
jjmatchedKind = 343;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x2000008020L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x4000010040L, active12, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa3_0(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x200000L, active12, 0L);
case 80:
case 112:
if ((active3 & 0x4000L) != 0L)
@@ -6506,7 +6523,7 @@
return jjStartNfaWithStates_0(2, 250, 97);
else if ((active5 & 0x8L) != 0L)
return jjStartNfaWithStates_0(2, 323, 97);
- return jjMoveStringLiteralDfa3_0(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x2201000002L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x4201000002L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -6522,7 +6539,7 @@
jjmatchedKind = 422;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_0(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x1fe0000000000000L, active11, 0x4040000200L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x3fc0000000000000L, active11, 0x8080000400L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x10L) != 0L)
@@ -6530,7 +6547,7 @@
jjmatchedKind = 4;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_0(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x4002000000L, active11, 0x400000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x9002000000L, active11, 0x800000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x400000000000L) != 0L)
@@ -6556,7 +6573,7 @@
jjmatchedKind = 530;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_0(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x4000010001c0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x800002000380L, active12, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0x1000000000000L, active2, 0x4000000000000L, active3, 0x1800000100000008L, active4, 0L, active5, 0L, active6, 0L, active7, 0x780000000000L, active8, 0x10000000L, active9, 0x8000000000000L, active10, 0x180000L, active11, 0L, active12, 0L);
@@ -6582,7 +6599,7 @@
jjmatchedKind = 330;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L, active12, 0L);
case 89:
case 121:
if ((active0 & 0x40000L) != 0L)
@@ -6599,7 +6616,7 @@
jjmatchedKind = 297;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_0(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_0(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x20000000000L, active12, 0L);
case 90:
case 122:
return jjMoveStringLiteralDfa3_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -6622,15 +6639,15 @@
case 45:
return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 49:
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x800000000000L, active11, 0L);
- case 51:
return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1000000000000L, active11, 0L);
+ case 51:
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000000000L, active11, 0L);
case 56:
- if ((active10 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_0(3, 686, 97);
+ if ((active10 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 687, 97);
break;
case 95:
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0x60000000200002L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0xc0000000200002L, active11, 0x400000000000L);
case 65:
case 97:
if ((active2 & 0x40L) != 0L)
@@ -6640,14 +6657,14 @@
}
else if ((active4 & 0x20000000L) != 0L)
return jjStartNfaWithStates_0(3, 285, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x1400001000L, active11, 0x400041000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x2400001000L, active11, 0x800082000000L);
case 66:
case 98:
if ((active0 & 0x800000000000L) != 0L)
return jjStartNfaWithStates_0(3, 47, 97);
else if ((active1 & 0x4000L) != 0L)
return jjStartNfaWithStates_0(3, 78, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000800000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000800000L, active11, 0L);
case 67:
case 99:
if ((active2 & 0x4000000000L) != 0L)
@@ -6660,7 +6677,7 @@
jjmatchedKind = 203;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_0(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x100000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x200000002000000L, active11, 0L);
case 68:
case 100:
if ((active3 & 0x200000000000000L) != 0L)
@@ -6675,9 +6692,9 @@
jjmatchedKind = 453;
jjmatchedPos = 3;
}
- else if ((active10 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_0(3, 689, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x20L);
+ else if ((active10 & 0x4000000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 690, 97);
+ return jjMoveStringLiteralDfa4_0(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x40L);
case 69:
case 101:
if ((active0 & 0x400000000000000L) != 0L)
@@ -6722,9 +6739,9 @@
return jjStartNfaWithStates_0(3, 659, 97);
else if ((active10 & 0x1000000L) != 0L)
return jjStartNfaWithStates_0(3, 664, 97);
- else if ((active11 & 0x8000L) != 0L)
- return jjStartNfaWithStates_0(3, 719, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0x6820000000L, active11, 0x20000000L);
+ else if ((active11 & 0x10000L) != 0L)
+ return jjStartNfaWithStates_0(3, 720, 97);
+ return jjMoveStringLiteralDfa4_0(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0xc820000000L, active11, 0x40000000L);
case 70:
case 102:
if ((active0 & 0x4000000L) != 0L)
@@ -6734,7 +6751,7 @@
break;
case 71:
case 103:
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x800001e000L, active11, 0x100000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x1000001e000L, active11, 0x200000000L);
case 72:
case 104:
if ((active0 & 0x2000000000000L) != 0L)
@@ -6743,29 +6760,29 @@
return jjStartNfaWithStates_0(3, 185, 97);
else if ((active6 & 0x1000000000L) != 0L)
return jjStartNfaWithStates_0(3, 420, 97);
- else if ((active11 & 0x40L) != 0L)
+ else if ((active11 & 0x80L) != 0L)
{
- jjmatchedKind = 710;
+ jjmatchedKind = 711;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_0(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0xc00180L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x1800300L);
case 73:
case 105:
- return jjMoveStringLiteralDfa4_0(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x200000200000004L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x400001200000004L, active11, 0x100100000L);
case 75:
case 107:
if ((active7 & 0x10L) != 0L)
return jjStartNfaWithStates_0(3, 452, 97);
else if ((active8 & 0x80L) != 0L)
return jjStartNfaWithStates_0(3, 519, 97);
- else if ((active10 & 0x8000000000000000L) != 0L)
+ else if ((active11 & 0x1L) != 0L)
{
- jjmatchedKind = 703;
+ jjmatchedKind = 704;
jjmatchedPos = 3;
}
- else if ((active11 & 0x200L) != 0L)
- return jjStartNfaWithStates_0(3, 713, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x40001L);
+ else if ((active11 & 0x400L) != 0L)
+ return jjStartNfaWithStates_0(3, 714, 97);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80002L);
case 76:
case 108:
if ((active0 & 0x20000000000000L) != 0L)
@@ -6787,9 +6804,9 @@
}
else if ((active7 & 0x80L) != 0L)
return jjStartNfaWithStates_0(3, 455, 97);
- else if ((active11 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_0(3, 739, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x100000000000L);
+ else if ((active11 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 740, 97);
+ return jjMoveStringLiteralDfa4_0(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x200000000000L);
case 77:
case 109:
if ((active3 & 0x2000000000L) != 0L)
@@ -6799,7 +6816,7 @@
jjmatchedKind = 657;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_0(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x200000L);
case 78:
case 110:
if ((active4 & 0x40000000L) != 0L)
@@ -6815,28 +6832,28 @@
return jjStartNfaWithStates_0(3, 431, 97);
else if ((active9 & 0x4000000000000L) != 0L)
return jjStartNfaWithStates_0(3, 626, 97);
- else if ((active11 & 0x2L) != 0L)
+ else if ((active11 & 0x4L) != 0L)
{
- jjmatchedKind = 705;
+ jjmatchedKind = 706;
jjmatchedPos = 3;
}
- else if ((active11 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_0(3, 740, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x4000200100100ff8L, active11, 0x10000000004L);
+ else if ((active11 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 741, 97);
+ return jjMoveStringLiteralDfa4_0(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x8000400100100ff8L, active11, 0x20000000008L);
case 79:
case 111:
if ((active3 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_0(3, 240, 97);
else if ((active4 & 0x800000L) != 0L)
return jjStartNfaWithStates_0(3, 279, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x200000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x400000000L);
case 80:
case 112:
if ((active2 & 0x20000000000000L) != 0L)
return jjStartNfaWithStates_0(3, 181, 97);
else if ((active8 & 0x2000000L) != 0L)
return jjStartNfaWithStates_0(3, 537, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x800c020400L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x10018040800L);
case 81:
case 113:
return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000L, active11, 0L);
@@ -6862,17 +6879,17 @@
jjmatchedKind = 402;
jjmatchedPos = 3;
}
- else if ((active10 & 0x10000000000L) != 0L)
+ else if ((active10 & 0x20000000000L) != 0L)
{
- jjmatchedKind = 680;
+ jjmatchedKind = 681;
jjmatchedPos = 3;
}
- else if ((active11 & 0x2000L) != 0L)
+ else if ((active11 & 0x4000L) != 0L)
{
- jjmatchedKind = 717;
+ jjmatchedKind = 718;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_0(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x1e0000000000L, active11, 0xa0010004008L);
+ return jjMoveStringLiteralDfa4_0(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x3c0000000000L, active11, 0x140020008010L);
case 83:
case 115:
if ((active2 & 0x80000L) != 0L)
@@ -6883,7 +6900,7 @@
return jjStartNfaWithStates_0(3, 531, 97);
else if ((active9 & 0x10000000000000L) != 0L)
return jjStartNfaWithStates_0(3, 628, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x1800000000400000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x3000000000400000L, active11, 0x800000000L);
case 84:
case 116:
if ((active0 & 0x800000000000000L) != 0L)
@@ -6903,27 +6920,27 @@
return jjStartNfaWithStates_0(3, 419, 97);
else if ((active9 & 0x400000L) != 0L)
return jjStartNfaWithStates_0(3, 598, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x42000200810L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x84000401020L);
case 85:
case 117:
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x1c000000000000L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x38000000000000L, active11, 0x4000000L);
case 86:
case 118:
if ((active6 & 0x400000000000000L) != 0L)
return jjStartNfaWithStates_0(3, 442, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x4000000000L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x8000000000L);
case 87:
case 119:
if ((active8 & 0x200000L) != 0L)
return jjStartNfaWithStates_0(3, 533, 97);
- else if ((active10 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_0(3, 701, 97);
+ else if ((active10 & 0x4000000000000000L) != 0L)
+ return jjStartNfaWithStates_0(3, 702, 97);
return jjMoveStringLiteralDfa4_0(active0, 0x80000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
if ((active6 & 0x20L) != 0L)
return jjStartNfaWithStates_0(3, 389, 97);
- return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x400000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x800000000000000L, active11, 0L);
default :
break;
}
@@ -6941,18 +6958,18 @@
switch(curChar)
{
case 50:
+ if ((active10 & 0x2000000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 689, 97);
+ break;
+ case 54:
if ((active10 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_0(4, 688, 97);
break;
- case 54:
- if ((active10 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 687, 97);
- break;
case 95:
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x1e0000040000L, active11, 0xd000000L);
+ return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x3c0000040000L, active11, 0x1a000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa5_0(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x200000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_0(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x400000002000000L, active11, 0L);
case 66:
case 98:
if ((active5 & 0x40000000000L) != 0L)
@@ -6960,9 +6977,9 @@
return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x80L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000L, active8, 0x3e000000000L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- if ((active11 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 744, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x200000000000L);
+ if ((active11 & 0x20000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 745, 97);
+ return jjMoveStringLiteralDfa5_0(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x400000000000L);
case 68:
case 100:
if ((active3 & 0x100000000L) != 0L)
@@ -7009,21 +7026,21 @@
jjmatchedKind = 622;
jjmatchedPos = 4;
}
- else if ((active10 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 679, 97);
- else if ((active10 & 0x4000000000000L) != 0L)
+ else if ((active10 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 680, 97);
+ else if ((active10 & 0x8000000000000L) != 0L)
{
- jjmatchedKind = 690;
+ jjmatchedKind = 691;
jjmatchedPos = 4;
}
- else if ((active11 & 0x8L) != 0L)
- return jjStartNfaWithStates_0(4, 707, 97);
- else if ((active11 & 0x800L) != 0L)
+ else if ((active11 & 0x10L) != 0L)
+ return jjStartNfaWithStates_0(4, 708, 97);
+ else if ((active11 & 0x1000L) != 0L)
{
- jjmatchedKind = 715;
+ jjmatchedKind = 716;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_0(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x4018000000000000L, active11, 0x80002e00004L);
+ return jjMoveStringLiteralDfa5_0(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x8030000000000000L, active11, 0x100005c00008L);
case 70:
case 102:
if ((active2 & 0x1000000000L) != 0L)
@@ -7031,9 +7048,9 @@
return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x60000L, active3, 0x1L, active4, 0L, active5, 0x10000000L, active6, 0L, active7, 0L, active8, 0x800000000000L, active9, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 685, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e000L, active11, 0x200000000L);
+ if ((active10 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 686, 97);
+ return jjMoveStringLiteralDfa5_0(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100001e000L, active11, 0x400000000L);
case 72:
case 104:
if ((active2 & 0x800000000L) != 0L)
@@ -7052,10 +7069,10 @@
jjmatchedKind = 351;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000000L, active11, 0x10L);
+ return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000000L, active11, 0x20L);
case 73:
case 105:
- return jjMoveStringLiteralDfa5_0(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x1c80000000000000L, active11, 0x46100100080L);
+ return jjMoveStringLiteralDfa5_0(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x3900000000000000L, active11, 0x8c200200100L);
case 75:
case 107:
if ((active1 & 0x800L) != 0L)
@@ -7076,9 +7093,9 @@
jjmatchedKind = 317;
jjmatchedPos = 4;
}
- else if ((active11 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 750, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x40020000L);
+ else if ((active11 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 751, 97);
+ return jjMoveStringLiteralDfa5_0(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x80040000L);
case 77:
case 109:
return jjMoveStringLiteralDfa5_0(active0, 0x80000000L, active1, 0x3000000L, active2, 0x1c0000000800000L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0x3f800000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0x408000000L, active11, 0L);
@@ -7095,10 +7112,10 @@
return jjStartNfaWithStates_0(4, 65, 97);
else if ((active10 & 0x40000000L) != 0L)
return jjStartNfaWithStates_0(4, 670, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa5_0(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x100100000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa5_0(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x120L);
+ return jjMoveStringLiteralDfa5_0(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x240L);
case 80:
case 112:
if ((active3 & 0x8000000000000L) != 0L)
@@ -7106,7 +7123,7 @@
jjmatchedKind = 243;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x20000000000000L, active11, 0x400L);
+ return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x40000000000000L, active11, 0x800L);
case 82:
case 114:
if ((active0 & 0x800L) != 0L)
@@ -7136,9 +7153,9 @@
return jjStartNfaWithStates_0(4, 444, 97);
else if ((active10 & 0x20000000L) != 0L)
return jjStartNfaWithStates_0(4, 669, 97);
- else if ((active10 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 677, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x4000000000L, active11, 0L);
+ else if ((active10 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 678, 97);
+ return jjMoveStringLiteralDfa5_0(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x8000000000L, active11, 0L);
case 83:
case 115:
if ((active1 & 0x10000000000000L) != 0L)
@@ -7155,11 +7172,11 @@
return jjStartNfaWithStates_0(4, 454, 97);
else if ((active8 & 0x100000L) != 0L)
return jjStartNfaWithStates_0(4, 532, 97);
- else if ((active11 & 0x1L) != 0L)
- return jjStartNfaWithStates_0(4, 704, 97);
- else if ((active11 & 0x4000L) != 0L)
- return jjStartNfaWithStates_0(4, 718, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x40000800000ff8L, active11, 0L);
+ else if ((active11 & 0x2L) != 0L)
+ return jjStartNfaWithStates_0(4, 705, 97);
+ else if ((active11 & 0x8000L) != 0L)
+ return jjStartNfaWithStates_0(4, 719, 97);
+ return jjMoveStringLiteralDfa5_0(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x80000800000ff8L, active11, 0L);
case 84:
case 116:
if ((active1 & 0x1000000000000L) != 0L)
@@ -7192,10 +7209,10 @@
return jjStartNfaWithStates_0(4, 599, 97);
else if ((active10 & 0x1000L) != 0L)
return jjStartNfaWithStates_0(4, 652, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x1000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x2000000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x8000040000L);
+ return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x10000080000L);
case 86:
case 118:
return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0x2000000000L, active3, 0L, active4, 0L, active5, 0x8000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x300000L, active10, 0x200000000L, active11, 0L);
@@ -7203,11 +7220,11 @@
case 119:
if ((active0 & 0x4000L) != 0L)
return jjStartNfaWithStates_0(4, 14, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x800000000L);
case 88:
case 120:
- if ((active11 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_0(4, 733, 97);
+ if ((active11 & 0x40000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 734, 97);
return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
@@ -7222,9 +7239,9 @@
return jjStartNfaWithStates_0(4, 188, 97);
else if ((active3 & 0x40L) != 0L)
return jjStartNfaWithStates_0(4, 198, 97);
- else if ((active11 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_0(4, 745, 97);
- return jjMoveStringLiteralDfa5_0(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100010000000L);
+ else if ((active11 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_0(4, 746, 97);
+ return jjMoveStringLiteralDfa5_0(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200020000000L);
case 90:
case 122:
return jjMoveStringLiteralDfa5_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x6000000000000000L, active10, 0L, active11, 0L);
@@ -7245,7 +7262,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa6_0(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x10000000000000L, active11, 0x2e00010L);
+ return jjMoveStringLiteralDfa6_0(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x20000000000000L, active11, 0x5c00020L);
case 65:
case 97:
if ((active7 & 0x800000000000000L) != 0L)
@@ -7253,7 +7270,7 @@
jjmatchedKind = 507;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_0(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x140000000740078L, active11, 0x20000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x280000000740078L, active11, 0x40000L);
case 66:
case 98:
return jjMoveStringLiteralDfa6_0(active0, 0xc00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x40000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -7268,7 +7285,7 @@
return jjStartNfaWithStates_0(5, 447, 97);
else if ((active9 & 0x4000000L) != 0L)
return jjStartNfaWithStates_0(5, 602, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x4000100000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x8000200000L);
case 68:
case 100:
if ((active0 & 0x40000000000000L) != 0L)
@@ -7284,7 +7301,7 @@
jjmatchedKind = 515;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_0(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x1e0010000000L, active11, 0L);
+ return jjMoveStringLiteralDfa6_0(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x3c0010000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x4000000000L) != 0L)
@@ -7325,9 +7342,9 @@
return jjStartNfaWithStates_0(5, 663, 97);
else if ((active10 & 0x80000000L) != 0L)
return jjStartNfaWithStates_0(5, 671, 97);
- else if ((active10 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_0(5, 676, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x80000400L);
+ else if ((active10 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 677, 97);
+ return jjMoveStringLiteralDfa6_0(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x100000800L);
case 70:
case 102:
if ((active5 & 0x80000000000000L) != 0L)
@@ -7337,20 +7354,20 @@
case 103:
if ((active3 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_0(5, 247, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x200000000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x400000000L);
case 72:
case 104:
if ((active4 & 0x40000000000000L) != 0L)
return jjStartNfaWithStates_0(5, 310, 97);
else if ((active8 & 0x4L) != 0L)
return jjStartNfaWithStates_0(5, 514, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 73:
case 105:
- return jjMoveStringLiteralDfa6_0(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x100000L);
case 75:
case 107:
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x4000000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x8000000L);
case 76:
case 108:
if ((active3 & 0x400000000000L) != 0L)
@@ -7359,7 +7376,7 @@
return jjStartNfaWithStates_0(5, 416, 97);
else if ((active8 & 0x2L) != 0L)
return jjStartNfaWithStates_0(5, 513, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x40000000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x80000000L);
case 77:
case 109:
if ((active9 & 0x20000000L) != 0L)
@@ -7393,17 +7410,17 @@
jjmatchedKind = 478;
jjmatchedPos = 5;
}
- else if ((active11 & 0x80L) != 0L)
- return jjStartNfaWithStates_0(5, 711, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0x680000004000000L, active11, 0x2100000000L);
+ else if ((active11 & 0x100L) != 0L)
+ return jjStartNfaWithStates_0(5, 712, 97);
+ return jjMoveStringLiteralDfa6_0(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0xd00001004000000L, active11, 0x4200000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa6_0(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x1820000200000000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x3040000200000000L, active11, 0x800000000L);
case 80:
case 112:
if ((active7 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_0(5, 490, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x10040000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x20080000L);
case 81:
case 113:
return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -7427,7 +7444,7 @@
jjmatchedKind = 526;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_0(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x2000000L);
case 83:
case 115:
if ((active0 & 0x10000L) != 0L)
@@ -7444,9 +7461,9 @@
return jjStartNfaWithStates_0(5, 382, 97);
else if ((active6 & 0x4000L) != 0L)
return jjStartNfaWithStates_0(5, 398, 97);
- else if ((active10 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_0(5, 691, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x4000000000000000L, active11, 0xc0000000000L);
+ else if ((active10 & 0x10000000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 692, 97);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x8000000000000000L, active11, 0x180000000000L);
case 84:
case 116:
if ((active0 & 0x20L) != 0L)
@@ -7483,21 +7500,21 @@
return jjStartNfaWithStates_0(5, 611, 97);
else if ((active10 & 0x800000000L) != 0L)
return jjStartNfaWithStates_0(5, 675, 97);
- else if ((active10 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_0(5, 678, 97);
- return jjMoveStringLiteralDfa6_0(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x8000000000L);
+ else if ((active10 & 0x8000000000L) != 0L)
+ return jjStartNfaWithStates_0(5, 679, 97);
+ return jjMoveStringLiteralDfa6_0(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x10000000000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa6_0(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x100L);
+ return jjMoveStringLiteralDfa6_0(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x200L);
case 86:
case 118:
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x8000004L);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x10000008L);
case 87:
case 119:
if ((active4 & 0x4000000L) != 0L)
return jjStartNfaWithStates_0(5, 282, 97);
- else if ((active11 & 0x20L) != 0L)
- return jjStartNfaWithStates_0(5, 709, 97);
+ else if ((active11 & 0x40L) != 0L)
+ return jjStartNfaWithStates_0(5, 710, 97);
return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x20000L, active3, 0x8000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000L, active11, 0L);
case 88:
case 120:
@@ -7515,7 +7532,7 @@
return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0x40000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000000L);
+ return jjMoveStringLiteralDfa6_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
default :
break;
}
@@ -7537,13 +7554,13 @@
return jjStartNfaWithStates_0(6, 464, 97);
break;
case 95:
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x100000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa7_0(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x80000000000e00L, active11, 0x200008000000L);
+ return jjMoveStringLiteralDfa7_0(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x100000000000e00L, active11, 0x400010000000L);
case 66:
case 98:
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x20L);
case 67:
case 99:
if ((active2 & 0x40000000000000L) != 0L)
@@ -7566,7 +7583,7 @@
return jjStartNfaWithStates_0(6, 325, 97);
else if ((active10 & 0x400000000L) != 0L)
return jjStartNfaWithStates_0(6, 674, 97);
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x4000000004000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x8000000004000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x100000000000000L) != 0L)
@@ -7604,13 +7621,13 @@
}
else if ((active10 & 0x2000000L) != 0L)
return jjStartNfaWithStates_0(6, 665, 97);
- else if ((active11 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 742, 97);
else if ((active11 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_0(6, 743, 97);
- else if ((active11 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 748, 97);
- return jjMoveStringLiteralDfa7_0(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x1e0000000000L, active11, 0x45000004L);
+ else if ((active11 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 744, 97);
+ else if ((active11 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 749, 97);
+ return jjMoveStringLiteralDfa7_0(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x3c1000000000L, active11, 0x8a000008L);
case 70:
case 102:
return jjMoveStringLiteralDfa7_0(active0, 0x10000000000L, active1, 0x1000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -7633,21 +7650,21 @@
return jjStartNfaWithStates_0(6, 430, 97);
else if ((active7 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_0(6, 499, 97);
- else if ((active10 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 698, 97);
- else if ((active11 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_0(6, 736, 97);
- return jjMoveStringLiteralDfa7_0(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
+ else if ((active10 & 0x800000000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 699, 97);
+ else if ((active11 & 0x200000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 737, 97);
+ return jjMoveStringLiteralDfa7_0(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x800000L);
case 72:
case 104:
if ((active0 & 0x4000000000000L) != 0L)
return jjStartNfaWithStates_0(6, 50, 97);
- else if ((active11 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 747, 97);
+ else if ((active11 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 748, 97);
return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa7_0(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x200100000L);
+ return jjMoveStringLiteralDfa7_0(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x400200000L);
case 76:
case 108:
if ((active2 & 0x800000L) != 0L)
@@ -7673,7 +7690,7 @@
return jjMoveStringLiteralDfa7_0(active0, 0x40000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400L, active5, 0x2048000000000000L, active6, 0x2000L, active7, 0x20000L, active8, 0L, active9, 0x4L, active10, 0L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa7_0(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x40000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_0(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x80000000000000L, active11, 0L);
case 78:
case 110:
if ((active0 & 0x80000000000L) != 0L)
@@ -7699,19 +7716,19 @@
}
else if ((active10 & 0x100000000L) != 0L)
return jjStartNfaWithStates_0(6, 672, 97);
- else if ((active10 & 0x800000000000000L) != 0L)
+ else if ((active10 & 0x1000000000000000L) != 0L)
{
- jjmatchedKind = 699;
+ jjmatchedKind = 700;
jjmatchedPos = 6;
}
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x1000000000000004L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x2000000000000004L, active11, 0x1000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x10000000000180L, active11, 0L);
+ return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x20000000000180L, active11, 0L);
case 80:
case 112:
- if ((active10 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 693, 97);
+ if ((active10 & 0x40000000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 694, 97);
return jjMoveStringLiteralDfa7_0(active0, 0x20000000000L, active1, 0x2800000000000L, active2, 0x30000000000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0x80000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
@@ -7737,11 +7754,11 @@
jjmatchedKind = 653;
jjmatchedPos = 6;
}
- else if ((active10 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 696, 97);
- else if ((active11 & 0x400L) != 0L)
- return jjStartNfaWithStates_0(6, 714, 97);
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x400000000L);
+ else if ((active10 & 0x200000000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 697, 97);
+ else if ((active11 & 0x800L) != 0L)
+ return jjStartNfaWithStates_0(6, 715, 97);
+ return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x800000000L);
case 83:
case 115:
if ((active5 & 0x40L) != 0L)
@@ -7754,9 +7771,9 @@
return jjStartNfaWithStates_0(6, 484, 97);
else if ((active8 & 0x10L) != 0L)
return jjStartNfaWithStates_0(6, 516, 97);
- else if ((active11 & 0x40000L) != 0L)
- return jjStartNfaWithStates_0(6, 722, 97);
- return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x200000L);
+ else if ((active11 & 0x80000L) != 0L)
+ return jjStartNfaWithStates_0(6, 723, 97);
+ return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x400000L);
case 84:
case 116:
if ((active1 & 0x800000L) != 0L)
@@ -7797,14 +7814,14 @@
return jjStartNfaWithStates_0(6, 639, 97);
else if ((active10 & 0x200000000L) != 0L)
return jjStartNfaWithStates_0(6, 673, 97);
- else if ((active10 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_0(6, 697, 97);
- else if ((active11 & 0x100L) != 0L)
- return jjStartNfaWithStates_0(6, 712, 97);
- return jjMoveStringLiteralDfa7_0(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x400120a0000L);
+ else if ((active10 & 0x400000000000000L) != 0L)
+ return jjStartNfaWithStates_0(6, 698, 97);
+ else if ((active11 & 0x200L) != 0L)
+ return jjStartNfaWithStates_0(6, 713, 97);
+ return jjMoveStringLiteralDfa7_0(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x80024140000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa7_0(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa7_0(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x4000000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa7_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0x200000000000000L, active7, 0x203000L, active8, 0L, active9, 0L, active10, 0x2L, active11, 0L);
@@ -7846,7 +7863,7 @@
return jjMoveStringLiteralDfa8_0(active0, 0x2000000000000000L, active1, 0xff0000000c000000L, active2, 0x180000000000007L, active3, 0L, active4, 0L, active5, 0x70000L, active6, 0x40000000000L, active7, 0x700000000000L, active8, 0x20000L, active9, 0xffc00L, active10, 0x1c000L, active11, 0L);
case 65:
case 97:
- return jjMoveStringLiteralDfa8_0(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x4000000000000000L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa8_0(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x8000000000000000L, active11, 0x1000000L);
case 66:
case 98:
if ((active8 & 0x10000000000L) != 0L)
@@ -7870,8 +7887,10 @@
return jjStartNfaWithStates_0(7, 57, 97);
else if ((active2 & 0x10000000L) != 0L)
return jjStartNfaWithStates_0(7, 156, 97);
- else if ((active11 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_0(7, 738, 97);
+ else if ((active10 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_0(7, 676, 97);
+ else if ((active11 & 0x800000000L) != 0L)
+ return jjStartNfaWithStates_0(7, 739, 97);
return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40000780000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -7921,14 +7940,14 @@
}
else if ((active10 & 0x100000L) != 0L)
return jjStartNfaWithStates_0(7, 660, 97);
- else if ((active11 & 0x20000L) != 0L)
- return jjStartNfaWithStates_0(7, 721, 97);
- return jjMoveStringLiteralDfa8_0(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x10000000L);
+ else if ((active11 & 0x40000L) != 0L)
+ return jjStartNfaWithStates_0(7, 722, 97);
+ return jjMoveStringLiteralDfa8_0(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x20000000L);
case 70:
case 102:
- if ((active10 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_0(7, 692, 97);
- return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ if ((active10 & 0x20000000000000L) != 0L)
+ return jjStartNfaWithStates_0(7, 693, 97);
+ return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active2 & 0x2000000000000000L) != 0L)
@@ -7939,7 +7958,7 @@
return jjStartNfaWithStates_0(7, 395, 97);
else if ((active10 & 0x4L) != 0L)
return jjStartNfaWithStates_0(7, 642, 97);
- return jjMoveStringLiteralDfa8_0(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa8_0(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x2000000L);
case 72:
case 104:
if ((active2 & 0x400000000000L) != 0L)
@@ -7947,7 +7966,7 @@
return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x100000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa8_0(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x1000000000000000L, active11, 0x40000000000L);
+ return jjMoveStringLiteralDfa8_0(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x2000000000000000L, active11, 0x80000000000L);
case 74:
case 106:
return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -7966,9 +7985,9 @@
return jjStartNfaWithStates_0(7, 359, 97);
else if ((active9 & 0x20L) != 0L)
return jjStartNfaWithStates_0(7, 581, 97);
- else if ((active11 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_0(7, 734, 97);
- return jjMoveStringLiteralDfa8_0(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x8000000L);
+ else if ((active11 & 0x80000000L) != 0L)
+ return jjStartNfaWithStates_0(7, 735, 97);
+ return jjMoveStringLiteralDfa8_0(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x10000000L);
case 77:
case 109:
return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0x1L, active4, 0xc000000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f01000000000000L, active10, 0L, active11, 0L);
@@ -7981,22 +8000,22 @@
jjmatchedKind = 434;
jjmatchedPos = 7;
}
- return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x200200000000L);
+ return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x400400000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa8_0(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa8_0(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x4000000000L);
case 80:
case 112:
- if ((active10 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_0(7, 694, 97);
+ if ((active10 & 0x80000000000000L) != 0L)
+ return jjStartNfaWithStates_0(7, 695, 97);
return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0x8000000L, active10, 0L, active11, 0L);
case 82:
case 114:
if ((active8 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_0(7, 554, 97);
- else if ((active11 & 0x4L) != 0L)
- return jjStartNfaWithStates_0(7, 706, 97);
- return jjMoveStringLiteralDfa8_0(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x80000000040180L, active11, 0x400000L);
+ else if ((active11 & 0x8L) != 0L)
+ return jjStartNfaWithStates_0(7, 707, 97);
+ return jjMoveStringLiteralDfa8_0(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x100000000040180L, active11, 0x800000L);
case 83:
case 115:
if ((active1 & 0x40000000000L) != 0L)
@@ -8018,7 +8037,7 @@
return jjStartNfaWithStates_0(7, 450, 97);
else if ((active9 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_0(7, 615, 97);
- return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x100000000L);
case 84:
case 116:
if ((active2 & 0x800000000000L) != 0L)
@@ -8031,10 +8050,10 @@
return jjStartNfaWithStates_0(7, 538, 97);
else if ((active10 & 0x200000L) != 0L)
return jjStartNfaWithStates_0(7, 661, 97);
- return jjMoveStringLiteralDfa8_0(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa8_0(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x200000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x20L);
case 86:
case 118:
return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100L, active8, 0x400L, active9, 0L, active10, 0L, active11, 0L);
@@ -8064,9 +8083,9 @@
return jjStartNfaWithStates_0(7, 518, 97);
else if ((active9 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_0(7, 627, 97);
- else if ((active11 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_0(7, 730, 97);
- return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x2280000L);
+ else if ((active11 & 0x8000000L) != 0L)
+ return jjStartNfaWithStates_0(7, 731, 97);
+ return jjMoveStringLiteralDfa8_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x4500000L);
case 90:
case 122:
return jjMoveStringLiteralDfa8_0(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x3000000000000L, active6, 0L, active7, 0L, active8, 0x2000L, active9, 0L, active10, 0L, active11, 0L);
@@ -8087,7 +8106,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x100000L);
case 65:
case 97:
return jjMoveStringLiteralDfa9_0(active0, 0x11000000000L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0x300020000L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0xa000L, active9, 0x10000000L, active10, 0x40000L, active11, 0L);
@@ -8100,7 +8119,7 @@
case 99:
if ((active9 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_0(8, 618, 97);
- return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x40000000010L);
+ return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x80000000020L);
case 68:
case 100:
if ((active1 & 0x20000000L) != 0L)
@@ -8109,8 +8128,8 @@
return jjStartNfaWithStates_0(8, 235, 97);
else if ((active10 & 0x4000000L) != 0L)
return jjStartNfaWithStates_0(8, 666, 97);
- else if ((active11 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_0(8, 732, 97);
+ else if ((active11 & 0x20000000L) != 0L)
+ return jjStartNfaWithStates_0(8, 733, 97);
return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x600000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x400L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -8178,9 +8197,9 @@
jjmatchedKind = 613;
jjmatchedPos = 8;
}
- else if ((active11 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_0(8, 737, 97);
- return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x200000000000L);
+ else if ((active11 & 0x400000000L) != 0L)
+ return jjStartNfaWithStates_0(8, 738, 97);
+ return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x400000000000L);
case 72:
case 104:
return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x201000L, active10, 0L, active11, 0L);
@@ -8188,7 +8207,7 @@
case 105:
if ((active0 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_0(8, 42, 97);
- return jjMoveStringLiteralDfa9_0(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x1e0010000878L, active11, 0x81000000L);
+ return jjMoveStringLiteralDfa9_0(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x3c0010000878L, active11, 0x102000000L);
case 75:
case 107:
if ((active2 & 0x20000L) != 0L)
@@ -8204,7 +8223,7 @@
jjmatchedKind = 647;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x1000000L);
case 78:
case 110:
if ((active0 & 0x20000000L) != 0L)
@@ -8227,10 +8246,10 @@
return jjStartNfaWithStates_0(8, 415, 97);
else if ((active6 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_0(8, 439, 97);
- return jjMoveStringLiteralDfa9_0(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x1000000000008000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa9_0(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x2000000000008000L, active11, 0x400000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x800000L);
case 80:
case 112:
if ((active1 & 0x2000000000000L) != 0L)
@@ -8240,7 +8259,7 @@
jjmatchedKind = 632;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x4000000L);
case 81:
case 113:
return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0L);
@@ -8292,7 +8311,7 @@
return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0x8000020000000000L, active2, 0x100003L, active3, 0L, active4, 0x200004L, active5, 0x40000L, active6, 0x2000L, active7, 0x4000000000000000L, active8, 0x500000000L, active9, 0x1000000000L, active10, 0x8000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x2008000000L);
+ return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x4010000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa9_0(active0, 0x10000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0L);
@@ -8316,12 +8335,12 @@
return jjStartNfaWithStates_0(8, 461, 97);
else if ((active9 & 0x2000000000000L) != 0L)
return jjStartNfaWithStates_0(8, 625, 97);
- else if ((active10 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_0(8, 695, 97);
- else if ((active10 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_0(8, 702, 97);
- else if ((active11 & 0x100000L) != 0L)
- return jjStartNfaWithStates_0(8, 724, 97);
+ else if ((active10 & 0x100000000000000L) != 0L)
+ return jjStartNfaWithStates_0(8, 696, 97);
+ else if ((active10 & 0x8000000000000000L) != 0L)
+ return jjStartNfaWithStates_0(8, 703, 97);
+ else if ((active11 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_0(8, 725, 97);
return jjMoveStringLiteralDfa9_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x80000L, active10, 0L, active11, 0L);
default :
break;
@@ -8355,7 +8374,7 @@
return jjStartNfaWithStates_0(9, 138, 97);
else if ((active9 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_0(9, 631, 97);
- return jjMoveStringLiteralDfa10_0(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa10_0(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 68:
case 100:
if ((active5 & 0x4000000000L) != 0L)
@@ -8389,13 +8408,13 @@
return jjStartNfaWithStates_0(9, 612, 97);
else if ((active9 & 0x800000000000L) != 0L)
return jjStartNfaWithStates_0(9, 623, 97);
- else if ((active11 & 0x800000L) != 0L)
- return jjStartNfaWithStates_0(9, 727, 97);
- else if ((active11 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_0(9, 729, 97);
- else if ((active11 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_0(9, 731, 97);
- return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x200000000000L);
+ else if ((active11 & 0x1000000L) != 0L)
+ return jjStartNfaWithStates_0(9, 728, 97);
+ else if ((active11 & 0x4000000L) != 0L)
+ return jjStartNfaWithStates_0(9, 730, 97);
+ else if ((active11 & 0x10000000L) != 0L)
+ return jjStartNfaWithStates_0(9, 732, 97);
+ return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x400000000000L);
case 71:
case 103:
if ((active6 & 0x200000L) != 0L)
@@ -8404,8 +8423,8 @@
return jjStartNfaWithStates_0(9, 548, 97);
else if ((active9 & 0x40000000L) != 0L)
return jjStartNfaWithStates_0(9, 606, 97);
- else if ((active10 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_0(9, 700, 97);
+ else if ((active10 & 0x2000000000000000L) != 0L)
+ return jjStartNfaWithStates_0(9, 701, 97);
return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x2000000000000000L, active6, 0x400000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
@@ -8417,7 +8436,7 @@
case 107:
if ((active2 & 0x400000000L) != 0L)
return jjStartNfaWithStates_0(9, 162, 97);
- return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80010L);
+ return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100020L);
case 76:
case 108:
return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2L, active5, 0L, active6, 0L, active7, 0x100000000L, active8, 0L, active9, 0x1000000000000L, active10, 0L, active11, 0L);
@@ -8433,10 +8452,10 @@
jjmatchedKind = 98;
jjmatchedPos = 9;
}
- return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x3c0000000000L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x2000000L);
case 80:
case 112:
if ((active1 & 0x4000000000000L) != 0L)
@@ -8467,10 +8486,10 @@
return jjStartNfaWithStates_0(9, 458, 97);
else if ((active10 & 0x100L) != 0L)
return jjStartNfaWithStates_0(9, 648, 97);
- else if ((active11 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_0(9, 741, 97);
- else if ((active11 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_0(9, 746, 97);
+ else if ((active11 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_0(9, 742, 97);
+ else if ((active11 & 0x80000000000L) != 0L)
+ return jjStartNfaWithStates_0(9, 747, 97);
return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0x80000000000L, active2, 0x40000000004L, active3, 0L, active4, 0x8000000000000000L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
@@ -8490,7 +8509,7 @@
return jjMoveStringLiteralDfa10_0(active0, 0x80021000000000L, active1, 0x1e000000008L, active2, 0x8000L, active3, 0x2L, active4, 0x400000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100L, active10, 0L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x800000L);
case 86:
case 118:
return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -8517,7 +8536,7 @@
return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x200000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa10_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L);
default :
break;
}
@@ -8554,7 +8573,7 @@
return jjStartNfaWithStates_0(10, 341, 97);
else if ((active10 & 0x8000000L) != 0L)
return jjStartNfaWithStates_0(10, 667, 97);
- return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x400000000000L);
case 69:
case 101:
if ((active0 & 0x10000000000L) != 0L)
@@ -8575,9 +8594,9 @@
return jjStartNfaWithStates_0(10, 620, 97);
else if ((active9 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_0(10, 624, 97);
- else if ((active11 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_0(10, 735, 97);
- return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x1e0000000000L, active11, 0x80010L);
+ else if ((active11 & 0x100000000L) != 0L)
+ return jjStartNfaWithStates_0(10, 736, 97);
+ return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x3c0000000000L, active11, 0x100020L);
case 70:
case 102:
return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -8592,7 +8611,7 @@
return jjStartNfaWithStates_0(10, 67, 97);
else if ((active6 & 0x400000000L) != 0L)
return jjStartNfaWithStates_0(10, 418, 97);
- return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 73:
case 105:
return jjMoveStringLiteralDfa11_0(active0, 0x21000000000L, active1, 0x800000002000L, active2, 0x1000L, active3, 0x2L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0L, active8, 0L, active9, 0x4400000000000000L, active10, 0L, active11, 0L);
@@ -8619,8 +8638,8 @@
}
else if ((active10 & 0x800L) != 0L)
return jjStartNfaWithStates_0(10, 651, 97);
- else if ((active11 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_0(10, 728, 97);
+ else if ((active11 & 0x2000000L) != 0L)
+ return jjStartNfaWithStates_0(10, 729, 97);
return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0x10c200000L, active2, 0x180000000006000L, active3, 0L, active4, 0L, active5, 0x10000L, active6, 0x40002000000L, active7, 0L, active8, 0L, active9, 0xc040L, active10, 0x10000070L, active11, 0L);
case 79:
case 111:
@@ -8629,8 +8648,8 @@
case 112:
if ((active9 & 0x10000000L) != 0L)
return jjStartNfaWithStates_0(10, 604, 97);
- else if ((active11 & 0x400000L) != 0L)
- return jjStartNfaWithStates_0(10, 726, 97);
+ else if ((active11 & 0x800000L) != 0L)
+ return jjStartNfaWithStates_0(10, 727, 97);
return jjMoveStringLiteralDfa11_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 81:
case 113:
@@ -8706,7 +8725,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 65:
case 97:
if ((active8 & 0x1L) != 0L)
@@ -8722,7 +8741,7 @@
case 100:
if ((active9 & 0x200000000000000L) != 0L)
return jjStartNfaWithStates_0(11, 633, 97);
- return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x2000000000000000L) != 0L)
@@ -8807,7 +8826,7 @@
return jjStartNfaWithStates_0(11, 588, 97);
else if ((active9 & 0x80000L) != 0L)
return jjStartNfaWithStates_0(11, 595, 97);
- return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x400000L);
case 83:
case 115:
return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0x8000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x70L, active11, 0L);
@@ -8819,16 +8838,16 @@
return jjStartNfaWithStates_0(11, 338, 97);
else if ((active9 & 0x40L) != 0L)
return jjStartNfaWithStates_0(11, 582, 97);
- else if ((active11 & 0x10L) != 0L)
- return jjStartNfaWithStates_0(11, 708, 97);
+ else if ((active11 & 0x20L) != 0L)
+ return jjStartNfaWithStates_0(11, 709, 97);
return jjMoveStringLiteralDfa12_0(active0, 0x20000800000L, active1, 0x200L, active2, 0x6000L, active3, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x8000L, active10, 0L, active11, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa12_0(active0, 0L, active1, 0x100000000L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2000000000004000L, active10, 0L, active11, 0L);
case 89:
case 121:
- if ((active11 & 0x80000L) != 0L)
- return jjStartNfaWithStates_0(11, 723, 97);
+ if ((active11 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_0(11, 724, 97);
break;
default :
break;
@@ -8847,7 +8866,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa13_0(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x1e0000000070L, active11, 0L);
+ return jjMoveStringLiteralDfa13_0(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x3c0000000070L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa13_0(active0, 0L, active1, 0x6800000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -8903,12 +8922,12 @@
return jjMoveStringLiteralDfa13_0(active0, 0L, active1, 0x20L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x20000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa13_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa13_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x400000L);
case 80:
case 112:
if ((active9 & 0x100L) != 0L)
return jjStartNfaWithStates_0(12, 584, 97);
- return jjMoveStringLiteralDfa13_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa13_0(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 82:
case 114:
if ((active9 & 0x2000000000000000L) != 0L)
@@ -8954,7 +8973,7 @@
return jjStartNfaWithStates_0(13, 494, 97);
else if ((active10 & 0x10000L) != 0L)
return jjStartNfaWithStates_0(13, 656, 97);
- return jjMoveStringLiteralDfa14_0(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa14_0(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 66:
case 98:
return jjMoveStringLiteralDfa14_0(active0, 0L, active1, 0x100000000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -9007,7 +9026,7 @@
case 110:
if ((active4 & 0x4L) != 0L)
return jjStartNfaWithStates_0(13, 258, 97);
- return jjMoveStringLiteralDfa14_0(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa14_0(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa14_0(active0, 0x20000000000L, active1, 0x100000000000000L, active2, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0L, active10, 0x4000L, active11, 0L);
@@ -9028,7 +9047,7 @@
case 116:
if ((active7 & 0x8000L) != 0L)
return jjStartNfaWithStates_0(13, 463, 97);
- return jjMoveStringLiteralDfa14_0(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa14_0(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 88:
case 120:
if ((active6 & 0x8000000000000L) != 0L)
@@ -9095,7 +9114,7 @@
break;
case 73:
case 105:
- return jjMoveStringLiteralDfa15_0(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa15_0(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa15_0(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -9122,7 +9141,7 @@
return jjStartNfaWithStates_0(14, 575, 97);
else if ((active9 & 0x10000L) != 0L)
return jjStartNfaWithStates_0(14, 592, 97);
- return jjMoveStringLiteralDfa15_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa15_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 83:
case 115:
if ((active1 & 0x200L) != 0L)
@@ -9147,7 +9166,7 @@
break;
case 89:
case 121:
- return jjMoveStringLiteralDfa15_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa15_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
default :
break;
}
@@ -9214,7 +9233,7 @@
return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 82:
case 114:
if ((active1 & 0x100000000L) != 0L)
@@ -9224,7 +9243,7 @@
return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xe0000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -9238,7 +9257,7 @@
return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa16_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
default :
break;
}
@@ -9261,12 +9280,12 @@
case 97:
if ((active1 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_0(16, 103, 97);
- return jjMoveStringLiteralDfa17_0(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa17_0(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
if ((active7 & 0x400000000L) != 0L)
return jjStartNfaWithStates_0(16, 482, 97);
- return jjMoveStringLiteralDfa17_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa17_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x100000L) != 0L)
@@ -9277,7 +9296,7 @@
return jjMoveStringLiteralDfa17_0(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa17_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa17_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 76:
case 108:
return jjMoveStringLiteralDfa17_0(active0, 0L, active1, 0L, active2, 0x6000L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0L, active10, 0x40L, active11, 0L);
@@ -9341,7 +9360,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa18_0(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa18_0(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa18_0(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -9377,7 +9396,7 @@
return jjMoveStringLiteralDfa18_0(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa18_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa18_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 86:
case 118:
return jjMoveStringLiteralDfa18_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0L);
@@ -9404,7 +9423,7 @@
return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x60000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0xc0000000000L, active11, 0L);
case 68:
case 100:
if ((active8 & 0x800000000000000L) != 0L)
@@ -9429,7 +9448,7 @@
return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa19_0(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa19_0(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -9438,7 +9457,7 @@
return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
case 79:
case 111:
return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -9447,7 +9466,7 @@
return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0x4000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000L, active11, 0L);
case 84:
case 116:
return jjMoveStringLiteralDfa19_0(active0, 0L, active1, 0L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0x80000000L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x20L, active11, 0L);
@@ -9473,10 +9492,10 @@
case 97:
if ((active1 & 0x100L) != 0L)
return jjStartNfaWithStates_0(19, 72, 97);
- return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0xa0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0x140000000000L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x200000000000L, active11, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -9490,7 +9509,7 @@
return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0x10000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x40000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x80000000000L, active11, 0x400000400000L);
case 82:
case 114:
return jjMoveStringLiteralDfa20_0(active0, 0L, active1, 0L, active2, 0x4002L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -9534,7 +9553,7 @@
return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0x20000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x80000000000L, active11, 0L);
case 69:
case 101:
if ((active1 & 0x8000000L) != 0L)
@@ -9551,13 +9570,13 @@
case 104:
if ((active7 & 0x200000000L) != 0L)
return jjStartNfaWithStates_0(20, 481, 97);
- return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x200000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x100000000000L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0x2L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -9566,7 +9585,7 @@
return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0x400000000000000L, active2, 0L, active6, 0x4000000L, active7, 0L, active8, 0x10000000000000L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_0(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x40000000000L, active11, 0L);
case 89:
case 121:
if ((active0 & 0x1000000L) != 0L)
@@ -9589,10 +9608,10 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa22_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa22_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa22_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000040L, active11, 0L);
+ return jjMoveStringLiteralDfa22_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000040L, active11, 0L);
case 67:
case 99:
return jjMoveStringLiteralDfa22_0(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -9605,11 +9624,11 @@
case 101:
if ((active2 & 0x2000L) != 0L)
return jjStartNfaWithStates_0(21, 141, 97);
- else if ((active10 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_0(21, 682, 97);
else if ((active10 & 0x80000000000L) != 0L)
return jjStartNfaWithStates_0(21, 683, 97);
- return jjMoveStringLiteralDfa22_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x100000000000L, active11, 0L);
+ else if ((active10 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_0(21, 684, 97);
+ return jjMoveStringLiteralDfa22_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x200000000000L, active11, 0L);
case 70:
case 102:
return jjMoveStringLiteralDfa22_0(active1, 0x400000000000000L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -9668,10 +9687,10 @@
return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x100000000000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x200000000000L, active11, 0x400000L);
case 78:
case 110:
return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x8000000000000L, active10, 0L, active11, 0L);
@@ -9683,7 +9702,7 @@
return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa23_0(active1, 0L, active2, 0L, active6, 0x4000000L, active8, 0L, active10, 0L, active11, 0L);
@@ -9710,8 +9729,8 @@
return jjMoveStringLiteralDfa24_0(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 65:
case 97:
- if ((active10 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_0(23, 684, 97);
+ if ((active10 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_0(23, 685, 97);
break;
case 67:
case 99:
@@ -9735,7 +9754,7 @@
return jjMoveStringLiteralDfa24_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x2040000000000000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa24_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x20000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa24_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x40000000000L, active11, 0x400000400000L);
case 82:
case 114:
if ((active8 & 0x4000000000000L) != 0L)
@@ -9770,7 +9789,7 @@
break;
case 68:
case 100:
- return jjMoveStringLiteralDfa25_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa25_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
return jjMoveStringLiteralDfa25_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x200000000000000L, active10, 0L, active11, 0L);
@@ -9779,8 +9798,8 @@
return jjMoveStringLiteralDfa25_0(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_0(24, 681, 97);
+ if ((active10 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_0(24, 682, 97);
break;
case 73:
case 105:
@@ -9802,7 +9821,7 @@
return jjMoveStringLiteralDfa25_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa25_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa25_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -9833,8 +9852,8 @@
case 101:
if ((active8 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_0(25, 563, 97);
- else if ((active11 & 0x200000L) != 0L)
- return jjStartNfaWithStates_0(25, 725, 97);
+ else if ((active11 & 0x400000L) != 0L)
+ return jjStartNfaWithStates_0(25, 726, 97);
break;
case 71:
case 103:
@@ -9856,7 +9875,7 @@
return jjMoveStringLiteralDfa26_0(active1, 0L, active2, 0x4002L, active6, 0L, active8, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa26_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa26_0(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa26_0(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active11, 0L);
@@ -9877,7 +9896,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa27_0(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa27_0(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 68:
case 100:
if ((active8 & 0x80000000000000L) != 0L)
@@ -9925,7 +9944,7 @@
return jjMoveStringLiteralDfa28_0(active1, 0L, active2, 0L, active8, 0x200000000000000L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa28_0(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa28_0(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 82:
case 114:
return jjMoveStringLiteralDfa28_0(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -9952,7 +9971,7 @@
break;
case 69:
case 101:
- return jjMoveStringLiteralDfa29_0(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa29_0(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 79:
case 111:
return jjMoveStringLiteralDfa29_0(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -9977,7 +9996,7 @@
{
case 82:
case 114:
- return jjMoveStringLiteralDfa30_0(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa30_0(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa30_0(active1, 0x400000000000000L, active2, 0L, active11, 0L);
@@ -10002,7 +10021,7 @@
{
case 67:
case 99:
- return jjMoveStringLiteralDfa31_0(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa31_0(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 80:
case 112:
if ((active1 & 0x400000000000000L) != 0L)
@@ -10028,7 +10047,7 @@
case 101:
if ((active2 & 0x2L) != 0L)
return jjStartNfaWithStates_0(31, 129, 97);
- return jjMoveStringLiteralDfa32_0(active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa32_0(active2, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -10047,7 +10066,7 @@
{
case 78:
case 110:
- return jjMoveStringLiteralDfa33_0(active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa33_0(active11, 0x400000000000L);
default :
break;
}
@@ -10066,8 +10085,8 @@
{
case 84:
case 116:
- if ((active11 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_0(33, 749, 97);
+ if ((active11 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_0(33, 750, 97);
break;
default :
break;
@@ -10104,21 +10123,21 @@
jjCheckNAddTwoStates(56, 57);
else if (curChar == 7)
{
- if (kind > 826)
- kind = 826;
+ if (kind > 829)
+ kind = 829;
}
else if (curChar == 45)
jjstateSet[jjnewStateCnt++] = 23;
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(9, 15);
}
else if (curChar == 36)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -10131,8 +10150,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -10145,8 +10164,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -10161,8 +10180,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -10184,8 +10203,8 @@
jjstateSet[jjnewStateCnt++] = 67;
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -10194,8 +10213,8 @@
case 92:
if (curChar == 47)
{
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
}
else if (curChar == 42)
@@ -10210,8 +10229,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -10232,8 +10251,8 @@
jjCheckNAddStates(32, 34);
else if (curChar == 39)
{
- if (kind > 758)
- kind = 758;
+ if (kind > 759)
+ kind = 759;
}
if ((0xfc00f7faffffc9ffL & l) != 0L)
jjstateSet[jjnewStateCnt++] = 64;
@@ -10243,8 +10262,8 @@
case 98:
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(57);
}
if ((0x3ff000000000000L & l) != 0L)
@@ -10269,8 +10288,8 @@
jjstateSet[jjnewStateCnt++] = 3;
break;
case 5:
- if (curChar == 39 && kind > 757)
- kind = 757;
+ if (curChar == 39 && kind > 758)
+ kind = 758;
break;
case 7:
if ((0x3ff000000000000L & l) != 0L)
@@ -10294,8 +10313,8 @@
jjstateSet[jjnewStateCnt++] = 11;
break;
case 13:
- if (curChar == 39 && kind > 759)
- kind = 759;
+ if (curChar == 39 && kind > 760)
+ kind = 760;
break;
case 17:
if ((0xffffff7fffffffffL & l) != 0L)
@@ -10313,30 +10332,30 @@
jjstateSet[jjnewStateCnt++] = 20;
break;
case 22:
- if (curChar == 39 && kind > 761)
- kind = 761;
+ if (curChar == 39 && kind > 762)
+ kind = 762;
break;
case 23:
if (curChar != 45)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
case 24:
if ((0xffffffffffffdbffL & l) == 0L)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
case 25:
- if ((0x2400L & l) != 0L && kind > 812)
- kind = 812;
+ if ((0x2400L & l) != 0L && kind > 815)
+ kind = 815;
break;
case 26:
- if (curChar == 10 && kind > 812)
- kind = 812;
+ if (curChar == 10 && kind > 815)
+ kind = 815;
break;
case 27:
if (curChar == 13)
@@ -10349,15 +10368,15 @@
case 34:
if (curChar != 36)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -10375,8 +10394,8 @@
case 39:
if (curChar != 36)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAddTwoStates(39, 40);
break;
case 40:
@@ -10386,26 +10405,26 @@
case 41:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAdd(41);
break;
case 42:
- if (curChar == 7 && kind > 826)
- kind = 826;
+ if (curChar == 7 && kind > 829)
+ kind = 829;
break;
case 43:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(9, 15);
break;
case 44:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAdd(44);
break;
case 45:
@@ -10419,8 +10438,8 @@
case 48:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 752)
- kind = 752;
+ if (kind > 753)
+ kind = 753;
jjCheckNAdd(48);
break;
case 49:
@@ -10434,22 +10453,22 @@
case 51:
if (curChar != 46)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
break;
case 52:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
break;
case 53:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAddStates(35, 37);
break;
case 54:
@@ -10467,8 +10486,8 @@
case 57:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(57);
break;
case 58:
@@ -10488,12 +10507,12 @@
jjstateSet[jjnewStateCnt++] = 60;
break;
case 62:
- if (curChar == 39 && kind > 758)
- kind = 758;
+ if (curChar == 39 && kind > 759)
+ kind = 759;
break;
case 64:
- if (curChar == 39 && kind > 765)
- kind = 765;
+ if (curChar == 39 && kind > 766)
+ kind = 766;
break;
case 67:
case 69:
@@ -10509,8 +10528,8 @@
jjstateSet[jjnewStateCnt++] = 69;
break;
case 71:
- if (curChar == 39 && kind > 760)
- kind = 760;
+ if (curChar == 39 && kind > 761)
+ kind = 761;
break;
case 72:
if (curChar == 38)
@@ -10533,8 +10552,8 @@
jjstateSet[jjnewStateCnt++] = 75;
break;
case 77:
- if (curChar == 34 && kind > 823)
- kind = 823;
+ if (curChar == 34 && kind > 826)
+ kind = 826;
break;
case 79:
if (curChar == 32)
@@ -10561,14 +10580,14 @@
jjstateSet[jjnewStateCnt++] = 91;
break;
case 91:
- if ((0xffff7fffffffffffL & l) != 0L && kind > 810)
- kind = 810;
+ if ((0xffff7fffffffffffL & l) != 0L && kind > 813)
+ kind = 813;
break;
case 93:
if (curChar != 47)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
default : break;
@@ -10591,8 +10610,8 @@
jjCheckNAddTwoStates(30, 32);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if ((0x20000000200000L & l) != 0L)
@@ -10613,8 +10632,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -10625,8 +10644,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -10637,8 +10656,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -10655,8 +10674,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -10667,8 +10686,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -10679,13 +10698,13 @@
jjstateSet[jjnewStateCnt++] = 85;
else if ((0x1000000010L & l) != 0L)
{
- if (kind > 768)
- kind = 768;
+ if (kind > 769)
+ kind = 769;
}
if ((0x10000000100000L & l) != 0L)
{
- if (kind > 769)
- kind = 769;
+ if (kind > 770)
+ kind = 770;
}
break;
case 63:
@@ -10736,8 +10755,8 @@
jjCheckNAddStates(28, 31);
break;
case 24:
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(25, 27);
break;
case 29:
@@ -10757,21 +10776,21 @@
jjstateSet[jjnewStateCnt++] = 31;
break;
case 33:
- if (curChar == 93 && kind > 816)
- kind = 816;
+ if (curChar == 93 && kind > 819)
+ kind = 819;
break;
case 34:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -10781,15 +10800,15 @@
case 39:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(58, 59);
break;
case 41:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 41;
break;
case 46:
@@ -10814,32 +10833,32 @@
jjAddStates(48, 55);
break;
case 80:
- if ((0x1000000010L & l) != 0L && kind > 768)
- kind = 768;
+ if ((0x1000000010L & l) != 0L && kind > 769)
+ kind = 769;
break;
case 82:
- if ((0x10000000100000L & l) != 0L && kind > 769)
- kind = 769;
+ if ((0x10000000100000L & l) != 0L && kind > 770)
+ kind = 770;
break;
case 84:
if ((0x10000000100000L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 85;
break;
case 85:
- if ((0x8000000080000L & l) != 0L && kind > 770)
- kind = 770;
+ if ((0x8000000080000L & l) != 0L && kind > 771)
+ kind = 771;
break;
case 87:
if ((0x4000000040L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 88;
break;
case 88:
- if ((0x400000004000L & l) != 0L && kind > 771)
- kind = 771;
+ if ((0x400000004000L & l) != 0L && kind > 772)
+ kind = 772;
break;
case 91:
- if (kind > 810)
- kind = 810;
+ if (kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -10859,8 +10878,8 @@
case 0:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -10869,8 +10888,8 @@
case 1:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -10881,8 +10900,8 @@
case 97:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -10893,8 +10912,8 @@
case 95:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -10910,8 +10929,8 @@
case 66:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -10922,8 +10941,8 @@
case 16:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -10958,22 +10977,22 @@
case 24:
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(25, 27);
break;
case 34:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -10983,15 +11002,15 @@
case 39:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(58, 59);
break;
case 41:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 41;
break;
case 59:
@@ -11007,8 +11026,8 @@
jjAddStates(45, 47);
break;
case 91:
- if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 810)
- kind = 810;
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -11052,7 +11071,7 @@
{
case 0:
if (curChar == 47)
- kind = 814;
+ kind = 817;
break;
case 1:
if (curChar == 42)
@@ -11106,203 +11125,203 @@
switch (pos)
{
case 0:
- if ((active2 & 0xfe00000000000000L) != 0L || (active3 & 0x7ffffL) != 0L || (active11 & 0x10000000L) != 0L)
- {
- jjmatchedKind = 821;
- return 16;
- }
- if ((active12 & 0x10L) != 0L)
+ if ((active12 & 0x20L) != 0L)
return 94;
- if ((active12 & 0x20000000L) != 0L)
+ if ((active12 & 0x40000000L) != 0L)
return 63;
- if ((active5 & 0x7fffff000000000L) != 0L || (active11 & 0x200000000L) != 0L)
+ if ((active12 & 0x480002000000L) != 0L)
+ return 92;
+ if ((active5 & 0x7fffff000000000L) != 0L || (active11 & 0x400000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 95;
}
- if ((active12 & 0x90001000000L) != 0L)
- return 92;
- if ((active11 & 0x1000L) != 0L)
+ if ((active11 & 0x2000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 1;
}
- if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0x1ffffffffffffc0L) != 0L || (active3 & 0xff8001fffff80000L) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xf800000000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffc000001ffffffL) != 0L || (active11 & 0x4e55ef27efffL) != 0L)
+ if ((active2 & 0xfe00000000000000L) != 0L || (active3 & 0x7ffffL) != 0L || (active11 & 0x20000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
+ return 16;
+ }
+ if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x635001b00000L) != 0L || (active12 & 0x1000000000L) != 0L)
+ return 96;
+ if ((active12 & 0x20000400L) != 0L)
+ return 97;
+ if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0x1ffffffffffffc0L) != 0L || (active3 & 0xff8001fffff80000L) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xf800000000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfff8000001ffffffL) != 0L || (active11 & 0x9cabde4fdfffL) != 0L)
+ {
+ jjmatchedKind = 824;
return 96;
}
- if ((active10 & 0x3fffffe000000L) != 0L)
+ if ((active10 & 0x7fffffe000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 66;
}
- if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x31a800d80000L) != 0L || (active12 & 0x200000000L) != 0L)
- return 96;
- if ((active12 & 0x10000200L) != 0L)
- return 97;
- if ((active12 & 0x600000L) != 0L)
+ if ((active12 & 0xc00000L) != 0L)
return 23;
return -1;
case 1:
- if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x3efd5feeffffL) != 0L)
+ if ((active12 & 0x480000000000L) != 0L)
+ return 90;
+ if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x820540220000L) != 0L)
+ return 96;
+ if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x7dfabfddffffL) != 0L)
{
if (jjmatchedPos != 1)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 1;
}
return 96;
}
- if ((active12 & 0x90000000000L) != 0L)
- return 90;
- if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x4102a0110000L) != 0L)
- return 96;
return -1;
case 2:
- if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0x57fffffeefffL) != 0L)
+ if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x500000002000L) != 0L)
+ return 96;
+ if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0xaffffffddfffL) != 0L)
{
if (jjmatchedPos != 2)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 2;
}
return 96;
}
- if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x280000001000L) != 0L)
- return 96;
return -1;
case 3:
- if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0xa0025f00010e0000L) != 0L || (active11 & 0x180100e3c7L) != 0L)
- return 96;
- if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0x5ffda0fffef1fffeL) != 0L || (active11 & 0x7fe7fefe0c38L) != 0L)
+ if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0xbffb41fffef1fffeL) != 0L || (active11 & 0xffcffdfc1870L) != 0L)
{
if (jjmatchedPos != 3)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 3;
}
return 96;
}
+ if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0x4004be00010e0000L) != 0L || (active11 & 0x300201c78fL) != 0L)
+ return 96;
if ((active2 & 0x8000000000000000L) != 0L)
return 98;
return -1;
case 4:
- if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x1da0a060001000L) != 0L || (active11 & 0x430022204809L) != 0L)
- return 96;
- if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0x5fe01e5f9ef5effeL) != 0L || (active11 & 0x3ce7ddde05b4L) != 0L)
+ if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0xbfc03cbf9ef5effeL) != 0L || (active11 & 0x79cfbbbc0b68L) != 0L)
{
if (jjmatchedPos != 4)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 4;
}
return 96;
}
+ if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x3b414060001000L) != 0L || (active11 & 0x860044409012L) != 0L)
+ return 96;
if ((active2 & 0x8000000000000000L) != 0L)
return 98;
return -1;
case 5:
- if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0x5ff01e071e75effeL) != 0L || (active11 & 0x3ce7dfee0514L) != 0L)
+ if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x1000a880800000L) != 0L || (active11 & 0x200140L) != 0L)
+ return 96;
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 98;
+ if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0xbfe03c171e75effeL) != 0L || (active11 & 0x79cfbfdc0a28L) != 0L)
{
if (jjmatchedPos != 5)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 5;
}
return 96;
}
- if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x8005880800000L) != 0L || (active11 & 0x1000a0L) != 0L)
- return 96;
- if ((active2 & 0x8000000000000000L) != 0L)
- return 98;
return -1;
case 6:
- if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x1f2000070241e000L) != 0L || (active11 & 0x18c100040500L) != 0L)
+ if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x3e4000070241e000L) != 0L || (active11 & 0x318200080a00L) != 0L)
return 96;
- if ((active2 & 0x8000000000000000L) != 0L)
- return 98;
- if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x40d01e001c340ffeL) != 0L || (active11 & 0x2426dffa0014L) != 0L)
+ if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x81a03c101c340ffeL) != 0L || (active11 & 0x484dbff40028L) != 0L)
{
if (jjmatchedPos != 6)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 6;
}
return 96;
}
- return -1;
- case 7:
- if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0x50000000300004L) != 0L || (active11 & 0x444020004L) != 0L)
- return 96;
if ((active2 & 0x8000000000000000L) != 0L)
return 98;
- if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0x50801e001c05cffaL) != 0L || (active11 & 0x24229bf80010L) != 0L)
+ return -1;
+ case 7:
+ if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0xa1003c001c05cffaL) != 0L || (active11 & 0x484537f00020L) != 0L)
{
if (jjmatchedPos != 7)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 7;
}
return 96;
}
+ if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0xa0001000300004L) != 0L || (active11 & 0x888040008L) != 0L)
+ return 96;
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 98;
return -1;
case 8:
- if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x10001e001805c87aL) != 0L || (active11 & 0x24208be80010L) != 0L)
+ if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x20003c001805c87aL) != 0L || (active11 & 0x484117d00020L) != 0L)
{
if (jjmatchedPos != 8)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 8;
}
return 96;
}
- if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x4080000004000780L) != 0L || (active11 & 0x210100000L) != 0L)
+ if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x8100000004000780L) != 0L || (active11 & 0x420200000L) != 0L)
return 96;
return -1;
case 9:
- if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x1e001801cc7aL) != 0L || (active11 & 0x200081680010L) != 0L)
+ if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x2000000000040100L) != 0L || (active11 & 0x84015000000L) != 0L)
+ return 96;
+ if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x3c001801cc7aL) != 0L || (active11 & 0x400102d00020L) != 0L)
{
if (jjmatchedPos != 9)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 9;
}
return 96;
}
- if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x1000000000040100L) != 0L || (active11 & 0x4200a800000L) != 0L)
- return 96;
return -1;
case 10:
- if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x81400000L) != 0L)
+ if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x102800000L) != 0L)
return 96;
- if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x1e001001c402L) != 0L || (active11 & 0x200000280010L) != 0L)
+ if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x3c001001c402L) != 0L || (active11 & 0x400000500020L) != 0L)
{
if (jjmatchedPos != 10)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 10;
}
return 96;
}
return -1;
case 11:
- if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x1e0010014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x3c0010014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 11)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 11;
}
return 96;
}
- if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x80010L) != 0L)
+ if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x100020L) != 0L)
return 96;
return -1;
case 12:
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x1e0000014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x3c0000014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 12;
return 96;
}
@@ -11312,9 +11331,9 @@
case 13:
if ((active1 & 0x4000000000200000L) != 0L || (active2 & 0x8000L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x10000L) != 0L || (active6 & 0x8000003000000L) != 0L || (active7 & 0x4000400000008000L) != 0L || (active9 & 0x800000000024000L) != 0L || (active10 & 0x10000L) != 0L)
return 96;
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x1e0000004472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x3c0000004472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 13;
return 96;
}
@@ -11322,19 +11341,19 @@
case 14:
if ((active0 & 0x20000000000L) != 0L || (active1 & 0x100084800000200L) != 0L || (active5 & 0x280L) != 0L || (active6 & 0x30000000000L) != 0L || (active7 & 0x100100000000L) != 0L || (active8 & 0x8000000000000000L) != 0L || (active9 & 0x5000004200010000L) != 0L || (active10 & 0x4402L) != 0L)
return 96;
- if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 14;
return 96;
}
return -1;
case 15:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 15)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 15;
}
return 96;
@@ -11343,11 +11362,11 @@
return 96;
return -1;
case 16:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 16)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 16;
}
return 96;
@@ -11358,9 +11377,9 @@
case 17:
if ((active1 & 0x2000000080L) != 0L || (active8 & 0x400000000000000L) != 0L)
return 96;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 17;
return 96;
}
@@ -11368,20 +11387,20 @@
case 18:
if ((active8 & 0xb00000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x10L) != 0L)
return 96;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 18)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 18;
}
return 96;
}
return -1;
case 19:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 19;
return 96;
}
@@ -11391,27 +11410,27 @@
case 20:
if ((active0 & 0x1000000L) != 0L || (active1 & 0x8000040L) != 0L || (active2 & 0x100000000000000L) != 0L || (active7 & 0x200000000L) != 0L)
return 96;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 20;
return 96;
}
return -1;
case 21:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 21;
return 96;
}
- if ((active2 & 0x2000L) != 0L || (active10 & 0xc0000000020L) != 0L)
+ if ((active2 & 0x2000L) != 0L || (active10 & 0x180000000020L) != 0L)
return 96;
return -1;
case 22:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 22;
return 96;
}
@@ -11419,39 +11438,39 @@
return 96;
return -1;
case 23:
- if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x100000000040L) != 0L)
+ if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x200000000040L) != 0L)
return 96;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x20000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x40000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 23;
return 96;
}
return -1;
case 24:
- if ((active6 & 0x20000000L) != 0L || (active10 & 0x20000000000L) != 0L)
+ if ((active6 & 0x20000000L) != 0L || (active10 & 0x40000000000L) != 0L)
return 96;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 24;
return 96;
}
return -1;
case 25:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 25;
return 96;
}
- if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x200000L) != 0L)
+ if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x400000L) != 0L)
return 96;
return -1;
case 26:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 26;
return 96;
}
@@ -11459,9 +11478,9 @@
return 96;
return -1;
case 27:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 27;
return 96;
}
@@ -11469,17 +11488,17 @@
case 28:
if ((active8 & 0x200000000000000L) != 0L)
return 96;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 28;
return 96;
}
return -1;
case 29:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 29;
return 96;
}
@@ -11487,17 +11506,17 @@
case 30:
if ((active1 & 0x400000000000000L) != 0L)
return 96;
- if ((active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 30;
return 96;
}
return -1;
case 31:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 31;
return 96;
}
@@ -11505,9 +11524,9 @@
return 96;
return -1;
case 32:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 32;
return 96;
}
@@ -11534,74 +11553,76 @@
{
case 33:
jjmatchedKind = 1;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000L);
case 34:
- return jjStopAtPos(0, 798);
+ return jjStopAtPos(0, 799);
case 36:
- return jjStartNfaWithStates_2(0, 801, 96);
+ return jjStartNfaWithStates_2(0, 804, 96);
case 37:
- return jjStopAtPos(0, 793);
+ return jjStopAtPos(0, 794);
+ case 38:
+ return jjStopAtPos(0, 802);
case 39:
- return jjStartNfaWithStates_2(0, 797, 63);
+ return jjStartNfaWithStates_2(0, 798, 63);
case 40:
- return jjStopAtPos(0, 766);
- case 41:
return jjStopAtPos(0, 767);
+ case 41:
+ return jjStopAtPos(0, 768);
case 42:
- jjmatchedKind = 791;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000000L);
- case 43:
- return jjStopAtPos(0, 788);
- case 44:
- return jjStopAtPos(0, 778);
- case 45:
- jjmatchedKind = 789;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000L);
- case 46:
- jjmatchedKind = 777;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
- case 47:
jjmatchedKind = 792;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x90000000000L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000000L);
+ case 43:
+ return jjStopAtPos(0, 789);
+ case 44:
+ return jjStopAtPos(0, 779);
+ case 45:
+ jjmatchedKind = 790;
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000L);
+ case 46:
+ jjmatchedKind = 778;
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L);
+ case 47:
+ jjmatchedKind = 793;
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x480000000000L);
case 58:
- jjmatchedKind = 783;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L);
+ jjmatchedKind = 784;
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000000L);
case 59:
- return jjStopAtPos(0, 776);
+ return jjStopAtPos(0, 777);
case 60:
- jjmatchedKind = 781;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x50000L);
+ jjmatchedKind = 782;
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000a0000L);
case 61:
- jjmatchedKind = 779;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
- case 62:
jjmatchedKind = 780;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
+ case 62:
+ jjmatchedKind = 781;
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L);
case 63:
- return jjStopAtPos(0, 782);
+ return jjStopAtPos(0, 783);
case 91:
- return jjStopAtPos(0, 774);
- case 93:
return jjStopAtPos(0, 775);
+ case 93:
+ return jjStopAtPos(0, 776);
case 94:
- return jjStopAtPos(0, 800);
+ return jjStopAtPos(0, 801);
case 65:
case 97:
jjmatchedKind = 3;
- return jjMoveStringLiteralDfa1_2(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x110000180000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x220000300000L, 0x0L);
case 66:
case 98:
- return jjMoveStringLiteralDfa1_2(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L, 0x0L);
case 67:
case 99:
jjmatchedKind = 52;
- return jjMoveStringLiteralDfa1_2(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa000c00000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x14001800000L, 0x0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000L, 0x0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L, 0x0L);
case 70:
case 102:
return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x1fffff80000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
@@ -11614,67 +11635,67 @@
return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x1f80000000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa0010000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x140020000L, 0x0L);
case 74:
case 106:
return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0xffe0000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 75:
case 107:
jjmatchedKind = 296;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000000L, 0x0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
case 77:
case 109:
jjmatchedKind = 322;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x200000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x400000000000L, 0x0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L, 0x0L);
case 79:
case 111:
return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xf800000000000000L, 0x3fffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x440000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x880000000L, 0x0L);
case 81:
case 113:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x20000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x40000000000L, 0x0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x80000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x100000000000L, 0x0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x45000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x8a000000000L, 0x0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x400000020000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x800000040000L, 0x0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3fffffe000000L, 0x0L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffffe000000L, 0x0L, 0x0L);
case 86:
case 118:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3ffc000000000000L, 0x2000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7ff8000000000000L, 0x4000000L, 0x0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000000000000000L, 0xc200fffL, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000000000000L, 0x18401fffL, 0x0L);
case 88:
case 120:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000L, 0x0L);
case 89:
case 121:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x6000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000L, 0x0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000L, 0x0L);
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000L, 0x0L);
case 123:
- return jjStartNfaWithStates_2(0, 772, 94);
+ return jjStartNfaWithStates_2(0, 773, 94);
case 124:
- jjmatchedKind = 799;
- return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x4000000L);
+ jjmatchedKind = 800;
+ return jjMoveStringLiteralDfa1_2(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
case 125:
- return jjStopAtPos(0, 773);
+ return jjStopAtPos(0, 774);
case 126:
return jjStopAtPos(0, 2);
default :
@@ -11691,55 +11712,59 @@
switch(curChar)
{
case 42:
- if ((active12 & 0x80000000000L) != 0L)
+ if ((active12 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 811;
+ jjmatchedKind = 814;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x10000000000L);
+ return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x80000000000L);
case 46:
- if ((active12 & 0x10000000L) != 0L)
- return jjStopAtPos(1, 796);
+ if ((active12 & 0x20000000L) != 0L)
+ return jjStopAtPos(1, 797);
break;
case 47:
- if ((active12 & 0x20000000000L) != 0L)
- return jjStopAtPos(1, 809);
+ if ((active12 & 0x100000000000L) != 0L)
+ return jjStopAtPos(1, 812);
break;
case 58:
- if ((active12 & 0x400000000L) != 0L)
- return jjStopAtPos(1, 802);
+ if ((active12 & 0x2000000000L) != 0L)
+ return jjStopAtPos(1, 805);
+ break;
+ case 60:
+ if ((active12 & 0x800000000L) != 0L)
+ return jjStopAtPos(1, 803);
break;
case 61:
- if ((active12 & 0x10000L) != 0L)
- return jjStopAtPos(1, 784);
- else if ((active12 & 0x20000L) != 0L)
+ if ((active12 & 0x20000L) != 0L)
return jjStopAtPos(1, 785);
- else if ((active12 & 0x80000L) != 0L)
- return jjStopAtPos(1, 787);
+ else if ((active12 & 0x40000L) != 0L)
+ return jjStopAtPos(1, 786);
+ else if ((active12 & 0x100000L) != 0L)
+ return jjStopAtPos(1, 788);
break;
case 62:
- if ((active12 & 0x40000L) != 0L)
- return jjStopAtPos(1, 786);
- else if ((active12 & 0x400000L) != 0L)
- return jjStopAtPos(1, 790);
- else if ((active12 & 0x8000000L) != 0L)
- return jjStopAtPos(1, 795);
+ if ((active12 & 0x80000L) != 0L)
+ return jjStopAtPos(1, 787);
+ else if ((active12 & 0x800000L) != 0L)
+ return jjStopAtPos(1, 791);
+ else if ((active12 & 0x10000000L) != 0L)
+ return jjStopAtPos(1, 796);
break;
case 65:
case 97:
- return jjMoveStringLiteralDfa2_2(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0x7fc000000000000L, active11, 0x200443c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0xff8000000000000L, active11, 0x400887880000L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa2_2(active0, 0x70L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa2_2(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x1000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x2000000000L, active12, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa2_2(active0, 0x700L, active1, 0L, active2, 0L, active3, 0x2000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa2_2(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xd800000002000000L, active11, 0x84000026001L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xb000000002000000L, active11, 0x10800004c003L, active12, 0L);
case 70:
case 102:
if ((active5 & 0x8000000000000000L) != 0L)
@@ -11747,18 +11772,18 @@
jjmatchedKind = 383;
jjmatchedPos = 1;
}
- else if ((active11 & 0x10000L) != 0L)
- return jjStartNfaWithStates_2(1, 720, 96);
- return jjMoveStringLiteralDfa2_2(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000L, active12, 0L);
+ else if ((active11 & 0x20000L) != 0L)
+ return jjStartNfaWithStates_2(1, 721, 96);
+ return jjMoveStringLiteralDfa2_2(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
case 71:
case 103:
return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 72:
case 104:
- return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0xeL, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0x1cL, active12, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa2_2(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x2000000000000000L, active11, 0x8000001f0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x4000000000000000L, active11, 0x10000003e0L, active12, 0L);
case 75:
case 107:
return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -11767,7 +11792,7 @@
return jjMoveStringLiteralDfa2_2(active0, 0x80000001f000L, active1, 0xf000L, active2, 0xc00000000000000L, active3, 0x8000400006000000L, active4, 0L, active5, 0L, active6, 0x1c00000000002L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x1000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x2000L, active12, 0L);
case 78:
case 110:
if ((active4 & 0x10L) != 0L)
@@ -11782,7 +11807,7 @@
jjmatchedKind = 387;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_2(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0xffc000000L, active11, 0x1000b0000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1ffc000000L, active11, 0x200160000000L, active12, 0L);
case 79:
case 111:
if ((active3 & 0x800000000000L) != 0L)
@@ -11800,10 +11825,10 @@
jjmatchedKind = 640;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_2(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x40a300008200L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x814600010400L, active12, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa2_2(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0x7000000000L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0xe000000000L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x8L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xfffffffe00000000L, active9, 0x7fffffL, active10, 0L, active11, 0L, active12, 0L);
@@ -11814,7 +11839,7 @@
jjmatchedKind = 393;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_2(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0xc200c00L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0x18401800L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x2000000L) != 0L)
@@ -11827,7 +11852,7 @@
jjmatchedKind = 281;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_2(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3f8000000000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x7f0000000000L, active11, 0x20000000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x100000000L) != 0L)
@@ -11835,10 +11860,10 @@
jjmatchedKind = 32;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_2(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x1c00000000000L, active11, 0x40000100000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x3800000000000L, active11, 0x80000200000L, active12, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa2_2(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x2000000c00000L, active11, 0x20000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_2(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x4000000c00000L, active11, 0x40000000000L, active12, 0L);
case 86:
case 118:
return jjMoveStringLiteralDfa2_2(active0, 0x2000000000L, active1, 0L, active2, 0L, active3, 0x40L, active4, 0L, active5, 0L, active6, 0x3c0000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -11851,8 +11876,8 @@
return jjStartNfaWithStates_2(1, 51, 96);
return jjMoveStringLiteralDfa2_2(active0, 0L, active1, 0L, active2, 0x1c0000000000020L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x3c0000000000L, active10, 0x1000000L, active11, 0L, active12, 0L);
case 124:
- if ((active12 & 0x4000000L) != 0L)
- return jjStopAtPos(1, 794);
+ if ((active12 & 0x8000000L) != 0L)
+ return jjStopAtPos(1, 795);
break;
default :
break;
@@ -11871,14 +11896,14 @@
switch(curChar)
{
case 43:
- if ((active12 & 0x10000000000L) != 0L)
- return jjStopAtPos(2, 808);
+ if ((active12 & 0x80000000000L) != 0L)
+ return jjStopAtPos(2, 811);
break;
case 65:
case 97:
if ((active0 & 0x100L) != 0L)
return jjStartNfaWithStates_2(2, 8, 96);
- return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x8000000ffcL, active11, 0x14100c006400L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x10000000ffcL, active11, 0x28201800c800L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0x20000000020000L, active2, 0L, active3, 0L, active4, 0x100100000000000L, active5, 0L, active6, 0x8000000000000000L, active7, 0L, active8, 0L, active9, 0x1c07e00000000L, active10, 0x4000000L, active11, 0L, active12, 0L);
@@ -11891,7 +11916,7 @@
jjmatchedKind = 149;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x10c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x21880000L, active12, 0L);
case 68:
case 100:
if ((active0 & 0x200L) != 0L)
@@ -11912,14 +11937,14 @@
return jjStartNfaWithStates_2(2, 385, 96);
else if ((active6 & 0x400000L) != 0L)
return jjStartNfaWithStates_2(2, 406, 96);
- return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x4000001020000000L, active11, 0x20000010L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x8000002020000000L, active11, 0x40000020L, active12, 0L);
case 69:
case 101:
if ((active0 & 0x100000L) != 0L)
return jjStartNfaWithStates_2(2, 20, 96);
else if ((active6 & 0x10L) != 0L)
return jjStartNfaWithStates_2(2, 388, 96);
- return jjMoveStringLiteralDfa3_2(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0xa0001f0000401000L, active11, 0x2000000000fL, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0x40003e0000401000L, active11, 0x4000000001fL, active12, 0L);
case 70:
case 102:
if ((active7 & 0x200L) != 0L)
@@ -11927,14 +11952,14 @@
jjmatchedKind = 457;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_2(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x1c00000000000L, active11, 0x80000080000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x3800000000000L, active11, 0x100000100000L, active12, 0L);
case 71:
case 103:
if ((active0 & 0x2000000000L) != 0L)
return jjStartNfaWithStates_2(2, 37, 96);
else if ((active4 & 0x200000000000L) != 0L)
return jjStartNfaWithStates_2(2, 301, 96);
- return jjMoveStringLiteralDfa3_2(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000L, active12, 0L);
case 72:
case 104:
return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x8020000000000L, active6, 0x4000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -11942,7 +11967,7 @@
case 105:
if ((active6 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_2(2, 432, 96);
- return jjMoveStringLiteralDfa3_2(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x22000c007e000L, active11, 0x200800L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x44000c007e000L, active11, 0x401000L, active12, 0L);
case 74:
case 106:
return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -11961,14 +11986,14 @@
jjmatchedKind = 545;
jjmatchedPos = 2;
}
- else if ((active11 & 0x1000L) != 0L)
- return jjStartNfaWithStates_2(2, 716, 96);
- return jjMoveStringLiteralDfa3_2(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x1c000000000000L, active11, 0xa82000000L, active12, 0L);
+ else if ((active11 & 0x2000L) != 0L)
+ return jjStartNfaWithStates_2(2, 717, 96);
+ return jjMoveStringLiteralDfa3_2(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x38000000000000L, active11, 0x1504000000L, active12, 0L);
case 77:
case 109:
if ((active9 & 0x10000000000L) != 0L)
return jjStartNfaWithStates_2(2, 616, 96);
- return jjMoveStringLiteralDfa3_2(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x8000020000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x10000040000L, active12, 0L);
case 78:
case 110:
if ((active5 & 0x800000L) != 0L)
@@ -11976,10 +12001,10 @@
jjmatchedKind = 343;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_2(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x2000008020L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x4000010040L, active12, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa3_2(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x200000L, active12, 0L);
case 80:
case 112:
if ((active3 & 0x4000L) != 0L)
@@ -11991,7 +12016,7 @@
return jjStartNfaWithStates_2(2, 250, 96);
else if ((active5 & 0x8L) != 0L)
return jjStartNfaWithStates_2(2, 323, 96);
- return jjMoveStringLiteralDfa3_2(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x2201000002L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x4201000002L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -12007,7 +12032,7 @@
jjmatchedKind = 422;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_2(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x1fe0000000000000L, active11, 0x4040000200L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x3fc0000000000000L, active11, 0x8080000400L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x10L) != 0L)
@@ -12015,7 +12040,7 @@
jjmatchedKind = 4;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_2(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x4002000000L, active11, 0x400000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x9002000000L, active11, 0x800000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x400000000000L) != 0L)
@@ -12041,7 +12066,7 @@
jjmatchedKind = 530;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_2(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x4000010001c0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x800002000380L, active12, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0x1000000000000L, active2, 0x4000000000000L, active3, 0x1800000100000008L, active4, 0L, active5, 0L, active6, 0L, active7, 0x780000000000L, active8, 0x10000000L, active9, 0x8000000000000L, active10, 0x180000L, active11, 0L, active12, 0L);
@@ -12067,7 +12092,7 @@
jjmatchedKind = 330;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L, active12, 0L);
case 89:
case 121:
if ((active0 & 0x40000L) != 0L)
@@ -12084,7 +12109,7 @@
jjmatchedKind = 297;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_2(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_2(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x20000000000L, active12, 0L);
case 90:
case 122:
return jjMoveStringLiteralDfa3_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -12107,15 +12132,15 @@
case 45:
return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 49:
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x800000000000L, active11, 0L);
- case 51:
return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1000000000000L, active11, 0L);
+ case 51:
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000000000L, active11, 0L);
case 56:
- if ((active10 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_2(3, 686, 96);
+ if ((active10 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_2(3, 687, 96);
break;
case 95:
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0x60000000200002L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0xc0000000200002L, active11, 0x400000000000L);
case 65:
case 97:
if ((active2 & 0x40L) != 0L)
@@ -12125,14 +12150,14 @@
}
else if ((active4 & 0x20000000L) != 0L)
return jjStartNfaWithStates_2(3, 285, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x1400001000L, active11, 0x400041000000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x2400001000L, active11, 0x800082000000L);
case 66:
case 98:
if ((active0 & 0x800000000000L) != 0L)
return jjStartNfaWithStates_2(3, 47, 96);
else if ((active1 & 0x4000L) != 0L)
return jjStartNfaWithStates_2(3, 78, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000800000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000800000L, active11, 0L);
case 67:
case 99:
if ((active2 & 0x4000000000L) != 0L)
@@ -12145,7 +12170,7 @@
jjmatchedKind = 203;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_2(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x100000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_2(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x200000002000000L, active11, 0L);
case 68:
case 100:
if ((active3 & 0x200000000000000L) != 0L)
@@ -12160,9 +12185,9 @@
jjmatchedKind = 453;
jjmatchedPos = 3;
}
- else if ((active10 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_2(3, 689, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x20L);
+ else if ((active10 & 0x4000000000000L) != 0L)
+ return jjStartNfaWithStates_2(3, 690, 96);
+ return jjMoveStringLiteralDfa4_2(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x40L);
case 69:
case 101:
if ((active0 & 0x400000000000000L) != 0L)
@@ -12207,9 +12232,9 @@
return jjStartNfaWithStates_2(3, 659, 96);
else if ((active10 & 0x1000000L) != 0L)
return jjStartNfaWithStates_2(3, 664, 96);
- else if ((active11 & 0x8000L) != 0L)
- return jjStartNfaWithStates_2(3, 719, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0x6820000000L, active11, 0x20000000L);
+ else if ((active11 & 0x10000L) != 0L)
+ return jjStartNfaWithStates_2(3, 720, 96);
+ return jjMoveStringLiteralDfa4_2(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0xc820000000L, active11, 0x40000000L);
case 70:
case 102:
if ((active0 & 0x4000000L) != 0L)
@@ -12219,7 +12244,7 @@
break;
case 71:
case 103:
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x800001e000L, active11, 0x100000000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x1000001e000L, active11, 0x200000000L);
case 72:
case 104:
if ((active0 & 0x2000000000000L) != 0L)
@@ -12228,29 +12253,29 @@
return jjStartNfaWithStates_2(3, 185, 96);
else if ((active6 & 0x1000000000L) != 0L)
return jjStartNfaWithStates_2(3, 420, 96);
- else if ((active11 & 0x40L) != 0L)
+ else if ((active11 & 0x80L) != 0L)
{
- jjmatchedKind = 710;
+ jjmatchedKind = 711;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_2(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0xc00180L);
+ return jjMoveStringLiteralDfa4_2(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x1800300L);
case 73:
case 105:
- return jjMoveStringLiteralDfa4_2(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x200000200000004L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x400001200000004L, active11, 0x100100000L);
case 75:
case 107:
if ((active7 & 0x10L) != 0L)
return jjStartNfaWithStates_2(3, 452, 96);
else if ((active8 & 0x80L) != 0L)
return jjStartNfaWithStates_2(3, 519, 96);
- else if ((active10 & 0x8000000000000000L) != 0L)
+ else if ((active11 & 0x1L) != 0L)
{
- jjmatchedKind = 703;
+ jjmatchedKind = 704;
jjmatchedPos = 3;
}
- else if ((active11 & 0x200L) != 0L)
- return jjStartNfaWithStates_2(3, 713, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x40001L);
+ else if ((active11 & 0x400L) != 0L)
+ return jjStartNfaWithStates_2(3, 714, 96);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80002L);
case 76:
case 108:
if ((active0 & 0x20000000000000L) != 0L)
@@ -12272,9 +12297,9 @@
}
else if ((active7 & 0x80L) != 0L)
return jjStartNfaWithStates_2(3, 455, 96);
- else if ((active11 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_2(3, 739, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x100000000000L);
+ else if ((active11 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_2(3, 740, 96);
+ return jjMoveStringLiteralDfa4_2(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x200000000000L);
case 77:
case 109:
if ((active3 & 0x2000000000L) != 0L)
@@ -12284,7 +12309,7 @@
jjmatchedKind = 657;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_2(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x200000L);
case 78:
case 110:
if ((active4 & 0x40000000L) != 0L)
@@ -12300,28 +12325,28 @@
return jjStartNfaWithStates_2(3, 431, 96);
else if ((active9 & 0x4000000000000L) != 0L)
return jjStartNfaWithStates_2(3, 626, 96);
- else if ((active11 & 0x2L) != 0L)
+ else if ((active11 & 0x4L) != 0L)
{
- jjmatchedKind = 705;
+ jjmatchedKind = 706;
jjmatchedPos = 3;
}
- else if ((active11 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_2(3, 740, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x4000200100100ff8L, active11, 0x10000000004L);
+ else if ((active11 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_2(3, 741, 96);
+ return jjMoveStringLiteralDfa4_2(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x8000400100100ff8L, active11, 0x20000000008L);
case 79:
case 111:
if ((active3 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_2(3, 240, 96);
else if ((active4 & 0x800000L) != 0L)
return jjStartNfaWithStates_2(3, 279, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x200000000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x400000000L);
case 80:
case 112:
if ((active2 & 0x20000000000000L) != 0L)
return jjStartNfaWithStates_2(3, 181, 96);
else if ((active8 & 0x2000000L) != 0L)
return jjStartNfaWithStates_2(3, 537, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x800c020400L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x10018040800L);
case 81:
case 113:
return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000L, active11, 0L);
@@ -12347,17 +12372,17 @@
jjmatchedKind = 402;
jjmatchedPos = 3;
}
- else if ((active10 & 0x10000000000L) != 0L)
+ else if ((active10 & 0x20000000000L) != 0L)
{
- jjmatchedKind = 680;
+ jjmatchedKind = 681;
jjmatchedPos = 3;
}
- else if ((active11 & 0x2000L) != 0L)
+ else if ((active11 & 0x4000L) != 0L)
{
- jjmatchedKind = 717;
+ jjmatchedKind = 718;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_2(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x1e0000000000L, active11, 0xa0010004008L);
+ return jjMoveStringLiteralDfa4_2(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x3c0000000000L, active11, 0x140020008010L);
case 83:
case 115:
if ((active2 & 0x80000L) != 0L)
@@ -12368,7 +12393,7 @@
return jjStartNfaWithStates_2(3, 531, 96);
else if ((active9 & 0x10000000000000L) != 0L)
return jjStartNfaWithStates_2(3, 628, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x1800000000400000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x3000000000400000L, active11, 0x800000000L);
case 84:
case 116:
if ((active0 & 0x800000000000000L) != 0L)
@@ -12388,27 +12413,27 @@
return jjStartNfaWithStates_2(3, 419, 96);
else if ((active9 & 0x400000L) != 0L)
return jjStartNfaWithStates_2(3, 598, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x42000200810L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x84000401020L);
case 85:
case 117:
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x1c000000000000L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x38000000000000L, active11, 0x4000000L);
case 86:
case 118:
if ((active6 & 0x400000000000000L) != 0L)
return jjStartNfaWithStates_2(3, 442, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x4000000000L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x8000000000L);
case 87:
case 119:
if ((active8 & 0x200000L) != 0L)
return jjStartNfaWithStates_2(3, 533, 96);
- else if ((active10 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_2(3, 701, 96);
+ else if ((active10 & 0x4000000000000000L) != 0L)
+ return jjStartNfaWithStates_2(3, 702, 96);
return jjMoveStringLiteralDfa4_2(active0, 0x80000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
if ((active6 & 0x20L) != 0L)
return jjStartNfaWithStates_2(3, 389, 96);
- return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x400000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x800000000000000L, active11, 0L);
default :
break;
}
@@ -12426,18 +12451,18 @@
switch(curChar)
{
case 50:
+ if ((active10 & 0x2000000000000L) != 0L)
+ return jjStartNfaWithStates_2(4, 689, 96);
+ break;
+ case 54:
if ((active10 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_2(4, 688, 96);
break;
- case 54:
- if ((active10 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_2(4, 687, 96);
- break;
case 95:
- return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x1e0000040000L, active11, 0xd000000L);
+ return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x3c0000040000L, active11, 0x1a000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa5_2(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x200000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_2(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x400000002000000L, active11, 0L);
case 66:
case 98:
if ((active5 & 0x40000000000L) != 0L)
@@ -12445,9 +12470,9 @@
return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0x80L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000L, active8, 0x3e000000000L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- if ((active11 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_2(4, 744, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x200000000000L);
+ if ((active11 & 0x20000000000L) != 0L)
+ return jjStartNfaWithStates_2(4, 745, 96);
+ return jjMoveStringLiteralDfa5_2(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x400000000000L);
case 68:
case 100:
if ((active3 & 0x100000000L) != 0L)
@@ -12494,21 +12519,21 @@
jjmatchedKind = 622;
jjmatchedPos = 4;
}
- else if ((active10 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_2(4, 679, 96);
- else if ((active10 & 0x4000000000000L) != 0L)
+ else if ((active10 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_2(4, 680, 96);
+ else if ((active10 & 0x8000000000000L) != 0L)
{
- jjmatchedKind = 690;
+ jjmatchedKind = 691;
jjmatchedPos = 4;
}
- else if ((active11 & 0x8L) != 0L)
- return jjStartNfaWithStates_2(4, 707, 96);
- else if ((active11 & 0x800L) != 0L)
+ else if ((active11 & 0x10L) != 0L)
+ return jjStartNfaWithStates_2(4, 708, 96);
+ else if ((active11 & 0x1000L) != 0L)
{
- jjmatchedKind = 715;
+ jjmatchedKind = 716;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_2(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x4018000000000000L, active11, 0x80002e00004L);
+ return jjMoveStringLiteralDfa5_2(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x8030000000000000L, active11, 0x100005c00008L);
case 70:
case 102:
if ((active2 & 0x1000000000L) != 0L)
@@ -12516,9 +12541,9 @@
return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0x60000L, active3, 0x1L, active4, 0L, active5, 0x10000000L, active6, 0L, active7, 0L, active8, 0x800000000000L, active9, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_2(4, 685, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e000L, active11, 0x200000000L);
+ if ((active10 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_2(4, 686, 96);
+ return jjMoveStringLiteralDfa5_2(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100001e000L, active11, 0x400000000L);
case 72:
case 104:
if ((active2 & 0x800000000L) != 0L)
@@ -12537,10 +12562,10 @@
jjmatchedKind = 351;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000000L, active11, 0x10L);
+ return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000000L, active11, 0x20L);
case 73:
case 105:
- return jjMoveStringLiteralDfa5_2(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x1c80000000000000L, active11, 0x46100100080L);
+ return jjMoveStringLiteralDfa5_2(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x3900000000000000L, active11, 0x8c200200100L);
case 75:
case 107:
if ((active1 & 0x800L) != 0L)
@@ -12561,9 +12586,9 @@
jjmatchedKind = 317;
jjmatchedPos = 4;
}
- else if ((active11 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_2(4, 750, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x40020000L);
+ else if ((active11 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_2(4, 751, 96);
+ return jjMoveStringLiteralDfa5_2(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x80040000L);
case 77:
case 109:
return jjMoveStringLiteralDfa5_2(active0, 0x80000000L, active1, 0x3000000L, active2, 0x1c0000000800000L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0x3f800000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0x408000000L, active11, 0L);
@@ -12580,10 +12605,10 @@
return jjStartNfaWithStates_2(4, 65, 96);
else if ((active10 & 0x40000000L) != 0L)
return jjStartNfaWithStates_2(4, 670, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa5_2(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x100100000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa5_2(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x120L);
+ return jjMoveStringLiteralDfa5_2(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x240L);
case 80:
case 112:
if ((active3 & 0x8000000000000L) != 0L)
@@ -12591,7 +12616,7 @@
jjmatchedKind = 243;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x20000000000000L, active11, 0x400L);
+ return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x40000000000000L, active11, 0x800L);
case 82:
case 114:
if ((active0 & 0x800L) != 0L)
@@ -12621,9 +12646,9 @@
return jjStartNfaWithStates_2(4, 444, 96);
else if ((active10 & 0x20000000L) != 0L)
return jjStartNfaWithStates_2(4, 669, 96);
- else if ((active10 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_2(4, 677, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x4000000000L, active11, 0L);
+ else if ((active10 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_2(4, 678, 96);
+ return jjMoveStringLiteralDfa5_2(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x8000000000L, active11, 0L);
case 83:
case 115:
if ((active1 & 0x10000000000000L) != 0L)
@@ -12640,11 +12665,11 @@
return jjStartNfaWithStates_2(4, 454, 96);
else if ((active8 & 0x100000L) != 0L)
return jjStartNfaWithStates_2(4, 532, 96);
- else if ((active11 & 0x1L) != 0L)
- return jjStartNfaWithStates_2(4, 704, 96);
- else if ((active11 & 0x4000L) != 0L)
- return jjStartNfaWithStates_2(4, 718, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x40000800000ff8L, active11, 0L);
+ else if ((active11 & 0x2L) != 0L)
+ return jjStartNfaWithStates_2(4, 705, 96);
+ else if ((active11 & 0x8000L) != 0L)
+ return jjStartNfaWithStates_2(4, 719, 96);
+ return jjMoveStringLiteralDfa5_2(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x80000800000ff8L, active11, 0L);
case 84:
case 116:
if ((active1 & 0x1000000000000L) != 0L)
@@ -12677,10 +12702,10 @@
return jjStartNfaWithStates_2(4, 599, 96);
else if ((active10 & 0x1000L) != 0L)
return jjStartNfaWithStates_2(4, 652, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x1000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x2000000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x8000040000L);
+ return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x10000080000L);
case 86:
case 118:
return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0x2000000000L, active3, 0L, active4, 0L, active5, 0x8000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x300000L, active10, 0x200000000L, active11, 0L);
@@ -12688,11 +12713,11 @@
case 119:
if ((active0 & 0x4000L) != 0L)
return jjStartNfaWithStates_2(4, 14, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x800000000L);
case 88:
case 120:
- if ((active11 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_2(4, 733, 96);
+ if ((active11 & 0x40000000L) != 0L)
+ return jjStartNfaWithStates_2(4, 734, 96);
return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
@@ -12707,9 +12732,9 @@
return jjStartNfaWithStates_2(4, 188, 96);
else if ((active3 & 0x40L) != 0L)
return jjStartNfaWithStates_2(4, 198, 96);
- else if ((active11 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_2(4, 745, 96);
- return jjMoveStringLiteralDfa5_2(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100010000000L);
+ else if ((active11 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_2(4, 746, 96);
+ return jjMoveStringLiteralDfa5_2(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200020000000L);
case 90:
case 122:
return jjMoveStringLiteralDfa5_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x6000000000000000L, active10, 0L, active11, 0L);
@@ -12730,7 +12755,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa6_2(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x10000000000000L, active11, 0x2e00010L);
+ return jjMoveStringLiteralDfa6_2(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x20000000000000L, active11, 0x5c00020L);
case 65:
case 97:
if ((active7 & 0x800000000000000L) != 0L)
@@ -12738,7 +12763,7 @@
jjmatchedKind = 507;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_2(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x140000000740078L, active11, 0x20000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x280000000740078L, active11, 0x40000L);
case 66:
case 98:
return jjMoveStringLiteralDfa6_2(active0, 0xc00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x40000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -12753,7 +12778,7 @@
return jjStartNfaWithStates_2(5, 447, 96);
else if ((active9 & 0x4000000L) != 0L)
return jjStartNfaWithStates_2(5, 602, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x4000100000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x8000200000L);
case 68:
case 100:
if ((active0 & 0x40000000000000L) != 0L)
@@ -12769,7 +12794,7 @@
jjmatchedKind = 515;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_2(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x1e0010000000L, active11, 0L);
+ return jjMoveStringLiteralDfa6_2(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x3c0010000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x4000000000L) != 0L)
@@ -12810,9 +12835,9 @@
return jjStartNfaWithStates_2(5, 663, 96);
else if ((active10 & 0x80000000L) != 0L)
return jjStartNfaWithStates_2(5, 671, 96);
- else if ((active10 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_2(5, 676, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x80000400L);
+ else if ((active10 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_2(5, 677, 96);
+ return jjMoveStringLiteralDfa6_2(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x100000800L);
case 70:
case 102:
if ((active5 & 0x80000000000000L) != 0L)
@@ -12822,20 +12847,20 @@
case 103:
if ((active3 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_2(5, 247, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x200000000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x400000000L);
case 72:
case 104:
if ((active4 & 0x40000000000000L) != 0L)
return jjStartNfaWithStates_2(5, 310, 96);
else if ((active8 & 0x4L) != 0L)
return jjStartNfaWithStates_2(5, 514, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 73:
case 105:
- return jjMoveStringLiteralDfa6_2(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x100000L);
case 75:
case 107:
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x4000000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x8000000L);
case 76:
case 108:
if ((active3 & 0x400000000000L) != 0L)
@@ -12844,7 +12869,7 @@
return jjStartNfaWithStates_2(5, 416, 96);
else if ((active8 & 0x2L) != 0L)
return jjStartNfaWithStates_2(5, 513, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x40000000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x80000000L);
case 77:
case 109:
if ((active9 & 0x20000000L) != 0L)
@@ -12878,17 +12903,17 @@
jjmatchedKind = 478;
jjmatchedPos = 5;
}
- else if ((active11 & 0x80L) != 0L)
- return jjStartNfaWithStates_2(5, 711, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0x680000004000000L, active11, 0x2100000000L);
+ else if ((active11 & 0x100L) != 0L)
+ return jjStartNfaWithStates_2(5, 712, 96);
+ return jjMoveStringLiteralDfa6_2(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0xd00001004000000L, active11, 0x4200000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa6_2(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x1820000200000000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x3040000200000000L, active11, 0x800000000L);
case 80:
case 112:
if ((active7 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_2(5, 490, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x10040000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x20080000L);
case 81:
case 113:
return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -12912,7 +12937,7 @@
jjmatchedKind = 526;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_2(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x2000000L);
case 83:
case 115:
if ((active0 & 0x10000L) != 0L)
@@ -12929,9 +12954,9 @@
return jjStartNfaWithStates_2(5, 382, 96);
else if ((active6 & 0x4000L) != 0L)
return jjStartNfaWithStates_2(5, 398, 96);
- else if ((active10 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_2(5, 691, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x4000000000000000L, active11, 0xc0000000000L);
+ else if ((active10 & 0x10000000000000L) != 0L)
+ return jjStartNfaWithStates_2(5, 692, 96);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x8000000000000000L, active11, 0x180000000000L);
case 84:
case 116:
if ((active0 & 0x20L) != 0L)
@@ -12968,21 +12993,21 @@
return jjStartNfaWithStates_2(5, 611, 96);
else if ((active10 & 0x800000000L) != 0L)
return jjStartNfaWithStates_2(5, 675, 96);
- else if ((active10 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_2(5, 678, 96);
- return jjMoveStringLiteralDfa6_2(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x8000000000L);
+ else if ((active10 & 0x8000000000L) != 0L)
+ return jjStartNfaWithStates_2(5, 679, 96);
+ return jjMoveStringLiteralDfa6_2(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x10000000000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa6_2(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x100L);
+ return jjMoveStringLiteralDfa6_2(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x200L);
case 86:
case 118:
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x8000004L);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x10000008L);
case 87:
case 119:
if ((active4 & 0x4000000L) != 0L)
return jjStartNfaWithStates_2(5, 282, 96);
- else if ((active11 & 0x20L) != 0L)
- return jjStartNfaWithStates_2(5, 709, 96);
+ else if ((active11 & 0x40L) != 0L)
+ return jjStartNfaWithStates_2(5, 710, 96);
return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0x20000L, active3, 0x8000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000L, active11, 0L);
case 88:
case 120:
@@ -13000,7 +13025,7 @@
return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0x40000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000000L);
+ return jjMoveStringLiteralDfa6_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
default :
break;
}
@@ -13022,13 +13047,13 @@
return jjStartNfaWithStates_2(6, 464, 96);
break;
case 95:
- return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x100000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa7_2(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x80000000000e00L, active11, 0x200008000000L);
+ return jjMoveStringLiteralDfa7_2(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x100000000000e00L, active11, 0x400010000000L);
case 66:
case 98:
- return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x20L);
case 67:
case 99:
if ((active2 & 0x40000000000000L) != 0L)
@@ -13051,7 +13076,7 @@
return jjStartNfaWithStates_2(6, 325, 96);
else if ((active10 & 0x400000000L) != 0L)
return jjStartNfaWithStates_2(6, 674, 96);
- return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x4000000004000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x8000000004000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x100000000000000L) != 0L)
@@ -13089,13 +13114,13 @@
}
else if ((active10 & 0x2000000L) != 0L)
return jjStartNfaWithStates_2(6, 665, 96);
- else if ((active11 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_2(6, 742, 96);
else if ((active11 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_2(6, 743, 96);
- else if ((active11 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_2(6, 748, 96);
- return jjMoveStringLiteralDfa7_2(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x1e0000000000L, active11, 0x45000004L);
+ else if ((active11 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_2(6, 744, 96);
+ else if ((active11 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_2(6, 749, 96);
+ return jjMoveStringLiteralDfa7_2(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x3c1000000000L, active11, 0x8a000008L);
case 70:
case 102:
return jjMoveStringLiteralDfa7_2(active0, 0x10000000000L, active1, 0x1000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -13118,21 +13143,21 @@
return jjStartNfaWithStates_2(6, 430, 96);
else if ((active7 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_2(6, 499, 96);
- else if ((active10 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_2(6, 698, 96);
- else if ((active11 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_2(6, 736, 96);
- return jjMoveStringLiteralDfa7_2(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
+ else if ((active10 & 0x800000000000000L) != 0L)
+ return jjStartNfaWithStates_2(6, 699, 96);
+ else if ((active11 & 0x200000000L) != 0L)
+ return jjStartNfaWithStates_2(6, 737, 96);
+ return jjMoveStringLiteralDfa7_2(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x800000L);
case 72:
case 104:
if ((active0 & 0x4000000000000L) != 0L)
return jjStartNfaWithStates_2(6, 50, 96);
- else if ((active11 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_2(6, 747, 96);
+ else if ((active11 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_2(6, 748, 96);
return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa7_2(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x200100000L);
+ return jjMoveStringLiteralDfa7_2(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x400200000L);
case 76:
case 108:
if ((active2 & 0x800000L) != 0L)
@@ -13158,7 +13183,7 @@
return jjMoveStringLiteralDfa7_2(active0, 0x40000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400L, active5, 0x2048000000000000L, active6, 0x2000L, active7, 0x20000L, active8, 0L, active9, 0x4L, active10, 0L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa7_2(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x40000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_2(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x80000000000000L, active11, 0L);
case 78:
case 110:
if ((active0 & 0x80000000000L) != 0L)
@@ -13184,19 +13209,19 @@
}
else if ((active10 & 0x100000000L) != 0L)
return jjStartNfaWithStates_2(6, 672, 96);
- else if ((active10 & 0x800000000000000L) != 0L)
+ else if ((active10 & 0x1000000000000000L) != 0L)
{
- jjmatchedKind = 699;
+ jjmatchedKind = 700;
jjmatchedPos = 6;
}
- return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x1000000000000004L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x2000000000000004L, active11, 0x1000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x10000000000180L, active11, 0L);
+ return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x20000000000180L, active11, 0L);
case 80:
case 112:
- if ((active10 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_2(6, 693, 96);
+ if ((active10 & 0x40000000000000L) != 0L)
+ return jjStartNfaWithStates_2(6, 694, 96);
return jjMoveStringLiteralDfa7_2(active0, 0x20000000000L, active1, 0x2800000000000L, active2, 0x30000000000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0x80000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
@@ -13222,11 +13247,11 @@
jjmatchedKind = 653;
jjmatchedPos = 6;
}
- else if ((active10 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_2(6, 696, 96);
- else if ((active11 & 0x400L) != 0L)
- return jjStartNfaWithStates_2(6, 714, 96);
- return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x400000000L);
+ else if ((active10 & 0x200000000000000L) != 0L)
+ return jjStartNfaWithStates_2(6, 697, 96);
+ else if ((active11 & 0x800L) != 0L)
+ return jjStartNfaWithStates_2(6, 715, 96);
+ return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x800000000L);
case 83:
case 115:
if ((active5 & 0x40L) != 0L)
@@ -13239,9 +13264,9 @@
return jjStartNfaWithStates_2(6, 484, 96);
else if ((active8 & 0x10L) != 0L)
return jjStartNfaWithStates_2(6, 516, 96);
- else if ((active11 & 0x40000L) != 0L)
- return jjStartNfaWithStates_2(6, 722, 96);
- return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x200000L);
+ else if ((active11 & 0x80000L) != 0L)
+ return jjStartNfaWithStates_2(6, 723, 96);
+ return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x400000L);
case 84:
case 116:
if ((active1 & 0x800000L) != 0L)
@@ -13282,14 +13307,14 @@
return jjStartNfaWithStates_2(6, 639, 96);
else if ((active10 & 0x200000000L) != 0L)
return jjStartNfaWithStates_2(6, 673, 96);
- else if ((active10 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_2(6, 697, 96);
- else if ((active11 & 0x100L) != 0L)
- return jjStartNfaWithStates_2(6, 712, 96);
- return jjMoveStringLiteralDfa7_2(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x400120a0000L);
+ else if ((active10 & 0x400000000000000L) != 0L)
+ return jjStartNfaWithStates_2(6, 698, 96);
+ else if ((active11 & 0x200L) != 0L)
+ return jjStartNfaWithStates_2(6, 713, 96);
+ return jjMoveStringLiteralDfa7_2(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x80024140000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa7_2(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa7_2(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x4000000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa7_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0x200000000000000L, active7, 0x203000L, active8, 0L, active9, 0L, active10, 0x2L, active11, 0L);
@@ -13331,7 +13356,7 @@
return jjMoveStringLiteralDfa8_2(active0, 0x2000000000000000L, active1, 0xff0000000c000000L, active2, 0x180000000000007L, active3, 0L, active4, 0L, active5, 0x70000L, active6, 0x40000000000L, active7, 0x700000000000L, active8, 0x20000L, active9, 0xffc00L, active10, 0x1c000L, active11, 0L);
case 65:
case 97:
- return jjMoveStringLiteralDfa8_2(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x4000000000000000L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa8_2(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x8000000000000000L, active11, 0x1000000L);
case 66:
case 98:
if ((active8 & 0x10000000000L) != 0L)
@@ -13355,8 +13380,10 @@
return jjStartNfaWithStates_2(7, 57, 96);
else if ((active2 & 0x10000000L) != 0L)
return jjStartNfaWithStates_2(7, 156, 96);
- else if ((active11 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_2(7, 738, 96);
+ else if ((active10 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_2(7, 676, 96);
+ else if ((active11 & 0x800000000L) != 0L)
+ return jjStartNfaWithStates_2(7, 739, 96);
return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40000780000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -13406,14 +13433,14 @@
}
else if ((active10 & 0x100000L) != 0L)
return jjStartNfaWithStates_2(7, 660, 96);
- else if ((active11 & 0x20000L) != 0L)
- return jjStartNfaWithStates_2(7, 721, 96);
- return jjMoveStringLiteralDfa8_2(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x10000000L);
+ else if ((active11 & 0x40000L) != 0L)
+ return jjStartNfaWithStates_2(7, 722, 96);
+ return jjMoveStringLiteralDfa8_2(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x20000000L);
case 70:
case 102:
- if ((active10 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_2(7, 692, 96);
- return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ if ((active10 & 0x20000000000000L) != 0L)
+ return jjStartNfaWithStates_2(7, 693, 96);
+ return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active2 & 0x2000000000000000L) != 0L)
@@ -13424,7 +13451,7 @@
return jjStartNfaWithStates_2(7, 395, 96);
else if ((active10 & 0x4L) != 0L)
return jjStartNfaWithStates_2(7, 642, 96);
- return jjMoveStringLiteralDfa8_2(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa8_2(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x2000000L);
case 72:
case 104:
if ((active2 & 0x400000000000L) != 0L)
@@ -13432,7 +13459,7 @@
return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x100000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa8_2(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x1000000000000000L, active11, 0x40000000000L);
+ return jjMoveStringLiteralDfa8_2(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x2000000000000000L, active11, 0x80000000000L);
case 74:
case 106:
return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -13451,9 +13478,9 @@
return jjStartNfaWithStates_2(7, 359, 96);
else if ((active9 & 0x20L) != 0L)
return jjStartNfaWithStates_2(7, 581, 96);
- else if ((active11 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_2(7, 734, 96);
- return jjMoveStringLiteralDfa8_2(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x8000000L);
+ else if ((active11 & 0x80000000L) != 0L)
+ return jjStartNfaWithStates_2(7, 735, 96);
+ return jjMoveStringLiteralDfa8_2(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x10000000L);
case 77:
case 109:
return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0L, active3, 0x1L, active4, 0xc000000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f01000000000000L, active10, 0L, active11, 0L);
@@ -13466,22 +13493,22 @@
jjmatchedKind = 434;
jjmatchedPos = 7;
}
- return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x200200000000L);
+ return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x400400000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa8_2(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa8_2(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x4000000000L);
case 80:
case 112:
- if ((active10 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_2(7, 694, 96);
+ if ((active10 & 0x80000000000000L) != 0L)
+ return jjStartNfaWithStates_2(7, 695, 96);
return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0x8000000L, active10, 0L, active11, 0L);
case 82:
case 114:
if ((active8 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_2(7, 554, 96);
- else if ((active11 & 0x4L) != 0L)
- return jjStartNfaWithStates_2(7, 706, 96);
- return jjMoveStringLiteralDfa8_2(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x80000000040180L, active11, 0x400000L);
+ else if ((active11 & 0x8L) != 0L)
+ return jjStartNfaWithStates_2(7, 707, 96);
+ return jjMoveStringLiteralDfa8_2(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x100000000040180L, active11, 0x800000L);
case 83:
case 115:
if ((active1 & 0x40000000000L) != 0L)
@@ -13503,7 +13530,7 @@
return jjStartNfaWithStates_2(7, 450, 96);
else if ((active9 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_2(7, 615, 96);
- return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x100000000L);
case 84:
case 116:
if ((active2 & 0x800000000000L) != 0L)
@@ -13516,10 +13543,10 @@
return jjStartNfaWithStates_2(7, 538, 96);
else if ((active10 & 0x200000L) != 0L)
return jjStartNfaWithStates_2(7, 661, 96);
- return jjMoveStringLiteralDfa8_2(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa8_2(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x200000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x20L);
case 86:
case 118:
return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100L, active8, 0x400L, active9, 0L, active10, 0L, active11, 0L);
@@ -13549,9 +13576,9 @@
return jjStartNfaWithStates_2(7, 518, 96);
else if ((active9 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_2(7, 627, 96);
- else if ((active11 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_2(7, 730, 96);
- return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x2280000L);
+ else if ((active11 & 0x8000000L) != 0L)
+ return jjStartNfaWithStates_2(7, 731, 96);
+ return jjMoveStringLiteralDfa8_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x4500000L);
case 90:
case 122:
return jjMoveStringLiteralDfa8_2(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x3000000000000L, active6, 0L, active7, 0L, active8, 0x2000L, active9, 0L, active10, 0L, active11, 0L);
@@ -13572,7 +13599,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x100000L);
case 65:
case 97:
return jjMoveStringLiteralDfa9_2(active0, 0x11000000000L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0x300020000L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0xa000L, active9, 0x10000000L, active10, 0x40000L, active11, 0L);
@@ -13585,7 +13612,7 @@
case 99:
if ((active9 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_2(8, 618, 96);
- return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x40000000010L);
+ return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x80000000020L);
case 68:
case 100:
if ((active1 & 0x20000000L) != 0L)
@@ -13594,8 +13621,8 @@
return jjStartNfaWithStates_2(8, 235, 96);
else if ((active10 & 0x4000000L) != 0L)
return jjStartNfaWithStates_2(8, 666, 96);
- else if ((active11 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_2(8, 732, 96);
+ else if ((active11 & 0x20000000L) != 0L)
+ return jjStartNfaWithStates_2(8, 733, 96);
return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x600000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x400L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -13663,9 +13690,9 @@
jjmatchedKind = 613;
jjmatchedPos = 8;
}
- else if ((active11 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_2(8, 737, 96);
- return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x200000000000L);
+ else if ((active11 & 0x400000000L) != 0L)
+ return jjStartNfaWithStates_2(8, 738, 96);
+ return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x400000000000L);
case 72:
case 104:
return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x201000L, active10, 0L, active11, 0L);
@@ -13673,7 +13700,7 @@
case 105:
if ((active0 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_2(8, 42, 96);
- return jjMoveStringLiteralDfa9_2(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x1e0010000878L, active11, 0x81000000L);
+ return jjMoveStringLiteralDfa9_2(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x3c0010000878L, active11, 0x102000000L);
case 75:
case 107:
if ((active2 & 0x20000L) != 0L)
@@ -13689,7 +13716,7 @@
jjmatchedKind = 647;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x1000000L);
case 78:
case 110:
if ((active0 & 0x20000000L) != 0L)
@@ -13712,10 +13739,10 @@
return jjStartNfaWithStates_2(8, 415, 96);
else if ((active6 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_2(8, 439, 96);
- return jjMoveStringLiteralDfa9_2(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x1000000000008000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa9_2(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x2000000000008000L, active11, 0x400000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x800000L);
case 80:
case 112:
if ((active1 & 0x2000000000000L) != 0L)
@@ -13725,7 +13752,7 @@
jjmatchedKind = 632;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x4000000L);
case 81:
case 113:
return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0L);
@@ -13777,7 +13804,7 @@
return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0x8000020000000000L, active2, 0x100003L, active3, 0L, active4, 0x200004L, active5, 0x40000L, active6, 0x2000L, active7, 0x4000000000000000L, active8, 0x500000000L, active9, 0x1000000000L, active10, 0x8000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x2008000000L);
+ return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x4010000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa9_2(active0, 0x10000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0L);
@@ -13801,12 +13828,12 @@
return jjStartNfaWithStates_2(8, 461, 96);
else if ((active9 & 0x2000000000000L) != 0L)
return jjStartNfaWithStates_2(8, 625, 96);
- else if ((active10 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_2(8, 695, 96);
- else if ((active10 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_2(8, 702, 96);
- else if ((active11 & 0x100000L) != 0L)
- return jjStartNfaWithStates_2(8, 724, 96);
+ else if ((active10 & 0x100000000000000L) != 0L)
+ return jjStartNfaWithStates_2(8, 696, 96);
+ else if ((active10 & 0x8000000000000000L) != 0L)
+ return jjStartNfaWithStates_2(8, 703, 96);
+ else if ((active11 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_2(8, 725, 96);
return jjMoveStringLiteralDfa9_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x80000L, active10, 0L, active11, 0L);
default :
break;
@@ -13840,7 +13867,7 @@
return jjStartNfaWithStates_2(9, 138, 96);
else if ((active9 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_2(9, 631, 96);
- return jjMoveStringLiteralDfa10_2(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa10_2(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 68:
case 100:
if ((active5 & 0x4000000000L) != 0L)
@@ -13874,13 +13901,13 @@
return jjStartNfaWithStates_2(9, 612, 96);
else if ((active9 & 0x800000000000L) != 0L)
return jjStartNfaWithStates_2(9, 623, 96);
- else if ((active11 & 0x800000L) != 0L)
- return jjStartNfaWithStates_2(9, 727, 96);
- else if ((active11 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_2(9, 729, 96);
- else if ((active11 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_2(9, 731, 96);
- return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x200000000000L);
+ else if ((active11 & 0x1000000L) != 0L)
+ return jjStartNfaWithStates_2(9, 728, 96);
+ else if ((active11 & 0x4000000L) != 0L)
+ return jjStartNfaWithStates_2(9, 730, 96);
+ else if ((active11 & 0x10000000L) != 0L)
+ return jjStartNfaWithStates_2(9, 732, 96);
+ return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x400000000000L);
case 71:
case 103:
if ((active6 & 0x200000L) != 0L)
@@ -13889,8 +13916,8 @@
return jjStartNfaWithStates_2(9, 548, 96);
else if ((active9 & 0x40000000L) != 0L)
return jjStartNfaWithStates_2(9, 606, 96);
- else if ((active10 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_2(9, 700, 96);
+ else if ((active10 & 0x2000000000000000L) != 0L)
+ return jjStartNfaWithStates_2(9, 701, 96);
return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x2000000000000000L, active6, 0x400000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
@@ -13902,7 +13929,7 @@
case 107:
if ((active2 & 0x400000000L) != 0L)
return jjStartNfaWithStates_2(9, 162, 96);
- return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80010L);
+ return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100020L);
case 76:
case 108:
return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2L, active5, 0L, active6, 0L, active7, 0x100000000L, active8, 0L, active9, 0x1000000000000L, active10, 0L, active11, 0L);
@@ -13918,10 +13945,10 @@
jjmatchedKind = 98;
jjmatchedPos = 9;
}
- return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x3c0000000000L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x2000000L);
case 80:
case 112:
if ((active1 & 0x4000000000000L) != 0L)
@@ -13952,10 +13979,10 @@
return jjStartNfaWithStates_2(9, 458, 96);
else if ((active10 & 0x100L) != 0L)
return jjStartNfaWithStates_2(9, 648, 96);
- else if ((active11 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_2(9, 741, 96);
- else if ((active11 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_2(9, 746, 96);
+ else if ((active11 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_2(9, 742, 96);
+ else if ((active11 & 0x80000000000L) != 0L)
+ return jjStartNfaWithStates_2(9, 747, 96);
return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0x80000000000L, active2, 0x40000000004L, active3, 0L, active4, 0x8000000000000000L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
@@ -13975,7 +14002,7 @@
return jjMoveStringLiteralDfa10_2(active0, 0x80021000000000L, active1, 0x1e000000008L, active2, 0x8000L, active3, 0x2L, active4, 0x400000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100L, active10, 0L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x800000L);
case 86:
case 118:
return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -14002,7 +14029,7 @@
return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x200000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa10_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L);
default :
break;
}
@@ -14039,7 +14066,7 @@
return jjStartNfaWithStates_2(10, 341, 96);
else if ((active10 & 0x8000000L) != 0L)
return jjStartNfaWithStates_2(10, 667, 96);
- return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x400000000000L);
case 69:
case 101:
if ((active0 & 0x10000000000L) != 0L)
@@ -14060,9 +14087,9 @@
return jjStartNfaWithStates_2(10, 620, 96);
else if ((active9 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_2(10, 624, 96);
- else if ((active11 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_2(10, 735, 96);
- return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x1e0000000000L, active11, 0x80010L);
+ else if ((active11 & 0x100000000L) != 0L)
+ return jjStartNfaWithStates_2(10, 736, 96);
+ return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x3c0000000000L, active11, 0x100020L);
case 70:
case 102:
return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -14077,7 +14104,7 @@
return jjStartNfaWithStates_2(10, 67, 96);
else if ((active6 & 0x400000000L) != 0L)
return jjStartNfaWithStates_2(10, 418, 96);
- return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 73:
case 105:
return jjMoveStringLiteralDfa11_2(active0, 0x21000000000L, active1, 0x800000002000L, active2, 0x1000L, active3, 0x2L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0L, active8, 0L, active9, 0x4400000000000000L, active10, 0L, active11, 0L);
@@ -14104,8 +14131,8 @@
}
else if ((active10 & 0x800L) != 0L)
return jjStartNfaWithStates_2(10, 651, 96);
- else if ((active11 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_2(10, 728, 96);
+ else if ((active11 & 0x2000000L) != 0L)
+ return jjStartNfaWithStates_2(10, 729, 96);
return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0x10c200000L, active2, 0x180000000006000L, active3, 0L, active4, 0L, active5, 0x10000L, active6, 0x40002000000L, active7, 0L, active8, 0L, active9, 0xc040L, active10, 0x10000070L, active11, 0L);
case 79:
case 111:
@@ -14114,8 +14141,8 @@
case 112:
if ((active9 & 0x10000000L) != 0L)
return jjStartNfaWithStates_2(10, 604, 96);
- else if ((active11 & 0x400000L) != 0L)
- return jjStartNfaWithStates_2(10, 726, 96);
+ else if ((active11 & 0x800000L) != 0L)
+ return jjStartNfaWithStates_2(10, 727, 96);
return jjMoveStringLiteralDfa11_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 81:
case 113:
@@ -14191,7 +14218,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa12_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa12_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 65:
case 97:
if ((active8 & 0x1L) != 0L)
@@ -14207,7 +14234,7 @@
case 100:
if ((active9 & 0x200000000000000L) != 0L)
return jjStartNfaWithStates_2(11, 633, 96);
- return jjMoveStringLiteralDfa12_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa12_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x2000000000000000L) != 0L)
@@ -14292,7 +14319,7 @@
return jjStartNfaWithStates_2(11, 588, 96);
else if ((active9 & 0x80000L) != 0L)
return jjStartNfaWithStates_2(11, 595, 96);
- return jjMoveStringLiteralDfa12_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa12_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x400000L);
case 83:
case 115:
return jjMoveStringLiteralDfa12_2(active0, 0L, active1, 0x8000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x70L, active11, 0L);
@@ -14304,16 +14331,16 @@
return jjStartNfaWithStates_2(11, 338, 96);
else if ((active9 & 0x40L) != 0L)
return jjStartNfaWithStates_2(11, 582, 96);
- else if ((active11 & 0x10L) != 0L)
- return jjStartNfaWithStates_2(11, 708, 96);
+ else if ((active11 & 0x20L) != 0L)
+ return jjStartNfaWithStates_2(11, 709, 96);
return jjMoveStringLiteralDfa12_2(active0, 0x20000800000L, active1, 0x200L, active2, 0x6000L, active3, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x8000L, active10, 0L, active11, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa12_2(active0, 0L, active1, 0x100000000L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2000000000004000L, active10, 0L, active11, 0L);
case 89:
case 121:
- if ((active11 & 0x80000L) != 0L)
- return jjStartNfaWithStates_2(11, 723, 96);
+ if ((active11 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_2(11, 724, 96);
break;
default :
break;
@@ -14332,7 +14359,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa13_2(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x1e0000000070L, active11, 0L);
+ return jjMoveStringLiteralDfa13_2(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x3c0000000070L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa13_2(active0, 0L, active1, 0x6800000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -14388,12 +14415,12 @@
return jjMoveStringLiteralDfa13_2(active0, 0L, active1, 0x20L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x20000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa13_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa13_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x400000L);
case 80:
case 112:
if ((active9 & 0x100L) != 0L)
return jjStartNfaWithStates_2(12, 584, 96);
- return jjMoveStringLiteralDfa13_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa13_2(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 82:
case 114:
if ((active9 & 0x2000000000000000L) != 0L)
@@ -14439,7 +14466,7 @@
return jjStartNfaWithStates_2(13, 494, 96);
else if ((active10 & 0x10000L) != 0L)
return jjStartNfaWithStates_2(13, 656, 96);
- return jjMoveStringLiteralDfa14_2(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa14_2(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 66:
case 98:
return jjMoveStringLiteralDfa14_2(active0, 0L, active1, 0x100000000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -14492,7 +14519,7 @@
case 110:
if ((active4 & 0x4L) != 0L)
return jjStartNfaWithStates_2(13, 258, 96);
- return jjMoveStringLiteralDfa14_2(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa14_2(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa14_2(active0, 0x20000000000L, active1, 0x100000000000000L, active2, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0L, active10, 0x4000L, active11, 0L);
@@ -14513,7 +14540,7 @@
case 116:
if ((active7 & 0x8000L) != 0L)
return jjStartNfaWithStates_2(13, 463, 96);
- return jjMoveStringLiteralDfa14_2(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa14_2(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 88:
case 120:
if ((active6 & 0x8000000000000L) != 0L)
@@ -14580,7 +14607,7 @@
break;
case 73:
case 105:
- return jjMoveStringLiteralDfa15_2(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa15_2(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa15_2(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -14607,7 +14634,7 @@
return jjStartNfaWithStates_2(14, 575, 96);
else if ((active9 & 0x10000L) != 0L)
return jjStartNfaWithStates_2(14, 592, 96);
- return jjMoveStringLiteralDfa15_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa15_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 83:
case 115:
if ((active1 & 0x200L) != 0L)
@@ -14632,7 +14659,7 @@
break;
case 89:
case 121:
- return jjMoveStringLiteralDfa15_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa15_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
default :
break;
}
@@ -14699,7 +14726,7 @@
return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 82:
case 114:
if ((active1 & 0x100000000L) != 0L)
@@ -14709,7 +14736,7 @@
return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xe0000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -14723,7 +14750,7 @@
return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa16_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
default :
break;
}
@@ -14746,12 +14773,12 @@
case 97:
if ((active1 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_2(16, 103, 96);
- return jjMoveStringLiteralDfa17_2(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa17_2(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
if ((active7 & 0x400000000L) != 0L)
return jjStartNfaWithStates_2(16, 482, 96);
- return jjMoveStringLiteralDfa17_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa17_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x100000L) != 0L)
@@ -14762,7 +14789,7 @@
return jjMoveStringLiteralDfa17_2(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa17_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa17_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 76:
case 108:
return jjMoveStringLiteralDfa17_2(active0, 0L, active1, 0L, active2, 0x6000L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0L, active10, 0x40L, active11, 0L);
@@ -14826,7 +14853,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa18_2(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa18_2(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa18_2(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -14862,7 +14889,7 @@
return jjMoveStringLiteralDfa18_2(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa18_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa18_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 86:
case 118:
return jjMoveStringLiteralDfa18_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0L);
@@ -14889,7 +14916,7 @@
return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x60000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0xc0000000000L, active11, 0L);
case 68:
case 100:
if ((active8 & 0x800000000000000L) != 0L)
@@ -14914,7 +14941,7 @@
return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa19_2(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa19_2(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -14923,7 +14950,7 @@
return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
case 79:
case 111:
return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -14932,7 +14959,7 @@
return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0x4000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000L, active11, 0L);
case 84:
case 116:
return jjMoveStringLiteralDfa19_2(active0, 0L, active1, 0L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0x80000000L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x20L, active11, 0L);
@@ -14958,10 +14985,10 @@
case 97:
if ((active1 & 0x100L) != 0L)
return jjStartNfaWithStates_2(19, 72, 96);
- return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0xa0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0x140000000000L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x200000000000L, active11, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -14975,7 +15002,7 @@
return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0x10000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x40000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x80000000000L, active11, 0x400000400000L);
case 82:
case 114:
return jjMoveStringLiteralDfa20_2(active0, 0L, active1, 0L, active2, 0x4002L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -15019,7 +15046,7 @@
return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0x20000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x80000000000L, active11, 0L);
case 69:
case 101:
if ((active1 & 0x8000000L) != 0L)
@@ -15036,13 +15063,13 @@
case 104:
if ((active7 & 0x200000000L) != 0L)
return jjStartNfaWithStates_2(20, 481, 96);
- return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x200000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x100000000000L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0x2L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -15051,7 +15078,7 @@
return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0x400000000000000L, active2, 0L, active6, 0x4000000L, active7, 0L, active8, 0x10000000000000L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_2(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x40000000000L, active11, 0L);
case 89:
case 121:
if ((active0 & 0x1000000L) != 0L)
@@ -15074,10 +15101,10 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa22_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa22_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa22_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000040L, active11, 0L);
+ return jjMoveStringLiteralDfa22_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000040L, active11, 0L);
case 67:
case 99:
return jjMoveStringLiteralDfa22_2(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -15090,11 +15117,11 @@
case 101:
if ((active2 & 0x2000L) != 0L)
return jjStartNfaWithStates_2(21, 141, 96);
- else if ((active10 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_2(21, 682, 96);
else if ((active10 & 0x80000000000L) != 0L)
return jjStartNfaWithStates_2(21, 683, 96);
- return jjMoveStringLiteralDfa22_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x100000000000L, active11, 0L);
+ else if ((active10 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_2(21, 684, 96);
+ return jjMoveStringLiteralDfa22_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x200000000000L, active11, 0L);
case 70:
case 102:
return jjMoveStringLiteralDfa22_2(active1, 0x400000000000000L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -15153,10 +15180,10 @@
return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x100000000000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x200000000000L, active11, 0x400000L);
case 78:
case 110:
return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x8000000000000L, active10, 0L, active11, 0L);
@@ -15168,7 +15195,7 @@
return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa23_2(active1, 0L, active2, 0L, active6, 0x4000000L, active8, 0L, active10, 0L, active11, 0L);
@@ -15195,8 +15222,8 @@
return jjMoveStringLiteralDfa24_2(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 65:
case 97:
- if ((active10 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_2(23, 684, 96);
+ if ((active10 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_2(23, 685, 96);
break;
case 67:
case 99:
@@ -15220,7 +15247,7 @@
return jjMoveStringLiteralDfa24_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x2040000000000000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa24_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x20000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa24_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x40000000000L, active11, 0x400000400000L);
case 82:
case 114:
if ((active8 & 0x4000000000000L) != 0L)
@@ -15255,7 +15282,7 @@
break;
case 68:
case 100:
- return jjMoveStringLiteralDfa25_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa25_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
return jjMoveStringLiteralDfa25_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x200000000000000L, active10, 0L, active11, 0L);
@@ -15264,8 +15291,8 @@
return jjMoveStringLiteralDfa25_2(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_2(24, 681, 96);
+ if ((active10 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_2(24, 682, 96);
break;
case 73:
case 105:
@@ -15287,7 +15314,7 @@
return jjMoveStringLiteralDfa25_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa25_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa25_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -15318,8 +15345,8 @@
case 101:
if ((active8 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_2(25, 563, 96);
- else if ((active11 & 0x200000L) != 0L)
- return jjStartNfaWithStates_2(25, 725, 96);
+ else if ((active11 & 0x400000L) != 0L)
+ return jjStartNfaWithStates_2(25, 726, 96);
break;
case 71:
case 103:
@@ -15341,7 +15368,7 @@
return jjMoveStringLiteralDfa26_2(active1, 0L, active2, 0x4002L, active6, 0L, active8, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa26_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa26_2(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa26_2(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active11, 0L);
@@ -15362,7 +15389,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa27_2(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa27_2(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 68:
case 100:
if ((active8 & 0x80000000000000L) != 0L)
@@ -15410,7 +15437,7 @@
return jjMoveStringLiteralDfa28_2(active1, 0L, active2, 0L, active8, 0x200000000000000L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa28_2(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa28_2(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 82:
case 114:
return jjMoveStringLiteralDfa28_2(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -15437,7 +15464,7 @@
break;
case 69:
case 101:
- return jjMoveStringLiteralDfa29_2(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa29_2(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 79:
case 111:
return jjMoveStringLiteralDfa29_2(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -15462,7 +15489,7 @@
{
case 82:
case 114:
- return jjMoveStringLiteralDfa30_2(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa30_2(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa30_2(active1, 0x400000000000000L, active2, 0L, active11, 0L);
@@ -15487,7 +15514,7 @@
{
case 67:
case 99:
- return jjMoveStringLiteralDfa31_2(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa31_2(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 80:
case 112:
if ((active1 & 0x400000000000000L) != 0L)
@@ -15513,7 +15540,7 @@
case 101:
if ((active2 & 0x2L) != 0L)
return jjStartNfaWithStates_2(31, 129, 96);
- return jjMoveStringLiteralDfa32_2(active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa32_2(active2, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -15532,7 +15559,7 @@
{
case 78:
case 110:
- return jjMoveStringLiteralDfa33_2(active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa33_2(active11, 0x400000000000L);
default :
break;
}
@@ -15551,8 +15578,8 @@
{
case 84:
case 116:
- if ((active11 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_2(33, 749, 96);
+ if ((active11 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_2(33, 750, 96);
break;
default :
break;
@@ -15589,21 +15616,21 @@
jjCheckNAddTwoStates(56, 57);
else if (curChar == 7)
{
- if (kind > 826)
- kind = 826;
+ if (kind > 829)
+ kind = 829;
}
else if (curChar == 45)
jjstateSet[jjnewStateCnt++] = 23;
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(9, 15);
}
else if (curChar == 36)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -15616,8 +15643,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -15630,8 +15657,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -15646,8 +15673,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -15664,8 +15691,8 @@
jjstateSet[jjnewStateCnt++] = 67;
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -15674,8 +15701,8 @@
case 92:
if (curChar == 47)
{
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
}
else if (curChar == 42)
@@ -15690,8 +15717,8 @@
jjCheckNAddStates(0, 2);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (curChar == 36)
@@ -15712,8 +15739,8 @@
jjCheckNAddStates(32, 34);
else if (curChar == 39)
{
- if (kind > 758)
- kind = 758;
+ if (kind > 759)
+ kind = 759;
}
if ((0xfc00f7faffffc9ffL & l) != 0L)
jjstateSet[jjnewStateCnt++] = 64;
@@ -15723,8 +15750,8 @@
case 97:
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(57);
}
if ((0x3ff000000000000L & l) != 0L)
@@ -15749,8 +15776,8 @@
jjstateSet[jjnewStateCnt++] = 3;
break;
case 5:
- if (curChar == 39 && kind > 757)
- kind = 757;
+ if (curChar == 39 && kind > 758)
+ kind = 758;
break;
case 7:
if ((0x3ff000000000000L & l) != 0L)
@@ -15774,8 +15801,8 @@
jjstateSet[jjnewStateCnt++] = 11;
break;
case 13:
- if (curChar == 39 && kind > 759)
- kind = 759;
+ if (curChar == 39 && kind > 760)
+ kind = 760;
break;
case 17:
if ((0xffffff7fffffffffL & l) != 0L)
@@ -15793,30 +15820,30 @@
jjstateSet[jjnewStateCnt++] = 20;
break;
case 22:
- if (curChar == 39 && kind > 761)
- kind = 761;
+ if (curChar == 39 && kind > 762)
+ kind = 762;
break;
case 23:
if (curChar != 45)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
case 24:
if ((0xffffffffffffdbffL & l) == 0L)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
case 25:
- if ((0x2400L & l) != 0L && kind > 812)
- kind = 812;
+ if ((0x2400L & l) != 0L && kind > 815)
+ kind = 815;
break;
case 26:
- if (curChar == 10 && kind > 812)
- kind = 812;
+ if (curChar == 10 && kind > 815)
+ kind = 815;
break;
case 27:
if (curChar == 13)
@@ -15833,15 +15860,15 @@
case 34:
if (curChar != 36)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -15859,8 +15886,8 @@
case 39:
if (curChar != 36)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAddTwoStates(39, 40);
break;
case 40:
@@ -15870,26 +15897,26 @@
case 41:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAdd(41);
break;
case 42:
- if (curChar == 7 && kind > 826)
- kind = 826;
+ if (curChar == 7 && kind > 829)
+ kind = 829;
break;
case 43:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(9, 15);
break;
case 44:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAdd(44);
break;
case 45:
@@ -15903,8 +15930,8 @@
case 48:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 752)
- kind = 752;
+ if (kind > 753)
+ kind = 753;
jjCheckNAdd(48);
break;
case 49:
@@ -15918,22 +15945,22 @@
case 51:
if (curChar != 46)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
break;
case 52:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
break;
case 53:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAddStates(35, 37);
break;
case 54:
@@ -15951,8 +15978,8 @@
case 57:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(57);
break;
case 58:
@@ -15972,12 +15999,12 @@
jjstateSet[jjnewStateCnt++] = 60;
break;
case 62:
- if (curChar == 39 && kind > 758)
- kind = 758;
+ if (curChar == 39 && kind > 759)
+ kind = 759;
break;
case 64:
- if (curChar == 39 && kind > 765)
- kind = 765;
+ if (curChar == 39 && kind > 766)
+ kind = 766;
break;
case 67:
case 69:
@@ -15993,8 +16020,8 @@
jjstateSet[jjnewStateCnt++] = 69;
break;
case 71:
- if (curChar == 39 && kind > 760)
- kind = 760;
+ if (curChar == 39 && kind > 761)
+ kind = 761;
break;
case 72:
if (curChar == 38)
@@ -16017,8 +16044,8 @@
jjstateSet[jjnewStateCnt++] = 75;
break;
case 77:
- if (curChar == 34 && kind > 823)
- kind = 823;
+ if (curChar == 34 && kind > 826)
+ kind = 826;
break;
case 79:
if (curChar == 32)
@@ -16045,14 +16072,14 @@
jjstateSet[jjnewStateCnt++] = 91;
break;
case 91:
- if ((0xffff7fffffffffffL & l) != 0L && kind > 810)
- kind = 810;
+ if ((0xffff7fffffffffffL & l) != 0L && kind > 813)
+ kind = 813;
break;
case 93:
if (curChar != 47)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(25, 27);
break;
default : break;
@@ -16075,8 +16102,8 @@
jjCheckNAddTwoStates(30, 32);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if ((0x20000000200000L & l) != 0L)
@@ -16097,8 +16124,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -16109,8 +16136,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -16121,8 +16148,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -16133,8 +16160,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -16145,8 +16172,8 @@
jjCheckNAddStates(0, 2);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
break;
@@ -16157,13 +16184,13 @@
jjstateSet[jjnewStateCnt++] = 85;
else if ((0x1000000010L & l) != 0L)
{
- if (kind > 768)
- kind = 768;
+ if (kind > 769)
+ kind = 769;
}
if ((0x10000000100000L & l) != 0L)
{
- if (kind > 769)
- kind = 769;
+ if (kind > 770)
+ kind = 770;
}
break;
case 63:
@@ -16214,8 +16241,8 @@
jjCheckNAddStates(28, 31);
break;
case 24:
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(25, 27);
break;
case 29:
@@ -16235,21 +16262,21 @@
jjstateSet[jjnewStateCnt++] = 31;
break;
case 33:
- if (curChar == 96 && kind > 818)
- kind = 818;
+ if (curChar == 96 && kind > 821)
+ kind = 821;
break;
case 34:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -16259,15 +16286,15 @@
case 39:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(58, 59);
break;
case 41:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 41;
break;
case 46:
@@ -16292,32 +16319,32 @@
jjAddStates(48, 55);
break;
case 80:
- if ((0x1000000010L & l) != 0L && kind > 768)
- kind = 768;
+ if ((0x1000000010L & l) != 0L && kind > 769)
+ kind = 769;
break;
case 82:
- if ((0x10000000100000L & l) != 0L && kind > 769)
- kind = 769;
+ if ((0x10000000100000L & l) != 0L && kind > 770)
+ kind = 770;
break;
case 84:
if ((0x10000000100000L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 85;
break;
case 85:
- if ((0x8000000080000L & l) != 0L && kind > 770)
- kind = 770;
+ if ((0x8000000080000L & l) != 0L && kind > 771)
+ kind = 771;
break;
case 87:
if ((0x4000000040L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 88;
break;
case 88:
- if ((0x400000004000L & l) != 0L && kind > 771)
- kind = 771;
+ if ((0x400000004000L & l) != 0L && kind > 772)
+ kind = 772;
break;
case 91:
- if (kind > 810)
- kind = 810;
+ if (kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -16337,8 +16364,8 @@
case 0:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -16347,8 +16374,8 @@
case 1:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -16359,8 +16386,8 @@
case 96:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -16371,8 +16398,8 @@
case 95:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -16383,8 +16410,8 @@
case 66:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -16395,8 +16422,8 @@
case 16:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -16431,8 +16458,8 @@
case 24:
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(25, 27);
break;
case 30:
@@ -16442,15 +16469,15 @@
case 34:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 35:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(35);
break;
case 36:
@@ -16460,15 +16487,15 @@
case 39:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(58, 59);
break;
case 41:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 41;
break;
case 59:
@@ -16484,8 +16511,8 @@
jjAddStates(45, 47);
break;
case 91:
- if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 810)
- kind = 810;
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -16509,402 +16536,402 @@
switch (pos)
{
case 0:
- if ((active11 & 0x1000L) != 0L)
+ if ((active10 & 0x7fffffe000000L) != 0L)
{
- jjmatchedKind = 821;
- return 1;
- }
- if ((active12 & 0x10000200L) != 0L)
- return 76;
- if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0xffffffffffffffc0L) != 0L || (active3 & 0xff8001ffffffffffL) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xfffffff000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffc000001ffffffL) != 0L || (active11 & 0x4e57ff27efffL) != 0L)
- {
- jjmatchedKind = 821;
- return 77;
- }
- if ((active12 & 0x20000000L) != 0L)
- return 58;
- if ((active12 & 0x10L) != 0L)
- return 78;
- if ((active12 & 0x90001000000L) != 0L)
- return 74;
- if ((active10 & 0x3fffffe000000L) != 0L)
- {
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
return 31;
}
- if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x31a800d80000L) != 0L || (active12 & 0x200000000L) != 0L)
- return 77;
- if ((active12 & 0x600000L) != 0L)
- return 11;
+ if ((active11 & 0x2000L) != 0L)
+ {
+ jjmatchedKind = 824;
+ return 1;
+ }
+ if ((active12 & 0x20000400L) != 0L)
+ return 76;
if ((active12 & 0x40000000L) != 0L)
+ return 58;
+ if ((active12 & 0x20L) != 0L)
+ return 77;
+ if ((active12 & 0x480002000000L) != 0L)
+ return 74;
+ if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0xffffffffffffffc0L) != 0L || (active3 & 0xff8001ffffffffffL) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xfffffff000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfff8000001ffffffL) != 0L || (active11 & 0x9caffe4fdfffL) != 0L)
+ {
+ jjmatchedKind = 824;
+ return 78;
+ }
+ if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x635001b00000L) != 0L || (active12 & 0x1000000000L) != 0L)
+ return 78;
+ if ((active12 & 0xc00000L) != 0L)
+ return 11;
+ if ((active12 & 0x80000000L) != 0L)
return 79;
return -1;
case 1:
- if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x3efd5feeffffL) != 0L)
+ if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x7dfabfddffffL) != 0L)
{
if (jjmatchedPos != 1)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 1;
}
- return 77;
+ return 78;
}
- if ((active12 & 0x90000000000L) != 0L)
+ if ((active12 & 0x480000000000L) != 0L)
return 72;
- if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x4102a0110000L) != 0L)
- return 77;
+ if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x820540220000L) != 0L)
+ return 78;
return -1;
case 2:
- if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0x57fffffeefffL) != 0L)
+ if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0xaffffffddfffL) != 0L)
{
if (jjmatchedPos != 2)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 2;
}
- return 77;
+ return 78;
}
- if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x280000001000L) != 0L)
- return 77;
+ if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x500000002000L) != 0L)
+ return 78;
return -1;
case 3:
- if ((active2 & 0x8000000000000000L) != 0L)
- return 80;
- if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0xa0025f00010e0000L) != 0L || (active11 & 0x180100e3c7L) != 0L)
- return 77;
- if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0x5ffda0fffef1fffeL) != 0L || (active11 & 0x7fe7fefe0c38L) != 0L)
+ if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0xbffb41fffef1fffeL) != 0L || (active11 & 0xffcffdfc1870L) != 0L)
{
if (jjmatchedPos != 3)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 3;
}
- return 77;
+ return 78;
}
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 80;
+ if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0x4004be00010e0000L) != 0L || (active11 & 0x300201c78fL) != 0L)
+ return 78;
return -1;
case 4:
- if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0x5fe01e5f9ef5effeL) != 0L || (active11 & 0x3ce7ddde05b4L) != 0L)
+ if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0xbfc03cbf9ef5effeL) != 0L || (active11 & 0x79cfbbbc0b68L) != 0L)
{
if (jjmatchedPos != 4)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 4;
}
- return 77;
+ return 78;
}
if ((active2 & 0x8000000000000000L) != 0L)
return 80;
- if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x1da0a060001000L) != 0L || (active11 & 0x430022204809L) != 0L)
- return 77;
+ if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x3b414060001000L) != 0L || (active11 & 0x860044409012L) != 0L)
+ return 78;
return -1;
case 5:
- if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0x5ff01e071e75effeL) != 0L || (active11 & 0x3ce7dfee0514L) != 0L)
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 80;
+ if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x1000a880800000L) != 0L || (active11 & 0x200140L) != 0L)
+ return 78;
+ if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0xbfe03c171e75effeL) != 0L || (active11 & 0x79cfbfdc0a28L) != 0L)
{
if (jjmatchedPos != 5)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 5;
}
- return 77;
+ return 78;
}
- if ((active2 & 0x8000000000000000L) != 0L)
- return 80;
- if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x8005880800000L) != 0L || (active11 & 0x1000a0L) != 0L)
- return 77;
return -1;
case 6:
- if ((active2 & 0x8000000000000000L) != 0L)
- return 80;
- if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x1f2000070241e000L) != 0L || (active11 & 0x18c100040500L) != 0L)
- return 77;
- if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x40d01e001c340ffeL) != 0L || (active11 & 0x2426dffa0014L) != 0L)
+ if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x81a03c101c340ffeL) != 0L || (active11 & 0x484dbff40028L) != 0L)
{
if (jjmatchedPos != 6)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 6;
}
- return 77;
+ return 78;
}
- return -1;
- case 7:
if ((active2 & 0x8000000000000000L) != 0L)
return 80;
- if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0x50000000300004L) != 0L || (active11 & 0x444020004L) != 0L)
- return 77;
- if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0x50801e001c05cffaL) != 0L || (active11 & 0x24229bf80010L) != 0L)
+ if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x3e4000070241e000L) != 0L || (active11 & 0x318200080a00L) != 0L)
+ return 78;
+ return -1;
+ case 7:
+ if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0xa1003c001c05cffaL) != 0L || (active11 & 0x484537f00020L) != 0L)
{
if (jjmatchedPos != 7)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 7;
}
- return 77;
+ return 78;
}
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 80;
+ if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0xa0001000300004L) != 0L || (active11 & 0x888040008L) != 0L)
+ return 78;
return -1;
case 8:
- if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x10001e001805c87aL) != 0L || (active11 & 0x24208be80010L) != 0L)
+ if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x20003c001805c87aL) != 0L || (active11 & 0x484117d00020L) != 0L)
{
if (jjmatchedPos != 8)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 8;
}
- return 77;
+ return 78;
}
- if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x4080000004000780L) != 0L || (active11 & 0x210100000L) != 0L)
- return 77;
+ if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x8100000004000780L) != 0L || (active11 & 0x420200000L) != 0L)
+ return 78;
return -1;
case 9:
- if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x1e001801cc7aL) != 0L || (active11 & 0x200081680010L) != 0L)
+ if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x2000000000040100L) != 0L || (active11 & 0x84015000000L) != 0L)
+ return 78;
+ if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x3c001801cc7aL) != 0L || (active11 & 0x400102d00020L) != 0L)
{
if (jjmatchedPos != 9)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 9;
}
- return 77;
+ return 78;
}
- if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x1000000000040100L) != 0L || (active11 & 0x4200a800000L) != 0L)
- return 77;
return -1;
case 10:
- if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x81400000L) != 0L)
- return 77;
- if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x1e001001c402L) != 0L || (active11 & 0x200000280010L) != 0L)
+ if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x102800000L) != 0L)
+ return 78;
+ if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x3c001001c402L) != 0L || (active11 & 0x400000500020L) != 0L)
{
if (jjmatchedPos != 10)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 10;
}
- return 77;
+ return 78;
}
return -1;
case 11:
- if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x1e0010014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x3c0010014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 11)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 11;
}
- return 77;
+ return 78;
}
- if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x80010L) != 0L)
- return 77;
+ if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x100020L) != 0L)
+ return 78;
return -1;
case 12:
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x1e0000014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x3c0000014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 12;
- return 77;
+ return 78;
}
if ((active0 & 0x1000000000L) != 0L || (active1 & 0x800000000000L) != 0L || (active2 & 0x40000001000L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x200000000L) != 0L || (active8 & 0x80000000L) != 0L || (active9 & 0x2400000000108100L) != 0L || (active10 & 0x10000000L) != 0L)
- return 77;
+ return 78;
return -1;
case 13:
if ((active1 & 0x4000000000200000L) != 0L || (active2 & 0x8000L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x10000L) != 0L || (active6 & 0x8000003000000L) != 0L || (active7 & 0x4000400000008000L) != 0L || (active9 & 0x800000000024000L) != 0L || (active10 & 0x10000L) != 0L)
- return 77;
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x1e0000004472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ return 78;
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x3c0000004472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 13;
- return 77;
+ return 78;
}
return -1;
case 14:
if ((active0 & 0x20000000000L) != 0L || (active1 & 0x100084800000200L) != 0L || (active5 & 0x280L) != 0L || (active6 & 0x30000000000L) != 0L || (active7 & 0x100100000000L) != 0L || (active8 & 0x8000000000000000L) != 0L || (active9 & 0x5000004200010000L) != 0L || (active10 & 0x4402L) != 0L)
- return 77;
- if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ return 78;
+ if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 14;
- return 77;
+ return 78;
}
return -1;
case 15:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 15)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 15;
}
- return 77;
+ return 78;
}
if ((active0 & 0x800000L) != 0L || (active1 & 0x10c400020L) != 0L || (active2 & 0x180000000000000L) != 0L || (active8 & 0x1e000000000000L) != 0L || (active9 & 0x1L) != 0L)
- return 77;
+ return 78;
return -1;
case 16:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 16)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 16;
}
- return 77;
+ return 78;
}
if ((active1 & 0x8000100000L) != 0L || (active2 & 0x1L) != 0L || (active5 & 0x1000000000000000L) != 0L || (active7 & 0x400000000L) != 0L || (active8 & 0x70e0000000000000L) != 0L)
- return 77;
+ return 78;
return -1;
case 17:
if ((active1 & 0x2000000080L) != 0L || (active8 & 0x400000000000000L) != 0L)
- return 77;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ return 78;
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 17;
- return 77;
+ return 78;
}
return -1;
case 18:
- if ((active8 & 0xb00000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x10L) != 0L)
- return 77;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 18)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 18;
}
- return 77;
+ return 78;
}
+ if ((active8 & 0xb00000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x10L) != 0L)
+ return 78;
return -1;
case 19:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 19;
- return 77;
+ return 78;
}
if ((active1 & 0x100L) != 0L || (active5 & 0x20000L) != 0L || (active7 & 0x80000000L) != 0L)
- return 77;
+ return 78;
return -1;
case 20:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
- {
- jjmatchedKind = 821;
- jjmatchedPos = 20;
- return 77;
- }
if ((active0 & 0x1000000L) != 0L || (active1 & 0x8000040L) != 0L || (active2 & 0x100000000000000L) != 0L || (active7 & 0x200000000L) != 0L)
- return 77;
+ return 78;
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
+ {
+ jjmatchedKind = 824;
+ jjmatchedPos = 20;
+ return 78;
+ }
return -1;
case 21:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 21;
- return 77;
+ return 78;
}
- if ((active2 & 0x2000L) != 0L || (active10 & 0xc0000000020L) != 0L)
- return 77;
+ if ((active2 & 0x2000L) != 0L || (active10 & 0x180000000020L) != 0L)
+ return 78;
return -1;
case 22:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 22;
- return 77;
+ return 78;
}
if ((active6 & 0x10000000L) != 0L)
- return 77;
+ return 78;
return -1;
case 23:
- if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x100000000040L) != 0L)
- return 77;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x20000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x200000000040L) != 0L)
+ return 78;
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x40000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 23;
- return 77;
+ return 78;
}
return -1;
case 24:
- if ((active6 & 0x20000000L) != 0L || (active10 & 0x20000000000L) != 0L)
- return 77;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active6 & 0x20000000L) != 0L || (active10 & 0x40000000000L) != 0L)
+ return 78;
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 24;
- return 77;
+ return 78;
}
return -1;
case 25:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 25;
- return 77;
+ return 78;
}
- if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x200000L) != 0L)
- return 77;
+ if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x400000L) != 0L)
+ return 78;
return -1;
case 26:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 26;
- return 77;
+ return 78;
}
if ((active2 & 0x4000L) != 0L || (active8 & 0xc0000000000000L) != 0L)
- return 77;
+ return 78;
return -1;
case 27:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 27;
- return 77;
+ return 78;
}
return -1;
case 28:
- if ((active8 & 0x200000000000000L) != 0L)
- return 77;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 28;
- return 77;
+ return 78;
}
+ if ((active8 & 0x200000000000000L) != 0L)
+ return 78;
return -1;
case 29:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 29;
- return 77;
+ return 78;
}
return -1;
case 30:
- if ((active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
- {
- jjmatchedKind = 821;
- jjmatchedPos = 30;
- return 77;
- }
if ((active1 & 0x400000000000000L) != 0L)
- return 77;
+ return 78;
+ if ((active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
+ {
+ jjmatchedKind = 824;
+ jjmatchedPos = 30;
+ return 78;
+ }
return -1;
case 31:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 31;
- return 77;
+ return 78;
}
if ((active2 & 0x2L) != 0L)
- return 77;
+ return 78;
return -1;
case 32:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 821;
+ jjmatchedKind = 824;
jjmatchedPos = 32;
- return 77;
+ return 78;
}
return -1;
default :
@@ -16928,74 +16955,76 @@
switch(curChar)
{
case 33:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000L);
case 34:
- return jjStartNfaWithStates_3(0, 798, 79);
+ return jjStartNfaWithStates_3(0, 799, 79);
case 36:
- return jjStartNfaWithStates_3(0, 801, 77);
+ return jjStartNfaWithStates_3(0, 804, 78);
case 37:
- return jjStopAtPos(0, 793);
+ return jjStopAtPos(0, 794);
+ case 38:
+ return jjStopAtPos(0, 802);
case 39:
- return jjStartNfaWithStates_3(0, 797, 58);
+ return jjStartNfaWithStates_3(0, 798, 58);
case 40:
- return jjStopAtPos(0, 766);
- case 41:
return jjStopAtPos(0, 767);
+ case 41:
+ return jjStopAtPos(0, 768);
case 42:
- jjmatchedKind = 791;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000000L);
- case 43:
- return jjStopAtPos(0, 788);
- case 44:
- return jjStopAtPos(0, 778);
- case 45:
- jjmatchedKind = 789;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000L);
- case 46:
- jjmatchedKind = 777;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
- case 47:
jjmatchedKind = 792;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x90000000000L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000000L);
+ case 43:
+ return jjStopAtPos(0, 789);
+ case 44:
+ return jjStopAtPos(0, 779);
+ case 45:
+ jjmatchedKind = 790;
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000L);
+ case 46:
+ jjmatchedKind = 778;
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L);
+ case 47:
+ jjmatchedKind = 793;
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x480000000000L);
case 58:
- jjmatchedKind = 783;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L);
+ jjmatchedKind = 784;
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000000L);
case 59:
- return jjStopAtPos(0, 776);
+ return jjStopAtPos(0, 777);
case 60:
- jjmatchedKind = 781;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x50000L);
+ jjmatchedKind = 782;
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000a0000L);
case 61:
- jjmatchedKind = 779;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
- case 62:
jjmatchedKind = 780;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
+ case 62:
+ jjmatchedKind = 781;
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L);
case 63:
- return jjStopAtPos(0, 782);
+ return jjStopAtPos(0, 783);
case 91:
- return jjStopAtPos(0, 774);
- case 93:
return jjStopAtPos(0, 775);
+ case 93:
+ return jjStopAtPos(0, 776);
case 94:
- return jjStopAtPos(0, 800);
+ return jjStopAtPos(0, 801);
case 65:
case 97:
jjmatchedKind = 3;
- return jjMoveStringLiteralDfa1_3(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x110000180000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x220000300000L, 0x0L);
case 66:
case 98:
- return jjMoveStringLiteralDfa1_3(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L, 0x0L);
case 67:
case 99:
jjmatchedKind = 52;
- return jjMoveStringLiteralDfa1_3(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa000c00000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x14001800000L, 0x0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000L, 0x0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L, 0x0L);
case 70:
case 102:
return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x1fffff80000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
@@ -17008,67 +17037,67 @@
return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x1f80000000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa0010000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x140020000L, 0x0L);
case 74:
case 106:
return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0xffe0000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 75:
case 107:
jjmatchedKind = 296;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000000L, 0x0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
case 77:
case 109:
jjmatchedKind = 322;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x200000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x400000000000L, 0x0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L, 0x0L);
case 79:
case 111:
return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xf800000000000000L, 0x3fffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x440000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x880000000L, 0x0L);
case 81:
case 113:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x20000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x40000000000L, 0x0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x80000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x100000000000L, 0x0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x45000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x8a000000000L, 0x0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x400000020000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x800000040000L, 0x0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3fffffe000000L, 0x0L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffffe000000L, 0x0L, 0x0L);
case 86:
case 118:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3ffc000000000000L, 0x2000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7ff8000000000000L, 0x4000000L, 0x0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000000000000000L, 0xc200fffL, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000000000000L, 0x18401fffL, 0x0L);
case 88:
case 120:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000L, 0x0L);
case 89:
case 121:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x6000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000L, 0x0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000L, 0x0L);
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000L, 0x0L);
case 123:
- return jjStartNfaWithStates_3(0, 772, 78);
+ return jjStartNfaWithStates_3(0, 773, 77);
case 124:
- jjmatchedKind = 799;
- return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x4000000L);
+ jjmatchedKind = 800;
+ return jjMoveStringLiteralDfa1_3(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
case 125:
- return jjStopAtPos(0, 773);
+ return jjStopAtPos(0, 774);
default :
return jjMoveNfa_3(0, 0);
}
@@ -17083,55 +17112,59 @@
switch(curChar)
{
case 42:
- if ((active12 & 0x80000000000L) != 0L)
+ if ((active12 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 811;
+ jjmatchedKind = 814;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x10000000000L);
+ return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x80000000000L);
case 46:
- if ((active12 & 0x10000000L) != 0L)
- return jjStopAtPos(1, 796);
+ if ((active12 & 0x20000000L) != 0L)
+ return jjStopAtPos(1, 797);
break;
case 47:
- if ((active12 & 0x20000000000L) != 0L)
- return jjStopAtPos(1, 809);
+ if ((active12 & 0x100000000000L) != 0L)
+ return jjStopAtPos(1, 812);
break;
case 58:
- if ((active12 & 0x400000000L) != 0L)
- return jjStopAtPos(1, 802);
+ if ((active12 & 0x2000000000L) != 0L)
+ return jjStopAtPos(1, 805);
+ break;
+ case 60:
+ if ((active12 & 0x800000000L) != 0L)
+ return jjStopAtPos(1, 803);
break;
case 61:
- if ((active12 & 0x10000L) != 0L)
- return jjStopAtPos(1, 784);
- else if ((active12 & 0x20000L) != 0L)
+ if ((active12 & 0x20000L) != 0L)
return jjStopAtPos(1, 785);
- else if ((active12 & 0x80000L) != 0L)
- return jjStopAtPos(1, 787);
+ else if ((active12 & 0x40000L) != 0L)
+ return jjStopAtPos(1, 786);
+ else if ((active12 & 0x100000L) != 0L)
+ return jjStopAtPos(1, 788);
break;
case 62:
- if ((active12 & 0x40000L) != 0L)
- return jjStopAtPos(1, 786);
- else if ((active12 & 0x400000L) != 0L)
- return jjStopAtPos(1, 790);
- else if ((active12 & 0x8000000L) != 0L)
- return jjStopAtPos(1, 795);
+ if ((active12 & 0x80000L) != 0L)
+ return jjStopAtPos(1, 787);
+ else if ((active12 & 0x800000L) != 0L)
+ return jjStopAtPos(1, 791);
+ else if ((active12 & 0x10000000L) != 0L)
+ return jjStopAtPos(1, 796);
break;
case 65:
case 97:
- return jjMoveStringLiteralDfa2_3(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0x7fc000000000000L, active11, 0x200443c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0xff8000000000000L, active11, 0x400887880000L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa2_3(active0, 0x70L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa2_3(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x1000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x2000000000L, active12, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa2_3(active0, 0x700L, active1, 0L, active2, 0L, active3, 0x2000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa2_3(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xd800000002000000L, active11, 0x84000026001L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xb000000002000000L, active11, 0x10800004c003L, active12, 0L);
case 70:
case 102:
if ((active5 & 0x8000000000000000L) != 0L)
@@ -17139,18 +17172,18 @@
jjmatchedKind = 383;
jjmatchedPos = 1;
}
- else if ((active11 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(1, 720, 77);
- return jjMoveStringLiteralDfa2_3(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000L, active12, 0L);
+ else if ((active11 & 0x20000L) != 0L)
+ return jjStartNfaWithStates_3(1, 721, 78);
+ return jjMoveStringLiteralDfa2_3(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
case 71:
case 103:
return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 72:
case 104:
- return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0xeL, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0x1cL, active12, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa2_3(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x2000000000000000L, active11, 0x8000001f0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x4000000000000000L, active11, 0x10000003e0L, active12, 0L);
case 75:
case 107:
return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -17159,7 +17192,7 @@
return jjMoveStringLiteralDfa2_3(active0, 0x80000001f000L, active1, 0xf000L, active2, 0xc00000000000000L, active3, 0x8000400006000000L, active4, 0L, active5, 0L, active6, 0x1c00000000002L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x1000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x2000L, active12, 0L);
case 78:
case 110:
if ((active4 & 0x10L) != 0L)
@@ -17168,13 +17201,13 @@
jjmatchedPos = 1;
}
else if ((active4 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(1, 316, 77);
+ return jjStartNfaWithStates_3(1, 316, 78);
else if ((active6 & 0x8L) != 0L)
{
jjmatchedKind = 387;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_3(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0xffc000000L, active11, 0x1000b0000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1ffc000000L, active11, 0x200160000000L, active12, 0L);
case 79:
case 111:
if ((active3 & 0x800000000000L) != 0L)
@@ -17192,10 +17225,10 @@
jjmatchedKind = 640;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_3(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x40a300008200L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x814600010400L, active12, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa2_3(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0x7000000000L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0xe000000000L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x8L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xfffffffe00000000L, active9, 0x7fffffL, active10, 0L, active11, 0L, active12, 0L);
@@ -17206,7 +17239,7 @@
jjmatchedKind = 393;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_3(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0xc200c00L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0x18401800L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x2000000L) != 0L)
@@ -17219,7 +17252,7 @@
jjmatchedKind = 281;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_3(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3f8000000000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x7f0000000000L, active11, 0x20000000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x100000000L) != 0L)
@@ -17227,10 +17260,10 @@
jjmatchedKind = 32;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_3(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x1c00000000000L, active11, 0x40000100000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x3800000000000L, active11, 0x80000200000L, active12, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa2_3(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x2000000c00000L, active11, 0x20000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_3(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x4000000c00000L, active11, 0x40000000000L, active12, 0L);
case 86:
case 118:
return jjMoveStringLiteralDfa2_3(active0, 0x2000000000L, active1, 0L, active2, 0L, active3, 0x40L, active4, 0L, active5, 0L, active6, 0x3c0000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -17240,11 +17273,11 @@
case 89:
case 121:
if ((active0 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(1, 51, 77);
+ return jjStartNfaWithStates_3(1, 51, 78);
return jjMoveStringLiteralDfa2_3(active0, 0L, active1, 0L, active2, 0x1c0000000000020L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x3c0000000000L, active10, 0x1000000L, active11, 0L, active12, 0L);
case 124:
- if ((active12 & 0x4000000L) != 0L)
- return jjStopAtPos(1, 794);
+ if ((active12 & 0x8000000L) != 0L)
+ return jjStopAtPos(1, 795);
break;
default :
break;
@@ -17263,33 +17296,33 @@
switch(curChar)
{
case 43:
- if ((active12 & 0x10000000000L) != 0L)
- return jjStopAtPos(2, 808);
+ if ((active12 & 0x80000000000L) != 0L)
+ return jjStopAtPos(2, 811);
break;
case 65:
case 97:
if ((active0 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(2, 8, 77);
- return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x8000000ffcL, active11, 0x14100c006400L, active12, 0L);
+ return jjStartNfaWithStates_3(2, 8, 78);
+ return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x10000000ffcL, active11, 0x28201800c800L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0x20000000020000L, active2, 0L, active3, 0L, active4, 0x100100000000000L, active5, 0L, active6, 0x8000000000000000L, active7, 0L, active8, 0L, active9, 0x1c07e00000000L, active10, 0x4000000L, active11, 0L, active12, 0L);
case 67:
case 99:
if ((active0 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(2, 27, 77);
+ return jjStartNfaWithStates_3(2, 27, 78);
else if ((active2 & 0x200000L) != 0L)
{
jjmatchedKind = 149;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x10c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x21880000L, active12, 0L);
case 68:
case 100:
if ((active0 & 0x200L) != 0L)
- return jjStartNfaWithStates_3(2, 9, 77);
+ return jjStartNfaWithStates_3(2, 9, 78);
else if ((active0 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(2, 17, 77);
+ return jjStartNfaWithStates_3(2, 17, 78);
else if ((active2 & 0x4000000000000000L) != 0L)
{
jjmatchedKind = 190;
@@ -17301,17 +17334,17 @@
jjmatchedPos = 2;
}
else if ((active6 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(2, 385, 77);
+ return jjStartNfaWithStates_3(2, 385, 78);
else if ((active6 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(2, 406, 77);
- return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x4000001020000000L, active11, 0x20000010L, active12, 0L);
+ return jjStartNfaWithStates_3(2, 406, 78);
+ return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x8000002020000000L, active11, 0x40000020L, active12, 0L);
case 69:
case 101:
if ((active0 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(2, 20, 77);
+ return jjStartNfaWithStates_3(2, 20, 78);
else if ((active6 & 0x10L) != 0L)
- return jjStartNfaWithStates_3(2, 388, 77);
- return jjMoveStringLiteralDfa3_3(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0xa0001f0000401000L, active11, 0x2000000000fL, active12, 0L);
+ return jjStartNfaWithStates_3(2, 388, 78);
+ return jjMoveStringLiteralDfa3_3(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0x40003e0000401000L, active11, 0x4000000001fL, active12, 0L);
case 70:
case 102:
if ((active7 & 0x200L) != 0L)
@@ -17319,22 +17352,22 @@
jjmatchedKind = 457;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_3(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x1c00000000000L, active11, 0x80000080000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x3800000000000L, active11, 0x100000100000L, active12, 0L);
case 71:
case 103:
if ((active0 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 37, 77);
+ return jjStartNfaWithStates_3(2, 37, 78);
else if ((active4 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 301, 77);
- return jjMoveStringLiteralDfa3_3(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L, active12, 0L);
+ return jjStartNfaWithStates_3(2, 301, 78);
+ return jjMoveStringLiteralDfa3_3(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000L, active12, 0L);
case 72:
case 104:
return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x8020000000000L, active6, 0x4000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 73:
case 105:
if ((active6 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 432, 77);
- return jjMoveStringLiteralDfa3_3(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x22000c007e000L, active11, 0x200800L, active12, 0L);
+ return jjStartNfaWithStates_3(2, 432, 78);
+ return jjMoveStringLiteralDfa3_3(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x44000c007e000L, active11, 0x401000L, active12, 0L);
case 74:
case 106:
return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -17353,14 +17386,14 @@
jjmatchedKind = 545;
jjmatchedPos = 2;
}
- else if ((active11 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(2, 716, 77);
- return jjMoveStringLiteralDfa3_3(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x1c000000000000L, active11, 0xa82000000L, active12, 0L);
+ else if ((active11 & 0x2000L) != 0L)
+ return jjStartNfaWithStates_3(2, 717, 78);
+ return jjMoveStringLiteralDfa3_3(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x38000000000000L, active11, 0x1504000000L, active12, 0L);
case 77:
case 109:
if ((active9 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 616, 77);
- return jjMoveStringLiteralDfa3_3(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x8000020000L, active12, 0L);
+ return jjStartNfaWithStates_3(2, 616, 78);
+ return jjMoveStringLiteralDfa3_3(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x10000040000L, active12, 0L);
case 78:
case 110:
if ((active5 & 0x800000L) != 0L)
@@ -17368,10 +17401,10 @@
jjmatchedKind = 343;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_3(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x2000008020L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x4000010040L, active12, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa3_3(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x200000L, active12, 0L);
case 80:
case 112:
if ((active3 & 0x4000L) != 0L)
@@ -17380,10 +17413,10 @@
jjmatchedPos = 2;
}
else if ((active3 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 250, 77);
+ return jjStartNfaWithStates_3(2, 250, 78);
else if ((active5 & 0x8L) != 0L)
- return jjStartNfaWithStates_3(2, 323, 77);
- return jjMoveStringLiteralDfa3_3(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x2201000002L, active11, 0L, active12, 0L);
+ return jjStartNfaWithStates_3(2, 323, 78);
+ return jjMoveStringLiteralDfa3_3(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x4201000002L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -17399,7 +17432,7 @@
jjmatchedKind = 422;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_3(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x1fe0000000000000L, active11, 0x4040000200L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x3fc0000000000000L, active11, 0x8080000400L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x10L) != 0L)
@@ -17407,22 +17440,22 @@
jjmatchedKind = 4;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_3(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x4002000000L, active11, 0x400000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x9002000000L, active11, 0x800000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 46, 77);
+ return jjStartNfaWithStates_3(2, 46, 78);
else if ((active2 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 177, 77);
+ return jjStartNfaWithStates_3(2, 177, 78);
else if ((active3 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 237, 77);
+ return jjStartNfaWithStates_3(2, 237, 78);
else if ((active4 & 0x40000L) != 0L)
{
jjmatchedKind = 274;
jjmatchedPos = 2;
}
else if ((active5 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 370, 77);
+ return jjStartNfaWithStates_3(2, 370, 78);
else if ((active6 & 0x8000L) != 0L)
{
jjmatchedKind = 399;
@@ -17433,7 +17466,7 @@
jjmatchedKind = 530;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_3(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x4000010001c0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x800002000380L, active12, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0x1000000000000L, active2, 0x4000000000000L, active3, 0x1800000100000008L, active4, 0L, active5, 0L, active6, 0L, active7, 0x780000000000L, active8, 0x10000000L, active9, 0x8000000000000L, active10, 0x180000L, active11, 0L, active12, 0L);
@@ -17443,9 +17476,9 @@
case 87:
case 119:
if ((active2 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 179, 77);
+ return jjStartNfaWithStates_3(2, 179, 78);
else if ((active5 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 364, 77);
+ return jjStartNfaWithStates_3(2, 364, 78);
else if ((active7 & 0x800000000000L) != 0L)
{
jjmatchedKind = 495;
@@ -17459,24 +17492,24 @@
jjmatchedKind = 330;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L, active12, 0L);
case 89:
case 121:
if ((active0 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(2, 18, 77);
+ return jjStartNfaWithStates_3(2, 18, 78);
else if ((active2 & 0x10000L) != 0L)
{
jjmatchedKind = 144;
jjmatchedPos = 2;
}
else if ((active2 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(2, 180, 77);
+ return jjStartNfaWithStates_3(2, 180, 78);
else if ((active4 & 0x20000000000L) != 0L)
{
jjmatchedKind = 297;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_3(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_3(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x20000000000L, active12, 0L);
case 90:
case 122:
return jjMoveStringLiteralDfa3_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -17499,15 +17532,15 @@
case 45:
return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 49:
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x800000000000L, active11, 0L);
- case 51:
return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1000000000000L, active11, 0L);
+ case 51:
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000000000L, active11, 0L);
case 56:
- if ((active10 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 686, 77);
+ if ((active10 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_3(3, 687, 78);
break;
case 95:
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0x60000000200002L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0xc0000000200002L, active11, 0x400000000000L);
case 65:
case 97:
if ((active2 & 0x40L) != 0L)
@@ -17516,15 +17549,15 @@
jjmatchedPos = 3;
}
else if ((active4 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(3, 285, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x1400001000L, active11, 0x400041000000L);
+ return jjStartNfaWithStates_3(3, 285, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x2400001000L, active11, 0x800082000000L);
case 66:
case 98:
if ((active0 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 47, 77);
+ return jjStartNfaWithStates_3(3, 47, 78);
else if ((active1 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(3, 78, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000800000L, active11, 0L);
+ return jjStartNfaWithStates_3(3, 78, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000800000L, active11, 0L);
case 67:
case 99:
if ((active2 & 0x4000000000L) != 0L)
@@ -17537,11 +17570,11 @@
jjmatchedKind = 203;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_3(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x100000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_3(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x200000002000000L, active11, 0L);
case 68:
case 100:
if ((active3 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 249, 77);
+ return jjStartNfaWithStates_3(3, 249, 78);
else if ((active4 & 0x8000000000000L) != 0L)
{
jjmatchedKind = 307;
@@ -17552,97 +17585,97 @@
jjmatchedKind = 453;
jjmatchedPos = 3;
}
- else if ((active10 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 689, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x20L);
+ else if ((active10 & 0x4000000000000L) != 0L)
+ return jjStartNfaWithStates_3(3, 690, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x40L);
case 69:
case 101:
if ((active0 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 58, 77);
+ return jjStartNfaWithStates_3(3, 58, 78);
else if ((active1 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 117, 77);
+ return jjStartNfaWithStates_3(3, 117, 78);
else if ((active2 & 0x100L) != 0L)
{
jjmatchedKind = 136;
jjmatchedPos = 3;
}
else if ((active2 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 187, 77);
+ return jjStartNfaWithStates_3(3, 187, 78);
else if ((active3 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(3, 227, 77);
+ return jjStartNfaWithStates_3(3, 227, 78);
else if ((active4 & 0x200000000000000L) != 0L)
{
jjmatchedKind = 313;
jjmatchedPos = 3;
}
else if ((active5 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(3, 353, 77);
+ return jjStartNfaWithStates_3(3, 353, 78);
else if ((active5 & 0x1000000000L) != 0L)
{
jjmatchedKind = 356;
jjmatchedPos = 3;
}
else if ((active5 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 367, 77);
+ return jjStartNfaWithStates_3(3, 367, 78);
else if ((active7 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 488, 77);
+ return jjStartNfaWithStates_3(3, 488, 78);
else if ((active8 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(3, 536, 77);
+ return jjStartNfaWithStates_3(3, 536, 78);
else if ((active8 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(3, 539, 77);
+ return jjStartNfaWithStates_3(3, 539, 78);
else if ((active9 & 0x20000000000000L) != 0L)
{
jjmatchedKind = 629;
jjmatchedPos = 3;
}
else if ((active10 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(3, 659, 77);
+ return jjStartNfaWithStates_3(3, 659, 78);
else if ((active10 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(3, 664, 77);
- else if ((active11 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(3, 719, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0x6820000000L, active11, 0x20000000L);
+ return jjStartNfaWithStates_3(3, 664, 78);
+ else if ((active11 & 0x10000L) != 0L)
+ return jjStartNfaWithStates_3(3, 720, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0xc820000000L, active11, 0x40000000L);
case 70:
case 102:
if ((active0 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(3, 26, 77);
+ return jjStartNfaWithStates_3(3, 26, 78);
else if ((active8 & 0x200L) != 0L)
- return jjStartNfaWithStates_3(3, 521, 77);
+ return jjStartNfaWithStates_3(3, 521, 78);
break;
case 71:
case 103:
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x800001e000L, active11, 0x100000000L);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x1000001e000L, active11, 0x200000000L);
case 72:
case 104:
if ((active0 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 49, 77);
+ return jjStartNfaWithStates_3(3, 49, 78);
else if ((active2 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 185, 77);
+ return jjStartNfaWithStates_3(3, 185, 78);
else if ((active6 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 420, 77);
- else if ((active11 & 0x40L) != 0L)
+ return jjStartNfaWithStates_3(3, 420, 78);
+ else if ((active11 & 0x80L) != 0L)
{
- jjmatchedKind = 710;
+ jjmatchedKind = 711;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_3(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0xc00180L);
+ return jjMoveStringLiteralDfa4_3(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x1800300L);
case 73:
case 105:
- return jjMoveStringLiteralDfa4_3(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x200000200000004L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa4_3(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x400001200000004L, active11, 0x100100000L);
case 75:
case 107:
if ((active7 & 0x10L) != 0L)
- return jjStartNfaWithStates_3(3, 452, 77);
+ return jjStartNfaWithStates_3(3, 452, 78);
else if ((active8 & 0x80L) != 0L)
- return jjStartNfaWithStates_3(3, 519, 77);
- else if ((active10 & 0x8000000000000000L) != 0L)
+ return jjStartNfaWithStates_3(3, 519, 78);
+ else if ((active11 & 0x1L) != 0L)
{
- jjmatchedKind = 703;
+ jjmatchedKind = 704;
jjmatchedPos = 3;
}
- else if ((active11 & 0x200L) != 0L)
- return jjStartNfaWithStates_3(3, 713, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x40001L);
+ else if ((active11 & 0x400L) != 0L)
+ return jjStartNfaWithStates_3(3, 714, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80002L);
case 76:
case 108:
if ((active0 & 0x20000000000000L) != 0L)
@@ -17656,64 +17689,64 @@
jjmatchedPos = 3;
}
else if ((active3 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 230, 77);
+ return jjStartNfaWithStates_3(3, 230, 78);
else if ((active5 & 0x20000000000000L) != 0L)
{
jjmatchedKind = 373;
jjmatchedPos = 3;
}
else if ((active7 & 0x80L) != 0L)
- return jjStartNfaWithStates_3(3, 455, 77);
- else if ((active11 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(3, 739, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x100000000000L);
+ return jjStartNfaWithStates_3(3, 455, 78);
+ else if ((active11 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_3(3, 740, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x200000000000L);
case 77:
case 109:
if ((active3 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 229, 77);
+ return jjStartNfaWithStates_3(3, 229, 78);
else if ((active10 & 0x20000L) != 0L)
{
jjmatchedKind = 657;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_3(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa4_3(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x200000L);
case 78:
case 110:
if ((active4 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(3, 286, 77);
+ return jjStartNfaWithStates_3(3, 286, 78);
else if ((active4 & 0x80000000L) != 0L)
{
jjmatchedKind = 287;
jjmatchedPos = 3;
}
else if ((active6 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(3, 390, 77);
+ return jjStartNfaWithStates_3(3, 390, 78);
else if ((active6 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 431, 77);
+ return jjStartNfaWithStates_3(3, 431, 78);
else if ((active9 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 626, 77);
- else if ((active11 & 0x2L) != 0L)
+ return jjStartNfaWithStates_3(3, 626, 78);
+ else if ((active11 & 0x4L) != 0L)
{
- jjmatchedKind = 705;
+ jjmatchedKind = 706;
jjmatchedPos = 3;
}
- else if ((active11 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 740, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x4000200100100ff8L, active11, 0x10000000004L);
+ else if ((active11 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_3(3, 741, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x8000400100100ff8L, active11, 0x20000000008L);
case 79:
case 111:
if ((active3 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 240, 77);
+ return jjStartNfaWithStates_3(3, 240, 78);
else if ((active4 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(3, 279, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x200000000L);
+ return jjStartNfaWithStates_3(3, 279, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x400000000L);
case 80:
case 112:
if ((active2 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 181, 77);
+ return jjStartNfaWithStates_3(3, 181, 78);
else if ((active8 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(3, 537, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x800c020400L);
+ return jjStartNfaWithStates_3(3, 537, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x10018040800L);
case 81:
case 113:
return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000L, active11, 0L);
@@ -17739,68 +17772,68 @@
jjmatchedKind = 402;
jjmatchedPos = 3;
}
- else if ((active10 & 0x10000000000L) != 0L)
+ else if ((active10 & 0x20000000000L) != 0L)
{
- jjmatchedKind = 680;
+ jjmatchedKind = 681;
jjmatchedPos = 3;
}
- else if ((active11 & 0x2000L) != 0L)
+ else if ((active11 & 0x4000L) != 0L)
{
- jjmatchedKind = 717;
+ jjmatchedKind = 718;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_3(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x1e0000000000L, active11, 0xa0010004008L);
+ return jjMoveStringLiteralDfa4_3(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x3c0000000000L, active11, 0x140020008010L);
case 83:
case 115:
if ((active2 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(3, 147, 77);
+ return jjStartNfaWithStates_3(3, 147, 78);
else if ((active7 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 498, 77);
+ return jjStartNfaWithStates_3(3, 498, 78);
else if ((active8 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(3, 531, 77);
+ return jjStartNfaWithStates_3(3, 531, 78);
else if ((active9 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 628, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x1800000000400000L, active11, 0x400000000L);
+ return jjStartNfaWithStates_3(3, 628, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x3000000000400000L, active11, 0x800000000L);
case 84:
case 116:
if ((active0 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 59, 77);
+ return jjStartNfaWithStates_3(3, 59, 78);
else if ((active4 & 0x1000000000000L) != 0L)
{
jjmatchedKind = 304;
jjmatchedPos = 3;
}
else if ((active4 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 309, 77);
+ return jjStartNfaWithStates_3(3, 309, 78);
else if ((active5 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 365, 77);
+ return jjStartNfaWithStates_3(3, 365, 78);
else if ((active6 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(3, 386, 77);
+ return jjStartNfaWithStates_3(3, 386, 78);
else if ((active6 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(3, 419, 77);
+ return jjStartNfaWithStates_3(3, 419, 78);
else if ((active9 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(3, 598, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x42000200810L);
+ return jjStartNfaWithStates_3(3, 598, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x84000401020L);
case 85:
case 117:
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x1c000000000000L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x38000000000000L, active11, 0x4000000L);
case 86:
case 118:
if ((active6 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 442, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x4000000000L);
+ return jjStartNfaWithStates_3(3, 442, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x8000000000L);
case 87:
case 119:
if ((active8 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(3, 533, 77);
- else if ((active10 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(3, 701, 77);
+ return jjStartNfaWithStates_3(3, 533, 78);
+ else if ((active10 & 0x4000000000000000L) != 0L)
+ return jjStartNfaWithStates_3(3, 702, 78);
return jjMoveStringLiteralDfa4_3(active0, 0x80000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
if ((active6 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(3, 389, 77);
- return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x400000000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(3, 389, 78);
+ return jjMoveStringLiteralDfa4_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x800000000000000L, active11, 0L);
default :
break;
}
@@ -17818,107 +17851,107 @@
switch(curChar)
{
case 50:
- if ((active10 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 688, 77);
+ if ((active10 & 0x2000000000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 689, 78);
break;
case 54:
- if ((active10 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 687, 77);
+ if ((active10 & 0x1000000000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 688, 78);
break;
case 95:
- return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x1e0000040000L, active11, 0xd000000L);
+ return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x3c0000040000L, active11, 0x1a000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa5_3(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x200000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_3(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x400000002000000L, active11, 0L);
case 66:
case 98:
if ((active5 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 362, 77);
+ return jjStartNfaWithStates_3(4, 362, 78);
return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0x80L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000L, active8, 0x3e000000000L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- if ((active11 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 744, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x200000000000L);
+ if ((active11 & 0x20000000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 745, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x400000000000L);
case 68:
case 100:
if ((active3 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(4, 224, 77);
+ return jjStartNfaWithStates_3(4, 224, 78);
return jjMoveStringLiteralDfa5_3(active0, 0x4000000000000L, active1, 0L, active2, 0x2000000000400000L, active3, 0L, active4, 0x3L, active5, 0L, active6, 0L, active7, 0L, active8, 0x700000000000L, active9, 0L, active10, 0x400000L, active11, 0L);
case 69:
case 101:
if ((active1 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(4, 79, 77);
+ return jjStartNfaWithStates_3(4, 79, 78);
else if ((active2 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(4, 133, 77);
+ return jjStartNfaWithStates_3(4, 133, 78);
else if ((active3 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(4, 211, 77);
+ return jjStartNfaWithStates_3(4, 211, 78);
else if ((active3 & 0x8000000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 255, 77);
+ return jjStartNfaWithStates_3(4, 255, 78);
else if ((active4 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 303, 77);
+ return jjStartNfaWithStates_3(4, 303, 78);
else if ((active5 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(4, 335, 77);
+ return jjStartNfaWithStates_3(4, 335, 78);
else if ((active5 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 372, 77);
+ return jjStartNfaWithStates_3(4, 372, 78);
else if ((active7 & 0x8L) != 0L)
- return jjStartNfaWithStates_3(4, 451, 77);
+ return jjStartNfaWithStates_3(4, 451, 78);
else if ((active7 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 487, 77);
+ return jjStartNfaWithStates_3(4, 487, 78);
else if ((active7 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 506, 77);
+ return jjStartNfaWithStates_3(4, 506, 78);
else if ((active7 & 0x2000000000000000L) != 0L)
{
jjmatchedKind = 509;
jjmatchedPos = 4;
}
else if ((active8 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(4, 541, 77);
+ return jjStartNfaWithStates_3(4, 541, 78);
else if ((active9 & 0x1000000L) != 0L)
{
jjmatchedKind = 600;
jjmatchedPos = 4;
}
else if ((active9 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(4, 608, 77);
+ return jjStartNfaWithStates_3(4, 608, 78);
else if ((active9 & 0x400000000000L) != 0L)
{
jjmatchedKind = 622;
jjmatchedPos = 4;
}
- else if ((active10 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 679, 77);
- else if ((active10 & 0x4000000000000L) != 0L)
+ else if ((active10 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 680, 78);
+ else if ((active10 & 0x8000000000000L) != 0L)
{
- jjmatchedKind = 690;
+ jjmatchedKind = 691;
jjmatchedPos = 4;
}
- else if ((active11 & 0x8L) != 0L)
- return jjStartNfaWithStates_3(4, 707, 77);
- else if ((active11 & 0x800L) != 0L)
+ else if ((active11 & 0x10L) != 0L)
+ return jjStartNfaWithStates_3(4, 708, 78);
+ else if ((active11 & 0x1000L) != 0L)
{
- jjmatchedKind = 715;
+ jjmatchedKind = 716;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_3(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x4018000000000000L, active11, 0x80002e00004L);
+ return jjMoveStringLiteralDfa5_3(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x8030000000000000L, active11, 0x100005c00008L);
case 70:
case 102:
if ((active2 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 164, 77);
+ return jjStartNfaWithStates_3(4, 164, 78);
return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0x60000L, active3, 0x1L, active4, 0L, active5, 0x10000000L, active6, 0L, active7, 0L, active8, 0x800000000000L, active9, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 685, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e000L, active11, 0x200000000L);
+ if ((active10 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 686, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100001e000L, active11, 0x400000000L);
case 72:
case 104:
if ((active2 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(4, 163, 77);
+ return jjStartNfaWithStates_3(4, 163, 78);
else if ((active3 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(4, 194, 77);
+ return jjStartNfaWithStates_3(4, 194, 78);
else if ((active3 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(4, 212, 77);
+ return jjStartNfaWithStates_3(4, 212, 78);
else if ((active5 & 0x10L) != 0L)
{
jjmatchedKind = 324;
@@ -17929,53 +17962,53 @@
jjmatchedKind = 351;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000000L, active11, 0x10L);
+ return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000000L, active11, 0x20L);
case 73:
case 105:
- return jjMoveStringLiteralDfa5_3(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x1c80000000000000L, active11, 0x46100100080L);
+ return jjMoveStringLiteralDfa5_3(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x3900000000000000L, active11, 0x8c200200100L);
case 75:
case 107:
if ((active1 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(4, 75, 77);
+ return jjStartNfaWithStates_3(4, 75, 78);
return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x1000000L, active5, 0L, active6, 0L, active7, 0x2000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 76:
case 108:
if ((active1 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(4, 81, 77);
+ return jjStartNfaWithStates_3(4, 81, 78);
else if ((active3 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(4, 214, 77);
+ return jjStartNfaWithStates_3(4, 214, 78);
else if ((active4 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 300, 77);
+ return jjStartNfaWithStates_3(4, 300, 78);
else if ((active4 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 311, 77);
+ return jjStartNfaWithStates_3(4, 311, 78);
else if ((active4 & 0x2000000000000000L) != 0L)
{
jjmatchedKind = 317;
jjmatchedPos = 4;
}
- else if ((active11 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 750, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x40020000L);
+ else if ((active11 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 751, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x80040000L);
case 77:
case 109:
return jjMoveStringLiteralDfa5_3(active0, 0x80000000L, active1, 0x3000000L, active2, 0x1c0000000800000L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0x3f800000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0x408000000L, active11, 0L);
case 78:
case 110:
if ((active0 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(4, 10, 77);
+ return jjStartNfaWithStates_3(4, 10, 78);
else if ((active0 & 0x8000000000L) != 0L)
{
jjmatchedKind = 39;
jjmatchedPos = 4;
}
else if ((active1 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(4, 65, 77);
+ return jjStartNfaWithStates_3(4, 65, 78);
else if ((active10 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(4, 670, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x80080000L);
+ return jjStartNfaWithStates_3(4, 670, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x100100000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa5_3(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x120L);
+ return jjMoveStringLiteralDfa5_3(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x240L);
case 80:
case 112:
if ((active3 & 0x8000000000000L) != 0L)
@@ -17983,125 +18016,125 @@
jjmatchedKind = 243;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x20000000000000L, active11, 0x400L);
+ return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x40000000000000L, active11, 0x800L);
case 82:
case 114:
if ((active0 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(4, 11, 77);
+ return jjStartNfaWithStates_3(4, 11, 78);
else if ((active0 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(4, 15, 77);
+ return jjStartNfaWithStates_3(4, 15, 78);
else if ((active3 & 0x10L) != 0L)
- return jjStartNfaWithStates_3(4, 196, 77);
+ return jjStartNfaWithStates_3(4, 196, 78);
else if ((active3 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(4, 218, 77);
+ return jjStartNfaWithStates_3(4, 218, 78);
else if ((active4 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(4, 267, 77);
+ return jjStartNfaWithStates_3(4, 267, 78);
else if ((active5 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(4, 321, 77);
+ return jjStartNfaWithStates_3(4, 321, 78);
else if ((active5 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 361, 77);
+ return jjStartNfaWithStates_3(4, 361, 78);
else if ((active6 & 0x400L) != 0L)
{
jjmatchedKind = 394;
jjmatchedPos = 4;
}
else if ((active6 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(4, 400, 77);
+ return jjStartNfaWithStates_3(4, 400, 78);
else if ((active6 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 436, 77);
+ return jjStartNfaWithStates_3(4, 436, 78);
else if ((active6 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 444, 77);
+ return jjStartNfaWithStates_3(4, 444, 78);
else if ((active10 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(4, 669, 77);
- else if ((active10 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 677, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x4000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(4, 669, 78);
+ else if ((active10 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 678, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x8000000000L, active11, 0L);
case 83:
case 115:
if ((active1 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 116, 77);
+ return jjStartNfaWithStates_3(4, 116, 78);
else if ((active3 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 252, 77);
+ return jjStartNfaWithStates_3(4, 252, 78);
else if ((active5 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(4, 355, 77);
+ return jjStartNfaWithStates_3(4, 355, 78);
else if ((active5 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 357, 77);
+ return jjStartNfaWithStates_3(4, 357, 78);
else if ((active5 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 376, 77);
+ return jjStartNfaWithStates_3(4, 376, 78);
else if ((active7 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(4, 454, 77);
+ return jjStartNfaWithStates_3(4, 454, 78);
else if ((active8 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(4, 532, 77);
- else if ((active11 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(4, 704, 77);
- else if ((active11 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(4, 718, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x40000800000ff8L, active11, 0L);
+ return jjStartNfaWithStates_3(4, 532, 78);
+ else if ((active11 & 0x2L) != 0L)
+ return jjStartNfaWithStates_3(4, 705, 78);
+ else if ((active11 & 0x8000L) != 0L)
+ return jjStartNfaWithStates_3(4, 719, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x80000800000ff8L, active11, 0L);
case 84:
case 116:
if ((active1 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 112, 77);
+ return jjStartNfaWithStates_3(4, 112, 78);
else if ((active3 & 0x800000L) != 0L)
{
jjmatchedKind = 215;
jjmatchedPos = 4;
}
else if ((active3 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(4, 217, 77);
+ return jjStartNfaWithStates_3(4, 217, 78);
else if ((active3 & 0x2000000000000L) != 0L)
{
jjmatchedKind = 241;
jjmatchedPos = 4;
}
else if ((active4 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(4, 268, 77);
+ return jjStartNfaWithStates_3(4, 268, 78);
else if ((active4 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(4, 269, 77);
+ return jjStartNfaWithStates_3(4, 269, 78);
else if ((active4 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 315, 77);
+ return jjStartNfaWithStates_3(4, 315, 78);
else if ((active6 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 429, 77);
+ return jjStartNfaWithStates_3(4, 429, 78);
else if ((active7 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(4, 473, 77);
+ return jjStartNfaWithStates_3(4, 473, 78);
else if ((active7 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 486, 77);
+ return jjStartNfaWithStates_3(4, 486, 78);
else if ((active9 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(4, 599, 77);
+ return jjStartNfaWithStates_3(4, 599, 78);
else if ((active10 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(4, 652, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x1000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(4, 652, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x2000000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x8000040000L);
+ return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x10000080000L);
case 86:
case 118:
return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0x2000000000L, active3, 0L, active4, 0L, active5, 0x8000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x300000L, active10, 0x200000000L, active11, 0L);
case 87:
case 119:
if ((active0 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(4, 14, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000L);
+ return jjStartNfaWithStates_3(4, 14, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x800000000L);
case 88:
case 120:
- if ((active11 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(4, 733, 77);
+ if ((active11 & 0x40000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 734, 78);
return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
if ((active0 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(4, 19, 77);
+ return jjStartNfaWithStates_3(4, 19, 78);
else if ((active0 & 0x200000L) != 0L)
{
jjmatchedKind = 21;
jjmatchedPos = 4;
}
else if ((active2 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 188, 77);
+ return jjStartNfaWithStates_3(4, 188, 78);
else if ((active3 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(4, 198, 77);
- else if ((active11 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(4, 745, 77);
- return jjMoveStringLiteralDfa5_3(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100010000000L);
+ return jjStartNfaWithStates_3(4, 198, 78);
+ else if ((active11 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_3(4, 746, 78);
+ return jjMoveStringLiteralDfa5_3(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200020000000L);
case 90:
case 122:
return jjMoveStringLiteralDfa5_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x6000000000000000L, active10, 0L, active11, 0L);
@@ -18122,7 +18155,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa6_3(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x10000000000000L, active11, 0x2e00010L);
+ return jjMoveStringLiteralDfa6_3(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x20000000000000L, active11, 0x5c00020L);
case 65:
case 97:
if ((active7 & 0x800000000000000L) != 0L)
@@ -18130,7 +18163,7 @@
jjmatchedKind = 507;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_3(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x140000000740078L, active11, 0x20000L);
+ return jjMoveStringLiteralDfa6_3(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x280000000740078L, active11, 0x40000L);
case 66:
case 98:
return jjMoveStringLiteralDfa6_3(active0, 0xc00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x40000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -18142,105 +18175,105 @@
jjmatchedPos = 5;
}
else if ((active6 & 0x8000000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 447, 77);
+ return jjStartNfaWithStates_3(5, 447, 78);
else if ((active9 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(5, 602, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x4000100000L);
+ return jjStartNfaWithStates_3(5, 602, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x8000200000L);
case 68:
case 100:
if ((active0 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 54, 77);
+ return jjStartNfaWithStates_3(5, 54, 78);
else if ((active3 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(5, 208, 77);
+ return jjStartNfaWithStates_3(5, 208, 78);
else if ((active5 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(5, 339, 77);
+ return jjStartNfaWithStates_3(5, 339, 78);
else if ((active6 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 427, 77);
+ return jjStartNfaWithStates_3(5, 427, 78);
else if ((active8 & 0x8L) != 0L)
{
jjmatchedKind = 515;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_3(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x1e0010000000L, active11, 0L);
+ return jjMoveStringLiteralDfa6_3(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x3c0010000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 38, 77);
+ return jjStartNfaWithStates_3(5, 38, 78);
else if ((active1 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 115, 77);
+ return jjStartNfaWithStates_3(5, 115, 78);
else if ((active2 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(5, 150, 77);
+ return jjStartNfaWithStates_3(5, 150, 78);
else if ((active2 & 0x20000000L) != 0L)
{
jjmatchedKind = 157;
jjmatchedPos = 5;
}
else if ((active2 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(5, 160, 77);
+ return jjStartNfaWithStates_3(5, 160, 78);
else if ((active2 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(5, 161, 77);
+ return jjStartNfaWithStates_3(5, 161, 78);
else if ((active2 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 178, 77);
+ return jjStartNfaWithStates_3(5, 178, 78);
else if ((active3 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(5, 197, 77);
+ return jjStartNfaWithStates_3(5, 197, 78);
else if ((active3 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 254, 77);
+ return jjStartNfaWithStates_3(5, 254, 78);
else if ((active5 & 0x1000000L) != 0L)
{
jjmatchedKind = 344;
jjmatchedPos = 5;
}
else if ((active5 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(5, 349, 77);
+ return jjStartNfaWithStates_3(5, 349, 78);
else if ((active7 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 485, 77);
+ return jjStartNfaWithStates_3(5, 485, 78);
else if ((active8 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(5, 535, 77);
+ return jjStartNfaWithStates_3(5, 535, 78);
else if ((active8 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(5, 540, 77);
+ return jjStartNfaWithStates_3(5, 540, 78);
else if ((active10 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(5, 663, 77);
+ return jjStartNfaWithStates_3(5, 663, 78);
else if ((active10 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(5, 671, 77);
- else if ((active10 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 676, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x80000400L);
+ return jjStartNfaWithStates_3(5, 671, 78);
+ else if ((active10 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_3(5, 677, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x100000800L);
case 70:
case 102:
if ((active5 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 375, 77);
+ return jjStartNfaWithStates_3(5, 375, 78);
return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1L, active8, 0x1c0000000L, active9, 0L, active10, 0x180L, active11, 0L);
case 71:
case 103:
if ((active3 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 247, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x200000000L);
+ return jjStartNfaWithStates_3(5, 247, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x400000000L);
case 72:
case 104:
if ((active4 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 310, 77);
+ return jjStartNfaWithStates_3(5, 310, 78);
else if ((active8 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(5, 514, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjStartNfaWithStates_3(5, 514, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 73:
case 105:
- return jjMoveStringLiteralDfa6_3(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa6_3(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x100000L);
case 75:
case 107:
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x4000000L);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x8000000L);
case 76:
case 108:
if ((active3 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 238, 77);
+ return jjStartNfaWithStates_3(5, 238, 78);
else if ((active6 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(5, 416, 77);
+ return jjStartNfaWithStates_3(5, 416, 78);
else if ((active8 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(5, 513, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x40000000L);
+ return jjStartNfaWithStates_3(5, 513, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x80000000L);
case 77:
case 109:
if ((active9 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(5, 605, 77);
+ return jjStartNfaWithStates_3(5, 605, 78);
else if ((active9 & 0x80000000000L) != 0L)
{
jjmatchedKind = 619;
@@ -18250,16 +18283,16 @@
case 78:
case 110:
if ((active0 & 0x80L) != 0L)
- return jjStartNfaWithStates_3(5, 7, 77);
+ return jjStartNfaWithStates_3(5, 7, 78);
else if ((active1 & 0x1000000L) != 0L)
{
jjmatchedKind = 88;
jjmatchedPos = 5;
}
else if ((active2 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 176, 77);
+ return jjStartNfaWithStates_3(5, 176, 78);
else if ((active3 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 232, 77);
+ return jjStartNfaWithStates_3(5, 232, 78);
else if ((active6 & 0x80L) != 0L)
{
jjmatchedKind = 391;
@@ -18270,17 +18303,17 @@
jjmatchedKind = 478;
jjmatchedPos = 5;
}
- else if ((active11 & 0x80L) != 0L)
- return jjStartNfaWithStates_3(5, 711, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0x680000004000000L, active11, 0x2100000000L);
+ else if ((active11 & 0x100L) != 0L)
+ return jjStartNfaWithStates_3(5, 712, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0xd00001004000000L, active11, 0x4200000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa6_3(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x1820000200000000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa6_3(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x3040000200000000L, active11, 0x800000000L);
case 80:
case 112:
if ((active7 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 490, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x10040000L);
+ return jjStartNfaWithStates_3(5, 490, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x20080000L);
case 81:
case 113:
return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -18292,44 +18325,44 @@
jjmatchedPos = 5;
}
else if ((active3 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(5, 213, 77);
+ return jjStartNfaWithStates_3(5, 213, 78);
else if ((active5 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(5, 334, 77);
+ return jjStartNfaWithStates_3(5, 334, 78);
else if ((active5 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 377, 77);
+ return jjStartNfaWithStates_3(5, 377, 78);
else if ((active7 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 505, 77);
+ return jjStartNfaWithStates_3(5, 505, 78);
else if ((active8 & 0x4000L) != 0L)
{
jjmatchedKind = 526;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_3(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa6_3(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x2000000L);
case 83:
case 115:
if ((active0 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(5, 16, 77);
+ return jjStartNfaWithStates_3(5, 16, 78);
else if ((active3 & 0x8L) != 0L)
- return jjStartNfaWithStates_3(5, 195, 77);
+ return jjStartNfaWithStates_3(5, 195, 78);
else if ((active3 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(5, 205, 77);
+ return jjStartNfaWithStates_3(5, 205, 78);
else if ((active3 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 246, 77);
+ return jjStartNfaWithStates_3(5, 246, 78);
else if ((active5 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(5, 352, 77);
+ return jjStartNfaWithStates_3(5, 352, 78);
else if ((active5 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 382, 77);
+ return jjStartNfaWithStates_3(5, 382, 78);
else if ((active6 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(5, 398, 77);
- else if ((active10 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 691, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x4000000000000000L, active11, 0xc0000000000L);
+ return jjStartNfaWithStates_3(5, 398, 78);
+ else if ((active10 & 0x10000000000000L) != 0L)
+ return jjStartNfaWithStates_3(5, 692, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x8000000000000000L, active11, 0x180000000000L);
case 84:
case 116:
if ((active0 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(5, 5, 77);
+ return jjStartNfaWithStates_3(5, 5, 78);
else if ((active0 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 44, 77);
+ return jjStartNfaWithStates_3(5, 44, 78);
else if ((active1 & 0x10000000L) != 0L)
{
jjmatchedKind = 92;
@@ -18341,40 +18374,40 @@
jjmatchedPos = 5;
}
else if ((active3 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(5, 221, 77);
+ return jjStartNfaWithStates_3(5, 221, 78);
else if ((active4 & 0x8L) != 0L)
- return jjStartNfaWithStates_3(5, 259, 77);
+ return jjStartNfaWithStates_3(5, 259, 78);
else if ((active4 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(5, 271, 77);
+ return jjStartNfaWithStates_3(5, 271, 78);
else if ((active5 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 379, 77);
+ return jjStartNfaWithStates_3(5, 379, 78);
else if ((active6 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(5, 384, 77);
+ return jjStartNfaWithStates_3(5, 384, 78);
else if ((active6 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(5, 401, 77);
+ return jjStartNfaWithStates_3(5, 401, 78);
else if ((active7 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(5, 477, 77);
+ return jjStartNfaWithStates_3(5, 477, 78);
else if ((active8 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(5, 520, 77);
+ return jjStartNfaWithStates_3(5, 520, 78);
else if ((active9 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(5, 611, 77);
+ return jjStartNfaWithStates_3(5, 611, 78);
else if ((active10 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(5, 675, 77);
- else if ((active10 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 678, 77);
- return jjMoveStringLiteralDfa6_3(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x8000000000L);
+ return jjStartNfaWithStates_3(5, 675, 78);
+ else if ((active10 & 0x8000000000L) != 0L)
+ return jjStartNfaWithStates_3(5, 679, 78);
+ return jjMoveStringLiteralDfa6_3(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x10000000000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa6_3(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x100L);
+ return jjMoveStringLiteralDfa6_3(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x200L);
case 86:
case 118:
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x8000004L);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x10000008L);
case 87:
case 119:
if ((active4 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(5, 282, 77);
- else if ((active11 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(5, 709, 77);
+ return jjStartNfaWithStates_3(5, 282, 78);
+ else if ((active11 & 0x40L) != 0L)
+ return jjStartNfaWithStates_3(5, 710, 78);
return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0x20000L, active3, 0x8000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000L, active11, 0L);
case 88:
case 120:
@@ -18382,17 +18415,17 @@
case 89:
case 121:
if ((active0 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 45, 77);
+ return jjStartNfaWithStates_3(5, 45, 78);
else if ((active3 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 228, 77);
+ return jjStartNfaWithStates_3(5, 228, 78);
else if ((active5 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(5, 350, 77);
+ return jjStartNfaWithStates_3(5, 350, 78);
else if ((active9 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(5, 617, 77);
+ return jjStartNfaWithStates_3(5, 617, 78);
return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0x40000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000000L);
+ return jjMoveStringLiteralDfa6_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
default :
break;
}
@@ -18411,16 +18444,16 @@
{
case 50:
if ((active7 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(6, 464, 77);
+ return jjStartNfaWithStates_3(6, 464, 78);
break;
case 95:
- return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x100000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa7_3(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x80000000000e00L, active11, 0x200008000000L);
+ return jjMoveStringLiteralDfa7_3(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x100000000000e00L, active11, 0x400010000000L);
case 66:
case 98:
- return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x20L);
case 67:
case 99:
if ((active2 & 0x40000000000000L) != 0L)
@@ -18429,21 +18462,21 @@
jjmatchedPos = 6;
}
else if ((active5 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 378, 77);
+ return jjStartNfaWithStates_3(6, 378, 78);
return jjMoveStringLiteralDfa7_3(active0, 0x800000L, active1, 0x10000L, active2, 0x180c00000100000L, active3, 0x110000000000000L, active4, 0x4000010000L, active5, 0x4000000080L, active6, 0L, active7, 0x4000020010000000L, active8, 0x200000001000L, active9, 0L, active10, 0x78L, active11, 0L);
case 68:
case 100:
if ((active2 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(6, 158, 77);
+ return jjStartNfaWithStates_3(6, 158, 78);
else if ((active2 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 165, 77);
+ return jjStartNfaWithStates_3(6, 165, 78);
else if ((active3 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 242, 77);
+ return jjStartNfaWithStates_3(6, 242, 78);
else if ((active5 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(6, 325, 77);
+ return jjStartNfaWithStates_3(6, 325, 78);
else if ((active10 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(6, 674, 77);
- return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x4000000004000000L, active11, 0L);
+ return jjStartNfaWithStates_3(6, 674, 78);
+ return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x8000000004000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x100000000000000L) != 0L)
@@ -18452,42 +18485,42 @@
jjmatchedPos = 6;
}
else if ((active1 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(6, 82, 77);
+ return jjStartNfaWithStates_3(6, 82, 78);
else if ((active2 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(6, 152, 77);
+ return jjStartNfaWithStates_3(6, 152, 78);
else if ((active3 & 0x200L) != 0L)
- return jjStartNfaWithStates_3(6, 201, 77);
+ return jjStartNfaWithStates_3(6, 201, 78);
else if ((active3 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(6, 204, 77);
+ return jjStartNfaWithStates_3(6, 204, 78);
else if ((active4 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(6, 261, 77);
+ return jjStartNfaWithStates_3(6, 261, 78);
else if ((active5 & 0x1000L) != 0L)
{
jjmatchedKind = 332;
jjmatchedPos = 6;
}
else if ((active6 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 428, 77);
+ return jjStartNfaWithStates_3(6, 428, 78);
else if ((active6 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 440, 77);
+ return jjStartNfaWithStates_3(6, 440, 78);
else if ((active7 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(6, 470, 77);
+ return jjStartNfaWithStates_3(6, 470, 78);
else if ((active7 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(6, 472, 77);
+ return jjStartNfaWithStates_3(6, 472, 78);
else if ((active7 & 0x80000000000L) != 0L)
{
jjmatchedKind = 491;
jjmatchedPos = 6;
}
else if ((active10 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(6, 665, 77);
- else if ((active11 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 742, 77);
+ return jjStartNfaWithStates_3(6, 665, 78);
else if ((active11 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 743, 77);
- else if ((active11 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 748, 77);
- return jjMoveStringLiteralDfa7_3(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x1e0000000000L, active11, 0x45000004L);
+ return jjStartNfaWithStates_3(6, 743, 78);
+ else if ((active11 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 744, 78);
+ else if ((active11 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 749, 78);
+ return jjMoveStringLiteralDfa7_3(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x3c1000000000L, active11, 0x8a000008L);
case 70:
case 102:
return jjMoveStringLiteralDfa7_3(active0, 0x10000000000L, active1, 0x1000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -18499,152 +18532,152 @@
jjmatchedPos = 6;
}
else if ((active0 & 0x8000000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 63, 77);
+ return jjStartNfaWithStates_3(6, 63, 78);
else if ((active4 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 308, 77);
+ return jjStartNfaWithStates_3(6, 308, 78);
else if ((active5 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 363, 77);
+ return jjStartNfaWithStates_3(6, 363, 78);
else if ((active6 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(6, 417, 77);
+ return jjStartNfaWithStates_3(6, 417, 78);
else if ((active6 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 430, 77);
+ return jjStartNfaWithStates_3(6, 430, 78);
else if ((active7 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 499, 77);
- else if ((active10 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 698, 77);
- else if ((active11 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(6, 736, 77);
- return jjMoveStringLiteralDfa7_3(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
+ return jjStartNfaWithStates_3(6, 499, 78);
+ else if ((active10 & 0x800000000000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 699, 78);
+ else if ((active11 & 0x200000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 737, 78);
+ return jjMoveStringLiteralDfa7_3(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x800000L);
case 72:
case 104:
if ((active0 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 50, 77);
- else if ((active11 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 747, 77);
+ return jjStartNfaWithStates_3(6, 50, 78);
+ else if ((active11 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 748, 78);
return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa7_3(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x200100000L);
+ return jjMoveStringLiteralDfa7_3(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x400200000L);
case 76:
case 108:
if ((active2 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(6, 151, 77);
+ return jjStartNfaWithStates_3(6, 151, 78);
else if ((active3 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 234, 77);
+ return jjStartNfaWithStates_3(6, 234, 78);
else if ((active4 & 0x200L) != 0L)
{
jjmatchedKind = 265;
jjmatchedPos = 6;
}
else if ((active4 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 306, 77);
+ return jjStartNfaWithStates_3(6, 306, 78);
else if ((active5 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 360, 77);
+ return jjStartNfaWithStates_3(6, 360, 78);
else if ((active6 & 0x1000L) != 0L)
{
jjmatchedKind = 396;
jjmatchedPos = 6;
}
else if ((active6 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(6, 414, 77);
+ return jjStartNfaWithStates_3(6, 414, 78);
return jjMoveStringLiteralDfa7_3(active0, 0x40000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400L, active5, 0x2048000000000000L, active6, 0x2000L, active7, 0x20000L, active8, 0L, active9, 0x4L, active10, 0L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa7_3(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x40000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_3(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x80000000000000L, active11, 0L);
case 78:
case 110:
if ((active0 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 43, 77);
+ return jjStartNfaWithStates_3(6, 43, 78);
else if ((active0 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 48, 77);
+ return jjStartNfaWithStates_3(6, 48, 78);
else if ((active3 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(6, 207, 77);
+ return jjStartNfaWithStates_3(6, 207, 78);
else if ((active3 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(6, 222, 77);
+ return jjStartNfaWithStates_3(6, 222, 78);
else if ((active3 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(6, 223, 77);
+ return jjStartNfaWithStates_3(6, 223, 78);
else if ((active6 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 421, 77);
+ return jjStartNfaWithStates_3(6, 421, 78);
else if ((active6 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 433, 77);
+ return jjStartNfaWithStates_3(6, 433, 78);
else if ((active8 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(6, 517, 77);
+ return jjStartNfaWithStates_3(6, 517, 78);
else if ((active8 & 0x10000L) != 0L)
{
jjmatchedKind = 528;
jjmatchedPos = 6;
}
else if ((active10 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(6, 672, 77);
- else if ((active10 & 0x800000000000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 672, 78);
+ else if ((active10 & 0x1000000000000000L) != 0L)
{
- jjmatchedKind = 699;
+ jjmatchedKind = 700;
jjmatchedPos = 6;
}
- return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x1000000000000004L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x2000000000000004L, active11, 0x1000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x10000000000180L, active11, 0L);
+ return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x20000000000180L, active11, 0L);
case 80:
case 112:
- if ((active10 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 693, 77);
+ if ((active10 & 0x40000000000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 694, 78);
return jjMoveStringLiteralDfa7_3(active0, 0x20000000000L, active1, 0x2800000000000L, active2, 0x30000000000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0x80000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
if ((active2 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(6, 159, 77);
+ return jjStartNfaWithStates_3(6, 159, 78);
else if ((active4 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(6, 275, 77);
+ return jjStartNfaWithStates_3(6, 275, 78);
else if ((active4 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(6, 280, 77);
+ return jjStartNfaWithStates_3(6, 280, 78);
else if ((active4 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(6, 283, 77);
+ return jjStartNfaWithStates_3(6, 283, 78);
else if ((active5 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(6, 320, 77);
+ return jjStartNfaWithStates_3(6, 320, 78);
else if ((active7 & 0x2L) != 0L)
{
jjmatchedKind = 449;
jjmatchedPos = 6;
}
else if ((active8 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(6, 534, 77);
+ return jjStartNfaWithStates_3(6, 534, 78);
else if ((active10 & 0x2000L) != 0L)
{
jjmatchedKind = 653;
jjmatchedPos = 6;
}
- else if ((active10 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 696, 77);
- else if ((active11 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(6, 714, 77);
- return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x400000000L);
+ else if ((active10 & 0x200000000000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 697, 78);
+ else if ((active11 & 0x800L) != 0L)
+ return jjStartNfaWithStates_3(6, 715, 78);
+ return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x800000000L);
case 83:
case 115:
if ((active5 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(6, 326, 77);
+ return jjStartNfaWithStates_3(6, 326, 78);
else if ((active5 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(6, 345, 77);
+ return jjStartNfaWithStates_3(6, 345, 78);
else if ((active6 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(6, 392, 77);
+ return jjStartNfaWithStates_3(6, 392, 78);
else if ((active7 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 484, 77);
+ return jjStartNfaWithStates_3(6, 484, 78);
else if ((active8 & 0x10L) != 0L)
- return jjStartNfaWithStates_3(6, 516, 77);
- else if ((active11 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(6, 722, 77);
- return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x200000L);
+ return jjStartNfaWithStates_3(6, 516, 78);
+ else if ((active11 & 0x80000L) != 0L)
+ return jjStartNfaWithStates_3(6, 723, 78);
+ return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x400000L);
case 84:
case 116:
if ((active1 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(6, 87, 77);
+ return jjStartNfaWithStates_3(6, 87, 78);
else if ((active1 & 0x200000000L) != 0L)
{
jjmatchedKind = 97;
jjmatchedPos = 6;
}
else if ((active1 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 109, 77);
+ return jjStartNfaWithStates_3(6, 109, 78);
else if ((active1 & 0x80000000000000L) != 0L)
{
jjmatchedKind = 119;
@@ -18656,32 +18689,32 @@
jjmatchedPos = 6;
}
else if ((active2 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 186, 77);
+ return jjStartNfaWithStates_3(6, 186, 78);
else if ((active3 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(6, 210, 77);
+ return jjStartNfaWithStates_3(6, 210, 78);
else if ((active6 & 0x8000000000L) != 0L)
{
jjmatchedKind = 423;
jjmatchedPos = 6;
}
else if ((active7 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(6, 474, 77);
+ return jjStartNfaWithStates_3(6, 474, 78);
else if ((active7 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(6, 475, 77);
+ return jjStartNfaWithStates_3(6, 475, 78);
else if ((active8 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 551, 77);
+ return jjStartNfaWithStates_3(6, 551, 78);
else if ((active9 & 0x8000000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 639, 77);
+ return jjStartNfaWithStates_3(6, 639, 78);
else if ((active10 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(6, 673, 77);
- else if ((active10 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 697, 77);
- else if ((active11 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(6, 712, 77);
- return jjMoveStringLiteralDfa7_3(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x400120a0000L);
+ return jjStartNfaWithStates_3(6, 673, 78);
+ else if ((active10 & 0x400000000000000L) != 0L)
+ return jjStartNfaWithStates_3(6, 698, 78);
+ else if ((active11 & 0x200L) != 0L)
+ return jjStartNfaWithStates_3(6, 713, 78);
+ return jjMoveStringLiteralDfa7_3(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x80024140000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa7_3(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa7_3(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x4000000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0x200000000000000L, active7, 0x203000L, active8, 0L, active9, 0L, active10, 0x2L, active11, 0L);
@@ -18691,17 +18724,17 @@
case 89:
case 121:
if ((active1 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(6, 64, 77);
+ return jjStartNfaWithStates_3(6, 64, 78);
else if ((active4 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 312, 77);
+ return jjStartNfaWithStates_3(6, 312, 78);
else if ((active6 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(6, 404, 77);
+ return jjStartNfaWithStates_3(6, 404, 78);
else if ((active6 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_3(6, 443, 77);
+ return jjStartNfaWithStates_3(6, 443, 78);
else if ((active7 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(6, 448, 77);
+ return jjStartNfaWithStates_3(6, 448, 78);
else if ((active10 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(6, 662, 77);
+ return jjStartNfaWithStates_3(6, 662, 78);
return jjMoveStringLiteralDfa7_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
default :
break;
@@ -18723,13 +18756,13 @@
return jjMoveStringLiteralDfa8_3(active0, 0x2000000000000000L, active1, 0xff0000000c000000L, active2, 0x180000000000007L, active3, 0L, active4, 0L, active5, 0x70000L, active6, 0x40000000000L, active7, 0x700000000000L, active8, 0x20000L, active9, 0xffc00L, active10, 0x1c000L, active11, 0L);
case 65:
case 97:
- return jjMoveStringLiteralDfa8_3(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x4000000000000000L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa8_3(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x8000000000000000L, active11, 0x1000000L);
case 66:
case 98:
if ((active8 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 552, 77);
+ return jjStartNfaWithStates_3(7, 552, 78);
else if ((active8 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 555, 77);
+ return jjStartNfaWithStates_3(7, 555, 78);
return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0x8000000L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000800000L, active8, 0x400000000000L, active9, 0x100000L, active10, 0L, active11, 0L);
case 67:
case 99:
@@ -18744,136 +18777,138 @@
case 68:
case 100:
if ((active0 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 57, 77);
+ return jjStartNfaWithStates_3(7, 57, 78);
else if ((active2 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(7, 156, 77);
- else if ((active11 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(7, 738, 77);
+ return jjStartNfaWithStates_3(7, 156, 78);
+ else if ((active10 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_3(7, 676, 78);
+ else if ((active11 & 0x800000000L) != 0L)
+ return jjStartNfaWithStates_3(7, 739, 78);
return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40000780000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(7, 6, 77);
+ return jjStartNfaWithStates_3(7, 6, 78);
else if ((active0 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(7, 13, 77);
+ return jjStartNfaWithStates_3(7, 13, 78);
else if ((active1 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(7, 80, 77);
+ return jjStartNfaWithStates_3(7, 80, 78);
else if ((active1 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 108, 77);
+ return jjStartNfaWithStates_3(7, 108, 78);
else if ((active2 & 0x80L) != 0L)
- return jjStartNfaWithStates_3(7, 135, 77);
+ return jjStartNfaWithStates_3(7, 135, 78);
else if ((active2 & 0x800L) != 0L)
{
jjmatchedKind = 139;
jjmatchedPos = 7;
}
else if ((active2 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 167, 77);
+ return jjStartNfaWithStates_3(7, 167, 78);
else if ((active4 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(7, 272, 77);
+ return jjStartNfaWithStates_3(7, 272, 78);
else if ((active4 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 299, 77);
+ return jjStartNfaWithStates_3(7, 299, 78);
else if ((active4 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 302, 77);
+ return jjStartNfaWithStates_3(7, 302, 78);
else if ((active5 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(7, 331, 77);
+ return jjStartNfaWithStates_3(7, 331, 78);
else if ((active5 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(7, 346, 77);
+ return jjStartNfaWithStates_3(7, 346, 78);
else if ((active5 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 374, 77);
+ return jjStartNfaWithStates_3(7, 374, 78);
else if ((active6 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 441, 77);
+ return jjStartNfaWithStates_3(7, 441, 78);
else if ((active7 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(7, 469, 77);
+ return jjStartNfaWithStates_3(7, 469, 78);
else if ((active8 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(7, 524, 77);
+ return jjStartNfaWithStates_3(7, 524, 78);
else if ((active8 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(7, 547, 77);
+ return jjStartNfaWithStates_3(7, 547, 78);
else if ((active8 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 556, 77);
+ return jjStartNfaWithStates_3(7, 556, 78);
else if ((active9 & 0x80L) != 0L)
{
jjmatchedKind = 583;
jjmatchedPos = 7;
}
else if ((active10 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(7, 660, 77);
- else if ((active11 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(7, 721, 77);
- return jjMoveStringLiteralDfa8_3(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x10000000L);
+ return jjStartNfaWithStates_3(7, 660, 78);
+ else if ((active11 & 0x40000L) != 0L)
+ return jjStartNfaWithStates_3(7, 722, 78);
+ return jjMoveStringLiteralDfa8_3(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x20000000L);
case 70:
case 102:
- if ((active10 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 692, 77);
- return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ if ((active10 & 0x20000000000000L) != 0L)
+ return jjStartNfaWithStates_3(7, 693, 78);
+ return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active2 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 189, 77);
+ return jjStartNfaWithStates_3(7, 189, 78);
else if ((active3 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 245, 77);
+ return jjStartNfaWithStates_3(7, 245, 78);
else if ((active6 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(7, 395, 77);
+ return jjStartNfaWithStates_3(7, 395, 78);
else if ((active10 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(7, 642, 77);
- return jjMoveStringLiteralDfa8_3(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x1000000L);
+ return jjStartNfaWithStates_3(7, 642, 78);
+ return jjMoveStringLiteralDfa8_3(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x2000000L);
case 72:
case 104:
if ((active2 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 174, 77);
+ return jjStartNfaWithStates_3(7, 174, 78);
return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x100000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa8_3(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x1000000000000000L, active11, 0x40000000000L);
+ return jjMoveStringLiteralDfa8_3(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x2000000000000000L, active11, 0x80000000000L);
case 74:
case 106:
return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 75:
case 107:
if ((active7 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 489, 77);
+ return jjStartNfaWithStates_3(7, 489, 78);
break;
case 76:
case 108:
if ((active3 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(7, 209, 77);
+ return jjStartNfaWithStates_3(7, 209, 78);
else if ((active4 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(7, 278, 77);
+ return jjStartNfaWithStates_3(7, 278, 78);
else if ((active5 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 359, 77);
+ return jjStartNfaWithStates_3(7, 359, 78);
else if ((active9 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(7, 581, 77);
- else if ((active11 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(7, 734, 77);
- return jjMoveStringLiteralDfa8_3(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x8000000L);
+ return jjStartNfaWithStates_3(7, 581, 78);
+ else if ((active11 & 0x80000000L) != 0L)
+ return jjStartNfaWithStates_3(7, 735, 78);
+ return jjMoveStringLiteralDfa8_3(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x10000000L);
case 77:
case 109:
return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0L, active3, 0x1L, active4, 0xc000000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f01000000000000L, active10, 0L, active11, 0L);
case 78:
case 110:
if ((active3 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 231, 77);
+ return jjStartNfaWithStates_3(7, 231, 78);
else if ((active6 & 0x4000000000000L) != 0L)
{
jjmatchedKind = 434;
jjmatchedPos = 7;
}
- return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x200200000000L);
+ return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x400400000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa8_3(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa8_3(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x4000000000L);
case 80:
case 112:
- if ((active10 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 694, 77);
+ if ((active10 & 0x80000000000000L) != 0L)
+ return jjStartNfaWithStates_3(7, 695, 78);
return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0x8000000L, active10, 0L, active11, 0L);
case 82:
case 114:
if ((active8 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 554, 77);
- else if ((active11 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(7, 706, 77);
- return jjMoveStringLiteralDfa8_3(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x80000000040180L, active11, 0x400000L);
+ return jjStartNfaWithStates_3(7, 554, 78);
+ else if ((active11 & 0x8L) != 0L)
+ return jjStartNfaWithStates_3(7, 707, 78);
+ return jjMoveStringLiteralDfa8_3(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x100000000040180L, active11, 0x800000L);
case 83:
case 115:
if ((active1 & 0x40000000000L) != 0L)
@@ -18882,68 +18917,68 @@
jjmatchedPos = 7;
}
else if ((active2 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(7, 154, 77);
+ return jjStartNfaWithStates_3(7, 154, 78);
else if ((active5 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(7, 333, 77);
+ return jjStartNfaWithStates_3(7, 333, 78);
else if ((active5 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(7, 348, 77);
+ return jjStartNfaWithStates_3(7, 348, 78);
else if ((active6 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(7, 403, 77);
+ return jjStartNfaWithStates_3(7, 403, 78);
else if ((active6 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 437, 77);
+ return jjStartNfaWithStates_3(7, 437, 78);
else if ((active7 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(7, 450, 77);
+ return jjStartNfaWithStates_3(7, 450, 78);
else if ((active9 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 615, 77);
- return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x80000000L);
+ return jjStartNfaWithStates_3(7, 615, 78);
+ return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x100000000L);
case 84:
case 116:
if ((active2 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 175, 77);
+ return jjStartNfaWithStates_3(7, 175, 78);
else if ((active5 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(7, 354, 77);
+ return jjStartNfaWithStates_3(7, 354, 78);
else if ((active7 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(7, 476, 77);
+ return jjStartNfaWithStates_3(7, 476, 78);
else if ((active8 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(7, 538, 77);
+ return jjStartNfaWithStates_3(7, 538, 78);
else if ((active10 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(7, 661, 77);
- return jjMoveStringLiteralDfa8_3(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x100000L);
+ return jjStartNfaWithStates_3(7, 661, 78);
+ return jjMoveStringLiteralDfa8_3(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x200000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x20L);
case 86:
case 118:
return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100L, active8, 0x400L, active9, 0L, active10, 0L, active11, 0L);
case 87:
case 119:
if ((active2 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 172, 77);
+ return jjStartNfaWithStates_3(7, 172, 78);
break;
case 88:
case 120:
if ((active7 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(7, 466, 77);
+ return jjStartNfaWithStates_3(7, 466, 78);
break;
case 89:
case 121:
if ((active3 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 236, 77);
+ return jjStartNfaWithStates_3(7, 236, 78);
else if ((active3 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 253, 77);
+ return jjStartNfaWithStates_3(7, 253, 78);
else if ((active7 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(7, 467, 77);
+ return jjStartNfaWithStates_3(7, 467, 78);
else if ((active7 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(7, 468, 77);
+ return jjStartNfaWithStates_3(7, 468, 78);
else if ((active7 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 503, 77);
+ return jjStartNfaWithStates_3(7, 503, 78);
else if ((active8 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(7, 518, 77);
+ return jjStartNfaWithStates_3(7, 518, 78);
else if ((active9 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(7, 627, 77);
- else if ((active11 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(7, 730, 77);
- return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x2280000L);
+ return jjStartNfaWithStates_3(7, 627, 78);
+ else if ((active11 & 0x8000000L) != 0L)
+ return jjStartNfaWithStates_3(7, 731, 78);
+ return jjMoveStringLiteralDfa8_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x4500000L);
case 90:
case 122:
return jjMoveStringLiteralDfa8_3(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x3000000000000L, active6, 0L, active7, 0L, active8, 0x2000L, active9, 0L, active10, 0L, active11, 0L);
@@ -18964,30 +18999,30 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x100000L);
case 65:
case 97:
return jjMoveStringLiteralDfa9_3(active0, 0x11000000000L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0x300020000L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0xa000L, active9, 0x10000000L, active10, 0x40000L, active11, 0L);
case 66:
case 98:
if ((active9 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(8, 578, 77);
+ return jjStartNfaWithStates_3(8, 578, 78);
break;
case 67:
case 99:
if ((active9 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 618, 77);
- return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x40000000010L);
+ return jjStartNfaWithStates_3(8, 618, 78);
+ return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x80000000020L);
case 68:
case 100:
if ((active1 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(8, 93, 77);
+ return jjStartNfaWithStates_3(8, 93, 78);
else if ((active3 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 235, 77);
+ return jjStartNfaWithStates_3(8, 235, 78);
else if ((active10 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(8, 666, 77);
- else if ((active11 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(8, 732, 77);
+ return jjStartNfaWithStates_3(8, 666, 78);
+ else if ((active11 & 0x20000000L) != 0L)
+ return jjStartNfaWithStates_3(8, 733, 78);
return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x600000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x400L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -18997,7 +19032,7 @@
jjmatchedPos = 8;
}
else if ((active3 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(8, 192, 77);
+ return jjStartNfaWithStates_3(8, 192, 78);
else if ((active4 & 0x1L) != 0L)
{
jjmatchedKind = 256;
@@ -19014,15 +19049,15 @@
jjmatchedPos = 8;
}
else if ((active5 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 371, 77);
+ return jjStartNfaWithStates_3(8, 371, 78);
else if ((active6 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 446, 77);
+ return jjStartNfaWithStates_3(8, 446, 78);
else if ((active7 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(8, 456, 77);
+ return jjStartNfaWithStates_3(8, 456, 78);
else if ((active8 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(8, 522, 77);
+ return jjStartNfaWithStates_3(8, 522, 78);
else if ((active9 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(8, 607, 77);
+ return jjStartNfaWithStates_3(8, 607, 78);
else if ((active10 & 0x200L) != 0L)
{
jjmatchedKind = 649;
@@ -19032,44 +19067,44 @@
case 70:
case 102:
if ((active2 & 0x200L) != 0L)
- return jjStartNfaWithStates_3(8, 137, 77);
+ return jjStartNfaWithStates_3(8, 137, 78);
else if ((active9 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 630, 77);
+ return jjStartNfaWithStates_3(8, 630, 78);
return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x800L, active10, 0L, active11, 0L);
case 71:
case 103:
if ((active0 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(8, 22, 77);
+ return jjStartNfaWithStates_3(8, 22, 78);
else if ((active3 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(8, 202, 77);
+ return jjStartNfaWithStates_3(8, 202, 78);
else if ((active3 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(8, 219, 77);
+ return jjStartNfaWithStates_3(8, 219, 78);
else if ((active4 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(8, 262, 77);
+ return jjStartNfaWithStates_3(8, 262, 78);
else if ((active6 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 438, 77);
+ return jjStartNfaWithStates_3(8, 438, 78);
else if ((active7 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(8, 483, 77);
+ return jjStartNfaWithStates_3(8, 483, 78);
else if ((active9 & 0x2000000000L) != 0L)
{
jjmatchedKind = 613;
jjmatchedPos = 8;
}
- else if ((active11 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(8, 737, 77);
- return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x200000000000L);
+ else if ((active11 & 0x400000000L) != 0L)
+ return jjStartNfaWithStates_3(8, 738, 78);
+ return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x400000000000L);
case 72:
case 104:
return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x201000L, active10, 0L, active11, 0L);
case 73:
case 105:
if ((active0 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 42, 77);
- return jjMoveStringLiteralDfa9_3(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x1e0010000878L, active11, 0x81000000L);
+ return jjStartNfaWithStates_3(8, 42, 78);
+ return jjMoveStringLiteralDfa9_3(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x3c0010000878L, active11, 0x102000000L);
case 75:
case 107:
if ((active2 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(8, 145, 77);
+ return jjStartNfaWithStates_3(8, 145, 78);
break;
case 76:
case 108:
@@ -19081,11 +19116,11 @@
jjmatchedKind = 647;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x1000000L);
case 78:
case 110:
if ((active0 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(8, 29, 77);
+ return jjStartNfaWithStates_3(8, 29, 78);
else if ((active1 & 0x80000L) != 0L)
{
jjmatchedKind = 83;
@@ -19097,27 +19132,27 @@
jjmatchedPos = 8;
}
else if ((active3 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(8, 200, 77);
+ return jjStartNfaWithStates_3(8, 200, 78);
else if ((active4 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(8, 284, 77);
+ return jjStartNfaWithStates_3(8, 284, 78);
else if ((active6 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(8, 415, 77);
+ return jjStartNfaWithStates_3(8, 415, 78);
else if ((active6 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 439, 77);
- return jjMoveStringLiteralDfa9_3(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x1000000000008000L, active11, 0x200000L);
+ return jjStartNfaWithStates_3(8, 439, 78);
+ return jjMoveStringLiteralDfa9_3(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x2000000000008000L, active11, 0x400000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x800000L);
case 80:
case 112:
if ((active1 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 113, 77);
+ return jjStartNfaWithStates_3(8, 113, 78);
else if ((active9 & 0x100000000000000L) != 0L)
{
jjmatchedKind = 632;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x4000000L);
case 81:
case 113:
return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0L);
@@ -19129,18 +19164,18 @@
jjmatchedPos = 8;
}
else if ((active2 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(8, 146, 77);
+ return jjStartNfaWithStates_3(8, 146, 78);
else if ((active4 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(8, 264, 77);
+ return jjStartNfaWithStates_3(8, 264, 78);
else if ((active6 & 0x800000L) != 0L)
{
jjmatchedKind = 407;
jjmatchedPos = 8;
}
else if ((active8 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(8, 523, 77);
+ return jjStartNfaWithStates_3(8, 523, 78);
else if ((active9 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(8, 577, 77);
+ return jjStartNfaWithStates_3(8, 577, 78);
return jjMoveStringLiteralDfa9_3(active0, 0x20000000000L, active1, 0x30000000000007e0L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0L, active6, 0x4003f000000L, active7, 0L, active8, 0x3ffe004000000000L, active9, 0x8L, active10, 0L, active11, 0L);
case 83:
case 115:
@@ -19148,57 +19183,57 @@
case 84:
case 116:
if ((active1 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 118, 77);
+ return jjStartNfaWithStates_3(8, 118, 78);
else if ((active4 & 0x80L) != 0L)
- return jjStartNfaWithStates_3(8, 263, 77);
+ return jjStartNfaWithStates_3(8, 263, 78);
else if ((active4 & 0x100000L) != 0L)
{
jjmatchedKind = 276;
jjmatchedPos = 8;
}
else if ((active7 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 496, 77);
+ return jjStartNfaWithStates_3(8, 496, 78);
else if ((active7 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 500, 77);
+ return jjStartNfaWithStates_3(8, 500, 78);
else if ((active7 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 504, 77);
+ return jjStartNfaWithStates_3(8, 504, 78);
else if ((active8 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 559, 77);
+ return jjStartNfaWithStates_3(8, 559, 78);
else if ((active9 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(8, 601, 77);
+ return jjStartNfaWithStates_3(8, 601, 78);
return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0x8000020000000000L, active2, 0x100003L, active3, 0L, active4, 0x200004L, active5, 0x40000L, active6, 0x2000L, active7, 0x4000000000000000L, active8, 0x500000000L, active9, 0x1000000000L, active10, 0x8000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x2008000000L);
+ return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x4010000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa9_3(active0, 0x10000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0L);
case 87:
case 119:
if ((active3 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(8, 226, 77);
+ return jjStartNfaWithStates_3(8, 226, 78);
return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000L, active10, 0L, active11, 0L);
case 88:
case 120:
if ((active7 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(8, 460, 77);
+ return jjStartNfaWithStates_3(8, 460, 78);
return jjMoveStringLiteralDfa9_3(active0, 0x1000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
if ((active3 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 248, 77);
+ return jjStartNfaWithStates_3(8, 248, 78);
else if ((active4 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(8, 266, 77);
+ return jjStartNfaWithStates_3(8, 266, 78);
else if ((active7 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(8, 461, 77);
+ return jjStartNfaWithStates_3(8, 461, 78);
else if ((active9 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 625, 77);
- else if ((active10 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 695, 77);
- else if ((active10 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_3(8, 702, 77);
- else if ((active11 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(8, 724, 77);
+ return jjStartNfaWithStates_3(8, 625, 78);
+ else if ((active10 & 0x100000000000000L) != 0L)
+ return jjStartNfaWithStates_3(8, 696, 78);
+ else if ((active10 & 0x8000000000000000L) != 0L)
+ return jjStartNfaWithStates_3(8, 703, 78);
+ else if ((active11 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_3(8, 725, 78);
return jjMoveStringLiteralDfa9_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x80000L, active10, 0L, active11, 0L);
default :
break;
@@ -19227,62 +19262,62 @@
case 67:
case 99:
if ((active0 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(9, 31, 77);
+ return jjStartNfaWithStates_3(9, 31, 78);
else if ((active2 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(9, 138, 77);
+ return jjStartNfaWithStates_3(9, 138, 78);
else if ((active9 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 631, 77);
- return jjMoveStringLiteralDfa10_3(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjStartNfaWithStates_3(9, 631, 78);
+ return jjMoveStringLiteralDfa10_3(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 68:
case 100:
if ((active5 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 358, 77);
+ return jjStartNfaWithStates_3(9, 358, 78);
else if ((active5 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 369, 77);
+ return jjStartNfaWithStates_3(9, 369, 78);
return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x800000000000L, active2, 0x1000L, active3, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0L, active8, 0L, active9, 0x400000000000000L, active10, 0L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(9, 28, 77);
+ return jjStartNfaWithStates_3(9, 28, 78);
else if ((active2 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(9, 148, 77);
+ return jjStartNfaWithStates_3(9, 148, 78);
else if ((active2 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(9, 155, 77);
+ return jjStartNfaWithStates_3(9, 155, 78);
else if ((active4 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 294, 77);
+ return jjStartNfaWithStates_3(9, 294, 78);
else if ((active4 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 295, 77);
+ return jjStartNfaWithStates_3(9, 295, 78);
else if ((active4 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 305, 77);
+ return jjStartNfaWithStates_3(9, 305, 78);
else if ((active7 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(9, 465, 77);
+ return jjStartNfaWithStates_3(9, 465, 78);
else if ((active7 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(9, 471, 77);
+ return jjStartNfaWithStates_3(9, 471, 78);
else if ((active7 & 0x8000000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 511, 77);
+ return jjStartNfaWithStates_3(9, 511, 78);
else if ((active8 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 558, 77);
+ return jjStartNfaWithStates_3(9, 558, 78);
else if ((active9 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 612, 77);
+ return jjStartNfaWithStates_3(9, 612, 78);
else if ((active9 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 623, 77);
- else if ((active11 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(9, 727, 77);
- else if ((active11 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(9, 729, 77);
- else if ((active11 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(9, 731, 77);
- return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x200000000000L);
+ return jjStartNfaWithStates_3(9, 623, 78);
+ else if ((active11 & 0x1000000L) != 0L)
+ return jjStartNfaWithStates_3(9, 728, 78);
+ else if ((active11 & 0x4000000L) != 0L)
+ return jjStartNfaWithStates_3(9, 730, 78);
+ else if ((active11 & 0x10000000L) != 0L)
+ return jjStartNfaWithStates_3(9, 732, 78);
+ return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x400000000000L);
case 71:
case 103:
if ((active6 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(9, 405, 77);
+ return jjStartNfaWithStates_3(9, 405, 78);
else if ((active8 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 548, 77);
+ return jjStartNfaWithStates_3(9, 548, 78);
else if ((active9 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(9, 606, 77);
- else if ((active10 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 700, 77);
+ return jjStartNfaWithStates_3(9, 606, 78);
+ else if ((active10 & 0x2000000000000000L) != 0L)
+ return jjStartNfaWithStates_3(9, 701, 78);
return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x2000000000000000L, active6, 0x400000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
@@ -19293,15 +19328,15 @@
case 75:
case 107:
if ((active2 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(9, 162, 77);
- return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80010L);
+ return jjStartNfaWithStates_3(9, 162, 78);
+ return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100020L);
case 76:
case 108:
return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2L, active5, 0L, active6, 0L, active7, 0x100000000L, active8, 0L, active9, 0x1000000000000L, active10, 0L, active11, 0L);
case 77:
case 109:
if ((active5 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(9, 342, 77);
+ return jjStartNfaWithStates_3(9, 342, 78);
return jjMoveStringLiteralDfa10_3(active0, 0x10000000000L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x4000100010000000L, active10, 0L, active11, 0L);
case 78:
case 110:
@@ -19310,71 +19345,71 @@
jjmatchedKind = 98;
jjmatchedPos = 9;
}
- return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x3c0000000000L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x2000000L);
case 80:
case 112:
if ((active1 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 114, 77);
+ return jjStartNfaWithStates_3(9, 114, 78);
else if ((active9 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(9, 603, 77);
+ return jjStartNfaWithStates_3(9, 603, 78);
break;
case 82:
case 114:
if ((active1 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(9, 76, 77);
+ return jjStartNfaWithStates_3(9, 76, 78);
else if ((active2 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 169, 77);
+ return jjStartNfaWithStates_3(9, 169, 78);
else if ((active4 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 298, 77);
+ return jjStartNfaWithStates_3(9, 298, 78);
else if ((active7 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 497, 77);
+ return jjStartNfaWithStates_3(9, 497, 78);
return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0L, active2, 0x2L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x8000L, active8, 0L, active9, 0x800L, active10, 0L, active11, 0L);
case 83:
case 115:
if ((active0 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(9, 35, 77);
+ return jjStartNfaWithStates_3(9, 35, 78);
else if ((active1 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(9, 74, 77);
+ return jjStartNfaWithStates_3(9, 74, 78);
else if ((active6 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 445, 77);
+ return jjStartNfaWithStates_3(9, 445, 78);
else if ((active7 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(9, 458, 77);
+ return jjStartNfaWithStates_3(9, 458, 78);
else if ((active10 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(9, 648, 77);
- else if ((active11 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 741, 77);
- else if ((active11 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 746, 77);
+ return jjStartNfaWithStates_3(9, 648, 78);
+ else if ((active11 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_3(9, 742, 78);
+ else if ((active11 & 0x80000000000L) != 0L)
+ return jjStartNfaWithStates_3(9, 747, 78);
return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0x80000000000L, active2, 0x40000000004L, active3, 0L, active4, 0x8000000000000000L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
if ((active0 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_3(9, 30, 77);
+ return jjStartNfaWithStates_3(9, 30, 78);
else if ((active1 & 0x1000000000L) != 0L)
{
jjmatchedKind = 100;
jjmatchedPos = 9;
}
else if ((active2 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 173, 77);
+ return jjStartNfaWithStates_3(9, 173, 78);
else if ((active7 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(9, 462, 77);
+ return jjStartNfaWithStates_3(9, 462, 78);
else if ((active8 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 549, 77);
+ return jjStartNfaWithStates_3(9, 549, 78);
return jjMoveStringLiteralDfa10_3(active0, 0x80021000000000L, active1, 0x1e000000008L, active2, 0x8000L, active3, 0x2L, active4, 0x400000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100L, active10, 0L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x800000L);
case 86:
case 118:
return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 88:
case 120:
if ((active4 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 314, 77);
+ return jjStartNfaWithStates_3(9, 314, 78);
break;
case 89:
case 121:
@@ -19384,17 +19419,17 @@
jjmatchedPos = 9;
}
else if ((active4 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 293, 77);
+ return jjStartNfaWithStates_3(9, 293, 78);
else if ((active6 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(9, 397, 77);
+ return jjStartNfaWithStates_3(9, 397, 78);
else if ((active8 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(9, 550, 77);
+ return jjStartNfaWithStates_3(9, 550, 78);
else if ((active10 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(9, 658, 77);
+ return jjStartNfaWithStates_3(9, 658, 78);
return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x200000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa10_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L);
default :
break;
}
@@ -19419,66 +19454,66 @@
case 67:
case 99:
if ((active9 & 0x8L) != 0L)
- return jjStartNfaWithStates_3(10, 579, 77);
+ return jjStartNfaWithStates_3(10, 579, 78);
return jjMoveStringLiteralDfa11_3(active0, 0x1000000L, active1, 0x100000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x200008000L, active8, 0L, active9, 0x22000L, active10, 0x2L, active11, 0L);
case 68:
case 100:
if ((active3 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(10, 225, 77);
+ return jjStartNfaWithStates_3(10, 225, 78);
else if ((active5 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(10, 340, 77);
+ return jjStartNfaWithStates_3(10, 340, 78);
else if ((active5 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(10, 341, 77);
+ return jjStartNfaWithStates_3(10, 341, 78);
else if ((active10 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(10, 667, 77);
- return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x200000000000L);
+ return jjStartNfaWithStates_3(10, 667, 78);
+ return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x400000000000L);
case 69:
case 101:
if ((active0 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 40, 77);
+ return jjStartNfaWithStates_3(10, 40, 78);
else if ((active1 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(10, 89, 77);
+ return jjStartNfaWithStates_3(10, 89, 78);
else if ((active2 & 0x10L) != 0L)
- return jjStartNfaWithStates_3(10, 132, 77);
+ return jjStartNfaWithStates_3(10, 132, 78);
else if ((active3 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(10, 216, 77);
+ return jjStartNfaWithStates_3(10, 216, 78);
else if ((active4 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(10, 270, 77);
+ return jjStartNfaWithStates_3(10, 270, 78);
else if ((active7 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 508, 77);
+ return jjStartNfaWithStates_3(10, 508, 78);
else if ((active8 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(10, 527, 77);
+ return jjStartNfaWithStates_3(10, 527, 78);
else if ((active9 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 620, 77);
+ return jjStartNfaWithStates_3(10, 620, 78);
else if ((active9 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 624, 77);
- else if ((active11 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(10, 735, 77);
- return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x1e0000000000L, active11, 0x80010L);
+ return jjStartNfaWithStates_3(10, 624, 78);
+ else if ((active11 & 0x100000000L) != 0L)
+ return jjStartNfaWithStates_3(10, 736, 78);
+ return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x3c0000000000L, active11, 0x100020L);
case 70:
case 102:
return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
if ((active7 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(10, 459, 77);
+ return jjStartNfaWithStates_3(10, 459, 78);
return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
if ((active1 & 0x8L) != 0L)
- return jjStartNfaWithStates_3(10, 67, 77);
+ return jjStartNfaWithStates_3(10, 67, 78);
else if ((active6 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(10, 418, 77);
- return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjStartNfaWithStates_3(10, 418, 78);
+ return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 73:
case 105:
return jjMoveStringLiteralDfa11_3(active0, 0x21000000000L, active1, 0x800000002000L, active2, 0x1000L, active3, 0x2L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0L, active8, 0L, active9, 0x4400000000000000L, active10, 0L, active11, 0L);
case 76:
case 108:
if ((active1 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(10, 95, 77);
+ return jjStartNfaWithStates_3(10, 95, 78);
else if ((active8 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 557, 77);
+ return jjStartNfaWithStates_3(10, 557, 78);
return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0x1000000000000020L, active2, 0L, active3, 0L, active4, 0x20000L, active5, 0L, active6, 0L, active7, 0x4000000000000000L, active8, 0x2000L, active9, 0L, active10, 0L, active11, 0L);
case 77:
case 109:
@@ -19486,18 +19521,18 @@
case 78:
case 110:
if ((active2 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 168, 77);
+ return jjStartNfaWithStates_3(10, 168, 78);
else if ((active8 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 553, 77);
+ return jjStartNfaWithStates_3(10, 553, 78);
else if ((active10 & 0x8L) != 0L)
{
jjmatchedKind = 643;
jjmatchedPos = 10;
}
else if ((active10 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(10, 651, 77);
- else if ((active11 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(10, 728, 77);
+ return jjStartNfaWithStates_3(10, 651, 78);
+ else if ((active11 & 0x2000000L) != 0L)
+ return jjStartNfaWithStates_3(10, 729, 78);
return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0x10c200000L, active2, 0x180000000006000L, active3, 0L, active4, 0L, active5, 0x10000L, active6, 0x40002000000L, active7, 0L, active8, 0L, active9, 0xc040L, active10, 0x10000070L, active11, 0L);
case 79:
case 111:
@@ -19505,9 +19540,9 @@
case 80:
case 112:
if ((active9 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(10, 604, 77);
- else if ((active11 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(10, 726, 77);
+ return jjStartNfaWithStates_3(10, 604, 78);
+ else if ((active11 & 0x800000L) != 0L)
+ return jjStartNfaWithStates_3(10, 727, 78);
return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 81:
case 113:
@@ -19515,22 +19550,22 @@
case 82:
case 114:
if ((active1 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 105, 77);
+ return jjStartNfaWithStates_3(10, 105, 78);
else if ((active8 & 0x1000000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 560, 77);
+ return jjStartNfaWithStates_3(10, 560, 78);
else if ((active9 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(10, 597, 77);
+ return jjStartNfaWithStates_3(10, 597, 78);
else if ((active9 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 621, 77);
+ return jjStartNfaWithStates_3(10, 621, 78);
return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xc000000000000000L, active9, 0x4200000001L, active10, 0x400L, active11, 0L);
case 83:
case 115:
if ((active1 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 104, 77);
+ return jjStartNfaWithStates_3(10, 104, 78);
else if ((active2 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 171, 77);
+ return jjStartNfaWithStates_3(10, 171, 78);
else if ((active4 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(10, 290, 77);
+ return jjStartNfaWithStates_3(10, 290, 78);
return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0x4003c0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
@@ -19540,11 +19575,11 @@
jjmatchedPos = 10;
}
else if ((active7 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 501, 77);
+ return jjStartNfaWithStates_3(10, 501, 78);
else if ((active9 & 0x200L) != 0L)
- return jjStartNfaWithStates_3(10, 585, 77);
+ return jjStartNfaWithStates_3(10, 585, 78);
else if ((active9 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(10, 610, 77);
+ return jjStartNfaWithStates_3(10, 610, 78);
return jjMoveStringLiteralDfa11_3(active0, 0L, active1, 0xb00000000000000L, active2, 0x40000000000L, active3, 0L, active4, 0x8000001000000004L, active5, 0x2000000000020000L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x1000000000000000L, active10, 0x4000L, active11, 0L);
case 85:
case 117:
@@ -19552,7 +19587,7 @@
case 87:
case 119:
if ((active1 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 125, 77);
+ return jjStartNfaWithStates_3(10, 125, 78);
break;
case 88:
case 120:
@@ -19560,11 +19595,11 @@
case 89:
case 121:
if ((active0 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(10, 55, 77);
+ return jjStartNfaWithStates_3(10, 55, 78);
else if ((active4 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(10, 257, 77);
+ return jjStartNfaWithStates_3(10, 257, 78);
else if ((active9 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(10, 586, 77);
+ return jjStartNfaWithStates_3(10, 586, 78);
break;
default :
break;
@@ -19583,11 +19618,11 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 65:
case 97:
if ((active8 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(11, 512, 77);
+ return jjStartNfaWithStates_3(11, 512, 78);
return jjMoveStringLiteralDfa12_3(active0, 0x1000000L, active1, 0x500000000300000L, active2, 0L, active3, 0L, active4, 0x8000001000000000L, active5, 0L, active6, 0x2000000L, active7, 0x100000000000L, active8, 0L, active9, 0L, active10, 0x10004000L, active11, 0L);
case 66:
case 98:
@@ -19598,31 +19633,31 @@
case 68:
case 100:
if ((active9 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 633, 77);
- return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(11, 633, 78);
+ return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 61, 77);
+ return jjStartNfaWithStates_3(11, 61, 78);
else if ((active1 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 121, 77);
+ return jjStartNfaWithStates_3(11, 121, 78);
else if ((active1 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 124, 77);
+ return jjStartNfaWithStates_3(11, 124, 78);
else if ((active1 & 0x8000000000000000L) != 0L)
{
jjmatchedKind = 127;
jjmatchedPos = 11;
}
else if ((active4 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(11, 273, 77);
+ return jjStartNfaWithStates_3(11, 273, 78);
else if ((active7 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 493, 77);
+ return jjStartNfaWithStates_3(11, 493, 78);
else if ((active8 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(11, 525, 77);
+ return jjStartNfaWithStates_3(11, 525, 78);
else if ((active8 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(11, 544, 77);
+ return jjStartNfaWithStates_3(11, 544, 78);
else if ((active10 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(11, 655, 77);
+ return jjStartNfaWithStates_3(11, 655, 78);
return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0x40000000000001e0L, active2, 0x1L, active3, 0L, active4, 0L, active5, 0x20000L, active6, 0L, active7, 0x400000008000L, active8, 0L, active9, 0x4000000000L, active10, 0x10400L, active11, 0L);
case 70:
case 102:
@@ -19633,9 +19668,9 @@
case 72:
case 104:
if ((active1 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 123, 77);
+ return jjStartNfaWithStates_3(11, 123, 78);
else if ((active5 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 381, 77);
+ return jjStartNfaWithStates_3(11, 381, 78);
break;
case 73:
case 105:
@@ -19643,14 +19678,14 @@
case 75:
case 107:
if ((active6 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 426, 77);
+ return jjStartNfaWithStates_3(11, 426, 78);
else if ((active9 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(11, 594, 77);
+ return jjStartNfaWithStates_3(11, 594, 78);
break;
case 76:
case 108:
if ((active7 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 502, 77);
+ return jjStartNfaWithStates_3(11, 502, 78);
return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0x3ffe000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 77:
case 109:
@@ -19658,11 +19693,11 @@
case 78:
case 110:
if ((active1 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(11, 77, 77);
+ return jjStartNfaWithStates_3(11, 77, 78);
else if ((active4 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(11, 277, 77);
+ return jjStartNfaWithStates_3(11, 277, 78);
else if ((active8 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(11, 546, 77);
+ return jjStartNfaWithStates_3(11, 546, 78);
return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0x804800000000L, active2, 0x2L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x100000000L, active8, 0L, active9, 0x4000000000000001L, active10, 0L, active11, 0L);
case 79:
case 111:
@@ -19673,39 +19708,39 @@
case 82:
case 114:
if ((active2 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(11, 130, 77);
+ return jjStartNfaWithStates_3(11, 130, 78);
else if ((active5 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(11, 328, 77);
+ return jjStartNfaWithStates_3(11, 328, 78);
else if ((active8 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(11, 529, 77);
+ return jjStartNfaWithStates_3(11, 529, 78);
else if ((active9 & 0x10L) != 0L)
- return jjStartNfaWithStates_3(11, 580, 77);
+ return jjStartNfaWithStates_3(11, 580, 78);
else if ((active9 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(11, 588, 77);
+ return jjStartNfaWithStates_3(11, 588, 78);
else if ((active9 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(11, 595, 77);
- return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x200000L);
+ return jjStartNfaWithStates_3(11, 595, 78);
+ return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x400000L);
case 83:
case 115:
return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0x8000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x70L, active11, 0L);
case 84:
case 116:
if ((active3 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(11, 244, 77);
+ return jjStartNfaWithStates_3(11, 244, 78);
else if ((active5 & 0x40000L) != 0L)
- return jjStartNfaWithStates_3(11, 338, 77);
+ return jjStartNfaWithStates_3(11, 338, 78);
else if ((active9 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(11, 582, 77);
- else if ((active11 & 0x10L) != 0L)
- return jjStartNfaWithStates_3(11, 708, 77);
+ return jjStartNfaWithStates_3(11, 582, 78);
+ else if ((active11 & 0x20L) != 0L)
+ return jjStartNfaWithStates_3(11, 709, 78);
return jjMoveStringLiteralDfa12_3(active0, 0x20000800000L, active1, 0x200L, active2, 0x6000L, active3, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x8000L, active10, 0L, active11, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa12_3(active0, 0L, active1, 0x100000000L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2000000000004000L, active10, 0L, active11, 0L);
case 89:
case 121:
- if ((active11 & 0x80000L) != 0L)
- return jjStartNfaWithStates_3(11, 723, 77);
+ if ((active11 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_3(11, 724, 78);
break;
default :
break;
@@ -19724,14 +19759,14 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa13_3(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x1e0000000070L, active11, 0L);
+ return jjMoveStringLiteralDfa13_3(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x3c0000000070L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0x6800000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
if ((active2 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(12, 170, 77);
+ return jjStartNfaWithStates_3(12, 170, 78);
return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0x8000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1L, active10, 0L, active11, 0L);
case 68:
case 100:
@@ -19739,26 +19774,26 @@
case 69:
case 101:
if ((active8 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(12, 543, 77);
+ return jjStartNfaWithStates_3(12, 543, 78);
return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0L, active2, 0x6000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000038000000L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 70:
case 102:
if ((active2 & 0x1000L) != 0L)
- return jjStartNfaWithStates_3(12, 140, 77);
+ return jjStartNfaWithStates_3(12, 140, 78);
else if ((active9 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(12, 634, 77);
+ return jjStartNfaWithStates_3(12, 634, 78);
return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x800000000000000L, active10, 0L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_3(12, 111, 77);
+ return jjStartNfaWithStates_3(12, 111, 78);
else if ((active4 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(12, 289, 77);
+ return jjStartNfaWithStates_3(12, 289, 78);
return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x1000000000L, active5, 0L, active6, 0L, active7, 0x4000000100000000L, active8, 0L, active9, 0x4200000000L, active10, 0x400L, active11, 0L);
case 72:
case 104:
if ((active9 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(12, 591, 77);
+ return jjStartNfaWithStates_3(12, 591, 78);
return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0x400000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
@@ -19766,7 +19801,7 @@
case 76:
case 108:
if ((active10 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(12, 668, 77);
+ return jjStartNfaWithStates_3(12, 668, 78);
return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0x100000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0L, active10, 0x4000L, active11, 0L);
case 77:
case 109:
@@ -19774,22 +19809,22 @@
case 78:
case 110:
if ((active0 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(12, 36, 77);
+ return jjStartNfaWithStates_3(12, 36, 78);
else if ((active3 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(12, 193, 77);
+ return jjStartNfaWithStates_3(12, 193, 78);
return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0x20L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x20000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x400000L);
case 80:
case 112:
if ((active9 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(12, 584, 77);
- return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjStartNfaWithStates_3(12, 584, 78);
+ return jjMoveStringLiteralDfa13_3(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 82:
case 114:
if ((active9 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(12, 637, 77);
+ return jjStartNfaWithStates_3(12, 637, 78);
return jjMoveStringLiteralDfa13_3(active0, 0x1000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 83:
case 115:
@@ -19803,7 +19838,7 @@
case 89:
case 121:
if ((active9 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(12, 596, 77);
+ return jjStartNfaWithStates_3(12, 596, 78);
break;
default :
break;
@@ -19826,50 +19861,50 @@
case 65:
case 97:
if ((active1 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_3(13, 126, 77);
+ return jjStartNfaWithStates_3(13, 126, 78);
else if ((active7 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_3(13, 494, 77);
+ return jjStartNfaWithStates_3(13, 494, 78);
else if ((active10 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(13, 656, 77);
- return jjMoveStringLiteralDfa14_3(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjStartNfaWithStates_3(13, 656, 78);
+ return jjMoveStringLiteralDfa14_3(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 66:
case 98:
return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0x100000000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
if ((active2 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(13, 143, 77);
+ return jjStartNfaWithStates_3(13, 143, 78);
return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0x200L, active2, 0L, active4, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x20L, active11, 0L);
case 68:
case 100:
if ((active9 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(13, 593, 77);
+ return jjStartNfaWithStates_3(13, 593, 78);
return jjMoveStringLiteralDfa14_3(active0, 0x1000000L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1e000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 69:
case 101:
if ((active1 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(13, 85, 77);
+ return jjStartNfaWithStates_3(13, 85, 78);
else if ((active6 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(13, 408, 77);
+ return jjStartNfaWithStates_3(13, 408, 78);
else if ((active6 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_3(13, 409, 77);
+ return jjStartNfaWithStates_3(13, 409, 78);
else if ((active9 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(13, 590, 77);
+ return jjStartNfaWithStates_3(13, 590, 78);
return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0x400000L, active2, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x4000010000L, active10, 0x400L, active11, 0L);
case 70:
case 102:
if ((active9 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_3(13, 635, 77);
+ return jjStartNfaWithStates_3(13, 635, 78);
return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0L, active2, 0x2L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
if ((active4 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_3(13, 292, 77);
+ return jjStartNfaWithStates_3(13, 292, 78);
return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0x20L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
if ((active5 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(13, 336, 77);
+ return jjStartNfaWithStates_3(13, 336, 78);
return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0x8000000000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xe0000000000000L, active9, 0x1L, active10, 0L, active11, 0L);
case 73:
case 105:
@@ -19883,15 +19918,15 @@
case 78:
case 110:
if ((active4 & 0x4L) != 0L)
- return jjStartNfaWithStates_3(13, 258, 77);
- return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x200000L);
+ return jjStartNfaWithStates_3(13, 258, 78);
+ return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa14_3(active0, 0x20000000000L, active1, 0x100000000000000L, active2, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0L, active10, 0x4000L, active11, 0L);
case 80:
case 112:
if ((active4 & 0x8000000000000000L) != 0L)
- return jjStartNfaWithStates_3(13, 319, 77);
+ return jjStartNfaWithStates_3(13, 319, 78);
break;
case 82:
case 114:
@@ -19899,17 +19934,17 @@
case 83:
case 115:
if ((active7 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_3(13, 510, 77);
+ return jjStartNfaWithStates_3(13, 510, 78);
return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0x800000000000000L, active9, 0x2800L, active10, 0L, active11, 0L);
case 84:
case 116:
if ((active7 & 0x8000L) != 0L)
- return jjStartNfaWithStates_3(13, 463, 77);
- return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(13, 463, 78);
+ return jjMoveStringLiteralDfa14_3(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 88:
case 120:
if ((active6 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(13, 435, 77);
+ return jjStartNfaWithStates_3(13, 435, 78);
break;
case 89:
case 121:
@@ -19941,38 +19976,38 @@
case 67:
case 99:
if ((active6 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 425, 77);
+ return jjStartNfaWithStates_3(14, 425, 78);
else if ((active9 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 636, 77);
+ return jjStartNfaWithStates_3(14, 636, 78);
return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0L);
case 69:
case 101:
if ((active1 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_3(14, 99, 77);
+ return jjStartNfaWithStates_3(14, 99, 78);
else if ((active1 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 102, 77);
+ return jjStartNfaWithStates_3(14, 102, 78);
else if ((active5 & 0x200L) != 0L)
- return jjStartNfaWithStates_3(14, 329, 77);
+ return jjStartNfaWithStates_3(14, 329, 78);
else if ((active9 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 638, 77);
+ return jjStartNfaWithStates_3(14, 638, 78);
return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0x8100000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3800000000000000L, active9, 0x2800L, active10, 0L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 120, 77);
+ return jjStartNfaWithStates_3(14, 120, 78);
else if ((active7 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 492, 77);
+ return jjStartNfaWithStates_3(14, 492, 78);
else if ((active10 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(14, 654, 77);
+ return jjStartNfaWithStates_3(14, 654, 78);
return jjMoveStringLiteralDfa15_3(active0, 0x800000L, active1, 0L, active2, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
if ((active7 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(14, 480, 77);
+ return jjStartNfaWithStates_3(14, 480, 78);
break;
case 73:
case 105:
- return jjMoveStringLiteralDfa15_3(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa15_3(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -19982,11 +20017,11 @@
case 78:
case 110:
if ((active0 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 41, 77);
+ return jjStartNfaWithStates_3(14, 41, 78);
else if ((active5 & 0x80L) != 0L)
- return jjStartNfaWithStates_3(14, 327, 77);
+ return jjStartNfaWithStates_3(14, 327, 78);
else if ((active9 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(14, 609, 77);
+ return jjStartNfaWithStates_3(14, 609, 78);
return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0x80L, active2, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 79:
case 111:
@@ -19994,23 +20029,23 @@
case 82:
case 114:
if ((active1 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 107, 77);
+ return jjStartNfaWithStates_3(14, 107, 78);
else if ((active8 & 0x8000000000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 575, 77);
+ return jjStartNfaWithStates_3(14, 575, 78);
else if ((active9 & 0x10000L) != 0L)
- return jjStartNfaWithStates_3(14, 592, 77);
- return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjStartNfaWithStates_3(14, 592, 78);
+ return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 83:
case 115:
if ((active1 & 0x200L) != 0L)
- return jjStartNfaWithStates_3(14, 73, 77);
+ return jjStartNfaWithStates_3(14, 73, 78);
return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
if ((active6 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 424, 77);
+ return jjStartNfaWithStates_3(14, 424, 78);
else if ((active10 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(14, 641, 77);
+ return jjStartNfaWithStates_3(14, 641, 78);
return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0x400000000000020L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 86:
case 118:
@@ -20018,13 +20053,13 @@
case 88:
case 120:
if ((active9 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_3(14, 614, 77);
+ return jjStartNfaWithStates_3(14, 614, 78);
else if ((active10 & 0x400L) != 0L)
- return jjStartNfaWithStates_3(14, 650, 77);
+ return jjStartNfaWithStates_3(14, 650, 78);
break;
case 89:
case 121:
- return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa15_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
default :
break;
}
@@ -20046,7 +20081,7 @@
case 65:
case 97:
if ((active1 & 0x400000L) != 0L)
- return jjStartNfaWithStates_3(15, 86, 77);
+ return jjStartNfaWithStates_3(15, 86, 78);
return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0xc0L, active2, 0x6000L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0x3000000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
@@ -20060,12 +20095,12 @@
case 71:
case 103:
if ((active0 & 0x800000L) != 0L)
- return jjStartNfaWithStates_3(15, 23, 77);
+ return jjStartNfaWithStates_3(15, 23, 78);
break;
case 72:
case 104:
if ((active1 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(15, 69, 77);
+ return jjStartNfaWithStates_3(15, 69, 78);
break;
case 76:
case 108:
@@ -20091,17 +20126,17 @@
return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 82:
case 114:
if ((active1 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_3(15, 96, 77);
+ return jjStartNfaWithStates_3(15, 96, 78);
else if ((active9 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(15, 576, 77);
+ return jjStartNfaWithStates_3(15, 576, 78);
return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xe0000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -20115,7 +20150,7 @@
return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa16_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
default :
break;
}
@@ -20137,24 +20172,24 @@
case 65:
case 97:
if ((active1 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_3(16, 103, 77);
- return jjMoveStringLiteralDfa17_3(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjStartNfaWithStates_3(16, 103, 78);
+ return jjMoveStringLiteralDfa17_3(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
if ((active7 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_3(16, 482, 77);
- return jjMoveStringLiteralDfa17_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(16, 482, 78);
+ return jjMoveStringLiteralDfa17_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x100000L) != 0L)
- return jjStartNfaWithStates_3(16, 84, 77);
+ return jjStartNfaWithStates_3(16, 84, 78);
break;
case 72:
case 104:
return jjMoveStringLiteralDfa17_3(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa17_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa17_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 76:
case 108:
return jjMoveStringLiteralDfa17_3(active0, 0L, active1, 0L, active2, 0x6000L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0L, active10, 0x40L, active11, 0L);
@@ -20170,7 +20205,7 @@
case 80:
case 112:
if ((active2 & 0x1L) != 0L)
- return jjStartNfaWithStates_3(16, 128, 77);
+ return jjStartNfaWithStates_3(16, 128, 78);
break;
case 82:
case 114:
@@ -20194,12 +20229,12 @@
case 88:
case 120:
if ((active5 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_3(16, 380, 77);
+ return jjStartNfaWithStates_3(16, 380, 78);
break;
case 89:
case 121:
if ((active8 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_3(16, 574, 77);
+ return jjStartNfaWithStates_3(16, 574, 78);
break;
default :
break;
@@ -20218,7 +20253,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -20228,17 +20263,17 @@
case 69:
case 101:
if ((active1 & 0x80L) != 0L)
- return jjStartNfaWithStates_3(17, 71, 77);
+ return jjStartNfaWithStates_3(17, 71, 78);
return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x40L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_3(17, 101, 77);
+ return jjStartNfaWithStates_3(17, 101, 78);
return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
if ((active8 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(17, 570, 77);
+ return jjStartNfaWithStates_3(17, 570, 78);
break;
case 73:
case 105:
@@ -20254,7 +20289,7 @@
return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 86:
case 118:
return jjMoveStringLiteralDfa18_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0L);
@@ -20281,15 +20316,15 @@
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x60000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0xc0000000000L, active11, 0L);
case 68:
case 100:
if ((active8 & 0x800000000000000L) != 0L)
- return jjStartNfaWithStates_3(18, 571, 77);
+ return jjStartNfaWithStates_3(18, 571, 78);
else if ((active9 & 0x800L) != 0L)
- return jjStartNfaWithStates_3(18, 587, 77);
+ return jjStartNfaWithStates_3(18, 587, 78);
else if ((active9 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(18, 589, 77);
+ return jjStartNfaWithStates_3(18, 589, 78);
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x40L, active11, 0L);
case 69:
case 101:
@@ -20299,14 +20334,14 @@
jjmatchedPos = 18;
}
else if ((active10 & 0x10L) != 0L)
- return jjStartNfaWithStates_3(18, 644, 77);
+ return jjStartNfaWithStates_3(18, 644, 78);
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa19_3(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa19_3(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -20315,7 +20350,7 @@
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
case 79:
case 111:
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -20324,7 +20359,7 @@
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0x4000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000L, active11, 0L);
case 84:
case 116:
return jjMoveStringLiteralDfa19_3(active0, 0L, active1, 0L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0x80000000L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x20L, active11, 0L);
@@ -20349,25 +20384,25 @@
case 65:
case 97:
if ((active1 & 0x100L) != 0L)
- return jjStartNfaWithStates_3(19, 72, 77);
- return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0xa0000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(19, 72, 78);
+ return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0x140000000000L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x200000000000L, active11, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
if ((active5 & 0x20000L) != 0L)
- return jjStartNfaWithStates_3(19, 337, 77);
+ return jjStartNfaWithStates_3(19, 337, 78);
break;
case 78:
case 110:
return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0x10000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x40000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x80000000000L, active11, 0x400000400000L);
case 82:
case 114:
return jjMoveStringLiteralDfa20_3(active0, 0L, active1, 0L, active2, 0x4002L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -20380,7 +20415,7 @@
case 89:
case 121:
if ((active7 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_3(19, 479, 77);
+ return jjStartNfaWithStates_3(19, 479, 78);
break;
default :
break;
@@ -20411,30 +20446,30 @@
return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0x20000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x80000000000L, active11, 0L);
case 69:
case 101:
if ((active1 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(20, 91, 77);
+ return jjStartNfaWithStates_3(20, 91, 78);
else if ((active2 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_3(20, 184, 77);
+ return jjStartNfaWithStates_3(20, 184, 78);
return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0x4000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x20L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(20, 70, 77);
+ return jjStartNfaWithStates_3(20, 70, 78);
break;
case 72:
case 104:
if ((active7 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_3(20, 481, 77);
- return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x100000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(20, 481, 78);
+ return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x200000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x100000000000L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0x2L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -20443,11 +20478,11 @@
return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0x400000000000000L, active2, 0L, active6, 0x4000000L, active7, 0L, active8, 0x10000000000000L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_3(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x40000000000L, active11, 0L);
case 89:
case 121:
if ((active0 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_3(20, 24, 77);
+ return jjStartNfaWithStates_3(20, 24, 78);
break;
default :
break;
@@ -20466,27 +20501,27 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa22_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa22_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa22_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000040L, active11, 0L);
+ return jjMoveStringLiteralDfa22_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000040L, active11, 0L);
case 67:
case 99:
return jjMoveStringLiteralDfa22_3(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 68:
case 100:
if ((active10 & 0x20L) != 0L)
- return jjStartNfaWithStates_3(21, 645, 77);
+ return jjStartNfaWithStates_3(21, 645, 78);
break;
case 69:
case 101:
if ((active2 & 0x2000L) != 0L)
- return jjStartNfaWithStates_3(21, 141, 77);
- else if ((active10 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_3(21, 682, 77);
+ return jjStartNfaWithStates_3(21, 141, 78);
else if ((active10 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_3(21, 683, 77);
- return jjMoveStringLiteralDfa22_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x100000000000L, active11, 0L);
+ return jjStartNfaWithStates_3(21, 683, 78);
+ else if ((active10 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_3(21, 684, 78);
+ return jjMoveStringLiteralDfa22_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x200000000000L, active11, 0L);
case 70:
case 102:
return jjMoveStringLiteralDfa22_3(active1, 0x400000000000000L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -20538,17 +20573,17 @@
case 69:
case 101:
if ((active6 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_3(22, 412, 77);
+ return jjStartNfaWithStates_3(22, 412, 78);
return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0x20000000L, active8, 0x80000000000000L, active10, 0L, active11, 0L);
case 73:
case 105:
return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x100000000000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x200000000000L, active11, 0x400000L);
case 78:
case 110:
return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x8000000000000L, active10, 0L, active11, 0L);
@@ -20560,7 +20595,7 @@
return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa23_3(active1, 0L, active2, 0L, active6, 0x4000000L, active8, 0L, active10, 0L, active11, 0L);
@@ -20587,8 +20622,8 @@
return jjMoveStringLiteralDfa24_3(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 65:
case 97:
- if ((active10 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_3(23, 684, 77);
+ if ((active10 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_3(23, 685, 78);
break;
case 67:
case 99:
@@ -20599,7 +20634,7 @@
case 75:
case 107:
if ((active10 & 0x40L) != 0L)
- return jjStartNfaWithStates_3(23, 646, 77);
+ return jjStartNfaWithStates_3(23, 646, 78);
break;
case 76:
case 108:
@@ -20612,11 +20647,11 @@
return jjMoveStringLiteralDfa24_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x2040000000000000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa24_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x20000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa24_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x40000000000L, active11, 0x400000400000L);
case 82:
case 114:
if ((active8 & 0x4000000000000L) != 0L)
- return jjStartNfaWithStates_3(23, 562, 77);
+ return jjStartNfaWithStates_3(23, 562, 78);
return jjMoveStringLiteralDfa24_3(active1, 0x400000000000000L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 83:
case 115:
@@ -20643,11 +20678,11 @@
case 65:
case 97:
if ((active6 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_3(24, 413, 77);
+ return jjStartNfaWithStates_3(24, 413, 78);
break;
case 68:
case 100:
- return jjMoveStringLiteralDfa25_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa25_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
return jjMoveStringLiteralDfa25_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x200000000000000L, active10, 0L, active11, 0L);
@@ -20656,8 +20691,8 @@
return jjMoveStringLiteralDfa25_3(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_3(24, 681, 77);
+ if ((active10 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_3(24, 682, 78);
break;
case 73:
case 105:
@@ -20679,7 +20714,7 @@
return jjMoveStringLiteralDfa25_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa25_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa25_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -20704,36 +20739,36 @@
case 68:
case 100:
if ((active8 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_3(25, 564, 77);
+ return jjStartNfaWithStates_3(25, 564, 78);
break;
case 69:
case 101:
if ((active8 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_3(25, 563, 77);
- else if ((active11 & 0x200000L) != 0L)
- return jjStartNfaWithStates_3(25, 725, 77);
+ return jjStartNfaWithStates_3(25, 563, 78);
+ else if ((active11 & 0x400000L) != 0L)
+ return jjStartNfaWithStates_3(25, 726, 78);
break;
case 71:
case 103:
if ((active6 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_3(25, 411, 77);
+ return jjStartNfaWithStates_3(25, 411, 78);
break;
case 72:
case 104:
if ((active8 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_3(25, 573, 77);
+ return jjStartNfaWithStates_3(25, 573, 78);
break;
case 78:
case 110:
if ((active6 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_3(25, 410, 77);
+ return jjStartNfaWithStates_3(25, 410, 78);
return jjMoveStringLiteralDfa26_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x80000000000000L, active11, 0L);
case 79:
case 111:
return jjMoveStringLiteralDfa26_3(active1, 0L, active2, 0x4002L, active6, 0L, active8, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa26_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa26_3(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa26_3(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active11, 0L);
@@ -20754,16 +20789,16 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa27_3(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa27_3(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 68:
case 100:
if ((active8 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_3(26, 567, 77);
+ return jjStartNfaWithStates_3(26, 567, 78);
break;
case 69:
case 101:
if ((active8 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_3(26, 566, 77);
+ return jjStartNfaWithStates_3(26, 566, 78);
break;
case 71:
case 103:
@@ -20771,7 +20806,7 @@
case 78:
case 110:
if ((active2 & 0x4000L) != 0L)
- return jjStartNfaWithStates_3(26, 142, 77);
+ return jjStartNfaWithStates_3(26, 142, 78);
break;
case 79:
case 111:
@@ -20802,7 +20837,7 @@
return jjMoveStringLiteralDfa28_3(active1, 0L, active2, 0L, active8, 0x200000000000000L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa28_3(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa28_3(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 82:
case 114:
return jjMoveStringLiteralDfa28_3(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -20825,11 +20860,11 @@
case 68:
case 100:
if ((active8 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_3(28, 569, 77);
+ return jjStartNfaWithStates_3(28, 569, 78);
break;
case 69:
case 101:
- return jjMoveStringLiteralDfa29_3(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa29_3(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 79:
case 111:
return jjMoveStringLiteralDfa29_3(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -20854,7 +20889,7 @@
{
case 82:
case 114:
- return jjMoveStringLiteralDfa30_3(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa30_3(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa30_3(active1, 0x400000000000000L, active2, 0L, active11, 0L);
@@ -20879,11 +20914,11 @@
{
case 67:
case 99:
- return jjMoveStringLiteralDfa31_3(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa31_3(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 80:
case 112:
if ((active1 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_3(30, 122, 77);
+ return jjStartNfaWithStates_3(30, 122, 78);
return jjMoveStringLiteralDfa31_3(active1, 0L, active2, 0x2L, active11, 0L);
default :
break;
@@ -20904,8 +20939,8 @@
case 69:
case 101:
if ((active2 & 0x2L) != 0L)
- return jjStartNfaWithStates_3(31, 129, 77);
- return jjMoveStringLiteralDfa32_3(active2, 0L, active11, 0x200000000000L);
+ return jjStartNfaWithStates_3(31, 129, 78);
+ return jjMoveStringLiteralDfa32_3(active2, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -20924,7 +20959,7 @@
{
case 78:
case 110:
- return jjMoveStringLiteralDfa33_3(active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa33_3(active11, 0x400000000000L);
default :
break;
}
@@ -20943,8 +20978,8 @@
{
case 84:
case 116:
- if ((active11 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_3(33, 749, 77);
+ if ((active11 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_3(33, 750, 78);
break;
default :
break;
@@ -20975,8 +21010,8 @@
jjCheckNAddStates(62, 64);
else if (curChar == 34)
{
- if (kind > 763)
- kind = 763;
+ if (kind > 764)
+ kind = 764;
}
break;
case 58:
@@ -20984,8 +21019,8 @@
jjCheckNAddStates(65, 67);
else if (curChar == 39)
{
- if (kind > 764)
- kind = 764;
+ if (kind > 765)
+ kind = 765;
}
if ((0xfc00f7faffffc9ffL & l) != 0L)
jjstateSet[jjnewStateCnt++] = 59;
@@ -20993,8 +21028,8 @@
case 76:
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
}
if ((0x3ff000000000000L & l) != 0L)
@@ -21009,13 +21044,37 @@
jjCheckNAddStates(68, 70);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
if (curChar == 36)
jjCheckNAdd(27);
break;
+ case 78:
+ if ((0x7ff601000000000L & l) != 0L)
+ jjCheckNAddTwoStates(25, 26);
+ if ((0x3ff001000000000L & l) != 0L)
+ jjCheckNAddStates(68, 70);
+ if ((0x3ff001000000000L & l) != 0L)
+ {
+ if (kind > 824)
+ kind = 824;
+ jjCheckNAdd(23);
+ }
+ if (curChar == 36)
+ jjCheckNAdd(27);
+ break;
+ case 77:
+ if (curChar == 32)
+ jjCheckNAddTwoStates(68, 69);
+ if (curChar == 32)
+ jjCheckNAddTwoStates(65, 66);
+ if (curChar == 32)
+ jjCheckNAddTwoStates(63, 64);
+ if (curChar == 32)
+ jjCheckNAddTwoStates(61, 62);
+ break;
case 31:
if ((0x7ff601000000000L & l) != 0L)
jjCheckNAddTwoStates(25, 26);
@@ -21025,32 +21084,8 @@
jjCheckNAddStates(68, 70);
if ((0x3ff001000000000L & l) != 0L)
{
- if (kind > 821)
- kind = 821;
- jjCheckNAdd(23);
- }
- if (curChar == 36)
- jjCheckNAdd(27);
- break;
- case 78:
- if (curChar == 32)
- jjCheckNAddTwoStates(68, 69);
- if (curChar == 32)
- jjCheckNAddTwoStates(65, 66);
- if (curChar == 32)
- jjCheckNAddTwoStates(63, 64);
- if (curChar == 32)
- jjCheckNAddTwoStates(61, 62);
- break;
- case 77:
- if ((0x7ff601000000000L & l) != 0L)
- jjCheckNAddTwoStates(25, 26);
- if ((0x3ff001000000000L & l) != 0L)
- jjCheckNAddStates(68, 70);
- if ((0x3ff001000000000L & l) != 0L)
- {
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
if (curChar == 36)
@@ -21065,8 +21100,8 @@
case 74:
if (curChar == 47)
{
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(71, 73);
}
else if (curChar == 42)
@@ -21083,8 +21118,8 @@
jjCheckNAddTwoStates(51, 52);
else if (curChar == 7)
{
- if (kind > 826)
- kind = 826;
+ if (kind > 829)
+ kind = 829;
}
else if (curChar == 45)
jjstateSet[jjnewStateCnt++] = 11;
@@ -21092,14 +21127,14 @@
jjCheckNAddStates(62, 64);
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(80, 86);
}
else if (curChar == 36)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
break;
@@ -21116,8 +21151,8 @@
jjstateSet[jjnewStateCnt++] = 3;
break;
case 5:
- if (curChar == 39 && kind > 757)
- kind = 757;
+ if (curChar == 39 && kind > 758)
+ kind = 758;
break;
case 6:
if (curChar == 34)
@@ -21131,30 +21166,30 @@
jjCheckNAddStates(62, 64);
break;
case 10:
- if (curChar == 34 && kind > 763)
- kind = 763;
+ if (curChar == 34 && kind > 764)
+ kind = 764;
break;
case 11:
if (curChar != 45)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(71, 73);
break;
case 12:
if ((0xffffffffffffdbffL & l) == 0L)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(71, 73);
break;
case 13:
- if ((0x2400L & l) != 0L && kind > 812)
- kind = 812;
+ if ((0x2400L & l) != 0L && kind > 815)
+ kind = 815;
break;
case 14:
- if (curChar == 10 && kind > 812)
- kind = 812;
+ if (curChar == 10 && kind > 815)
+ kind = 815;
break;
case 15:
if (curChar == 13)
@@ -21171,15 +21206,15 @@
case 22:
if (curChar != 36)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
break;
case 23:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
break;
case 24:
@@ -21197,8 +21232,8 @@
case 27:
if (curChar != 36)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAddTwoStates(27, 28);
break;
case 28:
@@ -21208,8 +21243,8 @@
case 29:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAdd(29);
break;
case 32:
@@ -21229,25 +21264,25 @@
jjstateSet[jjnewStateCnt++] = 34;
break;
case 36:
- if (curChar == 34 && kind > 823)
- kind = 823;
+ if (curChar == 34 && kind > 826)
+ kind = 826;
break;
case 37:
- if (curChar == 7 && kind > 826)
- kind = 826;
+ if (curChar == 7 && kind > 829)
+ kind = 829;
break;
case 38:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(80, 86);
break;
case 39:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAdd(39);
break;
case 40:
@@ -21261,8 +21296,8 @@
case 43:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 752)
- kind = 752;
+ if (kind > 753)
+ kind = 753;
jjCheckNAdd(43);
break;
case 44:
@@ -21276,22 +21311,22 @@
case 46:
if (curChar != 46)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(47);
break;
case 47:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(47);
break;
case 48:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAddStates(93, 95);
break;
case 49:
@@ -21309,8 +21344,8 @@
case 52:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
break;
case 53:
@@ -21325,13 +21360,13 @@
jjCheckNAddStates(65, 67);
break;
case 57:
- if (curChar == 39 && kind > 764)
- kind = 764;
- break;
- case 59:
if (curChar == 39 && kind > 765)
kind = 765;
break;
+ case 59:
+ if (curChar == 39 && kind > 766)
+ kind = 766;
+ break;
case 61:
if (curChar == 32)
jjCheckNAddTwoStates(61, 62);
@@ -21357,14 +21392,14 @@
jjstateSet[jjnewStateCnt++] = 73;
break;
case 73:
- if ((0xffff7fffffffffffL & l) != 0L && kind > 810)
- kind = 810;
+ if ((0xffff7fffffffffffL & l) != 0L && kind > 813)
+ kind = 813;
break;
case 75:
if (curChar != 47)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(71, 73);
break;
default : break;
@@ -21399,11 +21434,39 @@
jjCheckNAddStates(68, 70);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
break;
+ case 78:
+ if ((0x7fffffe87fffffeL & l) != 0L)
+ jjCheckNAddTwoStates(25, 26);
+ if ((0x7fffffe87fffffeL & l) != 0L)
+ jjCheckNAddStates(68, 70);
+ if ((0x7fffffe87fffffeL & l) != 0L)
+ {
+ if (kind > 824)
+ kind = 824;
+ jjCheckNAdd(23);
+ }
+ break;
+ case 77:
+ if ((0x4000000040L & l) != 0L)
+ jjstateSet[jjnewStateCnt++] = 70;
+ else if ((0x10000000100000L & l) != 0L)
+ jjstateSet[jjnewStateCnt++] = 67;
+ else if ((0x1000000010L & l) != 0L)
+ {
+ if (kind > 769)
+ kind = 769;
+ }
+ if ((0x10000000100000L & l) != 0L)
+ {
+ if (kind > 770)
+ kind = 770;
+ }
+ break;
case 31:
if ((0x7fffffe87fffffeL & l) != 0L)
jjCheckNAddTwoStates(25, 26);
@@ -21411,36 +21474,8 @@
jjCheckNAddStates(68, 70);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
- jjCheckNAdd(23);
- }
- break;
- case 78:
- if ((0x4000000040L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 70;
- else if ((0x10000000100000L & l) != 0L)
- jjstateSet[jjnewStateCnt++] = 67;
- else if ((0x1000000010L & l) != 0L)
- {
- if (kind > 768)
- kind = 768;
- }
- if ((0x10000000100000L & l) != 0L)
- {
- if (kind > 769)
- kind = 769;
- }
- break;
- case 77:
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddTwoStates(25, 26);
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddStates(68, 70);
- if ((0x7fffffe87fffffeL & l) != 0L)
- {
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
break;
@@ -21458,8 +21493,8 @@
jjCheckNAddStates(87, 89);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
if ((0x20000000200000L & l) != 0L)
@@ -21482,8 +21517,8 @@
jjCheckNAddStates(62, 64);
break;
case 12:
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(71, 73);
break;
case 17:
@@ -21502,21 +21537,21 @@
jjCheckNAddStates(87, 89);
break;
case 21:
- if (curChar == 96 && kind > 819)
- kind = 819;
+ if (curChar == 96 && kind > 822)
+ kind = 822;
break;
case 22:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
break;
case 23:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
break;
case 24:
@@ -21526,15 +21561,15 @@
case 27:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(108, 109);
break;
case 29:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 29;
break;
case 30:
@@ -21564,32 +21599,32 @@
jjAddStates(100, 107);
break;
case 62:
- if ((0x1000000010L & l) != 0L && kind > 768)
- kind = 768;
+ if ((0x1000000010L & l) != 0L && kind > 769)
+ kind = 769;
break;
case 64:
- if ((0x10000000100000L & l) != 0L && kind > 769)
- kind = 769;
+ if ((0x10000000100000L & l) != 0L && kind > 770)
+ kind = 770;
break;
case 66:
if ((0x10000000100000L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 67;
break;
case 67:
- if ((0x8000000080000L & l) != 0L && kind > 770)
- kind = 770;
+ if ((0x8000000080000L & l) != 0L && kind > 771)
+ kind = 771;
break;
case 69:
if ((0x4000000040L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 70;
break;
case 70:
- if ((0x400000004000L & l) != 0L && kind > 771)
- kind = 771;
+ if ((0x400000004000L & l) != 0L && kind > 772)
+ kind = 772;
break;
case 73:
- if (kind > 810)
- kind = 810;
+ if (kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -21621,8 +21656,20 @@
case 1:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
+ jjCheckNAdd(23);
+ }
+ if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+ jjCheckNAddStates(68, 70);
+ if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+ jjCheckNAddTwoStates(25, 26);
+ break;
+ case 78:
+ if (jjCanMove_1(hiByte, i1, i2, l1, l2))
+ {
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -21633,20 +21680,8 @@
case 31:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
- jjCheckNAdd(23);
- }
- if (jjCanMove_1(hiByte, i1, i2, l1, l2))
- jjCheckNAddStates(68, 70);
- if (jjCanMove_1(hiByte, i1, i2, l1, l2))
- jjCheckNAddTwoStates(25, 26);
- break;
- case 77:
- if (jjCanMove_1(hiByte, i1, i2, l1, l2))
- {
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -21662,8 +21697,8 @@
case 0:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -21676,8 +21711,8 @@
case 12:
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(71, 73);
break;
case 18:
@@ -21688,15 +21723,15 @@
case 22:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
break;
case 23:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 821)
- kind = 821;
+ if (kind > 824)
+ kind = 824;
jjCheckNAdd(23);
break;
case 24:
@@ -21706,15 +21741,15 @@
case 27:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(108, 109);
break;
case 29:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 29;
break;
case 33:
@@ -21727,8 +21762,8 @@
jjCheckNAddStates(65, 67);
break;
case 73:
- if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 810)
- kind = 810;
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -21772,7 +21807,7 @@
{
case 0:
if (curChar == 47)
- kind = 813;
+ kind = 816;
break;
case 1:
if (curChar == 42)
@@ -21826,136 +21861,136 @@
switch (pos)
{
case 0:
- if ((active10 & 0x3fffffe000000L) != 0L)
- {
- jjmatchedKind = 820;
- return 31;
- }
- if ((active12 & 0x10000200L) != 0L)
+ if ((active12 & 0x20000400L) != 0L)
return 76;
- if ((active11 & 0x1000L) != 0L)
+ if ((active12 & 0x40000000L) != 0L)
+ return 58;
+ if ((active12 & 0x20L) != 0L)
+ return 77;
+ if ((active11 & 0x2000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
return 1;
}
- if ((active12 & 0x20000000L) != 0L)
- return 58;
- if ((active12 & 0x10L) != 0L)
- return 77;
- if ((active12 & 0x90001000000L) != 0L)
- return 74;
- if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0xffffffffffffffc0L) != 0L || (active3 & 0xff8001ffffffffffL) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xfffffff000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffc000001ffffffL) != 0L || (active11 & 0x4e57ff27efffL) != 0L)
+ if ((active10 & 0x7fffffe000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
+ return 31;
+ }
+ if ((active12 & 0x480002000000L) != 0L)
+ return 74;
+ if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x635001b00000L) != 0L || (active12 & 0x1000000000L) != 0L)
+ return 78;
+ if ((active12 & 0xc00000L) != 0L)
+ return 11;
+ if ((active12 & 0x80000000L) != 0L)
+ return 79;
+ if ((active0 & 0xfffc000000000L) != 0L || (active2 & 0xffffffffffffffc0L) != 0L || (active3 & 0xff8001ffffffffffL) != 0L || (active4 & 0xfffff0ffffffffffL) != 0L || (active5 & 0xfffffff000000003L) != 0L || (active6 & 0xffffffffffffffffL) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffefffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfff8000001ffffffL) != 0L || (active11 & 0x9caffe4fdfffL) != 0L)
+ {
+ jjmatchedKind = 823;
return 78;
}
- if ((active0 & 0xfff0003ffffffff8L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fL) != 0L || (active3 & 0x7ffe0000000000L) != 0L || (active4 & 0xf0000000000L) != 0L || (active5 & 0xffffffffcL) != 0L || (active8 & 0x100000L) != 0L || (active11 & 0x31a800d80000L) != 0L || (active12 & 0x200000000L) != 0L)
- return 78;
- if ((active12 & 0x600000L) != 0L)
- return 11;
- if ((active12 & 0x40000000L) != 0L)
- return 79;
return -1;
case 1:
- if ((active12 & 0x90000000000L) != 0L)
- return 72;
- if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x4102a0110000L) != 0L)
- return 78;
- if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x3efd5feeffffL) != 0L)
+ if ((active0 & 0xffe7fff001fffff0L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0xffffffffffffffffL) != 0L || (active3 & 0xfffe7dffffffffffL) != 0L || (active4 & 0xeffffeffe000000fL) != 0L || (active5 & 0x7ff83ffffffffffbL) != 0L || (active6 & 0xffffffffffffc1c6L) != 0L || (active7 & 0xffffffffffffffffL) != 0L || (active8 & 0xffffffffffffffffL) != 0L || (active9 & 0xffffffffffffffffL) != 0L || (active10 & 0xfffffffffffffffcL) != 0L || (active11 & 0x7dfabfddffffL) != 0L)
{
if (jjmatchedPos != 1)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 1;
}
return 78;
}
+ if ((active12 & 0x480000000000L) != 0L)
+ return 72;
+ if ((active0 & 0x8000ffe000000L) != 0L || (active3 & 0x1800000000000L) != 0L || (active4 & 0x100000001ffffff0L) != 0L || (active5 & 0x8007c00000000000L) != 0L || (active6 & 0x3e39L) != 0L || (active10 & 0x3L) != 0L || (active11 & 0x820540220000L) != 0L)
+ return 78;
return -1;
case 2:
- if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0x57fffffeefffL) != 0L)
+ if ((active0 & 0xffe7bfdef5e98c80L) != 0L || (active1 & 0xffffffffffffffffL) != 0L || (active2 & 0x3fe5fffffe10ffffL) != 0L || (active3 & 0xfbff5dff0fff3ffcL) != 0L || (active4 & 0xefffd0fffd03ffefL) != 0L || (active5 & 0x7ffbafffc07ff3f3L) != 0L || (active6 & 0xfffee03fffbc7de5L) != 0L || (active7 & 0xfff87ffffffff1ffL) != 0L || (active8 & 0x1ffe3ffffL) != 0L || (active9 & 0xfffffeffffc00000L) != 0L || (active10 & 0xfffffffffffffffeL) != 0L || (active11 & 0xaffffffddfffL) != 0L)
{
if (jjmatchedPos != 2)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 2;
}
return 78;
}
- if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x280000001000L) != 0L)
+ if ((active0 & 0x402008167370L) != 0L || (active2 & 0xc01a000001ef0000L) != 0L || (active3 & 0x4002000f000c003L) != 0L || (active4 & 0x2e0000fc0000L) != 0L || (active5 & 0x410003f800c08L) != 0L || (active6 & 0x11fc000438012L) != 0L || (active7 & 0x7800000000e00L) != 0L || (active8 & 0xfffffffe001c0000L) != 0L || (active9 & 0x100003fffffL) != 0L || (active11 & 0x500000002000L) != 0L)
return 78;
return -1;
case 3:
- if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0x5ffda0fffef1fffeL) != 0L || (active11 & 0x7fe7fefe0c38L) != 0L)
- {
- if (jjmatchedPos != 3)
- {
- jjmatchedKind = 820;
- jjmatchedPos = 3;
- }
- return 78;
- }
if ((active2 & 0x8000000000000000L) != 0L)
{
if (jjmatchedPos != 3)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 3;
}
return 80;
}
- if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0xa0025f00010e0000L) != 0L || (active11 & 0x180100e3c7L) != 0L)
+ if ((active0 & 0xcc62800004000000L) != 0L || (active1 & 0x20c000000047fcL) != 0L || (active2 & 0xa2003c00008ffc0L) != 0L || (active3 & 0x1a01006800001800L) != 0L || (active4 & 0x63b00ffe0800000L) != 0L || (active5 & 0x1e0a03200000000L) != 0L || (active6 & 0x4008018003c0064L) != 0L || (active7 & 0x40100000000f0L) != 0L || (active8 & 0xb280280L) != 0L || (active9 & 0x7ff4000000400000L) != 0L || (active10 & 0x4004be00010e0000L) != 0L || (active11 & 0x300201c78fL) != 0L)
return 78;
+ if ((active0 & 0x33853fdef1e9ece0L) != 0L || (active1 & 0xffdf3fffffffb803L) != 0L || (active2 & 0x35c5fc3fffd6003fL) != 0L || (active3 & 0xe1fe5d97efffa7ffL) != 0L || (active4 & 0xe9c4dc001d7bffefL) != 0L || (active5 & 0x7e1b0fcdf77ffbf3L) != 0L || (active6 & 0xfbfe7fa7ff837d81L) != 0L || (active7 & 0xfffb7efffffffd0fL) != 0L || (active8 & 0xfffffffdf4d3fd7fL) != 0L || (active9 & 0x800bfeffffbfffffL) != 0L || (active10 & 0xbffb41fffef1fffeL) != 0L || (active11 & 0xffcffdfc1870L) != 0L)
+ {
+ if (jjmatchedPos != 3)
+ {
+ jjmatchedKind = 823;
+ jjmatchedPos = 3;
+ }
+ return 78;
+ }
return -1;
case 4:
if ((active2 & 0x8000000000000000L) != 0L)
{
if (jjmatchedPos != 4)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 4;
}
return 80;
}
- if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x1da0a060001000L) != 0L || (active11 & 0x430022204809L) != 0L)
- return 78;
- if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0x5fe01e5f9ef5effeL) != 0L || (active11 & 0x3ce7ddde05b4L) != 0L)
+ if ((active0 & 0xb3c53c5ef00120e0L) != 0L || (active1 & 0xffcebffffffd37f9L) != 0L || (active2 & 0x25c5ffa7ffd6fe9fL) != 0L || (active3 & 0x61805d96e827b7abL) != 0L || (active4 & 0x5564cff1d7bc7efL) != 0L || (active5 & 0x7ecb09c4777f7801L) != 0L || (active6 & 0xebee5fa7ffba7181L) != 0L || (active7 & 0x1bfb7e3ffdfffd07L) != 0L || (active8 & 0xfffffffdd4c3fd7eL) != 0L || (active9 & 0xffca3efefc3fffffL) != 0L || (active10 & 0xbfc03cbf9ef5effeL) != 0L || (active11 & 0x79cfbbbc0b68L) != 0L)
{
if (jjmatchedPos != 4)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 4;
}
return 78;
}
+ if ((active0 & 0x38001e8cc00L) != 0L || (active1 & 0x11000000028802L) != 0L || (active2 & 0x1000001800000020L) != 0L || (active3 & 0x907e000107d80054L) != 0L || (active4 & 0xe880900000003800L) != 0L || (active5 & 0x1100629800083f2L) != 0L || (active6 & 0x1010200000010c00L) != 0L || (active7 & 0xe40000c002000048L) != 0L || (active8 & 0x20100001L) != 0L || (active9 & 0x1c00103800000L) != 0L || (active10 & 0x3b414060001000L) != 0L || (active11 & 0x860044409012L) != 0L)
+ return 78;
return -1;
case 5:
if ((active2 & 0x8000000000000000L) != 0L)
{
if (jjmatchedPos != 5)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 5;
}
return 80;
}
- if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x8005880800000L) != 0L || (active11 & 0x1000a0L) != 0L)
- return 78;
- if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0x5ff01e071e75effeL) != 0L || (active11 & 0x3ce7dfee0514L) != 0L)
+ if ((active0 & 0xb3850f1cf1c02040L) != 0L || (active1 & 0xffc6bfffccfd37f9L) != 0L || (active2 & 0x25c0ffa41f96fe87L) != 0L || (active3 & 0x21341c86c9069603L) != 0L || (active4 & 0xc5164cff197b47e7L) != 0L || (active5 & 0x344b09c414773be1L) != 0L || (active6 & 0x6bee57a6ffb83800L) != 0L || (active7 & 0xc1fb7a001dfffd07L) != 0L || (active8 & 0xfffffffdc4433c61L) != 0L || (active9 & 0xffcb84f6da3fffffL) != 0L || (active10 & 0xbfe03c171e75effeL) != 0L || (active11 & 0x79cfbfdc0a28L) != 0L)
{
if (jjmatchedPos != 5)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 5;
}
return 78;
}
+ if ((active0 & 0x403042000100a0L) != 0L || (active1 & 0x8000033000000L) != 0L || (active2 & 0x50003e0400018L) != 0L || (active3 & 0x40c04110202121a8L) != 0L || (active4 & 0x40000004008008L) != 0L || (active5 & 0x4a80000163084000L) != 0L || (active6 & 0x8000080100024181L) != 0L || (active7 & 0x1a00043fe0000000L) != 0L || (active8 & 0x1080c11eL) != 0L || (active9 & 0x3a0824000000L) != 0L || (active10 & 0x1000a880800000L) != 0L || (active11 & 0x200140L) != 0L)
+ return 78;
return -1;
case 6:
- if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x40d01e001c340ffeL) != 0L || (active11 & 0x2426dffa0014L) != 0L)
+ if ((active0 & 0x80071cf1c02040L) != 0L || (active1 & 0x469ff1ee7937f8L) != 0L || (active2 & 0x2000ff841816fe90L) != 0L || (active3 & 0x2130188609020503L) != 0L || (active4 & 0xc4024cff107341c7L) != 0L || (active5 & 0x304b00c414770b80L) != 0L || (active6 & 0x62ec0004bfa80800L) != 0L || (active7 & 0xd1f3020f90befd00L) != 0L || (active8 & 0xffffff7dc400bc41L) != 0L || (active9 & 0x7fcbb4f6da3fffffL) != 0L || (active10 & 0x81a03c101c340ffeL) != 0L || (active11 & 0x484dbff40028L) != 0L)
{
if (jjmatchedPos != 6)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 6;
}
return 78;
@@ -21964,85 +21999,85 @@
{
if (jjmatchedPos != 6)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 6;
}
return 80;
}
- if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x1f2000070241e000L) != 0L || (active11 & 0x18c100040500L) != 0L)
+ if ((active0 & 0xb305080000000000L) != 0L || (active1 & 0xff80200e00840001L) != 0L || (active2 & 0x5c00020c7800007L) != 0L || (active3 & 0x40400c0049200L) != 0L || (active4 & 0x114000009080620L) != 0L || (active5 & 0x400090002003061L) != 0L || (active6 & 0x90257a240103100L) != 0L || (active7 & 0x878100d410007L) != 0L || (active8 & 0x8000430030L) != 0L || (active9 & 0x8000000000000000L) != 0L || (active10 & 0x3e4000070241e000L) != 0L || (active11 & 0x318200080a00L) != 0L)
return 78;
return -1;
case 7:
- if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0x50801e001c05cffaL) != 0L || (active11 & 0x24229bf80010L) != 0L)
+ if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0xa0001000300004L) != 0L || (active11 & 0x888040008L) != 0L)
+ return 78;
+ if ((active2 & 0x8000000000000000L) != 0L)
+ return 80;
+ if ((active0 & 0x2080071cf1c00000L) != 0L || (active1 & 0xff4683fdee7837f8L) != 0L || (active2 & 0x1802f0408160617L) != 0L || (active3 & 0x110080609000503L) != 0L || (active4 & 0xc40204ff103245c7L) != 0L || (active5 & 0x300b004000770380L) != 0L || (active6 & 0x60c00704bfa02000L) != 0L || (active7 & 0xd173700f8082fd00L) != 0L || (active8 & 0xffffe2740002ac01L) != 0L || (active9 & 0x7fc3b476da3ffe5fL) != 0L || (active10 & 0xa1003c001c05cffaL) != 0L || (active11 & 0x484537f00020L) != 0L)
{
if (jjmatchedPos != 7)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 7;
}
return 78;
}
- if ((active0 & 0x200000000002040L) != 0L || (active1 & 0x1c0000010000L) != 0L || (active2 & 0x2000d0801400f880L) != 0L || (active3 & 0x2020108000020000L) != 0L || (active4 & 0x480000410000L) != 0L || (active5 & 0x40008414002800L) != 0L || (active6 & 0x22c000000080800L) != 0L || (active7 & 0x800200103c0004L) != 0L || (active8 & 0x1d09c4001040L) != 0L || (active9 & 0x80080000001a0L) != 0L || (active10 & 0x50000000300004L) != 0L || (active11 & 0x444020004L) != 0L)
- return 78;
- if ((active2 & 0x8000000000000000L) != 0L)
- return 80;
return -1;
case 8:
- if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x10001e001805c87aL) != 0L || (active11 & 0x24208be80010L) != 0L)
+ if ((active0 & 0x20800310d1800000L) != 0L || (active1 & 0xff048bfc0e003008L) != 0L || (active2 & 0x1802f040810f417L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x40204ff00024004L) != 0L || (active5 & 0x3000004000770380L) != 0L || (active6 & 0x2008070400202000L) != 0L || (active7 & 0xd06270078082cc00L) != 0L || (active8 & 0xffff62758002a001L) != 0L || (active9 & 0x6081b016583fff59L) != 0L || (active10 & 0x20003c001805c87aL) != 0L || (active11 & 0x484117d00020L) != 0L)
{
if (jjmatchedPos != 8)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 8;
}
return 78;
}
- if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x4080000004000780L) != 0L || (active11 & 0x210100000L) != 0L)
+ if ((active0 & 0x40c20400000L) != 0L || (active1 & 0x420001e07807f0L) != 0L || (active2 & 0x60200L) != 0L || (active3 & 0x100080408000501L) != 0L || (active4 & 0xc0000000103005c3L) != 0L || (active5 & 0xb000000000000L) != 0L || (active6 & 0x40c00000bf800000L) != 0L || (active7 & 0x111000800003100L) != 0L || (active8 & 0x800000000c00L) != 0L || (active9 & 0x1f42046082000006L) != 0L || (active10 & 0x8100000004000780L) != 0L || (active11 & 0x420200000L) != 0L)
return 78;
return -1;
case 9:
- if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x1000000000040100L) != 0L || (active11 & 0x4200a800000L) != 0L)
- return 78;
- if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x1e001801cc7aL) != 0L || (active11 & 0x200081680010L) != 0L)
+ if ((active0 & 0x2080031001800000L) != 0L || (active1 & 0xff008a018e7023e8L) != 0L || (active2 & 0x1800d000000f017L) != 0L || (active3 & 0x10000201000002L) != 0L || (active4 & 0x8000001c00224006L) != 0L || (active5 & 0x3000000000370380L) != 0L || (active6 & 0x807043f000000L) != 0L || (active7 & 0x5060700780008800L) != 0L || (active8 & 0xffff22058002a001L) != 0L || (active9 & 0x7e013046103fff59L) != 0L || (active10 & 0x3c001801cc7aL) != 0L || (active11 & 0x400102d00020L) != 0L)
{
if (jjmatchedPos != 9)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 9;
}
return 78;
}
+ if ((active0 & 0x8d0000000L) != 0L || (active1 & 0x401fc00001400L) != 0L || (active2 & 0x220408100400L) != 0L || (active4 & 0x40204e300000000L) != 0L || (active5 & 0x2004000400000L) != 0L || (active6 & 0x2000000000202000L) != 0L || (active7 & 0x8002000000824400L) != 0L || (active8 & 0x407000000000L) != 0L || (active9 & 0x80801048000000L) != 0L || (active10 & 0x2000000000040100L) != 0L || (active11 & 0x84015000000L) != 0L)
+ return 78;
return -1;
case 10:
- if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x81400000L) != 0L)
+ if ((active0 & 0x80010000000000L) != 0L || (active1 & 0x2000030082000008L) != 0L || (active2 & 0x90000000010L) != 0L || (active3 & 0x201000000L) != 0L || (active4 & 0x1c00004002L) != 0L || (active5 & 0x300000L) != 0L || (active6 & 0x400000000L) != 0L || (active7 & 0x1020000000000800L) != 0L || (active8 & 0x1220000008000L) != 0L || (active9 & 0x1300410200608L) != 0L || (active10 & 0x8000878L) != 0L || (active11 & 0x102800000L) != 0L)
return 78;
- if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x1e001001c402L) != 0L || (active11 & 0x200000280010L) != 0L)
+ if ((active0 & 0x2000021001800000L) != 0L || (active1 & 0xdf0088e90c7023e0L) != 0L || (active2 & 0x18004000000f007L) != 0L || (active3 & 0x10000000000002L) != 0L || (active4 & 0x8000000200220004L) != 0L || (active5 & 0x3000000000070380L) != 0L || (active6 & 0x807003f000000L) != 0L || (active7 & 0x4040700780008000L) != 0L || (active8 & 0xfffe000580022001L) != 0L || (active9 & 0x7e000042001ff951L) != 0L || (active10 & 0x3c001001c402L) != 0L || (active11 & 0x400000500020L) != 0L)
{
if (jjmatchedPos != 10)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 10;
}
return 78;
}
return -1;
case 11:
- if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x1e0010014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x21001800000L) != 0L || (active1 & 0x450088e90c7003e0L) != 0L || (active2 & 0x18004000000f002L) != 0L || (active3 & 0x2L) != 0L || (active4 & 0x8000001200000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000080000000L) != 0L || (active9 & 0x7c0000420013e901L) != 0L || (active10 & 0x3c0010014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 11)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 11;
}
return 78;
}
- if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x80010L) != 0L)
+ if ((active0 & 0x2000000000000000L) != 0L || (active1 & 0x9a00000000002000L) != 0L || (active2 & 0x5L) != 0L || (active3 & 0x10000000000000L) != 0L || (active4 & 0x220000L) != 0L || (active5 & 0x2000000000040100L) != 0L || (active6 & 0x40000000000L) != 0L || (active7 & 0x40200000000000L) != 0L || (active8 & 0x500022001L) != 0L || (active9 & 0x2000000000c1050L) != 0L || (active10 & 0x8000L) != 0L || (active11 & 0x100020L) != 0L)
return 78;
return -1;
case 12:
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x1e0000014472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x450008e90c7003e0L) != 0L || (active2 & 0x18000000000e003L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x1000000000030280L) != 0L || (active6 & 0x803003f000000L) != 0L || (active7 & 0x4000500780008000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5800004200036801L) != 0L || (active10 & 0x3c0000014472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 12;
return 78;
}
@@ -22050,31 +22085,31 @@
return 78;
return -1;
case 13:
- if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x1e0000004472L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x4000000000200000L) != 0L || (active2 & 0x8000L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x10000L) != 0L || (active6 & 0x8000003000000L) != 0L || (active7 & 0x4000400000008000L) != 0L || (active9 & 0x800000000024000L) != 0L || (active10 & 0x10000L) != 0L)
+ return 78;
+ if ((active0 & 0x20001800000L) != 0L || (active1 & 0x50008e90c5003e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020280L) != 0L || (active6 & 0x3003c000000L) != 0L || (active7 & 0x100780000000L) != 0L || (active8 & 0xfffe000000000000L) != 0L || (active9 & 0x5000004200012801L) != 0L || (active10 & 0x3c0000004472L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 13;
return 78;
}
- if ((active1 & 0x4000000000200000L) != 0L || (active2 & 0x8000L) != 0L || (active4 & 0x8000001000000004L) != 0L || (active5 & 0x10000L) != 0L || (active6 & 0x8000003000000L) != 0L || (active7 & 0x4000400000008000L) != 0L || (active9 & 0x800000000024000L) != 0L || (active10 & 0x10000L) != 0L)
- return 78;
return -1;
case 14:
if ((active0 & 0x20000000000L) != 0L || (active1 & 0x100084800000200L) != 0L || (active5 & 0x280L) != 0L || (active6 & 0x30000000000L) != 0L || (active7 & 0x100100000000L) != 0L || (active8 & 0x8000000000000000L) != 0L || (active9 & 0x5000004200010000L) != 0L || (active10 & 0x4402L) != 0L)
return 78;
- if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1800000L) != 0L || (active1 & 0x40000a10c5001e0L) != 0L || (active2 & 0x180000000006003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7ffe000000000000L) != 0L || (active9 & 0x2801L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 14;
return 78;
}
return -1;
case 15:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x40000a0001001c0L) != 0L || (active2 & 0x6003L) != 0L || (active5 & 0x1000000000020000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x680000000L) != 0L || (active8 & 0x7fe0000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 15)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 15;
}
return 78;
@@ -22083,11 +22118,11 @@
return 78;
return -1;
case 16:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x4000020080001c0L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0xf1c000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 16)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 16;
}
return 78;
@@ -22098,9 +22133,9 @@
case 17:
if ((active1 & 0x2000000080L) != 0L || (active8 & 0x400000000000000L) != 0L)
return 78;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x1e0000000070L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x2bdc000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x3c0000000070L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 17;
return 78;
}
@@ -22108,20 +22143,20 @@
case 18:
if ((active8 & 0xb00000000000000L) != 0L || (active9 & 0x2800L) != 0L || (active10 & 0x10L) != 0L)
return 78;
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000140L) != 0L || (active2 & 0x100000000006002L) != 0L || (active5 & 0x20000L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x280000000L) != 0L || (active8 & 0x20dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
if (jjmatchedPos != 18)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 18;
}
return 78;
}
return -1;
case 19:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x400000008000040L) != 0L || (active2 & 0x100000000006002L) != 0L || (active6 & 0x3c000000L) != 0L || (active7 & 0x200000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 19;
return 78;
}
@@ -22129,29 +22164,29 @@
return 78;
return -1;
case 20:
- if ((active0 & 0x1000000L) != 0L || (active1 & 0x8000040L) != 0L || (active2 & 0x100000000000000L) != 0L || (active7 & 0x200000000L) != 0L)
- return 78;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x1e0000000060L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x6002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x3c0000000060L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 20;
return 78;
}
+ if ((active0 & 0x1000000L) != 0L || (active1 & 0x8000040L) != 0L || (active2 & 0x100000000000000L) != 0L || (active7 & 0x200000000L) != 0L)
+ return 78;
return -1;
case 21:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x3c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 21;
return 78;
}
- if ((active2 & 0x2000L) != 0L || (active10 & 0xc0000000020L) != 0L)
+ if ((active2 & 0x2000L) != 0L || (active10 & 0x180000000020L) != 0L)
return 78;
return -1;
case 22:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x120000000040L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22dc000000000000L) != 0L || (active10 & 0x240000000040L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 22;
return 78;
}
@@ -22159,39 +22194,39 @@
return 78;
return -1;
case 23:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x20000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x200000000040L) != 0L)
+ return 78;
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0x2c000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active10 & 0x40000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 23;
return 78;
}
- if ((active8 & 0x4000000000000L) != 0L || (active10 & 0x100000000040L) != 0L)
- return 78;
return -1;
case 24:
- if ((active6 & 0x20000000L) != 0L || (active10 & 0x20000000000L) != 0L)
- return 78;
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x200000200000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active6 & 0xc000000L) != 0L || (active8 & 0x22d8000000000000L) != 0L || (active11 & 0x400000400000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 24;
return 78;
}
+ if ((active6 & 0x20000000L) != 0L || (active10 & 0x40000000000L) != 0L)
+ return 78;
return -1;
case 25:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x4002L) != 0L || (active8 & 0x2c0000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 25;
return 78;
}
- if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x200000L) != 0L)
+ if ((active6 & 0xc000000L) != 0L || (active8 & 0x2018000000000000L) != 0L || (active11 & 0x400000L) != 0L)
return 78;
return -1;
case 26:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 26;
return 78;
}
@@ -22199,45 +22234,45 @@
return 78;
return -1;
case 27:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active8 & 0x200000000000000L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 27;
return 78;
}
return -1;
case 28:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active8 & 0x200000000000000L) != 0L)
+ return 78;
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 28;
return 78;
}
- if ((active8 & 0x200000000000000L) != 0L)
- return 78;
return -1;
case 29:
- if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active1 & 0x400000000000000L) != 0L || (active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 29;
return 78;
}
return -1;
case 30:
- if ((active1 & 0x400000000000000L) != 0L)
- return 78;
- if ((active2 & 0x2L) != 0L || (active11 & 0x200000000000L) != 0L)
+ if ((active2 & 0x2L) != 0L || (active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 30;
return 78;
}
+ if ((active1 & 0x400000000000000L) != 0L)
+ return 78;
return -1;
case 31:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 31;
return 78;
}
@@ -22245,9 +22280,9 @@
return 78;
return -1;
case 32:
- if ((active11 & 0x200000000000L) != 0L)
+ if ((active11 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 820;
+ jjmatchedKind = 823;
jjmatchedPos = 32;
return 78;
}
@@ -22273,74 +22308,76 @@
switch(curChar)
{
case 33:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000L);
case 34:
- return jjStartNfaWithStates_4(0, 798, 79);
+ return jjStartNfaWithStates_4(0, 799, 79);
case 36:
- return jjStartNfaWithStates_4(0, 801, 78);
+ return jjStartNfaWithStates_4(0, 804, 78);
case 37:
- return jjStopAtPos(0, 793);
+ return jjStopAtPos(0, 794);
+ case 38:
+ return jjStopAtPos(0, 802);
case 39:
- return jjStartNfaWithStates_4(0, 797, 58);
+ return jjStartNfaWithStates_4(0, 798, 58);
case 40:
- return jjStopAtPos(0, 766);
- case 41:
return jjStopAtPos(0, 767);
+ case 41:
+ return jjStopAtPos(0, 768);
case 42:
- jjmatchedKind = 791;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000000L);
- case 43:
- return jjStopAtPos(0, 788);
- case 44:
- return jjStopAtPos(0, 778);
- case 45:
- jjmatchedKind = 789;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000L);
- case 46:
- jjmatchedKind = 777;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
- case 47:
jjmatchedKind = 792;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x90000000000L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000000L);
+ case 43:
+ return jjStopAtPos(0, 789);
+ case 44:
+ return jjStopAtPos(0, 779);
+ case 45:
+ jjmatchedKind = 790;
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000L);
+ case 46:
+ jjmatchedKind = 778;
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L);
+ case 47:
+ jjmatchedKind = 793;
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x480000000000L);
case 58:
- jjmatchedKind = 783;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L);
+ jjmatchedKind = 784;
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000000L);
case 59:
- return jjStopAtPos(0, 776);
+ return jjStopAtPos(0, 777);
case 60:
- jjmatchedKind = 781;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x50000L);
+ jjmatchedKind = 782;
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000a0000L);
case 61:
- jjmatchedKind = 779;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
- case 62:
jjmatchedKind = 780;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L);
+ case 62:
+ jjmatchedKind = 781;
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L);
case 63:
- return jjStopAtPos(0, 782);
+ return jjStopAtPos(0, 783);
case 91:
- return jjStopAtPos(0, 774);
- case 93:
return jjStopAtPos(0, 775);
+ case 93:
+ return jjStopAtPos(0, 776);
case 94:
- return jjStopAtPos(0, 800);
+ return jjStopAtPos(0, 801);
case 65:
case 97:
jjmatchedKind = 3;
- return jjMoveStringLiteralDfa1_4(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x110000180000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x3ffffffff0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x220000300000L, 0x0L);
case 66:
case 98:
- return jjMoveStringLiteralDfa1_4(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0xfffc000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x80000L, 0x0L);
case 67:
case 99:
jjmatchedKind = 52;
- return jjMoveStringLiteralDfa1_4(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa000c00000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0xffe0000000000000L, 0xffffffffffffffffL, 0x3fL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x14001800000L, 0x0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x1ffffffffffffc0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000000L, 0x0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0xfe00000000000000L, 0x7ffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x20000000L, 0x0L);
case 70:
case 102:
return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x1fffff80000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
@@ -22353,67 +22390,67 @@
return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x1f80000000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xa0010000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0xe000000000000000L, 0x1fffffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x140020000L, 0x0L);
case 74:
case 106:
return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0xffe0000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 75:
case 107:
jjmatchedKind = 296;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x800000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0xe0000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000000L, 0x0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0xfffff00000000000L, 0x3L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
case 77:
case 109:
jjmatchedKind = 322;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x200000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffff8L, 0x0L, 0x0L, 0x100000L, 0x0L, 0x0L, 0x400000000000L, 0x0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffff000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x400000000L, 0x0L);
case 79:
case 111:
return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xf800000000000000L, 0x3fffffL, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x440000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffc00000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x880000000L, 0x0L);
case 81:
case 113:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x20000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7L, 0x0L, 0x0L, 0x0L, 0x40000000000L, 0x0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x80000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffffffffff8L, 0x0L, 0x0L, 0x0L, 0x100000000000L, 0x0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x45000000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xfff0000000000000L, 0xffffffffffefffffL, 0x3fffffffffffL, 0x0L, 0x8a000000000L, 0x0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x400000020000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xffffc00000000000L, 0x1ffffffL, 0x800000040000L, 0x0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3fffffe000000L, 0x0L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7fffffe000000L, 0x0L, 0x0L);
case 86:
case 118:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x3ffc000000000000L, 0x2000000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x7ff8000000000000L, 0x4000000L, 0x0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000000000000000L, 0xc200fffL, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000000000000L, 0x18401fffL, 0x0L);
case 88:
case 120:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2000L, 0x0L);
case 89:
case 121:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x6000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0xc000L, 0x0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000L, 0x0L);
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x10000L, 0x0L);
case 123:
- return jjStartNfaWithStates_4(0, 772, 77);
+ return jjStartNfaWithStates_4(0, 773, 77);
case 124:
- jjmatchedKind = 799;
- return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x4000000L);
+ jjmatchedKind = 800;
+ return jjMoveStringLiteralDfa1_4(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x8000000L);
case 125:
- return jjStopAtPos(0, 773);
+ return jjStopAtPos(0, 774);
default :
return jjMoveNfa_4(0, 0);
}
@@ -22428,55 +22465,59 @@
switch(curChar)
{
case 42:
- if ((active12 & 0x80000000000L) != 0L)
+ if ((active12 & 0x400000000000L) != 0L)
{
- jjmatchedKind = 811;
+ jjmatchedKind = 814;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x10000000000L);
+ return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0x80000000000L);
case 46:
- if ((active12 & 0x10000000L) != 0L)
- return jjStopAtPos(1, 796);
+ if ((active12 & 0x20000000L) != 0L)
+ return jjStopAtPos(1, 797);
break;
case 47:
- if ((active12 & 0x20000000000L) != 0L)
- return jjStopAtPos(1, 809);
+ if ((active12 & 0x100000000000L) != 0L)
+ return jjStopAtPos(1, 812);
break;
case 58:
- if ((active12 & 0x400000000L) != 0L)
- return jjStopAtPos(1, 802);
+ if ((active12 & 0x2000000000L) != 0L)
+ return jjStopAtPos(1, 805);
+ break;
+ case 60:
+ if ((active12 & 0x800000000L) != 0L)
+ return jjStopAtPos(1, 803);
break;
case 61:
- if ((active12 & 0x10000L) != 0L)
- return jjStopAtPos(1, 784);
- else if ((active12 & 0x20000L) != 0L)
+ if ((active12 & 0x20000L) != 0L)
return jjStopAtPos(1, 785);
- else if ((active12 & 0x80000L) != 0L)
- return jjStopAtPos(1, 787);
+ else if ((active12 & 0x40000L) != 0L)
+ return jjStopAtPos(1, 786);
+ else if ((active12 & 0x100000L) != 0L)
+ return jjStopAtPos(1, 788);
break;
case 62:
- if ((active12 & 0x40000L) != 0L)
- return jjStopAtPos(1, 786);
- else if ((active12 & 0x400000L) != 0L)
- return jjStopAtPos(1, 790);
- else if ((active12 & 0x8000000L) != 0L)
- return jjStopAtPos(1, 795);
+ if ((active12 & 0x80000L) != 0L)
+ return jjStopAtPos(1, 787);
+ else if ((active12 & 0x800000L) != 0L)
+ return jjStopAtPos(1, 791);
+ else if ((active12 & 0x10000000L) != 0L)
+ return jjStopAtPos(1, 796);
break;
case 65:
case 97:
- return jjMoveStringLiteralDfa2_4(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0x7fc000000000000L, active11, 0x200443c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x3fe0000000000000L, active1, 0L, active2, 0x2000000000fffc0L, active3, 0x80000000080000L, active4, 0x7f00020000000L, active5, 0x1f000000ff8L, active6, 0x3fffc00000L, active7, 0x1f0000000000018L, active8, 0L, active9, 0x1c00000000000L, active10, 0xff8000000000000L, active11, 0x400887880000L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa2_4(active0, 0x70L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa2_4(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x1000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x80L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x7000060000000000L, active6, 0L, active7, 0xfe00000000000000L, active8, 0x3L, active9, 0L, active10, 0L, active11, 0x2000000000L, active12, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa2_4(active0, 0x700L, active1, 0L, active2, 0L, active3, 0x2000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 69:
case 101:
- return jjMoveStringLiteralDfa2_4(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xd800000002000000L, active11, 0x84000026001L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0xc0000fc000000000L, active1, 0x1L, active2, 0x7fffff00000L, active3, 0x3c0000100000L, active4, 0xf80e0000000000L, active5, 0x3800000ff000L, active6, 0x1fc000000000L, active7, 0x3fffffffe0L, active8, 0xffffcL, active9, 0x2000000000000L, active10, 0xb000000002000000L, active11, 0x10800004c003L, active12, 0L);
case 70:
case 102:
if ((active5 & 0x8000000000000000L) != 0L)
@@ -22484,18 +22525,18 @@
jjmatchedKind = 383;
jjmatchedPos = 1;
}
- else if ((active11 & 0x10000L) != 0L)
- return jjStartNfaWithStates_4(1, 720, 78);
- return jjMoveStringLiteralDfa2_4(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000L, active12, 0L);
+ else if ((active11 & 0x20000L) != 0L)
+ return jjStartNfaWithStates_4(1, 721, 78);
+ return jjMoveStringLiteralDfa2_4(active0, 0x800L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x1L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
case 71:
case 103:
return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x4000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 72:
case 104:
- return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0xeL, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0xffeL, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x200000L, active9, 0xc000000000000L, active10, 0L, active11, 0x1cL, active12, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa2_4(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x2000000000000000L, active11, 0x8000001f0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x700000000000L, active1, 0L, active2, 0xf80000000000L, active3, 0x100000001e00000L, active4, 0xf00000000000000L, active5, 0x7f00000L, active6, 0x200000000000L, active7, 0x4000000000L, active8, 0x1d00000L, active9, 0xfff0000000000000L, active10, 0x4000000000000000L, active11, 0x10000003e0L, active12, 0L);
case 75:
case 107:
return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -22504,7 +22545,7 @@
return jjMoveStringLiteralDfa2_4(active0, 0x80000001f000L, active1, 0xf000L, active2, 0xc00000000000000L, active3, 0x8000400006000000L, active4, 0L, active5, 0L, active6, 0x1c00000000002L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x1000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0L, active2, 0x1000000000000000L, active3, 0L, active4, 0xfL, active5, 0L, active6, 0x4L, active7, 0L, active8, 0x4000000L, active9, 0L, active10, 0L, active11, 0x2000L, active12, 0L);
case 78:
case 110:
if ((active4 & 0x10L) != 0L)
@@ -22519,7 +22560,7 @@
jjmatchedKind = 387;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_4(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0xffc000000L, active11, 0x1000b0000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x60000L, active1, 0L, active2, 0xe000000000000000L, active3, 0x3L, active4, 0x1ffffe0L, active5, 0L, active6, 0x30L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1ffc000000L, active11, 0x200160000000L, active12, 0L);
case 79:
case 111:
if ((active3 & 0x800000000000L) != 0L)
@@ -22537,10 +22578,10 @@
jjmatchedKind = 640;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_4(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x40a300008200L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x3000000000000L, active1, 0x7ffffffff0000L, active2, 0x1f000000000000L, active3, 0x1e010001f8000000L, active4, 0xe000000040000000L, active5, 0x78003f8000003L, active6, 0x1e000000000000L, active7, 0x7ff0000000000L, active8, 0x18000000L, active9, 0L, active10, 0x2L, active11, 0x814600010400L, active12, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa2_4(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0x7000000000L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x80000L, active1, 0L, active2, 0L, active3, 0x4L, active4, 0L, active5, 0L, active6, 0x1c0L, active7, 0L, active8, 0x1e0000000L, active9, 0L, active10, 0xe000000000L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x8L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xfffffffe00000000L, active9, 0x7fffffL, active10, 0L, active11, 0L, active12, 0L);
@@ -22551,7 +22592,7 @@
jjmatchedKind = 393;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_4(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0xc200c00L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x4000001f00000L, active1, 0x18000000000000L, active2, 0x20000000000000L, active3, 0x7e003e00000010L, active4, 0L, active5, 0L, active6, 0x7fe0000000003c00L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3ffffcL, active11, 0x18401800L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x2000000L) != 0L)
@@ -22564,7 +22605,7 @@
jjmatchedKind = 281;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_4(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3f8000000000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0xfc000000L, active1, 0L, active2, 0L, active3, 0x20L, active4, 0xff9c000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x7f0000000000L, active11, 0x20000000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x100000000L) != 0L)
@@ -22572,10 +22613,10 @@
jjmatchedKind = 32;
jjmatchedPos = 1;
}
- return jjMoveStringLiteralDfa2_4(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x1c00000000000L, active11, 0x40000100000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0xe00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x18000000000000L, active6, 0x4000L, active7, 0L, active8, 0L, active9, 0x1ff800000L, active10, 0x3800000000000L, active11, 0x80000200000L, active12, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa2_4(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x2000000c00000L, active11, 0x20000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa2_4(active0, 0x1000000000L, active1, 0xffe0000000000000L, active2, 0x1fL, active3, 0x1c000000000L, active4, 0L, active5, 0x7e0000c00000000L, active6, 0x8000000000038000L, active7, 0x8000000000007L, active8, 0L, active9, 0x3fe00000000L, active10, 0x4000000c00000L, active11, 0x40000000000L, active12, 0L);
case 86:
case 118:
return jjMoveStringLiteralDfa2_4(active0, 0x2000000000L, active1, 0L, active2, 0L, active3, 0x40L, active4, 0L, active5, 0L, active6, 0x3c0000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -22588,8 +22629,8 @@
return jjStartNfaWithStates_4(1, 51, 78);
return jjMoveStringLiteralDfa2_4(active0, 0L, active1, 0L, active2, 0x1c0000000000020L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x3c0000000000L, active10, 0x1000000L, active11, 0L, active12, 0L);
case 124:
- if ((active12 & 0x4000000L) != 0L)
- return jjStopAtPos(1, 794);
+ if ((active12 & 0x8000000L) != 0L)
+ return jjStopAtPos(1, 795);
break;
default :
break;
@@ -22608,14 +22649,14 @@
switch(curChar)
{
case 43:
- if ((active12 & 0x10000000000L) != 0L)
- return jjStopAtPos(2, 808);
+ if ((active12 & 0x80000000000L) != 0L)
+ return jjStopAtPos(2, 811);
break;
case 65:
case 97:
if ((active0 & 0x100L) != 0L)
return jjStartNfaWithStates_4(2, 8, 78);
- return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x8000000ffcL, active11, 0x14100c006400L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0x137feL, active2, 0x80000100000L, active3, 0x6000600000000L, active4, 0x18000000000000L, active5, 0x3000L, active6, 0xc00000000000L, active7, 0x6000000000000e7L, active8, 0x24000004L, active9, 0x7800000L, active10, 0x10000000ffcL, active11, 0x28201800c800L, active12, 0L);
case 66:
case 98:
return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0x20000000020000L, active2, 0L, active3, 0L, active4, 0x100100000000000L, active5, 0L, active6, 0x8000000000000000L, active7, 0L, active8, 0L, active9, 0x1c07e00000000L, active10, 0x4000000L, active11, 0L, active12, 0L);
@@ -22628,7 +22669,7 @@
jjmatchedKind = 149;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x10c40000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0x2200000001c00020L, active3, 0x7a0L, active4, 0xe0000000000000e0L, active5, 0x1000000000100001L, active6, 0L, active7, 0x100L, active8, 0x78L, active9, 0x8000000000L, active10, 0x18000000L, active11, 0x21880000L, active12, 0L);
case 68:
case 100:
if ((active0 & 0x200L) != 0L)
@@ -22649,14 +22690,14 @@
return jjStartNfaWithStates_4(2, 385, 78);
else if ((active6 & 0x400000L) != 0L)
return jjStartNfaWithStates_4(2, 406, 78);
- return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x4000001020000000L, active11, 0x20000010L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0x3L, active4, 0x100L, active5, 0x30000000L, active6, 0x3c00L, active7, 0L, active8, 0L, active9, 0x18000000L, active10, 0x8000002020000000L, active11, 0x40000020L, active12, 0L);
case 69:
case 101:
if ((active0 & 0x100000L) != 0L)
return jjStartNfaWithStates_4(2, 20, 78);
else if ((active6 & 0x10L) != 0L)
return jjStartNfaWithStates_4(2, 388, 78);
- return jjMoveStringLiteralDfa3_4(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0xa0001f0000401000L, active11, 0x2000000000fL, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x4000010000000L, active1, 0x8000000000800L, active2, 0x400000000000000L, active3, 0x2100000800001840L, active4, 0L, active5, 0L, active6, 0x7e00000003c0040L, active7, 0L, active8, 0x1c0000080L, active9, 0x14000000000000L, active10, 0x40003e0000401000L, active11, 0x4000000001fL, active12, 0L);
case 70:
case 102:
if ((active7 & 0x200L) != 0L)
@@ -22664,14 +22705,14 @@
jjmatchedKind = 457;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_4(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x1c00000000000L, active11, 0x80000080000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x4000000000L, active1, 0L, active2, 0xfe000000L, active3, 0L, active4, 0x20000000000000L, active5, 0L, active6, 0x1L, active7, 0x70000000000c00L, active8, 0L, active9, 0L, active10, 0x3800000000000L, active11, 0x100000100000L, active12, 0L);
case 71:
case 103:
if ((active0 & 0x2000000000L) != 0L)
return jjStartNfaWithStates_4(2, 37, 78);
else if ((active4 & 0x200000000000L) != 0L)
return jjStartNfaWithStates_4(2, 301, 78);
- return jjMoveStringLiteralDfa3_4(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x138000000000L, active1, 0L, active2, 0x100000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40001ff000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000L, active12, 0L);
case 72:
case 104:
return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x8020000000000L, active6, 0x4000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -22679,7 +22720,7 @@
case 105:
if ((active6 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_4(2, 432, 78);
- return jjMoveStringLiteralDfa3_4(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x22000c007e000L, active11, 0x200800L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0xc000000000000000L, active1, 0L, active2, 0L, active3, 0x8000001000002000L, active4, 0x40000600L, active5, 0x10000000000000L, active6, 0x3800000000000004L, active7, 0x8000000000L, active8, 0x2000000L, active9, 0L, active10, 0x44000c007e000L, active11, 0x401000L, active12, 0L);
case 74:
case 106:
return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x800000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -22698,14 +22739,14 @@
jjmatchedKind = 545;
jjmatchedPos = 2;
}
- else if ((active11 & 0x1000L) != 0L)
- return jjStartNfaWithStates_4(2, 716, 78);
- return jjMoveStringLiteralDfa3_4(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x1c000000000000L, active11, 0xa82000000L, active12, 0L);
+ else if ((active11 & 0x2000L) != 0L)
+ return jjStartNfaWithStates_4(2, 717, 78);
+ return jjMoveStringLiteralDfa3_4(active0, 0x60000000006000L, active1, 0x3fc0000L, active2, 0x200000000L, active3, 0x200004008280000L, active4, 0L, active5, 0x1e0040400600000L, active6, 0x20L, active7, 0x70000600000L, active8, 0xfffffffc00000300L, active9, 0x3fffffL, active10, 0x38000000000000L, active11, 0x1504000000L, active12, 0L);
case 77:
case 109:
if ((active9 & 0x10000000000L) != 0L)
return jjStartNfaWithStates_4(2, 616, 78);
- return jjMoveStringLiteralDfa3_4(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x8000020000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x400L, active1, 0x4000003c000000L, active2, 0x1000000000000L, active3, 0L, active4, 0x800000000000003L, active5, 0x600003800004000L, active6, 0L, active7, 0L, active8, 0x8c00000L, active9, 0x7fe2040000000000L, active10, 0x800000L, active11, 0x10000040000L, active12, 0L);
case 78:
case 110:
if ((active5 & 0x800000L) != 0L)
@@ -22713,10 +22754,10 @@
jjmatchedKind = 343;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_4(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x2000008020L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x200000000000L, active1, 0x3fffc0000001L, active2, 0x1c0000400000000L, active3, 0x40000c8000400000L, active4, 0x40400000000800L, active5, 0x8041c7000000L, active6, 0L, active7, 0x8000000000018L, active8, 0x100400L, active9, 0x8000020000000000L, active10, 0xc00000000L, active11, 0x4000010040L, active12, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa3_4(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x100000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x1800204000000L, active1, 0x1000000000c000L, active2, 0x20000000000000L, active3, 0x78502006000004L, active4, 0xff9c001000L, active5, 0L, active6, 0x4000000000000000L, active7, 0xe000000000000000L, active8, 0x200001L, active9, 0L, active10, 0L, active11, 0x200000L, active12, 0L);
case 80:
case 112:
if ((active3 & 0x4000L) != 0L)
@@ -22728,7 +22769,7 @@
return jjStartNfaWithStates_4(2, 250, 78);
else if ((active5 & 0x8L) != 0L)
return jjStartNfaWithStates_4(2, 323, 78);
- return jjMoveStringLiteralDfa3_4(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x2201000002L, active11, 0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x80000L, active1, 0L, active2, 0x1000000800000000L, active3, 0x8000L, active4, 0x200cL, active5, 0L, active6, 0L, active7, 0x1800000L, active8, 0x800L, active9, 0L, active10, 0x4201000002L, active11, 0L, active12, 0L);
case 81:
case 113:
return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -22744,7 +22785,7 @@
jjmatchedKind = 422;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_4(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x1fe0000000000000L, active11, 0x4040000200L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x80040001e00000L, active1, 0xff80c00000000000L, active2, 0x300000001fL, active3, 0xe1800010L, active4, 0x800000000000L, active5, 0x3000200008000L, active6, 0x21f80ff800000L, active7, 0L, active8, 0xe002L, active9, 0xe0400000L, active10, 0x3fc0000000000000L, active11, 0x8080000400L, active12, 0L);
case 83:
case 115:
if ((active0 & 0x10L) != 0L)
@@ -22752,7 +22793,7 @@
jjmatchedKind = 4;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_4(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x4002000000L, active11, 0x400000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0xf00000060000060L, active1, 0L, active2, 0x800f3c000000000L, active3, 0x10000000000L, active4, 0x300000003c000L, active5, 0x80000070000L, active6, 0xc000f00000000L, active7, 0x3e000000L, active8, 0x30000L, active9, 0x380000000000L, active10, 0x9002000000L, active11, 0x800000000L, active12, 0L);
case 84:
case 116:
if ((active0 & 0x400000000000L) != 0L)
@@ -22778,7 +22819,7 @@
jjmatchedKind = 530;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_4(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x4000010001c0L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x3002081c00008880L, active1, 0L, active2, 0x4000000ffc0L, active3, 0x1000000170000L, active4, 0x4000000f80000L, active5, 0x60000180000803f0L, active6, 0x3000030180L, active7, 0x80001fc0000000L, active8, 0x80000L, active9, 0L, active10, 0L, active11, 0x800002000380L, active12, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0x1000000000000L, active2, 0x4000000000000L, active3, 0x1800000100000008L, active4, 0L, active5, 0L, active6, 0L, active7, 0x780000000000L, active8, 0x10000000L, active9, 0x8000000000000L, active10, 0x180000L, active11, 0L, active12, 0L);
@@ -22804,7 +22845,7 @@
jjmatchedKind = 330;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x200000000800L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L, active12, 0L);
case 89:
case 121:
if ((active0 & 0x40000L) != 0L)
@@ -22821,7 +22862,7 @@
jjmatchedKind = 297;
jjmatchedPos = 2;
}
- return jjMoveStringLiteralDfa3_4(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x10000000000L, active12, 0L);
+ return jjMoveStringLiteralDfa3_4(active0, 0x80000000L, active1, 0L, active2, 0xe0000L, active3, 0L, active4, 0xc0000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100000000L, active10, 0x200000L, active11, 0x20000000000L, active12, 0L);
case 90:
case 122:
return jjMoveStringLiteralDfa3_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000L, active9, 0L, active10, 0L, active11, 0L, active12, 0L);
@@ -22844,15 +22885,15 @@
case 45:
return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0x8000000000000000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 49:
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x800000000000L, active11, 0L);
- case 51:
return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1000000000000L, active11, 0L);
+ case 51:
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000000000L, active11, 0L);
case 56:
- if ((active10 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_4(3, 686, 78);
+ if ((active10 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_4(3, 687, 78);
break;
case 95:
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0x60000000200002L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x3L, active4, 0xc0000000000L, active5, 0x8000000000000L, active6, 0L, active7, 0x3000000000000L, active8, 0xffffffe000000000L, active9, 0x3fffffL, active10, 0xc0000000200002L, active11, 0x400000000000L);
case 65:
case 97:
if ((active2 & 0x40L) != 0L)
@@ -22862,14 +22903,14 @@
}
else if ((active4 & 0x20000000L) != 0L)
return jjStartNfaWithStates_4(3, 285, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x1400001000L, active11, 0x400041000000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0x3004200001e10000L, active1, 0xe000000000000L, active2, 0x1c1100006400080L, active3, 0x2400028L, active4, 0xe000000000000000L, active5, 0x20000000001L, active6, 0x3f800000L, active7, 0x200000L, active8, 0x800L, active9, 0L, active10, 0x2400001000L, active11, 0x800082000000L);
case 66:
case 98:
if ((active0 & 0x800000000000L) != 0L)
return jjStartNfaWithStates_4(3, 47, 78);
else if ((active1 & 0x4000L) != 0L)
return jjStartNfaWithStates_4(3, 78, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000800000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0x4000000000000L, active3, 0x400000000000L, active4, 0L, active5, 0x200000000004000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000800000L, active11, 0L);
case 67:
case 99:
if ((active2 & 0x4000000000L) != 0L)
@@ -22882,7 +22923,7 @@
jjmatchedKind = 203;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_4(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x100000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_4(active0, 0x300000000000000L, active1, 0x800L, active2, 0x238000000000L, active3, 0x8200101004L, active4, 0L, active5, 0x3f0L, active6, 0x40e0478100000000L, active7, 0L, active8, 0x1e0000000L, active9, 0x8200000000L, active10, 0x200000002000000L, active11, 0L);
case 68:
case 100:
if ((active3 & 0x200000000000000L) != 0L)
@@ -22897,9 +22938,9 @@
jjmatchedKind = 453;
jjmatchedPos = 3;
}
- else if ((active10 & 0x2000000000000L) != 0L)
- return jjStartNfaWithStates_4(3, 689, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x20L);
+ else if ((active10 & 0x4000000000000L) != 0L)
+ return jjStartNfaWithStates_4(3, 690, 78);
+ return jjMoveStringLiteralDfa4_4(active0, 0x80000000000000L, active1, 0x1c0000000L, active2, 0L, active3, 0x1000000000L, active4, 0x10000004000000L, active5, 0x40000000L, active6, 0L, active7, 0x40L, active8, 0L, active9, 0x20018000000L, active10, 0L, active11, 0x40L);
case 69:
case 101:
if ((active0 & 0x400000000000000L) != 0L)
@@ -22944,9 +22985,9 @@
return jjStartNfaWithStates_4(3, 659, 78);
else if ((active10 & 0x1000000L) != 0L)
return jjStartNfaWithStates_4(3, 664, 78);
- else if ((active11 & 0x8000L) != 0L)
- return jjStartNfaWithStates_4(3, 719, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0x6820000000L, active11, 0x20000000L);
+ else if ((active11 & 0x10000L) != 0L)
+ return jjStartNfaWithStates_4(3, 720, 78);
+ return jjMoveStringLiteralDfa4_4(active0, 0x20008820L, active1, 0x40000000000000L, active2, 0x4121800fe00L, active3, 0xc0040030180L, active4, 0x48410000078c803L, active5, 0x6c00002000000002L, active6, 0x10000000014c00L, active7, 0x1970000002c00c00L, active8, 0x400000100L, active9, 0x7fc0000020000000L, active10, 0xc820000000L, active11, 0x40000000L);
case 70:
case 102:
if ((active0 & 0x4000000L) != 0L)
@@ -22956,7 +22997,7 @@
break;
case 71:
case 103:
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x800001e000L, active11, 0x100000000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0x80000000000L, active3, 0L, active4, 0x40c00000000000L, active5, 0x8000L, active6, 0L, active7, 0x8L, active8, 0L, active9, 0L, active10, 0x1000001e000L, active11, 0x200000000L);
case 72:
case 104:
if ((active0 & 0x2000000000000L) != 0L)
@@ -22965,29 +23006,29 @@
return jjStartNfaWithStates_4(3, 185, 78);
else if ((active6 & 0x1000000000L) != 0L)
return jjStartNfaWithStates_4(3, 420, 78);
- else if ((active11 & 0x40L) != 0L)
+ else if ((active11 & 0x80L) != 0L)
{
- jjmatchedKind = 710;
+ jjmatchedKind = 711;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_4(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0xc00180L);
+ return jjMoveStringLiteralDfa4_4(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x80000L, active6, 0L, active7, 0x4000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x1800300L);
case 73:
case 105:
- return jjMoveStringLiteralDfa4_4(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x200000200000004L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0x138040000480L, active1, 0x2L, active2, 0x20e0800000L, active3, 0x80010000000000L, active4, 0x800000000000100L, active5, 0x8010000000L, active6, 0xc080000003180L, active7, 0L, active8, 0x402000L, active9, 0x40000000L, active10, 0x400001200000004L, active11, 0x100100000L);
case 75:
case 107:
if ((active7 & 0x10L) != 0L)
return jjStartNfaWithStates_4(3, 452, 78);
else if ((active8 & 0x80L) != 0L)
return jjStartNfaWithStates_4(3, 519, 78);
- else if ((active10 & 0x8000000000000000L) != 0L)
+ else if ((active11 & 0x1L) != 0L)
{
- jjmatchedKind = 703;
+ jjmatchedKind = 704;
jjmatchedPos = 3;
}
- else if ((active11 & 0x200L) != 0L)
- return jjStartNfaWithStates_4(3, 713, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x40001L);
+ else if ((active11 & 0x400L) != 0L)
+ return jjStartNfaWithStates_4(3, 714, 78);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x8000000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80002L);
case 76:
case 108:
if ((active0 & 0x20000000000000L) != 0L)
@@ -23009,9 +23050,9 @@
}
else if ((active7 & 0x80L) != 0L)
return jjStartNfaWithStates_4(3, 455, 78);
- else if ((active11 & 0x800000000L) != 0L)
- return jjStartNfaWithStates_4(3, 739, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x100000000000L);
+ else if ((active11 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_4(3, 740, 78);
+ return jjMoveStringLiteralDfa4_4(active0, 0x8041000000080000L, active1, 0xfd0000L, active2, 0x1100020L, active3, 0x8008600L, active4, 0x10000064L, active5, 0x1d0000000600000L, active6, 0x8000000000000000L, active7, 0x600060001000001L, active8, 0x4000000L, active9, 0x1c00100000000L, active10, 0L, active11, 0x200000000000L);
case 77:
case 109:
if ((active3 & 0x2000000000L) != 0L)
@@ -23021,7 +23062,7 @@
jjmatchedKind = 657;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_4(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0x280000000L, active1, 0x3c000000L, active2, 0x400000000000000L, active3, 0x100420000000L, active4, 0L, active5, 0x3000000000000L, active6, 0x800100000000000L, active7, 0L, active8, 0L, active9, 0x40400000000L, active10, 0x40000L, active11, 0x200000L);
case 78:
case 110:
if ((active4 & 0x40000000L) != 0L)
@@ -23037,28 +23078,28 @@
return jjStartNfaWithStates_4(3, 431, 78);
else if ((active9 & 0x4000000000000L) != 0L)
return jjStartNfaWithStates_4(3, 626, 78);
- else if ((active11 & 0x2L) != 0L)
+ else if ((active11 & 0x4L) != 0L)
{
- jjmatchedKind = 705;
+ jjmatchedKind = 706;
jjmatchedPos = 3;
}
- else if ((active11 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_4(3, 740, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x4000200100100ff8L, active11, 0x10000000004L);
+ else if ((active11 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_4(3, 741, 78);
+ return jjMoveStringLiteralDfa4_4(active0, 0x40010000000L, active1, 0x1000e00000000L, active2, 0L, active3, 0x2006000100000000L, active4, 0xff00000000L, active5, 0L, active6, 0L, active7, 0x8000000000000L, active8, 0L, active9, 0L, active10, 0x8000400100100ff8L, active11, 0x20000000008L);
case 79:
case 111:
if ((active3 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_4(3, 240, 78);
else if ((active4 & 0x800000L) != 0L)
return jjStartNfaWithStates_4(3, 279, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x200000000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0x4000006040L, active1, 0x20000L, active2, 0x2000000000060000L, active3, 0x4000000004000010L, active4, 0x1000008L, active5, 0x44000000000L, active6, 0x1000200000000000L, active7, 0x2000000000L, active8, 0x1aL, active9, 0L, active10, 0x5c000000L, active11, 0x400000000L);
case 80:
case 112:
if ((active2 & 0x20000000000000L) != 0L)
return jjStartNfaWithStates_4(3, 181, 78);
else if ((active8 & 0x2000000L) != 0L)
return jjStartNfaWithStates_4(3, 537, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x800c020400L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0x400000000000L, active3, 0L, active4, 0L, active5, 0x800000000L, active6, 0x100000000020000L, active7, 0xe000000004000000L, active8, 0x800001L, active9, 0x2000000000000L, active10, 0L, active11, 0x10018040800L);
case 81:
case 113:
return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000L, active11, 0L);
@@ -23084,17 +23125,17 @@
jjmatchedKind = 402;
jjmatchedPos = 3;
}
- else if ((active10 & 0x10000000000L) != 0L)
+ else if ((active10 & 0x20000000000L) != 0L)
{
- jjmatchedKind = 680;
+ jjmatchedKind = 681;
jjmatchedPos = 3;
}
- else if ((active11 & 0x2000L) != 0L)
+ else if ((active11 & 0x4000L) != 0L)
{
- jjmatchedKind = 717;
+ jjmatchedKind = 718;
jjmatchedPos = 3;
}
- return jjMoveStringLiteralDfa4_4(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x1e0000000000L, active11, 0xa0010004008L);
+ return jjMoveStringLiteralDfa4_4(active0, 0xc00000000L, active1, 0xff808000000007f8L, active2, 0x100000007L, active3, 0x1100000000040040L, active4, 0x100000000000080L, active5, 0x100000L, active6, 0x380000L, active7, 0x1ff006L, active8, 0x10000004L, active9, 0x8000000800000L, active10, 0x3c0000000000L, active11, 0x140020008010L);
case 83:
case 115:
if ((active2 & 0x80000L) != 0L)
@@ -23105,7 +23146,7 @@
return jjStartNfaWithStates_4(3, 531, 78);
else if ((active9 & 0x10000000000000L) != 0L)
return jjStartNfaWithStates_4(3, 628, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x1800000000400000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0x1003f00000b000L, active2, 0x400000018L, active3, 0x1882000L, active4, 0L, active5, 0x73000L, active6, 0x200000600000001L, active7, 0L, active8, 0x800030400L, active9, 0x7800000000L, active10, 0x3000000000400000L, active11, 0x800000000L);
case 84:
case 116:
if ((active0 & 0x800000000000000L) != 0L)
@@ -23125,27 +23166,27 @@
return jjStartNfaWithStates_4(3, 419, 78);
else if ((active9 & 0x400000L) != 0L)
return jjStartNfaWithStates_4(3, 598, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x42000200810L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0x1c0000000001L, active2, 0x1000800800000000L, active3, 0x80200000L, active4, 0x2000000030600L, active5, 0x80580000000L, active6, 0x20020c0000000L, active7, 0x780018000000L, active8, 0x20L, active9, 0x380007000000L, active10, 0L, active11, 0x84000401020L);
case 85:
case 117:
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x1c000000000000L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0x3000000L, active2, 0L, active3, 0x78000000000000L, active4, 0x3000L, active5, 0x1000010023000000L, active6, 0L, active7, 0x80001fe0000100L, active8, 0x101040L, active9, 0x80000000L, active10, 0x38000000000000L, active11, 0x4000000L);
case 86:
case 118:
if ((active6 & 0x400000000000000L) != 0L)
return jjStartNfaWithStates_4(3, 442, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x4000000000L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0x200000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0xc000L, active9, 0L, active10, 0L, active11, 0x8000000000L);
case 87:
case 119:
if ((active8 & 0x200000L) != 0L)
return jjStartNfaWithStates_4(3, 533, 78);
- else if ((active10 & 0x2000000000000000L) != 0L)
- return jjStartNfaWithStates_4(3, 701, 78);
+ else if ((active10 & 0x4000000000000000L) != 0L)
+ return jjStartNfaWithStates_4(3, 702, 78);
return jjMoveStringLiteralDfa4_4(active0, 0x80000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
if ((active6 & 0x20L) != 0L)
return jjStartNfaWithStates_4(3, 389, 78);
- return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x400000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa4_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x8000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000000000000L, active10, 0x800000000000000L, active11, 0L);
default :
break;
}
@@ -23163,18 +23204,18 @@
switch(curChar)
{
case 50:
+ if ((active10 & 0x2000000000000L) != 0L)
+ return jjStartNfaWithStates_4(4, 689, 78);
+ break;
+ case 54:
if ((active10 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_4(4, 688, 78);
break;
- case 54:
- if ((active10 & 0x800000000000L) != 0L)
- return jjStartNfaWithStates_4(4, 687, 78);
- break;
case 95:
- return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x1e0000040000L, active11, 0xd000000L);
+ return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0x40000000000008L, active2, 0x600L, active3, 0x200000000L, active4, 0x40200ff00000000L, active5, 0L, active6, 0L, active7, 0x700000001ff000L, active8, 0L, active9, 0xc0000000000000L, active10, 0x3c0000040000L, active11, 0x1a000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa5_4(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x200000002000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_4(active0, 0x300000000000000L, active1, 0xc000c7c07f0L, active2, 0x400001000000L, active3, 0x100401020048000L, active4, 0x100000010030000L, active5, 0x43000044070800L, active6, 0x900000100000000L, active7, 0x200000009c00000L, active8, 0x1000002000L, active9, 0x20020000000L, active10, 0x400000002000000L, active11, 0L);
case 66:
case 98:
if ((active5 & 0x40000000000L) != 0L)
@@ -23182,9 +23223,9 @@
return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0x80L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000L, active8, 0x3e000000000L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- if ((active11 & 0x10000000000L) != 0L)
- return jjStartNfaWithStates_4(4, 744, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x200000000000L);
+ if ((active11 & 0x20000000000L) != 0L)
+ return jjStartNfaWithStates_4(4, 745, 78);
+ return jjMoveStringLiteralDfa5_4(active0, 0x2000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x100L, active5, 0x800000000000000L, active6, 0L, active7, 0x1000000000000L, active8, 0xc0010000104L, active9, 0x80000000L, active10, 0x300000L, active11, 0x400000000000L);
case 68:
case 100:
if ((active3 & 0x100000000L) != 0L)
@@ -23231,21 +23272,21 @@
jjmatchedKind = 622;
jjmatchedPos = 4;
}
- else if ((active10 & 0x8000000000L) != 0L)
- return jjStartNfaWithStates_4(4, 679, 78);
- else if ((active10 & 0x4000000000000L) != 0L)
+ else if ((active10 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_4(4, 680, 78);
+ else if ((active10 & 0x8000000000000L) != 0L)
{
- jjmatchedKind = 690;
+ jjmatchedKind = 691;
jjmatchedPos = 4;
}
- else if ((active11 & 0x8L) != 0L)
- return jjStartNfaWithStates_4(4, 707, 78);
- else if ((active11 & 0x800L) != 0L)
+ else if ((active11 & 0x10L) != 0L)
+ return jjStartNfaWithStates_4(4, 708, 78);
+ else if ((active11 & 0x1000L) != 0L)
{
- jjmatchedKind = 715;
+ jjmatchedKind = 716;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_4(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x4018000000000000L, active11, 0x80002e00004L);
+ return jjMoveStringLiteralDfa5_4(active0, 0x41080000000000L, active1, 0xff80a00e00810000L, active2, 0x8400000500000007L, active3, 0x100400200000L, active4, 0x8000084L, active5, 0x200000000404000L, active6, 0x426007a000000001L, active7, 0xc000000004000000L, active8, 0xd001L, active9, 0x1bc881a000000L, active10, 0x8030000000000000L, active11, 0x100005c00008L);
case 70:
case 102:
if ((active2 & 0x1000000000L) != 0L)
@@ -23253,9 +23294,9 @@
return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0x60000L, active3, 0x1L, active4, 0L, active5, 0x10000000L, active6, 0L, active7, 0L, active8, 0x800000000000L, active9, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_4(4, 685, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e000L, active11, 0x200000000L);
+ if ((active10 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_4(4, 686, 78);
+ return jjMoveStringLiteralDfa5_4(active0, 0x40000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x80000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100001e000L, active11, 0x400000000L);
case 72:
case 104:
if ((active2 & 0x800000000L) != 0L)
@@ -23274,10 +23315,10 @@
jjmatchedKind = 351;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000000L, active11, 0x10L);
+ return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000003e0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000000L, active11, 0x20L);
case 73:
case 105:
- return jjMoveStringLiteralDfa5_4(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x1c80000000000000L, active11, 0x46100100080L);
+ return jjMoveStringLiteralDfa5_4(active0, 0x8080000e00000000L, active1, 0x1001f0000000L, active2, 0x1800000000000L, active3, 0x40000000L, active4, 0x10000000000600L, active5, 0x80080400200000L, active6, 0xa0824002c0000000L, active7, 0x8780000000001L, active8, 0x3fff0001c0030420L, active9, 0x8000000004000000L, active10, 0x3900000000000000L, active11, 0x8c200200100L);
case 75:
case 107:
if ((active1 & 0x800L) != 0L)
@@ -23298,9 +23339,9 @@
jjmatchedKind = 317;
jjmatchedPos = 4;
}
- else if ((active11 & 0x400000000000L) != 0L)
- return jjStartNfaWithStates_4(4, 750, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x40020000L);
+ else if ((active11 & 0x800000000000L) != 0L)
+ return jjStartNfaWithStates_4(4, 751, 78);
+ return jjMoveStringLiteralDfa5_4(active0, 0x3000000000000040L, active1, 0L, active2, 0x4100000100000L, active3, 0x8L, active4, 0xc000000000000000L, active5, 0x20000000L, active6, 0x180000L, active7, 0x20000000L, active8, 0xc000000004c00002L, active9, 0x200000001L, active10, 0x800006L, active11, 0x80040000L);
case 77:
case 109:
return jjMoveStringLiteralDfa5_4(active0, 0x80000000L, active1, 0x3000000L, active2, 0x1c0000000800000L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0x3f800000L, active7, 0x1800000000000000L, active8, 0L, active9, 0L, active10, 0x408000000L, active11, 0L);
@@ -23317,10 +23358,10 @@
return jjStartNfaWithStates_4(4, 65, 78);
else if ((active10 & 0x40000000L) != 0L)
return jjStartNfaWithStates_4(4, 670, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x80080000L);
+ return jjMoveStringLiteralDfa5_4(active0, 0x130000000020L, active1, 0L, active2, 0x800e0000000L, active3, 0x80000000010000L, active4, 0x4000L, active5, 0L, active6, 0x3000L, active7, 0x2000000000000L, active8, 0x18L, active9, 0x4000001eL, active10, 0x10000000L, active11, 0x100100000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa5_4(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x120L);
+ return jjMoveStringLiteralDfa5_4(active0, 0x41000000080L, active1, 0L, active2, 0x200000000018L, active3, 0x10008000000L, active4, 0x4000000L, active5, 0x8000180000L, active6, 0x80000000180L, active7, 0L, active8, 0L, active9, 0x2000000000000L, active10, 0x100000000L, active11, 0x240L);
case 80:
case 112:
if ((active3 & 0x8000000000000L) != 0L)
@@ -23328,7 +23369,7 @@
jjmatchedKind = 243;
jjmatchedPos = 4;
}
- return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x20000000000000L, active11, 0x400L);
+ return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x700000000001a2L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100000000000000L, active8, 0L, active9, 0L, active10, 0x40000000000000L, active11, 0x800L);
case 82:
case 114:
if ((active0 & 0x800L) != 0L)
@@ -23358,9 +23399,9 @@
return jjStartNfaWithStates_4(4, 444, 78);
else if ((active10 & 0x20000000L) != 0L)
return jjStartNfaWithStates_4(4, 669, 78);
- else if ((active10 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_4(4, 677, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x4000000000L, active11, 0L);
+ else if ((active10 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_4(4, 678, 78);
+ return jjMoveStringLiteralDfa5_4(active0, 0x204020000000L, active1, 0x6000000000000L, active2, 0x78018000000L, active3, 0x40000c0080020000L, active4, 0x4000000708008L, active5, 0x1400010000000000L, active6, 0x204800L, active7, 0x80001fd0000d00L, active8, 0x840L, active9, 0x20L, active10, 0x8000000000L, active11, 0L);
case 83:
case 115:
if ((active1 & 0x10000000000000L) != 0L)
@@ -23377,11 +23418,11 @@
return jjStartNfaWithStates_4(4, 454, 78);
else if ((active8 & 0x100000L) != 0L)
return jjStartNfaWithStates_4(4, 532, 78);
- else if ((active11 & 0x1L) != 0L)
- return jjStartNfaWithStates_4(4, 704, 78);
- else if ((active11 & 0x4000L) != 0L)
- return jjStartNfaWithStates_4(4, 718, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x40000800000ff8L, active11, 0L);
+ else if ((active11 & 0x2L) != 0L)
+ return jjStartNfaWithStates_4(4, 705, 78);
+ else if ((active11 & 0x8000L) != 0L)
+ return jjStartNfaWithStates_4(4, 719, 78);
+ return jjMoveStringLiteralDfa5_4(active0, 0x10000000L, active1, 0x3000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x4000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f08000000000040L, active10, 0x80000800000ff8L, active11, 0L);
case 84:
case 116:
if ((active1 & 0x1000000000000L) != 0L)
@@ -23414,10 +23455,10 @@
return jjStartNfaWithStates_4(4, 599, 78);
else if ((active10 & 0x1000L) != 0L)
return jjStartNfaWithStates_4(4, 652, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x1000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0x803f000000000L, active2, 0x20000f800L, active3, 0x2004008001002000L, active4, 0x40080000000000L, active5, 0x6000000003000001L, active6, 0xc000400000000L, active7, 0x200006L, active8, 0x800000000L, active9, 0x70000fff80L, active10, 0x2000000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x8000040000L);
+ return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0x1L, active2, 0x6000000L, active3, 0x1600L, active4, 0x400000000060L, active5, 0x3000L, active6, 0x100000020000L, active7, 0x40000000000L, active8, 0L, active9, 0x400000000L, active10, 0x84000000L, active11, 0x10000080000L);
case 86:
case 118:
return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0x2000000000L, active3, 0L, active4, 0L, active5, 0x8000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x300000L, active10, 0x200000000L, active11, 0L);
@@ -23425,11 +23466,11 @@
case 119:
if ((active0 & 0x4000L) != 0L)
return jjStartNfaWithStates_4(4, 14, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x800000000L);
case 88:
case 120:
- if ((active11 & 0x20000000L) != 0L)
- return jjStartNfaWithStates_4(4, 733, 78);
+ if ((active11 & 0x40000000L) != 0L)
+ return jjStartNfaWithStates_4(4, 734, 78);
return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0L, active10, 0L, active11, 0L);
case 89:
case 121:
@@ -23444,9 +23485,9 @@
return jjStartNfaWithStates_4(4, 188, 78);
else if ((active3 & 0x40L) != 0L)
return jjStartNfaWithStates_4(4, 198, 78);
- else if ((active11 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_4(4, 745, 78);
- return jjMoveStringLiteralDfa5_4(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100010000000L);
+ else if ((active11 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_4(4, 746, 78);
+ return jjMoveStringLiteralDfa5_4(active0, 0x1c10000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200020000000L);
case 90:
case 122:
return jjMoveStringLiteralDfa5_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x6000000000000000L, active10, 0L, active11, 0L);
@@ -23467,7 +23508,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa6_4(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x10000000000000L, active11, 0x2e00010L);
+ return jjMoveStringLiteralDfa6_4(active0, 0x30001c00000L, active1, 0x6000000002000L, active2, 0x400000000L, active3, 0x10000401000000L, active4, 0L, active5, 0x2000000000000380L, active6, 0L, active7, 0xc000000000000000L, active8, 0x1L, active9, 0x800000000000L, active10, 0x20000000000000L, active11, 0x5c00020L);
case 65:
case 97:
if ((active7 & 0x800000000000000L) != 0L)
@@ -23475,7 +23516,7 @@
jjmatchedKind = 507;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_4(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x140000000740078L, active11, 0x20000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0x1000000002000L, active1, 0L, active2, 0x800080L, active3, 0xc0080000002L, active4, 0x4400308000700L, active5, 0x8010000000000L, active6, 0x40183000L, active7, 0x1000020000003000L, active8, 0x100800400800L, active9, 0x200300000L, active10, 0x280000000740078L, active11, 0x40000L);
case 66:
case 98:
return jjMoveStringLiteralDfa6_4(active0, 0xc00000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x40000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -23490,7 +23531,7 @@
return jjStartNfaWithStates_4(5, 447, 78);
else if ((active9 & 0x4000000L) != 0L)
return jjStartNfaWithStates_4(5, 602, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x4000100000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0xe008007f0L, active2, 0L, active3, 0x40000L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000005004000L, active8, 0x400000000L, active9, 0x6L, active10, 0L, active11, 0x8000200000L);
case 68:
case 100:
if ((active0 & 0x40000000000000L) != 0L)
@@ -23506,7 +23547,7 @@
jjmatchedKind = 515;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_4(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x1e0010000000L, active11, 0L);
+ return jjMoveStringLiteralDfa6_4(active0, 0x300000000000000L, active1, 0x40000000000000L, active2, 0x200L, active3, 0x600L, active4, 0x60L, active5, 0L, active6, 0x4060000000000000L, active7, 0x80000000000000L, active8, 0x10L, active9, 0x48000000000000L, active10, 0x3c0010000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x4000000000L) != 0L)
@@ -23547,9 +23588,9 @@
return jjStartNfaWithStates_4(5, 663, 78);
else if ((active10 & 0x80000000L) != 0L)
return jjStartNfaWithStates_4(5, 671, 78);
- else if ((active10 & 0x1000000000L) != 0L)
- return jjStartNfaWithStates_4(5, 676, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x80000400L);
+ else if ((active10 & 0x2000000000L) != 0L)
+ return jjStartNfaWithStates_4(5, 677, 78);
+ return jjMoveStringLiteralDfa6_4(active0, 0x80080000000L, active1, 0L, active2, 0x20c0000000L, active3, 0x4000000000000L, active4, 0x40401080000L, active5, 0x4002000060L, active6, 0x3f800000L, active7, 0xc06L, active8, 0x200000000000L, active9, 0x8000000020L, active10, 0x40001e002L, active11, 0x100000800L);
case 70:
case 102:
if ((active5 & 0x80000000000000L) != 0L)
@@ -23559,20 +23600,20 @@
case 103:
if ((active3 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_4(5, 247, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x200000000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x40000000L, active4, 0L, active5, 0x70000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x40000000L, active10, 0L, active11, 0x400000000L);
case 72:
case 104:
if ((active4 & 0x40000000000000L) != 0L)
return jjStartNfaWithStates_4(5, 310, 78);
else if ((active8 & 0x4L) != 0L)
return jjStartNfaWithStates_4(5, 514, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x400000000L, active7, 0L, active8, 0x40000000000L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 73:
case 105:
- return jjMoveStringLiteralDfa6_4(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0x10000000L, active1, 0xc0000001000L, active2, 0x21c003800000f800L, active3, 0x2020008000008000L, active4, 0x3L, active5, 0x400000010000000L, active6, 0xc000000200800L, active7, 0x10208000L, active8, 0xe004000040L, active9, 0x1000000380L, active10, 0x4L, active11, 0x100000L);
case 75:
case 107:
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x4000000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x8000000L);
case 76:
case 108:
if ((active3 & 0x400000000000L) != 0L)
@@ -23581,7 +23622,7 @@
return jjStartNfaWithStates_4(5, 416, 78);
else if ((active8 & 0x2L) != 0L)
return jjStartNfaWithStates_4(5, 513, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x40000000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0x8L, active2, 0x100006000000L, active3, 0L, active4, 0L, active5, 0x3000004000800L, active6, 0x2000000000000000L, active7, 0L, active8, 0x890000002000L, active9, 0x400000000L, active10, 0xe00L, active11, 0x80000000L);
case 77:
case 109:
if ((active9 & 0x20000000L) != 0L)
@@ -23615,17 +23656,17 @@
jjmatchedKind = 478;
jjmatchedPos = 5;
}
- else if ((active11 & 0x80L) != 0L)
- return jjStartNfaWithStates_4(5, 711, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0x680000004000000L, active11, 0x2100000000L);
+ else if ((active11 & 0x100L) != 0L)
+ return jjStartNfaWithStates_4(5, 712, 78);
+ return jjMoveStringLiteralDfa6_4(active0, 0x8080000040000000L, active1, 0xff8010000e000000L, active2, 0x400a00000000007L, active3, 0x20000L, active4, 0x10000000030000L, active5, 0x88000400000L, active6, 0x478200000100L, active7, 0x8781f80000000L, active8, 0x3fff000000001000L, active9, 0x8000000000000000L, active10, 0xd00001004000000L, active11, 0x4200000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa6_4(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x1820000200000000L, active11, 0x400000000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0x3000000000000000L, active1, 0L, active2, 0x80000100000L, active3, 0L, active4, 0x1800000000L, active5, 0x1L, active6, 0x2000000000000L, active7, 0x161000000000000L, active8, 0xc000420000030020L, active9, 0x6000000000000001L, active10, 0x3040000200000000L, active11, 0x800000000L);
case 80:
case 112:
if ((active7 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_4(5, 490, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x10040000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x2000000L, active11, 0x20080000L);
case 81:
case 113:
return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -23649,7 +23690,7 @@
jjmatchedKind = 526;
jjmatchedPos = 5;
}
- return jjMoveStringLiteralDfa6_4(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0x1000000000L, active1, 0x23f000000001L, active2, 0x19000010L, active3, 0x100000000000001L, active4, 0x500000000000000L, active5, 0x1000000000003000L, active6, 0xb00002000000000L, active7, 0x8010000L, active8, 0x1000008000L, active9, 0x2006000000000L, active10, 0L, active11, 0x2000000L);
case 83:
case 115:
if ((active0 & 0x10000L) != 0L)
@@ -23666,9 +23707,9 @@
return jjStartNfaWithStates_4(5, 382, 78);
else if ((active6 & 0x4000L) != 0L)
return jjStartNfaWithStates_4(5, 398, 78);
- else if ((active10 & 0x8000000000000L) != 0L)
- return jjStartNfaWithStates_4(5, 691, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x4000000000000000L, active11, 0xc0000000000L);
+ else if ((active10 & 0x10000000000000L) != 0L)
+ return jjStartNfaWithStates_4(5, 692, 78);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0x800000010000L, active2, 0L, active3, 0x200000000L, active4, 0x4000304000L, active5, 0x400300000L, active6, 0x80000000000000L, active7, 0x5e0100L, active8, 0L, active9, 0x10000000ffc00L, active10, 0x8000000000000000L, active11, 0x180000000000L);
case 84:
case 116:
if ((active0 & 0x20L) != 0L)
@@ -23705,21 +23746,21 @@
return jjStartNfaWithStates_4(5, 611, 78);
else if ((active10 & 0x800000000L) != 0L)
return jjStartNfaWithStates_4(5, 675, 78);
- else if ((active10 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_4(5, 678, 78);
- return jjMoveStringLiteralDfa6_4(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x8000000000L);
+ else if ((active10 & 0x8000000000L) != 0L)
+ return jjStartNfaWithStates_4(5, 679, 78);
+ return jjMoveStringLiteralDfa6_4(active0, 0x4000020000000L, active1, 0x1e07c0000L, active2, 0x400000000400L, active3, 0x100000001100L, active4, 0xc000000010000000L, active5, 0L, active6, 0x100080000000L, active7, 0x800000L, active8, 0x400L, active9, 0x1f80040080000000L, active10, 0L, active11, 0x10000000000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa6_4(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x100L);
+ return jjMoveStringLiteralDfa6_4(active0, 0x40000000040L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x8L, active10, 0L, active11, 0x200L);
case 86:
case 118:
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x8000004L);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000400000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x18000010L, active10, 0L, active11, 0x10000008L);
case 87:
case 119:
if ((active4 & 0x4000000L) != 0L)
return jjStartNfaWithStates_4(5, 282, 78);
- else if ((active11 & 0x20L) != 0L)
- return jjStartNfaWithStates_4(5, 709, 78);
+ else if ((active11 & 0x40L) != 0L)
+ return jjStartNfaWithStates_4(5, 710, 78);
return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0x20000L, active3, 0x8000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000L, active11, 0L);
case 88:
case 120:
@@ -23737,7 +23778,7 @@
return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0x40000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000000L);
+ return jjMoveStringLiteralDfa6_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
default :
break;
}
@@ -23759,13 +23800,13 @@
return jjStartNfaWithStates_4(6, 464, 78);
break;
case 95:
- return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0x8000L, active9, 0x300058000000L, active10, 0L, active11, 0x100000000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa7_4(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x80000000000e00L, active11, 0x200008000000L);
+ return jjMoveStringLiteralDfa7_4(active0, 0x80000000400000L, active1, 0x1f000000000L, active2, 0x8000000L, active3, 0x20001L, active4, 0x2008000400003L, active5, 0x8000000000L, active6, 0L, active7, 0x90000000800000L, active8, 0x40000000000L, active9, 0x1f0b000000000070L, active10, 0x100000000000e00L, active11, 0x400010000000L);
case 66:
case 98:
- return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0L, active2, 0x8000000000L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x20L);
case 67:
case 99:
if ((active2 & 0x40000000000000L) != 0L)
@@ -23788,7 +23829,7 @@
return jjStartNfaWithStates_4(6, 325, 78);
else if ((active10 & 0x400000000L) != 0L)
return jjStartNfaWithStates_4(6, 674, 78);
- return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x4000000004000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0xc000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x200000L, active7, 0L, active8, 0L, active9, 0x8000000000L, active10, 0x8000000004000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x100000000000000L) != 0L)
@@ -23826,13 +23867,13 @@
}
else if ((active10 & 0x2000000L) != 0L)
return jjStartNfaWithStates_4(6, 665, 78);
- else if ((active11 & 0x4000000000L) != 0L)
- return jjStartNfaWithStates_4(6, 742, 78);
else if ((active11 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_4(6, 743, 78);
- else if ((active11 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_4(6, 748, 78);
- return jjMoveStringLiteralDfa7_4(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x1e0000000000L, active11, 0x45000004L);
+ else if ((active11 & 0x10000000000L) != 0L)
+ return jjStartNfaWithStates_4(6, 744, 78);
+ else if ((active11 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_4(6, 749, 78);
+ return jjMoveStringLiteralDfa7_4(active0, 0x200000000000000L, active1, 0x8L, active2, 0x8000000010060000L, active3, 0x200000000L, active4, 0x400000000300084L, active5, 0x1000000410372000L, active6, 0x2020000000000000L, active7, 0x700780000000L, active8, 0x400000000L, active9, 0x2000000L, active10, 0x3c1000000000L, active11, 0x8a000008L);
case 70:
case 102:
return jjMoveStringLiteralDfa7_4(active0, 0x10000000000L, active1, 0x1000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -23855,21 +23896,21 @@
return jjStartNfaWithStates_4(6, 430, 78);
else if ((active7 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_4(6, 499, 78);
- else if ((active10 & 0x400000000000000L) != 0L)
- return jjStartNfaWithStates_4(6, 698, 78);
- else if ((active11 & 0x100000000L) != 0L)
- return jjStartNfaWithStates_4(6, 736, 78);
- return jjMoveStringLiteralDfa7_4(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
+ else if ((active10 & 0x800000000000000L) != 0L)
+ return jjStartNfaWithStates_4(6, 699, 78);
+ else if ((active11 & 0x200000000L) != 0L)
+ return jjStartNfaWithStates_4(6, 737, 78);
+ return jjMoveStringLiteralDfa7_4(active0, 0x2000000000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x2000000000L, active9, 0L, active10, 0L, active11, 0x800000L);
case 72:
case 104:
if ((active0 & 0x4000000000000L) != 0L)
return jjStartNfaWithStates_4(6, 50, 78);
- else if ((active11 & 0x80000000000L) != 0L)
- return jjStartNfaWithStates_4(6, 747, 78);
+ else if ((active11 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_4(6, 748, 78);
return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa7_4(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x200100000L);
+ return jjMoveStringLiteralDfa7_4(active0, 0x1020000000L, active1, 0x400001c0780000L, active2, 0x40000000200L, active3, 0x8000500L, active4, 0xc000000010004040L, active5, 0x3000000000000L, active6, 0xc0000080000000L, active7, 0x100000800000100L, active8, 0x1c0002400L, active9, 0x400060000ffc00L, active10, 0x18000000L, active11, 0x400200000L);
case 76:
case 108:
if ((active2 & 0x800000L) != 0L)
@@ -23895,7 +23936,7 @@
return jjMoveStringLiteralDfa7_4(active0, 0x40000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400L, active5, 0x2048000000000000L, active6, 0x2000L, active7, 0x20000L, active8, 0L, active9, 0x4L, active10, 0L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa7_4(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x40000000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa7_4(active0, 0x41000000L, active1, 0L, active2, 0xf800L, active3, 0L, active4, 0x40000000000L, active5, 0L, active6, 0L, active7, 0x2000000000000L, active8, 0L, active9, 0x188L, active10, 0x80000000000000L, active11, 0L);
case 78:
case 110:
if ((active0 & 0x80000000000L) != 0L)
@@ -23921,19 +23962,19 @@
}
else if ((active10 & 0x100000000L) != 0L)
return jjStartNfaWithStates_4(6, 672, 78);
- else if ((active10 & 0x800000000000000L) != 0L)
+ else if ((active10 & 0x1000000000000000L) != 0L)
{
- jjmatchedKind = 699;
+ jjmatchedKind = 700;
jjmatchedPos = 6;
}
- return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x1000000000000004L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0xc0000000000L, active2, 0x2000200000000000L, active3, 0x20000000000000L, active4, 0L, active5, 0x400100L, active6, 0x800L, active7, 0x8000000000008c00L, active8, 0xc000005004020000L, active9, 0x6000800000000201L, active10, 0x2000000000000004L, active11, 0x1000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x10000000000180L, active11, 0L);
+ return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0x2000L, active2, 0x100000000000L, active3, 0x8000000000L, active4, 0L, active5, 0L, active6, 0xc000000000000L, active7, 0x4000L, active8, 0x8b0000000000L, active9, 0L, active10, 0x20000000000180L, active11, 0L);
case 80:
case 112:
- if ((active10 & 0x20000000000000L) != 0L)
- return jjStartNfaWithStates_4(6, 693, 78);
+ if ((active10 & 0x40000000000000L) != 0L)
+ return jjStartNfaWithStates_4(6, 694, 78);
return jjMoveStringLiteralDfa7_4(active0, 0x20000000000L, active1, 0x2800000000000L, active2, 0x30000000000L, active3, 0L, active4, 0x80000000000L, active5, 0L, active6, 0x80000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
@@ -23959,11 +24000,11 @@
jjmatchedKind = 653;
jjmatchedPos = 6;
}
- else if ((active10 & 0x100000000000000L) != 0L)
- return jjStartNfaWithStates_4(6, 696, 78);
- else if ((active11 & 0x400L) != 0L)
- return jjStartNfaWithStates_4(6, 714, 78);
- return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x400000000L);
+ else if ((active10 & 0x200000000000000L) != 0L)
+ return jjStartNfaWithStates_4(6, 697, 78);
+ else if ((active11 & 0x800L) != 0L)
+ return jjStartNfaWithStates_4(6, 715, 78);
+ return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0L, active2, 0x400000400L, active3, 0x100400000002L, active4, 0x300000000L, active5, 0x200L, active6, 0x400000000L, active7, 0x40000000000004L, active8, 0L, active9, 0x80040000300000L, active10, 0x5c000L, active11, 0x800000000L);
case 83:
case 115:
if ((active5 & 0x40L) != 0L)
@@ -23976,9 +24017,9 @@
return jjStartNfaWithStates_4(6, 484, 78);
else if ((active8 & 0x10L) != 0L)
return jjStartNfaWithStates_4(6, 516, 78);
- else if ((active11 & 0x40000L) != 0L)
- return jjStartNfaWithStates_4(6, 722, 78);
- return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x200000L);
+ else if ((active11 & 0x80000L) != 0L)
+ return jjStartNfaWithStates_4(6, 723, 78);
+ return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0x4000000000000L, active2, 0x80000000080L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x200000000L, active10, 0x200000L, active11, 0x400000L);
case 84:
case 116:
if ((active1 & 0x800000L) != 0L)
@@ -24019,14 +24060,14 @@
return jjStartNfaWithStates_4(6, 639, 78);
else if ((active10 & 0x200000000L) != 0L)
return jjStartNfaWithStates_4(6, 673, 78);
- else if ((active10 & 0x200000000000000L) != 0L)
- return jjStartNfaWithStates_4(6, 697, 78);
- else if ((active11 & 0x100L) != 0L)
- return jjStartNfaWithStates_4(6, 712, 78);
- return jjMoveStringLiteralDfa7_4(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x400120a0000L);
+ else if ((active10 & 0x400000000000000L) != 0L)
+ return jjStartNfaWithStates_4(6, 698, 78);
+ else if ((active11 & 0x200L) != 0L)
+ return jjStartNfaWithStates_4(6, 713, 78);
+ return jjMoveStringLiteralDfa7_4(active0, 0x90002040L, active1, 0xff00000c200007f0L, active2, 0x4000007L, active3, 0x2000080000000000L, active4, 0x20100L, active5, 0L, active6, 0x7003f800000L, active7, 0L, active8, 0x3fff100800000840L, active9, 0x1400000000L, active10, 0x100000L, active11, 0x80024140000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa7_4(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa7_4(active0, 0xc00000000L, active1, 0x120000000000L, active2, 0L, active3, 0L, active4, 0x2000000000L, active5, 0x4000800L, active6, 0x4000000000000000L, active7, 0x1000000000000L, active8, 0x400000000000L, active9, 0x80000000L, active10, 0L, active11, 0x4000000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa7_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0x200000000000000L, active7, 0x203000L, active8, 0L, active9, 0L, active10, 0x2L, active11, 0L);
@@ -24068,7 +24109,7 @@
return jjMoveStringLiteralDfa8_4(active0, 0x2000000000000000L, active1, 0xff0000000c000000L, active2, 0x180000000000007L, active3, 0L, active4, 0L, active5, 0x70000L, active6, 0x40000000000L, active7, 0x700000000000L, active8, 0x20000L, active9, 0xffc00L, active10, 0x1c000L, active11, 0L);
case 65:
case 97:
- return jjMoveStringLiteralDfa8_4(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x4000000000000000L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa8_4(active0, 0x20001000000L, active1, 0x4000000000000L, active2, 0x400140000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0xc000000000000000L, active8, 0x804000000000L, active9, 0x800040000002L, active10, 0x8000000000000000L, active11, 0x1000000L);
case 66:
case 98:
if ((active8 & 0x10000000000L) != 0L)
@@ -24092,8 +24133,10 @@
return jjStartNfaWithStates_4(7, 57, 78);
else if ((active2 & 0x10000000L) != 0L)
return jjStartNfaWithStates_4(7, 156, 78);
- else if ((active11 & 0x400000000L) != 0L)
- return jjStartNfaWithStates_4(7, 738, 78);
+ else if ((active10 & 0x1000000000L) != 0L)
+ return jjStartNfaWithStates_4(7, 676, 78);
+ else if ((active11 & 0x800000000L) != 0L)
+ return jjStartNfaWithStates_4(7, 739, 78);
return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x40000780000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -24143,14 +24186,14 @@
}
else if ((active10 & 0x100000L) != 0L)
return jjStartNfaWithStates_4(7, 660, 78);
- else if ((active11 & 0x20000L) != 0L)
- return jjStartNfaWithStates_4(7, 721, 78);
- return jjMoveStringLiteralDfa8_4(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x10000000L);
+ else if ((active11 & 0x40000L) != 0L)
+ return jjStartNfaWithStates_4(7, 722, 78);
+ return jjMoveStringLiteralDfa8_4(active0, 0x40000000L, active1, 0x200007f0L, active2, 0x20000002f000L, active3, 0x80000000000L, active4, 0x2000000000L, active5, 0x2000000000000200L, active6, 0x3f800000L, active7, 0L, active8, 0x3fff000000000000L, active9, 0x6000000000000108L, active10, 0x4000002L, active11, 0x20000000L);
case 70:
case 102:
- if ((active10 & 0x10000000000000L) != 0L)
- return jjStartNfaWithStates_4(7, 692, 78);
- return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ if ((active10 & 0x20000000000000L) != 0L)
+ return jjStartNfaWithStates_4(7, 693, 78);
+ return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0x200L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x20000000000000L, active8, 0L, active9, 0x40000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active2 & 0x2000000000000000L) != 0L)
@@ -24161,7 +24204,7 @@
return jjStartNfaWithStates_4(7, 395, 78);
else if ((active10 & 0x4L) != 0L)
return jjStartNfaWithStates_4(7, 642, 78);
- return jjMoveStringLiteralDfa8_4(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa8_4(active0, 0x400000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x400000000000000L, active5, 0L, active6, 0x2000000000000000L, active7, 0x3000L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0x2000000L);
case 72:
case 104:
if ((active2 & 0x400000000000L) != 0L)
@@ -24169,7 +24212,7 @@
return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x100000000000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa8_4(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x1000000000000000L, active11, 0x40000000000L);
+ return jjMoveStringLiteralDfa8_4(active0, 0x10000000L, active1, 0x1fc00001000L, active2, 0L, active3, 0L, active4, 0x400020000L, active5, 0x400000L, active6, 0x30000202000L, active7, 0L, active8, 0x203000000000L, active9, 0x40400000000L, active10, 0x2000000000000000L, active11, 0x80000000000L);
case 74:
case 106:
return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x1800000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -24188,9 +24231,9 @@
return jjStartNfaWithStates_4(7, 359, 78);
else if ((active9 & 0x20L) != 0L)
return jjStartNfaWithStates_4(7, 581, 78);
- else if ((active11 & 0x40000000L) != 0L)
- return jjStartNfaWithStates_4(7, 734, 78);
- return jjMoveStringLiteralDfa8_4(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x8000000L);
+ else if ((active11 & 0x80000000L) != 0L)
+ return jjStartNfaWithStates_4(7, 735, 78);
+ return jjMoveStringLiteralDfa8_4(active0, 0x80040000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2008000000400L, active5, 0L, active6, 0L, active7, 0L, active8, 0x20000000000L, active9, 0x40L, active10, 0L, active11, 0x10000000L);
case 77:
case 109:
return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0L, active3, 0x1L, active4, 0xc000000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x1f01000000000000L, active10, 0L, active11, 0L);
@@ -24203,22 +24246,22 @@
jjmatchedKind = 434;
jjmatchedPos = 7;
}
- return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x200200000000L);
+ return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0x2000008L, active2, 0x40000000010L, active3, 0x8000400L, active4, 0xc4L, active5, 0x1000000000000000L, active6, 0x48000000000000L, active7, 0x1101000800000000L, active8, 0x8000L, active9, 0x6002000000L, active10, 0L, active11, 0x400400000000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa8_4(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x2000000000L);
+ return jjMoveStringLiteralDfa8_4(active0, 0x20800000L, active1, 0x28001c0780000L, active2, 0L, active3, 0x10000400000100L, active4, 0x4010000100L, active5, 0x4000000080L, active6, 0x80000480000000L, active7, 0x20000L, active8, 0x800L, active9, 0x4L, active10, 0L, active11, 0x4000000000L);
case 80:
case 112:
- if ((active10 & 0x40000000000000L) != 0L)
- return jjStartNfaWithStates_4(7, 694, 78);
+ if ((active10 & 0x80000000000000L) != 0L)
+ return jjStartNfaWithStates_4(7, 695, 78);
return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x400000000L, active9, 0x8000000L, active10, 0L, active11, 0L);
case 82:
case 114:
if ((active8 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_4(7, 554, 78);
- else if ((active11 & 0x4L) != 0L)
- return jjStartNfaWithStates_4(7, 706, 78);
- return jjMoveStringLiteralDfa8_4(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x80000000040180L, active11, 0x400000L);
+ else if ((active11 & 0x8L) != 0L)
+ return jjStartNfaWithStates_4(7, 707, 78);
+ return jjMoveStringLiteralDfa8_4(active0, 0x10080000000L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0x300000000L, active5, 0L, active6, 0x4000000000000000L, active7, 0L, active8, 0L, active9, 0x2000080000010L, active10, 0x100000000040180L, active11, 0x800000L);
case 83:
case 115:
if ((active1 & 0x40000000000L) != 0L)
@@ -24240,7 +24283,7 @@
return jjStartNfaWithStates_4(7, 450, 78);
else if ((active9 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_4(7, 615, 78);
- return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0x40080000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x10000000000000L, active8, 0L, active9, 0x210000000L, active10, 0L, active11, 0x100000000L);
case 84:
case 116:
if ((active2 & 0x800000000000L) != 0L)
@@ -24253,10 +24296,10 @@
return jjStartNfaWithStates_4(7, 538, 78);
else if ((active10 & 0x200000L) != 0L)
return jjStartNfaWithStates_4(7, 661, 78);
- return jjMoveStringLiteralDfa8_4(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x100000L);
+ return jjMoveStringLiteralDfa8_4(active0, 0xc00000000L, active1, 0L, active2, 0xb0000000000L, active3, 0x2L, active4, 0x4003L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0x100000000000L, active10, 0x18000e78L, active11, 0x200000L);
case 85:
case 117:
- return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x10L);
+ return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0x400L, active3, 0L, active4, 0L, active5, 0x8000000000100L, active6, 0L, active7, 0x4000L, active8, 0L, active9, 0x80201000000000L, active10, 0L, active11, 0x20L);
case 86:
case 118:
return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x100L, active8, 0x400L, active9, 0L, active10, 0L, active11, 0L);
@@ -24286,9 +24329,9 @@
return jjStartNfaWithStates_4(7, 518, 78);
else if ((active9 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_4(7, 627, 78);
- else if ((active11 & 0x4000000L) != 0L)
- return jjStartNfaWithStates_4(7, 730, 78);
- return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x2280000L);
+ else if ((active11 & 0x8000000L) != 0L)
+ return jjStartNfaWithStates_4(7, 731, 78);
+ return jjMoveStringLiteralDfa8_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x200L, active10, 0L, active11, 0x4500000L);
case 90:
case 122:
return jjMoveStringLiteralDfa8_4(active0, 0x1000000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x3000000000000L, active6, 0L, active7, 0L, active8, 0x2000L, active9, 0L, active10, 0L, active11, 0L);
@@ -24309,7 +24352,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x80000L);
+ return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x80000000000L, active2, 0xf000L, active3, 0L, active4, 0L, active5, 0L, active6, 0x8000000000000L, active7, 0x780000000L, active8, 0x80000000L, active9, 0x6000000200000000L, active10, 0L, active11, 0x100000L);
case 65:
case 97:
return jjMoveStringLiteralDfa9_4(active0, 0x11000000000L, active1, 0x2000000L, active2, 0x10L, active3, 0L, active4, 0x300020000L, active5, 0L, active6, 0L, active7, 0x1000000000000000L, active8, 0xa000L, active9, 0x10000000L, active10, 0x40000L, active11, 0L);
@@ -24322,7 +24365,7 @@
case 99:
if ((active9 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_4(8, 618, 78);
- return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x40000000010L);
+ return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x100000000000000L, active2, 0x200000000000L, active3, 0L, active4, 0L, active5, 0x1000000000000200L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0x10L, active10, 0x4000L, active11, 0x80000000020L);
case 68:
case 100:
if ((active1 & 0x20000000L) != 0L)
@@ -24331,8 +24374,8 @@
return jjStartNfaWithStates_4(8, 235, 78);
else if ((active10 & 0x4000000L) != 0L)
return jjStartNfaWithStates_4(8, 666, 78);
- else if ((active11 & 0x10000000L) != 0L)
- return jjStartNfaWithStates_4(8, 732, 78);
+ else if ((active11 & 0x20000000L) != 0L)
+ return jjStartNfaWithStates_4(8, 733, 78);
return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x600000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x400L, active10, 0L, active11, 0L);
case 69:
case 101:
@@ -24400,9 +24443,9 @@
jjmatchedKind = 613;
jjmatchedPos = 8;
}
- else if ((active11 & 0x200000000L) != 0L)
- return jjStartNfaWithStates_4(8, 737, 78);
- return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x200000000000L);
+ else if ((active11 & 0x400000000L) != 0L)
+ return jjStartNfaWithStates_4(8, 738, 78);
+ return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x8L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1000000000000L, active9, 0x4040000000L, active10, 0L, active11, 0x400000000000L);
case 72:
case 104:
return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1L, active9, 0x201000L, active10, 0L, active11, 0L);
@@ -24410,7 +24453,7 @@
case 105:
if ((active0 & 0x40000000000L) != 0L)
return jjStartNfaWithStates_4(8, 42, 78);
- return jjMoveStringLiteralDfa9_4(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x1e0010000878L, active11, 0x81000000L);
+ return jjMoveStringLiteralDfa9_4(active0, 0x80000080000000L, active1, 0x2000L, active2, 0xd0000000000L, active3, 0x2L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0x40000000000800L, active8, 0L, active9, 0x100000100200L, active10, 0x3c0010000878L, active11, 0x102000000L);
case 75:
case 107:
if ((active2 & 0x20000L) != 0L)
@@ -24426,7 +24469,7 @@
jjmatchedKind = 647;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x800000L);
+ return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x4000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0L, active7, 0x8000000000000000L, active8, 0x200000000000L, active9, 0x80000000e000L, active10, 0x100L, active11, 0x1000000L);
case 78:
case 110:
if ((active0 & 0x20000000L) != 0L)
@@ -24449,10 +24492,10 @@
return jjStartNfaWithStates_4(8, 415, 78);
else if ((active6 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_4(8, 439, 78);
- return jjMoveStringLiteralDfa9_4(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x1000000000008000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa9_4(active0, 0x2000000040800000L, active1, 0x81f180700000L, active2, 0x400000400L, active3, 0x10000000000000L, active4, 0L, active5, 0x2000004000000080L, active6, 0x200000L, active7, 0x200000004000L, active8, 0x3000000000L, active9, 0x80000000000000L, active10, 0x2000000000008000L, active11, 0x400000L);
case 79:
case 111:
- return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0xc00000000L, active2, 0x20000000000L, active3, 0x200000000L, active4, 0L, active5, 0x320000L, active6, 0L, active7, 0L, active8, 0L, active9, 0x8000000L, active10, 0L, active11, 0x800000L);
case 80:
case 112:
if ((active1 & 0x2000000000000L) != 0L)
@@ -24462,7 +24505,7 @@
jjmatchedKind = 632;
jjmatchedPos = 8;
}
- return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x2000000L);
+ return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x800000000000000L, active2, 0L, active3, 0L, active4, 0x4000000000L, active5, 0L, active6, 0L, active7, 0x20000L, active8, 0L, active9, 0x1e01000000000000L, active10, 0L, active11, 0x4000000L);
case 81:
case 113:
return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0L);
@@ -24514,7 +24557,7 @@
return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0x8000020000000000L, active2, 0x100003L, active3, 0L, active4, 0x200004L, active5, 0x40000L, active6, 0x2000L, active7, 0x4000000000000000L, active8, 0x500000000L, active9, 0x1000000000L, active10, 0x8000000L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x2008000000L);
+ return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0x2008000000000L, active5, 0x400000L, active6, 0x400000000L, active7, 0L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0x4010000000L);
case 86:
case 118:
return jjMoveStringLiteralDfa9_4(active0, 0x10000000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xc000000000000000L, active9, 0x1L, active10, 0L, active11, 0L);
@@ -24538,12 +24581,12 @@
return jjStartNfaWithStates_4(8, 461, 78);
else if ((active9 & 0x2000000000000L) != 0L)
return jjStartNfaWithStates_4(8, 625, 78);
- else if ((active10 & 0x80000000000000L) != 0L)
- return jjStartNfaWithStates_4(8, 695, 78);
- else if ((active10 & 0x4000000000000000L) != 0L)
- return jjStartNfaWithStates_4(8, 702, 78);
- else if ((active11 & 0x100000L) != 0L)
- return jjStartNfaWithStates_4(8, 724, 78);
+ else if ((active10 & 0x100000000000000L) != 0L)
+ return jjStartNfaWithStates_4(8, 696, 78);
+ else if ((active10 & 0x8000000000000000L) != 0L)
+ return jjStartNfaWithStates_4(8, 703, 78);
+ else if ((active11 & 0x200000L) != 0L)
+ return jjStartNfaWithStates_4(8, 725, 78);
return jjMoveStringLiteralDfa9_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x80000L, active10, 0L, active11, 0L);
default :
break;
@@ -24577,7 +24620,7 @@
return jjStartNfaWithStates_4(9, 138, 78);
else if ((active9 & 0x80000000000000L) != 0L)
return jjStartNfaWithStates_4(9, 631, 78);
- return jjMoveStringLiteralDfa10_4(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa10_4(active0, 0x800000L, active1, 0x4000000000000000L, active2, 0x80000000000L, active3, 0x10000000000000L, active4, 0x1800000000L, active5, 0x20000L, active6, 0L, active7, 0x400080000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 68:
case 100:
if ((active5 & 0x4000000000L) != 0L)
@@ -24611,13 +24654,13 @@
return jjStartNfaWithStates_4(9, 612, 78);
else if ((active9 & 0x800000000000L) != 0L)
return jjStartNfaWithStates_4(9, 623, 78);
- else if ((active11 & 0x800000L) != 0L)
- return jjStartNfaWithStates_4(9, 727, 78);
- else if ((active11 & 0x2000000L) != 0L)
- return jjStartNfaWithStates_4(9, 729, 78);
- else if ((active11 & 0x8000000L) != 0L)
- return jjStartNfaWithStates_4(9, 731, 78);
- return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x200000000000L);
+ else if ((active11 & 0x1000000L) != 0L)
+ return jjStartNfaWithStates_4(9, 728, 78);
+ else if ((active11 & 0x4000000L) != 0L)
+ return jjStartNfaWithStates_4(9, 730, 78);
+ else if ((active11 & 0x10000000L) != 0L)
+ return jjStartNfaWithStates_4(9, 732, 78);
+ return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000050000L, active6, 0x30000000000L, active7, 0x20000000000000L, active8, 0x1000000000001L, active9, 0x2004000e0000L, active10, 0x8000000L, active11, 0x400000000000L);
case 71:
case 103:
if ((active6 & 0x200000L) != 0L)
@@ -24626,8 +24669,8 @@
return jjStartNfaWithStates_4(9, 548, 78);
else if ((active9 & 0x40000000L) != 0L)
return jjStartNfaWithStates_4(9, 606, 78);
- else if ((active10 & 0x1000000000000000L) != 0L)
- return jjStartNfaWithStates_4(9, 700, 78);
+ else if ((active10 & 0x2000000000000000L) != 0L)
+ return jjStartNfaWithStates_4(9, 701, 78);
return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0x2000L, active2, 0L, active3, 0L, active4, 0L, active5, 0x2000000000000000L, active6, 0x400000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 72:
case 104:
@@ -24639,7 +24682,7 @@
case 107:
if ((active2 & 0x400000000L) != 0L)
return jjStartNfaWithStates_4(9, 162, 78);
- return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80010L);
+ return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100020L);
case 76:
case 108:
return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x2L, active5, 0L, active6, 0L, active7, 0x100000000L, active8, 0L, active9, 0x1000000000000L, active10, 0L, active11, 0L);
@@ -24655,10 +24698,10 @@
jjmatchedKind = 98;
jjmatchedPos = 9;
}
- return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0x800000000L, active2, 0L, active3, 0x200000000L, active4, 0L, active5, 0x300000L, active6, 0L, active7, 0x40000000000800L, active8, 0x80000000L, active9, 0x100200L, active10, 0x3c0000000000L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x1000000L);
+ return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0x3000020000000000L, active2, 0x10000000000L, active3, 0L, active4, 0L, active5, 0x200L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x200009000L, active10, 0x10000878L, active11, 0x2000000L);
case 80:
case 112:
if ((active1 & 0x4000000000000L) != 0L)
@@ -24689,10 +24732,10 @@
return jjStartNfaWithStates_4(9, 458, 78);
else if ((active10 & 0x100L) != 0L)
return jjStartNfaWithStates_4(9, 648, 78);
- else if ((active11 & 0x2000000000L) != 0L)
- return jjStartNfaWithStates_4(9, 741, 78);
- else if ((active11 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_4(9, 746, 78);
+ else if ((active11 & 0x4000000000L) != 0L)
+ return jjStartNfaWithStates_4(9, 742, 78);
+ else if ((active11 & 0x80000000000L) != 0L)
+ return jjStartNfaWithStates_4(9, 747, 78);
return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0x80000000000L, active2, 0x40000000004L, active3, 0L, active4, 0x8000000000000000L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0x20000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
@@ -24712,7 +24755,7 @@
return jjMoveStringLiteralDfa10_4(active0, 0x80021000000000L, active1, 0x1e000000008L, active2, 0x8000L, active3, 0x2L, active4, 0x400000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x100L, active10, 0L, active11, 0L);
case 85:
case 117:
- return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x400000L);
+ return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0xc000000L, active2, 0x180000000000000L, active3, 0x1000000L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x10000L, active10, 0L, active11, 0x800000L);
case 86:
case 118:
return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -24739,7 +24782,7 @@
return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x200000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x80000000L);
+ return jjMoveStringLiteralDfa10_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x100000000L);
default :
break;
}
@@ -24776,7 +24819,7 @@
return jjStartNfaWithStates_4(10, 341, 78);
else if ((active10 & 0x8000000L) != 0L)
return jjStartNfaWithStates_4(10, 667, 78);
- return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0xa00000000000000L, active10, 0L, active11, 0x400000000000L);
case 69:
case 101:
if ((active0 & 0x10000000000L) != 0L)
@@ -24797,9 +24840,9 @@
return jjStartNfaWithStates_4(10, 620, 78);
else if ((active9 & 0x1000000000000L) != 0L)
return jjStartNfaWithStates_4(10, 624, 78);
- else if ((active11 & 0x80000000L) != 0L)
- return jjStartNfaWithStates_4(10, 735, 78);
- return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x1e0000000000L, active11, 0x80010L);
+ else if ((active11 & 0x100000000L) != 0L)
+ return jjStartNfaWithStates_4(10, 736, 78);
+ return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0L, active2, 0x4L, active3, 0L, active4, 0L, active5, 0x100L, active6, 0x8000000000000L, active7, 0x100000000L, active8, 0x20000L, active9, 0x40000L, active10, 0x3c0000000000L, active11, 0x100020L);
case 70:
case 102:
return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0x400000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -24814,7 +24857,7 @@
return jjStartNfaWithStates_4(10, 67, 78);
else if ((active6 & 0x400000000L) != 0L)
return jjStartNfaWithStates_4(10, 418, 78);
- return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0x4000000000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x400000000000L, active8, 0L, active9, 0L, active10, 0x10000L, active11, 0x400000L);
case 73:
case 105:
return jjMoveStringLiteralDfa11_4(active0, 0x21000000000L, active1, 0x800000002000L, active2, 0x1000L, active3, 0x2L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0L, active8, 0L, active9, 0x4400000000000000L, active10, 0L, active11, 0L);
@@ -24841,8 +24884,8 @@
}
else if ((active10 & 0x800L) != 0L)
return jjStartNfaWithStates_4(10, 651, 78);
- else if ((active11 & 0x1000000L) != 0L)
- return jjStartNfaWithStates_4(10, 728, 78);
+ else if ((active11 & 0x2000000L) != 0L)
+ return jjStartNfaWithStates_4(10, 729, 78);
return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0x10c200000L, active2, 0x180000000006000L, active3, 0L, active4, 0L, active5, 0x10000L, active6, 0x40002000000L, active7, 0L, active8, 0L, active9, 0xc040L, active10, 0x10000070L, active11, 0L);
case 79:
case 111:
@@ -24851,8 +24894,8 @@
case 112:
if ((active9 & 0x10000000L) != 0L)
return jjStartNfaWithStates_4(10, 604, 78);
- else if ((active11 & 0x400000L) != 0L)
- return jjStartNfaWithStates_4(10, 726, 78);
+ else if ((active11 & 0x800000L) != 0L)
+ return jjStartNfaWithStates_4(10, 727, 78);
return jjMoveStringLiteralDfa11_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x100000000L, active9, 0L, active10, 0L, active11, 0L);
case 81:
case 113:
@@ -24928,7 +24971,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa12_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa12_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0x1000000000000000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 65:
case 97:
if ((active8 & 0x1L) != 0L)
@@ -24944,7 +24987,7 @@
case 100:
if ((active9 & 0x200000000000000L) != 0L)
return jjStartNfaWithStates_4(11, 633, 78);
- return jjMoveStringLiteralDfa12_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa12_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x20000000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 69:
case 101:
if ((active0 & 0x2000000000000000L) != 0L)
@@ -25029,7 +25072,7 @@
return jjStartNfaWithStates_4(11, 588, 78);
else if ((active9 & 0x80000L) != 0L)
return jjStartNfaWithStates_4(11, 595, 78);
- return jjMoveStringLiteralDfa12_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa12_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0x1000000000112000L, active10, 0L, active11, 0x400000L);
case 83:
case 115:
return jjMoveStringLiteralDfa12_4(active0, 0L, active1, 0x8000000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x70L, active11, 0L);
@@ -25041,16 +25084,16 @@
return jjStartNfaWithStates_4(11, 338, 78);
else if ((active9 & 0x40L) != 0L)
return jjStartNfaWithStates_4(11, 582, 78);
- else if ((active11 & 0x10L) != 0L)
- return jjStartNfaWithStates_4(11, 708, 78);
+ else if ((active11 & 0x20L) != 0L)
+ return jjStartNfaWithStates_4(11, 709, 78);
return jjMoveStringLiteralDfa12_4(active0, 0x20000800000L, active1, 0x200L, active2, 0x6000L, active3, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0x8000L, active10, 0L, active11, 0L);
case 85:
case 117:
return jjMoveStringLiteralDfa12_4(active0, 0L, active1, 0x100000000L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x2000000000004000L, active10, 0L, active11, 0L);
case 89:
case 121:
- if ((active11 & 0x80000L) != 0L)
- return jjStartNfaWithStates_4(11, 723, 78);
+ if ((active11 & 0x100000L) != 0L)
+ return jjStartNfaWithStates_4(11, 724, 78);
break;
default :
break;
@@ -25069,7 +25112,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa13_4(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x1e0000000070L, active11, 0L);
+ return jjMoveStringLiteralDfa13_4(active0, 0x800000L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x3ffe000000000000L, active9, 0x800L, active10, 0x3c0000000070L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa13_4(active0, 0L, active1, 0x6800000000L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -25125,12 +25168,12 @@
return jjMoveStringLiteralDfa13_4(active0, 0L, active1, 0x20L, active2, 0x8000L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0x20000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa13_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa13_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0x4L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0L, active9, 0x2000L, active10, 0L, active11, 0x400000L);
case 80:
case 112:
if ((active9 & 0x100L) != 0L)
return jjStartNfaWithStates_4(12, 584, 78);
- return jjMoveStringLiteralDfa13_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa13_4(active0, 0L, active1, 0L, active2, 0L, active3, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0x8000L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 82:
case 114:
if ((active9 & 0x2000000000000000L) != 0L)
@@ -25176,7 +25219,7 @@
return jjStartNfaWithStates_4(13, 494, 78);
else if ((active10 & 0x10000L) != 0L)
return jjStartNfaWithStates_4(13, 656, 78);
- return jjMoveStringLiteralDfa14_4(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa14_4(active0, 0x800000L, active1, 0x100000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000000L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 66:
case 98:
return jjMoveStringLiteralDfa14_4(active0, 0L, active1, 0x100000000L, active2, 0L, active4, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -25229,7 +25272,7 @@
case 110:
if ((active4 & 0x4L) != 0L)
return jjStartNfaWithStates_4(13, 258, 78);
- return jjMoveStringLiteralDfa14_4(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa14_4(active0, 0L, active1, 0L, active2, 0L, active4, 0L, active5, 0L, active6, 0x10000000000L, active7, 0L, active8, 0x4000000000000000L, active9, 0x1000000000000000L, active10, 0x2L, active11, 0x400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa14_4(active0, 0x20000000000L, active1, 0x100000000000000L, active2, 0L, active4, 0L, active5, 0x80L, active6, 0L, active7, 0x100000000000L, active8, 0L, active9, 0L, active10, 0x4000L, active11, 0L);
@@ -25250,7 +25293,7 @@
case 116:
if ((active7 & 0x8000L) != 0L)
return jjStartNfaWithStates_4(13, 463, 78);
- return jjMoveStringLiteralDfa14_4(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa14_4(active0, 0L, active1, 0x82000000000L, active2, 0x1L, active4, 0L, active5, 0L, active6, 0L, active7, 0x700000000L, active8, 0L, active9, 0x4000000000000000L, active10, 0x3c0000000000L, active11, 0L);
case 88:
case 120:
if ((active6 & 0x8000000000000L) != 0L)
@@ -25317,7 +25360,7 @@
break;
case 73:
case 105:
- return jjMoveStringLiteralDfa15_4(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa15_4(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0x300000000000000L, active9, 0L, active10, 0L, active11, 0x400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa15_4(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -25344,7 +25387,7 @@
return jjStartNfaWithStates_4(14, 575, 78);
else if ((active9 & 0x10000L) != 0L)
return jjStartNfaWithStates_4(14, 592, 78);
- return jjMoveStringLiteralDfa15_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa15_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000000000L);
case 83:
case 115:
if ((active1 & 0x200L) != 0L)
@@ -25369,7 +25412,7 @@
break;
case 89:
case 121:
- return jjMoveStringLiteralDfa15_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa15_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
default :
break;
}
@@ -25436,7 +25479,7 @@
return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0x100000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 82:
case 114:
if ((active1 & 0x100000000L) != 0L)
@@ -25446,7 +25489,7 @@
return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x400000000L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0xe0000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -25460,7 +25503,7 @@
return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
case 90:
case 122:
- return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa16_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
default :
break;
}
@@ -25483,12 +25526,12 @@
case 97:
if ((active1 & 0x8000000000L) != 0L)
return jjStartNfaWithStates_4(16, 103, 78);
- return jjMoveStringLiteralDfa17_4(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa17_4(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
if ((active7 & 0x400000000L) != 0L)
return jjStartNfaWithStates_4(16, 482, 78);
- return jjMoveStringLiteralDfa17_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa17_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 71:
case 103:
if ((active1 & 0x100000L) != 0L)
@@ -25499,7 +25542,7 @@
return jjMoveStringLiteralDfa17_4(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa17_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa17_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x38000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0x400000000000L);
case 76:
case 108:
return jjMoveStringLiteralDfa17_4(active0, 0L, active1, 0L, active2, 0x6000L, active5, 0L, active6, 0x4000000L, active7, 0x80000000L, active8, 0L, active9, 0L, active10, 0x40L, active11, 0L);
@@ -25563,7 +25606,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa18_4(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x1e0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa18_4(active0, 0L, active1, 0L, active2, 0x6002L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x3c0000000000L, active11, 0L);
case 65:
case 97:
return jjMoveStringLiteralDfa18_4(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -25599,7 +25642,7 @@
return jjMoveStringLiteralDfa18_4(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa18_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa18_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0x31c000000000000L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 86:
case 118:
return jjMoveStringLiteralDfa18_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x10L, active11, 0L);
@@ -25626,7 +25669,7 @@
return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x60000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0x2000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0xc0000000000L, active11, 0L);
case 68:
case 100:
if ((active8 & 0x800000000000000L) != 0L)
@@ -25651,7 +25694,7 @@
return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0x2L, active5, 0L, active6, 0L, active7, 0x200000000L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 73:
case 105:
- return jjMoveStringLiteralDfa19_4(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa19_4(active0, 0x1000000L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0x400000400000L);
case 76:
case 108:
return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0x40L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
@@ -25660,7 +25703,7 @@
return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0x100L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
case 79:
case 111:
return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0x1c000000000000L, active9, 0L, active10, 0L, active11, 0L);
@@ -25669,7 +25712,7 @@
return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0x4000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0L, active9, 0L, active10, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active9, 0L, active10, 0x200000000000L, active11, 0L);
case 84:
case 116:
return jjMoveStringLiteralDfa19_4(active0, 0L, active1, 0L, active2, 0L, active5, 0x20000L, active6, 0L, active7, 0x80000000L, active8, 0x20c0000000000000L, active9, 0L, active10, 0x20L, active11, 0L);
@@ -25695,10 +25738,10 @@
case 97:
if ((active1 & 0x100L) != 0L)
return jjStartNfaWithStates_4(19, 72, 78);
- return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0xa0000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0x140000000000L, active11, 0L);
case 67:
case 99:
- return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0L, active2, 0L, active5, 0L, active6, 0x8000000L, active7, 0L, active8, 0L, active10, 0x200000000000L, active11, 0L);
case 68:
case 100:
return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0x8000000L, active2, 0x100000000000000L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -25712,7 +25755,7 @@
return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0x400000000000000L, active2, 0L, active5, 0L, active6, 0x10000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x40000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0x40L, active2, 0x2000L, active5, 0L, active6, 0x4000000L, active7, 0L, active8, 0x20c0000000000000L, active10, 0x80000000000L, active11, 0x400000400000L);
case 82:
case 114:
return jjMoveStringLiteralDfa20_4(active0, 0L, active1, 0L, active2, 0x4002L, active5, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -25756,7 +25799,7 @@
return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0x20000000L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
case 68:
case 100:
- return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0x2000L, active6, 0L, active7, 0L, active8, 0L, active10, 0x80000000000L, active11, 0L);
case 69:
case 101:
if ((active1 & 0x8000000L) != 0L)
@@ -25773,13 +25816,13 @@
case 104:
if ((active7 & 0x200000000L) != 0L)
return jjStartNfaWithStates_4(20, 481, 78);
- return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x100000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x4000000000000L, active10, 0x200000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x80000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x8000000000000L, active10, 0x100000000000L, active11, 0L);
case 78:
case 110:
- return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 79:
case 111:
return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0x2L, active6, 0L, active7, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -25788,7 +25831,7 @@
return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0x400000000000000L, active2, 0L, active6, 0x4000000L, active7, 0L, active8, 0x10000000000000L, active10, 0L, active11, 0L);
case 84:
case 116:
- return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa21_4(active0, 0L, active1, 0L, active2, 0L, active6, 0L, active7, 0L, active8, 0x200000000000000L, active10, 0x40000000000L, active11, 0L);
case 89:
case 121:
if ((active0 & 0x1000000L) != 0L)
@@ -25811,10 +25854,10 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa22_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa22_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000400000L);
case 65:
case 97:
- return jjMoveStringLiteralDfa22_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000040L, active11, 0L);
+ return jjMoveStringLiteralDfa22_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000040L, active11, 0L);
case 67:
case 99:
return jjMoveStringLiteralDfa22_4(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -25827,11 +25870,11 @@
case 101:
if ((active2 & 0x2000L) != 0L)
return jjStartNfaWithStates_4(21, 141, 78);
- else if ((active10 & 0x40000000000L) != 0L)
- return jjStartNfaWithStates_4(21, 682, 78);
else if ((active10 & 0x80000000000L) != 0L)
return jjStartNfaWithStates_4(21, 683, 78);
- return jjMoveStringLiteralDfa22_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x100000000000L, active11, 0L);
+ else if ((active10 & 0x100000000000L) != 0L)
+ return jjStartNfaWithStates_4(21, 684, 78);
+ return jjMoveStringLiteralDfa22_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x200000000000L, active11, 0L);
case 70:
case 102:
return jjMoveStringLiteralDfa22_4(active1, 0x400000000000000L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
@@ -25890,10 +25933,10 @@
return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0x4000L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 76:
case 108:
- return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x20000000000L, active11, 0L);
+ return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x40000000000L, active11, 0L);
case 77:
case 109:
- return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x100000000000L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0x200000000000L, active11, 0x400000L);
case 78:
case 110:
return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x8000000000000L, active10, 0L, active11, 0L);
@@ -25905,7 +25948,7 @@
return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 82:
case 114:
- return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa23_4(active1, 0L, active2, 0L, active6, 0x4000000L, active8, 0L, active10, 0L, active11, 0L);
@@ -25932,8 +25975,8 @@
return jjMoveStringLiteralDfa24_4(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 65:
case 97:
- if ((active10 & 0x100000000000L) != 0L)
- return jjStartNfaWithStates_4(23, 684, 78);
+ if ((active10 & 0x200000000000L) != 0L)
+ return jjStartNfaWithStates_4(23, 685, 78);
break;
case 67:
case 99:
@@ -25957,7 +26000,7 @@
return jjMoveStringLiteralDfa24_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x2040000000000000L, active10, 0L, active11, 0L);
case 79:
case 111:
- return jjMoveStringLiteralDfa24_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x20000000000L, active11, 0x200000200000L);
+ return jjMoveStringLiteralDfa24_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x10000000000000L, active10, 0x40000000000L, active11, 0x400000400000L);
case 82:
case 114:
if ((active8 & 0x4000000000000L) != 0L)
@@ -25992,7 +26035,7 @@
break;
case 68:
case 100:
- return jjMoveStringLiteralDfa25_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000L);
+ return jjMoveStringLiteralDfa25_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000L);
case 69:
case 101:
return jjMoveStringLiteralDfa25_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x200000000000000L, active10, 0L, active11, 0L);
@@ -26001,8 +26044,8 @@
return jjMoveStringLiteralDfa25_4(active1, 0L, active2, 0x2L, active6, 0L, active8, 0L, active10, 0L, active11, 0L);
case 71:
case 103:
- if ((active10 & 0x20000000000L) != 0L)
- return jjStartNfaWithStates_4(24, 681, 78);
+ if ((active10 & 0x40000000000L) != 0L)
+ return jjStartNfaWithStates_4(24, 682, 78);
break;
case 73:
case 105:
@@ -26024,7 +26067,7 @@
return jjMoveStringLiteralDfa25_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active10, 0L, active11, 0L);
case 87:
case 119:
- return jjMoveStringLiteralDfa25_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa25_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active10, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -26055,8 +26098,8 @@
case 101:
if ((active8 & 0x8000000000000L) != 0L)
return jjStartNfaWithStates_4(25, 563, 78);
- else if ((active11 & 0x200000L) != 0L)
- return jjStartNfaWithStates_4(25, 725, 78);
+ else if ((active11 & 0x400000L) != 0L)
+ return jjStartNfaWithStates_4(25, 726, 78);
break;
case 71:
case 103:
@@ -26078,7 +26121,7 @@
return jjMoveStringLiteralDfa26_4(active1, 0L, active2, 0x4002L, active6, 0L, active8, 0L, active11, 0L);
case 83:
case 115:
- return jjMoveStringLiteralDfa26_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa26_4(active1, 0L, active2, 0L, active6, 0L, active8, 0L, active11, 0x400000000000L);
case 84:
case 116:
return jjMoveStringLiteralDfa26_4(active1, 0L, active2, 0L, active6, 0L, active8, 0x40000000000000L, active11, 0L);
@@ -26099,7 +26142,7 @@
switch(curChar)
{
case 95:
- return jjMoveStringLiteralDfa27_4(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa27_4(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 68:
case 100:
if ((active8 & 0x80000000000000L) != 0L)
@@ -26147,7 +26190,7 @@
return jjMoveStringLiteralDfa28_4(active1, 0L, active2, 0L, active8, 0x200000000000000L, active11, 0L);
case 80:
case 112:
- return jjMoveStringLiteralDfa28_4(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa28_4(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 82:
case 114:
return jjMoveStringLiteralDfa28_4(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -26174,7 +26217,7 @@
break;
case 69:
case 101:
- return jjMoveStringLiteralDfa29_4(active1, 0L, active2, 0L, active8, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa29_4(active1, 0L, active2, 0L, active8, 0L, active11, 0x400000000000L);
case 79:
case 111:
return jjMoveStringLiteralDfa29_4(active1, 0x400000000000000L, active2, 0L, active8, 0L, active11, 0L);
@@ -26199,7 +26242,7 @@
{
case 82:
case 114:
- return jjMoveStringLiteralDfa30_4(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa30_4(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 85:
case 117:
return jjMoveStringLiteralDfa30_4(active1, 0x400000000000000L, active2, 0L, active11, 0L);
@@ -26224,7 +26267,7 @@
{
case 67:
case 99:
- return jjMoveStringLiteralDfa31_4(active1, 0L, active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa31_4(active1, 0L, active2, 0L, active11, 0x400000000000L);
case 80:
case 112:
if ((active1 & 0x400000000000000L) != 0L)
@@ -26250,7 +26293,7 @@
case 101:
if ((active2 & 0x2L) != 0L)
return jjStartNfaWithStates_4(31, 129, 78);
- return jjMoveStringLiteralDfa32_4(active2, 0L, active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa32_4(active2, 0L, active11, 0x400000000000L);
default :
break;
}
@@ -26269,7 +26312,7 @@
{
case 78:
case 110:
- return jjMoveStringLiteralDfa33_4(active11, 0x200000000000L);
+ return jjMoveStringLiteralDfa33_4(active11, 0x400000000000L);
default :
break;
}
@@ -26288,8 +26331,8 @@
{
case 84:
case 116:
- if ((active11 & 0x200000000000L) != 0L)
- return jjStartNfaWithStates_4(33, 749, 78);
+ if ((active11 & 0x400000000000L) != 0L)
+ return jjStartNfaWithStates_4(33, 750, 78);
break;
default :
break;
@@ -26320,8 +26363,8 @@
jjCheckNAddStates(62, 64);
else if (curChar == 34)
{
- if (kind > 763)
- kind = 763;
+ if (kind > 764)
+ kind = 764;
}
break;
case 58:
@@ -26329,8 +26372,8 @@
jjCheckNAddStates(65, 67);
else if (curChar == 39)
{
- if (kind > 764)
- kind = 764;
+ if (kind > 765)
+ kind = 765;
}
if ((0xfc00f7faffffc9ffL & l) != 0L)
jjstateSet[jjnewStateCnt++] = 59;
@@ -26342,8 +26385,8 @@
jjCheckNAddStates(16, 18);
if ((0x3ff201000000000L & l) != 0L)
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if ((0x3ff001000000000L & l) != 0L)
@@ -26354,8 +26397,8 @@
case 76:
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
}
if ((0x3ff000000000000L & l) != 0L)
@@ -26366,8 +26409,24 @@
jjCheckNAddTwoStates(25, 26);
if ((0x3ff201000000000L & l) != 0L)
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
+ jjCheckNAdd(23);
+ }
+ if ((0x3ff001000000000L & l) != 0L)
+ jjCheckNAddStates(68, 70);
+ if (curChar == 36)
+ jjCheckNAdd(27);
+ break;
+ case 31:
+ if ((0x7ff601000000000L & l) != 0L)
+ jjCheckNAddTwoStates(25, 26);
+ else if (curChar == 38)
+ jjstateSet[jjnewStateCnt++] = 32;
+ if ((0x3ff201000000000L & l) != 0L)
+ {
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if ((0x3ff001000000000L & l) != 0L)
@@ -26385,27 +26444,11 @@
if (curChar == 32)
jjCheckNAddTwoStates(61, 62);
break;
- case 31:
- if ((0x7ff601000000000L & l) != 0L)
- jjCheckNAddTwoStates(25, 26);
- else if (curChar == 38)
- jjstateSet[jjnewStateCnt++] = 32;
- if ((0x3ff201000000000L & l) != 0L)
- {
- if (kind > 820)
- kind = 820;
- jjCheckNAdd(23);
- }
- if ((0x3ff001000000000L & l) != 0L)
- jjCheckNAddStates(68, 70);
- if (curChar == 36)
- jjCheckNAdd(27);
- break;
case 74:
if (curChar == 47)
{
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(71, 73);
}
else if (curChar == 42)
@@ -26416,8 +26459,8 @@
jjCheckNAddTwoStates(25, 26);
if ((0x3ff201000000000L & l) != 0L)
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if (curChar == 36)
@@ -26434,8 +26477,8 @@
jjCheckNAddTwoStates(51, 52);
else if (curChar == 7)
{
- if (kind > 826)
- kind = 826;
+ if (kind > 829)
+ kind = 829;
}
else if (curChar == 45)
jjstateSet[jjnewStateCnt++] = 11;
@@ -26443,14 +26486,14 @@
jjCheckNAddStates(62, 64);
if ((0x3ff000000000000L & l) != 0L)
{
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(80, 86);
}
else if (curChar == 36)
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
break;
@@ -26467,8 +26510,8 @@
jjstateSet[jjnewStateCnt++] = 3;
break;
case 5:
- if (curChar == 39 && kind > 757)
- kind = 757;
+ if (curChar == 39 && kind > 758)
+ kind = 758;
break;
case 6:
if (curChar == 34)
@@ -26482,30 +26525,30 @@
jjCheckNAddStates(62, 64);
break;
case 10:
- if (curChar == 34 && kind > 763)
- kind = 763;
+ if (curChar == 34 && kind > 764)
+ kind = 764;
break;
case 11:
if (curChar != 45)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(71, 73);
break;
case 12:
if ((0xffffffffffffdbffL & l) == 0L)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(71, 73);
break;
case 13:
- if ((0x2400L & l) != 0L && kind > 812)
- kind = 812;
+ if ((0x2400L & l) != 0L && kind > 815)
+ kind = 815;
break;
case 14:
- if (curChar == 10 && kind > 812)
- kind = 812;
+ if (curChar == 10 && kind > 815)
+ kind = 815;
break;
case 15:
if (curChar == 13)
@@ -26522,15 +26565,15 @@
case 22:
if (curChar != 36)
break;
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
break;
case 23:
if ((0x3ff201000000000L & l) == 0L)
break;
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
break;
case 24:
@@ -26548,8 +26591,8 @@
case 27:
if (curChar != 36)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAddTwoStates(27, 28);
break;
case 28:
@@ -26559,8 +26602,8 @@
case 29:
if ((0x3ff001000000000L & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjCheckNAdd(29);
break;
case 32:
@@ -26580,25 +26623,25 @@
jjstateSet[jjnewStateCnt++] = 34;
break;
case 36:
- if (curChar == 34 && kind > 823)
- kind = 823;
+ if (curChar == 34 && kind > 826)
+ kind = 826;
break;
case 37:
- if (curChar == 7 && kind > 826)
- kind = 826;
+ if (curChar == 7 && kind > 829)
+ kind = 829;
break;
case 38:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAddStates(80, 86);
break;
case 39:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 751)
- kind = 751;
+ if (kind > 752)
+ kind = 752;
jjCheckNAdd(39);
break;
case 40:
@@ -26612,8 +26655,8 @@
case 43:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 752)
- kind = 752;
+ if (kind > 753)
+ kind = 753;
jjCheckNAdd(43);
break;
case 44:
@@ -26627,22 +26670,22 @@
case 46:
if (curChar != 46)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(47);
break;
case 47:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(47);
break;
case 48:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAddStates(93, 95);
break;
case 49:
@@ -26660,8 +26703,8 @@
case 52:
if ((0x3ff000000000000L & l) == 0L)
break;
- if (kind > 753)
- kind = 753;
+ if (kind > 754)
+ kind = 754;
jjCheckNAdd(52);
break;
case 53:
@@ -26676,13 +26719,13 @@
jjCheckNAddStates(65, 67);
break;
case 57:
- if (curChar == 39 && kind > 764)
- kind = 764;
- break;
- case 59:
if (curChar == 39 && kind > 765)
kind = 765;
break;
+ case 59:
+ if (curChar == 39 && kind > 766)
+ kind = 766;
+ break;
case 61:
if (curChar == 32)
jjCheckNAddTwoStates(61, 62);
@@ -26708,14 +26751,14 @@
jjstateSet[jjnewStateCnt++] = 73;
break;
case 73:
- if ((0xffff7fffffffffffL & l) != 0L && kind > 810)
- kind = 810;
+ if ((0xffff7fffffffffffL & l) != 0L && kind > 813)
+ kind = 813;
break;
case 75:
if (curChar != 47)
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjCheckNAddStates(71, 73);
break;
default : break;
@@ -26750,8 +26793,8 @@
jjCheckNAddStates(68, 70);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
break;
@@ -26762,8 +26805,20 @@
jjCheckNAddStates(68, 70);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
+ jjCheckNAdd(23);
+ }
+ break;
+ case 31:
+ if ((0x7fffffe87fffffeL & l) != 0L)
+ jjCheckNAddTwoStates(25, 26);
+ if ((0x7fffffe87fffffeL & l) != 0L)
+ jjCheckNAddStates(68, 70);
+ if ((0x7fffffe87fffffeL & l) != 0L)
+ {
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
break;
@@ -26774,25 +26829,13 @@
jjstateSet[jjnewStateCnt++] = 67;
else if ((0x1000000010L & l) != 0L)
{
- if (kind > 768)
- kind = 768;
- }
- if ((0x10000000100000L & l) != 0L)
- {
if (kind > 769)
kind = 769;
}
- break;
- case 31:
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddTwoStates(25, 26);
- if ((0x7fffffe87fffffeL & l) != 0L)
- jjCheckNAddStates(68, 70);
- if ((0x7fffffe87fffffeL & l) != 0L)
+ if ((0x10000000100000L & l) != 0L)
{
- if (kind > 820)
- kind = 820;
- jjCheckNAdd(23);
+ if (kind > 770)
+ kind = 770;
}
break;
case 80:
@@ -26800,8 +26843,8 @@
jjCheckNAddTwoStates(25, 26);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
break;
@@ -26814,8 +26857,8 @@
jjCheckNAddStates(87, 89);
if ((0x7fffffe87fffffeL & l) != 0L)
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if ((0x20000000200000L & l) != 0L)
@@ -26838,8 +26881,8 @@
jjCheckNAddStates(62, 64);
break;
case 12:
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(71, 73);
break;
case 17:
@@ -26858,21 +26901,21 @@
jjCheckNAddStates(87, 89);
break;
case 21:
- if (curChar == 96 && kind > 819)
- kind = 819;
+ if (curChar == 96 && kind > 822)
+ kind = 822;
break;
case 22:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
break;
case 23:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
break;
case 24:
@@ -26886,15 +26929,15 @@
case 27:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(108, 109);
break;
case 29:
if ((0x7fffffe87fffffeL & l) == 0L)
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 29;
break;
case 30:
@@ -26924,32 +26967,32 @@
jjAddStates(100, 107);
break;
case 62:
- if ((0x1000000010L & l) != 0L && kind > 768)
- kind = 768;
+ if ((0x1000000010L & l) != 0L && kind > 769)
+ kind = 769;
break;
case 64:
- if ((0x10000000100000L & l) != 0L && kind > 769)
- kind = 769;
+ if ((0x10000000100000L & l) != 0L && kind > 770)
+ kind = 770;
break;
case 66:
if ((0x10000000100000L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 67;
break;
case 67:
- if ((0x8000000080000L & l) != 0L && kind > 770)
- kind = 770;
+ if ((0x8000000080000L & l) != 0L && kind > 771)
+ kind = 771;
break;
case 69:
if ((0x4000000040L & l) != 0L)
jjstateSet[jjnewStateCnt++] = 70;
break;
case 70:
- if ((0x400000004000L & l) != 0L && kind > 771)
- kind = 771;
+ if ((0x400000004000L & l) != 0L && kind > 772)
+ kind = 772;
break;
case 73:
- if (kind > 810)
- kind = 810;
+ if (kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -26981,8 +27024,8 @@
case 1:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -26993,8 +27036,8 @@
case 78:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -27005,8 +27048,8 @@
case 31:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -27017,8 +27060,8 @@
case 80:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -27027,8 +27070,8 @@
case 0:
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
{
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
}
if (jjCanMove_1(hiByte, i1, i2, l1, l2))
@@ -27041,8 +27084,8 @@
case 12:
if (!jjCanMove_0(hiByte, i1, i2, l1, l2))
break;
- if (kind > 812)
- kind = 812;
+ if (kind > 815)
+ kind = 815;
jjAddStates(71, 73);
break;
case 18:
@@ -27053,15 +27096,15 @@
case 22:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
break;
case 23:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 820)
- kind = 820;
+ if (kind > 823)
+ kind = 823;
jjCheckNAdd(23);
break;
case 24:
@@ -27075,15 +27118,15 @@
case 27:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjAddStates(108, 109);
break;
case 29:
if (!jjCanMove_1(hiByte, i1, i2, l1, l2))
break;
- if (kind > 822)
- kind = 822;
+ if (kind > 825)
+ kind = 825;
jjstateSet[jjnewStateCnt++] = 29;
break;
case 33:
@@ -27096,8 +27139,8 @@
jjCheckNAddStates(65, 67);
break;
case 73:
- if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 810)
- kind = 810;
+ if (jjCanMove_0(hiByte, i1, i2, l1, l2) && kind > 813)
+ kind = 813;
break;
default : break;
}
@@ -27214,13 +27257,13 @@
null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, null, null, null, null, null, null, null, null, null, null, "\50", "\51", null,
-null, null, null, "\173", "\175", "\133", "\135", "\73", "\56", "\54", "\75", "\76",
-"\74", "\77", "\72", "\74\75", "\76\75", "\74\76", "\41\75", "\53", "\55", "\55\76",
-"\52", "\57", "\45", "\174\174", "\75\76", "\56\56", "\47", "\42", "\174", "\136",
-"\44", "\72\72", null, null, null, null, null, "\57\52\53", "\52\57", null, null,
-null, null, null, null, null, null, null, null, null, null, null, null, null, null,
-null, };
+null, null, null, null, null, null, null, null, null, null, null, null, "\50",
+"\51", null, null, null, null, "\173", "\175", "\133", "\135", "\73", "\56", "\54",
+"\75", "\76", "\74", "\77", "\72", "\74\75", "\76\75", "\74\76", "\41\75", "\53",
+"\55", "\55\76", "\52", "\57", "\45", "\174\174", "\75\76", "\56\56", "\47", "\42",
+"\174", "\136", "\46", "\74\74", "\44", "\72\72", null, null, null, null, null,
+"\57\52\53", "\52\57", null, null, null, null, null, null, null, null, null, null, null,
+null, null, null, null, null, null, };
public static final String[] lexStateNames = {
"DEFAULT",
"DQID",
@@ -27263,32 +27306,32 @@
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 5, 6, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1,
};
static final long[] jjtoToken = {
0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL,
0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL,
- 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xfbe3ffffffffffffL,
- 0x4ff0307ffffffffL,
+ 0xffffffffffffffffL, 0xffffffffffffffffL, 0xffffffffffffffffL, 0xf7c7ffffffffffffL,
+ 0x27f8183fffffffffL,
};
static final long[] jjtoSkip = {
0x0L, 0x0L, 0x0L, 0x0L,
0x0L, 0x0L, 0x0L, 0x0L,
0x0L, 0x0L, 0x0L, 0x0L,
- 0x70f800000000L,
+ 0x387c000000000L,
};
static final long[] jjtoSpecial = {
0x0L, 0x0L, 0x0L, 0x0L,
0x0L, 0x0L, 0x0L, 0x0L,
0x0L, 0x0L, 0x0L, 0x0L,
- 0x600000000000L,
+ 0x3000000000000L,
};
static final long[] jjtoMore = {
0x0L, 0x0L, 0x0L, 0x0L,
0x0L, 0x0L, 0x0L, 0x0L,
0x0L, 0x0L, 0x0L, 0x0L,
- 0x8c0000000000L,
+ 0x4600000000000L,
};
protected SimpleCharStream input_stream;
private final int[] jjrounds = new int[94];
@@ -27435,18 +27478,18 @@
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = jjMoveStringLiteralDfa0_5();
- if (jjmatchedPos == 0 && jjmatchedKind > 815)
+ if (jjmatchedPos == 0 && jjmatchedKind > 818)
{
- jjmatchedKind = 815;
+ jjmatchedKind = 818;
}
break;
case 6:
jjmatchedKind = 0x7fffffff;
jjmatchedPos = 0;
curPos = jjMoveStringLiteralDfa0_6();
- if (jjmatchedPos == 0 && jjmatchedKind > 815)
+ if (jjmatchedPos == 0 && jjmatchedKind > 818)
{
- jjmatchedKind = 815;
+ jjmatchedKind = 818;
}
break;
}
@@ -27522,13 +27565,13 @@
{
switch(jjmatchedKind)
{
- case 813 :
+ case 816 :
if (image == null)
image = new StringBuffer();
image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
popState();
break;
- case 814 :
+ case 817 :
if (image == null)
image = new StringBuffer();
image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
@@ -27543,14 +27586,14 @@
jjimageLen += (lengthOfMatch = jjmatchedPos + 1);
switch(jjmatchedKind)
{
- case 810 :
+ case 813 :
if (image == null)
image = new StringBuffer();
image.append(input_stream.GetSuffix(jjimageLen));
jjimageLen = 0;
pushState();
break;
- case 811 :
+ case 814 :
if (image == null)
image = new StringBuffer();
image.append(input_stream.GetSuffix(jjimageLen));
@@ -27619,19 +27662,19 @@
image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
beforeTableName();
break;
- case 676 :
+ case 677 :
if (image == null)
image = new StringBuffer();
image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
beforeTableName();
break;
- case 691 :
+ case 692 :
if (image == null)
image = new StringBuffer();
image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
afterTableName();
break;
- case 820 :
+ case 823 :
if (image == null)
image = new StringBuffer();
image.append(input_stream.GetSuffix(jjimageLen + (lengthOfMatch = jjmatchedPos + 1)));
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/ParseException.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/ParseException.java
index f681bff..3945667 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/ParseException.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/ParseException.java
@@ -1,4 +1,5 @@
-/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 3.0 */
+/* Generated By:JavaCC: Do not edit this line. ParseException.java Version 5.0 */
+/* JavaCCOptions:KEEP_LINE_COL=null */
package org.apache.ignite.internal.processors.query.calcite.sql.generated;
/**
@@ -13,24 +14,24 @@
public class ParseException extends Exception {
/**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
+
+ /**
* This constructor is used by the method "generateParseException"
* in the generated parser. Calling this constructor generates
* a new object of this type with the fields "currentToken",
- * "expectedTokenSequences", and "tokenImage" set. The boolean
- * flag "specialConstructor" is also set to true to indicate that
- * this constructor was used to create this object.
- * This constructor calls its super class with the empty string
- * to force the "toString" method of parent class "Throwable" to
- * print the error message in the form:
- * ParseException: <result of getMessage>
+ * "expectedTokenSequences", and "tokenImage" set.
*/
public ParseException(Token currentTokenVal,
int[][] expectedTokenSequencesVal,
String[] tokenImageVal
)
{
- super("");
- specialConstructor = true;
+ super(initialise(currentTokenVal, expectedTokenSequencesVal, tokenImageVal));
currentToken = currentTokenVal;
expectedTokenSequences = expectedTokenSequencesVal;
tokenImage = tokenImageVal;
@@ -48,20 +49,13 @@
public ParseException() {
super();
- specialConstructor = false;
}
+ /** Constructor with message. */
public ParseException(String message) {
super(message);
- specialConstructor = false;
}
- /**
- * This variable determines which constructor was used to create
- * this object and thereby affects the semantics of the
- * "getMessage" method (see below).
- */
- protected boolean specialConstructor;
/**
* This is the last token that has been consumed successfully. If
@@ -85,19 +79,16 @@
public String[] tokenImage;
/**
- * This method has the standard behavior when this object has been
- * created using the standard constructors. Otherwise, it uses
- * "currentToken" and "expectedTokenSequences" to generate a parse
+ * It uses "currentToken" and "expectedTokenSequences" to generate a parse
* error message and returns it. If this object has been created
* due to a parse error, and you do not catch it (it gets thrown
- * from the parser), then this method is called during the printing
- * of the final stack trace, and hence the correct error message
+ * from the parser) the correct error message
* gets displayed.
*/
- public String getMessage() {
- if (!specialConstructor) {
- return super.getMessage();
- }
+ private static String initialise(Token currentToken,
+ int[][] expectedTokenSequences,
+ String[] tokenImage) {
+ String eol = System.getProperty("line.separator", "\n");
StringBuffer expected = new StringBuffer();
int maxSize = 0;
for (int i = 0; i < expectedTokenSequences.length; i++) {
@@ -105,7 +96,7 @@
maxSize = expectedTokenSequences[i].length;
}
for (int j = 0; j < expectedTokenSequences[i].length; j++) {
- expected.append(tokenImage[expectedTokenSequences[i][j]]).append(" ");
+ expected.append(tokenImage[expectedTokenSequences[i][j]]).append(' ');
}
if (expectedTokenSequences[i][expectedTokenSequences[i].length - 1] != 0) {
expected.append("...");
@@ -120,8 +111,11 @@
retval += tokenImage[0];
break;
}
+ retval += " " + tokenImage[tok.kind];
+ retval += " \"";
retval += add_escapes(tok.image);
- tok = tok.next;
+ retval += " \"";
+ tok = tok.next;
}
retval += "\" at line " + currentToken.next.beginLine + ", column " + currentToken.next.beginColumn;
retval += "." + eol;
@@ -138,13 +132,13 @@
* The end of line string for this machine.
*/
protected String eol = System.getProperty("line.separator", "\n");
-
+
/**
* Used to convert raw characters to their escaped version
* when these raw version cannot be used as part of an ASCII
* string literal.
*/
- protected String add_escapes(String str) {
+ static String add_escapes(String str) {
StringBuffer retval = new StringBuffer();
char ch;
for (int i = 0; i < str.length(); i++) {
@@ -190,3 +184,4 @@
}
}
+/* JavaCC - OriginalChecksum=93a5494f66aec9ac468759454ec1d80c (do not edit this line) */
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/SimpleCharStream.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/SimpleCharStream.java
index 91ec3d3..99af9cc 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/SimpleCharStream.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/SimpleCharStream.java
@@ -1,4 +1,5 @@
-/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 4.0 */
+/* Generated By:JavaCC: Do not edit this line. SimpleCharStream.java Version 5.0 */
+/* JavaCCOptions:STATIC=false,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
package org.apache.ignite.internal.processors.query.calcite.sql.generated;
/**
@@ -8,10 +9,12 @@
public class SimpleCharStream
{
+/** Whether parser is static. */
public static final boolean staticFlag = false;
int bufsize;
int available;
int tokenBegin;
+/** Position in buffer. */
public int bufpos = -1;
protected int bufline[];
protected int bufcolumn[];
@@ -35,210 +38,218 @@
protected void ExpandBuff(boolean wrapAround)
{
- char[] newbuffer = new char[bufsize + 2048];
- int newbufline[] = new int[bufsize + 2048];
- int newbufcolumn[] = new int[bufsize + 2048];
+ char[] newbuffer = new char[bufsize + 2048];
+ int newbufline[] = new int[bufsize + 2048];
+ int newbufcolumn[] = new int[bufsize + 2048];
- try
- {
- if (wrapAround)
- {
- System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
- System.arraycopy(buffer, 0, newbuffer,
- bufsize - tokenBegin, bufpos);
- buffer = newbuffer;
+ try
+ {
+ if (wrapAround)
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ System.arraycopy(buffer, 0, newbuffer, bufsize - tokenBegin, bufpos);
+ buffer = newbuffer;
- System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
- System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
- bufline = newbufline;
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ System.arraycopy(bufline, 0, newbufline, bufsize - tokenBegin, bufpos);
+ bufline = newbufline;
- System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
- System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
- bufcolumn = newbufcolumn;
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ System.arraycopy(bufcolumn, 0, newbufcolumn, bufsize - tokenBegin, bufpos);
+ bufcolumn = newbufcolumn;
- maxNextCharInd = (bufpos += (bufsize - tokenBegin));
- }
- else
- {
- System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
- buffer = newbuffer;
+ maxNextCharInd = (bufpos += (bufsize - tokenBegin));
+ }
+ else
+ {
+ System.arraycopy(buffer, tokenBegin, newbuffer, 0, bufsize - tokenBegin);
+ buffer = newbuffer;
- System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
- bufline = newbufline;
+ System.arraycopy(bufline, tokenBegin, newbufline, 0, bufsize - tokenBegin);
+ bufline = newbufline;
- System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
- bufcolumn = newbufcolumn;
+ System.arraycopy(bufcolumn, tokenBegin, newbufcolumn, 0, bufsize - tokenBegin);
+ bufcolumn = newbufcolumn;
- maxNextCharInd = (bufpos -= tokenBegin);
- }
- }
- catch (Throwable t)
- {
- throw new Error(t.getMessage());
- }
+ maxNextCharInd = (bufpos -= tokenBegin);
+ }
+ }
+ catch (Throwable t)
+ {
+ throw new Error(t.getMessage());
+ }
- bufsize += 2048;
- available = bufsize;
- tokenBegin = 0;
+ bufsize += 2048;
+ available = bufsize;
+ tokenBegin = 0;
}
protected void FillBuff() throws java.io.IOException
{
- if (maxNextCharInd == available)
- {
- if (available == bufsize)
+ if (maxNextCharInd == available)
+ {
+ if (available == bufsize)
+ {
+ if (tokenBegin > 2048)
{
- if (tokenBegin > 2048)
- {
- bufpos = maxNextCharInd = 0;
- available = tokenBegin;
- }
- else if (tokenBegin < 0)
- bufpos = maxNextCharInd = 0;
- else
- ExpandBuff(false);
+ bufpos = maxNextCharInd = 0;
+ available = tokenBegin;
}
- else if (available > tokenBegin)
- available = bufsize;
- else if ((tokenBegin - available) < 2048)
- ExpandBuff(true);
+ else if (tokenBegin < 0)
+ bufpos = maxNextCharInd = 0;
else
- available = tokenBegin;
- }
+ ExpandBuff(false);
+ }
+ else if (available > tokenBegin)
+ available = bufsize;
+ else if ((tokenBegin - available) < 2048)
+ ExpandBuff(true);
+ else
+ available = tokenBegin;
+ }
- int i;
- try {
- if ((i = inputStream.read(buffer, maxNextCharInd,
- available - maxNextCharInd)) == -1)
- {
- inputStream.close();
- throw new java.io.IOException();
- }
- else
- maxNextCharInd += i;
- return;
- }
- catch(java.io.IOException e) {
- --bufpos;
- backup(0);
- if (tokenBegin == -1)
- tokenBegin = bufpos;
- throw e;
- }
+ int i;
+ try {
+ if ((i = inputStream.read(buffer, maxNextCharInd, available - maxNextCharInd)) == -1)
+ {
+ inputStream.close();
+ throw new java.io.IOException();
+ }
+ else
+ maxNextCharInd += i;
+ return;
+ }
+ catch(java.io.IOException e) {
+ --bufpos;
+ backup(0);
+ if (tokenBegin == -1)
+ tokenBegin = bufpos;
+ throw e;
+ }
}
+/** Start. */
public char BeginToken() throws java.io.IOException
{
- tokenBegin = -1;
- char c = readChar();
- tokenBegin = bufpos;
+ tokenBegin = -1;
+ char c = readChar();
+ tokenBegin = bufpos;
- return c;
+ return c;
}
protected void UpdateLineColumn(char c)
{
- column++;
+ column++;
- if (prevCharIsLF)
- {
- prevCharIsLF = false;
+ if (prevCharIsLF)
+ {
+ prevCharIsLF = false;
+ line += (column = 1);
+ }
+ else if (prevCharIsCR)
+ {
+ prevCharIsCR = false;
+ if (c == '\n')
+ {
+ prevCharIsLF = true;
+ }
+ else
line += (column = 1);
- }
- else if (prevCharIsCR)
- {
- prevCharIsCR = false;
- if (c == '\n')
- {
- prevCharIsLF = true;
- }
- else
- line += (column = 1);
- }
+ }
- switch (c)
- {
- case '\r' :
- prevCharIsCR = true;
- break;
- case '\n' :
- prevCharIsLF = true;
- break;
- case '\t' :
- column--;
- column += (tabSize - (column % tabSize));
- break;
- default :
- break;
- }
+ switch (c)
+ {
+ case '\r' :
+ prevCharIsCR = true;
+ break;
+ case '\n' :
+ prevCharIsLF = true;
+ break;
+ case '\t' :
+ column--;
+ column += (tabSize - (column % tabSize));
+ break;
+ default :
+ break;
+ }
- bufline[bufpos] = line;
- bufcolumn[bufpos] = column;
+ bufline[bufpos] = line;
+ bufcolumn[bufpos] = column;
}
+/** Read a character. */
public char readChar() throws java.io.IOException
{
- if (inBuf > 0)
- {
- --inBuf;
+ if (inBuf > 0)
+ {
+ --inBuf;
- if (++bufpos == bufsize)
- bufpos = 0;
+ if (++bufpos == bufsize)
+ bufpos = 0;
- return buffer[bufpos];
- }
+ return buffer[bufpos];
+ }
- if (++bufpos >= maxNextCharInd)
- FillBuff();
+ if (++bufpos >= maxNextCharInd)
+ FillBuff();
- char c = buffer[bufpos];
+ char c = buffer[bufpos];
- UpdateLineColumn(c);
- return (c);
+ UpdateLineColumn(c);
+ return c;
}
+ @Deprecated
/**
- * @deprecated
+ * @deprecated
* @see #getEndColumn
*/
public int getColumn() {
- return bufcolumn[bufpos];
+ return bufcolumn[bufpos];
}
+ @Deprecated
/**
- * @deprecated
+ * @deprecated
* @see #getEndLine
*/
public int getLine() {
- return bufline[bufpos];
+ return bufline[bufpos];
}
+ /** Get token end column number. */
public int getEndColumn() {
- return bufcolumn[bufpos];
+ return bufcolumn[bufpos];
}
+ /** Get token end line number. */
public int getEndLine() {
return bufline[bufpos];
}
+ /** Get token beginning column number. */
public int getBeginColumn() {
- return bufcolumn[tokenBegin];
+ return bufcolumn[tokenBegin];
}
+ /** Get token beginning line number. */
public int getBeginLine() {
- return bufline[tokenBegin];
+ return bufline[tokenBegin];
}
+/** Backup a number of characters. */
public void backup(int amount) {
inBuf += amount;
if ((bufpos -= amount) < 0)
- bufpos += bufsize;
+ bufpos += bufsize;
}
+ /** Constructor. */
public SimpleCharStream(java.io.Reader dstream, int startline,
int startcolumn, int buffersize)
{
@@ -252,16 +263,20 @@
bufcolumn = new int[buffersize];
}
+ /** Constructor. */
public SimpleCharStream(java.io.Reader dstream, int startline,
int startcolumn)
{
- this(dstream, startline, startcolumn, 4096);
+ this(dstream, startline, startcolumn, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.Reader dstream)
{
- this(dstream, 1, 1, 4096);
+ this(dstream, 1, 1, 4096);
}
+
+ /** Reinitialise. */
public void ReInit(java.io.Reader dstream, int startline,
int startcolumn, int buffersize)
{
@@ -281,111 +296,128 @@
bufpos = -1;
}
+ /** Reinitialise. */
public void ReInit(java.io.Reader dstream, int startline,
int startcolumn)
{
- ReInit(dstream, startline, startcolumn, 4096);
+ ReInit(dstream, startline, startcolumn, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.Reader dstream)
{
- ReInit(dstream, 1, 1, 4096);
+ ReInit(dstream, 1, 1, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
{
- this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ this(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, int startline,
int startcolumn, int buffersize)
{
- this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ this(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, String encoding, int startline,
int startcolumn) throws java.io.UnsupportedEncodingException
{
- this(dstream, encoding, startline, startcolumn, 4096);
+ this(dstream, encoding, startline, startcolumn, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, int startline,
int startcolumn)
{
- this(dstream, startline, startcolumn, 4096);
+ this(dstream, startline, startcolumn, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
{
- this(dstream, encoding, 1, 1, 4096);
+ this(dstream, encoding, 1, 1, 4096);
}
+ /** Constructor. */
public SimpleCharStream(java.io.InputStream dstream)
{
- this(dstream, 1, 1, 4096);
+ this(dstream, 1, 1, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, String encoding, int startline,
int startcolumn, int buffersize) throws java.io.UnsupportedEncodingException
{
- ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
+ ReInit(encoding == null ? new java.io.InputStreamReader(dstream) : new java.io.InputStreamReader(dstream, encoding), startline, startcolumn, buffersize);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, int startline,
int startcolumn, int buffersize)
{
- ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
+ ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, buffersize);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, String encoding) throws java.io.UnsupportedEncodingException
{
- ReInit(dstream, encoding, 1, 1, 4096);
+ ReInit(dstream, encoding, 1, 1, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream)
{
- ReInit(dstream, 1, 1, 4096);
+ ReInit(dstream, 1, 1, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, String encoding, int startline,
int startcolumn) throws java.io.UnsupportedEncodingException
{
- ReInit(dstream, encoding, startline, startcolumn, 4096);
+ ReInit(dstream, encoding, startline, startcolumn, 4096);
}
+ /** Reinitialise. */
public void ReInit(java.io.InputStream dstream, int startline,
int startcolumn)
{
- ReInit(dstream, startline, startcolumn, 4096);
+ ReInit(dstream, startline, startcolumn, 4096);
}
+ /** Get token literal value. */
public String GetImage()
{
- if (bufpos >= tokenBegin)
- return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
- else
- return new String(buffer, tokenBegin, bufsize - tokenBegin) +
- new String(buffer, 0, bufpos + 1);
+ if (bufpos >= tokenBegin)
+ return new String(buffer, tokenBegin, bufpos - tokenBegin + 1);
+ else
+ return new String(buffer, tokenBegin, bufsize - tokenBegin) +
+ new String(buffer, 0, bufpos + 1);
}
+ /** Get the suffix. */
public char[] GetSuffix(int len)
{
- char[] ret = new char[len];
+ char[] ret = new char[len];
- if ((bufpos + 1) >= len)
- System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
- else
- {
- System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
- len - bufpos - 1);
- System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
- }
+ if ((bufpos + 1) >= len)
+ System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
+ else
+ {
+ System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
+ len - bufpos - 1);
+ System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
+ }
- return ret;
+ return ret;
}
+ /** Reset buffer when finished. */
public void Done()
{
- buffer = null;
- bufline = null;
- bufcolumn = null;
+ buffer = null;
+ bufline = null;
+ bufcolumn = null;
}
/**
@@ -393,47 +425,47 @@
*/
public void adjustBeginLineColumn(int newLine, int newCol)
{
- int start = tokenBegin;
- int len;
+ int start = tokenBegin;
+ int len;
- if (bufpos >= tokenBegin)
- {
- len = bufpos - tokenBegin + inBuf + 1;
- }
- else
- {
- len = bufsize - tokenBegin + bufpos + 1 + inBuf;
- }
+ if (bufpos >= tokenBegin)
+ {
+ len = bufpos - tokenBegin + inBuf + 1;
+ }
+ else
+ {
+ len = bufsize - tokenBegin + bufpos + 1 + inBuf;
+ }
- int i = 0, j = 0, k = 0;
- int nextColDiff = 0, columnDiff = 0;
+ int i = 0, j = 0, k = 0;
+ int nextColDiff = 0, columnDiff = 0;
- while (i < len &&
- bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
- {
- bufline[j] = newLine;
- nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
- bufcolumn[j] = newCol + columnDiff;
- columnDiff = nextColDiff;
- i++;
- }
+ while (i < len && bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
+ {
+ bufline[j] = newLine;
+ nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
+ bufcolumn[j] = newCol + columnDiff;
+ columnDiff = nextColDiff;
+ i++;
+ }
- if (i < len)
- {
- bufline[j] = newLine++;
- bufcolumn[j] = newCol + columnDiff;
+ if (i < len)
+ {
+ bufline[j] = newLine++;
+ bufcolumn[j] = newCol + columnDiff;
- while (i++ < len)
- {
- if (bufline[j = start % bufsize] != bufline[++start % bufsize])
- bufline[j] = newLine++;
- else
- bufline[j] = newLine;
- }
- }
+ while (i++ < len)
+ {
+ if (bufline[j = start % bufsize] != bufline[++start % bufsize])
+ bufline[j] = newLine++;
+ else
+ bufline[j] = newLine;
+ }
+ }
- line = bufline[j];
- column = bufcolumn[j];
+ line = bufline[j];
+ column = bufcolumn[j];
}
}
+/* JavaCC - OriginalChecksum=03a78f94841b395dc9164684aab2ea1a (do not edit this line) */
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/Token.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/Token.java
index c541462..122c6b3 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/Token.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/Token.java
@@ -1,11 +1,19 @@
-/* Generated By:JavaCC: Do not edit this line. Token.java Version 3.0 */
+/* Generated By:JavaCC: Do not edit this line. Token.java Version 5.0 */
+/* JavaCCOptions:TOKEN_EXTENDS=,KEEP_LINE_COL=null,SUPPORT_CLASS_VISIBILITY_PUBLIC=true */
package org.apache.ignite.internal.processors.query.calcite.sql.generated;
/**
* Describes the input token stream.
*/
-public class Token {
+public class Token implements java.io.Serializable {
+
+ /**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
/**
* An integer that describes the kind of this token. This numbering
@@ -14,12 +22,14 @@
*/
public int kind;
- /**
- * beginLine and beginColumn describe the position of the first character
- * of this token; endLine and endColumn describe the position of the
- * last character of this token.
- */
- public int beginLine, beginColumn, endLine, endColumn;
+ /** The line number of the first character of this Token. */
+ public int beginLine;
+ /** The column number of the first character of this Token. */
+ public int beginColumn;
+ /** The line number of the last character of this Token. */
+ public int endLine;
+ /** The column number of the last character of this Token. */
+ public int endColumn;
/**
* The string image of the token.
@@ -51,11 +61,45 @@
public Token specialToken;
/**
+ * An optional attribute value of the Token.
+ * Tokens which are not used as syntactic sugar will often contain
+ * meaningful values that will be used later on by the compiler or
+ * interpreter. This attribute value is often different from the image.
+ * Any subclass of Token that actually wants to return a non-null value can
+ * override this method as appropriate.
+ */
+ public Object getValue() {
+ return null;
+ }
+
+ /**
+ * No-argument constructor
+ */
+ public Token() {}
+
+ /**
+ * Constructs a new token for the specified Image.
+ */
+ public Token(int kind)
+ {
+ this(kind, null);
+ }
+
+ /**
+ * Constructs a new token for the specified Image and Kind.
+ */
+ public Token(int kind, String image)
+ {
+ this.kind = kind;
+ this.image = image;
+ }
+
+ /**
* Returns the image.
*/
public String toString()
{
- return image;
+ return image;
}
/**
@@ -63,19 +107,25 @@
* can create and return subclass objects based on the value of ofKind.
* Simply add the cases to the switch for all those special cases.
* For example, if you have a subclass of Token called IDToken that
- * you want to create if ofKind is ID, simlpy add something like :
+ * you want to create if ofKind is ID, simply add something like :
*
- * case MyParserConstants.ID : return new IDToken();
+ * case MyParserConstants.ID : return new IDToken(ofKind, image);
*
* to the following switch statement. Then you can cast matchedToken
- * variable to the appropriate type and use it in your lexical actions.
+ * variable to the appropriate type and use sit in your lexical actions.
*/
- public static final Token newToken(int ofKind)
+ public static Token newToken(int ofKind, String image)
{
- switch(ofKind)
- {
- default : return new Token();
- }
+ switch(ofKind)
+ {
+ default : return new Token(ofKind, image);
+ }
+ }
+
+ public static Token newToken(int ofKind)
+ {
+ return newToken(ofKind, null);
}
}
+/* JavaCC - OriginalChecksum=b1d06cea3c141751bbf19cb898f9de74 (do not edit this line) */
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/TokenMgrError.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/TokenMgrError.java
index e8862d5..eb18e1e 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/TokenMgrError.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/generated/TokenMgrError.java
@@ -1,133 +1,147 @@
-/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 3.0 */
+/* Generated By:JavaCC: Do not edit this line. TokenMgrError.java Version 5.0 */
+/* JavaCCOptions: */
package org.apache.ignite.internal.processors.query.calcite.sql.generated;
+/** Token Manager Error. */
public class TokenMgrError extends Error
{
- /*
- * Ordinals for various reasons why an Error of this type can be thrown.
- */
- /**
- * Lexical error occured.
- */
- static final int LEXICAL_ERROR = 0;
+ /**
+ * The version identifier for this Serializable class.
+ * Increment only if the <i>serialized</i> form of the
+ * class changes.
+ */
+ private static final long serialVersionUID = 1L;
- /**
- * An attempt wass made to create a second instance of a static token manager.
- */
- static final int STATIC_LEXER_ERROR = 1;
+ /*
+ * Ordinals for various reasons why an Error of this type can be thrown.
+ */
- /**
- * Tried to change to an invalid lexical state.
- */
- static final int INVALID_LEXICAL_STATE = 2;
+ /**
+ * Lexical error occurred.
+ */
+ static final int LEXICAL_ERROR = 0;
- /**
- * Detected (and bailed out of) an infinite loop in the token manager.
- */
- static final int LOOP_DETECTED = 3;
+ /**
+ * An attempt was made to create a second instance of a static token manager.
+ */
+ static final int STATIC_LEXER_ERROR = 1;
- /**
- * Indicates the reason why the exception is thrown. It will have
- * one of the above 4 values.
- */
- int errorCode;
+ /**
+ * Tried to change to an invalid lexical state.
+ */
+ static final int INVALID_LEXICAL_STATE = 2;
- /**
- * Replaces unprintable characters by their espaced (or unicode escaped)
- * equivalents in the given string
- */
- protected static final String addEscapes(String str) {
- StringBuffer retval = new StringBuffer();
- char ch;
- for (int i = 0; i < str.length(); i++) {
- switch (str.charAt(i))
- {
- case 0 :
- continue;
- case '\b':
- retval.append("\\b");
- continue;
- case '\t':
- retval.append("\\t");
- continue;
- case '\n':
- retval.append("\\n");
- continue;
- case '\f':
- retval.append("\\f");
- continue;
- case '\r':
- retval.append("\\r");
- continue;
- case '\"':
- retval.append("\\\"");
- continue;
- case '\'':
- retval.append("\\\'");
- continue;
- case '\\':
- retval.append("\\\\");
- continue;
- default:
- if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
- String s = "0000" + Integer.toString(ch, 16);
- retval.append("\\u" + s.substring(s.length() - 4, s.length()));
- } else {
- retval.append(ch);
- }
- continue;
- }
+ /**
+ * Detected (and bailed out of) an infinite loop in the token manager.
+ */
+ static final int LOOP_DETECTED = 3;
+
+ /**
+ * Indicates the reason why the exception is thrown. It will have
+ * one of the above 4 values.
+ */
+ int errorCode;
+
+ /**
+ * Replaces unprintable characters by their escaped (or unicode escaped)
+ * equivalents in the given string
+ */
+ protected static final String addEscapes(String str) {
+ StringBuffer retval = new StringBuffer();
+ char ch;
+ for (int i = 0; i < str.length(); i++) {
+ switch (str.charAt(i))
+ {
+ case 0 :
+ continue;
+ case '\b':
+ retval.append("\\b");
+ continue;
+ case '\t':
+ retval.append("\\t");
+ continue;
+ case '\n':
+ retval.append("\\n");
+ continue;
+ case '\f':
+ retval.append("\\f");
+ continue;
+ case '\r':
+ retval.append("\\r");
+ continue;
+ case '\"':
+ retval.append("\\\"");
+ continue;
+ case '\'':
+ retval.append("\\\'");
+ continue;
+ case '\\':
+ retval.append("\\\\");
+ continue;
+ default:
+ if ((ch = str.charAt(i)) < 0x20 || ch > 0x7e) {
+ String s = "0000" + Integer.toString(ch, 16);
+ retval.append("\\u" + s.substring(s.length() - 4, s.length()));
+ } else {
+ retval.append(ch);
+ }
+ continue;
}
- return retval.toString();
- }
+ }
+ return retval.toString();
+ }
- /**
- * Returns a detailed message for the Error when it is thrown by the
- * token manager to indicate a lexical error.
- * Parameters :
- * EOFSeen : indicates if EOF caused the lexicl error
- * curLexState : lexical state in which this error occured
- * errorLine : line number when the error occured
- * errorColumn : column number when the error occured
- * errorAfter : prefix that was seen before this error occured
- * curchar : the offending character
- * Note: You can customize the lexical error message by modifying this method.
- */
- protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
- return("Lexical error at line " +
- errorLine + ", column " +
- errorColumn + ". Encountered: " +
- (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
- "after : \"" + addEscapes(errorAfter) + "\"");
- }
+ /**
+ * Returns a detailed message for the Error when it is thrown by the
+ * token manager to indicate a lexical error.
+ * Parameters :
+ * EOFSeen : indicates if EOF caused the lexical error
+ * curLexState : lexical state in which this error occurred
+ * errorLine : line number when the error occurred
+ * errorColumn : column number when the error occurred
+ * errorAfter : prefix that was seen before this error occurred
+ * curchar : the offending character
+ * Note: You can customize the lexical error message by modifying this method.
+ */
+ protected static String LexicalError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar) {
+ return("Lexical error at line " +
+ errorLine + ", column " +
+ errorColumn + ". Encountered: " +
+ (EOFSeen ? "<EOF> " : ("\"" + addEscapes(String.valueOf(curChar)) + "\"") + " (" + (int)curChar + "), ") +
+ "after : \"" + addEscapes(errorAfter) + "\"");
+ }
- /**
- * You can also modify the body of this method to customize your error messages.
- * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
- * of end-users concern, so you can return something like :
- *
- * "Internal Error : Please file a bug report .... "
- *
- * from this method for such cases in the release version of your parser.
- */
- public String getMessage() {
- return super.getMessage();
- }
+ /**
+ * You can also modify the body of this method to customize your error messages.
+ * For example, cases like LOOP_DETECTED and INVALID_LEXICAL_STATE are not
+ * of end-users concern, so you can return something like :
+ *
+ * "Internal Error : Please file a bug report .... "
+ *
+ * from this method for such cases in the release version of your parser.
+ */
+ public String getMessage() {
+ return super.getMessage();
+ }
- /*
- * Constructors of various flavors follow.
- */
+ /*
+ * Constructors of various flavors follow.
+ */
- public TokenMgrError() {
- }
+ /** No arg constructor. */
+ public TokenMgrError() {
+ }
- public TokenMgrError(String message, int reason) {
- super(message);
- errorCode = reason;
- }
+ /** Constructor with message and reason. */
+ public TokenMgrError(String message, int reason) {
+ super(message);
+ errorCode = reason;
+ }
- public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
- this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
- }
+ /** Full Constructor. */
+ public TokenMgrError(boolean EOFSeen, int lexState, int errorLine, int errorColumn, String errorAfter, char curChar, int reason) {
+ this(LexicalError(EOFSeen, lexState, errorLine, errorColumn, errorAfter, curChar), reason);
+ }
}
+/* JavaCC - OriginalChecksum=3a07dcffb6d9deef48a9f20ea779e1bf (do not edit this line) */
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/trait/TraitUtils.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/trait/TraitUtils.java
index ff27c6e..f89fd36 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/trait/TraitUtils.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/trait/TraitUtils.java
@@ -48,6 +48,7 @@
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.AggregateCall;
import org.apache.calcite.rel.core.Spool;
+import org.apache.calcite.rel.core.Window;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rex.RexInputRef;
import org.apache.calcite.rex.RexLiteral;
@@ -383,6 +384,10 @@
@Override public List<SearchBounds> getSearchBounds(String tag) {
return ((RelInputEx)input).getSearchBounds(tag);
}
+
+ @Override public Window.Group getWindowGroup(String tag) {
+ return ((RelInputEx)input).getWindowGroup(tag);
+ }
};
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeSystem.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeSystem.java
index 47c53c8c..a050096 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeSystem.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeSystem.java
@@ -34,13 +34,23 @@
public static final RelDataTypeSystem INSTANCE = new IgniteTypeSystem();
/** {@inheritDoc} */
- @Override public int getMaxNumericScale() {
- return Short.MAX_VALUE;
+ @Override public int getMaxScale(SqlTypeName typeName) {
+ switch (typeName) {
+ case DECIMAL:
+ return Short.MAX_VALUE;
+ default:
+ return super.getMaxScale(typeName);
+ }
}
/** {@inheritDoc} */
- @Override public int getMaxNumericPrecision() {
- return Short.MAX_VALUE;
+ @Override public int getMaxPrecision(SqlTypeName typeName) {
+ switch (typeName) {
+ case DECIMAL:
+ return Short.MAX_VALUE;
+ default:
+ return super.getMaxPrecision(typeName);
+ }
}
/** {@inheritDoc} */
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/HashJoinExecutionTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/HashJoinExecutionTest.java
index 56d650f..d1a1e81 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/HashJoinExecutionTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/HashJoinExecutionTest.java
@@ -22,13 +22,11 @@
import java.util.function.BiPredicate;
import java.util.stream.IntStream;
import java.util.stream.Stream;
-import com.google.common.collect.ImmutableList;
+import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.ImmutableIntList;
import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteJoinInfo;
import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
import org.apache.ignite.internal.processors.query.calcite.util.TypeUtils;
import org.apache.ignite.internal.util.typedef.F;
@@ -683,8 +681,7 @@
? leftType
: TypeUtils.combinedRowType(tf, leftType, rightType);
- IgniteJoinInfo joinInfo = new IgniteJoinInfo(ImmutableIntList.of(2), ImmutableIntList.of(0),
- ImmutableBitSet.of(), ImmutableList.of());
+ JoinInfo joinInfo = JoinInfo.of(ImmutableIntList.of(2), ImmutableIntList.of(0));
return HashJoinNode.create(ctx, outType, leftType, rightType, joinType, joinInfo, postCondition);
}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/JoinBuffersExecutionTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/JoinBuffersExecutionTest.java
index 397fb70..4ff6851 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/JoinBuffersExecutionTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/JoinBuffersExecutionTest.java
@@ -25,13 +25,11 @@
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import java.util.stream.IntStream;
-import com.google.common.collect.ImmutableList;
+import org.apache.calcite.rel.core.JoinInfo;
import org.apache.calcite.rel.core.JoinRelType;
import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.ImmutableIntList;
import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
-import org.apache.ignite.internal.processors.query.calcite.rel.IgniteJoinInfo;
import org.apache.ignite.internal.processors.query.calcite.util.TypeUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.testframework.GridTestUtils;
@@ -79,8 +77,7 @@
/** */
@Test
public void testHashJoinBuffers() throws Exception {
- IgniteJoinInfo joinInfo = new IgniteJoinInfo(ImmutableIntList.of(0), ImmutableIntList.of(0),
- ImmutableBitSet.of(), ImmutableList.of());
+ JoinInfo joinInfo = JoinInfo.of(ImmutableIntList.of(0), ImmutableIntList.of(0));
JoinFactory joinFactory = (ctx, outType, leftType, rightType, joinType) ->
HashJoinNode.create(ctx, outType, leftType, rightType, joinType, joinInfo, null);
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/WindowExecutionTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/WindowExecutionTest.java
new file mode 100644
index 0000000..bf409bd
--- /dev/null
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/WindowExecutionTest.java
@@ -0,0 +1,739 @@
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.rel;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.UUID;
+import java.util.function.Supplier;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
+import org.apache.calcite.rel.RelCollations;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rel.type.RelDataType;
+import org.apache.calcite.rex.RexBuilder;
+import org.apache.calcite.rex.RexWindowBound;
+import org.apache.calcite.rex.RexWindowBounds;
+import org.apache.calcite.rex.RexWindowExclusion;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.util.ImmutableBitSet;
+import org.apache.calcite.util.ImmutableIntList;
+import org.apache.ignite.internal.processors.query.calcite.exec.ArrayRowHandler;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.IgniteRexBuilder;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.window.WindowFunctions;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.window.WindowPartition;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.window.WindowPartitionFactory;
+import org.apache.ignite.internal.processors.query.calcite.sql.fun.IgniteOwnSqlOperatorTable;
+import org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils;
+import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
+import org.apache.ignite.internal.processors.query.calcite.util.TypeUtils;
+import org.apache.ignite.internal.util.typedef.F;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.apache.calcite.rex.RexWindowBounds.CURRENT_ROW;
+import static org.apache.calcite.rex.RexWindowBounds.UNBOUNDED_FOLLOWING;
+import static org.apache.calcite.rex.RexWindowBounds.UNBOUNDED_PRECEDING;
+
+/** */
+public class WindowExecutionTest extends AbstractExecutionTest {
+ /** row_number() over (partition by {0}). */
+ @Test
+ public void testRowNumber() {
+ checkWindow(rowNumber(), true,
+ new Object[][] {{1}, {2}, {1}, {2}, {3}, {1}});
+ }
+
+ /** dense_rank() over (partition by {0} order by {1}). */
+ @Test
+ public void testDenseRank() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.DENSE_RANK,
+ relIntType,
+ F.asList(),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, true,
+ new Object[][] {{1}, {1}, {1}, {2}, {3}, {1}});
+ }
+
+ /** rank() over (partition by {0} order by {1}). */
+ @Test
+ public void testRank() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.RANK,
+ relIntType,
+ F.asList(),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, true,
+ new Object[][] {{1}, {1}, {1}, {2}, {3}, {1}});
+ }
+
+ /** percent_rank() over (partition by {0} order by {1}). */
+ @Test
+ public void testRercentRank() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.PERCENT_RANK,
+ relDoubleType,
+ F.asList(),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{0.0}, {0.0}, {0.0}, {0.5}, {1.0}, {0.0}});
+ }
+
+ /** cume_dist() over (partition by {0} order by {1}). */
+ @Test
+ public void testCumeDist() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.CUME_DIST,
+ relDoubleType,
+ F.asList(),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{1.0}, {1.0}, {1.0 / 3}, {2.0 / 3}, {1.0}, {1.0}});
+ }
+
+ /** first_value({1}) over (partition by {0} order by {1}). */
+ @Test
+ public void testFirstValue() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.FIRST_VALUE,
+ relIntType,
+ F.asList(rexBuilder.makeInputRef(relIntType, 1)),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{1}, {1}, {1}, {1}, {1}, {0}});
+ }
+
+ /** last_value({2}) over (partition by {0} order by {1}). */
+ @Test
+ public void testLastValue() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.LAST_VALUE,
+ relIntType,
+ F.asList(rexBuilder.makeInputRef(relIntType, 2)),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{5}, {5}, {1}, {5}, {6}, {1}});
+ }
+
+ /** ntile({3}) over (partition by {0}). */
+ @Test
+ public void testNTile() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.NTILE,
+ relIntType,
+ F.asList(rexBuilder.makeInputRef(relIntType, 3)),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.EMPTY,
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{1}, {2}, {1}, {1}, {2}, {1}});
+ }
+
+ /** nth_value({2}, {0}) over (partition by {0}). */
+ @Test
+ public void testNth() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.NTH_VALUE,
+ typeFactory.createTypeWithNullability(relIntType, true),
+ F.asList(
+ rexBuilder.makeInputRef(relIntType, 2),
+ rexBuilder.makeInputRef(relIntType, 0)
+ ),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{1}, {1}, {null}, {5}, {5}, {null}});
+ }
+
+ /** lag({2}) over (partition by {0} order by {1}). */
+ @Test
+ public void testLag1() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ IgniteOwnSqlOperatorTable.LAG,
+ typeFactory.createTypeWithNullability(relIntType, true),
+ F.asList(rexBuilder.makeInputRef(relIntType, 2)),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{null}, {1}, {null}, {1}, {5}, {null}});
+ }
+
+ /** lag({2}, {0}) over (partition by {0} order by {1}). */
+ @Test
+ public void testLag2() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ IgniteOwnSqlOperatorTable.LAG,
+ typeFactory.createTypeWithNullability(relIntType, true),
+ F.asList(
+ rexBuilder.makeInputRef(relIntType, 2),
+ rexBuilder.makeInputRef(relIntType, 0)
+ ),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{null}, {1}, {null}, {null}, {1}, {null}});
+ }
+
+ /** lag({2}, {0}, {1}) over (partition by {0} order by {1}). */
+ @Test
+ public void testLag3() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ IgniteOwnSqlOperatorTable.LAG,
+ typeFactory.createTypeWithNullability(relIntType, true),
+ F.asList(
+ rexBuilder.makeInputRef(relIntType, 2),
+ rexBuilder.makeInputRef(relIntType, 0),
+ rexBuilder.makeInputRef(relIntType, 1)
+ ),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{1}, {1}, {1}, {2}, {1}, {0}});
+ }
+
+ /** lead({2}) over (partition by {0} order by {1}). */
+ @Test
+ public void testLead1() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ IgniteOwnSqlOperatorTable.LEAD,
+ typeFactory.createTypeWithNullability(relIntType, true),
+ F.asList(rexBuilder.makeInputRef(relIntType, 2)),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{5}, {null}, {5}, {6}, {null}, {null}});
+ }
+
+ /** lead({2}, {0}) over (partition by {0} order by {1}). */
+ @Test
+ public void testLead2() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ IgniteOwnSqlOperatorTable.LEAD,
+ typeFactory.createTypeWithNullability(relIntType, true),
+ F.asList(
+ rexBuilder.makeInputRef(relIntType, 2),
+ rexBuilder.makeInputRef(relIntType, 0)
+ ),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{5}, {null}, {6}, {null}, {null}, {null}});
+ }
+
+ /** lead({2}, {0}, {1}) over (partition by {0} order by {1}). */
+ @Test
+ public void testLead3() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ IgniteOwnSqlOperatorTable.LEAD,
+ typeFactory.createTypeWithNullability(relIntType, true),
+ F.asList(
+ rexBuilder.makeInputRef(relIntType, 2),
+ rexBuilder.makeInputRef(relIntType, 0),
+ rexBuilder.makeInputRef(relIntType, 1)
+ ),
+ 0,
+ false,
+ false
+ );
+ Window.Group grp = new Window.Group(
+ ImmutableBitSet.of(0),
+ false,
+ UNBOUNDED_PRECEDING,
+ CURRENT_ROW,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+
+ checkWindow(grp, false,
+ new Object[][] {{5}, {1}, {6}, {2}, {3}, {0}});
+ }
+
+ /** count(*) over (partition by {0} rows between unbounded prescending and current row). */
+ @Test
+ public void testCountRowsBetweenUnboundedPrescendingAndCurrentRow() {
+ checkWindow(count(true, UNBOUNDED_PRECEDING, CURRENT_ROW), true,
+ new Object[][] {{1}, {2}, {1}, {2}, {3}, {1}});
+ }
+
+ /** count(*) over (partition by {0} rows between unbounded prescending and unbounded following). */
+ @Test
+ public void testCountRowsBetweenUnboundedPrescendingAndUnboundedFollowing() {
+ checkWindow(count(true, UNBOUNDED_PRECEDING, UNBOUNDED_FOLLOWING), false,
+ new Object[][] {{2}, {2}, {3}, {3}, {3}, {1}});
+ }
+
+ /** count(*) over (partition by {0} order by {1} range between unbounded prescending and current row). */
+ @Test
+ public void testCountRangeBetweenUnboundedPrescendingAndCurrentRow() {
+ checkWindow(count(false, UNBOUNDED_PRECEDING, CURRENT_ROW), false,
+ new Object[][] {{2}, {2}, {1}, {2}, {3}, {1}});
+ }
+
+ /** count(*) over (partition by {0} order by {1} range between unbounded prescending and unbounded following). */
+ @Test
+ public void testCountRangeBetweenUnboundedPrescendingAndUnboundedFollowing() {
+ checkWindow(count(false, UNBOUNDED_PRECEDING, UNBOUNDED_FOLLOWING), false,
+ new Object[][] {{2}, {2}, {3}, {3}, {3}, {1}});
+ }
+
+ /** count(*) over (partition by {0} order by {1} range between 2 prescending and 1 following). */
+ @Test
+ public void testCountRangeBetween2PrescendingAnd1Following() {
+ IgniteRexBuilder rexBuilder = new IgniteRexBuilder(typeFactory);
+ RexWindowBound lower = RexWindowBounds.preceding(rexBuilder.makeLiteral(2, relIntType));
+ RexWindowBound upper = RexWindowBounds.following(rexBuilder.makeLiteral(1, relIntType));
+ checkWindow(count(false, lower, upper), false,
+ new Object[][] {{2}, {2}, {2}, {3}, {3}, {1}});
+ }
+
+ /**
+ * sum({0}) over (partition by {1} rows between unbounded prescending and current row),
+ * row_number() over (partition by {1} rows between unbounded prescending and current row).
+ * */
+ @Test
+ public void testSumRowsAndRowNumberToCurrentRow() {
+ checkWindow(sumRowsAndRowNumber(CURRENT_ROW), true,
+ new Object[][] {{1, 1}, {2, 2}, {2, 1}, {4, 2}, {6, 3}, {3, 1}});
+ }
+
+ /**
+ * sum({0}) over (partition by {1} rows between unbounded prescending and inbounded following),
+ * row_number() over (partition by {1} rows between unbounded prescending and inbounded following).
+ * */
+ @Test
+ public void testSumRowsAndRowNumberToUnboundedFollowing() {
+ checkWindow(sumRowsAndRowNumber(UNBOUNDED_FOLLOWING), false,
+ new Object[][] {{2, 1}, {2, 2}, {6, 1}, {6, 2}, {6, 3}, {3, 1}});
+ }
+
+ /** row_number() over (partition by {0}). */
+ @Test
+ public void testStreamLargeInput() {
+ ExecutionContext<Object[]> ctx = executionContext(F.first(nodes()), UUID.randomUUID(), 0);
+ Object[][] exp = IntStream.range(0, 10000)
+ .mapToObj(i -> row(i + 1))
+ .toArray(Object[][]::new);
+
+ checkWindow(ctx, rowNumber(), true, createSeqInputNode(ctx, 10000), exp);
+ }
+
+ /** count(*) over (partition by {0} rows between unbounded prescending and unbounded following). */
+ @Test
+ public void testBufLargeInput() {
+ ExecutionContext<Object[]> ctx = executionContext(F.first(nodes()), UUID.randomUUID(), 0);
+ Object[][] exp = IntStream.range(0, 10000)
+ .mapToObj(i -> row(10000))
+ .toArray(Object[][]::new);
+
+ checkWindow(ctx, count(true, UNBOUNDED_PRECEDING, UNBOUNDED_FOLLOWING), false,
+ createSeqInputNode(ctx, 10000), exp);
+ }
+
+ /** */
+ private void checkWindow(Window.Group grp, boolean streaming, Object[][] expRes) {
+ ExecutionContext<Object[]> ctx = executionContext(F.first(nodes()), UUID.randomUUID(), 0);
+ Node<Object[]> input = createSmallInputNode(ctx);
+ checkWindow(ctx, grp, streaming, input, expRes);
+ }
+
+ /** */
+ private void checkWindow(
+ ExecutionContext<Object[]> ctx,
+ Window.Group grp,
+ boolean streaming,
+ Node<Object[]> input,
+ Object[][] expRes
+ ) {
+ Assert.assertEquals(streaming, WindowFunctions.streamable(grp));
+
+ WindowNode<Object[]> window = createWindowNode(ctx, grp, input);
+
+ int resFldShift = input.rowType().getFieldCount();
+
+ try (RootNode<Object[]> root = new RootNode<>(ctx, window.rowType())) {
+ root.register(window);
+
+ for (int i = 0; i < expRes.length; i++) {
+ assertTrue(root.hasNext());
+ Object[] row = root.next();
+ for (int j = 0; j < expRes[i].length; j++)
+ assertEquals(expRes[i][j], row[resFldShift + j]);
+ }
+ assertFalse(root.hasNext());
+ }
+ }
+
+ /** */
+ private WindowNode<Object[]> createWindowNode(ExecutionContext<Object[]> ctx, Window.Group grp, Node<Object[]> input) {
+ Class<?>[] outFields = new Class<?>[input.rowType().getFieldCount() + grp.aggCalls.size()];
+ Arrays.fill(outFields, int.class);
+ RelDataType outRowType = TypeUtils.createRowType(typeFactory, outFields);
+
+ Comparator<Object[]> partCmp = ctx.expressionFactory()
+ .comparator(TraitUtils.createCollation(grp.keys.asList()));
+
+ List<AggregateCall> aggCalls = toAggCall(grp);
+
+ Supplier<WindowPartition<Object[]>> partitionFactory =
+ new WindowPartitionFactory<>(ctx, grp, aggCalls, input.rowType());
+
+ WindowNode<Object[]> window = new WindowNode<>(
+ ctx,
+ outRowType,
+ partCmp,
+ partitionFactory,
+ rowFactory()
+ );
+ window.register(input);
+ return window;
+ }
+
+ /** */
+ private List<AggregateCall> toAggCall(Window.Group grp) {
+ List<AggregateCall> calls = new ArrayList<>();
+ for (Window.RexWinAggCall aggCall : grp.aggCalls) {
+ SqlAggFunction op = (SqlAggFunction)aggCall.op;
+ ImmutableIntList args = Window.getProjectOrdinals(aggCall.operands);
+ AggregateCall call = AggregateCall.create(
+ op,
+ aggCall.distinct,
+ false,
+ aggCall.ignoreNulls,
+ aggCall.operands,
+ args,
+ -1,
+ null,
+ RelCollations.EMPTY,
+ aggCall.type,
+ null
+ );
+ calls.add(call);
+ }
+ return calls;
+ }
+
+ /** */
+ private Node<Object[]> createSmallInputNode(ExecutionContext<Object[]> ctx) {
+ RelDataType inputRowType = TypeUtils.createRowType(typeFactory, int.class, int.class, int.class, int.class);
+ List<Object[]> data = F.asList(
+ row(1, 1, 1, 4),
+ row(1, 1, 5, 4),
+ row(2, 1, 1, 2),
+ row(2, 2, 5, 2),
+ row(2, 3, 6, 2),
+ row(3, 0, 1, 1)
+ );
+ return new ScanNode<>(ctx, inputRowType, data);
+ }
+
+ /** */
+ private Node<Object[]> createSeqInputNode(ExecutionContext<Object[]> ctx, int size) {
+ assert size > 0;
+ RelDataType inputRowType = TypeUtils.createRowType(typeFactory, int.class);
+ List<Object[]> data = IntStream.range(0, size).mapToObj(ignored -> row(1)).collect(Collectors.toList());
+ return new ScanNode<>(ctx, inputRowType, data);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Before
+ @Override public void setup() throws Exception {
+ nodesCnt = 1;
+ super.setup();
+ }
+
+ /** row_number() over (partition by {0}). */
+ private static Window.Group rowNumber() {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.ROW_NUMBER,
+ relIntType,
+ F.asList(),
+ 0,
+ false,
+ false
+ );
+ return new Window.Group(
+ ImmutableBitSet.of(0),
+ true,
+ UNBOUNDED_PRECEDING,
+ UNBOUNDED_FOLLOWING,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.EMPTY,
+ F.asList(aggCall)
+ );
+ }
+
+ /**
+ * count({0}) over (partition by {0} rows between [lower] and [upper])
+ */
+ private static Window.Group count(boolean rows, RexWindowBound lower, RexWindowBound upper) {
+ Window.RexWinAggCall aggCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.COUNT,
+ relIntType,
+ F.asList(rexBuilder.makeInputRef(relIntType, 0)),
+ 0,
+ false,
+ false
+ );
+ return new Window.Group(
+ ImmutableBitSet.of(0),
+ rows,
+ lower,
+ upper,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.of(1),
+ F.asList(aggCall)
+ );
+ }
+
+ /**
+ * sum({0}) over (partition by {0} rows between unbounded prescending and [upper]),
+ * row_number() over (partition by {0} rows between unbounded prescending and [upper])
+ */
+ private static Window.Group sumRowsAndRowNumber(RexWindowBound upper) {
+ Window.RexWinAggCall sumCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.SUM,
+ relIntType,
+ F.asList(rexBuilder.makeInputRef(relIntType, 0)),
+ 0,
+ false,
+ false
+ );
+ Window.RexWinAggCall rowNumberCall = new Window.RexWinAggCall(
+ SqlStdOperatorTable.ROW_NUMBER,
+ relIntType,
+ F.asList(),
+ 0,
+ false,
+ false
+ );
+ return new Window.Group(
+ ImmutableBitSet.of(0),
+ true,
+ UNBOUNDED_PRECEDING,
+ upper,
+ RexWindowExclusion.EXCLUDE_NO_OTHER,
+ RelCollations.EMPTY,
+ F.asList(sumCall, rowNumberCall)
+ );
+ }
+
+ /** */
+ private static final IgniteTypeFactory typeFactory = new IgniteTypeFactory();
+
+ /** */
+ private static final RelDataType relIntType = typeFactory.createType(int.class);
+
+ /** */
+ private static final RelDataType relDoubleType = typeFactory.createType(double.class);
+
+ /** */
+ private static final RexBuilder rexBuilder = new IgniteRexBuilder(typeFactory);
+
+ /** */
+ protected RowHandler.RowFactory<Object[]> rowFactory() {
+ return new RowHandler.RowFactory<>() {
+ /** */
+ @Override public RowHandler<Object[]> handler() {
+ return ArrayRowHandler.INSTANCE;
+ }
+
+ /** */
+ @Override public Object[] create() {
+ throw new AssertionError();
+ }
+
+ /** */
+ @Override public Object[] create(Object... fields) {
+ return fields;
+ }
+ };
+ }
+}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AggregatesIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AggregatesIntegrationTest.java
index ce9b477..7b0b968 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AggregatesIntegrationTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AggregatesIntegrationTest.java
@@ -191,6 +191,14 @@
.returns(1L, null)
.check();
+ assertQuery("select count(salary) as salary from person group by salary")
+ .returns(0L)
+ .returns(1L)
+ .returns(1L)
+ .returns(1L)
+ .returns(1L)
+ .check();
+
for (int i = 0; i < 100; i++) {
sql("INSERT INTO tbl VALUES (null, null, ?)", i % 2 == 0 ? i : null);
sql("INSERT INTO tbl VALUES (?, ?, ?)", i, i, i % 2 == 0 ? null : i);
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/FunctionsTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/FunctionsTest.java
index 90101ce..2e52c5a 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/FunctionsTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/FunctionsTest.java
@@ -161,12 +161,13 @@
res.add(F.asList("AND", 1, "TINYINT", 1, "INT", 1));
res.add(F.asList("AND", 1, "TINYINT", 1, "SMALLINT", (short)1));
res.add(F.asList("AND", 0, "TINYINT", 0, "TINYINT", (byte)0));
- res.add(F.asList("AND", 1, "TINYINT", 1, "SMALLINT", (short)1));
+ res.add(F.asList("AND", 1, "SMALLINT", 1, "TINYINT", (short)1));
res.add(F.asList("AND", 15, null, 7, null, 7));
res.add(F.asList("AND", -1, null, 1, null, 1));
res.add(F.asList("AND", (short)32767, null, 65535, null, 32767));
res.add(F.asList("AND", null, null, 1, null, null));
res.add(F.asList("AND", 1, "SMALLINT", null, null, null));
+ res.add(F.asList("AND", 1, null, null, null, null));
// BITOR
res.add(F.asList("OR", 1, null, 1.0, null, orErr));
res.add(F.asList("OR", 1.0, null, 1, null, orErr));
@@ -179,7 +180,7 @@
res.add(F.asList("OR", 1, "TINYINT", 1, "INT", 1));
res.add(F.asList("OR", 1, "TINYINT", 1, "SMALLINT", (short)1));
res.add(F.asList("OR", 0, "TINYINT", 0, "TINYINT", (byte)0));
- res.add(F.asList("OR", 1, "TINYINT", 1, "SMALLINT", (short)1));
+ res.add(F.asList("OR", 1, "SMALLINT", 1, "TINYINT", (short)1));
res.add(F.asList("OR", 8, null, 7, null, 15));
res.add(F.asList("OR", -1, null, 1, null, -1));
res.add(F.asList("OR", (short)32767, null, 65535, null, 65535));
@@ -198,7 +199,7 @@
res.add(F.asList("XOR", 1, "TINYINT", 1, "INT", 0));
res.add(F.asList("XOR", 1, "TINYINT", 1, "SMALLINT", (short)0));
res.add(F.asList("XOR", 0, "TINYINT", 0, "TINYINT", (byte)0));
- res.add(F.asList("XOR", 1, "TINYINT", 1, "SMALLINT", (short)0));
+ res.add(F.asList("XOR", 1, "SMALLINT", 1, "TINYINT", (short)0));
res.add(F.asList("XOR", 8, null, 7, null, 15));
res.add(F.asList("XOR", -1, null, 1, null, -2));
res.add(F.asList("XOR", (short)32767, null, 65535, null, 32768));
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/IntervalTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/IntervalTest.java
index dc8788a..63b2e81 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/IntervalTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/IntervalTest.java
@@ -150,11 +150,11 @@
*/
@Test
public void testDml() {
- executeSql("CREATE TABLE test(ym INTERVAL YEAR, dt INTERVAL DAYS)");
- executeSql("INSERT INTO test(ym, dt) VALUES (INTERVAL 1 MONTH, INTERVAL 2 DAYS)");
- executeSql("INSERT INTO test(ym, dt) VALUES (INTERVAL 3 YEARS, INTERVAL 4 HOURS)");
- executeSql("INSERT INTO test(ym, dt) VALUES (INTERVAL '4-5' YEARS TO MONTHS, INTERVAL '6:7' HOURS TO MINUTES)");
- executeSql("INSERT INTO test(ym, dt) VALUES (NULL, NULL)");
+ sql("CREATE TABLE test(ym INTERVAL YEAR, dt INTERVAL DAYS)");
+ sql("INSERT INTO test(ym, dt) VALUES (INTERVAL 1 MONTH, INTERVAL 2 DAYS)");
+ sql("INSERT INTO test(ym, dt) VALUES (INTERVAL 3 YEARS, INTERVAL 4 HOURS)");
+ sql("INSERT INTO test(ym, dt) VALUES (INTERVAL '4-5' YEARS TO MONTHS, INTERVAL '6:7' HOURS TO MINUTES)");
+ sql("INSERT INTO test(ym, dt) VALUES (NULL, NULL)");
assertThrows("INSERT INTO test(ym, dt) VALUES (INTERVAL 1 DAYS, INTERVAL 1 HOURS)",
IgniteSQLException.class, "Cannot assign");
assertThrows("INSERT INTO test(ym, dt) VALUES (INTERVAL 1 YEARS, INTERVAL 1 MONTHS)",
@@ -170,13 +170,12 @@
assertThrows("SELECT * FROM test WHERE ym = INTERVAL 6 DAYS", IgniteSQLException.class, "Cannot apply");
assertThrows("SELECT * FROM test WHERE dt = INTERVAL 6 YEARS", IgniteSQLException.class, "Cannot apply");
- executeSql("UPDATE test SET dt = INTERVAL 3 DAYS WHERE ym = INTERVAL 1 MONTH");
- executeSql("UPDATE test SET ym = INTERVAL 5 YEARS WHERE dt = INTERVAL 4 HOURS");
- executeSql("UPDATE test SET ym = INTERVAL '6-7' YEARS TO MONTHS, dt = INTERVAL '8 9' DAYS TO HOURS " +
+ sql("UPDATE test SET dt = INTERVAL 3 DAYS WHERE ym = INTERVAL 1 MONTH");
+ sql("UPDATE test SET ym = INTERVAL 5 YEARS WHERE dt = INTERVAL 4 HOURS");
+ sql("UPDATE test SET ym = INTERVAL '6-7' YEARS TO MONTHS, dt = INTERVAL '8 9' DAYS TO HOURS " +
"WHERE ym = INTERVAL '4-5' YEARS TO MONTHS AND dt = INTERVAL '6:7' HOURS TO MINUTES");
- assertThrows("UPDATE test SET dt = INTERVAL 5 YEARS WHERE ym = INTERVAL 1 MONTH", IgniteSQLException.class,
- "Cannot assign");
+ assertThrowsSqlException("UPDATE test SET dt = INTERVAL 5 YEARS WHERE ym = INTERVAL 1 MONTH", null);
assertThrows("UPDATE test SET ym = INTERVAL 8 YEARS WHERE dt = INTERVAL 1 MONTH", IgniteSQLException.class,
"Cannot apply");
@@ -191,16 +190,16 @@
assertThrows("DELETE FROM test WHERE ym = INTERVAL 6 DAYS", IgniteSQLException.class, "Cannot apply");
assertThrows("DELETE FROM test WHERE dt = INTERVAL 6 YEARS", IgniteSQLException.class, "Cannot apply");
- executeSql("DELETE FROM test WHERE ym = INTERVAL 1 MONTH");
- executeSql("DELETE FROM test WHERE dt = INTERVAL 4 HOURS");
- executeSql("DELETE FROM test WHERE ym = INTERVAL '6-7' YEARS TO MONTHS AND dt = INTERVAL '8 9' DAYS TO HOURS");
- executeSql("DELETE FROM test WHERE ym IS NULL AND dt IS NULL");
+ sql("DELETE FROM test WHERE ym = INTERVAL 1 MONTH");
+ sql("DELETE FROM test WHERE dt = INTERVAL 4 HOURS");
+ sql("DELETE FROM test WHERE ym = INTERVAL '6-7' YEARS TO MONTHS AND dt = INTERVAL '8 9' DAYS TO HOURS");
+ sql("DELETE FROM test WHERE ym IS NULL AND dt IS NULL");
- assertEquals(0, executeSql("SELECT * FROM test").size());
+ assertEquals(0, sql("SELECT * FROM test").size());
- executeSql("ALTER TABLE test ADD (ym2 INTERVAL MONTH, dt2 INTERVAL HOURS)");
+ sql("ALTER TABLE test ADD (ym2 INTERVAL MONTH, dt2 INTERVAL HOURS)");
- executeSql("INSERT INTO test(ym, ym2, dt, dt2) VALUES (INTERVAL 1 YEAR, INTERVAL 2 YEARS, " +
+ sql("INSERT INTO test(ym, ym2, dt, dt2) VALUES (INTERVAL 1 YEAR, INTERVAL 2 YEARS, " +
"INTERVAL 1 SECOND, INTERVAL 2 MINUTES)");
assertQuery("SELECT ym, ym2, dt, dt2 FROM test")
@@ -396,6 +395,15 @@
}
/** */
+ @Test
+ public void testDmlIntervalArithmetic() {
+ sql("CREATE TABLE test(ts TIMESTAMP)");
+ sql("INSERT INTO test VALUES (?)", Timestamp.valueOf("2021-01-01 00:00:01"));
+ sql("UPDATE test SET ts = ts - INTERVAL 1 SECOND");
+ assertQuery("SELECT * FROM test").returns(Timestamp.valueOf("2021-01-01 00:00:00")).check();
+ }
+
+ /** */
public Object eval(String exp, Object... params) {
return executeSql("SELECT " + exp, params).get(0).get(0);
}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/OperatorsExtensionIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/OperatorsExtensionIntegrationTest.java
index 53b6d23..d08259d 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/OperatorsExtensionIntegrationTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/OperatorsExtensionIntegrationTest.java
@@ -18,12 +18,18 @@
import java.math.BigDecimal;
import java.sql.Timestamp;
+import java.util.List;
+import java.util.function.Supplier;
import com.google.common.collect.ImmutableList;
import org.apache.calcite.adapter.enumerable.NullPolicy;
import org.apache.calcite.avatica.util.TimeUnitRange;
import org.apache.calcite.linq4j.tree.Expressions;
+import org.apache.calcite.plan.Contexts;
+import org.apache.calcite.rel.core.AggregateCall;
+import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rex.RexBuilder;
import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.SqlAggFunction;
import org.apache.calcite.sql.SqlCall;
import org.apache.calcite.sql.SqlFunction;
import org.apache.calcite.sql.SqlFunctionCategory;
@@ -43,12 +49,19 @@
import org.apache.calcite.tools.FrameworkConfig;
import org.apache.calcite.tools.Frameworks;
import org.apache.calcite.util.BuiltInMethod;
+import org.apache.calcite.util.Optionality;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.processors.query.calcite.CalciteQueryProcessor;
+import org.apache.ignite.internal.processors.query.calcite.exec.ExecutionContext;
+import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler;
import org.apache.ignite.internal.processors.query.calcite.exec.exp.RexImpTable;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.Accumulator;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.AccumulatorFactoryProvider;
+import org.apache.ignite.internal.processors.query.calcite.exec.exp.agg.Accumulators;
import org.apache.ignite.internal.processors.query.calcite.prepare.IgniteConvertletTable;
import org.apache.ignite.internal.processors.query.calcite.prepare.IgniteSqlNodeRewriter;
import org.apache.ignite.internal.processors.query.calcite.prepare.IgniteSqlValidator;
+import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory;
import org.apache.ignite.plugin.AbstractTestPluginProvider;
import org.apache.ignite.plugin.PluginContext;
import org.jetbrains.annotations.Nullable;
@@ -75,6 +88,9 @@
.sqlValidatorConfig(
((IgniteSqlValidator.Config)CalciteQueryProcessor.FRAMEWORK_CONFIG.getSqlValidatorConfig())
.withSqlNodeRewriter(new SqlRewriter()))
+ .context(Contexts.chain(
+ CalciteQueryProcessor.FRAMEWORK_CONFIG.getContext(),
+ Contexts.of(new AccumulatorFactoryProviderImpl())))
.build();
return (T)cfg;
@@ -134,6 +150,14 @@
assertQuery("SELECT val_str from my_view").returns(new BigDecimal("0")).check();
}
+ /** */
+ @Test
+ public void testCustomAggregateFunction() {
+ assertQuery("SELECT TEST_SUM(x) FROM (VALUES (1), (2), (3)) t(x)")
+ .returns(6L)
+ .check();
+ }
+
/** Rewrites LTRIM with 2 parameters. */
public static SqlCall rewriteLtrim(SqlValidator validator, SqlCall call) {
if (call.operandCount() != 2)
@@ -193,6 +217,9 @@
OperandTypes.STRING_STRING,
SqlFunctionCategory.STRING
);
+
+ /** */
+ public static final SqlAggFunction TEST_SUM = new SqlTestSumAggFunction();
}
/** Extended convertlet table. */
@@ -229,4 +256,73 @@
return node;
}
}
+
+ /** */
+ private static class AccumulatorFactoryProviderImpl implements AccumulatorFactoryProvider {
+ /** {@inheritDoc} */
+ @Override public @Nullable <Row> Supplier<Accumulator<Row>> factory(AggregateCall call, ExecutionContext<Row> ctx) {
+ if (call.getAggregation().getName().equals(OperatorTable.TEST_SUM.getName()))
+ return () -> new TestSum<>(call, ctx.rowHandler());
+
+ return null;
+ }
+ }
+
+ /** */
+ public static class SqlTestSumAggFunction extends SqlAggFunction {
+ /** */
+ public SqlTestSumAggFunction() {
+ super(
+ "TEST_SUM",
+ null,
+ SqlKind.SUM,
+ ReturnTypes.AGG_SUM,
+ null,
+ OperandTypes.NUMERIC,
+ SqlFunctionCategory.NUMERIC,
+ false,
+ false,
+ Optionality.FORBIDDEN
+ );
+ }
+ }
+
+ /** */
+ private static class TestSum<Row> extends Accumulators.AbstractAccumulator<Row> {
+ /** */
+ private long sum;
+
+ /** */
+ protected TestSum(AggregateCall aggCall, RowHandler<Row> hnd) {
+ super(aggCall, hnd);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void add(Row row) {
+ Number val = get(0, row);
+
+ if (val != null)
+ sum += val.longValue();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void apply(Accumulator<Row> other) {
+ sum += ((TestSum<Row>)other).sum;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object end() {
+ return sum;
+ }
+
+ /** {@inheritDoc} */
+ @Override public List<RelDataType> argumentTypes(IgniteTypeFactory typeFactory) {
+ return List.of(typeFactory.createTypeWithNullability(typeFactory.createSqlType(SqlTypeName.BIGINT), true));
+ }
+
+ /** {@inheritDoc} */
+ @Override public RelDataType returnType(IgniteTypeFactory typeFactory) {
+ return typeFactory.createSqlType(org.apache.calcite.sql.type.SqlTypeName.BIGINT);
+ }
+ }
}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/StdSqlOperatorsTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/StdSqlOperatorsTest.java
index 72d6fea..2f78ee9 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/StdSqlOperatorsTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/StdSqlOperatorsTest.java
@@ -371,6 +371,20 @@
}
/** */
+ @Test
+ public void testWindowFunctions() {
+ assertExpression("ROW_NUMBER() OVER()").returns(1).check();
+ assertExpression("DENSE_RANK() OVER(ORDER BY val)").returns(1L).check();
+ assertExpression("RANK() OVER(ORDER BY val)").returns(1L).check();
+ assertExpression("PERCENT_RANK() OVER(ORDER BY val)").returns(0.0).check();
+ assertExpression("CUME_DIST() OVER(ORDER BY val)").returns(1.0).check();
+ assertExpression("FIRST_VALUE(val) OVER()").returns(1).check();
+ assertExpression("LAST_VALUE(val) OVER()").returns(1).check();
+ assertExpression("NTILE(1) OVER(ORDER BY val)").returns(1L).check();
+ assertExpression("NTH_VALUE(val, 1) OVER()").returns(1).check();
+ }
+
+ /** */
private QueryChecker assertExpression(String qry) {
// Select expressions from table to test plan serialization containing these expressions.
return assertQuery("SELECT " + qry + " FROM t");
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/TableDdlIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/TableDdlIntegrationTest.java
index 7164c0d..a4ace5c 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/TableDdlIntegrationTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/TableDdlIntegrationTest.java
@@ -562,7 +562,7 @@
@Test
public void createTableUseReservedWord() {
assertThrows("create table table (id int primary key, val varchar)", IgniteSQLException.class,
- "Failed to parse query. Encountered \"table table\"");
+ "Failed to parse query. Encountered \" \"TABLE\" \"table \" \"TABLE\" \"table \"\"");
sql("create table \"table\" (id int primary key, val varchar)");
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/WindowIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/WindowIntegrationTest.java
new file mode 100644
index 0000000..43ff9fa
--- /dev/null
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/WindowIntegrationTest.java
@@ -0,0 +1,213 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.integration;
+
+import java.math.BigDecimal;
+import org.junit.Test;
+
+/**
+ * Integration test for WINDOW operator.
+ */
+public class WindowIntegrationTest extends AbstractBasicIntegrationTransactionalTest {
+ /** {@inheritDoc} */
+ @Override protected void init() throws Exception {
+ super.init();
+
+ sql("CREATE TABLE empsalary(depname VARCHAR, empno BIGINT, salary INT, enroll_date DATE, " +
+ "PRIMARY KEY (depname, empno)) WITH AFFINITY_KEY=depname, " + atomicity());
+ sql("INSERT INTO empsalary VALUES " +
+ "('develop', 10, 5300, '2007-08-01'), " +
+ "('sales', 1, 5000, '2006-10-01'), " +
+ "('person', 5, 3500, '2007-12-10'), " +
+ "('sales', 4, 4900, '2007-08-08'), " +
+ "('person', 2, 3900, '2006-12-23'), " +
+ "('develop', 7, 4200, '2008-01-01'), " +
+ "('develop', 9, 4500, '2008-01-01'), " +
+ "('sales', 3, 4800, '2007-08-01'), " +
+ "('develop', 8, 6000, '2006-10-01'), " +
+ "('develop', 11, 5200, '2007-08-15');");
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() {
+ // No-op
+ }
+
+ /** */
+ @Test
+ public void testRowNumber() {
+ assertQuery("SELECT empno, ROW_NUMBER() OVER (ORDER BY salary) FROM empsalary")
+ .returns(1L, 7L)
+ .returns(2L, 2L)
+ .returns(3L, 5L)
+ .returns(4L, 6L)
+ .returns(5L, 1L)
+ .returns(7L, 3L)
+ .returns(8L, 10L)
+ .returns(9L, 4L)
+ .returns(10L, 9L)
+ .returns(11L, 8L)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testCountAllRange() {
+ assertQuery("SELECT depname, " +
+ "COUNT(1) OVER (ORDER BY depname RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) FROM empsalary")
+ .returns("develop", 10L)
+ .returns("develop", 10L)
+ .returns("develop", 10L)
+ .returns("develop", 10L)
+ .returns("develop", 10L)
+ .returns("person", 10L)
+ .returns("person", 10L)
+ .returns("sales", 10L)
+ .returns("sales", 10L)
+ .returns("sales", 10L)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testCountRangePartitioned() {
+ assertQuery("SELECT depname, COUNT(1) OVER (PARTITION BY depname) FROM empsalary")
+ .returns("develop", 5L)
+ .returns("develop", 5L)
+ .returns("develop", 5L)
+ .returns("develop", 5L)
+ .returns("develop", 5L)
+ .returns("person", 2L)
+ .returns("person", 2L)
+ .returns("sales", 3L)
+ .returns("sales", 3L)
+ .returns("sales", 3L)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testCountRangePartitionedWithIntBounds() {
+ assertQuery("SELECT depname, " +
+ "COUNT(1) OVER (PARTITION BY depname ORDER BY empno RANGE BETWEEN 2 PRECEDING AND 1 FOLLOWING) FROM empsalary")
+ .returns("develop", 2L)
+ .returns("develop", 3L)
+ .returns("develop", 3L)
+ .returns("develop", 4L)
+ .returns("develop", 4L)
+ .returns("person", 1L)
+ .returns("person", 1L)
+ .returns("sales", 1L)
+ .returns("sales", 2L)
+ .returns("sales", 3L)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testCountRangePartitionedWithDateBounds() {
+ assertQuery("SELECT depname, " +
+ "COUNT(1) OVER (PARTITION BY depname ORDER BY enroll_date " +
+ "RANGE BETWEEN INTERVAL 730 DAYS PRECEDING AND INTERVAL 360 DAYS FOLLOWING) FROM empsalary")
+ .returns("develop", 3L)
+ .returns("develop", 5L)
+ .returns("develop", 5L)
+ .returns("develop", 5L)
+ .returns("develop", 5L)
+ .returns("person", 2L)
+ .returns("person", 2L)
+ .returns("sales", 3L)
+ .returns("sales", 3L)
+ .returns("sales", 3L)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testCountRowsPartitioned() {
+ assertQuery("SELECT depname, " +
+ "COUNT(1) OVER (PARTITION BY depname ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) FROM empsalary")
+ .returns("develop", 1L)
+ .returns("develop", 2L)
+ .returns("develop", 3L)
+ .returns("develop", 4L)
+ .returns("develop", 5L)
+ .returns("person", 1L)
+ .returns("person", 2L)
+ .returns("sales", 1L)
+ .returns("sales", 2L)
+ .returns("sales", 3L)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testCountRowsPartitionedWithBounds() {
+ assertQuery("SELECT depname, " +
+ "COUNT(1) OVER (PARTITION BY depname ORDER BY empno ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING) FROM empsalary")
+ .returns("develop", 2L)
+ .returns("develop", 3L)
+ .returns("develop", 4L)
+ .returns("develop", 4L)
+ .returns("develop", 3L)
+ .returns("person", 2L)
+ .returns("person", 2L)
+ .returns("sales", 2L)
+ .returns("sales", 3L)
+ .returns("sales", 3L)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testCorrelation() {
+ assertQuery("SELECT depname, (SELECT ROW_NUMBER() OVER (ORDER BY depname)) FROM empsalary")
+ .returns("develop", 1L)
+ .returns("develop", 1L)
+ .returns("develop", 1L)
+ .returns("develop", 1L)
+ .returns("develop", 1L)
+ .returns("person", 1L)
+ .returns("person", 1L)
+ .returns("sales", 1L)
+ .returns("sales", 1L)
+ .returns("sales", 1L)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testAggregateWithWindowFunction() {
+ assertQuery("SELECT depname, COUNT(*), SUM(SUM(salary)) OVER (PARTITION BY depname) FROM empsalary GROUP BY depname")
+ .returns("develop", 5L, BigDecimal.valueOf(25200))
+ .returns("person", 2L, BigDecimal.valueOf(7400))
+ .returns("sales", 3L, BigDecimal.valueOf(14700))
+ .check();
+ }
+
+ /** Test Ignite custom lead/lag functions. */
+ @Test
+ public void testLeadLagFunctions() {
+ assertQuery("SELECT LEAD(empno) OVER() FROM empsalary WHERE empno = 1").returns(NULL_RESULT).check();
+ assertQuery("SELECT LEAD(empno, 2) OVER() FROM empsalary WHERE empno = 1").returns(NULL_RESULT).check();
+ assertQuery("SELECT LEAD(empno, 3, 0) OVER() FROM empsalary WHERE empno = 1").returns(0L).check();
+ assertQuery("SELECT LAG(empno) OVER() FROM empsalary WHERE empno = 1").returns(NULL_RESULT).check();
+ assertQuery("SELECT LAG(empno, 2) OVER() FROM empsalary WHERE empno = 1").returns(NULL_RESULT).check();
+ assertQuery("SELECT LAG(empno, 3, 0) OVER() FROM empsalary WHERE empno = 1").returns(0L).check();
+ }
+}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/CorrelatedSubqueryPlannerTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/CorrelatedSubqueryPlannerTest.java
index 97e6a4d..202bdef 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/CorrelatedSubqueryPlannerTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/CorrelatedSubqueryPlannerTest.java
@@ -253,12 +253,10 @@
List<LogicalCorrelate> correlates = findNodes(rel, byClass(LogicalCorrelate.class));
- assertEquals(4, correlates.size());
+ assertEquals(2, correlates.size());
// There are collisions by correlation id.
assertEquals(correlates.get(0).getCorrelationId(), correlates.get(1).getCorrelationId());
- assertEquals(correlates.get(0).getCorrelationId(), correlates.get(2).getCorrelationId());
- assertEquals(correlates.get(0).getCorrelationId(), correlates.get(3).getCorrelationId());
rel = planner.replaceCorrelatesCollisions(rel);
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/DataTypesPlannerTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/DataTypesPlannerTest.java
index 22af50d..140665b 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/DataTypesPlannerTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/DataTypesPlannerTest.java
@@ -19,6 +19,7 @@
import java.util.Arrays;
import java.util.List;
+import java.util.UUID;
import java.util.function.Predicate;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.SetOp;
@@ -127,4 +128,15 @@
assertPlan("SELECT NULL::DATE UNION ALL SELECT TIMESTAMP '2025-07-04 10:00:00'", createSchema(),
rel -> rel.fieldIsNullable(0));
}
+
+ /** */
+ @Test
+ public void testLiteralToUuidConversion() throws Exception {
+ IgniteSchema schema = createSchema(createTable("T", IgniteDistributions.single(), "UID", SqlTypeName.UUID));
+
+ UUID uuid1 = UUID.randomUUID();
+ UUID uuid2 = UUID.randomUUID();
+
+ assertPlan("SELECT * FROM t WHERE uid in ('" + uuid1 + "', '" + uuid2 + "')", schema, isTableScan("T"));
+ }
}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/HashIndexSpoolPlannerTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/HashIndexSpoolPlannerTest.java
index d83844f..44b05e2 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/HashIndexSpoolPlannerTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/HashIndexSpoolPlannerTest.java
@@ -22,6 +22,7 @@
import org.apache.calcite.rel.type.RelDataTypeFactory;
import org.apache.calcite.rex.RexFieldAccess;
import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.sql.type.SqlTypeName;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteHashIndexSpool;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel;
import org.apache.ignite.internal.processors.query.calcite.rel.IgniteTableScan;
@@ -234,7 +235,7 @@
*/
@Test
public void testCorrelatedFilterSplit() throws Exception {
- TestTable tbl = createTable("TBL", IgniteDistributions.random(), "ID", Integer.class);
+ TestTable tbl = createTable("TBL", IgniteDistributions.random(), "ID", SqlTypeName.INTEGER);
IgniteSchema publicSchema = createSchema(tbl);
String sql = "SELECT (SELECT id FROM tbl AS t2 WHERE t2.id < 50 AND t2.id = t1.id) FROM tbl AS t1";
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/WindowPlannerTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/WindowPlannerTest.java
new file mode 100644
index 0000000..c385129
--- /dev/null
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/WindowPlannerTest.java
@@ -0,0 +1,471 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.planner;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelCollations;
+import org.apache.calcite.rel.RelNode;
+import org.apache.calcite.rel.core.Window;
+import org.apache.calcite.rex.RexLiteral;
+import org.apache.calcite.rex.RexWindowBound;
+import org.apache.calcite.sql.SqlAggFunction;
+import org.apache.calcite.sql.fun.SqlStdOperatorTable;
+import org.apache.calcite.sql.type.SqlTypeName;
+import org.apache.calcite.util.ImmutableBitSet;
+import org.apache.calcite.util.ImmutableIntList;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteCorrelatedNestedLoopJoin;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteExchange;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteProject;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteSort;
+import org.apache.ignite.internal.processors.query.calcite.rel.IgniteWindow;
+import org.apache.ignite.internal.processors.query.calcite.rel.agg.IgniteColocatedAggregateBase;
+import org.apache.ignite.internal.processors.query.calcite.schema.IgniteSchema;
+import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistribution;
+import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistributions;
+import org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils;
+import org.apache.ignite.internal.processors.query.calcite.util.Commons;
+import org.apache.ignite.internal.util.typedef.F;
+import org.jetbrains.annotations.Nullable;
+import org.junit.Test;
+
+import static java.util.function.Predicate.not;
+import static org.apache.calcite.rex.RexWindowBounds.CURRENT_ROW;
+import static org.apache.calcite.rex.RexWindowBounds.UNBOUNDED_FOLLOWING;
+import static org.apache.calcite.rex.RexWindowBounds.UNBOUNDED_PRECEDING;
+
+/** */
+public class WindowPlannerTest extends AbstractPlannerTest {
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testSplitWindowRelsByGroup() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.single(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER,
+ "C", SqlTypeName.INTEGER, "D", SqlTypeName.INTEGER)
+ );
+
+ String sql = "SELECT " +
+ "SUM(d) OVER (PARTITION BY a, b ORDER BY c, d), " +
+ "ROW_NUMBER() OVER (), " +
+ "MIN(a) OVER (PARTITION BY a, b ORDER BY c, d), " +
+ "MAX(a) OVER (PARTITION BY a, b ORDER BY c, d RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)" +
+ "FROM TBL";
+ assertPlan(sql, schema,
+ nodeOrAnyChild(isInstanceOf(IgniteWindow.class)
+ .and(isWindow(F.asList(0, 1), F.asList(0, 1, 2, 3), CURRENT_ROW, UNBOUNDED_FOLLOWING,
+ SqlStdOperatorTable.MAX)))
+ .and(nodeOrAnyChild(isInstanceOf(IgniteWindow.class)
+ .and(IgniteWindow::isStreaming)
+ .and(isWindow(F.asList(), F.asList(0, 1, 2, 3), UNBOUNDED_PRECEDING, CURRENT_ROW, SqlStdOperatorTable.ROW_NUMBER))))
+ .and(nodeOrAnyChild(isInstanceOf(IgniteWindow.class)
+ .and(not(IgniteWindow::isStreaming))
+ .and(isWindow(F.asList(0, 1), F.asList(0, 1, 2, 3), UNBOUNDED_PRECEDING, CURRENT_ROW,
+ SqlStdOperatorTable.COUNT, SqlStdOperatorTable.SUM, SqlStdOperatorTable.MIN)))));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testMergeWindowRelsByGroup() throws Exception {
+ // Different agg calls but with the same window definition.
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.single(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER)
+ );
+
+ String sql = "SELECT " +
+ "SUM(a) OVER (PARTITION BY a ORDER BY b ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING), " +
+ "MIN(b) OVER (PARTITION BY a ORDER BY b ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) " +
+ "FROM TBL";
+ assertPlan(sql, schema,
+ hasChildThat(isInstanceOf(IgniteWindow.class)
+ .and(hasChildThat(isInstanceOf(IgniteWindow.class)).negate())));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testProjectWindowConstantsUsedInAggCalls() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.single(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER)
+ );
+
+ String sql = "SELECT a, b, " +
+ "MAX(2) OVER (PARTITION BY a ORDER BY b ROWS BETWEEN 10 PRECEDING AND 20 FOLLOWING) " +
+ "FROM TBL";
+ assertPlan(sql, schema,
+ isInstanceOf(IgniteProject.class)
+ // The top project should remove constants from the window rel on position 2..4.
+ .and(project -> "[$0, $1, $3]".equals(project.getProjects().toString()))
+ .and(input(isInstanceOf(IgniteWindow.class)
+ .and(it -> it.getGroup().lowerBound.getOffset() instanceof RexLiteral
+ && it.getGroup().upperBound.getOffset() instanceof RexLiteral)
+ .and(hasChildThat(isInstanceOf(IgniteProject.class)
+ // The bottom project should add agg call constants from the window rel on position 2..4.
+ .and(project -> "[$0, $1, 2]".equals(project.getProjects().toString())))))),
+ "ProjectTableScanMergeRule", "ProjectTableScanMergeSkipCorrelatedRule", "ProjectMergeRule", "ProjectWindowTransposeRule");
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testProjectWindowConstantsUnusedInAggCalls() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.single(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER)
+ );
+
+ String sql = "SELECT a, b, " +
+ "MAX(a) OVER (PARTITION BY a ORDER BY b ROWS BETWEEN 10 PRECEDING AND 20 FOLLOWING) " +
+ "FROM TBL";
+ assertPlan(sql, schema,
+ isInstanceOf(IgniteWindow.class)
+ .and(it -> it.getGroup().lowerBound.getOffset() instanceof RexLiteral
+ && it.getGroup().upperBound.getOffset() instanceof RexLiteral)
+ .and(not(hasChildThat(isInstanceOf(IgniteProject.class)))),
+ "ProjectTableScanMergeRule", "ProjectMergeRule", "ProjectWindowTransposeRule");
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testPassThroughOrderByWithWindow() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.random(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER, "C", SqlTypeName.INTEGER)
+ );
+
+ RelCollation derivedCollation = RelCollations.of(
+ TraitUtils.createFieldCollation(0, false),
+ TraitUtils.createFieldCollation(1, true)
+ );
+
+ Function<RelCollation, Predicate<RelNode>> chk = collation ->
+ nodeOrAnyChild(isInstanceOf(IgniteSort.class).negate())
+ .and(hasChildThat(isInstanceOf(IgniteWindow.class)
+ .and(window -> window.collation().equals(collation))
+ .and(input(isInstanceOf(IgniteExchange.class)
+ .and(exchange -> exchange.collation().equals(collation))))));
+
+ String sql = "SELECT MAX(c) OVER (PARTITION BY a ORDER BY b) FROM tbl ORDER BY a DESC, b";
+ assertPlan(sql, schema, chk.apply(derivedCollation));
+
+ sql = "SELECT MAX(c) OVER (PARTITION BY a ORDER BY b) FROM tbl ORDER BY a DESC";
+ assertPlan(sql, schema, chk.apply(derivedCollation));
+
+ sql = "SELECT MAX(c) OVER (PARTITION BY a ORDER BY b) FROM tbl ORDER BY a DESC, b, c";
+ derivedCollation = RelCollations.of(
+ TraitUtils.createFieldCollation(0, false),
+ TraitUtils.createFieldCollation(1, true),
+ TraitUtils.createFieldCollation(2, true)
+ );
+ assertPlan(sql, schema, chk.apply(derivedCollation));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testNotPassThroughOrderByWithWindow() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.random(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER, "C", SqlTypeName.INTEGER)
+ );
+
+ RelCollation windowCollation = RelCollations.of(
+ TraitUtils.createFieldCollation(0, true),
+ TraitUtils.createFieldCollation(1, false)
+ );
+
+ Predicate<RelNode> predicate = nodeOrAnyChild(isInstanceOf(IgniteSort.class)
+ .and(not(sort -> sort.collation().equals(windowCollation)))
+ .and(hasChildThat(isInstanceOf(IgniteWindow.class)
+ .and(window -> window.collation().equals(windowCollation))
+ .and(hasChildThat(isInstanceOf(IgniteSort.class)
+ .and(sort -> sort.collation().equals(windowCollation)))))));
+
+ String sql = "SELECT MAX(b) OVER (PARTITION BY a ORDER BY b DESC) FROM tbl ORDER BY a, c, b DESC";
+ assertPlan(sql, schema, predicate);
+
+ sql = "SELECT MAX(b) OVER (PARTITION BY a ORDER BY b DESC) FROM tbl ORDER BY a, c";
+ assertPlan(sql, schema, predicate);
+
+ sql = "SELECT MAX(b) OVER (PARTITION BY a ORDER BY b DESC) FROM tbl ORDER BY a, b";
+ assertPlan(sql, schema, predicate);
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testHashTableDistributionAndWindow() throws Exception {
+ IgniteDistribution hash = IgniteDistributions.hash(ImmutableIntList.of(0));
+
+ RelCollation collation = RelCollations.of(
+ TraitUtils.createFieldCollation(1, false),
+ TraitUtils.createFieldCollation(0, false)
+ );
+
+ IgniteSchema schema = createSchema(
+ createTable("TBL", hash,
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER)
+ .addIndex(collation, "TBL_IDX")
+ );
+
+ checkDistributionAndCollationDeriviation(schema, hash, collation);
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testAffinityTableDistributionAndWindow() throws Exception {
+ IgniteDistribution aff = IgniteDistributions.affinity(0, "affinity_tbl", "hash");
+
+ RelCollation collation = RelCollations.of(
+ TraitUtils.createFieldCollation(1, false),
+ TraitUtils.createFieldCollation(0, false)
+ );
+
+ IgniteSchema schema = createSchema(
+ createTable("TBL", aff,
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER)
+ .addIndex(collation, "TBL_IDX")
+ );
+
+ checkDistributionAndCollationDeriviation(schema, aff, collation);
+ }
+
+ /** */
+ private void checkDistributionAndCollationDeriviation(IgniteSchema schema, IgniteDistribution dist,
+ RelCollation collation) throws Exception {
+ // Both collation and distribution derivation.
+ String sql = "SELECT FIRST_VALUE(b) OVER (PARTITION BY a, b) FROM tbl";
+ assertPlan(sql, schema, isInstanceOf(IgniteExchange.class)
+ .and(hasChildThat(isInstanceOf(IgniteWindow.class)
+ .and(hasDistribution(dist))
+ .and(window -> window.collation().equals(collation))
+ .and(hasChildThat(isIndexScan("TBL", "TBL_IDX"))))));
+
+ // Collation only deriviation.
+ sql = "SELECT FIRST_VALUE(b) OVER (PARTITION BY b ORDER BY a DESC) FROM tbl";
+ assertPlan(sql, schema, nodeOrAnyChild(isInstanceOf(IgniteWindow.class)
+ .and(window -> window.collation().equals(collation))
+ .and(hasChildThat(isInstanceOf(IgniteExchange.class)))));
+
+ // Distribution only deriviation.
+ sql = "SELECT FIRST_VALUE(b) OVER (PARTITION BY a ORDER BY a DESC) FROM tbl";
+ assertPlan(sql, schema, isInstanceOf(IgniteExchange.class)
+ .and(hasChildThat(isInstanceOf(IgniteWindow.class))
+ .and(hasChildThat(isInstanceOf(IgniteSort.class)))));
+
+ // None deriviation.
+ sql = "SELECT FIRST_VALUE(b) OVER (PARTITION BY b ORDER BY a) FROM tbl";
+ assertPlan(sql, schema, nodeOrAnyChild(isInstanceOf(IgniteWindow.class)
+ .and(hasChildThat(isInstanceOf(IgniteExchange.class)))
+ .and(hasChildThat(isInstanceOf(IgniteSort.class)))));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testHashTableAndWindowWithAnotherDistribution() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.hash(ImmutableIntList.of(0)),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER)
+ );
+
+ String sql = "SELECT FIRST_VALUE(a) OVER (PARTITION BY b) FROM tbl";
+ assertPlan(sql, schema, hasChildThat(isInstanceOf(IgniteWindow.class)
+ .and(hasDistribution(IgniteDistributions.single())))
+ .and(hasChildThat(isInstanceOf(IgniteExchange.class))));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testIndexedTableAndWindow() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.single(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER, "C", SqlTypeName.INTEGER)
+ .addIndex("TBL_IDX", 1, 0, 2)
+ );
+
+ // Should derive collation (can use index scan).
+ String sql = "SELECT row_number() OVER (PARTITION BY a, b ORDER BY c) FROM tbl";
+ assertPlan(sql, schema, nodeOrAnyChild(isInstanceOf(IgniteWindow.class)
+ .and(input(isIndexScan("TBL", "TBL_IDX")))));
+
+ // Should not derive collation (cannot use index scan).
+ sql = "SELECT row_number() OVER (PARTITION BY a, c) FROM tbl";
+ assertPlan(sql, schema, nodeOrAnyChild(isInstanceOf(IgniteWindow.class)
+ .and(input(isIndexScan("TBL", "TBL_IDX")).negate())));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testIndexedAffinityTableAndWindow() throws Exception {
+ IgniteDistribution aff = IgniteDistributions.affinity(0, "tbl", "hash");
+ RelCollation collation = TraitUtils.createCollation(F.asList(0, 1, 2));
+
+ IgniteSchema schema = createSchema(
+ createTable("TBL", aff,
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER, "C", SqlTypeName.INTEGER)
+ .addIndex(collation, "TBL_IDX")
+ );
+
+ // Affinity distribution and index collation deriviation.
+ // Table index cover more columns than partition/order by,
+ // table index has different directions than partition fields.
+ String sql = "SELECT MAX(c) OVER (PARTITION BY a ORDER BY b) FROM (SELECT * FROM tbl) S";
+ assertPlan(sql, schema, isInstanceOf(IgniteExchange.class)
+ .and(input(hasChildThat(isInstanceOf(IgniteWindow.class)
+ .and(it -> it.collation().equals(collation))
+ .and(hasDistribution(aff))
+ .and(input(isIndexScan("TBL", "TBL_IDX")))))));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testCorrelatedSubqueryWithWindow() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.single(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER)
+ );
+
+ String sql = "SELECT a, (SELECT row_number() OVER (ORDER BY a)) FROM tbl ORDER BY a";
+
+ assertPlan(sql, schema, nodeOrAnyChild(isInstanceOf(IgniteCorrelatedNestedLoopJoin.class)
+ .and(input(0, nodeOrAnyChild(isTableScan("TBL"))))
+ .and(input(1, nodeOrAnyChild(isInstanceOf(IgniteWindow.class))))));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testPassThroughCollationWiderThanInputRow() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.single(),
+ "A", SqlTypeName.INTEGER, "B", SqlTypeName.INTEGER)
+ );
+
+ String sql = "SELECT a, b, row_number() OVER (ORDER BY a) FROM tbl ORDER BY 1, 3, 2";
+
+ RelCollation sortCollation = TraitUtils.createCollation(F.asList(0, 2, 1));
+ RelCollation windowCollation = TraitUtils.createCollation(F.asList(0));
+
+ assertPlan(sql, schema, nodeOrAnyChild(isInstanceOf(IgniteSort.class)
+ .and(it -> it.collation().equals(sortCollation))
+ .and(input(isInstanceOf(IgniteWindow.class)
+ .and(it -> it.collation().equals(windowCollation))
+ .and(input(nodeOrAnyChild(isInstanceOf(IgniteSort.class)
+ .and(it -> it.collation().equals(windowCollation)))))))));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testConstantsInPartitionByAndOrderBy() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TBL", IgniteDistributions.single(),
+ "A", SqlTypeName.INTEGER)
+ );
+
+ String sql = "SELECT MAX(a) OVER (PARTITION BY 1 ORDER BY 2) FROM tbl";
+
+ assertPlan(sql, schema, nodeOrAnyChild(isInstanceOf(IgniteWindow.class)
+ .and(it -> it.getGroup().keys.isEmpty()
+ && it.collation().getKeys().isEmpty())
+ .and(not(input(nodeOrAnyChild(isInstanceOf(IgniteProject.class)))))));
+ }
+
+ /**
+ * @throws Exception if failed
+ */
+ @Test
+ public void testCorrelatedDistribution() throws Exception {
+ IgniteSchema schema = createSchema(
+ createTable("TA1", IgniteDistributions.affinity(0, "cache1", "hash"),
+ "A", Integer.class, "B", Integer.class, "C", Integer.class),
+ createTable("TA2", IgniteDistributions.affinity(1, "cache2", "hash"),
+ "A", Integer.class, "B", Integer.class, "C", Integer.class),
+ // TODO: https://issues.apache.org/jira/browse/IGNITE-28881
+ // Test need to pass also without additional indexes.
+ createTable("TH1", IgniteDistributions.hash(Arrays.asList(0, 1)),
+ "A", Integer.class, "B", Integer.class, "C", Integer.class)
+ .addIndex("TH1_IDX", 0, 1),
+ createTable("TH2", IgniteDistributions.hash(Arrays.asList(1, 2)),
+ "A", Integer.class, "B", Integer.class, "C", Integer.class)
+ .addIndex("TH2_IDX", 0, 1)
+ );
+
+ Predicate<RelNode> colocatedPredicate = nodeOrAnyChild(isInstanceOf(IgniteColocatedAggregateBase.class)
+ .and(hasChildThat(isInstanceOf(IgniteExchange.class)).negate())
+ .and(hasChildThat(isInstanceOf(IgniteWindow.class))
+ .and(window -> TraitUtils.correlation(window).correlated())));
+
+ // Affinity distribution and window with one correlated variable.
+ String sql = "SELECT a FROM ta1 WHERE EXISTS (SELECT s.a FROM ( " +
+ "SELECT a, ROW_NUMBER() OVER ( PARTITION BY ta1.a ORDER BY ta2.b ) rn " +
+ "FROM ta2 WHERE ta2.b = ta1.a) s WHERE rn > 1 )";
+ assertPlan(sql, schema, colocatedPredicate);
+
+ // Hash distribution on two columns and window without correlated variables.
+ sql = "SELECT a FROM th1 WHERE EXISTS (SELECT s.a FROM ( " +
+ "SELECT a, ROW_NUMBER() OVER ( PARTITION BY th2.a ORDER BY th2.b ) rn " +
+ "FROM th2 WHERE th2.b = th1.a AND th2.c = th1.b) s WHERE rn > 1 )";
+ assertPlan(sql, schema, colocatedPredicate);
+
+ // Hash distribution on two columns and window with two correlated variables.
+ sql = "SELECT a FROM th1 WHERE EXISTS (SELECT s.a FROM ( " +
+ "SELECT a, ROW_NUMBER() OVER ( PARTITION BY th1.a ORDER BY th1.b ) rn " +
+ "FROM th2 WHERE th2.b = th1.a AND th2.c = th1.b) s WHERE rn > 1 )";
+ assertPlan(sql, schema, colocatedPredicate);
+ }
+
+ /** */
+ private Predicate<IgniteWindow> isWindow(List<Integer> keys, @Nullable List<Integer> collation,
+ RexWindowBound lower, RexWindowBound upper, SqlAggFunction... functions) {
+ return isInstanceOf(IgniteWindow.class)
+ .and(window -> ImmutableBitSet.of(keys).equals(window.getGroup().keys))
+ .and(window -> TraitUtils.createCollation(collation).equals(window.collation()))
+ .and(window -> lower.equals(window.getGroup().lowerBound))
+ .and(window -> upper.equals(window.getGroup().upperBound))
+ .and(window -> F.asList(functions).equals(
+ Commons.transform(window.getGroup().aggCalls, Window.RexWinAggCall::getOperator)));
+ }
+}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/testsuites/ExecutionTestSuite.java b/modules/calcite/src/test/java/org/apache/ignite/testsuites/ExecutionTestSuite.java
index 728c2e8..6b01981 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/testsuites/ExecutionTestSuite.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/testsuites/ExecutionTestSuite.java
@@ -36,6 +36,7 @@
import org.apache.ignite.internal.processors.query.calcite.exec.rel.TableSpoolExecutionTest;
import org.apache.ignite.internal.processors.query.calcite.exec.rel.TimeCalculationExecutionTest;
import org.apache.ignite.internal.processors.query.calcite.exec.rel.UncollectExecutionTest;
+import org.apache.ignite.internal.processors.query.calcite.exec.rel.WindowExecutionTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -63,6 +64,7 @@
TimeCalculationExecutionTest.class,
UncollectExecutionTest.class,
ScanTableRowExecutionTest.class,
+ WindowExecutionTest.class,
})
public class ExecutionTestSuite {
}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/testsuites/IntegrationTestSuite.java b/modules/calcite/src/test/java/org/apache/ignite/testsuites/IntegrationTestSuite.java
index f4e123c..b965adf 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/testsuites/IntegrationTestSuite.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/testsuites/IntegrationTestSuite.java
@@ -86,6 +86,7 @@
import org.apache.ignite.internal.processors.query.calcite.integration.UserDefinedFunctionsIntegrationTransactionalTest;
import org.apache.ignite.internal.processors.query.calcite.integration.UserDefinedTxAwareFunctionsIntegrationTest;
import org.apache.ignite.internal.processors.query.calcite.integration.ViewsIntegrationTest;
+import org.apache.ignite.internal.processors.query.calcite.integration.WindowIntegrationTest;
import org.apache.ignite.internal.processors.query.calcite.integration.tpch.TpchScale001Test;
import org.apache.ignite.internal.processors.query.calcite.integration.tpch.TpchScale010Test;
import org.apache.ignite.internal.processors.query.calcite.integration.tpch.TpchScale100Test;
@@ -183,6 +184,7 @@
CacheWithInterceptorIntegrationTest.class,
TxThreadLockingTest.class,
SelectByKeyFieldTest.class,
+ WindowIntegrationTest.class,
})
public class IntegrationTestSuite {
}
diff --git a/modules/calcite/src/test/java/org/apache/ignite/testsuites/PlannerTestSuite.java b/modules/calcite/src/test/java/org/apache/ignite/testsuites/PlannerTestSuite.java
index c9efde0..7daf902 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/testsuites/PlannerTestSuite.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/testsuites/PlannerTestSuite.java
@@ -50,6 +50,7 @@
import org.apache.ignite.internal.processors.query.calcite.planner.UncollectPlannerTest;
import org.apache.ignite.internal.processors.query.calcite.planner.UnionPlannerTest;
import org.apache.ignite.internal.processors.query.calcite.planner.UserDefinedViewsPlannerTest;
+import org.apache.ignite.internal.processors.query.calcite.planner.WindowPlannerTest;
import org.apache.ignite.internal.processors.query.calcite.planner.hints.HintsTestSuite;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -91,6 +92,7 @@
RexSimplificationPlannerTest.class,
SerializationPlannerTest.class,
UncollectPlannerTest.class,
+ WindowPlannerTest.class,
AbstractPlannerUtilityTest.class,
HintsTestSuite.class,
diff --git a/modules/calcite/src/test/sql/aggregate/group/test_group_by.test b/modules/calcite/src/test/sql/aggregate/group/test_group_by.test
index 56ffecc..c6b9948 100644
--- a/modules/calcite/src/test/sql/aggregate/group/test_group_by.test
+++ b/modules/calcite/src/test/sql/aggregate/group/test_group_by.test
@@ -137,7 +137,8 @@
query IR
SELECT 1 AS i, SUM(i) FROM integers GROUP BY i ORDER BY 2;
----
-1 8.000000
+1 2.000000
+1 6.000000
# refer to the same alias twice
query IR
diff --git a/modules/calcite/src/test/sql/subquery/scalar/test_complex_correlated_subquery.test b/modules/calcite/src/test/sql/subquery/scalar/test_complex_correlated_subquery.test
index 5589b45..824a673 100644
--- a/modules/calcite/src/test/sql/subquery/scalar/test_complex_correlated_subquery.test
+++ b/modules/calcite/src/test/sql/subquery/scalar/test_complex_correlated_subquery.test
@@ -68,8 +68,8 @@
# REQUIRE(CHECK_COLUMN(result, 0, {Value(), 1, 2, 3}));
# REQUIRE(CHECK_COLUMN(result, 1, {6, 6, 9, 12}));
-# correlated expression inside window function not supported
-statement error
+# correlated expression inside window function supported
+statement ok
SELECT i, (SELECT row_number() OVER (ORDER BY i)) FROM integers i1 ORDER BY i;
# union with correlated expression
diff --git a/modules/calcite/src/test/sql/subquery/scalar/test_window_function_subquery.test_ignore b/modules/calcite/src/test/sql/subquery/scalar/test_window_function_subquery.test
similarity index 95%
rename from modules/calcite/src/test/sql/subquery/scalar/test_window_function_subquery.test_ignore
rename to modules/calcite/src/test/sql/subquery/scalar/test_window_function_subquery.test
index a9b99f2..0f1c670 100644
--- a/modules/calcite/src/test/sql/subquery/scalar/test_window_function_subquery.test_ignore
+++ b/modules/calcite/src/test/sql/subquery/scalar/test_window_function_subquery.test
@@ -1,7 +1,6 @@
# name: test/sql/subquery/scalar/test_window_function_subquery.test
# description: Test window functions in correlated subqueries
# group: [scalar]
-# Ignore https://issues.apache.org/jira/browse/IGNITE-14777
statement ok
PRAGMA enable_verification
diff --git a/modules/calcite/src/test/sql/window/test_window_functions.test b/modules/calcite/src/test/sql/window/test_window_functions.test
new file mode 100644
index 0000000..4bff9d4
--- /dev/null
+++ b/modules/calcite/src/test/sql/window/test_window_functions.test
@@ -0,0 +1,617 @@
+# name: test/sql/window/test_window_functions.test
+# description: Test window functions
+# group: [window]
+
+# sample data
+statement ok
+CREATE TABLE empsalary(depname VARCHAR, empno BIGINT, salary INT, enroll_date DATE);
+
+statement ok
+INSERT INTO empsalary VALUES ('develop', 10, 5200, '2007-08-01'), ('sales', 1, 5000, '2006-10-01'), ('person', 5, 3500, '2007-12-10'), ('sales', 4, 4800, '2007-08-08'), ('person', 2, 3900, '2006-12-23'), ('develop', 7, 4200, '2008-01-01'), ('develop', 9, 4500, '2008-01-01'), ('sales', 3, 4800, '2007-08-01'), ('develop', 8, 6000, '2006-10-01'), ('develop', 11, 5200, '2007-08-15');
+
+statement ok
+CREATE TABLE numbers (id INTEGER, val1 INTEGER, val2 INTEGER, val3 INTEGER, val4 INTEGER);
+
+statement ok
+INSERT INTO numbers VALUES (0, 0, 0, 0, 0), (1, 1, 3, 1, 91), (2, 0, 0, 0, 20), (3, 0, 2, 0, 50), (4, 0, 0, 4, 64), (5, 1, 1, 9, 9), (6, 1, 1, 7, 57), (7, 1, 1, 1, 1), (8, 1, 1, 1, 21), (9, 1, 3, 3, 43), (10, 0, 2, 4, 14);
+
+statement ok
+CREATE TABLE t_lag_lead(id INTEGER, val INTEGER, def INTEGER);
+
+statement ok
+INSERT INTO t_lag_lead VALUES (1, 10, 999), (2, NULL, 999), (3, 30, 999);
+
+statement ok
+CREATE TABLE t_first_value(id INTEGER, val INTEGER);
+
+statement ok
+INSERT INTO t_first_value VALUES (1, 10), (2, 20), (3, 30);
+
+# sum with partition by
+query IITI
+SELECT depname, empno, salary, sum(salary) OVER (PARTITION BY depname) FROM empsalary ORDER BY depname, salary, empno;
+----
+develop 7 4200 25100
+develop 9 4500 25100
+develop 10 5200 25100
+develop 11 5200 25100
+develop 8 6000 25100
+person 5 3500 7400
+person 2 3900 7400
+sales 3 4800 14600
+sales 4 4800 14600
+sales 1 5000 14600
+
+# rank function with partition and order by
+query IITI rowsort
+SELECT depname, empno, salary, rank() OVER (PARTITION BY depname ORDER BY salary) FROM empsalary
+----
+develop 7 4200 1
+develop 9 4500 2
+develop 10 5200 3
+develop 11 5200 3
+develop 8 6000 5
+person 5 3500 1
+person 2 3900 2
+sales 3 4800 1
+sales 4 4800 1
+sales 1 5000 3
+
+# window with group by
+query IIII rowsort
+SELECT val2, val3, SUM(SUM(val2)) OVER (PARTITION BY val2), AVG(val3) FROM numbers GROUP BY val2, val3;
+----
+0 4 0 4
+0 0 0 0
+1 9 4 9
+1 7 4 7
+1 1 4 1
+2 4 4 4
+2 0 4 0
+3 3 6 3
+3 1 6 1
+
+# empty windows specification
+query I
+SELECT COUNT(*) OVER () FROM numbers WHERE id < 10;
+----
+10
+10
+10
+10
+10
+10
+10
+10
+10
+10
+
+# cumulative aggregate
+query III
+SELECT SUM(val2) OVER (PARTITION BY val3 ORDER BY id) AS sum_1, val3, val2 FROM numbers WHERE id < 10;
+----
+0 0 0
+0 0 0
+2 0 2
+3 1 3
+4 1 1
+5 1 1
+3 3 3
+0 4 0
+1 7 1
+1 9 1
+
+# row number
+query I
+SELECT ROW_NUMBER() OVER (ORDER BY id) FROM numbers WHERE id < 10;
+----
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+
+# rank
+query III
+SELECT RANK() OVER (PARTITION BY val2 ORDER BY val3) AS rank_1, val3, val2 FROM numbers WHERE id < 10;
+----
+1 0 0
+1 0 0
+3 4 0
+1 1 1
+1 1 1
+3 7 1
+4 9 1
+1 0 2
+1 1 3
+2 3 3
+
+# dense_rank
+query III
+SELECT DENSE_RANK() OVER (PARTITION BY val2 ORDER BY val3), val3, val2 FROM numbers WHERE id < 10;
+----
+1 0 0
+1 0 0
+2 4 0
+1 1 1
+1 1 1
+2 7 1
+3 9 1
+1 0 2
+1 1 3
+2 3 3
+
+# percent_rank
+query RII
+SELECT PERCENT_RANK() OVER (PARTITION BY val2 ORDER BY val3), val3, val2 FROM numbers WHERE id < 10;
+----
+0 0 0
+0 0 0
+1 4 0
+0 1 1
+0 1 1
+0.6666666666666666 7 1
+1 9 1
+0 0 2
+0 1 3
+1 3 3
+
+# cume_dist
+query RII
+SELECT CUME_DIST() OVER (PARTITION BY val2 ORDER BY val3), val3, val2 FROM numbers WHERE id < 10;
+----
+0.6666666666666666 0 0
+0.6666666666666666 0 0
+1 4 0
+0.5 1 1
+0.5 1 1
+0.75 7 1
+1 9 1
+1 0 2
+0.5 1 3
+1 3 3
+
+# lag
+query IIIII
+SELECT LAG(val3) OVER (PARTITION BY val2 ORDER BY val3), LAG(val3, val2) OVER (PARTITION BY val2 ORDER BY val3), LAG(val3, val2, -1) OVER (PARTITION BY val2 ORDER BY val3), val3, val2 FROM numbers WHERE id < 10;
+----
+NULL 0 0 0 0
+0 0 0 0 0
+0 4 4 4 0
+NULL NULL -1 1 1
+1 1 1 1 1
+1 1 1 7 1
+7 7 7 9 1
+NULL NULL -1 0 2
+NULL NULL -1 1 3
+1 NULL -1 3 3
+
+# lead
+query IIIII
+SELECT LEAD(val3) OVER (PARTITION BY val2 ORDER BY val3), LEAD(val3, val2) OVER (PARTITION BY val2 ORDER BY val3), LEAD(val3, val2, -1) OVER (PARTITION BY val2 ORDER BY val3), val3, val2 FROM numbers WHERE id < 10;
+----
+0 0 0 0 0
+4 0 0 0 0
+NULL 4 4 4 0
+1 1 1 1 1
+7 7 7 1 1
+9 9 9 7 1
+NULL NULL -1 9 1
+NULL NULL -1 0 2
+3 NULL -1 1 3
+NULL NULL -1 3 3
+
+# first value
+query III
+SELECT FIRST_VALUE(val3) OVER (PARTITION BY val2 ORDER BY val3), val3, val2 FROM numbers WHERE id < 10;
+----
+0 0 0
+0 0 0
+0 4 0
+1 1 1
+1 1 1
+1 7 1
+1 9 1
+0 0 2
+1 1 3
+1 3 3
+
+# last value
+query III
+SELECT LAST_VALUE(val3) OVER (PARTITION BY val2 ORDER BY val3), val3, val2 FROM numbers WHERE id < 10;
+----
+0 0 0
+0 0 0
+4 4 0
+1 1 1
+1 1 1
+7 7 1
+9 9 1
+0 0 2
+1 1 3
+3 3 3
+
+# ntile
+query TI
+SELECT depname, NTILE(4) OVER (ORDER BY depname) FROM empsalary;
+----
+develop 1
+develop 1
+develop 1
+develop 2
+develop 2
+person 2
+person 3
+sales 3
+sales 4
+sales 4
+
+# nth_value
+query TT
+SELECT depname, NTH_VALUE(depname, 6) OVER (ORDER BY depname) FROM empsalary;
+----
+develop NULL
+develop NULL
+develop NULL
+develop NULL
+develop NULL
+person person
+person person
+sales person
+sales person
+sales person
+
+# query with different windows evaluation.
+query III rowsort
+SELECT * FROM (
+ SELECT
+ COUNT(*) OVER (PARTITION BY val2 ORDER BY val3) + SUM(val4) OVER (PARTITION BY val1 ORDER BY val3) AS total,
+ COUNT(*) OVER (PARTITION BY val2 ORDER BY val3) AS val2count, SUM(val4) OVER (PARTITION BY val1 ORDER BY val3) AS val1sum
+ FROM numbers
+) sub WHERE total = val2count + val1sum;
+----
+72 2 70
+72 2 70
+151 3 148
+115 2 113
+115 2 113
+216 3 213
+226 4 222
+71 1 70
+150 2 148
+114 1 113
+158 2 156
+
+# non-default frame specifications
+query IIII rowsort
+SELECT val2, val3,
+ SUM(val3) OVER (PARTITION BY val2 ORDER BY val3),
+ LAST_VALUE(val3) OVER (PARTITION BY val2 ORDER BY val3)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss
+----
+0 0 0 0
+0 4 4 4
+1 1 1 1
+1 7 8 7
+1 9 17 9
+2 0 0 0
+2 4 4 4
+3 1 1 1
+3 3 4 3
+
+query IIII rowsort
+SELECT val2, val3,
+ SUM(val3) over (PARTITION BY val2 ORDER BY val3 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
+ LAST_VALUE(val3) OVER (PARTITION BY val2 ORDER BY val3 RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss
+----
+0 0 0 0
+0 4 4 4
+1 1 1 1
+1 7 8 7
+1 9 17 9
+2 0 0 0
+2 4 4 4
+3 1 1 1
+3 3 4 3
+
+query IIII rowsort
+SELECT val2, val3,
+ SUM(val3) over (PARTITION BY val2 ORDER BY val3 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
+ LAST_VALUE(val3) OVER (PARTITION BY val2 ORDER BY val3 RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss
+----
+0 0 4 4
+0 4 4 4
+1 1 17 9
+1 7 17 9
+1 9 17 9
+2 0 4 4
+2 4 4 4
+3 1 4 3
+3 3 4 3
+
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 RANGE BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2, val3
+----
+0 0 29 3
+0 4 29 3
+1 1 25 3
+1 7 25 3
+1 9 25 3
+2 0 8 3
+2 4 8 3
+3 1 4 3
+3 3 4 3
+
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 RANGE BETWEEN 4 PRECEDING AND 2 FOLLOWING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 RANGE BETWEEN 4 PRECEDING AND 2 FOLLOWING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2, val3
+----
+0 0 25 4
+0 4 25 4
+1 1 29 3
+1 7 29 3
+1 9 29 3
+2 0 29 3
+2 4 29 3
+3 1 29 3
+3 3 29 3
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 DESC RANGE BETWEEN 4 PRECEDING AND 2 FOLLOWING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 DESC RANGE BETWEEN 4 PRECEDING AND 2 FOLLOWING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2 DESC, val3 DESC
+----
+3 3 25 1
+3 1 25 1
+2 4 29 0
+2 0 29 0
+1 9 29 0
+1 7 29 0
+1 1 29 0
+0 4 29 0
+0 0 29 0
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 RANGE BETWEEN 4 PRECEDING AND 2 PRECEDING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 RANGE BETWEEN 4 PRECEDING AND 2 PRECEDING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2, val3
+----
+0 0 NULL NULL
+0 4 NULL NULL
+1 1 NULL NULL
+1 7 NULL NULL
+1 9 NULL NULL
+2 0 4 4
+2 4 4 4
+3 1 21 9
+3 3 21 9
+
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 DESC RANGE BETWEEN 4 PRECEDING AND 2 PRECEDING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 DESC RANGE BETWEEN 4 PRECEDING AND 2 PRECEDING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2 DESC, val3 DESC
+----
+3 3 NULL NULL
+3 1 NULL NULL
+2 4 NULL NULL
+2 0 NULL NULL
+1 9 4 1
+1 7 4 1
+1 1 4 1
+0 4 8 0
+0 0 8 0
+
+query IIII rowsort
+SELECT val2, val3,
+ SUM(val3) over (PARTITION BY val2 ORDER BY val3 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW),
+ LAST_VALUE(val3) OVER (PARTITION BY val2 ORDER BY val3 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss
+----
+0 0 0 0
+0 4 4 4
+1 1 1 1
+1 7 8 7
+1 9 17 9
+2 0 0 0
+2 4 4 4
+3 1 1 1
+3 3 4 3
+
+query IIII rowsort
+SELECT val2, val3,
+ SUM(val3) over (PARTITION BY val2 ORDER BY val3 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING),
+ LAST_VALUE(val3) OVER (PARTITION BY val2 ORDER BY val3 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss
+----
+0 0 4 4
+0 4 4 4
+1 1 17 9
+1 7 17 9
+1 9 17 9
+2 0 4 4
+2 4 4 4
+3 1 4 3
+3 3 4 3
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2, val3
+----
+0 0 29 3
+0 4 29 3
+1 1 25 3
+1 7 24 3
+1 9 17 3
+2 0 8 3
+2 4 8 3
+3 1 4 3
+3 3 3 3
+
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2, val3
+----
+0 0 5 1
+0 4 12 7
+1 1 21 9
+1 7 21 0
+1 9 25 4
+2 0 26 1
+2 4 25 3
+3 1 24 3
+3 3 17 3
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 DESC ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 DESC ROWS BETWEEN 4 PRECEDING AND 2 FOLLOWING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2 DESC, val3 DESC
+----
+3 3 8 4
+3 1 8 0
+2 4 17 9
+2 0 24 7
+1 9 25 1
+1 7 26 4
+1 1 25 0
+0 4 21 0
+0 0 21 0
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2, val3
+----
+0 0 NULL NULL
+0 4 NULL NULL
+1 1 0 0
+1 7 4 4
+1 9 5 1
+2 0 12 7
+2 4 17 9
+3 1 16 0
+3 3 13 4
+
+query IIII
+SELECT val2, val3,
+ SUM(val3) OVER (ORDER BY val2 DESC ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING),
+ LAST_VALUE(val3) OVER (ORDER BY val2 DESC ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING)
+FROM (SELECT DISTINCT val3, val2 FROM numbers) ss ORDER BY val2 DESC, val3 DESC
+----
+3 3 NULL NULL
+3 1 NULL NULL
+2 4 3 3
+2 0 4 1
+1 9 8 4
+1 7 5 0
+1 1 13 9
+0 4 16 7
+0 0 17 1
+
+# date time interval bounds
+query TI
+SELECT *
+FROM (
+ SELECT
+ depname,
+ SUM(salary) OVER (PARTITION BY depname ORDER BY enroll_date RANGE BETWEEN INTERVAL 730 DAYS PRECEDING AND INTERVAL 365 DAYS FOLLOWING) val
+ FROM empsalary) s
+ORDER BY s.depname, s.val
+----
+develop 16400
+develop 25100
+develop 25100
+develop 25100
+develop 25100
+person 7400
+person 7400
+sales 14600
+sales 14600
+sales 14600
+
+# window in correlated subquery
+query II
+SELECT id, (SELECT row_number() OVER (ORDER BY id)) FROM numbers i1 ORDER BY id;
+----
+0 1
+1 1
+2 1
+3 1
+4 1
+5 1
+6 1
+7 1
+8 1
+9 1
+10 1
+
+# downstream should not be ended in case window output is not empty.
+query III
+SELECT COUNT(*), MIN(cnt), MAX(cnt)
+FROM (
+ SELECT *, COUNT(*) OVER () AS cnt
+ FROM TABLE(SYSTEM_RANGE(1, 2000))
+);
+----
+2000 2000 2000
+
+# lag/lead default value.
+query IIII
+SELECT id, val,
+ LAG(val, 1, 999) OVER (ORDER BY id),
+ LEAD(val, 1, 999) OVER (ORDER BY id)
+FROM t_lag_lead
+ORDER BY id;
+----
+1 10 999 NULL
+2 NULL 10 30
+3 30 NULL 999
+
+query IIII
+SELECT id, val,
+ LAG(val, 1, def) OVER (ORDER BY id),
+ LEAD(val, 1, def) OVER (ORDER BY id)
+FROM t_lag_lead
+ORDER BY id;
+----
+1 10 999 NULL
+2 NULL 10 30
+3 30 NULL 999
+
+# First_value outside of window.
+query II
+SELECT id,
+ FIRST_VALUE(val) OVER (
+ ORDER BY id
+ ROWS BETWEEN 4 PRECEDING AND 2 PRECEDING
+ )
+FROM t_first_value
+ORDER BY id;
+----
+1 NULL
+2 NULL
+3 10
\ No newline at end of file
diff --git a/modules/checkstyle/pom.xml b/modules/checkstyle/pom.xml
index 49246c6..3982c19 100644
--- a/modules/checkstyle/pom.xml
+++ b/modules/checkstyle/pom.xml
@@ -41,7 +41,7 @@
<maven.compiler.target>17</maven.compiler.target>
<maven.flatten.file.name>pom-installed.xml</maven.flatten.file.name>
<revision>2.19.0-SNAPSHOT</revision>
- <checkstyle.puppycrawl.version>8.45</checkstyle.puppycrawl.version>
+ <checkstyle.puppycrawl.version>12.3.1</checkstyle.puppycrawl.version>
</properties>
<url>https://ignite.apache.org</url>
diff --git a/modules/clients/src/test/resources/jetty/rest-jetty-ssl-client-auth.xml b/modules/clients/src/test/resources/jetty/rest-jetty-ssl-client-auth.xml
index 00158a8..b95d81d 100644
--- a/modules/clients/src/test/resources/jetty/rest-jetty-ssl-client-auth.xml
+++ b/modules/clients/src/test/resources/jetty/rest-jetty-ssl-client-auth.xml
@@ -19,7 +19,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">5</Set>
<Set name="maxThreads">10</Set>
@@ -76,17 +76,6 @@
</Arg>
</Call>
- <Set name="handler">
- <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/clients/src/test/resources/jetty/rest-jetty-ssl.xml b/modules/clients/src/test/resources/jetty/rest-jetty-ssl.xml
index d84df0d..d34d2c9 100644
--- a/modules/clients/src/test/resources/jetty/rest-jetty-ssl.xml
+++ b/modules/clients/src/test/resources/jetty/rest-jetty-ssl.xml
@@ -20,7 +20,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<!-- Default queued blocking thread pool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">10</Set>
@@ -38,7 +38,7 @@
</Call>
</New>
- <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
+ <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
<Set name="keyStorePath"><SystemProperty name="CLIENTS_MODULE_PATH"/>/src/test/keystore/server.jks</Set>
<Set name="keyStorePassword">123456</Set>
<Set name="keyManagerPassword">123456</Set>
@@ -77,18 +77,5 @@
</New>
</Arg>
</Call>
-
- <Set name="handler">
- <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/clients/src/test/resources/jetty/rest-jetty.xml b/modules/clients/src/test/resources/jetty/rest-jetty.xml
index d84bf8a..c4dcc0f 100644
--- a/modules/clients/src/test/resources/jetty/rest-jetty.xml
+++ b/modules/clients/src/test/resources/jetty/rest-jetty.xml
@@ -20,7 +20,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<!-- Default queued blocking thread pool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">20</Set>
@@ -61,17 +61,5 @@
</Arg>
</Call>
- <Set name="handler">
- <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/clients/src/test/resources/jetty/router-jetty-ssl.xml b/modules/clients/src/test/resources/jetty/router-jetty-ssl.xml
index 093fa18..8508152 100644
--- a/modules/clients/src/test/resources/jetty/router-jetty-ssl.xml
+++ b/modules/clients/src/test/resources/jetty/router-jetty-ssl.xml
@@ -20,7 +20,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<!-- Default queued blocking thread pool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">10</Set>
@@ -38,7 +38,7 @@
</Call>
</New>
- <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
+ <New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory$Server">
<Set name="keyStorePath"><SystemProperty name="CLIENTS_MODULE_PATH"/>/src/test/keystore/server.jks</Set>
<Set name="keyStorePassword">123456</Set>
<Set name="keyManagerPassword">123456</Set>
@@ -77,18 +77,5 @@
</New>
</Arg>
</Call>
-
- <Set name="handler">
- <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/clients/src/test/resources/jetty/router-jetty.xml b/modules/clients/src/test/resources/jetty/router-jetty.xml
index 8815431..eecb262 100644
--- a/modules/clients/src/test/resources/jetty/router-jetty.xml
+++ b/modules/clients/src/test/resources/jetty/router-jetty.xml
@@ -20,7 +20,7 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server">
- <Arg name="threadpool">
+ <Arg>
<!-- Default queued blocking thread pool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Set name="minThreads">20</Set>
@@ -61,17 +61,5 @@
</Arg>
</Call>
- <Set name="handler">
- <New id="Handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
- <Set name="handlers">
- <Array type="org.eclipse.jetty.server.Handler">
- <Item>
- <New id="Contexts" class="org.eclipse.jetty.server.handler.ContextHandlerCollection"/>
- </Item>
- </Array>
- </Set>
- </New>
- </Set>
-
<Set name="stopAtShutdown">false</Set>
</Configure>
diff --git a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
index 052db3af..2fe3a5e 100644
--- a/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
+++ b/modules/codegen/src/main/java/org/apache/ignite/internal/MessageSerializerGenerator.java
@@ -462,6 +462,9 @@
else if (assignableFrom(type, type("org.apache.ignite.lang.IgniteProductVersion")))
returnFalseIfWriteFailed(write, field, "writer.writeIgniteProductVersion", getExpr);
+ else if (assignableFrom(type, type("org.apache.ignite.internal.processors.cache.version.GridCacheVersion")))
+ returnFalseIfWriteFailed(write, field, "writer.writeGridCacheVersion", getExpr);
+
else if (assignableFrom(type, type(MESSAGE_INTERFACE))) {
if (sameType(type, COMPRESSED_MESSAGE_CLASS))
throw new IllegalArgumentException(COMPRESSED_MSG_ERROR);
@@ -691,6 +694,9 @@
else if (assignableFrom(type, type("org.apache.ignite.lang.IgniteProductVersion")))
returnFalseIfReadFailed(field, "reader.readIgniteProductVersion");
+ else if (assignableFrom(type, type("org.apache.ignite.internal.processors.cache.version.GridCacheVersion")))
+ returnFalseIfReadFailed(field, "reader.readGridCacheVersion");
+
else if (assignableFrom(type, type(MESSAGE_INTERFACE))) {
if (sameType(type, COMPRESSED_MESSAGE_CLASS))
throw new IllegalArgumentException(COMPRESSED_MSG_ERROR);
@@ -833,6 +839,9 @@
if (sameType(type, "org.apache.ignite.lang.IgniteUuid"))
return "IGNITE_UUID";
+ if (sameType(type, "org.apache.ignite.internal.processors.cache.version.GridCacheVersion"))
+ return "GRID_CACHE_VERSION";
+
if (sameType(type, "org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion"))
return "AFFINITY_TOPOLOGY_VERSION";
diff --git a/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java b/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
index 6aa8c01..ec44339 100644
--- a/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
+++ b/modules/commons/src/main/java/org/apache/ignite/IgniteCommonsSystemProperties.java
@@ -19,6 +19,7 @@
import java.io.Serializable;
import org.apache.ignite.internal.util.GridLogThrottle;
+import org.apache.ignite.lang.IgniteExperimental;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.util.CommonUtils.DFLT_MARSHAL_BUFFERS_PER_THREAD_POOL_SIZE;
@@ -153,6 +154,67 @@
"memory block is released. This will help to recognize cases when already released memory is accessed")
public static final String IGNITE_OFFHEAP_SAFE_RELEASE = "IGNITE_OFFHEAP_SAFE_RELEASE";
+ /** Human-readable ID of a data center where the node is running. */
+ @IgniteExperimental
+ @SystemProperty(value = "Data Center ID where local node is running. Not required for a single Data Center deployments",
+ type = String.class)
+ public static final String IGNITE_DATA_CENTER_ID = "IGNITE_DATA_CENTER_ID";
+
+ /** Defines path to the file that contains list of classes allowed to safe deserialization.*/
+ @SystemProperty(value = "Path to the file that contains list of classes allowed to safe deserialization",
+ type = String.class)
+ public static final String IGNITE_MARSHALLER_WHITELIST = "IGNITE_MARSHALLER_WHITELIST";
+
+ /** Defines path to the file that contains list of classes disallowed to safe deserialization.*/
+ @SystemProperty(value = "Path to the file that contains list of classes disallowed to safe deserialization",
+ type = String.class)
+ public static final String IGNITE_MARSHALLER_BLACKLIST = "IGNITE_MARSHALLER_BLACKLIST";
+
+ /**
+ * If this parameter is set to true, Ignite will automatically configure an ObjectInputFilter instance for the
+ * current JVM it is running in.
+ * Default value is {@code true}.
+ */
+ @SystemProperty(
+ value = "If this parameter is set to true, Ignite will automatically configure an ObjectInputFilter" +
+ " instance for the current JVM it is running in. Filtering is based on class lists defined by the" +
+ " `IGNITE_MARSHALLER_WHITELIST` and `IGNITE_MARSHALLER_BLACKLIST` system properties or their default values." +
+ " Disabling it is not recommended because the Ignite host may be vulnerable to RCE attacks based on Java" +
+ " serialization mechanisms",
+ defaults = "true"
+ )
+ public static final String IGNITE_ENABLE_OBJECT_INPUT_FILTER_AUTOCONFIGURATION = "IGNITE_ENABLE_OBJECT_INPUT_FILTER_AUTOCONFIGURATION";
+
+ /**
+ * Enables default selected keys set to be used inside {@code GridNioServer}.
+ * <p>
+ * Default value is {@code false}. Should be switched to {@code true} if there are
+ * any problems in communication layer.
+ */
+ @SystemProperty("Enables default selected keys set to be used inside GridNioServer " +
+ "which lead to some extra garbage generation when processing selected keys. " +
+ "Should be switched to true if there are any problems in communication layer")
+ public static final String IGNITE_NO_SELECTOR_OPTS = "IGNITE_NO_SELECTOR_OPTS";
+
+ /** Default IO balance period. */
+ public static final int DFLT_IO_BALANCE_PERIOD = 5000;
+
+ /** */
+ @SystemProperty(value = "IO balance period in milliseconds", type = Long.class,
+ defaults = "" + DFLT_IO_BALANCE_PERIOD)
+ public static final String IGNITE_IO_BALANCE_PERIOD = "IGNITE_IO_BALANCE_PERIOD";
+
+ /** Default timeout for TCP client recovery descriptor reservation. */
+ public static final int DFLT_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT = 5_000;
+
+ /**
+ * Sets timeout for TCP client recovery descriptor reservation.
+ */
+ @SystemProperty(value = "Timeout for TCP client recovery descriptor reservation in milliseconds",
+ type = Long.class, defaults = "" + DFLT_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT)
+ public static final String IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT =
+ "IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT";
+
/**
* @param enumCls Enum type.
* @param name Name of the system property or environment variable.
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java b/modules/commons/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java
similarity index 74%
rename from modules/core/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java
rename to modules/commons/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java
index 0953740..71046d1 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java
+++ b/modules/commons/src/main/java/org/apache/ignite/cache/CacheEntryVersion.java
@@ -18,18 +18,15 @@
package org.apache.ignite.cache;
import java.io.Serializable;
-import java.util.Map;
-import org.apache.ignite.internal.processors.cache.CacheConflictResolutionManager;
-import org.apache.ignite.internal.processors.cache.IgniteInternalCache;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersionManager;
/**
* Entry event order.
* Two concurrent updates of the same entry can be ordered based on {@link CacheEntryVersion} comparsion.
* Greater value means that event occurs later.
*
- * @see CacheConflictResolutionManager
- * @see GridCacheVersionManager#dataCenterId(byte)
+ *
+ * {@ignitelink org.apache.ignite.internal.processors.cache.CacheConflictResolutionManager}
+ * {@ignitelink org.apache.ignite.internal.processors.cache.version.GridCacheVersionManager#dataCenterId(byte)}
*/
public interface CacheEntryVersion extends Comparable<CacheEntryVersion>, Serializable {
/**
@@ -44,7 +41,7 @@
/**
* Cluster id is a value to distinguish updates in case user wants to aggregate and sort updates from several
* Ignite clusters. {@code clusterId} id can be set for the node using
- * {@link GridCacheVersionManager#dataCenterId(byte)}.
+ * {@ignitelink org.apache.ignite.internal.processors.cache.version.GridCacheVersionManager#dataCenterId(byte)}
*
* @return Cluster id.
*/
@@ -55,11 +52,12 @@
/**
* If source of the update is "local" cluster then {@code null} will be returned.
- * If updated comes from the other cluster using {@link IgniteInternalCache#putAllConflict(Map)}
+ * If updated comes from the other cluster using
+ * {@ignitelink org.apache.ignite.internal.processors.cache.IgniteInternalCache#putAllConflict(Map)}
* then entry version for other cluster.
* @return Replication version.
- * @see IgniteInternalCache#putAllConflict(Map)
- * @see IgniteInternalCache#removeAllConflict(Map)
+ * {@ignitelink org.apache.ignite.internal.processors.cache.IgniteInternalCache#putAllConflict(Map)}
+ * {@ignitelink org.apache.ignite.internal.processors.cache.IgniteInternalCache#removeAllConflict(Map)}
*/
public CacheEntryVersion otherClusterVersion();
}
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/CacheEntryEventAdapter.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/CacheEntryEventAdapter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/cache/query/CacheEntryEventAdapter.java
rename to modules/commons/src/main/java/org/apache/ignite/cache/query/CacheEntryEventAdapter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
rename to modules/commons/src/main/java/org/apache/ignite/cache/query/IndexQuery.java
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/IndexQueryCriterion.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/IndexQueryCriterion.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/cache/query/IndexQueryCriterion.java
rename to modules/commons/src/main/java/org/apache/ignite/cache/query/IndexQueryCriterion.java
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java b/modules/commons/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
rename to modules/commons/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
index 64864b3..b7be00f 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
+++ b/modules/commons/src/main/java/org/apache/ignite/cache/query/SqlQuery.java
@@ -19,8 +19,6 @@
import java.util.concurrent.TimeUnit;
import javax.cache.Cache;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.A;
@@ -30,7 +28,7 @@
/**
* SQL Query.
*
- * @see IgniteCache#query(Query)
+ * {@ignitelink org.apache.ignite.IgniteCache#query(Query)}
*
* @deprecated Since 2.8, please use {@link SqlFieldsQuery} instead.
*/
@@ -209,7 +207,7 @@
* @return {@code this} For chaining.
*/
public SqlQuery<K, V> setType(Class<?> type) {
- return setType(QueryUtils.typeName(type));
+ return setType(CommonUtils.typeName(type));
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/compute/ComputeExecutionRejectedException.java b/modules/commons/src/main/java/org/apache/ignite/compute/ComputeExecutionRejectedException.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/compute/ComputeExecutionRejectedException.java
rename to modules/commons/src/main/java/org/apache/ignite/compute/ComputeExecutionRejectedException.java
diff --git a/modules/core/src/main/java/org/apache/ignite/failure/FailureType.java b/modules/commons/src/main/java/org/apache/ignite/failure/FailureType.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/failure/FailureType.java
rename to modules/commons/src/main/java/org/apache/ignite/failure/FailureType.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/ClassSet.java b/modules/commons/src/main/java/org/apache/ignite/internal/ClassSet.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/ClassSet.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/ClassSet.java
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/IgniteFutureCancelledCheckedException.java b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteFutureCancelledCheckedException.java
index 1cec418..1ef01e5 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/IgniteFutureCancelledCheckedException.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteFutureCancelledCheckedException.java
@@ -18,12 +18,13 @@
package org.apache.ignite.internal;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.util.future.GridCompoundFuture.SkipLoggingException;
import org.jetbrains.annotations.Nullable;
/**
* Future computation cannot be retrieved because it was cancelled.
*/
-public class IgniteFutureCancelledCheckedException extends IgniteCheckedException {
+public class IgniteFutureCancelledCheckedException extends IgniteCheckedException implements SkipLoggingException {
/** */
private static final long serialVersionUID = 0L;
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/IgniteProperties.java b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteProperties.java
index 75a49cc..cc5c2c8 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/IgniteProperties.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteProperties.java
@@ -25,8 +25,8 @@
* Ignite properties holder.
*/
public class IgniteProperties {
- /** Properties file path. */
- private static final String FILE_PATH = "ignite.properties";
+ /** Build info file path. */
+ private static final String FILE_PATH = "ignite-build-info.properties";
/** Properties. */
private static final Properties PROPS;
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java
index f72e339..52f46a6 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/IgniteVersionUtils.java
@@ -49,6 +49,11 @@
COPYRIGHT = year + " Copyright(C) Apache Software Foundation";
}
+ /** Builds a string containing the semantic version based on the specified Ignite product version. */
+ public static String semanticVersion(IgniteProductVersion productVer) {
+ return productVer.major() + "." + productVer.minor() + "." + productVer.maintenance();
+ }
+
/**
* Private constructor.
*/
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/NodeStoppingException.java b/modules/commons/src/main/java/org/apache/ignite/internal/NodeStoppingException.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/NodeStoppingException.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/NodeStoppingException.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/InIndexQueryCriterion.java b/modules/commons/src/main/java/org/apache/ignite/internal/cache/query/InIndexQueryCriterion.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/cache/query/InIndexQueryCriterion.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/cache/query/InIndexQueryCriterion.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/RangeIndexQueryCriterion.java b/modules/commons/src/main/java/org/apache/ignite/internal/cache/query/RangeIndexQueryCriterion.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/cache/query/RangeIndexQueryCriterion.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/cache/query/RangeIndexQueryCriterion.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/AffinityTopologyVersion.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/affinity/AffinityTopologyVersion.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/affinity/AffinityTopologyVersion.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/affinity/AffinityTopologyVersion.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
similarity index 88%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
index 23605aa..b868064 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/CacheInvokeResult.java
@@ -25,9 +25,6 @@
import javax.cache.processor.EntryProcessorException;
import javax.cache.processor.EntryProcessorResult;
import javax.cache.processor.MutableEntry;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.internal.UnregisteredBinaryTypeException;
-import org.apache.ignite.internal.UnregisteredClassException;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -99,11 +96,8 @@
/** {@inheritDoc} */
@Override public T get() throws EntryProcessorException {
if (err != null) {
- if (err instanceof UnregisteredClassException || err instanceof UnregisteredBinaryTypeException)
- throw (IgniteException)err;
-
- if (err instanceof EntryProcessorException)
- throw (EntryProcessorException)err;
+ if (err instanceof RuntimeException)
+ throw (RuntimeException)err;
throw new EntryProcessorException(err);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java
similarity index 92%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java
index d5abdd4..ed2a945 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersion.java
@@ -21,16 +21,12 @@
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;
-import java.util.UUID;
import org.apache.ignite.cache.CacheEntryVersion;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.plugin.extensions.communication.Message;
/**
* Grid unique version.
*/
-public class GridCacheVersion implements Message, Externalizable, CacheEntryVersion {
+public class GridCacheVersion implements Externalizable, CacheEntryVersion {
/** */
private static final long serialVersionUID = 0L;
@@ -44,15 +40,12 @@
private static final int DR_ID_MASK = 0x1F;
/** Topology version. */
- @Order(0)
int topVer;
/** Node order (used as global order) and DR ID. */
- @Order(1)
int nodeOrderDrId;
/** Order. */
- @Order(2)
long order;
/**
@@ -149,6 +142,21 @@
return this; // Use current version.
}
+ /** */
+ public void topologyVersion(int topVer) {
+ this.topVer = topVer;
+ }
+
+ /** */
+ public void nodeOrderAndDrIdRaw(int nodeOrder) {
+ this.nodeOrderDrId = nodeOrder;
+ }
+
+ /** */
+ public void order(long order) {
+ this.order = order;
+ }
+
/**
* @param ver Version.
* @return {@code True} if this version is greater.
@@ -173,13 +181,6 @@
return compareTo(ver) < 0;
}
- /**
- * @return Version represented as {@code IgniteUuid}
- */
- public IgniteUuid asIgniteUuid() {
- return new IgniteUuid(new UUID(topVer, nodeOrderDrId), order);
- }
-
/** {@inheritDoc} */
@Override public void writeExternal(ObjectOutput out) throws IOException {
out.writeInt(topVer);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientConnectionNodeRecoveryException.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/odbc/ClientConnectionNodeRecoveryException.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientConnectionNodeRecoveryException.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/odbc/ClientConnectionNodeRecoveryException.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/expiry/PlatformExpiryPolicy.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/cache/expiry/PlatformExpiryPolicy.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/expiry/PlatformExpiryPolicy.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/cache/expiry/PlatformExpiryPolicy.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientFlag.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientFlag.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientFlag.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientFlag.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientStatus.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientStatus.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientStatus.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientStatus.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/IgniteClientException.java b/modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/client/IgniteClientException.java
similarity index 80%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/IgniteClientException.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/client/IgniteClientException.java
index 6b0e5ee..959c6ca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/IgniteClientException.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/processors/platform/client/IgniteClientException.java
@@ -19,9 +19,6 @@
import java.sql.SQLException;
import org.apache.ignite.IgniteException;
-import org.apache.ignite.plugin.security.SecurityException;
-
-import static org.apache.ignite.internal.processors.platform.client.ClientStatus.SECURITY_VIOLATION;
/**
* Client exception.
@@ -64,13 +61,4 @@
public int statusCode() {
return statusCode;
}
-
- /** */
- public static IgniteClientException wrapAuthorizationExeption(SecurityException e) {
- return new IgniteClientException(
- SECURITY_VIOLATION,
- "Client is not authorized to perform this operation [errMsg=" + e.getMessage() + ']',
- e
- );
- }
}
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/thread/context/OperationContext.java b/modules/commons/src/main/java/org/apache/ignite/internal/thread/context/OperationContext.java
index 6953d8b..4a8f556 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/thread/context/OperationContext.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/thread/context/OperationContext.java
@@ -322,7 +322,7 @@
}
/** Allows to change multiple attribute values in a single update operation and skip updates that changes nothing. */
- private static class ContextUpdater {
+ static class ContextUpdater {
/** */
private static final int INIT_UPDATES_CAPACITY = 3;
diff --git a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java
index e87513b..8954c0c 100644
--- a/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/CommonUtils.java
@@ -37,9 +37,11 @@
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
+import java.nio.ByteBuffer;
import java.nio.channels.ClosedChannelException;
import java.nio.channels.SelectionKey;
import java.nio.channels.Selector;
+import java.nio.channels.SocketChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.security.AccessController;
@@ -79,6 +81,7 @@
import org.apache.ignite.internal.IgniteFutureTimeoutCheckedException;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.processors.cache.CacheClassLoaderMarker;
+import org.apache.ignite.internal.util.lang.GridClosureException;
import org.apache.ignite.internal.util.lang.GridTuple;
import org.apache.ignite.internal.util.typedef.C1;
import org.apache.ignite.internal.util.typedef.F;
@@ -86,6 +89,7 @@
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.SB;
+import org.apache.ignite.internal.util.worker.GridWorker;
import org.apache.ignite.lang.IgniteFutureCancelledException;
import org.apache.ignite.lang.IgniteFutureTimeoutException;
import org.apache.ignite.lang.IgnitePredicate;
@@ -100,6 +104,12 @@
* Collection of utility methods used in 'ignite-commons' and throughout the system.
*/
public abstract class CommonUtils {
+ /** Empty longs array. */
+ public static final long[] EMPTY_LONGS = new long[0];
+
+ /** Network packet header (corresponds to {@code 0x0149474E}). */
+ public static final byte[] IGNITE_HEADER = new byte[] {0x01, 0x49, 0x47, 0x4E};
+
/** */
public static final long KB = 1024L;
@@ -207,6 +217,24 @@
/** Ignite package. */
public static final String IGNITE_PKG = "org.apache.ignite.";
+ /** Default data structures group name. */
+ public static final String DEFAULT_DS_GROUP_NAME = "default-ds-group";
+
+ /** Atomics system cache name. */
+ public static final String ATOMICS_CACHE_NAME = "ignite-sys-atomic-cache";
+
+ /** Thin client handshake (connection type) code. */
+ public static final byte THIN_CLIENT = 2;
+
+ /** Handshake request command code. */
+ public static final int HANDSHAKE = 1;
+
+ /** Default client connector port. */
+ public static final int DFLT_PORT = 10800;
+
+ /** Default client connector port range. */
+ public static final int DFLT_PORT_RANGE = 100;
+
/**
* Short date format pattern for log messages in "quiet" mode.
* Only time is included since we don't expect "quiet" mode to be used
@@ -2354,4 +2382,367 @@
return sqlClasses;
}
+
+ /**
+ * Quietly closes given resource ignoring possible checked exception.
+ *
+ * @param rsrc Resource to close. If it's {@code null} - it's no-op.
+ */
+ public static void closeQuiet(@Nullable AutoCloseable rsrc) {
+ if (rsrc != null)
+ try {
+ rsrc.close();
+ }
+ catch (Exception ignored) {
+ // No-op.
+ }
+ }
+
+ /**
+ * Quietly closes given {@link Socket} ignoring possible checked exception.
+ *
+ * @param sock Socket to close. If it's {@code null} - it's no-op.
+ */
+ public static void closeQuiet(@Nullable Socket sock) {
+ if (sock == null)
+ return;
+
+ try {
+ // Avoid tls 1.3 incompatibility https://bugs.openjdk.java.net/browse/JDK-8208526
+ sock.shutdownOutput();
+ sock.shutdownInput();
+ }
+ catch (Exception ignored) {
+ // No-op.
+ }
+
+ try {
+ sock.close();
+ }
+ catch (Exception ignored) {
+ // No-op.
+ }
+ }
+
+ /**
+ * Utility method to add the given throwable error to the given throwable root error. If the given
+ * suppressed throwable is an {@code Error}, but the root error is not, will change the root to the {@code Error}.
+ *
+ * @param root Root error to add suppressed error to.
+ * @param err Error to add.
+ * @return New root error.
+ */
+ public static <T extends Throwable> T addSuppressed(T root, T err) {
+ assert err != null;
+
+ if (root == null)
+ return err;
+
+ if (err instanceof Error && !(root instanceof Error)) {
+ err.addSuppressed(root);
+
+ root = err;
+ }
+ else
+ root.addSuppressed(err);
+
+ return root;
+ }
+
+ /**
+ * Gets absolute value for integer. If integer is {@link Integer#MIN_VALUE}, then {@code 0} is returned.
+ *
+ * @param i Integer.
+ * @return Absolute value.
+ */
+ public static int safeAbs(int i) {
+ i = Math.abs(i);
+
+ return i < 0 ? 0 : i;
+ }
+
+ /**
+ * Gets absolute value for long. If argument is {@link Long#MIN_VALUE}, then {@code 0} is returned.
+ *
+ * @param i Argument.
+ * @return Absolute value.
+ */
+ public static long safeAbs(long i) {
+ i = Math.abs(i);
+
+ return i < 0 ? 0 : i;
+ }
+
+ /**
+ * Helper method to calculates mask.
+ *
+ * @param parts Number of partitions.
+ * @return Mask to use in calculation when partitions count is power of 2.
+ */
+ public static int calculateMask(int parts) {
+ return (parts & (parts - 1)) == 0 ? parts - 1 : -1;
+ }
+
+ /**
+ * Helper method to calculate partition.
+ *
+ * @param key Key to get partition for.
+ * @param mask Mask to use in calculation when partitions count is power of 2.
+ * @param parts Number of partitions.
+ * @return Partition number for a given key.
+ */
+ public static int calculatePartition(Object key, int mask, int parts) {
+ if (mask >= 0) {
+ int h;
+
+ return ((h = key.hashCode()) ^ (h >>> 16)) & mask;
+ }
+
+ return safeAbs(key.hashCode() % parts);
+ }
+
+ /**
+ * Unwraps closure exceptions.
+ *
+ * @param t Exception.
+ * @return Unwrapped exception.
+ */
+ public static Exception unwrap(Throwable t) {
+ assert t != null;
+
+ while (true) {
+ if (t instanceof Error)
+ throw (Error)t;
+
+ if (t instanceof GridClosureException) {
+ t = ((GridClosureException)t).unwrap();
+
+ continue;
+ }
+
+ return (Exception)t;
+ }
+ }
+
+ /**
+ * Casts the passed {@code Throwable t} to {@link IgniteCheckedException}.<br>
+ * If {@code t} is a {@link GridClosureException}, it is unwrapped and then cast to {@link IgniteCheckedException}.
+ * If {@code t} is an {@link IgniteCheckedException}, it is returned.
+ * If {@code t} is not a {@link IgniteCheckedException}, a new {@link IgniteCheckedException} caused by {@code t}
+ * is returned.
+ *
+ * @param t Throwable to cast.
+ * @return {@code t} cast to {@link IgniteCheckedException}.
+ */
+ public static IgniteCheckedException cast(Throwable t) {
+ assert t != null;
+
+ t = unwrap(t);
+
+ return t instanceof IgniteCheckedException
+ ? (IgniteCheckedException)t
+ : new IgniteCheckedException(t);
+ }
+
+ /**
+ * Gets type name by class name.
+ *
+ * @param clsName Class name.
+ * @return Type name.
+ */
+ public static String typeName(String clsName) {
+ int genericStart = clsName.indexOf('`'); // .NET generic, not valid for Java class name.
+
+ if (genericStart >= 0)
+ clsName = clsName.substring(0, genericStart);
+
+ int pkgEnd = clsName.lastIndexOf('.');
+
+ if (pkgEnd >= 0 && pkgEnd < clsName.length() - 1)
+ clsName = clsName.substring(pkgEnd + 1);
+
+ if (clsName.endsWith("[]"))
+ clsName = clsName.substring(0, clsName.length() - 2) + "_array";
+
+ int parentEnd = clsName.lastIndexOf('$');
+
+ if (parentEnd >= 0)
+ clsName = clsName.substring(parentEnd + 1);
+
+ parentEnd = clsName.lastIndexOf('+'); // .NET parent
+
+ if (parentEnd >= 0)
+ clsName = clsName.substring(parentEnd + 1);
+
+ return clsName;
+ }
+
+ /**
+ * Gets type name by class.
+ *
+ * @param cls Class.
+ * @return Type name.
+ */
+ public static String typeName(Class<?> cls) {
+ String typeName = cls.getSimpleName();
+
+ // To protect from failure on anonymous classes.
+ if (typeName.isEmpty()) {
+ String pkg = cls.getPackage().getName();
+
+ typeName = cls.getName().substring(pkg.length() + (pkg.isEmpty() ? 0 : 1));
+ }
+
+ if (cls.isArray()) {
+ assert typeName.endsWith("[]");
+
+ typeName = typeName.substring(0, typeName.length() - 2) + "_array";
+ }
+
+ return typeName;
+ }
+
+ /**
+ * Cancels given runnable.
+ *
+ * @param w Worker to cancel - it's no-op if runnable is {@code null}.
+ */
+ public static void cancel(@Nullable GridWorker w) {
+ if (w != null)
+ w.cancel();
+ }
+
+ /**
+ * Cancels collection of runnables.
+ *
+ * @param ws Collection of workers - it's no-op if collection is {@code null}.
+ */
+ public static void cancel(Iterable<? extends GridWorker> ws) {
+ if (ws != null)
+ for (GridWorker w : ws)
+ w.cancel();
+ }
+
+ /**
+ * Joins runnable.
+ *
+ * @param w Worker to join.
+ * @param log The logger to possible exception.
+ * @return {@code true} if worker has not been interrupted, {@code false} if it was interrupted.
+ */
+ public static boolean join(@Nullable GridWorker w, @Nullable IgniteLogger log) {
+ if (w != null)
+ try {
+ w.join();
+ }
+ catch (InterruptedException ignore) {
+ warn(log, "Got interrupted while waiting for completion of runnable: " + w);
+
+ Thread.currentThread().interrupt();
+
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Joins given collection of runnables.
+ *
+ * @param ws Collection of workers to join.
+ * @param log The logger to possible exceptions.
+ * @return {@code true} if none of the worker have been interrupted,
+ * {@code false} if at least one was interrupted.
+ */
+ public static boolean join(Iterable<? extends GridWorker> ws, IgniteLogger log) {
+ boolean retval = true;
+
+ if (ws != null)
+ for (GridWorker w : ws)
+ if (!join(w, log))
+ retval = false;
+
+ return retval;
+ }
+
+ /**
+ * Creates thread with given worker.
+ *
+ * @param worker Runnable to create thread with.
+ */
+ public static IgniteThread newThread(GridWorker worker) {
+ return new IgniteThread(worker.igniteInstanceName(), worker.name(), worker);
+ }
+
+ /**
+ * Sleeps for given number of milliseconds.
+ *
+ * @param ms Time to sleep.
+ * @throws IgniteInterruptedCheckedException Wrapped {@link InterruptedException}.
+ */
+ public static void sleep(long ms) throws IgniteInterruptedCheckedException {
+ try {
+ Thread.sleep(ms);
+ }
+ catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+
+ throw new IgniteInterruptedCheckedException(e);
+ }
+ }
+
+ /**
+ * Safely write buffer fully to blocking socket channel.
+ * Will throw assert if non blocking channel passed.
+ *
+ * @param sockCh WritableByteChannel.
+ * @param buf Buffer.
+ * @throws IOException IOException.
+ */
+ public static void writeFully(SocketChannel sockCh, ByteBuffer buf) throws IOException {
+ int totalWritten = 0;
+
+ assert sockCh.isBlocking() : "SocketChannel should be in blocking mode " + sockCh;
+
+ while (buf.hasRemaining()) {
+ int written = sockCh.write(buf);
+
+ if (written < 0)
+ throw new IOException("Error writing buffer to channel " +
+ "[written = " + written + ", buf " + buf + ", totalWritten = " + totalWritten + "]");
+
+ totalWritten += written;
+ }
+ }
+
+ /**
+ * @param a First byte array.
+ * @param aOff First byte array offset.
+ * @param b Second byte array.
+ * @param bOff Second byte array offset.
+ * @param len Number of bytes to compare.
+ * @return {@code True} if the specified sub-arrays are equal.
+ */
+ public static boolean bytesEqual(byte[] a, int aOff, byte[] b, int bOff, int len) {
+ if (aOff + len > a.length || bOff + len > b.length)
+ return false;
+ else {
+ for (int i = 0; i < len; i++)
+ if (a[aOff + i] != b[bOff + i])
+ return false;
+
+ return true;
+ }
+ }
+
+ /**
+ * Concatenates the two parameter bytes to form a message type value.
+ *
+ * @param b0 The first byte.
+ * @param b1 The second byte.
+ * @return Message type.
+ */
+ public static short makeMessageType(byte b0, byte b1) {
+ return (short)((b1 & 0xFF) << 8 | b0 & 0xFF);
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/GridLongList.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/GridLongList.java
index 27f5dfc..ba69dca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridLongList.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/GridLongList.java
@@ -26,7 +26,7 @@
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.SB;
-import static org.apache.ignite.internal.util.IgniteUtils.EMPTY_LONGS;
+import static org.apache.ignite.internal.util.CommonUtils.EMPTY_LONGS;
/**
* Minimal list API to work with primitive longs. This list exists
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/HostAndPortRange.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/HostAndPortRange.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/HostAndPortRange.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/HostAndPortRange.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
similarity index 92%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
index 28e2544..2b3abd8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridCompoundFuture.java
@@ -26,16 +26,12 @@
import java.util.function.Supplier;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.internal.IgniteFutureCancelledCheckedException;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.NodeStoppingException;
-import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
-import org.apache.ignite.internal.processors.cache.distributed.near.consistency.IgniteConsistencyViolationException;
-import org.apache.ignite.internal.transactions.IgniteTxOptimisticCheckedException;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgniteReducer;
import org.jetbrains.annotations.Nullable;
@@ -117,17 +113,14 @@
throw e;
}
}
- catch (IgniteTxOptimisticCheckedException | IgniteFutureCancelledCheckedException |
- ClusterTopologyCheckedException | IgniteConsistencyViolationException e) {
- if (!processFailure(e, fut))
- onDone(e);
- }
catch (IgniteCheckedException e) {
if (!processFailure(e, fut)) {
- if (e instanceof NodeStoppingException)
- logDebug(logger(), "Failed to execute compound future reducer, node stopped.");
- else
- logError(null, "Failed to execute compound future reducer: " + this, e);
+ if (!(e instanceof SkipLoggingException)) {
+ if (e instanceof NodeStoppingException)
+ logDebug(logger(), "Failed to execute compound future reducer, node stopped.");
+ else
+ logError(null, "Failed to execute compound future reducer: " + this, e);
+ }
onDone(e);
}
@@ -370,7 +363,7 @@
* @param e Exception.
*/
protected void logError(IgniteLogger log, String msg, Throwable e) {
- U.error(log, msg, e);
+ CommonUtils.error(log, msg, e);
}
/**
@@ -425,4 +418,9 @@
F.viewReadOnly(futures(), (IgniteInternalFuture<T> f) -> Boolean.toString(f.isDone()))
);
}
+
+ /** */
+ public interface SkipLoggingException {
+ // No-op marker interface.
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
index 2b42c4b..cc6d57d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridFinishedFuture.java
@@ -21,9 +21,9 @@
import java.util.concurrent.TimeUnit;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.lang.GridClosureException;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgniteOutClosure;
@@ -100,7 +100,7 @@
/** {@inheritDoc} */
@Override public T get() throws IgniteCheckedException {
if (resFlag == ERR)
- throw U.cast((Throwable)res);
+ throw CommonUtils.cast((Throwable)res);
return (T)res;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
index c932a9c..6f30181 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridFutureAdapter.java
@@ -29,11 +29,11 @@
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
import org.apache.ignite.internal.thread.context.function.OperationContextAwareInClosure;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.lang.GridClosureException;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.lang.IgniteOutClosure;
@@ -263,7 +263,7 @@
if (state == null || state.getClass() != ErrorWrapper.class)
return (R)state;
- throw U.cast(((ErrorWrapper)state).error);
+ throw CommonUtils.cast(((ErrorWrapper)state).error);
}
/**
@@ -477,11 +477,11 @@
lsnr.apply(this);
}
catch (IllegalStateException e) {
- U.error(logger(), "Failed to notify listener (is grid stopped?) [fut=" + this +
+ CommonUtils.error(logger(), "Failed to notify listener (is grid stopped?) [fut=" + this +
", lsnr=" + lsnr + ", err=" + e.getMessage() + ']', e);
}
catch (RuntimeException | Error e) {
- U.error(logger(), "Failed to notify listener: " + lsnr, e);
+ CommonUtils.error(logger(), "Failed to notify listener: " + lsnr, e);
throw e;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/future/GridFutureChainListener.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/ClusterNodeFunc.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/lang/ClusterNodeFunc.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/lang/ClusterNodeFunc.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/lang/ClusterNodeFunc.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/IgniteInClosure2X.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/lang/IgniteInClosure2X.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/lang/IgniteInClosure2X.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/lang/IgniteInClosure2X.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/ContainsNodeIdsPredicate.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/ContainsNodeIdsPredicate.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/ContainsNodeIdsPredicate.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/ContainsNodeIdsPredicate.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/EqualsClusterNodeIdPredicate.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/EqualsClusterNodeIdPredicate.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/EqualsClusterNodeIdPredicate.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/EqualsClusterNodeIdPredicate.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/HasEqualIdPredicate.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/HasEqualIdPredicate.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/HasEqualIdPredicate.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/HasEqualIdPredicate.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/HasNotEqualIdPredicate.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/HasNotEqualIdPredicate.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/HasNotEqualIdPredicate.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/lang/gridfunc/HasNotEqualIdPredicate.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/typedef/CIX2.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/typedef/CIX2.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/typedef/CIX2.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/typedef/CIX2.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
similarity index 95%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
index e19e217..414b8da 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/worker/GridWorker.java
@@ -24,9 +24,9 @@
import org.apache.ignite.IgniteInterruptedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
/**
@@ -140,9 +140,10 @@
if (!X.hasCause(e, InterruptedException.class) &&
!X.hasCause(e, IgniteInterruptedCheckedException.class) &&
!X.hasCause(e, IgniteInterruptedException.class))
- U.error(log, "Runtime error caught during grid runnable execution: " + this, e);
+ CommonUtils.error(log, "Runtime error caught during grid runnable execution: " + this, e);
else
- U.warn(log, "Runtime exception occurred during grid runnable execution caused by thread interruption: " + e.getMessage());
+ CommonUtils.warn(log,
+ "Runtime exception occurred during grid runnable execution caused by thread interruption: " + e.getMessage());
if (e instanceof Error)
throw e;
@@ -271,7 +272,7 @@
/** {@inheritDoc} */
@Override public void updateHeartbeat() {
- long curTs = U.currentTimeMillis();
+ long curTs = CommonUtils.currentTimeMillis();
long hbTs = heartbeatTs;
// Avoid heartbeat update while in the blocking section.
@@ -290,7 +291,7 @@
/** {@inheritDoc} */
@Override public void blockingSectionEnd() {
- heartbeatTs = U.currentTimeMillis();
+ heartbeatTs = CommonUtils.currentTimeMillis();
}
/** Can be called from {@link #runner()} thread to perform idleness handling. */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerListener.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerListener.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerListener.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerListener.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerPool.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerPool.java
similarity index 95%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerPool.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerPool.java
index 83f8fd8..51b6a97 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerPool.java
+++ b/modules/commons/src/main/java/org/apache/ignite/internal/util/worker/GridWorkerPool.java
@@ -23,8 +23,8 @@
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.compute.ComputeExecutionRejectedException;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
-import org.apache.ignite.internal.util.typedef.internal.U;
/**
* Pool of runnable workers. This class automatically takes care of
@@ -102,9 +102,9 @@
for (GridWorker worker : workers) {
try {
if (cancel)
- U.cancel(worker);
+ CommonUtils.cancel(worker);
- U.join(worker, log);
+ CommonUtils.join(worker, log);
}
catch (Exception e) {
if (log != null)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/worker/WorkProgressDispatcher.java b/modules/commons/src/main/java/org/apache/ignite/internal/util/worker/WorkProgressDispatcher.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/worker/WorkProgressDispatcher.java
rename to modules/commons/src/main/java/org/apache/ignite/internal/util/worker/WorkProgressDispatcher.java
diff --git a/modules/core/src/main/java/org/apache/ignite/logger/NullLogger.java b/modules/commons/src/main/java/org/apache/ignite/logger/NullLogger.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/logger/NullLogger.java
rename to modules/commons/src/main/java/org/apache/ignite/logger/NullLogger.java
diff --git a/modules/core/src/main/java/org/apache/ignite/platform/PlatformServiceMethod.java b/modules/commons/src/main/java/org/apache/ignite/platform/PlatformServiceMethod.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/platform/PlatformServiceMethod.java
rename to modules/commons/src/main/java/org/apache/ignite/platform/PlatformServiceMethod.java
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/tracing/Scope.java b/modules/commons/src/main/java/org/apache/ignite/spi/tracing/Scope.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/spi/tracing/Scope.java
rename to modules/commons/src/main/java/org/apache/ignite/spi/tracing/Scope.java
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/tracing/SpanStatus.java b/modules/commons/src/main/java/org/apache/ignite/spi/tracing/SpanStatus.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/spi/tracing/SpanStatus.java
rename to modules/commons/src/main/java/org/apache/ignite/spi/tracing/SpanStatus.java
diff --git a/modules/core/src/main/java/org/apache/ignite/ssl/AbstractSslContextFactory.java b/modules/commons/src/main/java/org/apache/ignite/ssl/AbstractSslContextFactory.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/ssl/AbstractSslContextFactory.java
rename to modules/commons/src/main/java/org/apache/ignite/ssl/AbstractSslContextFactory.java
diff --git a/modules/core/src/main/java/org/apache/ignite/ssl/DelegatingSSLContextSpi.java b/modules/commons/src/main/java/org/apache/ignite/ssl/DelegatingSSLContextSpi.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/ssl/DelegatingSSLContextSpi.java
rename to modules/commons/src/main/java/org/apache/ignite/ssl/DelegatingSSLContextSpi.java
diff --git a/modules/core/src/main/java/org/apache/ignite/ssl/SSLContextWrapper.java b/modules/commons/src/main/java/org/apache/ignite/ssl/SSLContextWrapper.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/ssl/SSLContextWrapper.java
rename to modules/commons/src/main/java/org/apache/ignite/ssl/SSLContextWrapper.java
diff --git a/modules/core/src/main/java/org/apache/ignite/ssl/SSLServerSocketFactoryWrapper.java b/modules/commons/src/main/java/org/apache/ignite/ssl/SSLServerSocketFactoryWrapper.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/ssl/SSLServerSocketFactoryWrapper.java
rename to modules/commons/src/main/java/org/apache/ignite/ssl/SSLServerSocketFactoryWrapper.java
diff --git a/modules/core/src/main/java/org/apache/ignite/ssl/SSLSocketFactoryWrapper.java b/modules/commons/src/main/java/org/apache/ignite/ssl/SSLSocketFactoryWrapper.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/ssl/SSLSocketFactoryWrapper.java
rename to modules/commons/src/main/java/org/apache/ignite/ssl/SSLSocketFactoryWrapper.java
diff --git a/modules/core/src/main/java/org/apache/ignite/ssl/SslContextFactory.java b/modules/commons/src/main/java/org/apache/ignite/ssl/SslContextFactory.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/ssl/SslContextFactory.java
rename to modules/commons/src/main/java/org/apache/ignite/ssl/SslContextFactory.java
diff --git a/modules/core/src/main/java/org/apache/ignite/ssl/package-info.java b/modules/commons/src/main/java/org/apache/ignite/ssl/package-info.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/ssl/package-info.java
rename to modules/commons/src/main/java/org/apache/ignite/ssl/package-info.java
diff --git a/modules/core/src/main/java/org/apache/ignite/util/deque/FastSizeDeque.java b/modules/commons/src/main/java/org/apache/ignite/util/deque/FastSizeDeque.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/util/deque/FastSizeDeque.java
rename to modules/commons/src/main/java/org/apache/ignite/util/deque/FastSizeDeque.java
diff --git a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
index b5bf5d9..32dadf3 100644
--- a/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
+++ b/modules/compatibility/src/test/java/org/apache/ignite/compatibility/testframework/junits/IgniteCompatibilityAbstractTest.java
@@ -294,7 +294,9 @@
"ignite-binary-impl",
"ignite-commons",
"ignite-grid-unsafe",
- "ignite-thin-client-api"
+ "ignite-thin-client-api",
+ "ignite-thin-client-impl",
+ "ignite-nio"
));
// During local development, classes from the target directory (for example, ignite/modules/commons/target/classes)
// are included in the classpath.
@@ -304,7 +306,9 @@
"modules/binary/impl",
"modules/commons",
"modules/unsafe",
- "modules/thin-client/api"
+ "modules/thin-client/api",
+ "modules/thin-client/impl",
+ "modules/nio"
));
return excluded;
diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerCheckIncrementalSnapshotTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerCheckIncrementalSnapshotTest.java
index 21fe7d4..766d312 100644
--- a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerCheckIncrementalSnapshotTest.java
+++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerCheckIncrementalSnapshotTest.java
@@ -29,6 +29,7 @@
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.management.cache.IdleVerifyResult;
import org.apache.ignite.internal.pagemem.wal.IgniteWriteAheadLogManager;
import org.apache.ignite.internal.pagemem.wal.record.DataRecord;
@@ -223,7 +224,7 @@
load(xid -> {
if (skipTxRec == null) {
skipTxRec = (consId, rec) ->
- grid(0).localNode().consistentId().equals(consId) && xid.equals(rec.nearXidVersion().asIgniteUuid());
+ grid(0).localNode().consistentId().equals(consId) && xid.equals(BinaryUtils.asIgniteUuid(rec.nearXidVersion()));
}
});
@@ -248,7 +249,7 @@
load(xid -> {
if (skipTxRec == null) {
skipTxRec = (consId, rec) ->
- grid(0).localNode().consistentId().equals(consId) && xid.equals(rec.nearXidVersion().asIgniteUuid());
+ grid(0).localNode().consistentId().equals(consId) && xid.equals(BinaryUtils.asIgniteUuid(rec.nearXidVersion()));
}
});
@@ -308,7 +309,7 @@
if (skipDataRec == null) {
skipDataRec = (consId, rec) ->
grid(0).localNode().consistentId().equals(consId)
- && xid.equals(rec.writeEntries().get(0).nearXidVersion().asIgniteUuid());
+ && xid.equals(BinaryUtils.asIgniteUuid(rec.writeEntries().get(0).nearXidVersion()));
}
});
@@ -325,14 +326,14 @@
if (skipDataRec == null) {
skipDataRec = (consId, rec) ->
grid(0).localNode().consistentId().equals(consId)
- && xid.equals(rec.writeEntries().get(0).nearXidVersion().asIgniteUuid());
+ && xid.equals(BinaryUtils.asIgniteUuid(rec.writeEntries().get(0).nearXidVersion()));
return;
}
if (skipTxRec == null) {
skipTxRec = (consId, rec) ->
- grid(0).localNode().consistentId().equals(consId) && xid.equals(rec.nearXidVersion().asIgniteUuid());
+ grid(0).localNode().consistentId().equals(consId) && xid.equals(BinaryUtils.asIgniteUuid(rec.nearXidVersion()));
}
});
diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
index 1baad66..872fb04 100644
--- a/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
+++ b/modules/control-utility/src/test/java/org/apache/ignite/util/GridCommandHandlerTest.java
@@ -3163,11 +3163,14 @@
MetricRegistry metrics = ig.context().metric().registry(SNAPSHOT_METRICS);
- LongMetric opEndTimeMetric = metrics.findMetric("LastSnapshotEndTime");
- BooleanSupplier endTimeMetricPredicate = () -> opEndTimeMetric.value() > 0;
+ assertTrue(waitForCondition(() -> metrics.findMetric("LastRequestId") != null, getTestTimeout(), 50));
String reqId = metrics.findMetric("LastRequestId").getAsString();
- assertFalse(F.isEmpty(reqId));
+
+ assert reqId != null;
+
+ LongMetric opEndTimeMetric = metrics.findMetric("LastSnapshotEndTime");
+ BooleanSupplier endTimeMetricPredicate = () -> opEndTimeMetric.value() > 0;
// Make sure the operation ID has been shown to the user.
assertContains(log, testOut.toString(), reqId);
diff --git a/modules/control-utility/src/test/java/org/apache/ignite/util/SystemViewCommandTest.java b/modules/control-utility/src/test/java/org/apache/ignite/util/SystemViewCommandTest.java
index 288484d..d927b36 100644
--- a/modules/control-utility/src/test/java/org/apache/ignite/util/SystemViewCommandTest.java
+++ b/modules/control-utility/src/test/java/org/apache/ignite/util/SystemViewCommandTest.java
@@ -61,9 +61,9 @@
import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectEnum;
import org.apache.ignite.internal.management.SystemViewCommand;
import org.apache.ignite.internal.management.SystemViewTask;
-import org.apache.ignite.internal.metric.SystemViewSelfTest.TestPredicate;
-import org.apache.ignite.internal.metric.SystemViewSelfTest.TestRunnable;
-import org.apache.ignite.internal.metric.SystemViewSelfTest.TestTransformer;
+import org.apache.ignite.internal.metric.SystemViewExecutorsTest.TestRunnable;
+import org.apache.ignite.internal.metric.SystemViewQueriesTest.TestPredicate;
+import org.apache.ignite.internal.metric.SystemViewQueriesTest.TestTransformer;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState;
import org.apache.ignite.internal.processors.cache.metric.SqlViewExporterSpiTest.TestAffinityFunction;
@@ -93,8 +93,8 @@
import static org.apache.ignite.internal.management.SystemViewCommand.COLUMN_SEPARATOR;
import static org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.NODES_SYS_VIEW;
import static org.apache.ignite.internal.managers.systemview.ScanQuerySystemView.SCAN_QRY_SYS_VIEW;
-import static org.apache.ignite.internal.metric.SystemViewSelfTest.TEST_PREDICATE;
-import static org.apache.ignite.internal.metric.SystemViewSelfTest.TEST_TRANSFORMER;
+import static org.apache.ignite.internal.metric.SystemViewQueriesTest.TEST_PREDICATE;
+import static org.apache.ignite.internal.metric.SystemViewQueriesTest.TEST_TRANSFORMER;
import static org.apache.ignite.internal.processors.cache.ClusterCachesInfo.CACHES_VIEW;
import static org.apache.ignite.internal.processors.cache.ClusterCachesInfo.CACHE_GRPS_VIEW;
import static org.apache.ignite.internal.processors.cache.GridCacheProcessor.CACHE_GRP_PAGE_LIST_VIEW;
diff --git a/modules/core/pom.xml b/modules/core/pom.xml
index aebc947..4f5c28a 100644
--- a/modules/core/pom.xml
+++ b/modules/core/pom.xml
@@ -83,6 +83,18 @@
<dependency>
<groupId>${project.groupId}</groupId>
+ <artifactId>ignite-thin-client-impl</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-nio</artifactId>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
<artifactId>ignite-codegen</artifactId>
<scope>provided</scope>
</dependency>
@@ -150,15 +162,15 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlets</artifactId>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-servlets</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-webapp</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
@@ -360,6 +372,8 @@
<include>${project.groupId}:ignite-binary-impl</include>
<include>${project.groupId}:ignite-grid-unsafe</include>
<include>${project.groupId}:ignite-thin-client-api</include>
+ <include>${project.groupId}:ignite-thin-client-impl</include>
+ <include>${project.groupId}:ignite-nio</include>
</includes>
</artifactSet>
</configuration>
@@ -463,7 +477,7 @@
<configuration>
<failOnError>false</failOnError>
<target>
- <property name="props.file" value="../../modules/core/target/classes/ignite.properties" />
+ <property name="props.file" value="../../modules/core/target/classes/ignite-build-info.properties" />
<replaceregexp file="${props.file}" byline="true">
<regexp pattern="ignite.update.notifier.enabled.by.default=.*" />
diff --git a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index b1c36a9..430f5bf 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -41,7 +41,6 @@
import org.apache.ignite.internal.processors.query.schema.SchemaIndexCachePartitionWorker;
import org.apache.ignite.internal.processors.rest.GridRestCommand;
import org.apache.ignite.internal.util.IgniteUtils;
-import org.apache.ignite.lang.IgniteExperimental;
import org.apache.ignite.mxbean.MetricsMxBean;
import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
import org.apache.ignite.spi.metric.ReadOnlyMetricRegistry;
@@ -134,8 +133,6 @@
import static org.apache.ignite.internal.util.GridReflectionCache.DFLT_REFLECTION_CACHE_SIZE;
import static org.apache.ignite.internal.util.IgniteExceptionRegistry.DEFAULT_QUEUE_SIZE;
import static org.apache.ignite.internal.util.IgniteUtils.DFLT_MBEAN_APPEND_CLASS_LOADER_ID;
-import static org.apache.ignite.internal.util.nio.GridNioRecoveryDescriptor.DFLT_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT;
-import static org.apache.ignite.internal.util.nio.GridNioServer.DFLT_IO_BALANCE_PERIOD;
import static org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.DFLT_DISCOVERY_CLIENT_RECONNECT_HISTORY_SIZE;
import static org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.DFLT_DISCOVERY_METRICS_QNT_WARN;
import static org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.DFLT_DISCO_FAILED_CLIENT_RECONNECT_DELAY;
@@ -744,12 +741,6 @@
defaults = "" + DFLT_DISCOVERY_HISTORY_SIZE)
public static final String IGNITE_DISCOVERY_HISTORY_SIZE = "IGNITE_DISCOVERY_HISTORY_SIZE";
- /** Human-readable ID of a data center where the node is running. */
- @IgniteExperimental
- @SystemProperty(value = "Data Center ID where local node is running. Not required for a single Data Center deployments",
- type = String.class)
- public static final String IGNITE_DATA_CENTER_ID = "IGNITE_DATA_CENTER_ID";
-
/** Maximum number of discovery message history used to support client reconnect. */
@SystemProperty(value = "Maximum number of discovery message history used to support client reconnect",
type = Integer.class, defaults = "" + DFLT_DISCOVERY_CLIENT_RECONNECT_HISTORY_SIZE)
@@ -814,44 +805,6 @@
@SystemProperty("Enables local store keeps primary only. Backward compatibility flag")
public static final String IGNITE_LOCAL_STORE_KEEPS_PRIMARY_ONLY = "IGNITE_LOCAL_STORE_KEEPS_PRIMARY_ONLY";
- /** Defines path to the file that contains list of classes allowed to safe deserialization.*/
- @SystemProperty(value = "Path to the file that contains list of classes allowed to safe deserialization",
- type = String.class)
- public static final String IGNITE_MARSHALLER_WHITELIST = "IGNITE_MARSHALLER_WHITELIST";
-
- /** Defines path to the file that contains list of classes disallowed to safe deserialization.*/
- @SystemProperty(value = "Path to the file that contains list of classes disallowed to safe deserialization",
- type = String.class)
- public static final String IGNITE_MARSHALLER_BLACKLIST = "IGNITE_MARSHALLER_BLACKLIST";
-
- /**
- * If this parameter is set to true, Ignite will automatically configure an ObjectInputFilter instance for the
- * current JVM it is running in.
- * Default value is {@code true}.
- */
- @SystemProperty(
- value = "If this parameter is set to true, Ignite will automatically configure an ObjectInputFilter" +
- " instance for the current JVM it is running in. Filtering is based on class lists defined by the" +
- " `IGNITE_MARSHALLER_WHITELIST` and `IGNITE_MARSHALLER_BLACKLIST` system properties or their default values." +
- " Disabling it is not recommended because the Ignite host may be vulnerable to RCE attacks based on Java" +
- " serialization mechanisms",
- defaults = "true"
- )
- public static final String IGNITE_ENABLE_OBJECT_INPUT_FILTER_AUTOCONFIGURATION = "IGNITE_ENABLE_OBJECT_INPUT_FILTER_AUTOCONFIGURATION";
-
- /**
- * If set to {@code true}, then default selected keys set is used inside
- * {@code GridNioServer} which lead to some extra garbage generation when
- * processing selected keys.
- * <p>
- * Default value is {@code false}. Should be switched to {@code true} if there are
- * any problems in communication layer.
- */
- @SystemProperty("Enables default selected keys set to be used inside GridNioServer " +
- "which lead to some extra garbage generation when processing selected keys. " +
- "Should be switched to true if there are any problems in communication layer")
- public static final String IGNITE_NO_SELECTOR_OPTS = "IGNITE_NO_SELECTOR_OPTS";
-
/**
* System property to specify period in milliseconds between calls of the SQL statements cache cleanup task.
* <p>
@@ -926,11 +879,6 @@
+ "when resolving local node's addresses", defaults = "true")
public static final String IGNITE_IGNORE_LOCAL_HOST_NAME = "IGNITE_IGNORE_LOCAL_HOST_NAME";
- /** */
- @SystemProperty(value = "IO balance period in milliseconds", type = Long.class,
- defaults = "" + DFLT_IO_BALANCE_PERIOD)
- public static final String IGNITE_IO_BALANCE_PERIOD = "IGNITE_IO_BALANCE_PERIOD";
-
/**
* When set to {@code true} BinaryObject will be unwrapped before passing to IndexingSpi to preserve
* old behavior query processor with IndexingSpi.
@@ -1351,13 +1299,6 @@
public static final String IGNITE_DISABLE_REBALANCING_CANCELLATION_OPTIMIZATION =
"IGNITE_DISABLE_REBALANCING_CANCELLATION_OPTIMIZATION";
- /**
- * Sets timeout for TCP client recovery descriptor reservation.
- */
- @SystemProperty(value = "Timeout for TCP client recovery descriptor reservation in milliseconds",
- type = Long.class, defaults = "" + DFLT_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT)
- public static final String IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT =
- "IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT";
/**
* When set to {@code true}, Ignite will skip partitions sizes check on partition validation after rebalance has finished.
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
index 3c14f5d..78a776e 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
@@ -37,12 +37,12 @@
import org.apache.ignite.failure.FailureType;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.cache.GridCacheUtils;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiPredicate;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.resources.IgniteInstanceResource;
@@ -117,7 +117,7 @@
* @return Mask to use in calculation when partitions count is power of 2.
*/
public static int calculateMask(int parts) {
- return (parts & (parts - 1)) == 0 ? parts - 1 : -1;
+ return CommonUtils.calculateMask(parts);
}
/**
@@ -129,13 +129,7 @@
* @return Partition number for a given key.
*/
public static int calculatePartition(Object key, int mask, int parts) {
- if (mask >= 0) {
- int h;
-
- return ((h = key.hashCode()) ^ (h >>> 16)) & mask;
- }
-
- return U.safeAbs(key.hashCode() % parts);
+ return CommonUtils.calculatePartition(key, mask, parts);
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
index 4a8d52e..ce1bc69 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/CacheConfiguration.java
@@ -52,10 +52,10 @@
import org.apache.ignite.cache.store.CacheStore;
import org.apache.ignite.cache.store.CacheStoreSessionListener;
import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.A;
-import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteExperimental;
@@ -1984,7 +1984,7 @@
qryEntities.add(newEntity);
// Set key configuration if needed.
- String affFieldName = CU.affinityFieldName(keyCls);
+ String affFieldName = BinaryUtils.affinityFieldName(keyCls);
if (affFieldName != null) {
CacheKeyConfiguration newKeyCfg = new CacheKeyConfiguration(newEntity.getKeyType(), affFieldName);
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/ClientConnectorConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/ClientConnectorConfiguration.java
index 8a993bc..9f5b62b 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/ClientConnectorConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/ClientConnectorConfiguration.java
@@ -19,6 +19,7 @@
import javax.cache.configuration.Factory;
import javax.net.ssl.SSLContext;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.ssl.SslContextFactory;
@@ -29,10 +30,10 @@
*/
public class ClientConnectorConfiguration {
/** Default port. */
- public static final int DFLT_PORT = 10800;
+ public static final int DFLT_PORT = CommonUtils.DFLT_PORT;
/** Default port range. */
- public static final int DFLT_PORT_RANGE = 100;
+ public static final int DFLT_PORT_RANGE = CommonUtils.DFLT_PORT_RANGE;
/** Default socket send and receive buffer size. */
public static final int DFLT_SOCK_BUF_SIZE = 0;
diff --git a/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java b/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java
index 00c5413..238f6ce 100644
--- a/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/configuration/ConnectorConfiguration.java
@@ -21,6 +21,7 @@
import javax.cache.configuration.Factory;
import javax.net.ssl.SSLContext;
import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.internal.util.nio.GridNioServer;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.ssl.SslContextFactory;
@@ -40,7 +41,7 @@
public static final boolean DFLT_TCP_DIRECT_BUF = false;
/** Default REST idle timeout. */
- public static final int DFLT_IDLE_TIMEOUT = 7000;
+ public static final int DFLT_IDLE_TIMEOUT = GridNioServer.DFLT_IDLE_TIMEOUT;
/** Default rest port range. */
public static final int DFLT_PORT_RANGE = 100;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java b/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java
index 9da59263..10ceff0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/CoreMessagesProvider.java
@@ -28,7 +28,6 @@
import org.apache.ignite.internal.managers.communication.CompressedMessage;
import org.apache.ignite.internal.managers.communication.ErrorMessage;
import org.apache.ignite.internal.managers.communication.GridIoMessage;
-import org.apache.ignite.internal.managers.communication.GridIoSecurityAwareMessage;
import org.apache.ignite.internal.managers.communication.GridIoUserMessage;
import org.apache.ignite.internal.managers.communication.IgniteIoTestMessage;
import org.apache.ignite.internal.managers.communication.SessionChannelMessage;
@@ -37,13 +36,16 @@
import org.apache.ignite.internal.managers.deployment.GridDeploymentResponse;
import org.apache.ignite.internal.managers.discovery.SecurityAwareCustomMessageWrapper;
import org.apache.ignite.internal.managers.encryption.ChangeCacheEncryptionRequest;
+import org.apache.ignite.internal.managers.encryption.EncryptionDataBagItem;
import org.apache.ignite.internal.managers.encryption.GenerateEncryptionKeyRequest;
import org.apache.ignite.internal.managers.encryption.GenerateEncryptionKeyResponse;
import org.apache.ignite.internal.managers.encryption.GroupKeyEncrypted;
import org.apache.ignite.internal.managers.encryption.MasterKeyChangeRequest;
import org.apache.ignite.internal.managers.encryption.NodeEncryptionKeys;
+import org.apache.ignite.internal.managers.eventstorage.EventsDataBagItem;
import org.apache.ignite.internal.managers.eventstorage.GridEventStorageMessage;
import org.apache.ignite.internal.plugin.AbstractMarshallableMessageFactoryProvider;
+import org.apache.ignite.internal.processors.authentication.AuthentificationDataBagItem;
import org.apache.ignite.internal.processors.authentication.User;
import org.apache.ignite.internal.processors.authentication.UserAcceptedMessage;
import org.apache.ignite.internal.processors.authentication.UserAuthenticateRequestMessage;
@@ -72,7 +74,7 @@
import org.apache.ignite.internal.processors.cache.WalStateFinishMessage;
import org.apache.ignite.internal.processors.cache.WalStateProposeMessage;
import org.apache.ignite.internal.processors.cache.binary.BinaryMetadataVersionInfo;
-import org.apache.ignite.internal.processors.cache.binary.BinaryMetadataVersionsData;
+import org.apache.ignite.internal.processors.cache.binary.CacheBinaryDataBagItem;
import org.apache.ignite.internal.processors.cache.binary.MetadataRemoveAcceptedMessage;
import org.apache.ignite.internal.processors.cache.binary.MetadataRemoveProposedMessage;
import org.apache.ignite.internal.processors.cache.binary.MetadataRequestMessage;
@@ -98,6 +100,7 @@
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxOnePhaseCommitAckRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareResponse;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxSalvageMessage;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtUnlockRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.PartitionUpdateCountersMessage;
import org.apache.ignite.internal.processors.cache.distributed.dht.TransactionAttributesAwareRequest;
@@ -176,12 +179,12 @@
import org.apache.ignite.internal.processors.cache.verify.PartitionHashRecord;
import org.apache.ignite.internal.processors.cache.verify.TransactionsHashRecord;
import org.apache.ignite.internal.processors.cache.version.GridCacheRawVersionedEntry;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
-import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx;
import org.apache.ignite.internal.processors.cluster.CacheMetricsMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateFinishMessage;
import org.apache.ignite.internal.processors.cluster.ChangeGlobalStateMessage;
+import org.apache.ignite.internal.processors.cluster.ClusterIdAndTag;
import org.apache.ignite.internal.processors.cluster.ClusterMetricsUpdateMessage;
+import org.apache.ignite.internal.processors.cluster.ClusterUpdateNotifierDataBagItem;
import org.apache.ignite.internal.processors.cluster.NodeFullMetricsMessage;
import org.apache.ignite.internal.processors.cluster.NodeMetricsMessage;
import org.apache.ignite.internal.processors.continuous.ContinuousRoutineStartResultMessage;
@@ -197,15 +200,15 @@
import org.apache.ignite.internal.processors.marshaller.MappedName;
import org.apache.ignite.internal.processors.marshaller.MappingAcceptedMessage;
import org.apache.ignite.internal.processors.marshaller.MappingProposedMessage;
+import org.apache.ignite.internal.processors.marshaller.MarshallerDataBagItem;
import org.apache.ignite.internal.processors.marshaller.MarshallerMappingItem;
-import org.apache.ignite.internal.processors.marshaller.MarshallerMappingsData;
import org.apache.ignite.internal.processors.marshaller.MissingMappingRequestMessage;
import org.apache.ignite.internal.processors.marshaller.MissingMappingResponseMessage;
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasAckMessage;
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageCasMessage;
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateAckMessage;
import org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageUpdateMessage;
-import org.apache.ignite.internal.processors.query.InlineSizesData;
+import org.apache.ignite.internal.processors.plugin.PluginsDataBagItem;
import org.apache.ignite.internal.processors.query.QueryField;
import org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryCancelRequest;
import org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryFailResponse;
@@ -213,6 +216,10 @@
import org.apache.ignite.internal.processors.query.h2.twostep.messages.GridQueryNextPageResponse;
import org.apache.ignite.internal.processors.query.messages.GridQueryKillRequest;
import org.apache.ignite.internal.processors.query.messages.GridQueryKillResponse;
+import org.apache.ignite.internal.processors.query.schema.message.QueryEntityExMessage;
+import org.apache.ignite.internal.processors.query.schema.message.QueryEntityMessage;
+import org.apache.ignite.internal.processors.query.schema.message.QueryInlineSizesDataBagItem;
+import org.apache.ignite.internal.processors.query.schema.message.QueryProposalsDataBagItem;
import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage;
import org.apache.ignite.internal.processors.query.schema.message.SchemaOperationStatusMessage;
import org.apache.ignite.internal.processors.query.schema.message.SchemaProposeDiscoveryMessage;
@@ -229,6 +236,10 @@
import org.apache.ignite.internal.processors.query.stat.messages.StatisticsResponse;
import org.apache.ignite.internal.processors.rest.handlers.task.GridTaskResultRequest;
import org.apache.ignite.internal.processors.rest.handlers.task.GridTaskResultResponse;
+import org.apache.ignite.internal.processors.rollingupgrade.RollingUpgradeClusterData;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteComponentFeatureSet;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteFeatureSet;
+import org.apache.ignite.internal.processors.security.SecurityContextWrapper;
import org.apache.ignite.internal.processors.service.ServiceChangeBatchRequest;
import org.apache.ignite.internal.processors.service.ServiceClusterDeploymentResult;
import org.apache.ignite.internal.processors.service.ServiceClusterDeploymentResultBatch;
@@ -238,6 +249,7 @@
import org.apache.ignite.internal.processors.service.ServiceSingleNodeDeploymentResultBatch;
import org.apache.ignite.internal.processors.service.ServiceUndeploymentRequest;
import org.apache.ignite.internal.util.GridByteArrayList;
+import org.apache.ignite.internal.util.GridIntList;
import org.apache.ignite.internal.util.GridPartitionStateMap;
import org.apache.ignite.internal.util.distributed.FullMessage;
import org.apache.ignite.internal.util.distributed.InitMessage;
@@ -253,7 +265,7 @@
import org.apache.ignite.spi.communication.tcp.messages.HandshakeWaitMessage;
import org.apache.ignite.spi.communication.tcp.messages.NodeIdMessage;
import org.apache.ignite.spi.communication.tcp.messages.RecoveryLastReceivedMessage;
-import org.apache.ignite.spi.discovery.ObjectData;
+import org.apache.ignite.spi.discovery.SerializableDataBagItemWrapper;
import org.apache.ignite.spi.discovery.tcp.internal.DiscoveryDataPacket;
import org.apache.ignite.spi.discovery.tcp.internal.TcpDiscoveryNode;
import org.apache.ignite.spi.discovery.tcp.messages.InetAddressMessage;
@@ -350,11 +362,10 @@
withNoSchema(DiscoveryDataPacket.class);
withNoSchema(GridByteArrayList.class);
withNoSchema(CacheVersionedValue.class);
- withNoSchema(GridCacheVersion.class);
- withNoSchema(GridCacheVersionEx.class);
withNoSchema(WALPointer.class);
- withNoSchemaResolvedClassLoader(ObjectData.class);
+ withNoSchemaResolvedClassLoader(SerializableDataBagItemWrapper.class);
withSchemaResolvedClassLoader(GridTopicMessage.class);
+ withNoSchema(GridIntList.class);
// [5700 - 5900]: Discovery originated messages.
msgIdx = 5700;
@@ -573,8 +584,12 @@
withNoSchema(StatisticsRequest.class);
withNoSchema(StatisticsResponse.class);
withNoSchema(CacheContinuousQueryBatchAck.class);
+ withNoSchema(GridDhtTxSalvageMessage.class);
withSchema(CacheContinuousQueryEntry.class);
- withNoSchema(InlineSizesData.class);
+ withNoSchema(QueryInlineSizesDataBagItem.class);
+ withNoSchema(QueryProposalsDataBagItem.class);
+ withNoSchema(QueryEntityMessage.class);
+ withNoSchema(QueryEntityExMessage.class);
// [11200 - 11300]: Compute, distributed process messages.
msgIdx = 11200;
@@ -593,12 +608,13 @@
// [11500 - 11600]: IO, networking messages.
msgIdx = NODE_ID_MSG_TYPE;
withNoSchema(NodeIdMessage.class);
+ msgIdx = HANDSHAKE_MSG_TYPE;
withNoSchema(HandshakeMessage.class);
+ msgIdx = HANDSHAKE_WAIT_MSG_TYPE;
withNoSchema(HandshakeWaitMessage.class);
withNoSchema(GridIoMessage.class);
withNoSchema(IgniteIoTestMessage.class);
withSchema(GridIoUserMessage.class);
- withSchema(GridIoSecurityAwareMessage.class);
withNoSchema(RecoveryLastReceivedMessage.class);
withNoSchema(TcpInverseConnectionResponseMessage.class);
withNoSchema(SessionChannelMessage.class);
@@ -628,6 +644,7 @@
withNoSchema(UserAuthenticateRequestMessage.class);
withNoSchema(UserAuthenticateResponseMessage.class);
withNoSchema(TcpDiscoveryAuthFailedMessage.class);
+ withNoSchema(AuthentificationDataBagItem.class);
// [12200 - 12300]: Binary, classloading and marshalling messages.
msgIdx = 12200;
@@ -640,9 +657,9 @@
withNoSchema(MetadataResponseMessage.class);
withNoSchema(MarshallerMappingItem.class);
withSchemaResolvedClassLoader(BinaryMetadataVersionInfo.class);
- withNoSchema(BinaryMetadataVersionsData.class);
+ withNoSchema(CacheBinaryDataBagItem.class);
withNoSchema(MappedName.class);
- withNoSchema(MarshallerMappingsData.class);
+ withNoSchema(MarshallerDataBagItem.class);
// [12400 - 12500]: Encryption messages.
msgIdx = 12400;
@@ -652,8 +669,9 @@
withNoSchema(MasterKeyChangeRequest.class);
withNoSchema(GroupKeyEncrypted.class);
withNoSchema(NodeEncryptionKeys.class);
+ withNoSchema(EncryptionDataBagItem.class);
- // [13000 - 13300]: Control, configuration, diagnostincs and other messages.
+ // [13000 - 13300]: Control, configuration, diagnostics and other messages.
msgIdx = 13000;
withSchema(GridEventStorageMessage.class);
withNoSchema(ChangeGlobalStateMessage.class);
@@ -665,6 +683,21 @@
withNoSchemaResolvedClassLoader(DynamicCacheChangeRequest.class);
withNoSchema(PartitionHashRecord.class);
withNoSchema(TransactionsHashRecord.class);
+ withNoSchema(ClusterIdAndTag.class);
+ withNoSchema(ClusterUpdateNotifierDataBagItem.class);
+ withNoSchemaResolvedClassLoader(PluginsDataBagItem.class);
+ withSchema(EventsDataBagItem.class);
+
+ // [13400 - 13500]: Operation context messages.
+ msgIdx = 13400;
+ withNoSchema(OperationContextMessage.class);
+ withNoSchema(SecurityContextWrapper.class);
+
+ // [13600 - 13700]: Rolling Upgrade messages.
+ msgIdx = 13600;
+ withNoSchema(IgniteFeatureSet.class);
+ withNoSchema(IgniteComponentFeatureSet.class);
+ withNoSchema(RollingUpgradeClusterData.class);
assert msgIdx <= MAX_MESSAGE_ID;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java b/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java
index 87d769b..95913ae 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridComponent.java
@@ -82,7 +82,10 @@
PERFORMANCE_STAT_PROC,
/** Event storage manager. */
- EVENT_MGR;
+ EVENT_MGR,
+
+ /** Rolling upgrade processor. */
+ ROLLING_UPGRADE_PROC;
/** Cached values array. */
public static final DiscoveryDataExchangeType[] VALUES = values();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridDirectMap.java b/modules/core/src/main/java/org/apache/ignite/internal/GridDirectMap.java
deleted file mode 100644
index 8bddc47..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridDirectMap.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Annotates map fields.
- * Deprecated as not needed for new messages. See {@link Order} and {@link MessageProcessor} for details on how message
- * serialization code is generated.
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-@Deprecated
-public @interface GridDirectMap {
- /**
- * @return Key type.
- */
- Class<?> keyType();
-
- /**
- * @return Value type.
- */
- Class<?> valueType();
-}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
index 744a844..cab4d2a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContext.java
@@ -78,6 +78,7 @@
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
import org.apache.ignite.internal.processors.tracing.Tracing;
import org.apache.ignite.internal.suggestions.GridPerformanceSuggestions;
+import org.apache.ignite.internal.thread.context.OperationContextDispatcher;
import org.apache.ignite.internal.util.IgniteExceptionRegistry;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.worker.WorkersRegistry;
@@ -211,13 +212,20 @@
public MaintenanceRegistry maintenanceRegistry();
/**
- * Gets core message factoy.
+ * Gets core message factory.
*
* @return Core message factory.
*/
public MessageFactory messageFactory();
/**
+ * Gets the distributed operation context dispatcher.
+ *
+ * @return The distributed operation context dispatcher.
+ */
+ public OperationContextDispatcher operationContextDispatcher();
+
+ /**
* Gets transformation processor.
*
* @return Transformation processor.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
index 5d77930..fb3dcdb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
@@ -101,6 +101,7 @@
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
import org.apache.ignite.internal.processors.tracing.Tracing;
import org.apache.ignite.internal.suggestions.GridPerformanceSuggestions;
+import org.apache.ignite.internal.thread.context.OperationContextDispatcher;
import org.apache.ignite.internal.thread.pool.IgniteForkJoinPool;
import org.apache.ignite.internal.util.IgniteExceptionRegistry;
import org.apache.ignite.internal.util.spring.IgniteSpringHelper;
@@ -698,6 +699,11 @@
}
/** {@inheritDoc} */
+ @Override public OperationContextDispatcher operationContextDispatcher() {
+ return grid.operationContextDispatcher();
+ }
+
+ /** {@inheritDoc} */
@Override public CacheObjectTransformerProcessor transformer() {
return transProc;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java b/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java
index f0e1a7c..56795c7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/GridPluginComponent.java
@@ -17,10 +17,10 @@
package org.apache.ignite.internal;
-import java.io.Serializable;
-import java.util.Map;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.processors.plugin.PluginsDataBagItem;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.plugin.PluginProvider;
import org.apache.ignite.plugin.PluginValidationException;
@@ -115,10 +115,10 @@
@Nullable @Override public IgniteNodeValidationResult validateNode(ClusterNode node,
JoiningNodeDiscoveryData discoData) {
try {
- Map<String, Serializable> map = discoData.joiningNodeData();
+ PluginsDataBagItem pluginsItem = discoData.joiningNodeData();
- if (map != null)
- plugin.validateNewNode(node, map.get(plugin.name()));
+ if (pluginsItem != null && !F.isEmpty(pluginsItem.data()))
+ plugin.validateNewNode(node, pluginsItem.data().get(plugin.name()));
else
plugin.validateNewNode(node, null);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
index 8e9e483..6a89508 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteComponentType.java
@@ -208,7 +208,7 @@
try {
Class.forName(cls);
}
- catch (ClassNotFoundException e) {
+ catch (ClassNotFoundException | LinkageError e) {
if (mandatory)
throw componentException(e);
@@ -263,7 +263,7 @@
try {
cls = Class.forName(clsName);
}
- catch (ClassNotFoundException ignored) {
+ catch (ClassNotFoundException | LinkageError ignored) {
try {
cls = Class.forName(noOpClsName);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 8e92f81..063774e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -174,6 +174,7 @@
import org.apache.ignite.internal.suggestions.JvmConfigurationSuggestions;
import org.apache.ignite.internal.suggestions.OsConfigurationSuggestions;
import org.apache.ignite.internal.systemview.ConfigurationViewWalker;
+import org.apache.ignite.internal.thread.context.OperationContextDispatcher;
import org.apache.ignite.internal.util.TimeBag;
import org.apache.ignite.internal.util.future.GridCompoundFuture;
import org.apache.ignite.internal.util.future.GridFinishedFuture;
@@ -444,6 +445,9 @@
/** Core message factory. */
private MessageFactory msgFactory;
+ /** Distributed operation context dispatcher. */
+ private OperationContextDispatcher operationCtxDispatcher;
+
/**
* No-arg constructor is required by externalization.
*/
@@ -930,6 +934,8 @@
longJVMPauseDetector
);
+ operationCtxDispatcher = new OperationContextDispatcher();
+
startProcessor(new DiagnosticProcessor(ctx));
mBeansMgr = new IgniteMBeansManager(this);
@@ -1152,6 +1158,8 @@
// All components exept Discovery are started, time to check if maintenance is still needed.
mntcProc.prepareAndExecuteMaintenance();
+ operationCtxDispatcher.finishRegistration();
+
gw.writeLock();
try {
@@ -3059,6 +3067,11 @@
return msgFactory;
}
+ /** @return Distributed operation context dispatcher. */
+ OperationContextDispatcher operationContextDispatcher() {
+ return operationCtxDispatcher;
+ }
+
/**
* Method is responsible for handling the {@link EventType#EVT_CLIENT_NODE_DISCONNECTED} event. Notify all the
* GridComponents that the such even has been occurred (e.g. if the local client node disconnected from the cluster
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
index fda923e..2521be2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/MarshallerContextImpl.java
@@ -19,10 +19,12 @@
import java.io.File;
import java.io.IOException;
+import java.net.URL;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.Enumeration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -34,6 +36,7 @@
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutorService;
import java.util.function.BiPredicate;
+import java.util.function.Consumer;
import java.util.function.Function;
import javax.management.MBeanServer;
import org.apache.ignite.IgniteCheckedException;
@@ -125,7 +128,7 @@
try {
ClassLoader ldr = U.gridClassLoader();
- MarshallerUtils.processSystemClasses(ldr, plugins, clsName -> {
+ processSystemClasses(ldr, plugins, clsName -> {
int typeId = clsName.hashCode();
MappedName oldClsName;
@@ -710,6 +713,29 @@
}
/**
+ * Finds all system class names (JDK, Ignite and plugin classes) and processes them with the given consumer.
+ *
+ * @param ldr Class loader.
+ * @param plugins Plugins (may be {@code null}).
+ * @param proc Class processor (class name consumer).
+ * @throws IOException In case of error.
+ */
+ private static void processSystemClasses(ClassLoader ldr, @Nullable Collection<PluginProvider> plugins,
+ Consumer<String> proc) throws IOException {
+ MarshallerUtils.processSystemClasses(ldr, proc);
+
+ if (plugins != null && !plugins.isEmpty()) {
+ for (PluginProvider plugin : plugins) {
+ Enumeration<URL> pluginUrls = ldr.getResources("META-INF/" + plugin.name().toLowerCase()
+ + ".classnames.properties");
+
+ while (pluginUrls.hasMoreElements())
+ MarshallerUtils.processResource(pluginUrls.nextElement(), proc);
+ }
+ }
+ }
+
+ /**
*
*/
static final class CombinedMap extends AbstractMap<Integer, MappedName>
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/GridDirectCollection.java b/modules/core/src/main/java/org/apache/ignite/internal/OperationContextMessage.java
similarity index 60%
rename from modules/core/src/main/java/org/apache/ignite/internal/GridDirectCollection.java
rename to modules/core/src/main/java/org/apache/ignite/internal/OperationContextMessage.java
index 1d7ff1f..9dc9fdb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/GridDirectCollection.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/OperationContextMessage.java
@@ -17,23 +17,26 @@
package org.apache.ignite.internal;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
+import org.apache.ignite.internal.thread.context.OperationContext;
+import org.apache.ignite.internal.thread.context.OperationContextDispatcher;
import org.apache.ignite.plugin.extensions.communication.Message;
/**
- * Annotates iterable fields.
- * Note that for any {@link Message} implementations it is enough to set item type to {@code Message.class}.
- * Deprecated, see {@link Order} and {@link MessageProcessor} for details.
+ * Message for {@link OperationContext} distributed attributes.
+ *
+ * @see OperationContextDispatcher
*/
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.FIELD)
-@Deprecated
-public @interface GridDirectCollection {
- /**
- * @return Item type.
- */
- Class<?> value();
+public class OperationContextMessage implements Message {
+ /** Values of operation context attributes. */
+ @Order(0)
+ public Message[] vals;
+
+ /** Bitmap of effective attributes ids. */
+ @Order(1)
+ public byte idBitmap;
+
+ /** Empty constructor for serialization purposes. */
+ public OperationContextMessage() {
+ // No-op.
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/QueryIndexMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/QueryIndexMessage.java
index c42415b..1bdb38f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/cache/query/QueryIndexMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/cache/query/QueryIndexMessage.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.cache.query;
-import java.io.Serializable;
import java.util.LinkedHashMap;
import org.apache.ignite.cache.QueryIndex;
import org.apache.ignite.cache.QueryIndexType;
@@ -28,10 +27,7 @@
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
/** Message for {@link QueryIndex}. */
-public class QueryIndexMessage implements Serializable, Message {
- /** */
- private static final long serialVersionUID = 0L;
-
+public class QueryIndexMessage implements Message {
/** Index name. */
@Order(0)
public String name;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterTopologyCheckedException.java b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterTopologyCheckedException.java
index bd194b7..8da622f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterTopologyCheckedException.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/cluster/ClusterTopologyCheckedException.java
@@ -19,12 +19,13 @@
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.future.GridCompoundFuture.SkipLoggingException;
import org.jetbrains.annotations.Nullable;
/**
* This exception is used to indicate error with grid topology (e.g., crashed node, etc.).
*/
-public class ClusterTopologyCheckedException extends IgniteCheckedException {
+public class ClusterTopologyCheckedException extends IgniteCheckedException implements SkipLoggingException {
/** */
private static final long serialVersionUID = 0L;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
index c5b2f34..045db2f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageReader.java
@@ -30,6 +30,7 @@
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -434,6 +435,17 @@
}
/** {@inheritDoc} */
+ @Override public GridCacheVersion readGridCacheVersion() {
+ DirectByteBufferStream stream = state.item().stream;
+
+ GridCacheVersion v = stream.readGridCacheVersion();
+
+ lastRead = stream.lastFinished();
+
+ return v;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean isLastRead() {
return lastRead;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
index ba4846b..134e11f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/DirectMessageWriter.java
@@ -30,6 +30,7 @@
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -405,6 +406,15 @@
}
/** {@inheritDoc} */
+ @Override public boolean writeGridCacheVersion(GridCacheVersion ver) {
+ DirectByteBufferStream stream = state.item().stream;
+
+ stream.writeGridCacheVersion(ver);
+
+ return stream.lastFinished();
+ }
+
+ /** {@inheritDoc} */
@Override public boolean isHeaderWritten() {
return state.item().hdrWritten;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStream.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStream.java
index 2192272..ada462d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStream.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStream.java
@@ -36,6 +36,8 @@
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx;
import org.apache.ignite.internal.processors.cacheobject.IgniteCacheObjectProcessor;
import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.internal.util.GridUnsafe;
@@ -2091,6 +2093,11 @@
break;
+ case GRID_CACHE_VERSION:
+ writeGridCacheVersion((GridCacheVersion)val);
+
+ break;
+
case AFFINITY_TOPOLOGY_VERSION:
writeAffinityTopologyVersion((AffinityTopologyVersion)val);
@@ -2215,6 +2222,9 @@
case IGNITE_UUID:
return readIgniteUuid();
+ case GRID_CACHE_VERSION:
+ return readGridCacheVersion();
+
case AFFINITY_TOPOLOGY_VERSION:
return readAffinityTopologyVersion();
@@ -2307,104 +2317,292 @@
/** */
public void writeIgniteProductVersion(IgniteProductVersion ver) {
if (ver == null) {
- lastFinished = buf.remaining() >= 1;
-
- if (!lastFinished)
- return;
-
- buf.put((byte)0);
+ writeByte((byte)0);
return;
}
- if (!msgTypeDone) {
- if (buf.remaining() < 4) {
- lastFinished = false;
+ switch (uuidState) {
+ case 0:
+ writeByte((byte)1);
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 1:
+ writeByte(ver.major());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+
+ case 2:
+ writeByte(ver.minor());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 3:
+ writeByte(ver.maintenance());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 4:
+ writeLong(ver.revisionTimestamp());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 5:
+ writeByteArray(ver.revisionHash());
+
+ if (!lastFinished)
+ return;
+
+ uuidState = 0;
return;
- }
-
- buf.put((byte)1);
- buf.put(ver.major());
- buf.put(ver.minor());
- buf.put(ver.maintenance());
-
- msgTypeDone = true;
+ default:
+ throw new IllegalStateException("Unexpected state: " + uuidState);
}
-
- if (!keyDone) {
- writeLong(ver.revisionTimestamp());
-
- if (!lastFinished)
- return;
-
- keyDone = true;
- }
-
- writeByteArray(ver.revisionHash());
-
- if (!lastFinished)
- return;
-
- msgTypeDone = false;
- keyDone = false;
}
/** */
public IgniteProductVersion readIgniteProductVersion() {
- if (buf.remaining() < 1) {
- lastFinished = false;
+ switch (uuidState) {
+ case 0:
+ byte notNull = readByte();
- return null;
+ if (!lastFinished)
+ return null;
+
+ if (notNull == 0)
+ return null;
+
+ cur = new IgniteProductVersionEx();
+
+ uuidState++;
+ case 1:
+ ((IgniteProductVersionEx)cur).major(readByte());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+ case 2:
+ ((IgniteProductVersionEx)cur).minor(readByte());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+ case 3:
+ ((IgniteProductVersionEx)cur).maintenance(readByte());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+ case 4:
+ ((IgniteProductVersionEx)cur).revisionTimestamp(readLong());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+
+ case 5:
+ ((IgniteProductVersionEx)cur).revisionHash(readByteArray());
+
+ if (!lastFinished)
+ return null;
+
+ IgniteProductVersionEx res = (IgniteProductVersionEx)cur;
+
+ cur = NULL;
+ uuidState = 0;
+
+ return res;
+ default:
+ throw new IllegalStateException("Unexpected state: " + uuidState);
+ }
+ }
+
+ /** */
+ public void writeGridCacheVersion(GridCacheVersion ver) {
+ if (ver == null) {
+ writeByte((byte)0);
+
+ return;
}
- if (cur == NULL || cur == null) {
- if (buf.get() == (byte)0) {
- lastFinished = true;
+ switch (uuidState) {
+ case 0:
+ byte type;
- return null;
- }
+ if (ver.conflictVersion() == ver)
+ type = (byte)1;
+ else if (ver instanceof GridCacheVersionEx)
+ type = (byte)2;
+ else
+ throw new IllegalArgumentException("Unknown GridCacheVersion child: " + ver);
- cur = new IgniteProductVersionEx();
+ writeByte(type);
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 1:
+ writeInt(ver.topologyVersion());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+
+ case 2:
+ writeInt(ver.nodeOrderAndDrIdRaw());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 3:
+ writeLong(ver.order());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 4:
+ if (ver.conflictVersion() == ver) {
+ lastFinished = true;
+
+ uuidState = 0;
+
+ return;
+ }
+
+ writeInt(ver.conflictVersion().topologyVersion());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 5:
+ writeInt(ver.conflictVersion().nodeOrderAndDrIdRaw());
+
+ if (!lastFinished)
+ return;
+
+ uuidState++;
+ case 6:
+ writeLong(ver.conflictVersion().order());
+
+ if (!lastFinished)
+ return;
+
+ uuidState = 0;
+
+ return;
+
+ default:
+ throw new IllegalStateException("Unexpected state: " + uuidState);
}
+ }
- if (!msgTypeDone) {
- if (buf.remaining() < 3) {
- lastFinished = false;
+ /** */
+ public GridCacheVersion readGridCacheVersion() {
+ GridCacheVersion ver = cur != NULL ? (GridCacheVersion)cur : null;
- return null;
- }
+ switch (uuidState) {
+ case 0:
+ byte type = readByte();
- ((IgniteProductVersionEx)cur).version(buf.get(), buf.get(), buf.get());
+ if (!lastFinished)
+ return null;
- msgTypeDone = true;
+ // 0 -> NULL
+ // 1 -> GridCacheVersion
+ // 2 -> GridCacheVersionEx
+ if (type == 0)
+ return null;
+ else if (type == 1)
+ ver = new GridCacheVersion();
+ else if (type == 2) {
+ ver = new GridCacheVersionEx();
+
+ ((GridCacheVersionEx)ver).conflictVersion(new GridCacheVersion());
+ }
+ else
+ throw new IllegalArgumentException("Unknown GridCacheVersion type: " + type);
+
+ cur = ver;
+
+ uuidState++;
+
+ case 1:
+ ver.topologyVersion(readInt());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+ case 2:
+ ver.nodeOrderAndDrIdRaw(readInt());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+ case 3:
+ ver.order(readLong());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+ case 4:
+ if (ver.conflictVersion() == ver) {
+ cur = NULL;
+ uuidState = 0;
+
+ return ver;
+ }
+
+ ver.conflictVersion().topologyVersion(readInt());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+ case 5:
+ ver.conflictVersion().nodeOrderAndDrIdRaw(readInt());
+
+ if (!lastFinished)
+ return null;
+
+ uuidState++;
+ case 6:
+ ver.conflictVersion().order(readLong());
+
+ if (!lastFinished)
+ return null;
+
+ cur = NULL;
+ uuidState = 0;
+
+ return ver;
+ default:
+ throw new IllegalStateException("Unexpected state: " + uuidState);
}
-
- if (!keyDone) {
- long revTs = readLong();
-
- if (!lastFinished)
- return null;
-
- keyDone = true;
-
- ((IgniteProductVersionEx)cur).revisionTimestamp(revTs);
- }
-
- byte[] revHash = readByteArray();
-
- if (!lastFinished)
- return null;
-
- IgniteProductVersionEx res = (IgniteProductVersionEx)cur;
-
- res.revisionHash(revHash);
-
- cur = NULL;
- msgTypeDone = false;
- keyDone = false;
-
- return res;
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/IgniteProductVersionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/IgniteProductVersionEx.java
index 5037ce5..7da9f65 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/IgniteProductVersionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/direct/stream/IgniteProductVersionEx.java
@@ -29,9 +29,17 @@
private static final long serialVersionUID = 0L;
/** */
- public void version(byte major, byte minor, byte maintenance) {
+ public void major(byte major) {
this.major = major;
+ }
+
+ /** */
+ public void minor(byte minor) {
this.minor = minor;
+ }
+
+ /** */
+ public void maintenance(byte maintenance) {
this.maintenance = maintenance;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
index 619057c..64e1fb2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/jdbc/thin/JdbcThinConnection.java
@@ -2427,7 +2427,7 @@
*/
public JdbcMarshallerContext() {
try {
- processSystemClasses(U.gridClassLoader(), null, sysTypes::add);
+ processSystemClasses(U.gridClassLoader(), sysTypes::add);
}
catch (IOException e) {
throw new IgniteException("Unable to initialize marshaller context", e);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/management/tx/FetchNearXidVersionTask.java b/modules/core/src/main/java/org/apache/ignite/internal/management/tx/FetchNearXidVersionTask.java
index 519dd55..7845fbf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/management/tx/FetchNearXidVersionTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/management/tx/FetchNearXidVersionTask.java
@@ -23,6 +23,7 @@
import org.apache.ignite.IgniteException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.compute.ComputeJobResult;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
@@ -78,7 +79,7 @@
for (IgniteInternalTx tx : transactions) {
if (tx.xid().equals(arg.uuid()) ||
- tx.nearXidVersion().asIgniteUuid().equals(arg.uuid()) ||
+ BinaryUtils.asIgniteUuid(tx.nearXidVersion()).equals(arg.uuid()) ||
tx.xidVersion().equals(arg.gridCacheVersion()) ||
tx.nearXidVersion().equals(arg.gridCacheVersion()))
return tx.nearXidVersion();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/management/tx/TxTask.java b/modules/core/src/main/java/org/apache/ignite/internal/management/tx/TxTask.java
index ffd7a6a..4e07c65 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/management/tx/TxTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/management/tx/TxTask.java
@@ -38,6 +38,7 @@
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.management.tx.TxCommand.AbstractTxCommandArg;
import org.apache.ignite.internal.managers.discovery.DiscoCache;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
@@ -351,7 +352,7 @@
infos.add(new TxInfo(locTx.xid(), locTx.startTime(), duration, locTx.isolation(),
locTx.concurrency(), locTx.timeout(), lb, mappings, locTx.state(), size,
- locTx.nearXidVersion().asIgniteUuid(), locTx.masterNodeIds(), locTx.topologyVersionSnapshot(),
+ BinaryUtils.asIgniteUuid(locTx.nearXidVersion()), locTx.masterNodeIds(), locTx.topologyVersionSnapshot(),
verboseInfo));
if (arg.kill())
@@ -367,9 +368,9 @@
if (completed != null) {
if (Boolean.TRUE.equals(completed))
- infos.add(new TxInfo(infoArg.gridCacheVersion().asIgniteUuid(), COMMITTED));
+ infos.add(new TxInfo(BinaryUtils.asIgniteUuid(infoArg.gridCacheVersion()), COMMITTED));
else if (Boolean.FALSE.equals(completed))
- infos.add(new TxInfo(infoArg.gridCacheVersion().asIgniteUuid(), ROLLED_BACK));
+ infos.add(new TxInfo(BinaryUtils.asIgniteUuid(infoArg.gridCacheVersion()), ROLLED_BACK));
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
index 3acf503..08befbe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoManager.java
@@ -137,7 +137,6 @@
import org.apache.ignite.spi.communication.tcp.internal.ConnectionRequestor;
import org.apache.ignite.spi.communication.tcp.internal.TcpConnectionRequestDiscoveryMessage;
import org.apache.ignite.spi.communication.tcp.internal.TcpInverseConnectionResponseMessage;
-import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
@@ -455,10 +454,14 @@
ioMetric.register(RCVD_BYTES_CNT, spi::getReceivedBytesCount, "Received bytes count.");
- getSpi().setListener(commLsnr = new CommunicationListenerEx<Object>() {
+ getSpi().setListener(commLsnr = new CommunicationListenerEx<>() {
@Override public void onMessage(UUID nodeId, Object msg, IgniteRunnable msgC) {
try {
- onMessage0(nodeId, (GridIoMessage)msg, msgC);
+ GridIoMessage msg0 = (GridIoMessage)msg;
+
+ try (Scope ignored = ctx.operationContextDispatcher().restoreDistributedAttributes(msg0.opCtxMsg)) {
+ onMessage0(nodeId, msg0, msgC);
+ }
}
catch (ClassCastException ignored) {
U.error(log, "Communication manager received message of unknown type (will ignore): " +
@@ -1313,7 +1316,7 @@
assert obj != null;
- invokeListener(msg.policy(), lsnr, nodeId, obj, secSubjId(msg));
+ invokeListener(msg.policy(), lsnr, nodeId, obj);
}
finally {
threadProcessingMessage(false, null);
@@ -1451,7 +1454,7 @@
assert obj != null;
- invokeListener(msg.policy(), lsnr, nodeId, obj, secSubjId(msg));
+ invokeListener(msg.policy(), lsnr, nodeId, obj);
}
/**
@@ -1815,9 +1818,8 @@
* @param lsnr Listener.
* @param nodeId Node ID.
* @param msg Message.
- * @param secSubjId Security subject that will be used to open a security session.
*/
- private void invokeListener(Byte plc, GridMessageListener lsnr, UUID nodeId, Object msg, UUID secSubjId) {
+ private void invokeListener(Byte plc, GridMessageListener lsnr, UUID nodeId, Object msg) {
MTC.span().addLog(() -> "Invoke listener");
Byte oldPlc = CUR_PLC.get();
@@ -1827,9 +1829,7 @@
if (change)
CUR_PLC.set(plc);
- UUID newSecSubjId = secSubjId != null ? secSubjId : nodeId;
-
- try (Scope ignored = ctx.security().withContext(newSecSubjId)) {
+ try (Scope ignored = withRemoteSecurityContext(nodeId)) {
lsnr.onMessage(nodeId, msg, plc);
}
finally {
@@ -1838,6 +1838,19 @@
}
}
+ /** */
+ private Scope withRemoteSecurityContext(UUID nodeId) {
+ // No remote Security Context has been attached to the message processing thread so far.
+ // This means that the message was sent as part of an operation initiated by the sender node.
+ if (ctx.security().isDefaultContext())
+ return ctx.security().withContext(nodeId);
+
+ // Verify that the Security Context currently attached to the thread is valid.
+ ctx.security().securityContext();
+
+ return Scope.NOOP_SCOPE;
+ }
+
/**
* @return Current IO policy
*/
@@ -2025,11 +2038,8 @@
return ctx.config().getFailureDetectionTimeout();
}
- /**
- * @return One of two message wrappers. The first is {@link GridIoMessage}, the second is secured version {@link
- * GridIoSecurityAwareMessage}.
- */
- private @NotNull GridIoMessage createGridIoMessage(
+ /** @return A {@link GridIoMessage} wrapper for {@code msg}. */
+ public GridIoMessage createGridIoMessage(
Object topic,
Message msg,
byte plc,
@@ -2037,16 +2047,13 @@
long timeout,
boolean skipOnTimeout
) {
- if (ctx.security().enabled()) {
- UUID secSubjId = null;
+ GridIoMessage res;
- if (!ctx.security().isDefaultContext())
- secSubjId = ctx.security().securityContext().subject().id();
+ res = new GridIoMessage(plc, topic, msg, ordered, timeout, skipOnTimeout);
- return new GridIoSecurityAwareMessage(secSubjId, plc, topic, msg, ordered, timeout, skipOnTimeout);
- }
+ res.opCtxMsg = ctx.operationContextDispatcher().collectDistributedAttributes();
- return new GridIoMessage(plc, topic, msg, ordered, timeout, skipOnTimeout);
+ return res;
}
/**
@@ -3802,7 +3809,7 @@
MTC.span().addTag(SpanTags.MESSAGE, () -> traceName(fmc.message));
- invokeListener(plc, lsnr, nodeId, mc.message.message(), secSubjId(mc.message));
+ invokeListener(plc, lsnr, nodeId, mc.message.message());
}
finally {
if (mc.closure != null)
@@ -4232,19 +4239,6 @@
}
/**
- * @return Security subject id.
- */
- private UUID secSubjId(GridIoMessage msg) {
- if (ctx.security().enabled()) {
- assert msg instanceof GridIoSecurityAwareMessage;
-
- return ((GridIoSecurityAwareMessage)msg).securitySubjectId();
- }
-
- return null;
- }
-
- /**
* Responsible for handling network situation where server cannot open connection to client and
* has to ask client to establish a connection to specific server.
*
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java
index 8cc6c10..8296b60 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoMessage.java
@@ -19,10 +19,12 @@
import org.apache.ignite.internal.ExecutorAwareMessage;
import org.apache.ignite.internal.GridTopicMessage;
+import org.apache.ignite.internal.OperationContextMessage;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.processors.cache.GridCacheMessage;
import org.apache.ignite.internal.processors.datastreamer.DataStreamerRequest;
import org.apache.ignite.internal.processors.tracing.messages.SpanTransport;
+import org.apache.ignite.internal.util.nio.GridNioServer.MessageWrapper;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -31,7 +33,7 @@
/**
* Wrapper for all grid messages.
*/
-public class GridIoMessage implements Message, SpanTransport {
+public class GridIoMessage implements Message, SpanTransport, MessageWrapper {
/** */
public static final Integer STRIPE_DISABLED_PART = Integer.MIN_VALUE;
@@ -64,6 +66,11 @@
@Order(6)
byte[] span;
+ /** Effective operation context attributes to propagate. */
+ @Order(7)
+ @GridToStringInclude
+ public @Nullable OperationContextMessage opCtxMsg;
+
/**
* Default constructor.
*/
@@ -119,10 +126,8 @@
return GridTopicMessage.ordinal(topicMsg);
}
- /**
- * @return Message.
- */
- public Message message() {
+ /** {@inheritDoc} */
+ @Override public Message message() {
return msg;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoSecurityAwareMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoSecurityAwareMessage.java
deleted file mode 100644
index d1a6040..0000000
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/GridIoSecurityAwareMessage.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.managers.communication;
-
-import java.util.UUID;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
-
-/**
- *
- */
-public class GridIoSecurityAwareMessage extends GridIoMessage {
- /** Security subject ID that will be used during message processing on a remote node. */
- @Order(0)
- UUID secSubjId;
-
- /**
- * Default constructor.
- */
- public GridIoSecurityAwareMessage() {
- // No-op.
- }
-
- /**
- * @param secSubjId Security subject ID.
- * @param plc Policy.
- * @param topic Communication topic.
- * @param msg Message.
- * @param ordered Message ordered flag.
- * @param timeout Timeout.
- * @param skipOnTimeout Whether message can be skipped on timeout.
- */
- public GridIoSecurityAwareMessage(
- UUID secSubjId,
- byte plc,
- Object topic,
- Message msg,
- boolean ordered,
- long timeout,
- boolean skipOnTimeout
- ) {
- super(plc, topic, msg, ordered, timeout, skipOnTimeout);
-
- this.secSubjId = secSubjId;
- }
-
- /**
- * @return Security subject ID.
- */
- UUID securitySubjectId() {
- return secSubjId;
- }
-}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentCommunication.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentCommunication.java
index 422c15e..a36e98f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentCommunication.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentCommunication.java
@@ -330,7 +330,6 @@
"(node does not exist): " + nodeId);
}
-
/**
* @param rsrcName Resource to undeploy.
* @param rmtNodes Nodes to send request to.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
index 0501b2d..8d1e9de 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentPerVersionStore.java
@@ -1206,7 +1206,6 @@
return classLoader().registeredClassLoaderIds();
}
-
/**
* @return {@code True} if deployment has any node participants.
*/
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index da9b54b..7411e50 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -226,7 +226,7 @@
};
/** Discovery cached history size. */
- private final int DISCOVERY_HISTORY_SIZE = getInteger(IGNITE_DISCOVERY_HISTORY_SIZE, DFLT_DISCOVERY_HISTORY_SIZE);
+ private final int discoHistSz = getInteger(IGNITE_DISCOVERY_HISTORY_SIZE, DFLT_DISCOVERY_HISTORY_SIZE);
/** */
private final Object discoEvtMux = new Object();
@@ -254,7 +254,7 @@
/** Topology cache history. */
private final GridBoundedConcurrentLinkedHashMap<AffinityTopologyVersion, DiscoCache> discoCacheHist =
- new GridBoundedConcurrentLinkedHashMap<>(DISCOVERY_HISTORY_SIZE);
+ new GridBoundedConcurrentLinkedHashMap<>(discoHistSz);
/** Topology snapshots history. */
private volatile NavigableMap<Long, Collection<ClusterNode>> topHist = Collections.emptyNavigableMap();
@@ -782,7 +782,12 @@
discoEvtHnd.discoCache = discoCache;
if (!ctx.clientDisconnected()) {
- // The security processor must be notified first, since {@link IgniteSecurity#onLocalJoin}
+ // The Rolling Upgrade Feature Manager must be notified first, as {@link IgniteFeatureManager#onLocalJoin}
+ // completes initialization of the local node's Active Feature Set based on data received from the cluster.
+ // The Active Feature Set, in turn, determines the node's overall behavior.
+ ctx.rollingUpgrade().features().onLocalJoin();
+
+ // The security processor must be notified second, since {@link IgniteSecurity#onLocalJoin}
// finishes local node security context initialization that can be demanded by other Ignite
// components.
ctx.security().onLocalJoin();
@@ -1102,7 +1107,7 @@
rcvdCustomMsgs.addLast(customMsg.id());
- while (rcvdCustomMsgs.size() > DISCOVERY_HISTORY_SIZE)
+ while (rcvdCustomMsgs.size() > discoHistSz)
rcvdCustomMsgs.pollFirst();
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/EncryptionDataBagItem.java
similarity index 75%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
rename to modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/EncryptionDataBagItem.java
index eb38135..e4ea26f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/EncryptionDataBagItem.java
@@ -15,25 +15,23 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
+package org.apache.ignite.internal.managers.encryption;
import java.util.Map;
import org.apache.ignite.internal.Order;
import org.apache.ignite.plugin.extensions.communication.Message;
/** */
-public class InlineSizesData implements Message {
+public class EncryptionDataBagItem implements Message {
/** */
@Order(0)
- Map<String, Integer> sizes;
+ Map<Integer, GroupKeyEncrypted> knownKeys;
/** */
- public InlineSizesData() {}
+ public EncryptionDataBagItem() {}
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
+ /** */
+ EncryptionDataBagItem(Map<Integer, GroupKeyEncrypted> knownKeys) {
+ this.knownKeys = knownKeys;
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java
index 19c58d5..9989036 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GridEncryptionManager.java
@@ -563,7 +563,7 @@
}
}
- dataBag.addGridCommonData(ENCRYPTION_MGR.ordinal(), knownEncKeys);
+ dataBag.addGridCommonData(ENCRYPTION_MGR.ordinal(), new EncryptionDataBagItem(knownEncKeys));
}
/** {@inheritDoc} */
@@ -571,20 +571,15 @@
if (ctx.clientNode())
return;
- Map<Integer, Object> encKeysFromCluster = (Map<Integer, Object>)data.commonData();
+ EncryptionDataBagItem encryptionItem = data.commonData();
- if (F.isEmpty(encKeysFromCluster))
+ if (encryptionItem == null || F.isEmpty(encryptionItem.knownKeys))
return;
- for (Map.Entry<Integer, Object> entry : encKeysFromCluster.entrySet()) {
+ for (Map.Entry<Integer, GroupKeyEncrypted> entry : encryptionItem.knownKeys.entrySet()) {
int grpId = entry.getKey();
- GroupKeyEncrypted rmtKey;
-
- if (entry.getValue() instanceof GroupKeyEncrypted)
- rmtKey = (GroupKeyEncrypted)entry.getValue();
- else
- rmtKey = new GroupKeyEncrypted(INITIAL_KEY_ID, (byte[])entry.getValue());
+ GroupKeyEncrypted rmtKey = entry.getValue();
GroupKey locGrpKey = getActiveKey(grpId);
@@ -1489,7 +1484,7 @@
* @param req Request.
* @return Result future.
*/
- private IgniteInternalFuture<Message> prepareMasterKeyChange(MasterKeyChangeRequest req) {
+ private IgniteInternalFuture<Message> prepareMasterKeyChange(UUID ignored, MasterKeyChangeRequest req) {
if (masterKeyChangeRequest != null) {
return new GridFinishedFuture<>(new IgniteException("Master key change was rejected. " +
"The previous change was not completed."));
@@ -1552,7 +1547,7 @@
* @param req Request.
* @return Result future.
*/
- private IgniteInternalFuture<Message> performMasterKeyChange(MasterKeyChangeRequest req) {
+ private IgniteInternalFuture<Message> performMasterKeyChange(UUID ignored, MasterKeyChangeRequest req) {
if (masterKeyChangeRequest == null || !masterKeyChangeRequest.equals(req))
return new GridFinishedFuture<>(new IgniteException("Unknown master key change was rejected."));
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GroupKeyChangeProcess.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GroupKeyChangeProcess.java
index ac1fb02..99a9ed1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GroupKeyChangeProcess.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/encryption/GroupKeyChangeProcess.java
@@ -183,7 +183,7 @@
* @param req Request.
* @return Result future.
*/
- private IgniteInternalFuture<Message> prepare(ChangeCacheEncryptionRequest req) {
+ private IgniteInternalFuture<Message> prepare(UUID ignored, ChangeCacheEncryptionRequest req) {
if (ctx.clientNode())
return new GridFinishedFuture<>();
@@ -285,7 +285,7 @@
* @param req Request.
* @return Result future.
*/
- private IgniteInternalFuture<Message> perform(ChangeCacheEncryptionRequest req) {
+ private IgniteInternalFuture<Message> perform(UUID ignored, ChangeCacheEncryptionRequest req) {
if (this.req == null || !this.req.equals(req))
return new GridFinishedFuture<>(new IgniteException("Unknown cache group key change was rejected."));
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/EventsDataBagItem.java
similarity index 74%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/EventsDataBagItem.java
index eb38135..da409dc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/EventsDataBagItem.java
@@ -15,25 +15,22 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
+package org.apache.ignite.internal.managers.eventstorage;
-import java.util.Map;
import org.apache.ignite.internal.Order;
import org.apache.ignite.plugin.extensions.communication.Message;
/** */
-public class InlineSizesData implements Message {
+public class EventsDataBagItem implements Message {
/** */
@Order(0)
- Map<String, Integer> sizes;
+ int[] enabledEvts;
/** */
- public InlineSizesData() {}
+ public EventsDataBagItem() { }
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
+ /** @param enabledEvts Enabled events. */
+ public EventsDataBagItem(int[] enabledEvts) {
+ this.enabledEvts = enabledEvts;
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
index 1f96aa0..618ad6b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/eventstorage/GridEventStorageManager.java
@@ -1173,13 +1173,15 @@
/** {@inheritDoc} */
@Override public void onGridDataReceived(DiscoveryDataBag.GridDiscoveryData data) {
- if (data.commonData() == null)
+ EventsDataBagItem evtsItem = data.commonData();
+
+ if (evtsItem == null)
return;
if (ctx.clientNode())
return;
- GridIntList clusterData = new GridIntList((int[])data.commonData());
+ GridIntList clusterData = new GridIntList(evtsItem.enabledEvts);
GridIntList nodeData = new GridIntList(enabledEvents());
GridIntList toEnable = new GridIntList(clusterData.size());
@@ -1207,9 +1209,7 @@
if (dataBag.isJoiningNodeClient() && dataBag.commonDataCollectedFor(EVENT_MGR.ordinal()))
return;
- int[] clusterData = enabledEvents();
-
- dataBag.addGridCommonData(EVENT_MGR.ordinal(), clusterData);
+ dataBag.addGridCommonData(EVENT_MGR.ordinal(), new EventsDataBagItem(enabledEvents()));
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/tracing/GridTracingManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/tracing/GridTracingManager.java
index 4e5e66e..4e08710 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/tracing/GridTracingManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/tracing/GridTracingManager.java
@@ -34,8 +34,10 @@
import org.apache.ignite.internal.processors.tracing.Tracing;
import org.apache.ignite.internal.processors.tracing.configuration.GridTracingConfigurationManager;
import org.apache.ignite.internal.processors.tracing.messages.TraceableMessagesHandler;
+import org.apache.ignite.internal.processors.tracing.messages.TraceableMessagesTable;
import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.logger.NullLogger;
+import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.tracing.NoopTracingSpi;
import org.apache.ignite.spi.tracing.Scope;
@@ -508,6 +510,11 @@
}
/** {@inheritDoc} */
+ @Override public String traceName(Message msg) {
+ return TraceableMessagesTable.traceName(msg);
+ }
+
+ /** {@inheritDoc} */
@Override public TraceableMessagesHandler messages() {
// Optimization for noop spi.
if (noop)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/AuthentificationDataBagItem.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/AuthentificationDataBagItem.java
new file mode 100644
index 0000000..2ce6d24
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/AuthentificationDataBagItem.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.authentication;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.util.tostring.GridToStringInclude;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.plugin.extensions.communication.Message;
+
+/** Initial data is collected on coordinator to send to join node. */
+public class AuthentificationDataBagItem implements Message {
+ /** Users. */
+ @GridToStringInclude
+ @Order(0)
+ ArrayList<User> usrs;
+
+ /** Active user operations. */
+ @GridToStringInclude
+ @Order(1)
+ ArrayList<UserManagementOperation> activeOps;
+
+ /** */
+ public AuthentificationDataBagItem() { }
+
+ /**
+ * @param usrs Users.
+ * @param ops Active operations on cluster.
+ */
+ AuthentificationDataBagItem(Collection<User> usrs, Collection<UserManagementOperation> ops) {
+ this.usrs = new ArrayList<>(usrs);
+ activeOps = new ArrayList<>(ops);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(AuthentificationDataBagItem.class, this);
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java
index af9baf6..74a7dca 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/IgniteAuthenticationProcessor.java
@@ -60,7 +60,6 @@
import org.apache.ignite.internal.thread.pool.IgniteThreadPoolExecutor;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
-import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -141,7 +140,7 @@
private UserManagementOperationFinishedMessage curOpFinishMsg;
/** Initial users map and operations received from coordinator on the node joined to the cluster. */
- private InitialUsersData initUsrs;
+ private AuthentificationDataBagItem initUsrs;
/** I/O message listener. */
private GridMessageListener ioLsnr;
@@ -403,7 +402,7 @@
synchronized (mux) {
if (!dataBag.commonDataCollectedFor(AUTH_PROC.ordinal())) {
- InitialUsersData d = new InitialUsersData(users.values(), activeOps.values());
+ AuthentificationDataBagItem d = new AuthentificationDataBagItem(users.values(), activeOps.values());
if (log.isDebugEnabled())
log.debug("Collected initial users data: " + d);
@@ -430,7 +429,7 @@
/** {@inheritDoc} */
@Override public void onGridDataReceived(DiscoveryDataBag.GridDiscoveryData data) {
- initUsrs = (InitialUsersData)data.commonData();
+ initUsrs = data.commonData();
}
/** {@inheritDoc} */
@@ -999,36 +998,6 @@
}
/**
- * Initial data is collected on coordinator to send to join node.
- */
- private static final class InitialUsersData implements Serializable {
- /** */
- private static final long serialVersionUID = 0L;
-
- /** Users. */
- @GridToStringInclude
- private final ArrayList<User> usrs;
-
- /** Active user operations. */
- @GridToStringInclude
- private final ArrayList<UserManagementOperation> activeOps;
-
- /**
- * @param usrs Users.
- * @param ops Active operations on cluster.
- */
- InitialUsersData(Collection<User> usrs, Collection<UserManagementOperation> ops) {
- this.usrs = new ArrayList<>(usrs);
- activeOps = new ArrayList<>(ops);
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return S.toString(InitialUsersData.class, this);
- }
- }
-
- /**i
*
*/
private final class UserProposedListener implements CustomEventListener<UserProposedMessage> {
@@ -1333,7 +1302,7 @@
}
/** {@inheritDoc} */
- @Override protected void body() throws InterruptedException, IgniteInterruptedCheckedException {
+ @Override protected void body() {
if (ctx.clientNode())
return;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserManagementOperation.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserManagementOperation.java
index 82d3b93..da6efb8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserManagementOperation.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/authentication/UserManagementOperation.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.authentication;
-import java.io.Serializable;
import java.util.Objects;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -27,10 +26,7 @@
/**
* The operation with users. Used to deliver the information about requested operation to all server nodes.
*/
-public class UserManagementOperation implements Serializable, Message {
- /** */
- private static final long serialVersionUID = 0L;
-
+public class UserManagementOperation implements Message {
/** User. */
@Order(0)
User usr;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
index a67d265..b483dd6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheMetricsImpl.java
@@ -19,16 +19,20 @@
import java.util.List;
import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
import java.util.function.Supplier;
import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cache.CacheMetrics;
+import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.processors.affinity.AffinityAssignment;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTopologyFuture;
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition;
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState;
import org.apache.ignite.internal.processors.cache.store.GridCacheWriteBehindStore;
+import org.apache.ignite.internal.processors.cluster.BaselineTopology;
import org.apache.ignite.internal.processors.metric.MetricRegistryImpl;
import org.apache.ignite.internal.processors.metric.impl.AtomicLongMetric;
import org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl;
@@ -246,6 +250,15 @@
/** Conflict resolver merged entries count. */
private LongAdderMetric rslvrMergedCnt;
+ /** Affinity configuration MDC safe metric. */
+ private volatile Boolean affCfgMdcSafe;
+
+ /** Current partition distribution MDC safe metric. */
+ private volatile Boolean mdcSafePartDistrib;
+
+ /** Last affinity version when MdcSafe Partition Distribution metric was recalculated. */
+ private final AtomicReference<AffinityTopologyVersion> mdcSafeMetricLastVer = new AtomicReference<>();
+
/**
* Creates cache metrics.
*
@@ -1679,6 +1692,71 @@
return fut != null && !fut.isDone();
}
+ /**
+ * Returns {@code true} if affinity configuration is aware of multiple data centers, and
+ * it is able to spread partitions' copies across data centers.
+ */
+ private boolean isAffinityCfgMdcSafe() {
+ return affCfgMdcSafe != null && affCfgMdcSafe;
+ }
+
+ /**
+ * Returns {@code true} if current cache partition distribution maintains guarantee 'at least one partition copy in each datacenter'.
+ */
+ private boolean isMdcSafePartitionDistribution() {
+ return updateMdcSafeDistributionMetricIfNeeded();
+ }
+
+ /**
+ * Updates calculated value of Partition Distribution MDC safe metric if affinity has changed
+ * since last affinity change.
+ *
+ * @return Updated value of Partition Distribution MDC safe metric or cached value if affinity has not changed.
+ */
+ private boolean updateMdcSafeDistributionMetricIfNeeded() {
+ GridCacheAffinityManager aff = cctx.affinity();
+
+ try {
+ AffinityTopologyVersion currVer = aff.affinityTopologyVersion();
+ AffinityTopologyVersion lastVer = mdcSafeMetricLastVer.get();
+
+ // Skip expensive recalculation if the aff topology has not changed.
+ if (!currVer.equals(lastVer)) {
+ if (mdcSafeMetricLastVer.compareAndSet(lastVer, currVer))
+ mdcSafePartDistrib = recalculateMdcSafeMetric(aff.assignment(currVer));
+ }
+ }
+ catch (Exception ignored) {
+ // Affinity manager could throw an exception if aff not found for the cache.
+ // This should not break any code calling this method, so we just ignore it.
+ }
+
+ return mdcSafePartDistrib == null || mdcSafePartDistrib;
+ }
+
+ /**
+ * Recalcalculates Partition Distribution MDC safe metric based on provided assignment.
+ *
+ * @param assignment New assignment for the cache.
+ */
+ private Boolean recalculateMdcSafeMetric(AffinityAssignment assignment) {
+ BaselineTopology top = cctx.discovery().discoCache().state().baselineTopology();
+ if (top != null && top.numberOfDatacenters() > 1) {
+ int numberOfDataCenters = top.numberOfDatacenters();
+
+ for (List<ClusterNode> nodes : assignment.assignment()) {
+ int dcsCnt = (int)nodes.stream().map(ClusterNode::dataCenterId).distinct().count();
+
+ if (dcsCnt < numberOfDataCenters)
+ return false;
+ }
+
+ return true;
+ }
+
+ return mdcSafePartDistrib;
+ }
+
/** {@inheritDoc} */
@Override public long getIndexRebuildKeysProcessed() {
return idxRebuildKeyProcessed.value();
@@ -1745,6 +1823,20 @@
"Conflict resolver merged entries count");
}
+ /** Registers metric for partition distribution. */
+ public void registerPartitionDistributionSafeMetric() {
+ mreg.register("IsCachePartitionDistributionSafe", this::isMdcSafePartitionDistribution,
+ "True if current cache partition distribution maintains guarantee 'one partition copy in each datacenter'.");
+ }
+
+ /** Registers metric for cache configuration related to distributing partitions across DCs. */
+ public void registerAffinityConfigurationSafeMetric(boolean affCfgMdcSafe) {
+ mreg.register("IsCacheAffinityConfigurationMdcSafe", this::isAffinityCfgMdcSafe,
+ "True if cache affinity guarantees having a copy of each partition in each data center.");
+
+ this.affCfgMdcSafe = affCfgMdcSafe;
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(CacheMetricsImpl.class, this);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java
index eab8e84..d4aba5d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/CacheOperationContext.java
@@ -17,13 +17,12 @@
package org.apache.ignite.internal.processors.cache;
+import java.io.Serial;
import java.io.Serializable;
-import java.util.Collections;
-import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import javax.cache.expiry.ExpiryPolicy;
import org.apache.ignite.cache.ReadRepairStrategy;
-import org.apache.ignite.internal.util.tostring.GridToStringInclude;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.jetbrains.annotations.Nullable;
@@ -32,68 +31,52 @@
*/
public class CacheOperationContext implements Serializable {
/** */
- private static final long serialVersionUID = 0L;
+ @Serial private static final long serialVersionUID = 0L;
- /** Skip store. */
- @GridToStringInclude
+ /** */
+ private static final CacheOperationContext INSTANCE = new Builder().build();
+
+ /** Skip store flag. */
private final boolean skipStore;
- /** Skip store. */
- @GridToStringInclude
+ /** Skip read through flag. */
private final boolean skipReadThrough;
/** No retries flag. */
- @GridToStringInclude
private final boolean noRetries;
- /** */
+ /** Recovery flag. */
private final boolean recovery;
/** Read-repair strategy. */
- private final ReadRepairStrategy readRepairStrategy;
+ private final @Nullable ReadRepairStrategy readRepairStrategy;
/** Keep binary flag. */
private final boolean keepBinary;
/** Expiry policy. */
- private final ExpiryPolicy expiryPlc;
+ private final @Nullable ExpiryPolicy expiryPlc;
/** Data center Id. */
- private final Byte dataCenterId;
+ private final @Nullable Byte dataCenterId;
/** Application attributes. */
- private final Map<String, String> appAttrs;
+ private final @Nullable Map<String, String> appAttrs;
/** Handle binary in interceptor operation flag. */
private final boolean keepBinaryInInterceptor;
/**
- * Constructor with default values.
+ * @param skipStore Skip store flag.
+ * @param skipReadThrough Skip read-through cache store flag.
+ * @param keepBinary Keep binary flag.
+ * @param expiryPlc Expiry policy.
+ * @param dataCenterId Data center id.
+ * @param readRepairStrategy Read-repair strategy.
+ * @param appAttrs Application attributes.
+ * @param keepBinaryInInterceptor Handle binary in interceptor operation flag.
*/
- public CacheOperationContext() {
- skipStore = false;
- skipReadThrough = false;
- keepBinary = false;
- expiryPlc = null;
- noRetries = false;
- recovery = false;
- readRepairStrategy = null;
- dataCenterId = null;
- appAttrs = null;
- keepBinaryInInterceptor = false;
- }
-
- /**
- * @param skipStore Skip store flag.
- * @param skipReadThrough Skip read-through cache store flag.
- * @param keepBinary Keep binary flag.
- * @param expiryPlc Expiry policy.
- * @param dataCenterId Data center id.
- * @param readRepairStrategy Read-repair strategy.
- * @param appAttrs Application attributes.
- * @param keepBinaryInInterceptor Handle binary in interceptor operation flag.
- */
- public CacheOperationContext(
+ private CacheOperationContext(
boolean skipStore,
boolean skipReadThrough,
boolean keepBinary,
@@ -118,60 +101,30 @@
}
/**
- * @return Keep binary flag.
+ * Helper.
+ */
+ public static CacheOperationContext instance() {
+ return INSTANCE;
+ }
+
+ /** Helper. */
+ public static CacheOperationContext of(CacheOperationContext opCtx) {
+ return opCtx == null ? INSTANCE : opCtx;
+ }
+
+ /**
+ * @return keepBinary flag.
*/
public boolean isKeepBinary() {
return keepBinary;
}
- /** Return handle binary in interceptor operation flag. */
- public boolean isKeepBinaryInInterceptor() {
- return keepBinaryInInterceptor;
- }
+ /** Context with keepBinary flag. */
+ public CacheOperationContext withKeepBinary() {
+ if (isKeepBinary())
+ return this;
- /**
- * @return {@code True} if data center id is set otherwise {@code false}.
- */
- public boolean hasDataCenterId() {
- return dataCenterId != null;
- }
-
- /**
- * See {@link IgniteInternalCache#keepBinary()}.
- *
- * @return New instance of CacheOperationContext with keep binary flag.
- */
- public CacheOperationContext keepBinary() {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- true,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- true);
- }
-
- /**
- * See {@link IgniteInternalCache#withKeepBinaryInInterceptor()}.
- *
- * @return New instance of CacheOperationContext with handle binary in interceptor flag.
- */
- public CacheOperationContext withKeepBinaryInInterceptor() {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- true);
+ return builder(this).keepBinary(true).build();
}
/**
@@ -183,191 +136,12 @@
return dataCenterId;
}
- /**
- * @return Skip store.
- */
- public boolean skipStore() {
- return skipStore;
- }
+ /** Context with dataCenterId. */
+ public CacheOperationContext withDataCenterId(Byte dataCenterId) {
+ if (Objects.equals(this.dataCenterId, dataCenterId))
+ return this;
- /**
- * See {@link IgniteInternalCache#setSkipStore(boolean)}.
- *
- * @param skipStore Skip store flag.
- * @return New instance of CacheOperationContext with skip store flag.
- */
- public CacheOperationContext setSkipStore(boolean skipStore) {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- keepBinaryInInterceptor);
- }
-
- /** @return Skip read-through cache store. */
- public boolean skipReadThrough() {
- return skipReadThrough;
- }
-
- /**
- * See {@link IgniteInternalCache#withApplicationAttributes(Map)}.
- *
- * @return New instance of CacheOperationContext with new application attributes.
- */
- public CacheOperationContext withApplicationAttributes(Map<String, String> attrs) {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- Collections.unmodifiableMap(attrs),
- keepBinaryInInterceptor);
- }
-
- /**
- * See {@link IgniteInternalCache#withSkipReadThrough()}.
- *
- * @return New instance of CacheOperationContext with skip store flag.
- */
- public CacheOperationContext withSkipReadThrough() {
- return new CacheOperationContext(
- skipStore,
- true,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- keepBinaryInInterceptor);
- }
-
- /**
- * @return {@link ExpiryPolicy} associated with this projection.
- */
- @Nullable public ExpiryPolicy expiry() {
- return expiryPlc;
- }
-
- /**
- * See {@link IgniteInternalCache#withExpiryPolicy(ExpiryPolicy)}.
- *
- * @param plc {@link ExpiryPolicy} to associate with this projection.
- * @return New instance of CacheOperationContext with skip store flag.
- */
- public CacheOperationContext withExpiryPolicy(ExpiryPolicy plc) {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- plc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- keepBinaryInInterceptor);
- }
-
- /**
- * @param noRetries No retries flag.
- * @return Operation context.
- */
- public CacheOperationContext setNoRetries(boolean noRetries) {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- keepBinaryInInterceptor);
- }
-
- /**
- * @param dataCenterId Data center id.
- * @return Operation context.
- */
- public CacheOperationContext setDataCenterId(byte dataCenterId) {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- keepBinaryInInterceptor);
- }
-
- /**
- * @param recovery Recovery flag.
- * @return New instance of CacheOperationContext with recovery flag.
- */
- public CacheOperationContext setRecovery(boolean recovery) {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- keepBinaryInInterceptor);
- }
-
- /**
- * @param readRepairStrategy Read Repair strategy.
- * @return New instance of CacheOperationContext with Read Repair flag.
- */
- public CacheOperationContext setReadRepairStrategy(ReadRepairStrategy readRepairStrategy) {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- appAttrs,
- keepBinaryInInterceptor);
- }
-
- /**
- * @param appAttrs Application attributes.
- * @return New instance of CacheOperationContext with application attributes.
- */
- public CacheOperationContext setApplicationAttributes(Map<String, String> appAttrs) {
- return new CacheOperationContext(
- skipStore,
- skipReadThrough,
- keepBinary,
- expiryPlc,
- noRetries,
- dataCenterId,
- recovery,
- readRepairStrategy,
- new HashMap<>(appAttrs),
- keepBinaryInInterceptor);
+ return builder(this).dataCenterId(dataCenterId).build();
}
/**
@@ -377,13 +151,29 @@
return recovery;
}
+ /** Context with recovery flag. */
+ public CacheOperationContext withRecovery() {
+ if (recovery())
+ return this;
+
+ return builder(this).recovery(true).build();
+ }
+
/**
* @return Read Repair strategy.
*/
- public ReadRepairStrategy readRepairStrategy() {
+ @Nullable public ReadRepairStrategy readRepairStrategy() {
return readRepairStrategy;
}
+ /** Context with read repair strategy. */
+ public CacheOperationContext withReadRepairStrategy(ReadRepairStrategy strategy) {
+ if (readRepairStrategy() == strategy)
+ return this;
+
+ return builder(this).readRepairStrategy(strategy).build();
+ }
+
/**
* @return No retries flag.
*/
@@ -391,15 +181,266 @@
return noRetries;
}
+ /** Context with noRetries flag. */
+ public CacheOperationContext withNoRetries() {
+ if (noRetries())
+ return this;
+
+ return builder(this).noRetries(true).build();
+ }
+
/**
* @return Application attributes.
*/
- public Map<String, String> applicationAttributes() {
+ @Nullable public Map<String, String> applicationAttributes() {
return appAttrs;
}
+ /** Context with application attributes. */
+ public CacheOperationContext withApplicationAttributes(Map<String, String> attrs) {
+ return builder(this).applicationAttributes(attrs).build();
+ }
+
+ /**
+ * @return Skip store.
+ */
+ public boolean skipStore() {
+ return skipStore;
+ }
+
+ /** Context with skipStore flag. */
+ public CacheOperationContext withSkipStore() {
+ if (skipStore())
+ return this;
+
+ return builder(this).skipStore(true).build();
+ }
+
+ /**
+ * @return Skip read-through cache store.
+ */
+ public boolean skipReadThrough() {
+ return skipReadThrough;
+ }
+
+ /** Context with {@link CacheOperationContext#skipReadThrough} flag. */
+ public CacheOperationContext withSkipReadThrough() {
+ if (skipReadThrough())
+ return this;
+
+ return builder(this).skipReadThrough(true).build();
+ }
+
+ /** @return Whether to handle binary in interceptor. */
+ public boolean keepBinaryInInterceptor() {
+ return keepBinaryInInterceptor;
+ }
+
+ /** Context with {@link CacheOperationContext#keepBinaryInInterceptor} flag. */
+ public CacheOperationContext withKeepBinaryInInterceptor() {
+ if (keepBinaryInInterceptor())
+ return this;
+
+ return builder(this).keepBinaryInInterceptor(true).build();
+ }
+
+ /**
+ * @return {@link ExpiryPolicy} associated with this projection.
+ */
+ @Nullable public ExpiryPolicy expiry() {
+ return expiryPlc;
+ }
+
+ /** Context with {@link CacheOperationContext#expiryPlc}. */
+ public CacheOperationContext withExpiryPolicy(ExpiryPolicy plc) {
+ return builder(this).expiryPolicy(plc).build();
+ }
+
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(CacheOperationContext.class, this);
}
+
+ /**
+ * Creates the builder from existing context.
+ *
+ * @return Builder for cache operations context.
+ */
+ public static Builder builder(CacheOperationContext ctx) {
+ return new Builder(ctx);
+ }
+
+ /**
+ * Creates the builder for cache operations context.
+ *
+ * @return Builder for cache operations context.
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /** Cache operations context builder. */
+ public static class Builder {
+ /** Skip store. */
+ private boolean skipStore;
+
+ /** Skip read through. */
+ private boolean skipReadThrough;
+
+ /** No retries flag. */
+ private boolean noRetries;
+
+ /** Recovery flag. */
+ private boolean recovery;
+
+ /** Read-repair strategy. */
+ private ReadRepairStrategy readRepairStrategy;
+
+ /** Keep binary flag. */
+ private boolean keepBinary;
+
+ /** Expiry policy. */
+ private ExpiryPolicy expiryPlc;
+
+ /** Data center Id. */
+ private Byte dataCenterId;
+
+ /** Application attributes. */
+ private Map<String, String> appAttrs;
+
+ /** Flag indicating whether to handle binary in interceptor. */
+ private boolean keepBinaryInInterceptor;
+
+ /** */
+ Builder() {
+ // No context.
+ }
+
+ /** */
+ Builder(CacheOperationContext ctx) {
+ skipStore = ctx.skipStore;
+ skipReadThrough = ctx.skipReadThrough;
+ noRetries = ctx.noRetries;
+ recovery = ctx.recovery;
+ readRepairStrategy = ctx.readRepairStrategy;
+ keepBinary = ctx.keepBinary;
+ expiryPlc = ctx.expiryPlc;
+ dataCenterId = ctx.dataCenterId;
+ appAttrs = ctx.appAttrs;
+ keepBinaryInInterceptor = ctx.keepBinaryInInterceptor;
+ }
+
+ /**
+ * CacheOperationContext with keepBinary and keepBinaryInInterceptor flags.
+ *
+ * @see IgniteInternalCache#keepBinary()
+ * @see IgniteInternalCache#withKeepBinaryInInterceptor()
+ */
+ public Builder keepBinary(boolean keepBinary) {
+ this.keepBinary = keepBinary;
+ keepBinaryInInterceptor = keepBinary;
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with skipStore flag.
+ *
+ * @see IgniteInternalCache#withSkipStore()
+ */
+ public Builder skipStore(boolean skipStore) {
+ this.skipStore = skipStore;
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with attributes.
+ *
+ * @see IgniteInternalCache#withApplicationAttributes(Map)
+ */
+ public Builder applicationAttributes(Map<String, String> attrs) {
+ appAttrs = Map.copyOf(attrs);
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with skip read through flag.
+ *
+ * @see IgniteInternalCache#withSkipReadThrough()
+ */
+ public Builder skipReadThrough(boolean skipReadThrough) {
+ this.skipReadThrough = skipReadThrough;
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with handle binary in interceptor execution flag.
+ *
+ * @see IgniteInternalCache#withKeepBinaryInInterceptor()
+ */
+ public Builder keepBinaryInInterceptor(boolean keepBinaryInInterceptor) {
+ this.keepBinaryInInterceptor = keepBinaryInInterceptor;
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with expiry policy.
+ *
+ * @see IgniteInternalCache#withExpiryPolicy(ExpiryPolicy)
+ */
+ public Builder expiryPolicy(ExpiryPolicy expiryPlc) {
+ this.expiryPlc = expiryPlc;
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with no retries flag.
+ */
+ public Builder noRetries(boolean noRetries) {
+ this.noRetries = noRetries;
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with Data center id.
+ */
+ public Builder dataCenterId(Byte dataCenterId) {
+ this.dataCenterId = dataCenterId;
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with recovery flag.
+ */
+ public Builder recovery(boolean recovery) {
+ this.recovery = recovery;
+ return this;
+ }
+
+ /**
+ * CacheOperationContext with read repair strategy.
+ */
+ public Builder readRepairStrategy(ReadRepairStrategy readRepairStrategy) {
+ this.readRepairStrategy = readRepairStrategy;
+ return this;
+ }
+
+ /**
+ * Builds cache operations context.
+ *
+ * @return Cache operations context.
+ */
+ public CacheOperationContext build() {
+ return new CacheOperationContext(
+ skipStore,
+ skipReadThrough,
+ keepBinary,
+ expiryPlc,
+ noRetries,
+ dataCenterId,
+ recovery,
+ readRepairStrategy,
+ appAttrs,
+ keepBinaryInInterceptor);
+ }
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
index 987be04..d5c7d8d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java
@@ -1504,10 +1504,9 @@
if (data.commonData() == null)
return;
- assert joinDiscoData != null || disconnectedState();
- assert data.commonData() instanceof CacheNodeCommonDiscoveryData : data;
+ CacheNodeCommonDiscoveryData cachesData = data.commonData();
- CacheNodeCommonDiscoveryData cachesData = (CacheNodeCommonDiscoveryData)data.commonData();
+ assert joinDiscoData != null || disconnectedState();
// CacheGroup configurations that were created from local node configuration.
Map<Integer, CacheGroupDescriptor> locCacheGrps = new HashMap<>(registeredCacheGroups());
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
index fba0e99..205af51 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GatewayProtectedCacheProxy.java
@@ -166,7 +166,7 @@
if (skip)
return this;
- return new GatewayProtectedCacheProxy<>(delegate, opCtx.setSkipStore(true), lock);
+ return new GatewayProtectedCacheProxy<>(delegate, opCtx.withSkipStore(), lock);
}
finally {
onLeave(opGate);
@@ -180,7 +180,7 @@
CacheOperationGate opGate = onEnter();
try {
- return new GatewayProtectedCacheProxy<>(delegate, opCtx.setApplicationAttributes(appAttrs), lock);
+ return new GatewayProtectedCacheProxy<>(delegate, opCtx.withApplicationAttributes(appAttrs), lock);
}
finally {
onLeave(opGate);
@@ -197,7 +197,7 @@
if (noRetries)
return this;
- return new GatewayProtectedCacheProxy<>(delegate, opCtx.setNoRetries(true), lock);
+ return new GatewayProtectedCacheProxy<>(delegate, opCtx.withNoRetries(), lock);
}
finally {
onLeave(opGate);
@@ -214,7 +214,7 @@
if (recovery)
return this;
- return new GatewayProtectedCacheProxy<>(delegate, opCtx.setRecovery(true), lock);
+ return new GatewayProtectedCacheProxy<>(delegate, opCtx.withRecovery(), lock);
}
finally {
onLeave(opGate);
@@ -244,7 +244,7 @@
if (opCtx.readRepairStrategy() == strategy)
return this;
- return new GatewayProtectedCacheProxy<>(delegate, opCtx.setReadRepairStrategy(strategy), lock);
+ return new GatewayProtectedCacheProxy<>(delegate, opCtx.withReadRepairStrategy(strategy), lock);
}
finally {
onLeave(opGate);
@@ -261,7 +261,7 @@
CacheOperationGate opGate = onEnter();
try {
- return new GatewayProtectedCacheProxy<>((IgniteCacheProxy<K1, V1>)delegate, opCtx.keepBinary(), lock);
+ return new GatewayProtectedCacheProxy<>((IgniteCacheProxy<K1, V1>)delegate, opCtx.withKeepBinary(), lock);
}
finally {
onLeave(opGate);
@@ -278,7 +278,7 @@
if (prevDataCenterId != null && dataCenterId == prevDataCenterId)
return this;
- return new GatewayProtectedCacheProxy<>(delegate, opCtx.setDataCenterId(dataCenterId), lock);
+ return new GatewayProtectedCacheProxy<>(delegate, opCtx.withDataCenterId(dataCenterId), lock);
}
finally {
onLeave(opGate);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
index d494e5d..2fe2974 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheAdapter.java
@@ -98,6 +98,7 @@
import org.apache.ignite.internal.processors.cache.dr.GridCacheDrInfo;
import org.apache.ignite.internal.processors.cache.persistence.CacheDataRow;
import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
+import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalAdapter;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxLocalEx;
@@ -159,6 +160,7 @@
import static org.apache.ignite.IgniteSystemProperties.IGNITE_CACHE_RETRIES_COUNT;
import static org.apache.ignite.internal.GridClosureCallMode.BROADCAST;
+import static org.apache.ignite.internal.processors.cache.GridCacheOperation.READ;
import static org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState.OWNING;
import static org.apache.ignite.internal.processors.dr.GridDrType.DR_LOAD;
import static org.apache.ignite.internal.processors.dr.GridDrType.DR_NONE;
@@ -466,109 +468,49 @@
}
/** {@inheritDoc} */
- @Override public final GridCacheProxyImpl<K, V> setSkipStore(boolean skipStore) {
- CacheOperationContext opCtx = new CacheOperationContext(
- true,
- false,
- false,
- null,
- false,
- null,
- false,
- null,
- null,
- false);
+ @Override public IgniteInternalCache<K, V> withSkipStore() {
+ CacheOperationContext opCtx = ctx.operationContextPerCall();
+
+ opCtx = CacheOperationContext.of(opCtx).withSkipStore();
return new GridCacheProxyImpl<>(ctx, this, opCtx);
}
/** {@inheritDoc} */
@Override public IgniteInternalCache<K, V> withSkipReadThrough() {
- CacheOperationContext opCtx = this.ctx.operationContextPerCall();
+ CacheOperationContext opCtx = ctx.operationContextPerCall();
- if (opCtx == null) {
- opCtx = new CacheOperationContext(
- false,
- true,
- false,
- null,
- false,
- null,
- false,
- null,
- null,
- false);
- }
- else
- opCtx = opCtx.withSkipReadThrough();
+ opCtx = CacheOperationContext.of(opCtx).withSkipReadThrough();
- return new GridCacheProxyImpl<>(this.ctx, this, opCtx);
+ return new GridCacheProxyImpl<>(ctx, this, opCtx);
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteInternalCache<K, V> withKeepBinaryInInterceptor() {
+ CacheOperationContext opCtx = ctx.operationContextPerCall();
+
+ opCtx = CacheOperationContext.of(opCtx).withKeepBinaryInInterceptor();
+
+ return new GridCacheProxyImpl<>(ctx, this, opCtx);
}
/** @return New internal cache instance based on this one, but with application attributes. */
@Override public GridCacheProxyImpl<K, V> withApplicationAttributes(Map<String, String> attrs) {
CacheOperationContext opCtx = ctx.operationContextPerCall();
- if (opCtx == null) {
- opCtx = new CacheOperationContext(
- false,
- false,
- false,
- null,
- false,
- null,
- false,
- null,
- new HashMap<>(attrs),
- false);
- }
- else
- opCtx = opCtx.withApplicationAttributes(attrs);
+ opCtx = CacheOperationContext.of(opCtx).withApplicationAttributes(attrs);
return new GridCacheProxyImpl<>(ctx, this, opCtx);
}
/** {@inheritDoc} */
@Override public final <K1, V1> GridCacheProxyImpl<K1, V1> keepBinary() {
- CacheOperationContext opCtx = new CacheOperationContext(
- false,
- false,
- true,
- null,
- false,
- null,
- false,
- null,
- null,
- false);
+ CacheOperationContext opCtx = CacheOperationContext.builder().keepBinary(true).keepBinaryInInterceptor(false).build();
return new GridCacheProxyImpl<>((GridCacheContext<K1, V1>)ctx, (GridCacheAdapter<K1, V1>)this, opCtx);
}
/** {@inheritDoc} */
- @Override public GridCacheProxyImpl<K, V> withKeepBinaryInInterceptor() {
- CacheOperationContext opCtx = this.ctx.operationContextPerCall();
-
- if (opCtx == null) {
- opCtx = new CacheOperationContext(
- false,
- false,
- false,
- null,
- false,
- null,
- false,
- null,
- null,
- true);
- }
- else
- opCtx = opCtx.withKeepBinaryInInterceptor();
-
- return new GridCacheProxyImpl<>(this.ctx, this, opCtx);
- }
-
- /** {@inheritDoc} */
@Nullable @Override public final ExpiryPolicy expiry() {
return null;
}
@@ -577,34 +519,16 @@
@Override public final GridCacheProxyImpl<K, V> withExpiryPolicy(ExpiryPolicy plc) {
assert !CU.isUtilityCache(ctx.name());
- CacheOperationContext opCtx = new CacheOperationContext(
- false,
- false,
- false,
- plc,
- false,
- null,
- false,
- null,
- null,
- false);
+ CacheOperationContext opCtx = CacheOperationContext.builder().expiryPolicy(plc).build();
return new GridCacheProxyImpl<>(ctx, this, opCtx);
}
/** {@inheritDoc} */
@Override public final IgniteInternalCache<K, V> withNoRetries() {
- CacheOperationContext opCtx = new CacheOperationContext(
- false,
- false,
- false,
- null,
- true,
- null,
- false,
- null,
- null,
- false);
+ CacheOperationContext opCtx = ctx.operationContextPerCall();
+
+ opCtx = CacheOperationContext.of(opCtx).withNoRetries();
return new GridCacheProxyImpl<>(ctx, this, opCtx);
}
@@ -616,7 +540,8 @@
/**
* @param keys Keys to lock.
- * @param timeout Lock timeout.
+ * @param timeout Transaction timeout.
+ * @param waitTimeout Lock wait timeout.
* @param tx Transaction.
* @param isRead {@code True} for read operations.
* @param retval Flag to return value.
@@ -629,6 +554,7 @@
public abstract IgniteInternalFuture<Boolean> txLockAsync(
Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
IgniteTxLocalEx tx,
boolean isRead,
boolean retval,
@@ -3107,6 +3033,196 @@
}
/** {@inheritDoc} */
+ @Override public boolean lockTxEntry(CacheEntry<K, V> entry, long waitTimeout) throws IgniteCheckedException {
+ A.notNull(entry, "entry");
+
+ return lockTxEntryAsync(entry, waitTimeout).get();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean lockTxEntries(Collection<CacheEntry<K, V>> entries, long waitTimeout)
+ throws IgniteCheckedException {
+ A.notNull(entries, "entries");
+
+ return lockTxEntriesAsync(entries, waitTimeout).get();
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteInternalFuture<Boolean> lockTxEntryAsync(CacheEntry<K, V> entry, long waitTimeout) {
+ A.notNull(entry, "entry");
+
+ return lockTxEntriesAsync(Collections.singleton(entry), waitTimeout);
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteInternalFuture<Boolean> lockTxEntriesAsync(
+ Collection<CacheEntry<K, V>> entries,
+ long waitTimeout
+ ) {
+ A.notNull(entries, "entries");
+
+ GridNearTxLocal tx = tx();
+
+ if (tx == null)
+ return new GridFinishedFuture<>(
+ new IgniteCheckedException("Failed to acquire transactional lock without transaction."));
+
+ if (!tx.pessimistic())
+ return new GridFinishedFuture<>(
+ new IgniteCheckedException("Failed to acquire transactional lock in optimistic transaction."));
+
+ // Wait for previous per-transaction async operations to finish.
+ tx.txState().awaitLastFuture();
+
+ if (!tx.init())
+ return new GridFinishedFuture<>(new IgniteTxRollbackCheckedException(
+ "Failed to acquire transactional lock because transaction has been completed: " + tx));
+
+ if (entries.isEmpty())
+ return new GridFinishedFuture<>(true);
+
+ try {
+ tx.addActiveCache(ctx, false);
+ }
+ catch (IgniteCheckedException e) {
+ return new GridFinishedFuture<>(e);
+ }
+
+ Collection<KeyCacheObject> keys = new ArrayList<>(entries.size());
+ List<IgniteTxEntry> txEntries = new ArrayList<>(entries.size());
+ List<GridCacheVersion> expVers = new ArrayList<>(entries.size());
+ Set<IgniteTxKey> txKeys = new HashSet<>(entries.size());
+
+ CacheOperationContext opCtx = ctx.operationContextPerCall();
+
+ for (CacheEntry<K, V> entry : entries) {
+ A.notNull(entry, "entry");
+
+ KeyCacheObject key = ctx.toCacheKeyObject(entry.getKey());
+ IgniteTxKey txKey = ctx.txKey(key);
+
+ if (!txKeys.add(txKey))
+ continue;
+
+ IgniteTxEntry lockedTxEntry = tx.entry(txKey);
+
+ if (lockedTxEntry != null && (lockedTxEntry.op() != READ || lockedTxEntry.locked()))
+ continue;
+
+ if (!(entry.version() instanceof GridCacheVersion)) {
+ tx.removeAndUnlockTxEntries(txEntries);
+
+ return new GridFinishedFuture<>(new IgniteCheckedException("Failed to acquire transactional lock for entry with " +
+ "unsupported version type [entry=" + entry + ", version=" + entry.version() + ']'));
+ }
+
+ CacheObject val = ctx.toCacheObject(entry.getValue());
+ GridCacheEntryEx entryEx = ctx.isColocated() ? ctx.colocated().entryExx(key, tx.topologyVersion(), true) : entryEx(key);
+
+ IgniteTxEntry txEntry = tx.addEntry(
+ READ,
+ val,
+ null,
+ null,
+ entryEx,
+ null,
+ null,
+ true,
+ -1L,
+ -1L,
+ null,
+ opCtx != null && opCtx.skipStore(),
+ opCtx != null && opCtx.skipReadThrough(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
+ opCtx != null && opCtx.isKeepBinary(),
+ CU.isNearEnabled(ctx)
+ );
+
+ keys.add(key);
+ txEntries.add(txEntry);
+ expVers.add((GridCacheVersion)entry.version());
+ }
+
+ if (keys.isEmpty())
+ return new GridFinishedFuture<>(true);
+
+ // Acquire transactional lock future from concrete cache implementation. Use txLockAsync which
+ // delegates to cache-specific lockAllAsync implementations for distributed caches.
+ long timeout = tx.remainingTime();
+
+ IgniteInternalFuture<Boolean> lockFut = txLockAsync(keys,
+ timeout,
+ waitTimeout,
+ tx,
+ /*isRead*/true,
+ /*retval*/false,
+ tx.isolation(),
+ /*invalidate*/false,
+ /*createTtl*/0L,
+ /*accessTtl*/0L);
+
+ IgniteInternalFuture<Boolean> res = new GridEmbeddedFuture<>(
+ lockFut,
+ (locked, ex) -> {
+ if (ex != null)
+ return new GridFinishedFuture<>(ex);
+
+ if (!locked) {
+ tx.removeAndUnlockTxEntries(txEntries);
+
+ return new GridFinishedFuture<>(false);
+ }
+
+ try {
+ for (int i = 0; i < txEntries.size(); i++) {
+ GridCacheEntryEx cached = txEntries.get(i).cached();
+ EntryGetResult getRes = cached.innerGetVersioned(
+ null,
+ tx,
+ /*update-metrics*/false,
+ /*event*/false,
+ null,
+ tx.resolveTaskName(),
+ null,
+ false,
+ null);
+
+ if (getRes == null || !expVers.get(i).equals(getRes.version())) {
+ tx.removeAndUnlockTxEntries(txEntries);
+
+ return new GridFinishedFuture<>(false);
+ }
+ }
+
+ return new GridFinishedFuture<>(true);
+ }
+ catch (IgniteCheckedException | GridCacheEntryRemovedException e) {
+ tx.removeAndUnlockTxEntries(txEntries);
+
+ return new GridFinishedFuture<>(e);
+ }
+ }
+ );
+
+ // Register this future in transaction's async-holder so that subsequent operations
+ // that call tx.txState().awaitLastFuture() will wait for it.
+ GridCacheAdapter.FutureHolder holder = tx.txState().lastAsyncFuture();
+
+ if (holder != null) {
+ holder.lock();
+
+ try {
+ holder.saveFuture(res);
+ }
+ finally {
+ holder.unlock();
+ }
+ }
+
+ return res;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean isLockedByThread(K key) {
A.notNull(key, "key");
@@ -4507,7 +4623,7 @@
@Override public Boolean call() throws IgniteCheckedException {
CacheOperationContext prevOpCtx = ctx.operationContextPerCall();
- ctx.operationContextPerCall(opCtx.keepBinary());
+ ctx.operationContextPerCall(opCtx.withKeepBinary());
try {
return invoke((K)key, new AtomicReadRepairEntryProcessor<>(correctedVal, primVer)).get();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
index a82a8a9..d38fc3d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProcessor.java
@@ -217,6 +217,7 @@
import static org.apache.ignite.internal.IgniteComponentType.JTA;
import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isNearEnabled;
import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isPersistentCache;
+import static org.apache.ignite.internal.processors.cache.ValidationOnNodeJoinUtils.isAffinityConfigurationMdcSafe;
import static org.apache.ignite.internal.processors.cache.ValidationOnNodeJoinUtils.validateHashIdResolvers;
import static org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtLocalPartition.DFLT_CACHE_REMOVE_ENTRIES_TTL;
import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
@@ -1136,6 +1137,8 @@
cache.onKernalStart();
+ registerMdcMetricsIfNeeded(cache);
+
if (ctx.events().isRecordable(EventType.EVT_CACHE_STARTED))
ctx.events().addEvent(EventType.EVT_CACHE_STARTED);
@@ -1144,6 +1147,19 @@
cache.configuration().getCacheMode() + ']');
}
+ /** */
+ private void registerMdcMetricsIfNeeded(GridCacheAdapter<?, ?> cache) {
+ if (ctx.clientNode())
+ return;
+
+ if (ctx.discovery().localNode() == null || ctx.discovery().localNode().dataCenterId() == null)
+ return;
+
+ cache.metrics0().registerAffinityConfigurationSafeMetric(isAffinityConfigurationMdcSafe(cache.configuration()));
+
+ cache.metrics0().registerPartitionDistributionSafeMetric();
+ }
+
/**
* @param cache Cache to stop.
* @param cancel Cancel flag.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
index 82ac5cf..21c1fa3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheProxyImpl.java
@@ -31,7 +31,6 @@
import javax.cache.processor.EntryProcessorResult;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.CacheEntry;
-import org.apache.ignite.cache.CacheInterceptor;
import org.apache.ignite.cache.CacheMetrics;
import org.apache.ignite.cache.CachePeekMode;
import org.apache.ignite.cache.affinity.Affinity;
@@ -252,26 +251,13 @@
}
/** {@inheritDoc} */
- @Override public GridCacheProxyImpl<K, V> setSkipStore(boolean skipStore) {
+ @Override public GridCacheProxyImpl<K, V> withSkipStore() {
CacheOperationContext prev = gate.enter(opCtx);
try {
- if (opCtx != null && opCtx.skipStore() == skipStore)
- return this;
+ CacheOperationContext newOpCtx = CacheOperationContext.of(opCtx).withSkipStore();
- return new GridCacheProxyImpl<>(ctx, delegate,
- opCtx != null ? opCtx.setSkipStore(skipStore) :
- new CacheOperationContext(
- skipStore,
- false,
- false,
- null,
- false,
- null,
- false,
- null,
- null,
- false));
+ return newOpCtx == opCtx ? this : new GridCacheProxyImpl<>(ctx, delegate, newOpCtx);
}
finally {
gate.leave(prev);
@@ -283,22 +269,9 @@
CacheOperationContext prev = gate.enter(opCtx);
try {
- if (opCtx != null && opCtx.skipReadThrough())
- return this;
+ CacheOperationContext newOpCtx = CacheOperationContext.of(opCtx).withSkipReadThrough();
- return new GridCacheProxyImpl<>(ctx, delegate,
- opCtx != null ? opCtx.withSkipReadThrough() :
- new CacheOperationContext(
- false,
- true,
- false,
- null,
- false,
- null,
- false,
- null,
- null,
- false));
+ return newOpCtx == opCtx ? this : new GridCacheProxyImpl<>(ctx, delegate, newOpCtx);
}
finally {
gate.leave(prev);
@@ -309,20 +282,15 @@
@Override public GridCacheProxyImpl<K, V> withApplicationAttributes(Map<String, String> attrs) {
CacheOperationContext prev = gate.enter(opCtx);
+ CacheOperationContext newOpCtx;
+
try {
- return new GridCacheProxyImpl<>(ctx, delegate,
- opCtx != null ? opCtx.setApplicationAttributes(attrs) :
- new CacheOperationContext(
- false,
- false,
- false,
- null,
- false,
- null,
- false,
- null,
- attrs,
- false));
+ if (opCtx != null)
+ newOpCtx = opCtx.withApplicationAttributes(attrs);
+ else
+ newOpCtx = CacheOperationContext.builder().applicationAttributes(attrs).build();
+
+ return new GridCacheProxyImpl<>(ctx, delegate, newOpCtx);
}
finally {
gate.leave(prev);
@@ -331,22 +299,17 @@
/** {@inheritDoc} */
@Override public <K1, V1> GridCacheProxyImpl<K1, V1> keepBinary() {
- if (opCtx != null && opCtx.isKeepBinary())
- return (GridCacheProxyImpl<K1, V1>)this;
+ CacheOperationContext prev = gate.enter(opCtx);
- return new GridCacheProxyImpl<>((GridCacheContext<K1, V1>)ctx,
- (GridCacheAdapter<K1, V1>)delegate,
- opCtx != null ? opCtx.keepBinary() :
- new CacheOperationContext(false,
- false,
- true,
- null,
- false,
- null,
- false,
- null,
- null,
- false));
+ try {
+ CacheOperationContext newOpCtx = CacheOperationContext.of(opCtx).withKeepBinary();
+
+ return newOpCtx == opCtx ? (GridCacheProxyImpl<K1, V1>)this : new GridCacheProxyImpl<>((GridCacheContext<K1, V1>)ctx,
+ (GridCacheAdapter<K1, V1>)delegate, newOpCtx);
+ }
+ finally {
+ gate.leave(prev);
+ }
}
/** {@inheritDoc} */
@@ -1349,6 +1312,58 @@
}
/** {@inheritDoc} */
+ @Override public boolean lockTxEntry(CacheEntry<K, V> entry, long waitTimeout) throws IgniteCheckedException {
+ CacheOperationContext prev = gate.enter(opCtx);
+
+ try {
+ return delegate.lockTxEntry(entry, waitTimeout);
+ }
+ finally {
+ gate.leave(prev);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteInternalFuture<Boolean> lockTxEntryAsync(CacheEntry<K, V> entry, long waitTimeout) {
+ CacheOperationContext prev = gate.enter(opCtx);
+
+ try {
+ return delegate.lockTxEntryAsync(entry, waitTimeout);
+ }
+ finally {
+ gate.leave(prev);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean lockTxEntries(Collection<CacheEntry<K, V>> entries, long waitTimeout)
+ throws IgniteCheckedException {
+ CacheOperationContext prev = gate.enter(opCtx);
+
+ try {
+ return delegate.lockTxEntries(entries, waitTimeout);
+ }
+ finally {
+ gate.leave(prev);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteInternalFuture<Boolean> lockTxEntriesAsync(
+ Collection<CacheEntry<K, V>> entries,
+ long waitTimeout
+ ) {
+ CacheOperationContext prev = gate.enter(opCtx);
+
+ try {
+ return delegate.lockTxEntriesAsync(entries, waitTimeout);
+ }
+ finally {
+ gate.leave(prev);
+ }
+ }
+
+ /** {@inheritDoc} */
@Override public boolean isLockedByThread(K key) {
CacheOperationContext prev = gate.enter(opCtx);
@@ -1585,46 +1600,15 @@
@Override public GridCacheProxyImpl<K, V> withExpiryPolicy(ExpiryPolicy plc) {
CacheOperationContext prev = gate.enter(opCtx);
- try {
- return new GridCacheProxyImpl<>(ctx, delegate,
- opCtx != null ? opCtx.withExpiryPolicy(plc) :
- new CacheOperationContext(
- false,
- false,
- false,
- plc,
- false,
- null,
- false,
- null,
- null,
- false));
- }
- finally {
- gate.leave(prev);
- }
- }
-
- /**
- * @return Cache with handle binary values during {@link CacheInterceptor} execution flag.
- */
- @Override public IgniteInternalCache<K, V> withKeepBinaryInInterceptor() {
- CacheOperationContext prev = gate.enter(opCtx);
+ CacheOperationContext newOpCtx;
try {
- return new GridCacheProxyImpl<>(ctx, delegate,
- opCtx != null ? opCtx.withKeepBinaryInInterceptor() :
- new CacheOperationContext(
- false,
- false,
- false,
- null,
- false,
- null,
- false,
- null,
- null,
- true));
+ if (opCtx != null)
+ newOpCtx = opCtx.withExpiryPolicy(plc);
+ else
+ newOpCtx = CacheOperationContext.builder().expiryPolicy(plc).build();
+
+ return new GridCacheProxyImpl<>(ctx, delegate, newOpCtx);
}
finally {
gate.leave(prev);
@@ -1636,18 +1620,23 @@
CacheOperationContext prev = gate.enter(opCtx);
try {
- return new GridCacheProxyImpl<>(ctx, delegate,
- new CacheOperationContext(
- false,
- false,
- false,
- null,
- true,
- null,
- false,
- null,
- null,
- false));
+ CacheOperationContext newOpCtx = CacheOperationContext.of(opCtx).withNoRetries();
+
+ return newOpCtx == opCtx ? this : new GridCacheProxyImpl<>(ctx, delegate, newOpCtx);
+ }
+ finally {
+ gate.leave(prev);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteInternalCache<K, V> withKeepBinaryInInterceptor() {
+ CacheOperationContext prev = gate.enter(opCtx);
+
+ try {
+ CacheOperationContext newOpCtx = CacheOperationContext.of(opCtx).withKeepBinaryInInterceptor();
+
+ return newOpCtx == opCtx ? this : new GridCacheProxyImpl<>(ctx, delegate, newOpCtx);
}
finally {
gate.leave(prev);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java
index 7c78a10..b18f4dd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheReturn.java
@@ -259,7 +259,8 @@
throw (UnregisteredBinaryTypeException)err;
}
- CacheInvokeResult res0 = err == null ? CacheInvokeResult.fromResult(res) : CacheInvokeResult.fromError(err);
+ CacheInvokeResult res0 = err == null ? CacheInvokeResult.fromResult(res)
+ : CacheInvokeResult.fromError(CU.prepareEntryProcessorError(err));
Object resKey = key0 != null ? key0 :
((keepBinary && key instanceof BinaryObject) ? key : CU.value(key, cctx, true));
@@ -367,7 +368,7 @@
for (CacheInvokeDirectResult res : invokeResCol) {
CacheInvokeResult<?> res0 = res.error() == null ?
CacheInvokeResult.fromResult(ctx.cacheObjectContext().unwrapBinaryIfNeeded(res.result(), true, false, null)) :
- CacheInvokeResult.fromError(res.error());
+ CacheInvokeResult.fromError(CU.prepareEntryProcessorError(res.error()));
map0.put(ctx.cacheObjectContext().unwrapBinaryIfNeeded(res.key(), true, false, null), res0);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
index 9437762..7f0b4d36 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheUtils.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.cache;
-import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -42,6 +41,7 @@
import javax.cache.integration.CacheLoader;
import javax.cache.integration.CacheWriter;
import javax.cache.integration.CacheWriterException;
+import javax.cache.processor.EntryProcessorException;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteCheckedException;
@@ -53,7 +53,6 @@
import org.apache.ignite.cache.CacheServerNotFoundException;
import org.apache.ignite.cache.QueryEntity;
import org.apache.ignite.cache.affinity.AffinityFunction;
-import org.apache.ignite.cache.affinity.AffinityKeyMapped;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
import org.apache.ignite.cache.store.CacheStoreSessionListener;
import org.apache.ignite.cluster.ClusterNode;
@@ -67,6 +66,8 @@
import org.apache.ignite.internal.IgniteClientDisconnectedCheckedException;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteNodeAttributes;
+import org.apache.ignite.internal.UnregisteredBinaryTypeException;
+import org.apache.ignite.internal.UnregisteredClassException;
import org.apache.ignite.internal.cluster.ClusterGroupEmptyCheckedException;
import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException;
@@ -178,6 +179,17 @@
return cheatCacheId != 0 && id == cheatCacheId;
}
+ /**
+ * Checks whether the separate lock wait timeout expires before the transaction timeout.
+ *
+ * @param waitTimeout Lock wait timeout. {@code 0} means that there is no separate lock wait timeout.
+ * @param timeout Transaction timeout. {@code 0} means that the transaction timeout is infinite.
+ * @return {@code True} if the separate lock wait timeout expires before the transaction timeout.
+ */
+ public static boolean isWaitTimeoutExpiresFirst(long waitTimeout, long timeout) {
+ return timeout >= 0 && waitTimeout != 0 && (timeout == 0 || timeout > waitTimeout);
+ }
+
/** System cache name. */
public static final String UTILITY_CACHE_NAME = "ignite-sys-cache";
@@ -2206,18 +2218,23 @@
}
/**
- * @param cls Class to get affinity field for.
- * @return Affinity field name or {@code null} if field name was not found.
+ * Prepares an entry processor error so it can be stored in a {@link CacheInvokeResult} and rethrown
+ * as-is by {@link CacheInvokeResult#get()}: an {@link UnregisteredClassException} or
+ * {@link UnregisteredBinaryTypeException} (which must propagate unwrapped) and an existing
+ * {@link EntryProcessorException} are returned unchanged; any other error is wrapped in an
+ * {@link EntryProcessorException}.
+ *
+ * @param err Error thrown by the entry processor.
+ * @return Prepared error to store in the cache invoke result.
*/
- public static String affinityFieldName(Class cls) {
- for (; cls != Object.class && cls != null; cls = cls.getSuperclass()) {
- for (Field f : cls.getDeclaredFields()) {
- if (f.getAnnotation(AffinityKeyMapped.class) != null)
- return f.getName();
- }
- }
+ public static Throwable prepareEntryProcessorError(Throwable err) {
+ if (err instanceof UnregisteredClassException || err instanceof UnregisteredBinaryTypeException)
+ return err;
- return null;
+ if (err instanceof EntryProcessorException)
+ return err;
+
+ return new EntryProcessorException(err);
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
index 629bb94..2ab4e3d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteCacheProxyImpl.java
@@ -272,7 +272,7 @@
/** {@inheritDoc} */
@Override public IgniteCacheProxy<K, V> cacheNoGate() {
- return new GatewayProtectedCacheProxy<>(this, new CacheOperationContext(), false);
+ return new GatewayProtectedCacheProxy<>(this, CacheOperationContext.instance(), false);
}
/**
@@ -282,7 +282,7 @@
if (cachedProxy != null)
return cachedProxy;
- cachedProxy = new GatewayProtectedCacheProxy<>(this, new CacheOperationContext(), true);
+ cachedProxy = new GatewayProtectedCacheProxy<>(this, CacheOperationContext.instance(), true);
return cachedProxy;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
index 678a822..f98849c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/IgniteInternalCache.java
@@ -223,10 +223,9 @@
public boolean skipStore();
/**
- * @param skipStore Skip store flag.
* @return New internal cache instance based on this one, but with skip store flag enabled.
*/
- public IgniteInternalCache<K, V> setSkipStore(boolean skipStore);
+ public IgniteInternalCache<K, V> withSkipStore();
/** @return New internal cache instance based on this one, but with skip read-through cache store flag enabled. */
public IgniteInternalCache<K, V> withSkipReadThrough();
@@ -1347,6 +1346,65 @@
public boolean isLocked(K key);
/**
+ * Acquires a transactional lock for the cached object represented by the given entry if the current cached version
+ * matches the entry version. This method works only in a {@link TransactionConcurrency#PESSIMISTIC} transaction.
+ *
+ * @param entry Entry whose key, value and version should be used.
+ * @param waitTimeout Timeout in milliseconds to wait for lock to be acquired
+ * ({@code 0} to use the transaction timeout, {@code -1} for immediate failure if
+ * lock cannot be acquired immediately).
+ * @return {@code True} if lock was acquired with the same entry version.
+ * @throws IgniteCheckedException If lock acquisition resulted in an error.
+ * @throws NullPointerException If entry is {@code null}.
+ */
+ public boolean lockTxEntry(CacheEntry<K, V> entry, long waitTimeout) throws IgniteCheckedException;
+
+ /**
+ * Acquires transactional locks for the cached objects represented by the given entries if all current cached
+ * versions match the corresponding entry versions. This method works only in a
+ * {@link TransactionConcurrency#PESSIMISTIC} transaction.
+ *
+ * @param entries Entries whose keys, values and versions should be used.
+ * @param waitTimeout Timeout in milliseconds to wait for locks to be acquired
+ * ({@code 0} to use the transaction timeout, {@code -1} for immediate failure if
+ * locks cannot be acquired immediately).
+ * @return {@code True} if all locks were acquired with the same entry versions.
+ * @throws IgniteCheckedException If lock acquisition resulted in an error.
+ * @throws NullPointerException If entries is {@code null}.
+ */
+ public boolean lockTxEntries(Collection<CacheEntry<K, V>> entries, long waitTimeout) throws IgniteCheckedException;
+
+ /**
+ * Asynchronously acquires a transactional lock for the cached object represented by the given entry if the current
+ * cached version matches the entry version. This method works only in a
+ * {@link TransactionConcurrency#PESSIMISTIC} transaction.
+ *
+ * @param entry Entry whose key, value and version should be used.
+ * @param waitTimeout Timeout in milliseconds to wait for lock to be acquired
+ * ({@code 0} to use the transaction timeout, {@code -1} for immediate failure if
+ * lock cannot be acquired immediately).
+ * @return Future that resolves to {@code true} if the lock was acquired and the versions matched, or to
+ * {@code false} otherwise.
+ * @throws NullPointerException If entry is {@code null}.
+ */
+ public IgniteInternalFuture<Boolean> lockTxEntryAsync(CacheEntry<K, V> entry, long waitTimeout);
+
+ /**
+ * Asynchronously acquires transactional locks for the cached objects represented by the given entries if all
+ * current cached versions match the corresponding entry versions. This method works only in a
+ * {@link TransactionConcurrency#PESSIMISTIC} transaction.
+ *
+ * @param entries Entries whose keys, values and versions should be used.
+ * @param waitTimeout Timeout in milliseconds to wait for locks to be acquired
+ * ({@code 0} to use the transaction timeout, {@code -1} for immediate failure if
+ * locks cannot be acquired immediately).
+ * @return Future that resolves to {@code true} if all locks were acquired and all versions matched, or to
+ * {@code false} otherwise.
+ * @throws NullPointerException If entries is {@code null}.
+ */
+ public IgniteInternalFuture<Boolean> lockTxEntriesAsync(Collection<CacheEntry<K, V>> entries, long waitTimeout);
+
+ /**
* Checks if current thread owns a lock on this key.
* <p>
* This is a local in-VM operation and does not involve any network trips
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ValidationOnNodeJoinUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ValidationOnNodeJoinUtils.java
index ac8d97b..16ea96c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ValidationOnNodeJoinUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ValidationOnNodeJoinUtils.java
@@ -35,6 +35,10 @@
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.cache.CacheRebalanceMode;
import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.cache.affinity.AffinityFunction;
+import org.apache.ignite.cache.affinity.rendezvous.ClusterNodeAttributeAffinityBackupFilter;
+import org.apache.ignite.cache.affinity.rendezvous.ClusterNodeAttributeColocatedBackupFilter;
+import org.apache.ignite.cache.affinity.rendezvous.MdcAffinityBackupFilter;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
import org.apache.ignite.cache.store.CacheStore;
import org.apache.ignite.cluster.ClusterNode;
@@ -56,6 +60,7 @@
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteBiPredicate;
import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.plugin.security.SecurityException;
import org.apache.ignite.spi.IgniteNodeValidationResult;
@@ -70,6 +75,7 @@
import static org.apache.ignite.cache.CacheRebalanceMode.SYNC;
import static org.apache.ignite.cache.CacheWriteSynchronizationMode.FULL_ASYNC;
import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_CONSISTENCY_CHECK_SKIPPED;
+import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_CENTER_ID;
import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_TX_AWARE_QUERIES_ENABLED;
import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_TX_SERIALIZABLE_ENABLED;
import static org.apache.ignite.internal.processors.cache.GridCacheUtils.isDefaultDataRegionPersistent;
@@ -632,6 +638,34 @@
}
/**
+ * Analyzes affinity settings of a provided {@link CacheConfiguration} to inspect if it provides guarantees
+ * that partitions of the cache will be spread across all datacenters presented in cluster.
+ *
+ * @return {@code true} if affinity settings guarantee spreading partitions across all datacenters and {@code false} otherwise.
+ */
+ static boolean isAffinityConfigurationMdcSafe(CacheConfiguration cc) {
+ if (cc.getCacheMode() == REPLICATED)
+ return true;
+
+ AffinityFunction affFunc = cc.getAffinity();
+
+ if (affFunc instanceof RendezvousAffinityFunction) {
+ IgniteBiPredicate<ClusterNode, List<ClusterNode>> filter = ((RendezvousAffinityFunction)affFunc).getAffinityBackupFilter();
+
+ if (filter instanceof ClusterNodeAttributeAffinityBackupFilter attrFilter) {
+ if (!F.asList(attrFilter.getAttributeNames()).contains(ATTR_DATA_CENTER_ID))
+ return false;
+ }
+
+ return filter instanceof MdcAffinityBackupFilter
+ || filter instanceof ClusterNodeAttributeColocatedBackupFilter
+ || filter instanceof ClusterNodeAttributeAffinityBackupFilter;
+ }
+
+ return true;
+ }
+
+ /**
* @param rmtNode Remote node to check.
* @param ctx Context.
* @return Data storage configuration
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheBinaryDataBagItem.java
similarity index 76%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java
rename to modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheBinaryDataBagItem.java
index 706d2c2..5c70e54 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheBinaryDataBagItem.java
@@ -22,18 +22,18 @@
import org.apache.ignite.plugin.extensions.communication.Message;
/** */
-public class BinaryMetadataVersionsData implements Message {
+public class CacheBinaryDataBagItem implements Message {
/** */
@Order(0)
- Map<Integer, BinaryMetadataVersionInfo> data;
+ Map<Integer, BinaryMetadataVersionInfo> meta;
/** */
- public BinaryMetadataVersionsData() {}
+ public CacheBinaryDataBagItem() {}
/**
- * @param data Data.
+ * @param meta Per-type binary metadata info.
*/
- public BinaryMetadataVersionsData(Map<Integer, BinaryMetadataVersionInfo> data) {
- this.data = Map.copyOf(data);
+ public CacheBinaryDataBagItem(Map<Integer, BinaryMetadataVersionInfo> meta) {
+ this.meta = Map.copyOf(meta);
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
index 8867e57..2e44c95 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/CacheObjectBinaryProcessorImpl.java
@@ -18,7 +18,6 @@
package org.apache.ignite.internal.processors.cache.binary;
import java.io.File;
-import java.io.Serializable;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.Collection;
@@ -116,9 +115,9 @@
import static org.apache.ignite.IgniteSystemProperties.IGNITE_WAIT_SCHEMA_UPDATE;
import static org.apache.ignite.IgniteSystemProperties.getBoolean;
import static org.apache.ignite.internal.GridComponent.DiscoveryDataExchangeType.BINARY_PROC;
+import static org.apache.ignite.internal.binary.BinaryUtils.affinityFieldName;
import static org.apache.ignite.internal.binary.BinaryUtils.mergeMetadata;
import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
-import static org.apache.ignite.internal.util.typedef.internal.CU.affinityFieldName;
/**
* Binary processor implementation.
@@ -1418,11 +1417,11 @@
}
/** */
- private IgniteNodeValidationResult validateBinaryMetadata(UUID rmtNodeId, BinaryMetadataVersionsData newNodeMeta) {
- if (newNodeMeta == null)
+ private IgniteNodeValidationResult validateBinaryMetadata(UUID rmtNodeId, CacheBinaryDataBagItem cacheBinaryItem) {
+ if (cacheBinaryItem == null)
return null;
- for (Map.Entry<Integer, BinaryMetadataVersionInfo> metaEntry : newNodeMeta.data.entrySet()) {
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> metaEntry : cacheBinaryItem.meta.entrySet()) {
if (!metadataLocCache.containsKey(metaEntry.getKey()))
continue;
@@ -1464,25 +1463,25 @@
res.put(e.getKey(), e.getValue());
}
- dataBag.addGridCommonData(BINARY_PROC.ordinal(), (Serializable)res);
+ dataBag.addGridCommonData(BINARY_PROC.ordinal(), new CacheBinaryDataBagItem(res));
}
}
/** {@inheritDoc} */
@Override public void collectJoiningNodeData(DiscoveryDataBag dataBag) {
- dataBag.addJoiningNodeData(BINARY_PROC.ordinal(), new BinaryMetadataVersionsData(metadataLocCache));
+ dataBag.addJoiningNodeData(BINARY_PROC.ordinal(), new CacheBinaryDataBagItem(metadataLocCache));
}
/** {@inheritDoc} */
@Override public void onJoiningNodeDataReceived(DiscoveryDataBag.JoiningNodeDiscoveryData data) {
- BinaryMetadataVersionsData newNodeMeta = data.joiningNodeData();
+ CacheBinaryDataBagItem cacheBinaryItem = data.joiningNodeData();
- if (newNodeMeta == null)
+ if (cacheBinaryItem == null)
return;
UUID joiningNode = data.joiningNodeId();
- for (Map.Entry<Integer, BinaryMetadataVersionInfo> metaEntry : newNodeMeta.data.entrySet()) {
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> metaEntry : cacheBinaryItem.meta.entrySet()) {
if (metadataLocCache.containsKey(metaEntry.getKey())) {
BinaryMetadataVersionInfo locMetaVerInfo = metadataLocCache.get(metaEntry.getKey());
@@ -1530,10 +1529,10 @@
/** {@inheritDoc} */
@Override public void onGridDataReceived(GridDiscoveryData data) {
- Map<Integer, BinaryMetadataVersionInfo> receivedData = (Map<Integer, BinaryMetadataVersionInfo>)data.commonData();
+ CacheBinaryDataBagItem cacheBinaryItem = data.commonData();
- if (receivedData != null) {
- for (Map.Entry<Integer, BinaryMetadataVersionInfo> e : receivedData.entrySet()) {
+ if (cacheBinaryItem != null && !F.isEmpty(cacheBinaryItem.meta)) {
+ for (Map.Entry<Integer, BinaryMetadataVersionInfo> e : cacheBinaryItem.meta.entrySet()) {
BinaryMetadataVersionInfo metaVerInfo = e.getValue();
BinaryMetadataVersionInfo locMetaVerInfo = new BinaryMetadataVersionInfo(metaVerInfo.metadata(),
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
index 8d33090..7586312 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedCacheAdapter.java
@@ -102,6 +102,7 @@
@Override public IgniteInternalFuture<Boolean> txLockAsync(
Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
IgniteTxLocalEx tx,
boolean isRead,
boolean retval,
@@ -112,7 +113,7 @@
) {
assert tx != null;
- return lockAllAsync(keys, timeout, tx, isInvalidate, isRead, retval, isolation, createTtl, accessTtl);
+ return lockAllAsync(keys, timeout, waitTimeout, tx, isInvalidate, isRead, retval, isolation, createTtl, accessTtl);
}
/** {@inheritDoc} */
@@ -122,6 +123,7 @@
// Return value flag is true because we choose to bring values for explicit locks.
return lockAllAsync(ctx.cacheKeysView(keys),
timeout,
+ timeout,
tx,
false,
false,
@@ -133,7 +135,8 @@
/**
* @param keys Keys to lock.
- * @param timeout Timeout.
+ * @param timeout Transaction timeout.
+ * @param waitTimeout Lock wait timeout.
* @param tx Transaction
* @param isInvalidate Invalidation flag.
* @param isRead Indicates whether value is read or written.
@@ -145,6 +148,7 @@
*/
protected abstract IgniteInternalFuture<Boolean> lockAllAsync(Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
@Nullable IgniteTxLocalEx tx,
boolean isInvalidate,
boolean isRead,
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
index fef4378..10d8795 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtLockFuture.java
@@ -34,6 +34,7 @@
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.NodeStoppingException;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheLockCandidates;
@@ -154,9 +155,12 @@
@GridToStringExclude
private LockTimeoutObject timeoutObj;
- /** Lock timeout. */
+ /** Transaction timeout. */
private final long timeout;
+ /** Lock wait timeout. */
+ private final long waitTimeout;
+
/** Transaction. */
private final GridDhtTxLocalAdapter tx;
@@ -201,7 +205,8 @@
* @param cnt Number of keys to lock.
* @param read Read flag.
* @param needReturnVal Need return value flag.
- * @param timeout Lock acquisition timeout.
+ * @param timeout Transaction timeout.
+ * @param waitTimeout Lock wait timeout.
* @param tx Transaction.
* @param threadId Thread ID.
* @param accessTtl TTL for read operation.
@@ -219,6 +224,7 @@
boolean read,
boolean needReturnVal,
long timeout,
+ long waitTimeout,
GridDhtTxLocalAdapter tx,
long threadId,
long createTtl,
@@ -241,6 +247,7 @@
this.read = read;
this.needReturnVal = needReturnVal;
this.timeout = timeout;
+ this.waitTimeout = waitTimeout;
this.tx = tx;
this.createTtl = createTtl;
this.accessTtl = accessTtl;
@@ -435,18 +442,21 @@
threadId,
lockVer,
null,
- timeout,
+ lockTimeout(),
/*reenter*/false,
inTx(),
implicitSingle(),
false
);
- if (c == null && timeout < 0) {
+ if (c == null && lockTimeout() < 0) {
if (log.isDebugEnabled())
log.debug("Failed to acquire lock with negative timeout: " + entry);
- onFailed();
+ if (CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout))
+ onComplete(false, false, false, false);
+ else
+ onFailed();
return null;
}
@@ -631,10 +641,13 @@
try {
CacheLockCandidates owners = entry.readyLock(lockVer);
- if (timeout < 0) {
+ if (lockTimeout() < 0) {
if (owners == null || !owners.hasCandidate(lockVer)) {
// We did not send any requests yet.
- onFailed();
+ if (CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout))
+ onComplete(false, false, false, false);
+ else
+ onFailed();
return;
}
@@ -749,6 +762,9 @@
this.err = err;
}
+ if (!success && err == null && CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout))
+ return onComplete(false, false, false, false);
+
return onComplete(success, err instanceof NodeStoppingException, true);
}
}
@@ -762,13 +778,26 @@
* @return {@code True} if complete by this operation.
*/
private synchronized boolean onComplete(boolean success, boolean stopping, boolean unlock) {
+ return onComplete(success, stopping, unlock, !success);
+ }
+
+ /**
+ * Completeness callback.
+ *
+ * @param success {@code True} if lock was acquired.
+ * @param stopping {@code True} if node is stopping.
+ * @param unlock {@code True} if locks should be released.
+ * @param rollback {@code True} if should rollback tx on failure.
+ * @return {@code True} if complete by this operation.
+ */
+ private synchronized boolean onComplete(boolean success, boolean stopping, boolean unlock, boolean rollback) {
if (log.isDebugEnabled())
log.debug("Received onComplete(..) callback [success=" + success + ", fut=" + this + ']');
if (isDone())
return false;
- if (!success && !stopping && unlock)
+ if (!success && !stopping && unlock && rollback)
undoLocks(true);
boolean set = false;
@@ -778,7 +807,7 @@
set = cctx.tm().setTxTopologyHint(tx.topologyVersionSnapshot());
- if (success)
+ if (!rollback)
tx.clearLockFuture(this);
}
@@ -821,7 +850,7 @@
readyLocks();
- if (timeout > 0 && !isDone()) { // Prevent memory leak if future is completed by call to readyLocks.
+ if (lockTimeout() > 0 && !isDone()) { // Prevent memory leak if future is completed by call to readyLocks.
timeoutObj = new LockTimeoutObject();
cctx.time().addTimeoutObject(timeoutObj);
@@ -1166,6 +1195,13 @@
}
/**
+ * @return Timeout value for this lock future.
+ */
+ private long lockTimeout() {
+ return CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout) ? waitTimeout : timeout;
+ }
+
+ /**
* Lock request timeout object.
*/
private class LockTimeoutObject extends GridTimeoutObjectAdapter {
@@ -1173,7 +1209,7 @@
* Default constructor.
*/
LockTimeoutObject() {
- super(timeout);
+ super(lockTimeout());
}
/** {@inheritDoc} */
@@ -1198,9 +1234,13 @@
clear();
}
- boolean releaseLocks = !(inTx() && cctx.tm().deadlockDetectionEnabled());
+ if (CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout))
+ onComplete(false, false, false, false);
+ else {
+ boolean releaseLocks = !(inTx() && cctx.tm().deadlockDetectionEnabled());
- onComplete(false, false, releaseLocks);
+ onComplete(false, false, releaseLocks);
+ }
}
/** {@inheritDoc} */
@@ -1219,7 +1259,7 @@
sb.append("Transaction tx=").append(tx.getClass().getSimpleName());
sb.append(" [xid=").append(tx.xid());
sb.append(", xidVer=").append(tx.xidVersion());
- sb.append(", nearXid=").append(tx.nearXidVersion().asIgniteUuid());
+ sb.append(", nearXid=").append(BinaryUtils.asIgniteUuid(tx.nearXidVersion()));
sb.append(", nearXidVer=").append(tx.nearXidVersion());
sb.append(", nearNodeId=").append(tx.nearNodeId());
sb.append(", label=").append(tx.label());
@@ -1245,7 +1285,7 @@
sb.append("key=").append(key).append(", owner=");
sb.append("[xid=").append(itx.xid()).append(", ");
sb.append("xidVer=").append(itx.xidVersion()).append(", ");
- sb.append("nearXid=").append(itx.nearXidVersion().asIgniteUuid()).append(", ");
+ sb.append("nearXid=").append(BinaryUtils.asIgniteUuid(itx.nearXidVersion())).append(", ");
sb.append("nearXidVer=").append(itx.nearXidVersion()).append(", ");
sb.append("label=").append(itx.label()).append(", ");
sb.append("nearNodeId=").append(candidate.otherNodeId()).append("]");
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
index 08da8d8..735da23 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java
@@ -721,6 +721,7 @@
@Override public IgniteInternalFuture<Boolean> lockAllAsync(
@Nullable Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
IgniteTxLocalEx txx,
boolean isInvalidate,
boolean isRead,
@@ -733,6 +734,7 @@
return lockAllAsyncInternal(
keys,
timeout,
+ waitTimeout,
txx,
isInvalidate,
isRead,
@@ -742,7 +744,7 @@
accessTtl,
opCtx != null && opCtx.skipStore(),
opCtx != null && opCtx.skipReadThrough(),
- opCtx != null && opCtx.isKeepBinaryInInterceptor(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
opCtx != null && opCtx.isKeepBinary());
}
@@ -750,7 +752,8 @@
* Acquires locks in partitioned cache.
*
* @param keys Keys to lock.
- * @param timeout Lock timeout.
+ * @param timeout Transaction timeout.
+ * @param waitTimeout Lock wait timeout.
* @param txx Transaction.
* @param isInvalidate Invalidate flag.
* @param isRead Read flag.
@@ -765,6 +768,7 @@
*/
public GridDhtFuture<Boolean> lockAllAsyncInternal(@Nullable Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
IgniteTxLocalEx txx,
boolean isInvalidate,
boolean isRead,
@@ -792,6 +796,7 @@
isRead,
retval,
timeout,
+ waitTimeout,
tx,
tx.threadId(),
createTtl,
@@ -976,6 +981,7 @@
req.txRead(),
req.needReturnValue(),
req.timeout(),
+ req.waitTimeout(),
tx,
req.threadId(),
req.createTtl(),
@@ -1058,6 +1064,7 @@
req.skipReadThrough(),
req.keepBinaryInInterceptor(),
req.keepBinary(),
+ req.waitTimeout(),
req.nearCache());
final GridDhtTxLocal t = tx;
@@ -1071,7 +1078,7 @@
e = U.unwrap(e);
// Transaction can be emptied by asynchronous rollback.
- assert e != null || !t.empty();
+ boolean lockAcquired = e == null && o != null && o.success() && !t.empty();
// Create response while holding locks.
final GridNearLockResponse resp = createLockReply(nearNode,
@@ -1079,7 +1086,8 @@
req,
t,
t.xidVersion(),
- e);
+ e,
+ lockAcquired);
assert !t.implicit() : t;
assert !t.onePhaseCommit() : t;
@@ -1104,15 +1112,18 @@
@Override public GridNearLockResponse apply(Boolean b, Exception e) {
if (e != null)
e = U.unwrap(e);
- else if (!b)
+ else if (!b && !CU.isWaitTimeoutExpiresFirst(req.waitTimeout(), req.timeout()))
e = new GridCacheLockTimeoutException(req.version());
+ boolean lockAcquired = e != null || b;
+
GridNearLockResponse res = createLockReply(nearNode,
entries,
req,
null,
mappedVer,
- e);
+ e,
+ lockAcquired);
sendLockReply(nearNode, null, req, res);
@@ -1140,7 +1151,8 @@
req,
tx,
tx != null ? tx.xidVersion() : req.version(),
- e);
+ e,
+ false);
sendLockReply(nearNode, null, req, res);
}
@@ -1197,6 +1209,7 @@
* @param tx Transaction.
* @param mappedVer Mapped version.
* @param err Error.
+ * @param lockAcquired {@code True} if requested locks were acquired.
* @return Response.
*/
private GridNearLockResponse createLockReply(
@@ -1205,7 +1218,8 @@
GridNearLockRequest req,
@Nullable GridDhtTxLocalAdapter tx,
GridCacheVersion mappedVer,
- Throwable err) {
+ Throwable err,
+ boolean lockAcquired) {
assert mappedVer != null;
assert tx == null || tx.xidVersion().equals(mappedVer);
@@ -1227,9 +1241,14 @@
clienRemapVer,
clienRemapVer != null);
+ res.lockAcquired(lockAcquired);
+
if (err == null) {
res.pending(localDhtPendingVersions(entries, mappedVer));
+ if (!lockAcquired)
+ return res;
+
// We have to add completed versions for cases when nearLocal and remote transactions
// execute concurrently.
IgnitePair<Collection<GridCacheVersion>> versPair = ctx.tm().versions(req.version());
@@ -1251,6 +1270,21 @@
GridCacheVersion ver = e.version();
+ boolean ownsLock = e.lockedBy(mappedVer) ||
+ ctx.mvcc().isRemoved(e.context(), mappedVer);
+
+ if (!ownsLock && CU.isWaitTimeoutExpiresFirst(req.waitTimeout(), req.timeout())) {
+ res.lockAcquired(false);
+
+ return res;
+ }
+
+ assert ownsLock || tx != null && tx.isRollbackOnly() :
+ "Entry does not own lock for tx [locNodeId=" + ctx.localNodeId() +
+ ", entry=" + e +
+ ", mappedVer=" + mappedVer + ", ver=" + ver +
+ ", tx=" + CU.txString(tx) + ", req=" + req + ']';
+
boolean ret = req.returnValue(i) || dhtVer == null || !dhtVer.equals(ver);
CacheObject val = null;
@@ -1268,14 +1302,6 @@
req.keepBinary());
}
- assert e.lockedBy(mappedVer) ||
- ctx.mvcc().isRemoved(e.context(), mappedVer) ||
- tx != null && tx.isRollbackOnly() :
- "Entry does not own lock for tx [locNodeId=" + ctx.localNodeId() +
- ", entry=" + e +
- ", mappedVer=" + mappedVer + ", ver=" + ver +
- ", tx=" + CU.txString(tx) + ", req=" + req + ']';
-
boolean filterPassed = false;
if (tx != null && tx.onePhaseCommit()) {
@@ -1631,11 +1657,14 @@
GridCacheMvccCandidate cand = null;
if (dhtVer == null) {
- cand = entry.localCandidateByNearVersion(ver, true);
+ cand = entry.localCandidateByNearVersion(ver, !forSavepoint);
if (cand != null)
dhtVer = cand.version();
else {
+ if (forSavepoint)
+ break;
+
if (log.isDebugEnabled())
log.debug("Failed to locate lock candidate based on dht or near versions [nodeId=" +
nodeId + ", ver=" + ver + ", unmap=" + unmap + ", keys=" + keys + ']');
@@ -1669,7 +1698,7 @@
// Note that we don't reorder completed versions here,
// as there is no point to reorder relative to the version
// we are about to remove.
- if (entry.removeLock(dhtVer)) {
+ if ((forSavepoint && cand == null) || entry.removeLock(dhtVer)) {
if (forSavepoint)
clearTxEntry(dhtVer, key);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
index 98c5802..a2befc5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxFinishFuture.java
@@ -473,7 +473,7 @@
if (isNull(cctx.discovery().getAlive(n.id()))) {
log.error("Unable to send message (node left topology): " + n);
- fut.onNodeLeft();
+ fut.onNodeLeft(n.id());
}
else {
cctx.tm().sendTransactionMessage(n, req, tx, tx.ioPolicy());
@@ -493,7 +493,7 @@
catch (IgniteCheckedException e) {
// Fail the whole thing.
if (e instanceof ClusterTopologyCheckedException)
- fut.onNodeLeft();
+ fut.onNodeLeft(n.id());
else {
if (msgLog.isDebugEnabled()) {
msgLog.debug("DHT finish fut, failed to send request dht [txId=" + tx.nearXidVersion() +
@@ -687,6 +687,40 @@
onDone(e);
}
+ /** */
+ private void onNodeLeft(UUID nodeId) {
+ // Cause in common case #onNodeLeft() completes with no error it`s necessary to send salvage message.
+ if (tx.storeWriteThrough()) {
+ Map<UUID, Collection<UUID>> txNodes = tx.transactionNodes();
+
+ if (txNodes != null) {
+ Collection<UUID> backups = txNodes.get(nodeId);
+
+ if (!F.isEmpty(backups)) {
+ GridDhtTxSalvageMessage salvageReq = null;
+
+ for (UUID backupId : backups) {
+ ClusterNode backup = cctx.discovery().node(backupId);
+
+ if (backup != null && !backup.isLocal()) {
+ if (salvageReq == null)
+ salvageReq = new GridDhtTxSalvageMessage(tx.nearXidVersion());
+
+ try {
+ cctx.io().send(backup, salvageReq, tx.ioPolicy());
+ }
+ catch (IgniteCheckedException e) {
+ U.error(log, "Failed to send " + GridDhtTxSalvageMessage.class.getName() + " message.", e);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ onNodeLeft();
+ }
+
/**
*/
void onNodeLeft() {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
index 93ec7a0..67b32d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocal.java
@@ -460,8 +460,12 @@
logTxFinishErrorSafe(log, commit, e);
// Treat heuristic exception as critical.
- if (X.hasCause(e, IgniteTxHeuristicCheckedException.class))
+ if (X.hasCause(e, IgniteTxHeuristicCheckedException.class)) {
+ if (storeWriteThrough() && local())
+ salvageTx();
+
cctx.kernalContext().failure().process(new FailureContext(FailureType.CRITICAL_ERROR, e));
+ }
err = e;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
index 625d59b..4c7e931 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxLocalAdapter.java
@@ -580,6 +580,7 @@
boolean skipReadThrough,
boolean keepBinaryInInterceptor,
boolean keepBinary,
+ long waitTimeout,
boolean nearCache
) {
try {
@@ -698,7 +699,8 @@
skipStore,
skipReadThrough,
keepBinaryInInterceptor,
- keepBinary);
+ keepBinary,
+ waitTimeout);
}
catch (IgniteCheckedException e) {
setRollbackOnly();
@@ -731,7 +733,8 @@
boolean skipStore,
boolean skipReadThrough,
boolean keepBinaryInInterceptor,
- boolean keepBinary) {
+ boolean keepBinary,
+ long waitTimeout) {
if (log.isDebugEnabled())
log.debug("Before acquiring transaction lock on keys [keys=" + passedKeys + ']');
@@ -753,6 +756,7 @@
IgniteInternalFuture<Boolean> fut = dhtCache.lockAllAsyncInternal(passedKeys,
timeout,
+ waitTimeout,
this,
isInvalidate(),
read,
@@ -767,20 +771,33 @@
return new GridEmbeddedFuture<>(
fut,
- new PLC1<GridCacheReturn>(ret) {
+ new PLC1<GridCacheReturn>(ret, true, !CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout)) {
@Override protected GridCacheReturn postLock(GridCacheReturn ret) throws IgniteCheckedException {
- if (log.isDebugEnabled())
- log.debug("Acquired transaction lock on keys: " + passedKeys);
+ assert fut.error() == null : "Lock future completed with an error: " + fut.error();
- postLockWrite(cacheCtx,
- passedKeys,
- ret,
- /*remove*/false,
- /*retval*/false,
- /*read*/read,
- accessTtl,
- CU.empty0(),
- /*computeInvoke*/false);
+ boolean success = Boolean.TRUE.equals(fut.get());
+
+ ret.success(success);
+
+ if (log.isDebugEnabled()) {
+ if (ret.success())
+ log.debug("Successfully acquired transaction lock on keys: " + passedKeys);
+ else
+ log.debug("Failed to acquire transaction lock on keys: " + passedKeys);
+ }
+
+ if (ret.success()) {
+ postLockWrite(cacheCtx,
+ passedKeys,
+ ret,
+ /*remove*/false,
+ /*retval*/false,
+ /*read*/read,
+ accessTtl,
+ CU.empty0(),
+ /*computeInvoke*/false,
+ /*skipIfLockLost*/CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout));
+ }
return ret;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxRemote.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxRemote.java
index e60041e..c2ad54b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxRemote.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxRemote.java
@@ -17,9 +17,9 @@
package org.apache.ignite.internal.processors.cache.distributed.dht;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.cache.processor.EntryProcessor;
@@ -226,12 +226,7 @@
/** {@inheritDoc} */
@Override public Collection<UUID> masterNodeIds() {
- Collection<UUID> res = new ArrayList<>(2);
-
- res.add(nearNodeId);
- res.add(nodeId);
-
- return res;
+ return List.of(nearNodeId, nodeId);
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxSalvageMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxSalvageMessage.java
new file mode 100644
index 0000000..ae2d071
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTxSalvageMessage.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.distributed.dht;
+
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.processors.cache.GridCacheMessage;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+
+/** Salvage tx. */
+public class GridDhtTxSalvageMessage extends GridCacheMessage {
+ /** */
+ @Order(0)
+ GridCacheVersion ver;
+
+ /** Empty constructor. */
+ public GridDhtTxSalvageMessage() {
+ // No-op.
+ }
+
+ /**
+ * @param ver Global transaction identifier within cluster, assigned by transaction coordinator.
+ */
+ public GridDhtTxSalvageMessage(GridCacheVersion ver) {
+ this.ver = ver;
+ }
+
+ /** Tx version. */
+ public GridCacheVersion version() {
+ return ver;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean addDeploymentInfo() {
+ return addDepInfo;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
index 0bc9007..4de175d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicCache.java
@@ -288,7 +288,8 @@
AtomicApplicationAttributesAwareRequest req
) {
if (req.applicationAttributes() != null)
- ctx.operationContextPerCall(new CacheOperationContext().setApplicationAttributes(req.applicationAttributes()));
+ ctx.operationContextPerCall(CacheOperationContext.builder().applicationAttributes(req.applicationAttributes())
+ .build());
try {
processNearAtomicUpdateRequest(nodeId, req.payload());
@@ -815,6 +816,7 @@
/** {@inheritDoc} */
@Override protected IgniteInternalFuture<Boolean> lockAllAsync(Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
@Nullable IgniteTxLocalEx tx,
boolean isInvalidate,
boolean isRead,
@@ -1062,7 +1064,7 @@
final CacheOperationContext opCtx = ctx.operationContextPerCall();
- if (opCtx != null && opCtx.hasDataCenterId()) {
+ if (opCtx != null && opCtx.dataCenterId() != null) {
assert conflictPutVals == null : conflictPutVals;
assert conflictRmvVals == null : conflictRmvVals;
@@ -1112,7 +1114,7 @@
opCtx != null && opCtx.recovery(),
opCtx != null && opCtx.noRetries() ? 1 : MAX_RETRIES,
opCtx != null ? opCtx.applicationAttributes() : null,
- opCtx != null && opCtx.isKeepBinaryInInterceptor());
+ opCtx != null && opCtx.keepBinaryInInterceptor());
if (async) {
return asyncOp(new CO<IgniteInternalFuture<Object>>() {
@@ -1255,7 +1257,7 @@
GridCacheDrInfo conflictPutVal = null;
GridCacheVersion conflictRmvVer = null;
- if (opCtx != null && opCtx.hasDataCenterId()) {
+ if (opCtx != null && opCtx.dataCenterId() != null) {
Byte dcId = opCtx.dataCenterId();
assert dcId != null;
@@ -1301,7 +1303,7 @@
opCtx != null && opCtx.recovery(),
opCtx != null && opCtx.noRetries() ? 1 : MAX_RETRIES,
opCtx != null ? opCtx.applicationAttributes() : null,
- opCtx != null && opCtx.isKeepBinaryInInterceptor()
+ opCtx != null && opCtx.keepBinaryInInterceptor()
);
}
else {
@@ -1325,7 +1327,7 @@
opCtx != null && opCtx.recovery(),
opCtx != null && opCtx.noRetries() ? 1 : MAX_RETRIES,
opCtx != null ? opCtx.applicationAttributes() : null,
- opCtx != null && opCtx.isKeepBinaryInInterceptor());
+ opCtx != null && opCtx.keepBinaryInInterceptor());
}
}
@@ -1355,7 +1357,7 @@
Collection<GridCacheVersion> drVers = null;
- if (opCtx != null && keys != null && opCtx.hasDataCenterId()) {
+ if (opCtx != null && keys != null && opCtx.dataCenterId() != null) {
assert conflictMap == null : conflictMap;
drVers = F.transform(keys, new C1<K, GridCacheVersion>() {
@@ -1385,7 +1387,7 @@
opCtx != null && opCtx.recovery(),
opCtx != null && opCtx.noRetries() ? 1 : MAX_RETRIES,
opCtx != null ? opCtx.applicationAttributes() : null,
- opCtx != null && opCtx.isKeepBinaryInInterceptor());
+ opCtx != null && opCtx.keepBinaryInInterceptor());
if (async) {
return asyncOp(new CO<IgniteInternalFuture<Object>>() {
@@ -2235,7 +2237,7 @@
throw e;
}
catch (Exception e) {
- curInvokeRes = CacheInvokeResult.fromError(e);
+ curInvokeRes = CacheInvokeResult.fromError(CU.prepareEntryProcessorError(e));
updated = old;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
index 47fa5e7..21aa24e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicAbstractUpdateFuture.java
@@ -917,7 +917,7 @@
CacheOperationContext prevOpCtx = cctx.operationContextPerCall();
if (appAttrs != null)
- cctx.operationContextPerCall(new CacheOperationContext().setApplicationAttributes(appAttrs));
+ cctx.operationContextPerCall(CacheOperationContext.builder().applicationAttributes(appAttrs).build());
try {
apply0(req, res);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
index af7f997..6c4217a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedCache.java
@@ -205,7 +205,7 @@
false,
opCtx != null && opCtx.skipStore(),
opCtx != null && opCtx.skipReadThrough(),
- opCtx != null && opCtx.isKeepBinaryInInterceptor(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
recovery,
readRepairStrategy,
needVer);
@@ -309,7 +309,7 @@
false,
opCtx != null && opCtx.skipStore(),
opCtx != null && opCtx.skipReadThrough(),
- opCtx != null && opCtx.isKeepBinaryInInterceptor(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
recovery,
readRepairStrategy,
needVer);
@@ -639,6 +639,7 @@
@Override public IgniteInternalFuture<Boolean> lockAllAsync(
Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
@Nullable IgniteTxLocalEx tx,
boolean isInvalidate,
boolean isRead,
@@ -659,11 +660,12 @@
isRead,
retval,
timeout,
+ waitTimeout,
createTtl,
accessTtl,
opCtx != null && opCtx.skipStore(),
opCtx != null && opCtx.skipReadThrough(),
- opCtx != null && opCtx.isKeepBinaryInInterceptor(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
opCtx != null && opCtx.isKeepBinary(),
opCtx != null && opCtx.recovery());
@@ -902,6 +904,7 @@
* @param txRead Tx read.
* @param retval Return value flag.
* @param timeout Lock timeout.
+ * @param waitTimeout Lock wait timeout.
* @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param skipStore Skip store flag.
@@ -919,6 +922,7 @@
final boolean txRead,
final boolean retval,
final long timeout,
+ final long waitTimeout,
final long createTtl,
final long accessTtl,
final boolean skipStore,
@@ -945,6 +949,7 @@
txRead,
retval,
timeout,
+ waitTimeout,
createTtl,
accessTtl,
skipStore,
@@ -968,6 +973,7 @@
txRead,
retval,
timeout,
+ waitTimeout,
createTtl,
accessTtl,
skipStore,
@@ -990,6 +996,7 @@
* @param txRead Tx read.
* @param retval Return value flag.
* @param timeout Lock timeout.
+ * @param waitTimeout Lock wait timeout.
* @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param skipStore Skip store flag.
@@ -1007,6 +1014,7 @@
final boolean txRead,
boolean retval,
final long timeout,
+ long waitTimeout,
final long createTtl,
final long accessTtl,
boolean skipStore,
@@ -1024,6 +1032,7 @@
txRead,
retval,
timeout,
+ waitTimeout,
tx,
threadId,
createTtl,
@@ -1077,7 +1086,7 @@
@Override public Exception apply(Boolean b, Exception e) {
if (e != null)
e = U.unwrap(e);
- else if (!b)
+ else if (!b && !CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout))
e = new GridCacheLockTimeoutException(ver);
return e;
@@ -1101,7 +1110,8 @@
skipStore,
skipReadThrough,
keepBinaryInInterceptor,
- keepBinary);
+ keepBinary,
+ waitTimeout);
return new GridDhtEmbeddedFuture<>(
new C2<GridCacheReturn, Exception, Exception>() {
@@ -1109,8 +1119,8 @@
Exception e) {
if (e != null)
e = U.unwrap(e);
-
- assert !tx.empty();
+ else if (ret != null && !ret.success())
+ e = new GridCacheLockTimeoutException(ver);
return e;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
index 1e322d8..e27d53a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/colocated/GridDhtColocatedLockFuture.java
@@ -142,9 +142,12 @@
@GridToStringExclude
private volatile LockTimeoutObject timeoutObj;
- /** Lock timeout. */
+ /** Transaction timeout. */
private final long timeout;
+ /** Lock wait timeout. */
+ private final long waitTimeout;
+
/** Transaction. */
@GridToStringExclude
private final GridNearTxLocal tx;
@@ -197,7 +200,8 @@
* @param tx Transaction.
* @param read Read flag.
* @param retval Flag to return value or not.
- * @param timeout Lock acquisition timeout.
+ * @param timeout Transaction timeout.
+ * @param waitTimeout Lock wait timeout.
* @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param skipStore Skip store flag.
@@ -211,6 +215,7 @@
boolean read,
boolean retval,
long timeout,
+ long waitTimeout,
long createTtl,
long accessTtl,
boolean skipStore,
@@ -229,6 +234,7 @@
this.read = read;
this.retval = retval;
this.timeout = timeout;
+ this.waitTimeout = waitTimeout;
this.createTtl = createTtl;
this.accessTtl = accessTtl;
this.skipStore = skipStore;
@@ -626,6 +632,9 @@
if (err != null)
success = false;
+ if (!success && err == null && CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout))
+ return onComplete(false, true, false);
+
return onComplete(success, true);
}
}
@@ -638,6 +647,18 @@
* @return {@code True} if complete by this operation.
*/
private boolean onComplete(boolean success, boolean distribute) {
+ return onComplete(success, distribute, !success);
+ }
+
+ /**
+ * Completeness callback.
+ *
+ * @param success {@code True} if lock was acquired.
+ * @param distribute {@code True} if need to distribute lock removal in case of failure.
+ * @param rollback {@code True} if should rollback tx on failure.
+ * @return {@code True} if complete by this operation.
+ */
+ private boolean onComplete(boolean success, boolean distribute, boolean rollback) {
if (log.isDebugEnabled()) {
log.debug("Received onComplete(..) callback [success=" + success + ", distribute=" + distribute +
", fut=" + this + ']');
@@ -646,13 +667,13 @@
if (!DONE_UPD.compareAndSet(this, 0, 1))
return false;
- if (!success)
+ if (!success && rollback)
undoLocks(distribute, true);
if (tx != null) {
cctx.tm().txContext(tx);
- if (success)
+ if (!rollback)
tx.clearLockFuture(this);
}
@@ -768,7 +789,7 @@
if (isDone()) // Possible due to async rollback.
return;
- if (timeout > 0) {
+ if (lockTimeout() > 0) {
timeoutObj = new LockTimeoutObject();
cctx.time().addTimeoutObject(timeoutObj);
@@ -1083,6 +1104,7 @@
isolation(),
isInvalidate(),
timeout,
+ waitTimeout,
mappedKeys.size(),
inTx() ? tx.size() : mappedKeys.size(),
inTx() && tx.syncMode() == FULL_SYNC,
@@ -1258,6 +1280,7 @@
read,
retval,
timeout,
+ waitTimeout,
createTtl,
accessTtl,
skipStore,
@@ -1478,6 +1501,13 @@
}
/**
+ * @return Timeout value for this lock future.
+ */
+ private long lockTimeout() {
+ return CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout) ? waitTimeout : timeout;
+ }
+
+ /**
* Lock request timeout object.
*/
private class LockTimeoutObject extends GridTimeoutObjectAdapter {
@@ -1485,7 +1515,7 @@
* Default constructor.
*/
LockTimeoutObject() {
- super(timeout);
+ super(lockTimeout());
}
/** Requested keys. */
@@ -1496,6 +1526,20 @@
if (log.isDebugEnabled())
log.debug("Timed out waiting for lock response: " + this);
+ if (CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout)) {
+ synchronized (GridDhtColocatedLockFuture.this) {
+ requestedKeys = requestedKeys0();
+
+ clear(); // Stop response processing.
+ }
+
+ synchronized (this) {
+ onComplete(false, true, false);
+ }
+
+ return;
+ }
+
if (inTx()) {
if (cctx.tm().deadlockDetectionEnabled()) {
synchronized (GridDhtColocatedLockFuture.this) {
@@ -1660,6 +1704,12 @@
return;
}
+ if (!res.lockAcquired()) {
+ onDone(false);
+
+ return;
+ }
+
if (res.clientRemapVersion() != null) {
assert cctx.kernalContext().clientNode();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
index 5c0dc84..e3c7b42 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/preloader/GridDhtPartitionsExchangeFuture.java
@@ -270,6 +270,7 @@
private final Map<ClusterNode, GridDhtPartitionsFullMessage> fullMsgs = new ConcurrentHashMap<>();
/** */
+ @SuppressWarnings("unused")
@GridToStringInclude
private volatile IgniteInternalFuture<?> partReleaseFut;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtLocalPartition.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtLocalPartition.java
index 1c56517..34ab379 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtLocalPartition.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtLocalPartition.java
@@ -1194,7 +1194,9 @@
while (true) {
long state = this.state.get();
- assert getPartState(state) != EVICTED;
+ GridDhtPartitionState partState = getPartState(state);
+
+ assert partState != EVICTED : partState;
if (this.state.compareAndSet(state, setSize(state, getSize(state) - 1)))
return;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
index 0a9b5a7..366f937 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearAtomicCache.java
@@ -594,6 +594,7 @@
/** {@inheritDoc} */
@Override protected IgniteInternalFuture<Boolean> lockAllAsync(Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
@Nullable IgniteTxLocalEx tx,
boolean isInvalidate,
boolean isRead,
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
index a5db4ea..2092389 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockFuture.java
@@ -124,13 +124,19 @@
/** Timed out flag. */
private volatile boolean timedOut;
+ /** Transaction lock timeout flag. */
+ private volatile boolean txLockTimedOut;
+
/** Timeout object. */
@GridToStringExclude
private volatile LockTimeoutObject timeoutObj;
- /** Lock timeout. */
+ /** Transaction timeout. */
private final long timeout;
+ /** Lock wait timeout. */
+ private final long waitTimeout;
+
/** Transaction. */
@GridToStringExclude
private final GridNearTxLocal tx;
@@ -182,7 +188,8 @@
* @param tx Transaction.
* @param read Read flag.
* @param retval Flag to return value or not.
- * @param timeout Lock acquisition timeout.
+ * @param timeout Transaction timeout.
+ * @param waitTimeout Lock wait timeout.
* @param createTtl TTL for create operation.
* @param accessTtl TTL for read operation.
* @param skipStore skipStore
@@ -198,6 +205,7 @@
boolean read,
boolean retval,
long timeout,
+ long waitTimeout,
long createTtl,
long accessTtl,
boolean skipStore,
@@ -217,6 +225,7 @@
this.read = read;
this.retval = retval;
this.timeout = timeout;
+ this.waitTimeout = waitTimeout;
this.createTtl = createTtl;
this.accessTtl = accessTtl;
this.skipStore = skipStore;
@@ -347,7 +356,7 @@
threadId,
lockVer,
topVer,
- timeout,
+ lockTimeout(),
!inTx(),
inTx(),
implicitSingleTx(),
@@ -362,11 +371,16 @@
entries.add(entry);
- if (c == null && timeout < 0) {
+ if (c == null && lockTimeout() < 0) {
if (log.isDebugEnabled())
log.debug("Failed to acquire lock with negative timeout: " + entry);
- onFailed(false);
+ if (CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout)) {
+ onComplete(false, true, false);
+ }
+ else {
+ onFailed(false);
+ }
return null;
}
@@ -696,7 +710,7 @@
log.debug("Received onDone(..) callback [success=" + success + ", err=" + err + ", fut=" + this + ']');
if (inTx() && cctx.tm().deadlockDetectionEnabled() &&
- (this.err instanceof IgniteTxTimeoutCheckedException || timedOut))
+ (this.err instanceof IgniteTxTimeoutCheckedException || txLockTimedOut))
return false;
// If locks were not acquired yet, delay completion.
@@ -709,6 +723,9 @@
if (err != null)
success = false;
+ if (!success && err == null && CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout))
+ return onComplete(false, true, false);
+
return onComplete(success, true);
}
@@ -720,6 +737,18 @@
* @return {@code True} if complete by this operation.
*/
private boolean onComplete(boolean success, boolean distribute) {
+ return onComplete(success, distribute, !success);
+ }
+
+ /**
+ * Completeness callback.
+ *
+ * @param success {@code True} if lock was acquired.
+ * @param distribute {@code True} if need to distribute lock removal in case of failure.
+ * @param rollback {@code True} if should rollback tx on failure.
+ * @return {@code True} if complete by this operation.
+ */
+ private boolean onComplete(boolean success, boolean distribute, boolean rollback) {
if (log.isDebugEnabled()) {
log.debug("Received onComplete(..) callback [success=" + success + ", distribute=" + distribute +
", fut=" + this + ']');
@@ -728,13 +757,13 @@
if (!DONE_UPD.compareAndSet(this, 0, 1))
return false;
- if (!success)
+ if (!success && rollback)
undoLocks(distribute, true);
if (tx != null) {
cctx.tm().txContext(tx);
- if (success)
+ if (!rollback)
tx.clearLockFuture(this);
}
@@ -798,7 +827,7 @@
if (isDone()) // Possible due to async rollback.
return;
- if (timeout > 0) {
+ if (lockTimeout() > 0) {
timeoutObj = new LockTimeoutObject();
cctx.time().addTimeoutObject(timeoutObj);
@@ -1069,6 +1098,7 @@
isolation(),
isInvalidate(),
timeout,
+ waitTimeout,
mappedKeys.size(),
inTx() ? tx.size() : mappedKeys.size(),
inTx() && tx.syncMode() == FULL_SYNC,
@@ -1220,6 +1250,9 @@
return false;
}
+ if (!res.lockAcquired())
+ return false;
+
if (log.isDebugEnabled())
log.debug("Acquired lock for local DHT mapping [locId=" + cctx.nodeId() +
", mappedKeys=" + mappedKeys + ", fut=" + GridNearLockFuture.this + ']');
@@ -1398,6 +1431,13 @@
}
/**
+ * @return Timeout value for this lock future.
+ */
+ private long lockTimeout() {
+ return CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout) ? waitTimeout : timeout;
+ }
+
+ /**
* Lock request timeout object.
*/
private class LockTimeoutObject extends GridTimeoutObjectAdapter {
@@ -1405,7 +1445,7 @@
* Default constructor.
*/
LockTimeoutObject() {
- super(timeout);
+ super(lockTimeout());
}
/** Requested keys. */
@@ -1418,6 +1458,22 @@
timedOut = true;
+ if (CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout)) {
+ synchronized (GridNearLockFuture.this) {
+ requestedKeys = requestedKeys0();
+
+ clear(); // Stop response processing.
+ }
+
+ synchronized (this) {
+ onComplete(false, true, false);
+ }
+
+ return;
+ }
+
+ txLockTimedOut = true;
+
if (inTx()) {
if (cctx.tm().deadlockDetectionEnabled()) {
synchronized (GridNearLockFuture.this) {
@@ -1579,6 +1635,12 @@
return;
}
+ if (!res.lockAcquired()) {
+ onDone(false);
+
+ return;
+ }
+
if (res.clientRemapVersion() != null) {
assert cctx.kernalContext().clientNode();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
index c976f22..46fae24 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockRequest.java
@@ -79,6 +79,10 @@
@Order(7)
String txLbl;
+ /** Lock wait timeout. */
+ @Order(8)
+ long waitTimeout;
+
/**
* Empty constructor.
*/
@@ -98,7 +102,8 @@
* @param retVal Return value flag.
* @param isolation Transaction isolation.
* @param isInvalidate Invalidation flag.
- * @param timeout Lock timeout.
+ * @param timeout Transaction timeout.
+ * @param waitTimeout Lock wait timeout.
* @param keyCnt Number of keys.
* @param txSize Expected transaction size.
* @param syncCommit Synchronous commit flag.
@@ -123,6 +128,7 @@
TransactionIsolation isolation,
boolean isInvalidate,
long timeout,
+ long waitTimeout,
int keyCnt,
int txSize,
boolean syncCommit,
@@ -162,6 +168,7 @@
this.taskNameHash = taskNameHash;
this.createTtl = createTtl;
this.accessTtl = accessTtl;
+ this.waitTimeout = waitTimeout;
this.txLbl = txLbl;
@@ -208,6 +215,13 @@
}
/**
+ * @return Lock wait timeout.
+ */
+ public long waitTimeout() {
+ return waitTimeout;
+ }
+
+ /**
* @return Topology version.
*/
@Override public AffinityTopologyVersion topologyVersion() {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
index 043e477..b179d09 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearLockResponse.java
@@ -68,6 +68,10 @@
@Order(6)
boolean compatibleRemapVer;
+ /** {@code True} if requested locks were acquired. */
+ @Order(7)
+ boolean lockAcquired = true;
+
/**
* Empty constructor.
*/
@@ -125,6 +129,20 @@
}
/**
+ * @return {@code True} if requested locks were acquired.
+ */
+ public boolean lockAcquired() {
+ return lockAcquired;
+ }
+
+ /**
+ * @param lockAcquired {@code True} if requested locks were acquired.
+ */
+ public void lockAcquired(boolean lockAcquired) {
+ this.lockAcquired = lockAcquired;
+ }
+
+ /**
* @return Pending versions that are less than {@link #version()}.
*/
public Collection<GridCacheVersion> pending() {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
index 757cc77..c59b3a5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearPessimisticTxPrepareFuture.java
@@ -378,7 +378,8 @@
GridNearTxPrepareRequest req = createRequest(txNodes,
m,
timeout,
- m.reads(),
+ // Read entries do not make sense in the prepare phase for pessimistic transactions.
+ List.of(),
m.writes());
final MiniFuture fut = new MiniFuture(m, ++miniId);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
index 7a631f0..7074bda 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTransactionalCache.java
@@ -133,7 +133,7 @@
final boolean skipStore = opCtx != null && opCtx.skipStore();
final boolean skipReadThrough = opCtx != null && opCtx.skipReadThrough();
- boolean keepBinaryInInterceptor = opCtx != null && opCtx.isKeepBinaryInInterceptor();
+ boolean keepBinaryInInterceptor = opCtx != null && opCtx.keepBinaryInInterceptor();
if (tx != null && !tx.implicit() && !skipTx) {
return asyncOp(tx, new AsyncOp<Map<K, V>>(keys) {
@@ -289,6 +289,7 @@
@Override protected IgniteInternalFuture<Boolean> lockAllAsync(
Collection<KeyCacheObject> keys,
long timeout,
+ long waitTimeout,
IgniteTxLocalEx tx,
boolean isInvalidate,
boolean isRead,
@@ -305,11 +306,12 @@
isRead,
retval,
timeout,
+ waitTimeout,
createTtl,
accessTtl,
opCtx != null && opCtx.skipStore(),
opCtx != null && opCtx.skipReadThrough(),
- opCtx != null && opCtx.isKeepBinaryInInterceptor(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
opCtx != null && opCtx.isKeepBinary(),
opCtx != null && opCtx.recovery());
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
index 307bdad..6e8c249 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxFinishFuture.java
@@ -40,6 +40,7 @@
import org.apache.ignite.internal.processors.cache.distributed.GridDistributedTxMapping;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxFinishRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxFinishResponse;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxSalvageMessage;
import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.tracing.MTC;
@@ -983,6 +984,7 @@
});
GridDhtTxFinishRequest req = checkCommittedRequest(mini.futureId(), true);
+ GridDhtTxSalvageMessage salvageReq = null;
for (UUID backupId : backups) {
ClusterNode backup = cctx.discovery().node(backupId);
@@ -996,6 +998,13 @@
else {
try {
cctx.io().send(backup, req, tx.ioPolicy());
+
+ if (tx.storeWriteThrough()) {
+ if (salvageReq == null)
+ salvageReq = new GridDhtTxSalvageMessage(tx.xidVersion());
+
+ cctx.io().send(backup, salvageReq, tx.ioPolicy());
+ }
}
catch (ClusterTopologyCheckedException ignored) {
mini.onNodeLeft(backupId, discoThread);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
index acd858e..f0f4dda 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/GridNearTxLocal.java
@@ -623,7 +623,7 @@
ret,
opCtx != null && opCtx.skipStore(),
opCtx != null && opCtx.skipReadThrough(),
- opCtx != null && opCtx.isKeepBinaryInInterceptor(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
keepBinary,
opCtx != null && opCtx.recovery(),
dataCenterId);
@@ -651,6 +651,7 @@
IgniteInternalFuture<Boolean> fut = cacheCtx.cache().txLockAsync(enlisted,
timeout,
+ timeout,
this,
/*read*/entryProc != null, // Needed to force load from store.
retval,
@@ -751,7 +752,7 @@
final Byte dataCenterId;
- if (opCtx != null && opCtx.hasDataCenterId()) {
+ if (opCtx != null && opCtx.dataCenterId() != null) {
assert drMap == null : drMap;
dataCenterId = opCtx.dataCenterId();
@@ -800,7 +801,7 @@
null,
opCtx != null && opCtx.skipStore(),
opCtx != null && opCtx.skipReadThrough(),
- opCtx != null && opCtx.isKeepBinaryInInterceptor(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
false,
keepBinary,
opCtx != null && opCtx.recovery(),
@@ -827,6 +828,7 @@
IgniteInternalFuture<Boolean> fut = cacheCtx.cache().txLockAsync(enlisted,
timeout,
+ timeout,
this,
/*read*/invokeVals != null, // Needed to force load from store.
retval,
@@ -1633,7 +1635,7 @@
final Byte dataCenterId;
- if (opCtx != null && opCtx.hasDataCenterId()) {
+ if (opCtx != null && opCtx.dataCenterId() != null) {
assert drMap == null : drMap;
dataCenterId = opCtx.dataCenterId();
@@ -1703,7 +1705,7 @@
drMap,
opCtx != null && opCtx.skipStore(),
opCtx != null && opCtx.skipReadThrough(),
- opCtx != null && opCtx.isKeepBinaryInInterceptor(),
+ opCtx != null && opCtx.keepBinaryInInterceptor(),
singleRmv,
keepBinary,
opCtx != null && opCtx.recovery(),
@@ -1737,6 +1739,7 @@
IgniteInternalFuture<Boolean> fut = cacheCtx.cache().txLockAsync(enlisted,
timeout,
+ timeout,
this,
false,
retval,
@@ -1931,6 +1934,7 @@
IgniteInternalFuture<Boolean> fut = cacheCtx.cache().txLockAsync(lockKeys,
timeout,
+ timeout,
this,
true,
true,
@@ -3234,6 +3238,23 @@
}
/**
+ * Removes transaction entries and releases their acquired transactional locks.
+ *
+ * @param entries Entries to remove and unlock.
+ */
+ public void removeAndUnlockTxEntries(Collection<IgniteTxEntry> entries) {
+ if (F.isEmpty(entries))
+ return;
+
+ for (IgniteTxEntry entry : entries) {
+ txState().removeEntry(entry.txKey());
+ removeEntryMappings(entry);
+ }
+
+ unlockTxEntries(entries);
+ }
+
+ /**
* @param entry Entry.
*/
private void removeEntryFromMappings(IgniteTxEntry entry) {
@@ -3294,7 +3315,16 @@
else if (cacheCtx.cache().isColocated()) {
UUID nodeId = entry.nodeId();
- if (nodeId == null || cctx.localNodeId().equals(nodeId))
+ if (nodeId == null) {
+ ClusterNode primary = cacheCtx.affinity().primaryByKey(entry.key(), topologyVersion());
+
+ if (primary == null)
+ continue;
+
+ nodeId = primary.id();
+ }
+
+ if (cctx.localNodeId().equals(nodeId))
colocatedLocKeys.computeIfAbsent(cacheCtx, k -> new ArrayList<>()).add(entry.key());
else {
colocatedRmtKeys
@@ -4223,6 +4253,7 @@
* @param skipReadThrough Skip read-through cache store flag.
* @param keepBinaryInInterceptor Handle binary in interceptor operation flag.
* @param keepBinary Keep binary flag.
+ * @param waitTimeout Lock wait timeout.
* @return Future with respond.
*/
public <K> IgniteInternalFuture<GridCacheReturn> lockAllAsync(GridCacheContext cacheCtx,
@@ -4234,7 +4265,8 @@
boolean skipStore,
boolean skipReadThrough,
boolean keepBinaryInInterceptor,
- boolean keepBinary) {
+ boolean keepBinary,
+ long waitTimeout) {
assert pessimistic();
try {
@@ -4261,6 +4293,7 @@
IgniteInternalFuture<Boolean> fut = cacheCtx.colocated().lockAllAsyncInternal(keys,
timeout,
+ waitTimeout,
this,
isInvalidate(),
read,
@@ -4275,10 +4308,20 @@
return new GridEmbeddedFuture<>(
fut,
- new PLC1<GridCacheReturn>(ret, false) {
- @Override protected GridCacheReturn postLock(GridCacheReturn ret) {
- if (log.isDebugEnabled())
- log.debug("Acquired transaction lock on keys: " + keys);
+ new PLC1<GridCacheReturn>(ret, false, !CU.isWaitTimeoutExpiresFirst(waitTimeout, timeout)) {
+ @Override protected GridCacheReturn postLock(GridCacheReturn ret) throws IgniteCheckedException {
+ assert fut.error() == null : "Lock future completed with an error: " + fut.error();
+
+ boolean success = Boolean.TRUE.equals(fut.get());
+
+ ret.success(success);
+
+ if (log.isDebugEnabled()) {
+ if (ret.success())
+ log.debug("Successfully acquired transaction lock on keys: " + keys);
+ else
+ log.debug("Failed to acquire transaction lock on keys: " + keys);
+ }
return ret;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/consistency/IgniteConsistencyViolationException.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/consistency/IgniteConsistencyViolationException.java
index 95c1a1e..de79781 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/consistency/IgniteConsistencyViolationException.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/near/consistency/IgniteConsistencyViolationException.java
@@ -20,11 +20,12 @@
import java.util.Set;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.util.future.GridCompoundFuture.SkipLoggingException;
/**
* Consistency violation exception.
*/
-public abstract class IgniteConsistencyViolationException extends IgniteCheckedException {
+public abstract class IgniteConsistencyViolationException extends IgniteCheckedException implements SkipLoggingException {
/**
* Inconsistent entries keys.
*/
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
index 849e871..c6e25c2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteSnapshotManager.java
@@ -765,7 +765,7 @@
* @param req Request on snapshot creation.
* @return Future which will be completed when a snapshot has been started.
*/
- private IgniteInternalFuture<SnapshotOperationResponse> initLocalSnapshotStartStage(SnapshotOperationRequest req) {
+ private IgniteInternalFuture<SnapshotOperationResponse> initLocalSnapshotStartStage(UUID ignored, SnapshotOperationRequest req) {
// Executed inside discovery notifier thread, prior to firing discovery custom event,
// so it is safe to set new snapshot task inside this method without synchronization.
if (curSnpOp != null) {
@@ -773,6 +773,14 @@
"Another snapshot operation in progress [req=" + req + ", curr=" + curSnpOp + ']'));
}
+ // Keeps the metrics on each server node.
+ if (!cctx.localNode().isClient()) {
+ if (clusterSnpFut == null)
+ clusterSnpFut = new ClusterSnapshotFuture(req.reqId, req.snpName, req.incremental() ? req.incrementIndex() : null);
+
+ lastFuture(req.incremental(), clusterSnpFut);
+ }
+
SnapshotOperation snpOp = new SnapshotOperation(req,
new SnapshotFileTree(cctx.kernalContext(), req.snapshotName(), req.snapshotPath()));
@@ -1253,7 +1261,7 @@
* @param endReq Snapshot creation end request.
* @return Future which will be completed when the snapshot will be finalized.
*/
- private IgniteInternalFuture<SnapshotOperationResponse> initLocalSnapshotEndStage(SnapshotOperationEndRequest endReq) {
+ private IgniteInternalFuture<SnapshotOperationResponse> initLocalSnapshotEndStage(UUID ignored, SnapshotOperationEndRequest endReq) {
SnapshotOperation snpOp = curSnpOp;
if (snpOp == null || !Objects.equals(endReq.requestId(), snpOp.request().requestId()))
@@ -2050,11 +2058,6 @@
snpFut0 = new ClusterSnapshotFuture(UUID.randomUUID(), name, incIdx);
clusterSnpFut = snpFut0;
-
- if (incremental)
- lastSeenIncSnpFut = snpFut0;
- else
- lastSeenSnpFut = snpFut0;
}
Set<String> cacheGrpNames0 = cacheGrpNames == null ? null : new HashSet<>(cacheGrpNames);
@@ -2131,17 +2134,18 @@
U.error(log, SNAPSHOT_FAILED_MSG, e);
- ClusterSnapshotFuture errSnpFut = new ClusterSnapshotFuture(name, e);
-
- if (incremental)
- lastSeenIncSnpFut = errSnpFut;
- else
- lastSeenSnpFut = errSnpFut;
-
return new IgniteFinishedFutureImpl<>(e);
}
}
+ /** Sets last seen snapshot future. */
+ private void lastFuture(boolean incremental, ClusterSnapshotFuture futToSet) {
+ if (incremental)
+ lastSeenIncSnpFut = futToSet;
+ else
+ lastSeenSnpFut = futToSet;
+ }
+
/** Writes a warning message if an incremental snapshot contains atomic caches. */
void warnAtomicCachesInIncrementalSnapshot(String snpName, int incIdx, Collection<String> cacheGrps) {
List<String> warnCaches = new ArrayList<>();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotCheckProcess.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotCheckProcess.java
index b6128615..2f19878 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotCheckProcess.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotCheckProcess.java
@@ -311,7 +311,7 @@
}
/** Phase 2 beginning. */
- private IgniteInternalFuture<SnapshotCheckResponse> validateParts(SnapshotCheckProcessRequest req) {
+ private IgniteInternalFuture<SnapshotCheckResponse> validateParts(UUID ignored, SnapshotCheckProcessRequest req) {
if (!req.nodes().contains(kctx.localNodeId()))
return new GridFinishedFuture<>();
@@ -477,7 +477,7 @@
}
/** Phase 1 beginning: prepare, collect and check local metas. */
- private IgniteInternalFuture<SnapshotCheckResponse> prepareAndCheckMetas(SnapshotCheckProcessRequest req) {
+ private IgniteInternalFuture<SnapshotCheckResponse> prepareAndCheckMetas(UUID ignored, SnapshotCheckProcessRequest req) {
if (!req.nodes().contains(kctx.localNodeId()) && clusterOpFuts.get(req.requestId()) == null)
return new GridFinishedFuture<>();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotRestoreProcess.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotRestoreProcess.java
index 531971a..77f56f4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotRestoreProcess.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotRestoreProcess.java
@@ -629,7 +629,7 @@
* @param req Request to prepare cache group restore from the snapshot.
* @return Result future.
*/
- private IgniteInternalFuture<SnapshotRestoreOperationResponse> prepare(SnapshotOperationRequest req) {
+ private IgniteInternalFuture<SnapshotRestoreOperationResponse> prepare(UUID ignored, SnapshotOperationRequest req) {
if (ctx.clientNode())
return new GridFinishedFuture<>();
@@ -912,7 +912,7 @@
* @param req Request.
* @return Future which will be completed when the preload ends.
*/
- private IgniteInternalFuture<Message> preload(SnapshotRestoreStartRequest req) {
+ private IgniteInternalFuture<Message> preload(UUID ignored, SnapshotRestoreStartRequest req) {
if (ctx.clientNode())
return new GridFinishedFuture<>();
@@ -1263,7 +1263,7 @@
* @param req Request.
* @return Result future.
*/
- private IgniteInternalFuture<Message> cacheStart(SnapshotRestoreStartRequest req) {
+ private IgniteInternalFuture<Message> cacheStart(UUID ignored, SnapshotRestoreStartRequest req) {
if (ctx.clientNode())
return new GridFinishedFuture<>();
@@ -1333,7 +1333,7 @@
* @param req Request.
* @return Result future.
*/
- private IgniteInternalFuture<Message> cacheStop(SnapshotRestoreStartRequest req) {
+ private IgniteInternalFuture<Message> cacheStop(UUID ignored, SnapshotRestoreStartRequest req) {
if (!U.isLocalNodeCoordinator(ctx.discovery()))
return new GridFinishedFuture<>();
@@ -1384,7 +1384,7 @@
* @param req Request ID.
* @return Result future.
*/
- private IgniteInternalFuture<Message> incrementalSnapshotRestore(Message req) {
+ private IgniteInternalFuture<Message> incrementalSnapshotRestore(UUID ignored, Message req) {
SnapshotRestoreContext opCtx0 = opCtx;
if (ctx.clientNode() || opCtx0 == null || !opCtx0.nodes().contains(ctx.localNodeId()))
@@ -1652,7 +1652,7 @@
* @param req Request.
* @return Result future.
*/
- private IgniteInternalFuture<Message> rollback(SnapshotRestoreStartRequest req) {
+ private IgniteInternalFuture<Message> rollback(UUID ignored, SnapshotRestoreStartRequest req) {
if (ctx.clientNode())
return new GridFinishedFuture<>();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/dump/CreateDumpFutureTask.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/dump/CreateDumpFutureTask.java
index 674b664..3918691 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/dump/CreateDumpFutureTask.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/dump/CreateDumpFutureTask.java
@@ -72,6 +72,8 @@
import org.apache.ignite.internal.util.GridConcurrentHashSet;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.lang.GridCloseableIterator;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.pagemem.PageIdAllocator.INDEX_PARTITION;
@@ -225,8 +227,10 @@
int grp = e.getKey();
for (File grpDumpDir : sft.cacheStorages(cctx.cache().cacheGroup(grp).config())) {
- if (!grpDumpDir.mkdirs())
- throw new IgniteCheckedException("Dump directory can't be created: " + grpDumpDir);
+ U.ensureDirectory(grpDumpDir, "directory for dump cache group", log);
+
+ if (!F.isEmpty(grpDumpDir.listFiles()))
+ throw new IgniteCheckedException("Dump directory not empty: " + grpDumpDir);
}
CacheGroupContext gctx = cctx.cache().cacheGroup(grp);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
index 48525f5..dd0d90b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/wal/reader/StandaloneGridKernalContext.java
@@ -103,6 +103,7 @@
import org.apache.ignite.internal.processors.tracing.NoopTracing;
import org.apache.ignite.internal.processors.tracing.Tracing;
import org.apache.ignite.internal.suggestions.GridPerformanceSuggestions;
+import org.apache.ignite.internal.thread.context.OperationContextDispatcher;
import org.apache.ignite.internal.util.IgniteExceptionRegistry;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -176,6 +177,9 @@
/** Marshaller. */
private final BinaryMarshaller marsh;
+ /** Operation context dispacther. */
+ private final OperationContextDispatcher opCtxDispatcher = new OperationContextDispatcher();
+
/**
* @param log Logger.
* @param ft Node file tree.
@@ -455,6 +459,11 @@
}
/** {@inheritDoc} */
+ @Override public OperationContextDispatcher operationContextDispatcher() {
+ return opCtxDispatcher;
+ }
+
+ /** {@inheritDoc} */
@Override public CacheObjectTransformerProcessor transformer() {
return transProc;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java
index b175df0..115fc73 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/store/GridCacheStoreManagerAdapter.java
@@ -964,6 +964,11 @@
lsnr.onSessionStart(locSes);
}
}
+ catch (RuntimeException e) {
+ U.error(log, "Exception raised during the notification of cache store session listeners: ", e);
+
+ throw e;
+ }
catch (Exception e) {
throw new IgniteCheckedException("Failed to start store session: " + e, e);
}
@@ -984,6 +989,14 @@
store.sessionEnd(!threwEx);
}
}
+ catch (RuntimeException e) {
+ U.error(log, "Exception raised during the notification of cache store session listeners: ", e);
+
+ if (!threwEx)
+ throw U.cast(e);
+ else
+ throw e;
+ }
catch (Exception e) {
if (!threwEx)
throw U.cast(e);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
index 193eb2a..9eb50bc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxAdapter.java
@@ -41,6 +41,7 @@
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.events.TransactionStateChangedEvent;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.managers.discovery.ConsistentIdMapper;
import org.apache.ignite.internal.managers.eventstorage.GridEventStorageManager;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
@@ -628,7 +629,7 @@
/**
* @return Finalization status.
*/
- @Override @Nullable public FinalizationStatus finalizationStatus() {
+ @Override public FinalizationStatus finalizationStatus() {
return finalizing;
}
@@ -693,7 +694,7 @@
/** {@inheritDoc} */
@Override public IgniteUuid xid() {
- return xidVer.asIgniteUuid();
+ return BinaryUtils.asIgniteUuid(xidVer);
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
index 392f37d..40dae25 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxHandler.java
@@ -59,6 +59,7 @@
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxPrepareResponse;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxRemote;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxSalvageMessage;
import org.apache.ignite.internal.processors.cache.distributed.dht.PartitionUpdateCountersMessage;
import org.apache.ignite.internal.processors.cache.distributed.dht.TransactionAttributesAwareRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtInvalidPartitionException;
@@ -223,6 +224,9 @@
ctx.io().addCacheHandler(GridDhtTxFinishRequest.class, (UUID nodeId, GridCacheMessage msg) ->
processDhtTxFinishRequest(nodeId, (GridDhtTxFinishRequest)msg));
+ ctx.io().addCacheHandler(GridDhtTxSalvageMessage.class, (UUID nodeId, GridCacheMessage msg) ->
+ processDhtTxSalvageRequest((GridDhtTxSalvageMessage)msg));
+
ctx.io().addCacheHandler(GridDhtTxOnePhaseCommitAckRequest.class, (UUID nodeId, GridCacheMessage msg) ->
processDhtTxOnePhaseCommitAckRequest(nodeId, (GridDhtTxOnePhaseCommitAckRequest)msg));
@@ -1342,6 +1346,16 @@
}
/**
+ * @param req Request.
+ */
+ private void processDhtTxSalvageRequest(GridDhtTxSalvageMessage req) {
+ for (IgniteInternalTx active : ctx.tm().activeTransactions()) {
+ if (active.nearXidVersion().equals(req.version()) && active instanceof GridDhtTxRemote)
+ ctx.tm().salvageTx(active);
+ }
+ }
+
+ /**
* @param nodeId Node ID.
* @param req Request.
*/
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
index cbb7365..bbc6e28 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxLocalAdapter.java
@@ -1090,6 +1090,36 @@
CacheEntryPredicate[] filter,
boolean computeInvoke
) throws IgniteCheckedException {
+ postLockWrite(cacheCtx, keys, ret, rmv, retval, read, accessTtl, filter, computeInvoke, false);
+ }
+
+ /**
+ * Post lock processing for put or remove.
+ *
+ * @param cacheCtx Context.
+ * @param keys Keys.
+ * @param ret Return value.
+ * @param rmv {@code True} if remove.
+ * @param retval Flag to return value or not.
+ * @param read {@code True} if read.
+ * @param accessTtl TTL for read operation.
+ * @param filter Filter to check entries.
+ * @param computeInvoke If {@code true} computes return value for invoke operation.
+ * @param skipIfLockLost Return unsuccessful result if a separate lock wait timeout has removed the lock.
+ * @throws IgniteCheckedException If error.
+ */
+ protected final void postLockWrite(
+ GridCacheContext cacheCtx,
+ Iterable<KeyCacheObject> keys,
+ GridCacheReturn ret,
+ boolean rmv,
+ boolean retval,
+ boolean read,
+ long accessTtl,
+ CacheEntryPredicate[] filter,
+ boolean computeInvoke,
+ boolean skipIfLockLost
+ ) throws IgniteCheckedException {
for (KeyCacheObject k : keys) {
IgniteTxEntry txEntry = entry(cacheCtx.txKey(k));
@@ -1101,7 +1131,15 @@
GridCacheEntryEx cached = txEntry.cached();
try {
- assert cached.detached() || cached.lockedLocally(xidVersion()) || isRollbackOnly() :
+ boolean ownsLock = cached.detached() || cached.lockedLocally(xidVersion());
+
+ if (!ownsLock && skipIfLockLost) {
+ ret.success(false);
+
+ return;
+ }
+
+ assert ownsLock || isRollbackOnly() :
"Transaction lock is not acquired [entry=" + cached + ", tx=" + this +
", nodeId=" + cctx.localNodeId() + ", threadId=" + threadId + ']';
@@ -1602,9 +1640,10 @@
/**
* @param arg Argument.
* @param commit Commit flag.
+ * @param rollback Rollback flag.
*/
- protected PLC1(T arg, boolean commit) {
- super(arg, commit);
+ protected PLC1(T arg, boolean commit, boolean rollback) {
+ super(arg, commit, rollback);
}
}
@@ -1635,13 +1674,16 @@
/** Commit flag. */
private final boolean commit;
+ /** Rollback when a lock is not acquired. */
+ private final boolean rollback;
+
/**
* Creates a Post-Lock closure that will pass the argument given to the {@code postLock} method.
*
* @param arg Argument for {@code postLock}.
*/
protected PostLockClosure1(T arg) {
- this(arg, true);
+ this(arg, true, true);
}
/**
@@ -1649,10 +1691,12 @@
*
* @param arg Argument for {@code postLock}.
* @param commit Flag indicating whether commit should be done after postLock.
+ * @param rollback Flag indicating whether rollback should be done if lock is not acquired.
*/
- protected PostLockClosure1(T arg, boolean commit) {
+ protected PostLockClosure1(T arg, boolean commit, boolean rollback) {
this.arg = arg;
this.commit = commit;
+ this.rollback = rollback;
}
/** {@inheritDoc} */
@@ -1670,7 +1714,7 @@
throw new GridClosureException(e);
}
- if (deadlockErr != null || !locked) {
+ if (deadlockErr != null || (!locked && rollback)) {
setRollbackOnly();
final GridClosureException ex = new GridClosureException(
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
index cd2704d..524ea82 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxManager.java
@@ -44,6 +44,7 @@
import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.binary.BinaryObjectException;
import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.TransactionConfiguration;
import org.apache.ignite.events.DiscoveryEvent;
import org.apache.ignite.failure.FailureContext;
@@ -80,6 +81,7 @@
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxLocal;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxOnePhaseCommitAckRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxRemote;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxSalvageMessage;
import org.apache.ignite.internal.processors.cache.distributed.dht.TransactionAttributesAwareRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.colocated.GridDhtColocatedLockFuture;
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtInvalidPartitionException;
@@ -1504,10 +1506,7 @@
* @return {@code True} if transaction read entries should be unlocked.
*/
private boolean unlockReadEntries(IgniteInternalTx tx) {
- if (tx.pessimistic())
- return !tx.readCommitted();
- else
- return tx.serializable();
+ return tx.pessimistic() || tx.serializable();
}
/**
@@ -3123,8 +3122,38 @@
", failedNodeId=" + evtNodeId + ']');
for (final IgniteInternalTx tx : activeTransactions()) {
- if ((tx.near() && !tx.local() && tx.originatingNodeId().equals(evtNodeId))
- || (tx.storeWriteThrough() && tx.masterNodeIds().contains(evtNodeId))) {
+ Map<UUID, Collection<UUID>> txNodes = tx.transactionNodes();
+
+ if (tx.storeWriteThrough() && txNodes != null
+ && tx.near() && txNodes.containsKey(evtNodeId)
+ && (tx.state() == PREPARING || tx.state() == PREPARED
+ || tx.state() == COMMITTING || tx.state() == COMMITTED)) {
+ // Send a message, tx is applied on near node and can be processed on backup if postponed.
+ sendTxSalvage(tx, evtNodeId);
+ }
+
+ if (tx.storeWriteThrough() && tx.masterNodeIds().contains(evtNodeId) && tx.eventNodeId().equals(evtNodeId))
+ salvageTx(tx, RECOVERY_FINISH);
+ else if (tx.storeWriteThrough() && !tx.masterNodeIds().contains(cctx.localNodeId())
+ && tx.nodeId().equals(evtNodeId) && tx.state() == PREPARED) {
+ // Delay a commit, on backup. It will be raised further after near or coord. node will confirm it.
+ // In modes different from FULL_SYNC, appropriate recovery message can never be raized.
+ // Approach with {@code IgniteTxImplicitSingleStateImpl.syncMode} can`t be used here because
+ // {@code IgniteTxRemoteStateAdapter#cacheIds} can be empty.
+ boolean fullSyncedOp = false;
+ for (IgniteTxEntry ent : tx.writeEntries()) {
+ if (cctx.cacheContext(ent.cacheId()).syncCommit()) {
+ fullSyncedOp = true;
+ break;
+ }
+ }
+
+ if (!fullSyncedOp)
+ cctx.time().schedule(() -> salvageTx(tx, RECOVERY_FINISH), 1000, -1);
+ }
+ else if ((tx.near() && !tx.local() && tx.originatingNodeId().equals(evtNodeId))
+ || (tx.storeWriteThrough() && tx.masterNodeIds().contains(evtNodeId)) &&
+ !tx.eventNodeId().equals(cctx.localNodeId())) {
// Invalidate transactions.
salvageTx(tx, RECOVERY_FINISH);
}
@@ -3167,6 +3196,41 @@
}
/**
+ * Salvage progress can be postponed in special case when {@link CacheConfiguration#setWriteThrough} is enabled
+ * and current node is backup. It required for eliminate situaltions when backup node read data before primary will
+ * continue with transaction commit.
+ *
+ * @see CacheConfiguration#setWriteThrough
+ */
+ private void sendTxSalvage(IgniteInternalTx tx, UUID evtNodeId) {
+ Collection<UUID> involvedNodes = tx.transactionNodes().get(evtNodeId);
+
+ if (involvedNodes != null) {
+ GridDhtTxSalvageMessage salvageReq = null;
+
+ for (UUID nodeId : involvedNodes) {
+ if (tx.masterNodeIds().contains(nodeId))
+ continue;
+
+ ClusterNode backupNode = cctx.discovery().node(nodeId);
+
+ if (backupNode != null && !backupNode.isLocal()) {
+ if (salvageReq == null)
+ salvageReq = new GridDhtTxSalvageMessage(tx.nearXidVersion());
+
+ try {
+ cctx.io().send(nodeId, salvageReq, tx.ioPolicy());
+ }
+ catch (IgniteCheckedException e) {
+ log.warning("Failed to send salvage message [failedNodeId=" + evtNodeId +
+ ", nodeId=" + nodeId + ']', e);
+ }
+ }
+ }
+ }
+ }
+
+ /**
* @param tx Tx.
* @param failedNode Failed node.
*/
@@ -3271,11 +3335,6 @@
originVer = ver;
this.nearVer = nearVer;
}
-
- /** {@inheritDoc} */
- @Override public short directType() {
- throw new UnsupportedOperationException("Near committed version container is not a message to send or serialize.");
- }
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateAdapter.java
index 6024801..d1826f7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateAdapter.java
@@ -33,7 +33,7 @@
*/
public abstract class IgniteTxRemoteStateAdapter implements IgniteTxRemoteState {
/** Active cache IDs. */
- private GridIntList activeCacheIds = new GridIntList();
+ private final GridIntList activeCacheIds = new GridIntList();
/** {@inheritDoc} */
@Override public boolean implicitSingle() {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateImpl.java
index 409cffa..7556efe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxRemoteStateImpl.java
@@ -40,11 +40,11 @@
public class IgniteTxRemoteStateImpl extends IgniteTxRemoteStateAdapter {
/** Read set. */
@GridToStringInclude
- protected Map<IgniteTxKey, IgniteTxEntry> readMap;
+ protected final Map<IgniteTxKey, IgniteTxEntry> readMap;
/** Write map. */
@GridToStringInclude
- protected Map<IgniteTxKey, IgniteTxEntry> writeMap;
+ protected final Map<IgniteTxKey, IgniteTxEntry> writeMap;
/**
* @param readMap Read map.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxStateImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxStateImpl.java
index 3577c11..0ae820a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxStateImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/transactions/IgniteTxStateImpl.java
@@ -167,10 +167,19 @@
/** {@inheritDoc} */
@Override public CacheWriteSynchronizationMode syncMode(GridCacheSharedContext cctx) {
+ return deriveSyncMode(cctx, activeCacheIds);
+ }
+
+ /**
+ * @param cctx Context.
+ * @param cacheIds Processed caches.
+ * @return Write synchronization mode.
+ */
+ public static CacheWriteSynchronizationMode deriveSyncMode(GridCacheSharedContext<?, ?> cctx, GridIntList cacheIds) {
CacheWriteSynchronizationMode syncMode = CacheWriteSynchronizationMode.FULL_ASYNC;
- for (int i = 0; i < activeCacheIds.size(); i++) {
- int cacheId = activeCacheIds.get(i);
+ for (int i = 0; i < cacheIds.size(); i++) {
+ int cacheId = cacheIds.get(i);
CacheWriteSynchronizationMode cacheSyncMode =
cctx.cacheContext(cacheId).config().getWriteSynchronizationMode();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionEx.java
index 9d1fe99..12a284a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/version/GridCacheVersionEx.java
@@ -22,7 +22,6 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import org.apache.ignite.cache.CacheEntryVersion;
-import org.apache.ignite.internal.Order;
/**
* Extended cache version which also has additional DR version.
@@ -32,7 +31,6 @@
private static final long serialVersionUID = 0L;
/** DR version. */
- @Order(0)
GridCacheVersion drVer;
/**
@@ -86,6 +84,10 @@
return conflictVersion();
}
+ /** */
+ public void conflictVersion(GridCacheVersion drVer) {
+ this.drVer = drVer;
+ }
/** {@inheritDoc} */
@Override public void readExternal(ObjectInput in) throws IOException {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java
index 1f71cb1..0a573ff 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/BaselineTopology.java
@@ -39,10 +39,12 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_CENTER_ID;
+
/**
* BaselineTopology represents a set of "database nodes" - nodes responsible for holding persistent-enabled caches
* and persisting their information to durable storage.
- *
+ * <p/>
* Two major features BaselineTopology allows are:
* <ol>
* <li>Protection from conflicting updates.</li>
@@ -61,10 +63,10 @@
* [A,B] [C]
* | |
* (2)updates to both parts
- *
+ * <p/>
* After independent updates applied to both parts of cluster at point(2) node C should not be allowed to join
* [A,B] part.
- *
+ * <p/>
* The following algorithm makes sure node C will never join [A,B] part back:
* <ol>
* <li>
@@ -95,10 +97,10 @@
* <li>
* When BaselineTopology is set (e.g. on first activation) or recreated (e.g. with set-baseline command)
* its ID on all nodes is incremented by one.
- *
+ * <p/>
* So when cluster receives a join request with BaselineTopology it firstly compares joining node BlT ID with
* local BlT ID.
- *
+ * <p/>
* If joining node has a BaselineTopology with ID greater than one in cluster it means that BlT was changed
* more times there; therefore new node is not allowed to join the cluster.
* </li>
@@ -107,27 +109,27 @@
* Instead current set of online nodes from BaselineTopology is used to update {@link BaselineTopology#branchingPntHash}
* property of current BaselineTopology.
* Old value of the property is moved to {@link BaselineTopology#branchingHist} list.
- *
+ * <p/>
* If joining node and local BlT IDs are the same then cluster takes <b>branchingPntHash</b> of joining node
* and verifies that its local <b>branchingHist</b> contains that hash.
- *
+ * <p/>
* If joining node hash is not presented in cluster branching history list
* it means that joining node was activated independently of currently running cluster;
* therefore new node is not allowed to join the cluster.
- *
+ * <p/>
* If joining node hash is presented in the history, that it is safe to let the node join the cluster.
* </li>
* <li>
* When BaselineTopology is recreated (e.g. with set-baseline command) previous BaselineTopology is moved
* to BaselineHistory (consult source code of {@link GridClusterStateProcessor} for more details).
- *
+ * <p/>
* If cluster sees that joining node BlT ID is less than cluster BlT ID it looks up for BaselineHistory item
* for new node ID.
* Having this BaselineHistory item cluster verifies that branching history of the item contains
* branching point hash of joining node
* (similar check as in the case above with only difference that joining node BlT is compared against
* BaselineHistory item instead of BaselineTopology).
- *
+ * <p/>
* If new node branching point hash is found in the history than node is allowed to join;
* otherwise it is rejected.
* </li>
@@ -172,7 +174,7 @@
private final List<Long> branchingHist;
/**
- * @param nodeMap Map of node consistent ID to it's attributes.
+ * @param nodeMap Map of node consistent ID to its attributes.
*/
private BaselineTopology(Map<Object, Map<String, Object>> nodeMap, int id) {
this.id = id;
@@ -275,6 +277,20 @@
}
/**
+ * Calculates number of datacenters presented in current baseline.
+ *
+ * @return Number of datacenters presented in the baseline or {@code -1} if unknown.
+ */
+ public int numberOfDatacenters() {
+ Collection<Map<String, Object>> allNodesAttrs = nodeMap.values();
+
+ if (!allNodesAttrs.isEmpty() && allNodesAttrs.iterator().next().get(ATTR_DATA_CENTER_ID) != null)
+ return (int)allNodesAttrs.stream().map(m -> m.get(ATTR_DATA_CENTER_ID)).distinct().count();
+
+ return -1;
+ }
+
+ /**
*
*/
public List<BaselineNode> currentBaseline() {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterIdAndTag.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterIdAndTag.java
index 2b03f36..17c49f2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterIdAndTag.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterIdAndTag.java
@@ -20,20 +20,27 @@
import java.io.Serializable;
import java.util.Objects;
import java.util.UUID;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.plugin.extensions.communication.Message;
/**
* Container class to send cluster ID and tag in disco data and to write them atomically to metastorage.
*/
-public class ClusterIdAndTag implements Serializable {
+public class ClusterIdAndTag implements Serializable, Message {
/** */
private static final long serialVersionUID = 0L;
/** */
- private final UUID id;
+ @Order(0)
+ UUID id;
/** */
- private final String tag;
+ @Order(1)
+ String tag;
+
+ /** */
+ public ClusterIdAndTag() { }
/**
* @param id Cluster ID.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
index b7d78a9..3b75f2b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterProcessor.java
@@ -19,7 +19,6 @@
import java.io.Serializable;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.Timer;
@@ -76,6 +75,7 @@
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.metric.MetricRegistry;
import org.apache.ignite.mxbean.IgniteClusterMXBean;
+import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.spi.discovery.DiscoveryDataBag;
import org.apache.ignite.spi.discovery.DiscoveryDataBag.GridDiscoveryData;
import org.apache.ignite.spi.discovery.DiscoveryMetricsProvider;
@@ -101,9 +101,6 @@
*/
public class ClusterProcessor extends GridProcessorAdapter implements DistributedMetastorageLifecycleListener {
/** */
- private static final String ATTR_UPDATE_NOTIFIER_STATUS = "UPDATE_NOTIFIER_STATUS";
-
- /** */
private static final String CLUSTER_ID_TAG_KEY =
DistributedMetaStorage.IGNITE_INTERNAL_KEY_PREFIX + "cluster.id.tag";
@@ -465,42 +462,31 @@
/** {@inheritDoc} */
@Override public void collectJoiningNodeData(DiscoveryDataBag dataBag) {
- dataBag.addJoiningNodeData(CLUSTER_PROC.ordinal(), getDiscoveryData());
+ dataBag.addJoiningNodeData(CLUSTER_PROC.ordinal(), new ClusterUpdateNotifierDataBagItem(notifyEnabled.get()));
}
/** {@inheritDoc} */
@Override public void collectGridNodeData(DiscoveryDataBag dataBag) {
- dataBag.addNodeSpecificData(CLUSTER_PROC.ordinal(), getDiscoveryData());
+ dataBag.addNodeSpecificData(CLUSTER_PROC.ordinal(), new ClusterUpdateNotifierDataBagItem(notifyEnabled.get()));
- dataBag.addGridCommonData(CLUSTER_PROC.ordinal(), new ClusterIdAndTag(cluster.id(), cluster.tag()));
- }
-
- /**
- * @return Discovery data.
- */
- private Serializable getDiscoveryData() {
- HashMap<String, Object> map = new HashMap<>(2);
-
- map.put(ATTR_UPDATE_NOTIFIER_STATUS, notifyEnabled.get());
-
- return map;
+ dataBag.addGridCommonData(CLUSTER_PROC.ordinal(), (Message)new ClusterIdAndTag(cluster.id(), cluster.tag()));
}
/** {@inheritDoc} */
@Override public void onGridDataReceived(GridDiscoveryData data) {
- Map<UUID, Serializable> nodeSpecData = data.nodeSpecificData();
+ Map<UUID, ClusterUpdateNotifierDataBagItem> updateNotifierData = data.nodeSpecificData();
- if (nodeSpecData != null) {
- Boolean lstFlag = findLastFlag(nodeSpecData.values());
+ if (updateNotifierData != null) {
+ Boolean updateNotifierEnabled = findLastUpdateNotifierStatus(updateNotifierData.values());
- if (lstFlag != null)
- notifyEnabled.set(lstFlag);
+ if (updateNotifierEnabled != null)
+ notifyEnabled.set(updateNotifierEnabled);
}
- ClusterIdAndTag commonData = (ClusterIdAndTag)data.commonData();
+ ClusterIdAndTag idAndTag = data.commonData();
- if (commonData != null) {
- Serializable remoteClusterId = commonData.id();
+ if (idAndTag != null) {
+ UUID remoteClusterId = idAndTag.id();
if (remoteClusterId != null) {
if (locClusterId != null && !locClusterId.equals(remoteClusterId)) {
@@ -510,10 +496,10 @@
", local cluster ID: " + locClusterId);
}
- locClusterId = (UUID)remoteClusterId;
+ locClusterId = remoteClusterId;
}
- String remoteClusterTag = commonData.tag();
+ String remoteClusterTag = idAndTag.tag();
if (remoteClusterTag != null)
locClusterTag = remoteClusterTag;
@@ -521,21 +507,17 @@
}
/**
- * @param vals collection to seek through.
+ * @param notifierItems Collection of update notifiers statuses to seek through.
*/
- private Boolean findLastFlag(Collection<Serializable> vals) {
- Boolean flag = null;
+ private Boolean findLastUpdateNotifierStatus(Collection<ClusterUpdateNotifierDataBagItem> notifierItems) {
+ Boolean updateNotifierEnabled = null;
- for (Serializable ser : vals) {
- if (ser != null) {
- Map<String, Object> map = (Map<String, Object>)ser;
-
- if (map.containsKey(ATTR_UPDATE_NOTIFIER_STATUS))
- flag = (Boolean)map.get(ATTR_UPDATE_NOTIFIER_STATUS);
- }
+ for (ClusterUpdateNotifierDataBagItem notifierItem : notifierItems) {
+ if (notifierItem != null)
+ updateNotifierEnabled = notifierItem.notifierEnabled;
}
- return flag;
+ return updateNotifierEnabled;
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterUpdateNotifierDataBagItem.java
similarity index 68%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java
copy to modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterUpdateNotifierDataBagItem.java
index 706d2c2..a33ff48 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/ClusterUpdateNotifierDataBagItem.java
@@ -15,25 +15,22 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.cache.binary;
+package org.apache.ignite.internal.processors.cluster;
-import java.util.Map;
import org.apache.ignite.internal.Order;
import org.apache.ignite.plugin.extensions.communication.Message;
/** */
-public class BinaryMetadataVersionsData implements Message {
- /** */
+public class ClusterUpdateNotifierDataBagItem implements Message {
+ /** Update notifier enabled status. */
@Order(0)
- Map<Integer, BinaryMetadataVersionInfo> data;
+ boolean notifierEnabled;
/** */
- public BinaryMetadataVersionsData() {}
+ public ClusterUpdateNotifierDataBagItem() { }
- /**
- * @param data Data.
- */
- public BinaryMetadataVersionsData(Map<Integer, BinaryMetadataVersionInfo> data) {
- this.data = Map.copyOf(data);
+ /** @param notifierEnabled Update notifier enabled status. */
+ public ClusterUpdateNotifierDataBagItem(boolean notifierEnabled) {
+ this.notifierEnabled = notifierEnabled;
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java
index 337b4f5..3d9d20f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cluster/GridClusterStateProcessor.java
@@ -965,14 +965,16 @@
/** {@inheritDoc} */
@Override public void onGridDataReceived(DiscoveryDataBag.GridDiscoveryData data) {
- if (data.commonData() instanceof DiscoveryDataClusterState) {
+ Serializable commonData = data.commonData();
+
+ if (commonData instanceof DiscoveryDataClusterState) {
if (globalState != null && globalState.baselineTopology() != null)
//node with BaselineTopology is not allowed to join mixed cluster
// (where some nodes don't support BaselineTopology)
throw new IgniteException("Node with BaselineTopology cannot join" +
" mixed cluster running in compatibility mode");
- globalState = (DiscoveryDataClusterState)data.commonData();
+ globalState = (DiscoveryDataClusterState)commonData;
compatibilityMode = true;
@@ -981,7 +983,7 @@
return;
}
- BaselineStateAndHistoryData stateDiscoData = (BaselineStateAndHistoryData)data.commonData();
+ BaselineStateAndHistoryData stateDiscoData = (BaselineStateAndHistoryData)commonData;
if (stateDiscoData != null) {
DiscoveryDataClusterState state = stateDiscoData.globalState;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
index 489f13e..7291e63 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/continuous/GridContinuousProcessor.java
@@ -528,8 +528,7 @@
@Override public void onGridDataReceived(GridDiscoveryData data) {
if (immutableDiscoCustomMsg) {
if (data.commonData() != null) {
- ContinuousRoutinesCommonDiscoveryData commonData =
- (ContinuousRoutinesCommonDiscoveryData)data.commonData();
+ ContinuousRoutinesCommonDiscoveryData commonData = data.commonData();
for (ContinuousRoutineInfo routineInfo : commonData.startedRoutines) {
if (routinesInfo.routineExists(routineInfo.routineId))
@@ -542,11 +541,11 @@
}
}
else {
- Map<UUID, Serializable> nodeSpecData = data.nodeSpecificData();
+ Map<UUID, DiscoveryData> nodeSpecData = data.nodeSpecificData();
if (nodeSpecData != null) {
- for (Map.Entry<UUID, Serializable> e : nodeSpecData.entrySet())
- onDiscoveryDataReceivedMutable((DiscoveryData)e.getValue());
+ for (DiscoveryData val : nodeSpecData.values())
+ onDiscoveryDataReceivedMutable(val);
}
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
index 5f81792..6900102 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/DataStructuresProcessor.java
@@ -75,6 +75,7 @@
import org.apache.ignite.internal.systemview.ReentrantLockViewWalker;
import org.apache.ignite.internal.systemview.SemaphoreViewWalker;
import org.apache.ignite.internal.systemview.SetViewWalker;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.lang.GridPlainCallable;
import org.apache.ignite.internal.util.lang.IgniteClosureX;
import org.apache.ignite.internal.util.lang.IgniteInClosureX;
@@ -137,13 +138,13 @@
public static final String VOLATILE_GRP_NAME = DEFAULT_VOLATILE_DS_GROUP_NAME + "@" + VOLATILE_DATA_REGION_NAME;
/** */
- public static final String DEFAULT_DS_GROUP_NAME = "default-ds-group";
+ public static final String DEFAULT_DS_GROUP_NAME = CommonUtils.DEFAULT_DS_GROUP_NAME;
/** */
private static final String DS_CACHE_NAME_PREFIX = "datastructures_";
/** Atomics system cache name. */
- public static final String ATOMICS_CACHE_NAME = "ignite-sys-atomic-cache";
+ public static final String ATOMICS_CACHE_NAME = CommonUtils.ATOMICS_CACHE_NAME;
/** */
public static final String QUEUES_VIEW = metricName("ds", "queues");
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java
index 0ca9467..3f1456e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/datastructures/GridCacheQueueAdapter.java
@@ -433,18 +433,10 @@
if (opCtx != null && opCtx.isKeepBinary())
return (GridCacheQueueAdapter<V1>)this;
- opCtx = opCtx == null ? new CacheOperationContext(
- false,
- false,
- true,
- null,
- false,
- null,
- false,
- null,
- null,
- false)
- : opCtx.keepBinary();
+ if (opCtx == null)
+ opCtx = CacheOperationContext.builder().keepBinary(true).build();
+ else
+ opCtx = opCtx.withKeepBinary();
cctx.operationContextPerCall(opCtx);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/GridMarshallerMappingProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/GridMarshallerMappingProcessor.java
index 8946672..374ea7f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/GridMarshallerMappingProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/GridMarshallerMappingProcessor.java
@@ -326,34 +326,32 @@
/** {@inheritDoc} */
@Override public void collectJoiningNodeData(DiscoveryDataBag dataBag) {
- dataBag.addJoiningNodeData(MARSHALLER_PROC.ordinal(), new MarshallerMappingsData(marshallerCtx.getCachedMappings()));
+ dataBag.addJoiningNodeData(MARSHALLER_PROC.ordinal(), new MarshallerDataBagItem(marshallerCtx.getCachedMappings()));
}
/** {@inheritDoc} */
@Override public void collectGridNodeData(DiscoveryDataBag dataBag) {
if (!dataBag.commonDataCollectedFor(MARSHALLER_PROC.ordinal()))
- dataBag.addGridCommonData(MARSHALLER_PROC.ordinal(), marshallerCtx.getCachedMappings());
+ dataBag.addGridCommonData(MARSHALLER_PROC.ordinal(),
+ new MarshallerDataBagItem(marshallerCtx.getCachedMappings()));
}
/** {@inheritDoc} */
@Override public void onJoiningNodeDataReceived(DiscoveryDataBag.JoiningNodeDiscoveryData data) {
- MarshallerMappingsData mappingsData = data.joiningNodeData();
-
- processIncomingMappings(mappingsData.mappings);
+ processIncomingMappings(data.joiningNodeData());
}
/** {@inheritDoc} */
@Override public void onGridDataReceived(GridDiscoveryData data) {
- List<Map<Integer, MappedName>> mappings = (List<Map<Integer, MappedName>>)data.commonData();
-
- processIncomingMappings(mappings);
+ processIncomingMappings(data.commonData());
}
/**
- * @param mappings Incoming marshaller mappings.
+ * @param marshallerItem Incoming marshaller mappings wrapper.
*/
- private void processIncomingMappings(List<Map<Integer, MappedName>> mappings) {
- marshallerCtx.onMappingDataReceived(log, mappings);
+ private void processIncomingMappings(@Nullable MarshallerDataBagItem marshallerItem) {
+ if (marshallerItem != null)
+ marshallerCtx.onMappingDataReceived(log, marshallerItem.mappings());
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerMappingsData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerDataBagItem.java
similarity index 77%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerMappingsData.java
rename to modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerDataBagItem.java
index 2207b1c..9b9a0d8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerMappingsData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/marshaller/MarshallerDataBagItem.java
@@ -23,18 +23,21 @@
import org.apache.ignite.plugin.extensions.communication.Message;
/** */
-public class MarshallerMappingsData implements Message {
+public class MarshallerDataBagItem implements Message {
/** */
@Order(0)
List<Map<Integer, MappedName>> mappings;
/** */
- public MarshallerMappingsData() {}
+ public MarshallerDataBagItem() {}
- /**
- * @param mappings Mappings.
- */
- public MarshallerMappingsData(List<Map<Integer, MappedName>> mappings) {
+ /** @param mappings Mappings. */
+ public MarshallerDataBagItem(List<Map<Integer, MappedName>> mappings) {
this.mappings = mappings;
}
+
+ /** @return Mappings. */
+ public List<Map<Integer, MappedName>> mappings() {
+ return mappings;
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java
index 1362fec..ad9022f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/metastorage/persistence/DistributedMetaStorageImpl.java
@@ -958,7 +958,7 @@
lock.writeLock().lock();
try {
- DistributedMetaStorageClusterNodeData nodeData = (DistributedMetaStorageClusterNodeData)data.commonData();
+ DistributedMetaStorageClusterNodeData nodeData = data.commonData();
if (nodeData != null) {
if (nodeData.fullData != null) {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerNioListener.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerNioListener.java
index 3d6f6ab..4e1f32b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerNioListener.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerNioListener.java
@@ -40,6 +40,7 @@
import org.apache.ignite.internal.processors.platform.client.ClientConnectionContext;
import org.apache.ignite.internal.processors.platform.client.ClientStatus;
import org.apache.ignite.internal.thread.context.Scope;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridSpinBusyLock;
import org.apache.ignite.internal.util.nio.GridNioServerListenerAdapter;
import org.apache.ignite.internal.util.nio.GridNioSession;
@@ -63,7 +64,7 @@
public static final byte JDBC_CLIENT = 1;
/** Thin client handshake code. */
- public static final byte THIN_CLIENT = 2;
+ public static final byte THIN_CLIENT = CommonUtils.THIN_CLIENT;
/** Client types. */
public static final byte[] CLI_TYPES = {ODBC_CLIENT, JDBC_CLIENT, THIN_CLIENT};
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java
index 68af9df..808437e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerProcessor.java
@@ -194,7 +194,7 @@
for (int port = cliConnCfg.getPort(); port <= portTo && port <= 65535; port++) {
try {
- srv = GridNioServer.<ClientMessage>builder()
+ GridNioServer.Builder<ClientMessage> builder = GridNioServer.<ClientMessage>builder()
.address(hostAddr)
.port(port)
.listener(new ClientListenerNioListener(ctx, busyLock, cliConnCfg, metrics, newConnEnabled))
@@ -210,9 +210,11 @@
.filters(filters)
.directMode(true)
.idleTimeout(idleTimeout > 0 ? idleTimeout : Long.MAX_VALUE)
- .metricRegistry(mreg)
- .messageQueueSizeListener(msgQueueSizeLsnr)
- .build();
+ .messageQueueSizeListener(msgQueueSizeLsnr);
+
+ srv = U.setNioServerMetrics(builder, mreg).build();
+
+ U.registerNioServerMetrics(srv, filters, mreg);
ctx.ports().registerPort(port, IgnitePortProtocol.TCP, getClass());
@@ -492,7 +494,7 @@
throw new IgniteCheckedException("Failed to create client listener " +
"(SSL is enabled but factory is null). Check the ClientConnectorConfiguration");
- GridNioSslFilter sslFilter = new GridNioSslFilter(sslCtxFactory.create(),
+ GridNioSslFilter sslFilter = U.sslFilter(sslCtxFactory.create(),
true, ByteOrder.nativeOrder(), log, ctx.metric().registry(CLIENT_CONNECTOR_METRICS));
sslFilter.directMode(true);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerRequest.java
index d7006f7..2ee25e4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerRequest.java
@@ -17,12 +17,14 @@
package org.apache.ignite.internal.processors.odbc;
+import org.apache.ignite.internal.util.CommonUtils;
+
/**
* Client listener command request.
*/
public interface ClientListenerRequest {
/** Handshake request. */
- public static final int HANDSHAKE = 1;
+ public static final int HANDSHAKE = CommonUtils.HANDSHAKE;
/**
* @return Request ID.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerRequestHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerRequestHandler.java
index 6e08e5f..6278317 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerRequestHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientListenerRequestHandler.java
@@ -47,7 +47,6 @@
*/
void writeHandshake(BinaryWriterEx writer);
-
/**
* Checks whether query cancellation is supported within given version of protocol.
*
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/performancestatistics/PerformanceStatisticsProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/performancestatistics/PerformanceStatisticsProcessor.java
index 9946708..d488bd6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/performancestatistics/PerformanceStatisticsProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/performancestatistics/PerformanceStatisticsProcessor.java
@@ -124,7 +124,7 @@
});
rotateProc = new DistributedProcess<>(ctx, PERFORMANCE_STATISTICS_ROTATE,
- req -> ctx.closure().callLocalSafe(() -> {
+ (id, req) -> ctx.closure().callLocalSafe(() -> {
rotateWriter();
return null;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientRequestHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientRequestHandler.java
index bd15a26..8529818 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientRequestHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/ClientRequestHandler.java
@@ -115,7 +115,7 @@
return handle0(req);
}
catch (SecurityException ex) {
- throw IgniteClientException.wrapAuthorizationExeption(ex);
+ throw wrapAuthorizationExeption(ex);
}
}
@@ -229,4 +229,13 @@
return ClientStatus.FAILED;
}
+
+ /** */
+ public static IgniteClientException wrapAuthorizationExeption(SecurityException e) {
+ return new IgniteClientException(
+ ClientStatus.SECURITY_VIOLATION,
+ "Client is not authorized to perform this operation [errMsg=" + e.getMessage() + ']',
+ e
+ );
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCacheSqlFieldsQueryRequest.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCacheSqlFieldsQueryRequest.java
index 972184f..abc7ed4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCacheSqlFieldsQueryRequest.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/client/cache/ClientCacheSqlFieldsQueryRequest.java
@@ -29,8 +29,8 @@
import org.apache.ignite.internal.processors.platform.client.ClientBitmaskFeature;
import org.apache.ignite.internal.processors.platform.client.ClientConnectionContext;
import org.apache.ignite.internal.processors.platform.client.ClientProtocolContext;
+import org.apache.ignite.internal.processors.platform.client.ClientRequestHandler;
import org.apache.ignite.internal.processors.platform.client.ClientResponse;
-import org.apache.ignite.internal.processors.platform.client.IgniteClientException;
import org.apache.ignite.internal.processors.platform.client.tx.ClientTxAwareRequest;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.typedef.X;
@@ -174,7 +174,7 @@
SecurityException securityEx = X.cause(e, SecurityException.class);
if (securityEx != null)
- throw IgniteClientException.wrapAuthorizationExeption(securityEx);
+ throw ClientRequestHandler.wrapAuthorizationExeption(securityEx);
throw e;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java
index 804f5bf..993db18 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/IgnitePluginProcessor.java
@@ -166,24 +166,24 @@
/** {@inheritDoc} */
@Override public void collectJoiningNodeData(DiscoveryDataBag dataBag) {
- Serializable pluginsData = getDiscoveryData(dataBag.joiningNodeId());
+ PluginsDataBagItem pluginsItem = itemForDataBag(dataBag.joiningNodeId());
- if (pluginsData != null)
- dataBag.addJoiningNodeData(PLUGIN.ordinal(), pluginsData);
+ if (!F.isEmpty(pluginsItem.data))
+ dataBag.addJoiningNodeData(PLUGIN.ordinal(), pluginsItem);
}
/** {@inheritDoc} */
@Override public void collectGridNodeData(DiscoveryDataBag dataBag) {
- Serializable pluginsData = getDiscoveryData(dataBag.joiningNodeId());
+ PluginsDataBagItem pluginsItem = itemForDataBag(dataBag.joiningNodeId());
- if (pluginsData != null)
- dataBag.addNodeSpecificData(PLUGIN.ordinal(), pluginsData);
+ if (!F.isEmpty(pluginsItem.data))
+ dataBag.addNodeSpecificData(PLUGIN.ordinal(), pluginsItem);
}
/**
* @param joiningNodeId Joining node id.
*/
- private Serializable getDiscoveryData(UUID joiningNodeId) {
+ private PluginsDataBagItem itemForDataBag(UUID joiningNodeId) {
HashMap<String, Serializable> pluginsData = null;
for (Map.Entry<String, PluginProvider> e : plugins.entrySet()) {
@@ -197,31 +197,27 @@
}
}
- return pluginsData;
+ return new PluginsDataBagItem(pluginsData);
}
/** {@inheritDoc} */
@Override public void onJoiningNodeDataReceived(JoiningNodeDiscoveryData data) {
- if (data.hasJoiningNodeData()) {
- Map<String, Serializable> pluginsData = data.joiningNodeData();
+ PluginsDataBagItem pluginsItem = data.joiningNodeData();
- applyPluginsData(data.joiningNodeId(), pluginsData);
- }
+ if (pluginsItem != null && !F.isEmpty(pluginsItem.data))
+ applyPluginsData(data.joiningNodeId(), pluginsItem.data);
}
/** {@inheritDoc} */
@Override public void onGridDataReceived(GridDiscoveryData data) {
- Map<UUID, Serializable> nodeSpecificData = data.nodeSpecificData();
+ Map<UUID, PluginsDataBagItem> nodeSpecificData = data.nodeSpecificData();
if (nodeSpecificData != null) {
UUID joiningNodeId = data.joiningNodeId();
- for (Serializable v : nodeSpecificData.values()) {
- if (v != null) {
- Map<String, Serializable> pluginsData = (Map<String, Serializable>)v;
-
- applyPluginsData(joiningNodeId, pluginsData);
- }
+ for (PluginsDataBagItem pluginsItem : nodeSpecificData.values()) {
+ if (pluginsItem != null && !F.isEmpty(pluginsItem.data))
+ applyPluginsData(joiningNodeId, pluginsItem.data);
}
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/PluginsDataBagItem.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/PluginsDataBagItem.java
new file mode 100644
index 0000000..9b70e42
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/plugin/PluginsDataBagItem.java
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.plugin;
+
+import java.io.Serializable;
+import java.util.Map;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.MarshallableMessage;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+import org.jetbrains.annotations.Nullable;
+
+/** */
+public class PluginsDataBagItem implements MarshallableMessage {
+ /** Original plugins data. */
+ @Nullable Map<String, Serializable> data;
+
+ /** Serialized plugins data. */
+ @Order(0)
+ @Nullable byte[] dataBytes;
+
+ /** */
+ public PluginsDataBagItem() { }
+
+ /** @param data Plugins data. */
+ public PluginsDataBagItem(@Nullable Map<String, Serializable> data) {
+ this.data = data;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException {
+ if (!F.isEmpty(data))
+ dataBytes = U.marshal(marsh, data);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException {
+ if (dataBytes != null)
+ data = U.unmarshal(marsh, dataBytes, clsLdr);
+ }
+
+ /** @return Original plugins data. */
+ public @Nullable Map<String, Serializable> data() {
+ return data;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
index 854e8a1..3008503 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/GridQueryProcessor.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.query;
-import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
@@ -118,6 +117,8 @@
import org.apache.ignite.internal.processors.query.schema.SchemaOperationWorker;
import org.apache.ignite.internal.processors.query.schema.SchemaSqlViewManager;
import org.apache.ignite.internal.processors.query.schema.management.SchemaManager;
+import org.apache.ignite.internal.processors.query.schema.message.QueryInlineSizesDataBagItem;
+import org.apache.ignite.internal.processors.query.schema.message.QueryProposalsDataBagItem;
import org.apache.ignite.internal.processors.query.schema.message.SchemaAbstractDiscoveryMessage;
import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage;
import org.apache.ignite.internal.processors.query.schema.message.SchemaOperationStatusMessage;
@@ -181,9 +182,6 @@
*/
@SuppressWarnings("rawtypes")
public class GridQueryProcessor extends GridProcessorAdapter {
- /** */
- private static final String INLINE_SIZES_DISCO_BAG_KEY = "inline_sizes";
-
/** Warn message if some indexes have different inline sizes on the nodes. */
public static final String INLINE_SIZES_DIFFER_WARN_MSG_FORMAT = "Inline sizes on local node and node %s are different. " +
"Please drop and create again these indexes to avoid performance problems with SQL queries. Problem indexes: %s";
@@ -473,71 +471,60 @@
/** {@inheritDoc} */
@Override public void collectGridNodeData(DiscoveryDataBag dataBag) {
- LinkedHashMap<UUID, SchemaProposeDiscoveryMessage> proposals;
+ QueryProposalsDataBagItem proposalsItem;
// Collect active proposals.
synchronized (stateMux) {
- proposals = new LinkedHashMap<>(activeProposals);
+ proposalsItem = new QueryProposalsDataBagItem(new LinkedHashMap<>(activeProposals));
}
- dataBag.addGridCommonData(DiscoveryDataExchangeType.QUERY_PROC.ordinal(), proposals);
+ dataBag.addGridCommonData(DiscoveryDataExchangeType.QUERY_PROC.ordinal(), proposalsItem);
// We should send inline index sizes information only to server nodes.
if (!dataBag.isJoiningNodeClient()) {
- HashMap<String, Serializable> nodeSpecificMap = new HashMap<>();
-
- Serializable oldVal = nodeSpecificMap.put(INLINE_SIZES_DISCO_BAG_KEY, collectSecondaryIndexesInlineSize());
-
- assert oldVal == null : oldVal;
-
- dataBag.addNodeSpecificData(DiscoveryDataExchangeType.QUERY_PROC.ordinal(), nodeSpecificMap);
+ dataBag.addNodeSpecificData(DiscoveryDataExchangeType.QUERY_PROC.ordinal(),
+ new QueryInlineSizesDataBagItem(secondaryIndexesInlineSize()));
}
}
/** {@inheritDoc} */
@Override public void onJoiningNodeDataReceived(DiscoveryDataBag.JoiningNodeDiscoveryData data) {
- Object joiningNodeData = data.joiningNodeData();
+ QueryInlineSizesDataBagItem inlineSizesItem = data.joiningNodeData();
- if (joiningNodeData instanceof InlineSizesData) {
- Map<String, Integer> joiningNodeIndexesInlineSize = ((InlineSizesData)joiningNodeData).sizes;
-
- checkInlineSizes(secondaryIndexesInlineSize(), joiningNodeIndexesInlineSize, data.joiningNodeId());
- }
+ if (inlineSizesItem != null)
+ checkInlineSizes(secondaryIndexesInlineSize(), inlineSizesItem.sizes(), data.joiningNodeId());
}
/** {@inheritDoc} */
@Override public void collectJoiningNodeData(DiscoveryDataBag dataBag) {
dataBag.addJoiningNodeData(DiscoveryDataExchangeType.QUERY_PROC.ordinal(),
- new InlineSizesData(secondaryIndexesInlineSize()));
+ new QueryInlineSizesDataBagItem(secondaryIndexesInlineSize()));
}
/** {@inheritDoc} */
@Override public void onGridDataReceived(DiscoveryDataBag.GridDiscoveryData data) {
// Preserve proposals.
- LinkedHashMap<UUID, SchemaProposeDiscoveryMessage> activeProposals =
- (LinkedHashMap<UUID, SchemaProposeDiscoveryMessage>)data.commonData();
+ QueryProposalsDataBagItem proposalsItem = data.commonData();
// Process proposals as if they were received as regular discovery messages.
- if (!F.isEmpty(activeProposals)) {
+ if (proposalsItem != null && !F.isEmpty(proposalsItem.activeProposals())) {
synchronized (stateMux) {
- for (SchemaProposeDiscoveryMessage activeProposal : activeProposals.values())
+ for (SchemaProposeDiscoveryMessage activeProposal : proposalsItem.activeProposals().values())
onSchemaProposeDiscovery0(activeProposal);
}
}
- if (!F.isEmpty(data.nodeSpecificData())) {
+ Map<UUID, QueryInlineSizesDataBagItem> nodedSpecificData = data.nodeSpecificData();
+
+ if (!F.isEmpty(nodedSpecificData)) {
Map<String, Integer> indexesInlineSize = secondaryIndexesInlineSize();
if (!F.isEmpty(indexesInlineSize)) {
- for (UUID nodeId : data.nodeSpecificData().keySet()) {
- Serializable serializable = data.nodeSpecificData().get(nodeId);
+ for (UUID nodeId : nodedSpecificData.keySet()) {
+ QueryInlineSizesDataBagItem inlineSizesItem = nodedSpecificData.get(nodeId);
- assert serializable instanceof Map : serializable;
-
- Map<String, Serializable> nodeSpecificData = (Map<String, Serializable>)serializable;
-
- if (nodeSpecificData.containsKey(INLINE_SIZES_DISCO_BAG_KEY))
- checkInlineSizes(indexesInlineSize, (Map<String, Integer>)nodeSpecificData.get(INLINE_SIZES_DISCO_BAG_KEY), nodeId);
+ if (inlineSizesItem != null)
+ checkInlineSizes(indexesInlineSize, inlineSizesItem.sizes(), nodeId);
}
}
}
@@ -686,16 +673,6 @@
}
/**
- * @return Serializable information about secondary indexes inline size.
- * @see #secondaryIndexesInlineSize()
- */
- private Serializable collectSecondaryIndexesInlineSize() {
- Map<String, Integer> map = secondaryIndexesInlineSize();
-
- return map instanceof Serializable ? (Serializable)map : new HashMap<>(map);
- }
-
- /**
* Process schema propose message from discovery thread.
*
* @param msg Message.
@@ -951,6 +928,7 @@
*
* @param schemaOp Schema operation.
*/
+ @SuppressWarnings("unchecked")
private void startSchemaChange(SchemaOperation schemaOp) {
assert Thread.holdsLock(stateMux);
assert !schemaOp.started();
@@ -1009,6 +987,14 @@
mgr.start();
+ worker.future().listen(new IgniteInClosure<IgniteInternalFuture>() {
+ @Override public void apply(IgniteInternalFuture fut) {
+ synchronized (stateMux) {
+ mgr.onLocalNodeFinished(fut);
+ }
+ }
+ });
+
// Unwind pending IO messages.
if (!ctx.clientNode() && coordinator().isLocal())
unwindPendingMessages(schemaOp.id(), mgr);
@@ -4407,4 +4393,9 @@
public QueryEngine defaultQueryEngine() {
return dfltQryEngine;
}
+
+ /** */
+ public boolean isLockedByCurrentThread() {
+ return Thread.holdsLock(stateMux);
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryContext.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryContext.java
index a9dbe02..ac7dfc2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryContext.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryContext.java
@@ -21,6 +21,7 @@
import java.util.Arrays;
import java.util.List;
import org.apache.ignite.internal.util.typedef.F;
+import org.jetbrains.annotations.Nullable;
/** */
public final class QueryContext {
@@ -36,10 +37,10 @@
}
/**
- * Finds an instance of an interface implemented by this object,
- * or returns null if this object does not support that interface.
+ * Finds an instance of an interface implemented by this object
+ * or returns {@code null} if this object does not support that interface.
*/
- public <C> C unwrap(Class<C> aClass) {
+ public <C> @Nullable C unwrap(Class<C> aClass) {
if (Object[].class == aClass)
return aClass.cast(params);
@@ -50,12 +51,12 @@
* @param params Context parameters.
* @return Query context.
*/
- public static QueryContext of(Object... params) {
+ public static QueryContext of(@Nullable Object... params) {
return !F.isEmpty(params) ? new QueryContext(build(null, params).toArray()) : new QueryContext(EMPTY);
}
/** */
- private static List<Object> build(List<Object> dst, Object[] src) {
+ private static List<Object> build(List<Object> dst, @Nullable Object[] src) {
if (dst == null)
dst = new ArrayList<>();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java
index b24e523..29659e6 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryField.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.query;
-import java.io.Serializable;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -25,10 +24,7 @@
/**
* Query field metadata.
*/
-public class QueryField implements Serializable, Message {
- /** */
- private static final long serialVersionUID = 0L;
-
+public class QueryField implements Message {
/** Field name. */
@Order(0)
String name;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
index 332a7d1..21a16ba 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/QueryUtils.java
@@ -1138,30 +1138,7 @@
* @return Type name.
*/
public static String typeName(String clsName) {
- int genericStart = clsName.indexOf('`'); // .NET generic, not valid for Java class name.
-
- if (genericStart >= 0)
- clsName = clsName.substring(0, genericStart);
-
- int pkgEnd = clsName.lastIndexOf('.');
-
- if (pkgEnd >= 0 && pkgEnd < clsName.length() - 1)
- clsName = clsName.substring(pkgEnd + 1);
-
- if (clsName.endsWith("[]"))
- clsName = clsName.substring(0, clsName.length() - 2) + "_array";
-
- int parentEnd = clsName.lastIndexOf('$');
-
- if (parentEnd >= 0)
- clsName = clsName.substring(parentEnd + 1);
-
- parentEnd = clsName.lastIndexOf('+'); // .NET parent
-
- if (parentEnd >= 0)
- clsName = clsName.substring(parentEnd + 1);
-
- return clsName;
+ return CommonUtils.typeName(clsName);
}
/**
@@ -1171,22 +1148,7 @@
* @return Type name.
*/
public static String typeName(Class<?> cls) {
- String typeName = cls.getSimpleName();
-
- // To protect from failure on anonymous classes.
- if (F.isEmpty(typeName)) {
- String pkg = cls.getPackage().getName();
-
- typeName = cls.getName().substring(pkg.length() + (pkg.isEmpty() ? 0 : 1));
- }
-
- if (cls.isArray()) {
- assert typeName.endsWith("[]");
-
- typeName = typeName.substring(0, typeName.length() - 2) + "_array";
- }
-
- return typeName;
+ return CommonUtils.typeName(cls);
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaOperationManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaOperationManager.java
index 306c5ca..e4012cb 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaOperationManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaOperationManager.java
@@ -30,7 +30,6 @@
import org.apache.ignite.internal.processors.query.GridQueryProcessor;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.util.typedef.T2;
-import org.apache.ignite.lang.IgniteInClosure;
import org.jetbrains.annotations.Nullable;
/**
@@ -49,7 +48,10 @@
/** Operation handler. */
private final SchemaOperationWorker worker;
- /** Mutex for concurrency control. */
+ /**
+ * Mutex for concurrency control. It's crucial to maintain locks order to avoid deadlocks,
+ * query processor should be locked before locking this mutex.
+ */
private final Object mux = new Object();
/** Participants. */
@@ -86,6 +88,8 @@
this.qryProc = qryProc;
this.worker = worker;
+ assertQueryProcessorLockedBeforeOperationLock();
+
synchronized (mux) {
this.crd = crd;
@@ -96,17 +100,8 @@
/**
* Map operation handling.
*/
- @SuppressWarnings("unchecked")
public void start() {
worker.start();
-
- synchronized (mux) {
- worker.future().listen(new IgniteInClosure<IgniteInternalFuture>() {
- @Override public void apply(IgniteInternalFuture fut) {
- onLocalNodeFinished(fut);
- }
- });
- }
}
/**
@@ -114,7 +109,7 @@
*
* @param fut Future.
*/
- private void onLocalNodeFinished(IgniteInternalFuture fut) {
+ public void onLocalNodeFinished(IgniteInternalFuture fut) {
assert fut.isDone();
if (ctx.clientNode())
@@ -131,6 +126,8 @@
err = QueryUtils.wrapIfNeeded(e);
}
+ assertQueryProcessorLockedBeforeOperationLock();
+
synchronized (mux) {
if (isLocalCoordinator())
onNodeFinished(ctx.localNodeId(), err, worker.nop());
@@ -146,6 +143,8 @@
* @param err Error.
*/
public void onNodeFinished(UUID nodeId, @Nullable SchemaOperationException err, boolean nop) {
+ assertQueryProcessorLockedBeforeOperationLock();
+
synchronized (mux) {
assert isLocalCoordinator();
@@ -181,6 +180,8 @@
* @param curCrd Current coordinator node.
*/
public void onNodeLeave(UUID nodeId, ClusterNode curCrd) {
+ assertQueryProcessorLockedBeforeOperationLock();
+
synchronized (mux) {
assert crd != null;
@@ -206,6 +207,12 @@
}
}
+ /** */
+ private void assertQueryProcessorLockedBeforeOperationLock() {
+ assert qryProc.isLockedByCurrentThread() : "Locks order violation, GridQueryProcessor.stateMux must be " +
+ "acquired before SchemaOperationManager.mux";
+ }
+
/**
* Check if operation finished.
*/
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityExMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityExMessage.java
new file mode 100644
index 0000000..e080910
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityExMessage.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.schema.message;
+
+import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.processors.query.QueryEntityEx;
+
+/** Message for {@link QueryEntityEx} transfer. */
+public class QueryEntityExMessage extends QueryEntityMessage {
+ /** Whether to preserve order specified by 'keyFields' or not. */
+ @Order(0)
+ boolean preserveKeysOrder;
+
+ /** Whether a primary key should be autocreated or not. */
+ @Order(1)
+ boolean implicitPk;
+
+ /** Whether absent PK parts should be filled with defaults or not. */
+ @Order(2)
+ boolean fillAbsentPKsWithDefaults;
+
+ /** INLINE_SIZE for PK index. */
+ @Order(3)
+ int pkInlineSize;
+
+ /** INLINE_SIZE for affinity field index. */
+ @Order(4)
+ int affKeyInlineSize;
+
+ /** Whether query entity was created by SQL. */
+ @Order(5)
+ boolean sql;
+
+ /** */
+ public QueryEntityExMessage() { }
+
+ /**
+ * @param qryEntity Original {@link QueryEntity}.
+ */
+ public QueryEntityExMessage(QueryEntityEx qryEntity) {
+ super(qryEntity);
+
+ preserveKeysOrder = qryEntity.isPreserveKeysOrder();
+ implicitPk = qryEntity.implicitPk();
+ fillAbsentPKsWithDefaults = qryEntity.fillAbsentPKsWithDefaults();
+
+ pkInlineSize = qryEntity.getPrimaryKeyInlineSize() != null ? qryEntity.getPrimaryKeyInlineSize() : -1;
+
+ affKeyInlineSize = qryEntity.getAffinityKeyInlineSize() != null ? qryEntity.getAffinityKeyInlineSize() : -1;
+
+ sql = qryEntity.sql();
+ }
+
+ /** {@inheritDoc} */
+ @Override public QueryEntity toEntity() {
+ QueryEntityEx qryEntity = new QueryEntityEx(entityBase());
+
+ qryEntity.setNotNullFields(notNullFields);
+ qryEntity.setPreserveKeysOrder(preserveKeysOrder);
+ qryEntity.implicitPk(implicitPk);
+ qryEntity.fillAbsentPKsWithDefaults(fillAbsentPKsWithDefaults);
+ qryEntity.sql(sql);
+
+ if (pkInlineSize != -1)
+ qryEntity.setPrimaryKeyInlineSize(pkInlineSize);
+
+ if (affKeyInlineSize != -1)
+ qryEntity.setAffinityKeyInlineSize(affKeyInlineSize);
+
+ return qryEntity;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityMessage.java
new file mode 100644
index 0000000..8c6daf4
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityMessage.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.schema.message;
+
+import java.util.Collection;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.internal.MarshallableMessage;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.cache.query.QueryIndexMessage;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+
+/**
+ * Message for {@link QueryEntity} transfer.
+ */
+public class QueryEntityMessage implements MarshallableMessage {
+ /** Key type. */
+ @Order(0)
+ String keyType;
+
+ /** Value type. */
+ @Order(1)
+ String valType;
+
+ /** Key name. */
+ @Order(2)
+ String keyFieldName;
+
+ /** Value name. */
+ @Order(3)
+ String valFieldName;
+
+ /** Fields available for query. */
+ @Order(4)
+ LinkedHashMap<String, String> fields;
+
+ /** Set of field names that belong to the key. */
+ @Order(5)
+ String[] keyFields;
+
+ /** Aliases. */
+ @Order(6)
+ Map<String, String> aliases;
+
+ /** Collection of query indexes. */
+ @Order(7)
+ Collection<QueryIndexMessage> idxs;
+
+ /** Table name. */
+ @Order(8)
+ String tableName;
+
+ /**
+ * Fields that must have non-null value.
+ * NB: Used in serde of both QueryEntity and QueryEntityEx in order to avoid duplication.
+ */
+ @Order(9)
+ Set<String> notNullFields;
+
+ /** Fields default values. */
+ Map<String, Object> dfltFieldValues;
+
+ /** Serialized form of {@link #dfltFieldValues}. */
+ @Order(10)
+ byte[] dfltFieldValuesBytes;
+
+ /** Precision(Maximum length) for fields. */
+ @Order(11)
+ Map<String, Integer> fieldsPrecision;
+
+ /** Scale for fields. */
+ @Order(12)
+ Map<String, Integer> fieldsScale;
+
+ /** */
+ public QueryEntityMessage() { }
+
+ /** @param qryEntity Original {@link QueryEntity}. */
+ public QueryEntityMessage(QueryEntity qryEntity) {
+ keyType = qryEntity.getKeyType();
+ valType = qryEntity.getValueType();
+
+ keyFieldName = qryEntity.getKeyFieldName();
+ valFieldName = qryEntity.getValueFieldName();
+
+ fields = qryEntity.getFields();
+ aliases = qryEntity.getAliases();
+
+ if (!F.isEmpty(qryEntity.getKeyFields()))
+ keyFields = qryEntity.getKeyFields().toArray(U.EMPTY_STRS);
+
+ if (!F.isEmpty(qryEntity.getIndexes()))
+ idxs = F.viewReadOnly(qryEntity.getIndexes(), QueryIndexMessage::new);
+
+ tableName = qryEntity.getTableName();
+
+ notNullFields = qryEntity.getNotNullFields();
+ dfltFieldValues = qryEntity.getDefaultFieldValues();
+ fieldsPrecision = qryEntity.getFieldsPrecision();
+ fieldsScale = qryEntity.getFieldsScale();
+ }
+
+ /** @return Original {@link QueryEntity}. */
+ public QueryEntity toEntity() {
+ return entityBase().setNotNullFields(notNullFields);
+ }
+
+ /** @return Entity without 'notNullFields.' */
+ protected QueryEntity entityBase() {
+ return new QueryEntity()
+ .setKeyType(keyType)
+ .setValueType(valType)
+ .setKeyFieldName(keyFieldName)
+ .setValueFieldName(valFieldName)
+ .setFields(fields)
+ .setKeyFields(!F.isEmpty(keyFields) ? new LinkedHashSet<>(List.of(keyFields)) : null)
+ .setAliases(aliases)
+ .setIndexes(!F.isEmpty(idxs) ? F.transform(idxs, QueryIndexMessage::queryIndex) : null)
+ .setTableName(tableName)
+ .setDefaultFieldValues(dfltFieldValues)
+ .setFieldsPrecision(fieldsPrecision)
+ .setFieldsScale(fieldsScale);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException {
+ if (!F.isEmpty(dfltFieldValues))
+ dfltFieldValuesBytes = U.marshal(marsh, dfltFieldValues);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException {
+ if (!F.isEmpty(dfltFieldValuesBytes))
+ dfltFieldValues = U.unmarshal(marsh, dfltFieldValuesBytes, clsLdr);
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryInlineSizesDataBagItem.java
similarity index 72%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryInlineSizesDataBagItem.java
index eb38135..f7e03dd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryInlineSizesDataBagItem.java
@@ -15,25 +15,28 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
+package org.apache.ignite.internal.processors.query.schema.message;
import java.util.Map;
import org.apache.ignite.internal.Order;
import org.apache.ignite.plugin.extensions.communication.Message;
/** */
-public class InlineSizesData implements Message {
+public class QueryInlineSizesDataBagItem implements Message {
/** */
@Order(0)
Map<String, Integer> sizes;
/** */
- public InlineSizesData() {}
+ public QueryInlineSizesDataBagItem() {}
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
+ /** @param sizes Inline sizes. */
+ public QueryInlineSizesDataBagItem(Map<String, Integer> sizes) {
this.sizes = sizes;
}
+
+ /** @return Inline sizes. */
+ public Map<String, Integer> sizes() {
+ return sizes;
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryProposalsDataBagItem.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryProposalsDataBagItem.java
new file mode 100644
index 0000000..65082c4
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/QueryProposalsDataBagItem.java
@@ -0,0 +1,45 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.schema.message;
+
+import java.util.LinkedHashMap;
+import java.util.UUID;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.plugin.extensions.communication.Message;
+
+/** Wrapper for active schema change propose discovery messages. */
+public class QueryProposalsDataBagItem implements Message {
+ /** Active proposals. */
+ @Order(0)
+ LinkedHashMap<UUID, SchemaProposeDiscoveryMessage> activeProposals;
+
+ /** */
+ public QueryProposalsDataBagItem() {
+ // No-op.
+ }
+
+ /** @param activeProposals Active proposals. */
+ public QueryProposalsDataBagItem(LinkedHashMap<UUID, SchemaProposeDiscoveryMessage> activeProposals) {
+ this.activeProposals = activeProposals;
+ }
+
+ /** @return Active proposals. */
+ public LinkedHashMap<UUID, SchemaProposeDiscoveryMessage> activeProposals() {
+ return activeProposals;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
index 1b832ab..a791432 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaAbstractDiscoveryMessage.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.query.schema.message;
-import java.io.Serializable;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
import org.apache.ignite.internal.processors.query.schema.SchemaOperationException;
@@ -30,10 +29,7 @@
/**
* Abstract discovery message for schema operations.
*/
-public abstract class SchemaAbstractDiscoveryMessage extends DiscoveryCustomMessage implements Serializable {
- /** */
- private static final long serialVersionUID = 0L;
-
+public abstract class SchemaAbstractDiscoveryMessage extends DiscoveryCustomMessage {
/** Operation. */
@GridToStringInclude
@Order(0)
@@ -41,11 +37,11 @@
/** Error message. */
@Order(1)
- transient String errMsg;
+ String errMsg;
/** Error code. */
@Order(2)
- transient int errCode;
+ int errCode;
/** Error. */
SchemaOperationException err;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaFinishDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaFinishDiscoveryMessage.java
index 9ff555b..fc95da0 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaFinishDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaFinishDiscoveryMessage.java
@@ -27,9 +27,6 @@
* Schema change finish discovery message.
*/
public class SchemaFinishDiscoveryMessage extends SchemaAbstractDiscoveryMessage {
- /** */
- private static final long serialVersionUID = 0L;
-
/** No-op flag. */
@Order(0)
boolean nop;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java
index 1f761c1..bef0b3b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/message/SchemaProposeDiscoveryMessage.java
@@ -28,9 +28,6 @@
* Schema change propose discovery message.
*/
public class SchemaProposeDiscoveryMessage extends SchemaAbstractDiscoveryMessage {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Cache deployment ID. */
@Order(0)
IgniteUuid depId;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java
index 5264fbe..c3a83e3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAbstractOperation.java
@@ -17,7 +17,6 @@
package org.apache.ignite.internal.processors.query.schema.operation;
-import java.io.Serializable;
import java.util.UUID;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -26,10 +25,7 @@
/**
* Abstract operation on schema.
*/
-public abstract class SchemaAbstractOperation implements Serializable, Message {
- /** */
- private static final long serialVersionUID = 0L;
-
+public abstract class SchemaAbstractOperation implements Message {
/** Operation ID. */
@Order(0)
UUID opId;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAddQueryEntityOperation.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAddQueryEntityOperation.java
index ebb23af..3d70046 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAddQueryEntityOperation.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAddQueryEntityOperation.java
@@ -19,26 +19,21 @@
import java.util.Collection;
import java.util.UUID;
-import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.QueryEntity;
-import org.apache.ignite.internal.MarshallableMessage;
import org.apache.ignite.internal.Order;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.internal.processors.query.QueryEntityEx;
+import org.apache.ignite.internal.processors.query.schema.message.QueryEntityExMessage;
+import org.apache.ignite.internal.processors.query.schema.message.QueryEntityMessage;
+import org.apache.ignite.internal.util.typedef.F;
-/**
- * Enabling indexing on cache operation.
- */
-public class SchemaAddQueryEntityOperation extends SchemaAbstractOperation implements MarshallableMessage {
- /** */
- private static final long serialVersionUID = 0L;
-
- /** */
- private Collection<QueryEntity> entities;
-
- /** Serialized form of query entities. */
+/** Operation, which enables indexing on cache operation. */
+public class SchemaAddQueryEntityOperation extends SchemaAbstractOperation {
+ /** Query entities messages. */
@Order(0)
- transient byte[] qryEntitiesBytes;
+ Collection<QueryEntityMessage> entitiesMsgs;
+
+ /** Original query entities. We keep them to avoid unneccessary conversions from messages. */
+ private Collection<QueryEntity> entities;
/** */
@Order(1)
@@ -71,42 +66,34 @@
this.entities = entities;
this.qryParallelism = qryParallelism;
this.sqlEscape = sqlEscape;
+
+ entitiesMsgs = F.viewReadOnly(entities, this::makeEntityMessage);
}
- /**
- * @return Collection of query entities.
- */
+ /** @return Collection of query entities. */
public Collection<QueryEntity> entities() {
+ if (entities == null)
+ entities = F.transform(entitiesMsgs, QueryEntityMessage::toEntity);
+
return entities;
}
- /**
- * @return Query parallelism.
- */
+ /** @return Query parallelism. */
public int queryParallelism() {
return qryParallelism;
}
- /**
- * @return Sql escape flag.
- */
+ /** @return Sql escape flag. */
public boolean isSqlEscape() {
return sqlEscape;
}
- /** {@inheritDoc} */
- @Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException {
- if (entities != null)
- qryEntitiesBytes = U.marshal(marsh, entities);
+ /**
+ * @param qryEntity Query entity.
+ * @return The appropriate query entity message.
+ */
+ private QueryEntityMessage makeEntityMessage(QueryEntity qryEntity) {
+ return qryEntity instanceof QueryEntityEx ? new QueryEntityExMessage((QueryEntityEx)qryEntity)
+ : new QueryEntityMessage(qryEntity);
}
-
- /** {@inheritDoc} */
- @Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException {
- if (qryEntitiesBytes != null) {
- entities = U.unmarshal(marsh, qryEntitiesBytes, clsLdr);
-
- qryEntitiesBytes = null;
- }
- }
-
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableAddColumnOperation.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableAddColumnOperation.java
index 11d77d3..481e8f2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableAddColumnOperation.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableAddColumnOperation.java
@@ -27,9 +27,6 @@
* Schema index drop operation.
*/
public class SchemaAlterTableAddColumnOperation extends SchemaAbstractOperation {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Target table name. */
@Order(0)
String tblName;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableDropColumnOperation.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableDropColumnOperation.java
index cf48709..1aca33c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableDropColumnOperation.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaAlterTableDropColumnOperation.java
@@ -26,9 +26,6 @@
* Schema alter table drop column operation.
*/
public class SchemaAlterTableDropColumnOperation extends SchemaAbstractOperation {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Target table name. */
@Order(0)
String tblName;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexCreateOperation.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexCreateOperation.java
index 056ccaa..7dcde0c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexCreateOperation.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexCreateOperation.java
@@ -29,9 +29,6 @@
* Schema index create operation.
*/
public class SchemaIndexCreateOperation extends SchemaIndexAbstractOperation {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Table name. */
@Order(0)
String tblName;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexDropOperation.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexDropOperation.java
index 6962fbb..4d0db89 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexDropOperation.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/operation/SchemaIndexDropOperation.java
@@ -25,9 +25,6 @@
* Schema index drop operation.
*/
public class SchemaIndexDropOperation extends SchemaIndexAbstractOperation {
- /** */
- private static final long serialVersionUID = 0L;
-
/** Index name. */
@Order(0)
String idxName;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
index a7e0cc5..e417ede 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/GridRestProcessor.java
@@ -1017,6 +1017,10 @@
log.debug("Failed to initialize HTTP REST protocol (consider adding ignite-rest-http " +
"module to classpath).");
}
+ catch (LinkageError e) {
+ U.warn(log, "Failed to initialize HTTP REST protocol (consider adding ignite-rest-http " +
+ "module and its dependencies to classpath).", e);
+ }
catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
throw new IgniteCheckedException("Failed to initialize HTTP REST protocol.", e);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
index 669aa52..8a50386 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandler.java
@@ -751,8 +751,10 @@
destId == null || destId.equals(ctx.localNodeId()) || replicatedCacheAvailable(cacheName);
if (locExec) {
- IgniteInternalCache<?, ?> prj = localCache(cacheName)
- .setSkipStore(cacheFlags.contains(SKIP_STORE));
+ IgniteInternalCache<?, ?> prj = localCache(cacheName);
+
+ if (cacheFlags.contains(SKIP_STORE))
+ prj = prj.withSkipStore();
if (cacheFlags.contains(KEEP_BINARIES))
prj = prj.keepBinary();
@@ -919,8 +921,10 @@
/** {@inheritDoc} */
@Override public GridRestResponse call() throws Exception {
- IgniteInternalCache<?, ?> prj = cache(g, cacheName)
- .setSkipStore(cacheFlags.contains(SKIP_STORE));
+ IgniteInternalCache<?, ?> prj = cache(g, cacheName);
+
+ if (cacheFlags.contains(SKIP_STORE))
+ prj = prj.withSkipStore();
if (cacheFlags.contains(KEEP_BINARIES))
prj = prj.keepBinary();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java
index a1aaa09..d882539 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rest/protocols/tcp/GridTcpRestProtocol.java
@@ -36,6 +36,7 @@
import org.apache.ignite.internal.client.marshaller.jdk.GridClientJdkMarshaller;
import org.apache.ignite.internal.client.marshaller.optimized.GridClientOptimizedMarshaller;
import org.apache.ignite.internal.client.marshaller.optimized.GridClientZipOptimizedMarshaller;
+import org.apache.ignite.internal.processors.metric.MetricRegistryImpl;
import org.apache.ignite.internal.processors.rest.GridRestProtocolHandler;
import org.apache.ignite.internal.processors.rest.client.message.GridClientMessage;
import org.apache.ignite.internal.processors.rest.protocols.GridRestProtocolAdapter;
@@ -208,13 +209,15 @@
GridNioFilter[] filters;
+ MetricRegistryImpl mreg = ctx.metric().registry(REST_CONNECTOR_METRIC_REGISTRY_NAME);
+
if (sslCtx != null) {
- GridNioSslFilter sslFilter = new GridNioSslFilter(
+ GridNioSslFilter sslFilter = U.sslFilter(
sslCtx,
cfg.isDirectBuffer(),
ByteOrder.nativeOrder(),
log,
- ctx.metric().registry(REST_CONNECTOR_METRIC_REGISTRY_NAME));
+ mreg);
sslFilter.directMode(false);
@@ -232,7 +235,7 @@
else
filters = new GridNioFilter[] { codec };
- srv = GridNioServer.<GridClientMessage>builder()
+ GridNioServer.Builder<GridClientMessage> builder = GridNioServer.<GridClientMessage>builder()
.address(hostAddr)
.port(port)
.listener(lsnr)
@@ -247,9 +250,11 @@
.socketReceiveBufferSize(cfg.getReceiveBufferSize())
.sendQueueLimit(cfg.getSendQueueLimit())
.filters(filters)
- .directMode(false)
- .metricRegistry(ctx.metric().registry(REST_CONNECTOR_METRIC_REGISTRY_NAME))
- .build();
+ .directMode(false);
+
+ srv = U.setNioServerMetrics(builder, mreg).build();
+
+ U.registerNioServerMetrics(srv, filters, mreg);
srv.idleTimeout(cfg.getIdleTimeout());
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractProcess.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractProcess.java
new file mode 100644
index 0000000..40fdee7
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractProcess.java
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade;
+
+import java.util.UUID;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.future.GridFutureAdapter;
+import org.jetbrains.annotations.Nullable;
+
+/** */
+abstract class AbstractProcess {
+ /** */
+ @Nullable private UUID locInitOpId;
+
+ /** */
+ @Nullable private GridFutureAdapter<Void> locInitOpFut;
+
+ /** */
+ protected abstract UUID startInternal();
+
+ /** */
+ protected synchronized IgniteInternalFuture<Void> start() {
+ if (locInitOpFut != null)
+ return locInitOpFut;
+
+ locInitOpId = startInternal();
+ locInitOpFut = new GridFutureAdapter<>();
+
+ return locInitOpFut;
+ }
+
+ /** */
+ protected synchronized void finishProcess(UUID reqId, @Nullable Throwable err) {
+ if (!reqId.equals(locInitOpId))
+ return;
+
+ locInitOpFut.onDone(err);
+
+ locInitOpId = null;
+ locInitOpFut = null;
+ }
+
+ /** */
+ protected synchronized void abort(String reason) {
+ locInitOpId = null;
+
+ if (locInitOpFut != null) {
+ locInitOpFut.onDone(new IgniteException("Operation was aborted [reason=" + reason + ']'));
+
+ locInitOpFut = null;
+ }
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/IgniteComponentUpgradeState.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/IgniteComponentUpgradeState.java
new file mode 100644
index 0000000..a80e908
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/IgniteComponentUpgradeState.java
@@ -0,0 +1,84 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade;
+
+import org.apache.ignite.lang.IgniteProductVersion;
+import org.jetbrains.annotations.Nullable;
+
+import static org.apache.ignite.internal.IgniteVersionUtils.semanticVersion;
+
+/** */
+class IgniteComponentUpgradeState {
+ /** */
+ @Nullable final IgniteProductVersion srcVer;
+
+ /** */
+ @Nullable final IgniteProductVersion targetVer;
+
+ /** Whether all cluster nodes hold the same Ignite component version. */
+ final boolean isClusterVerHomogenous;
+
+ /** */
+ IgniteComponentUpgradeState(
+ @Nullable IgniteProductVersion srcVer,
+ @Nullable IgniteProductVersion targetVer,
+ boolean isClusterVerHomogenous
+ ) {
+ this.srcVer = srcVer;
+ this.targetVer = targetVer;
+ this.isClusterVerHomogenous = isClusterVerHomogenous;
+ }
+
+ /** */
+ boolean isCompatible(IgniteProductVersion joiningNodeCmpVer) {
+ if (isClusterVerHomogenous)
+ return srcVer == null || srcVer.compareTo(joiningNodeCmpVer) <= 0;
+
+ return joiningNodeCmpVer.equals(srcVer) || joiningNodeCmpVer.equals(targetVer);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ StringBuilder sb = new StringBuilder();
+
+ if (isClusterVerHomogenous)
+ if (srcVer == null)
+ sb.append("[any]");
+ else
+ sb.append("[").append(semanticVersion(srcVer)).append(" or greater]");
+ else {
+ sb.append("[");
+
+ if (srcVer != null)
+ sb.append(srcVer);
+
+ if (targetVer != null) {
+ if (srcVer != null)
+ sb.append(", ");
+
+ sb.append(targetVer);
+ }
+
+ sb.append("]");
+ }
+
+ sb.append("]");
+
+ return sb.toString();
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/RollingUpgradeClusterData.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/RollingUpgradeClusterData.java
new file mode 100644
index 0000000..f28dc98
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/RollingUpgradeClusterData.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade;
+
+import java.util.Collection;
+import java.util.UUID;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteComponentFeatureSet;
+import org.apache.ignite.plugin.extensions.communication.Message;
+
+/** */
+public class RollingUpgradeClusterData implements Message {
+ /** */
+ @Order(0)
+ boolean isVersionUpgradeEnabled;
+
+ /** */
+ @Order(1)
+ UUID curFinalizeProcId;
+
+ /** */
+ @Order(2)
+ Collection<IgniteComponentFeatureSet> activeFeatures;
+
+ /** */
+ public RollingUpgradeClusterData() {
+ // No-op.
+ }
+
+ /** */
+ public RollingUpgradeClusterData(
+ boolean isVersionUpgradeEnabled,
+ UUID curFinalizeProcId,
+ Collection<IgniteComponentFeatureSet> activeFeatures
+ ) {
+ this.isVersionUpgradeEnabled = isVersionUpgradeEnabled;
+ this.curFinalizeProcId = curFinalizeProcId;
+ this.activeFeatures = activeFeatures;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/RollingUpgradeProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/RollingUpgradeProcessor.java
index f9ddc8c..ab2f9cd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/RollingUpgradeProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/RollingUpgradeProcessor.java
@@ -17,79 +17,188 @@
package org.apache.ignite.internal.processors.rollingupgrade;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
import java.util.Objects;
+import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.UUID;
-import java.util.concurrent.CountDownLatch;
+import java.util.stream.Collectors;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.events.DiscoveryEvent;
import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.IgniteVersionUtils;
import org.apache.ignite.internal.processors.GridProcessorAdapter;
-import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
-import org.apache.ignite.internal.processors.metastorage.DistributedMetastorageLifecycleListener;
-import org.apache.ignite.internal.processors.metastorage.ReadableDistributedMetaStorage;
import org.apache.ignite.internal.processors.nodevalidation.DiscoveryNodeValidationProcessor;
-import org.apache.ignite.internal.util.lang.IgnitePair;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteComponentFeatureSet;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteCoreFeature;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteFeature;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteFeatureManager;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteFeatureSet;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteNodeFeatureSet;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.SupportedFeatureRegistry;
+import org.apache.ignite.internal.util.distributed.DistributedProcess;
+import org.apache.ignite.internal.util.distributed.InitMessage;
+import org.apache.ignite.internal.util.future.GridFinishedFuture;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteFuture;
import org.apache.ignite.lang.IgniteProductVersion;
-import org.apache.ignite.plugin.security.SecurityPermission;
+import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.spi.IgniteNodeValidationResult;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.DiscoveryDataBag;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
import static org.apache.ignite.events.EventType.EVT_NODE_JOINED;
import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
import static org.apache.ignite.events.EventType.EVT_NODE_VALIDATION_FAILED;
-import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_BUILD_VER;
-import static org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage.IGNITE_INTERNAL_KEY_PREFIX;
+import static org.apache.ignite.internal.GridComponent.DiscoveryDataExchangeType.ROLLING_UPGRADE_PROC;
+import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_IGNITE_FEATURES;
+import static org.apache.ignite.internal.util.distributed.DistributedProcess.DistributedProcessType.RU_ABORT_VERSION_FINALIZATION;
+import static org.apache.ignite.internal.util.distributed.DistributedProcess.DistributedProcessType.RU_COMPLETE_VERSION_FINALIZATION;
+import static org.apache.ignite.internal.util.distributed.DistributedProcess.DistributedProcessType.RU_ENABLE;
+import static org.apache.ignite.internal.util.distributed.DistributedProcess.DistributedProcessType.RU_PREPARE_VERSION_FINALIZATION;
+import static org.apache.ignite.plugin.security.SecurityPermission.ADMIN_ROLLING_UPGRADE;
-/** Rolling upgrade processor. Manages current and target versions of cluster. */
+/** */
public class RollingUpgradeProcessor extends GridProcessorAdapter implements DiscoveryNodeValidationProcessor {
- /** Key for the distributed property that holds current and target versions. */
- private static final String ROLLING_UPGRADE_VERSIONS_KEY = IGNITE_INTERNAL_KEY_PREFIX + "rolling.upgrade.versions";
-
- /** Metastorage with the write access. */
- @Nullable private volatile DistributedMetaStorage metastorage;
-
- /** Last joining node. */
- private ClusterNode lastJoiningNode;
-
- /** Lock for synchronization between tcp-disco-msg-worker thread and management operations. */
- private final Object lock = new Object();
+ /** */
+ private final IgniteFeatureManager featureMgr;
/** */
- private final CountDownLatch startLatch = new CountDownLatch(1);
+ private final ClusterVersionUpgradeEnableProcess enableProc;
- /** Pair with current and target versions. {@code null} when rolling upgrade is disabled. */
- @Nullable private volatile IgnitePair<IgniteProductVersion> rollUpVers;
+ /** */
+ private final ClusterVersionFinalizationProcess finalizeProc;
+
+ /** */
+ private final ClusterVersionFinalizationAbortProcess finalizeAbortProc;
+
+ /** */
+ private final Object topGuard = new Object();
+
+ /** */
+ private final Set<ClusterNode> joiningNodes = new HashSet<>();
+
+ /** */
+ private volatile boolean isVerUpgradeEnabled;
/**
- * @param ctx Context.
+ * We rely on the guarantee that this varable is only accessed from the Discovery thread.
+ * Therefore, synchronization is not required.
*/
+ @Nullable private volatile UUID curFinalizeProcId;
+
+ /** */
public RollingUpgradeProcessor(GridKernalContext ctx) {
- super(ctx);
+ this(ctx, new IgniteComponentFeatureSet(
+ IgniteCoreFeature.COMPONENT_NAME,
+ IgniteVersionUtils.VER,
+ IgniteFeatureSet.buildFrom(SupportedFeatureRegistry.class))
+ );
}
- /** {@inheritDoc} */
- @Override public void onKernalStart(boolean active) throws IgniteCheckedException {
- startLatch.countDown();
+ /** */
+ protected RollingUpgradeProcessor(GridKernalContext ctx, IgniteComponentFeatureSet coreFeatures) {
+ super(ctx);
+
+ enableProc = new ClusterVersionUpgradeEnableProcess();
+ finalizeProc = new ClusterVersionFinalizationProcess();
+ finalizeAbortProc = new ClusterVersionFinalizationAbortProcess();
+ featureMgr = new IgniteFeatureManager(ctx, coreFeatures);
+ }
+
+ /** @return Whether nodes running a higher Ignite version are allowed to join the cluster. */
+ public boolean isVersionUpgradeEnabled() {
+ return isVerUpgradeEnabled;
+ }
+
+ /**
+ * Allows nodes running a higher Ignite version to join the cluster.
+ * Until the cluster version is finalized, nodes running a higher version operate in
+ * a compatibility mode that emulates the behavior of the current cluster version.
+ */
+ public void enableVersionUpgrade() throws IgniteCheckedException {
+ ctx.security().authorize(ADMIN_ROLLING_UPGRADE);
+
+ if (isVerUpgradeEnabled)
+ return;
+
+ enableProc.start().get();
+
+ if (log.isInfoEnabled())
+ log.info("Cluster version Rolling Upgrade was successfully enabled");
+ }
+
+ /**
+ * Tries to finalize the cluster version.
+ *
+ * <p>If all cluster nodes are running the same Ignite version, this method:</p>
+ * <ol>
+ * <li>Prevents nodes running a higher Ignite version from joining the cluster.</li>
+ * <li>Activates all {@link IgniteFeature}s supported by the finalized cluster version.</li>
+ * </ol>
+ *
+ * <p>If the cluster contains nodes running different Ignite versions, the operation fails.</p>
+ */
+ public void finalizeClusterVersion() throws IgniteCheckedException {
+ ctx.security().authorize(ADMIN_ROLLING_UPGRADE);
+
+ if (!isVerUpgradeEnabled)
+ return;
+
+ finalizeProc.start().get();
+
+ if (log.isInfoEnabled())
+ log.info("Cluster version was successfully finalized [componentVersions=" + featureMgr.activeFeatures() + ']');
+ }
+
+ /** */
+ public void abortClusterVersionFinalization() throws IgniteCheckedException {
+ ctx.security().authorize(ADMIN_ROLLING_UPGRADE);
+
+ if (!isVerUpgradeEnabled)
+ return;
+
+ finalizeAbortProc.start().get();
+
+ if (log.isInfoEnabled())
+ log.info("Cluster version finalization has been aborted");
+ }
+
+ /** */
+ public IgniteFeatureManager features() {
+ return featureMgr;
+ }
+
+ /** */
+ IgniteComponentUpgradeState state(String cmpName) {
+ synchronized (topGuard) {
+ return detectComponentUpgradeState(clusterFeatures(), cmpName);
+ }
}
/** {@inheritDoc} */
@Override public void start() throws IgniteCheckedException {
+ ctx.addNodeAttribute(
+ ATTR_IGNITE_FEATURES,
+ U.marshal(
+ ctx.marshallerContext().jdkMarshaller(),
+ featureMgr.localVersionFeatures().values().toArray(new IgniteComponentFeatureSet[0]))
+ );
+
ctx.event().addLocalEventListener(
evt -> {
- UUID nodeId = ((DiscoveryEvent)evt).eventNode().id();
-
- synchronized (lock) {
- if (lastJoiningNode != null && lastJoiningNode.id().equals(nodeId))
- lastJoiningNode = null;
+ synchronized (topGuard) {
+ joiningNodes.remove(((DiscoveryEvent)evt).eventNode());
}
},
EVT_NODE_JOINED,
@@ -97,251 +206,453 @@
EVT_NODE_LEFT,
EVT_NODE_VALIDATION_FAILED
);
-
- ctx.internalSubscriptionProcessor().registerDistributedMetastorageListener(new DistributedMetastorageLifecycleListener() {
- @Override public void onReadyForWrite(DistributedMetaStorage metastorage) {
- RollingUpgradeProcessor.this.metastorage = metastorage;
- }
-
- @Override public void onReadyForRead(ReadableDistributedMetaStorage metastorage) {
- try {
- rollUpVers = metastorage.read(ROLLING_UPGRADE_VERSIONS_KEY);
- }
- catch (IgniteCheckedException e) {
- throw new IgniteException(e);
- }
-
- // Keep the current and target version pair in sync with metastorage updates, e.g., to handle coordinator changes.
- metastorage.listen(ROLLING_UPGRADE_VERSIONS_KEY::equals, (key, oldVal, newVal) -> {
- rollUpVers = (IgnitePair<IgniteProductVersion>)newVal;
- });
- }
- });
}
- /** {@inheritDoc} The joining node is stored to verify later whether it successfully connected to the ring or failed to join. */
- @Override public @Nullable IgniteNodeValidationResult validateNode(ClusterNode node) {
- synchronized (lock) {
- lastJoiningNode = node;
- }
+ /** {@inheritDoc} */
+ @Override public DiscoveryDataExchangeType discoveryDataType() {
+ return ROLLING_UPGRADE_PROC;
+ }
- ClusterNode locNode = ctx.discovery().localNode();
+ /** {@inheritDoc} */
+ @Override public void collectGridNodeData(DiscoveryDataBag dataBag) {
+ if (ctx.clientNode())
+ return;
- String locBuildVer = locNode.attribute(ATTR_BUILD_VER);
- String rmtBuildVer = node.attribute(ATTR_BUILD_VER);
+ int cmpId = discoveryDataType().ordinal();
- IgniteProductVersion rmtVer = IgniteProductVersion.fromString(rmtBuildVer);
+ if (!dataBag.commonDataCollectedFor(cmpId))
+ dataBag.addGridCommonData(cmpId, collectRollingUpgradeClusterData());
+ }
- IgnitePair<IgniteProductVersion> pair = rollUpVers;
+ /** {@inheritDoc} */
+ @Override public void onGridDataReceived(DiscoveryDataBag.GridDiscoveryData data) {
+ RollingUpgradeClusterData gridData = data.commonData();
- IgniteProductVersion curVer = pair == null ? IgniteProductVersion.fromString(locBuildVer) : pair.get1();
- IgniteProductVersion targetVer = pair == null ? null : pair.get2();
+ isVerUpgradeEnabled = gridData.isVersionUpgradeEnabled;
+ curFinalizeProcId = gridData.curFinalizeProcId;
- if (Objects.equals(rmtVer, curVer) || Objects.equals(rmtVer, targetVer))
+ featureMgr.onGridDataReceived(new IgniteNodeFeatureSet(gridData.activeFeatures));
+ }
+
+ /** {@inheritDoc} */
+ @Override public @Nullable IgniteNodeValidationResult validateNode(ClusterNode joiningNode) {
+ synchronized (topGuard) {
+ if (curFinalizeProcId != null) {
+ return new IgniteNodeValidationResult(
+ joiningNode.id(),
+ "Node joins are not allowed during cluster version finalization. Retry the node join procedure after" +
+ " cluster version finalization process is complete [joiningNode=" + joiningNode + ']');
+ }
+
+ IgniteNodeFeatureSet joiningNodeFeatures;
+
+ try {
+ joiningNodeFeatures = extractNodeFeatures(joiningNode);
+ }
+ catch (IgniteCheckedException e) {
+ return new IgniteNodeValidationResult(
+ joiningNode.id(),
+ "Failed to resolve joining node features [joiningNode=" + joiningNode + ", errMsg=" + e.getMessage() + ']');
+ }
+
+ if (isVerUpgradeEnabled) {
+ if (!joiningNode.isClient() && !joiningNodeFeatures.components().containsAll(featureMgr.activeFeatures().components())) {
+ return new IgniteNodeValidationResult(
+ joiningNode.id(),
+ "Some components active in the cluster are not configured on the joining server node" +
+ " [clusterComponents=" + featureMgr.activeFeatures().components() +
+ ", joiningNodeComponents=" + joiningNodeFeatures.components() +
+ ", joiningNode=" + joiningNode + ']'
+ );
+ }
+
+ Map<ClusterNode, IgniteNodeFeatureSet> clusterFeatures = clusterFeatures();
+
+ for (IgniteComponentFeatureSet rmtCmpFeatures : joiningNodeFeatures.values()) {
+ IgniteComponentUpgradeState state = detectComponentUpgradeState(clusterFeatures, rmtCmpFeatures.componentName());
+
+ if (!state.isCompatible(rmtCmpFeatures.version())) {
+ return new IgniteNodeValidationResult(
+ joiningNode.id(),
+ "Joining node is not allowed to join the cluster because it is running a component with an" +
+ " incompatible version. The Rolling Upgrade process supports at most two different versions " +
+ " of each component in the cluster. Upgrade the joining node component versions and retry" +
+ " the node join procedure" +
+ " [componentName=" + rmtCmpFeatures.componentName() +
+ ", allowedComponentVersions=" + state +
+ ", joiningNodeComponentVersion=" + rmtCmpFeatures.version() +
+ ", joiningNode=" + joiningNode + ']');
+ }
+
+ IgniteComponentFeatureSet locCmpFeatures = featureMgr.activeComponentFeatures(rmtCmpFeatures.componentName());
+
+ if (locCmpFeatures != null && !locCmpFeatures.isUpgradableTo(rmtCmpFeatures)) {
+ return new IgniteNodeValidationResult(
+ joiningNode.id(),
+ "Ignite component Rolling Upgrade is not supported between the component version active in the cluster " +
+ "and the version running on the joining node. Refer to the documentation for supported Rolling Upgrade " +
+ "version combinations, and then retry the node join operation" +
+ " [componentName=" + locCmpFeatures.componentName() +
+ ", clusterComponentVer=" + locCmpFeatures.version() +
+ ", joiningNodeComponentVer=" + rmtCmpFeatures.version() +
+ ", joiningNode=" + joiningNode + ']');
+ }
+ }
+ }
+ else if (!joiningNodeComponentVersionsMatchCluster(joiningNode, joiningNodeFeatures)) {
+ return new IgniteNodeValidationResult(
+ joiningNode.id(),
+ "One or more component versions on the joining node differ from the corresponding versions active in the cluster" +
+ " [clusterComponentVers=" + featureMgr.activeFeatures() +
+ ", joiningNodeComponentVers=" + joiningNodeFeatures +
+ ", joiningNode=" + joiningNode + ']');
+ }
+
+ joiningNodes.add(joiningNode);
+
return null;
-
- String errMsg = "Remote node rejected due to incompatible version for cluster join.\n"
- + "Remote node info:\n"
- + " - Version : " + rmtBuildVer + "\n"
- + " - Addresses : " + U.addressesAsString(node) + "\n"
- + " - Node ID : " + node.id() + "\n"
- + "Local node info:\n"
- + " - Version : " + locBuildVer + "\n"
- + " - Addresses : " + U.addressesAsString(locNode) + "\n"
- + " - Node ID : " + locNode.id() + "\n"
- + "Allowed versions for joining: " + curVer + (targetVer == null ? "" : ", " + targetVer);
-
- LT.warn(log, errMsg);
-
- if (log.isDebugEnabled())
- log.debug(errMsg);
-
- return new IgniteNodeValidationResult(node.id(), errMsg);
+ }
}
- /**
- * Enables rolling upgrade with specified target version.
- * This method can only be called on coordinator node with {@link TcpDiscoverySpi}.
- *
- * @param target Target version.
- * @param force If {@code true}, skips target version compatibility checks and forcibly enables rolling upgrade.
- * This flag does not override an already active upgrade configuration.
- * @throws IgniteCheckedException If:
- * <ul>
- * <li>The current and target versions are incompatible;</li>
- * <li>The local node is not a coordinator;</li>
- * <li>The discovery SPI is not {@link TcpDiscoverySpi};</li>
- * <li>The distributed metastorage is not ready;</li>
- * </ul>
- */
- public void enable(IgniteProductVersion target, boolean force) throws IgniteCheckedException {
- ctx.security().authorize(SecurityPermission.ADMIN_ROLLING_UPGRADE);
+ /** {@inheritDoc} */
+ @Override public void onDisconnected(IgniteFuture<?> reconnectFut) {
+ String errMsg = "Client node has disconnected";
- if (startLatch.getCount() > 0)
- throw new IgniteCheckedException("Cannot enable rolling upgrade: processor has not been started yet");
-
- if (!U.isLocalNodeCoordinator(ctx.discovery()))
- throw new IgniteCheckedException("Rolling upgrade can be enabled only on coordinator node");
-
- if (metastorage == null)
- throw new IgniteCheckedException("Metastorage is not ready yet. Try again later");
-
- if (!(ctx.config().getDiscoverySpi() instanceof TcpDiscoverySpi))
- throw new IgniteCheckedException("Rolling upgrade is supported only with TCP discovery SPI");
-
- String curBuildVer = ctx.discovery().localNode().attribute(ATTR_BUILD_VER);
- IgniteProductVersion curVer = IgniteProductVersion.fromString(curBuildVer);
-
- if (!checkVersionsForEnabling(curVer, target, force))
- return;
-
- IgnitePair<IgniteProductVersion> newPair = F.pair(curVer, target);
-
- if (!metastorage.compareAndSet(ROLLING_UPGRADE_VERSIONS_KEY, null, newPair)) {
- IgnitePair<IgniteProductVersion> oldVerPair = metastorage.read(ROLLING_UPGRADE_VERSIONS_KEY);
-
- if (newPair.equals(oldVerPair))
- return;
-
- if (oldVerPair == null)
- throw new IgniteCheckedException("Could not enable rolling upgrade. Try again");
-
- throw new IgniteCheckedException("Rolling upgrade is already enabled with a different current and target version: " +
- oldVerPair.get1() + " , " + oldVerPair.get2());
- }
-
- rollUpVers = newPair;
-
- if (log.isInfoEnabled())
- log.info("Rolling upgrade enabled [current=" + curVer + ", target=" + target + ']');
- }
-
- /**
- * Disables rolling upgrade.
- * This method can only be called on coordinator node.
- *
- * <p>May be blocked while a node with a different version is still joining or during metastorage operations.</p>
- *
- * @throws IgniteCheckedException If cluster has two or more nodes with different versions or if node is not coordinator
- * or metastorage is not ready.
- */
- public void disable() throws IgniteCheckedException {
- ctx.security().authorize(SecurityPermission.ADMIN_ROLLING_UPGRADE);
-
- if (!U.isLocalNodeCoordinator(ctx.discovery()))
- throw new IgniteCheckedException("Rolling upgrade can be disabled only on coordinator node");
-
- if (metastorage == null)
- throw new IgniteCheckedException("Meta storage is not ready. Try again");
-
- if (rollUpVers == null)
- return;
-
- IgnitePair<IgniteProductVersion> minMaxVerPair;
-
- synchronized (lock) {
- minMaxVerPair = resolveMinMaxNodeVersions();
-
- if (!minMaxVerPair.get1().equals(minMaxVerPair.get2()))
- throw new IgniteCheckedException("Can't disable rolling upgrade with different versions in cluster: "
- + minMaxVerPair.get1() + ", " + minMaxVerPair.get2());
-
- if (lastJoiningNode != null) {
- IgniteProductVersion lastJoiningNodeVer = IgniteProductVersion.fromString(lastJoiningNode.attribute(ATTR_BUILD_VER));
-
- if (!minMaxVerPair.get1().equals(lastJoiningNodeVer))
- throw new IgniteCheckedException("Can't disable rolling upgrade with different versions in cluster: "
- + minMaxVerPair.get1() + ", " + lastJoiningNodeVer);
- }
-
- rollUpVers = null;
- }
-
- metastorage.remove(ROLLING_UPGRADE_VERSIONS_KEY);
-
- if (log.isInfoEnabled())
- log.info("Rolling upgrade disabled. Current version of nodes in cluster: " + minMaxVerPair.get1());
+ enableProc.abort(errMsg);
+ finalizeProc.abort(errMsg);
+ finalizeAbortProc.abort(errMsg);
}
/** */
- private IgnitePair<IgniteProductVersion> resolveMinMaxNodeVersions() {
- assert Thread.holdsLock(lock);
+ private IgniteComponentUpgradeState detectComponentUpgradeState(
+ Map<ClusterNode, IgniteNodeFeatureSet> clusterFeatures,
+ String cmpName
+ ) {
+ SortedSet<IgniteProductVersion> clusterCmpVersions = distinctClusterComponentVersions(clusterFeatures, cmpName);
- SortedSet<IgniteProductVersion> clusterNodes = new TreeSet<>();
+ assert !clusterCmpVersions.isEmpty() && clusterCmpVersions.size() <= 2 : "Cluster nodes must run no more than" +
+ " two versions of the component [cmpName=" + cmpName + ", clusterCmpVersions=" + clusterCmpVersions.size() + "]";
- for (ClusterNode node : ctx.discovery().discoverySpiRemoteNodes())
- clusterNodes.add(node.version());
+ IgniteProductVersion minCmpVer = clusterCmpVersions.first();
+ IgniteProductVersion maxCmpVer = clusterCmpVersions.last();
- clusterNodes.add(ctx.discovery().localNode().version());
+ if (!Objects.equals(minCmpVer, maxCmpVer))
+ return new IgniteComponentUpgradeState(minCmpVer, maxCmpVer, false);
- return new IgnitePair<>(clusterNodes.first(), clusterNodes.last());
+ IgniteComponentFeatureSet activeCompFeatures = featureMgr.activeComponentFeatures(cmpName);
+
+ IgniteProductVersion logicalCmpVer = activeCompFeatures == null ? null : activeCompFeatures.version();
+
+ return new IgniteComponentUpgradeState(
+ logicalCmpVer,
+ Objects.equals(logicalCmpVer, maxCmpVer) ? null : maxCmpVer,
+ true);
}
- /**
- * Returns a pair containing the current and target versions of the cluster.
- * <p>
- * This method returns {@code null} if rolling upgrade has not been enabled yet
- * or if version information has not been read from the distributed metastorage.
- *
- * @return A pair where:
- * <ul>
- * <li><b>First element</b> — current version of the cluster.</li>
- * <li><b>Second element</b> — target version to which the cluster is being upgraded.</li>
- * </ul>
- * or {@code null} if rolling upgrade is not active.
- */
- @Nullable public IgnitePair<IgniteProductVersion> versions() {
- return rollUpVers;
+ /** */
+ private SortedSet<IgniteProductVersion> distinctClusterComponentVersions(
+ Map<ClusterNode, IgniteNodeFeatureSet> clusterFeatures,
+ String cmpName
+ ) {
+ SortedSet<IgniteProductVersion> distinctCmpVersions = new TreeSet<>(Comparator.nullsFirst(Comparator.naturalOrder()));
+
+ clusterFeatures.forEach((node, nodeFeatures) -> {
+ IgniteComponentFeatureSet cmpFeatures = nodeFeatures.componentFeatures(cmpName);
+
+ if (node.isClient() && cmpFeatures == null)
+ return; // Components are optional on client nodes, even when they are configured on servers.
+
+ distinctCmpVersions.add(cmpFeatures == null ? null : cmpFeatures.version());
+ });
+
+ return distinctCmpVersions;
}
- /** Checks whether the cluster is in the rolling upgrade mode. */
- public boolean enabled() {
- return versions() != null;
+ /** */
+ private boolean joiningNodeComponentVersionsMatchCluster(ClusterNode joiningNode, IgniteNodeFeatureSet joiningNodeFeatures) {
+ IgniteNodeFeatureSet locFeatures = featureMgr.localVersionFeatures();
+
+ return joiningNode.isClient()
+ ? locFeatures.containsAll(joiningNodeFeatures)
+ : locFeatures.equals(joiningNodeFeatures);
}
- /**
- * Checks cur and target versions.
- *
- * @param cur Current cluster version.
- * @param target Target cluster version.
- * @param force Force flag to skip version checks.
- * @throws IgniteCheckedException If versions are incorrect.
- */
- private boolean checkVersionsForEnabling(
- IgniteProductVersion cur,
- IgniteProductVersion target,
- boolean force
- ) throws IgniteCheckedException {
- IgnitePair<IgniteProductVersion> oldVerPair = rollUpVers;
- if (oldVerPair != null) {
- if (oldVerPair.get1().equals(cur) && oldVerPair.get2().equals(target))
- return false;
+ /** */
+ private boolean isReadyForVersionFinalization() {
+ Map<ClusterNode, IgniteNodeFeatureSet> clusterFeatures = clusterFeatures();
- throw new IgniteCheckedException("Rolling upgrade is already enabled with a different current and target version: " +
- oldVerPair.get1() + " , " + oldVerPair.get2());
+ Set<IgniteNodeFeatureSet> distinctServerNodeFeatureSets = new HashSet<>();
+ Set<IgniteNodeFeatureSet> distinctClientNodeFeatureSets = new HashSet<>();
+
+ clusterFeatures.forEach((node, features) -> {
+ if (!node.isClient())
+ distinctServerNodeFeatureSets.add(features);
+ else
+ distinctClientNodeFeatureSets.add(features);
+ });
+
+ if (distinctServerNodeFeatureSets.size() != 1)
+ return false;
+
+ IgniteNodeFeatureSet srvFeatures = F.first(distinctServerNodeFeatureSets);
+
+ return distinctClientNodeFeatureSets.stream().allMatch(srvFeatures::containsAll);
+ }
+
+ /** */
+ private RollingUpgradeClusterData collectRollingUpgradeClusterData() {
+ return new RollingUpgradeClusterData(
+ isVerUpgradeEnabled,
+ curFinalizeProcId,
+ featureMgr.activeFeatures().values()
+ );
+ }
+
+ /** */
+ private IgniteNodeFeatureSet extractNodeFeatures(ClusterNode node) throws IgniteCheckedException {
+ byte[] attrVal = node.attribute(ATTR_IGNITE_FEATURES);
+
+ IgniteComponentFeatureSet[] nodeFeatures = U.unmarshal(
+ ctx.marshallerContext().jdkMarshaller(),
+ attrVal,
+ U.resolveClassLoader(ctx.config()));
+
+ return new IgniteNodeFeatureSet(List.of(nodeFeatures));
+ }
+
+ /** */
+ private static Throwable firstError(Map<UUID, Throwable> errors) {
+ return F.isEmpty(errors) ? null : F.firstValue(errors);
+ }
+
+ /** */
+ private Map<ClusterNode, IgniteNodeFeatureSet> clusterFeatures() {
+ assert Thread.holdsLock(topGuard);
+
+ try {
+ Map<ClusterNode, IgniteNodeFeatureSet> res = new HashMap<>();
+
+ for (ClusterNode node : clusterNodes())
+ res.put(node, extractNodeFeatures(node));
+
+ return res;
+ }
+ catch (IgniteCheckedException e) {
+ U.error(log, "Failed to resolve cluster features", e);
+
+ throw new IgniteException("Failed to resolve cluster features", e);
+ }
+ }
+
+ /** */
+ private Set<ClusterNode> clusterNodes() {
+ assert Thread.holdsLock(topGuard);
+
+ Set<ClusterNode> clusterNodes = new HashSet<>(ctx.discovery().discoverySpiRemoteNodes());
+
+ clusterNodes.add(ctx.discovery().localNode());
+ clusterNodes.addAll(joiningNodes);
+
+ return clusterNodes;
+ }
+
+ /** */
+ private class ClusterVersionUpgradeEnableProcess extends AbstractProcess {
+ /** */
+ private final DistributedProcess<Message, Message> distributedProc;
+
+ /** */
+ public ClusterVersionUpgradeEnableProcess() {
+ distributedProc = new DistributedProcess<>(
+ ctx,
+ RU_ENABLE,
+ this::execute,
+ this::finish,
+ (reqId, req) -> new InitMessage<>(reqId, RU_ENABLE, req, true));
}
- if (force) {
+ /** {@inheritDoc} */
+ @Override protected UUID startInternal() {
+ UUID reqId = UUID.randomUUID();
+
+ distributedProc.start(reqId, null);
+
if (log.isInfoEnabled())
- log.info("Skipping version compatibility check for rolling upgrade due to force flag "
- + "[currentVer=" + cur + ", targetVer=" + target + ']');
+ log.info("Cluster version upgrade enable process has been started [procId=" + reqId + "]");
- return true;
+ return reqId;
}
- if (cur.major() != target.major())
- throw new IgniteCheckedException("Major versions are different");
+ /** */
+ private IgniteInternalFuture<Message> execute(UUID ignored, Message req) {
+ isVerUpgradeEnabled = true;
- if (cur.minor() != target.minor()) {
- if (target.minor() == cur.minor() + 1 && target.maintenance() == 0)
- return true;
-
- throw new IgniteCheckedException("Minor version can only be incremented by 1");
+ return new GridFinishedFuture<>();
}
- if (cur.maintenance() + 1 != target.maintenance())
- throw new IgniteCheckedException("Patch version can only be incremented by 1");
+ /** */
+ private void finish(UUID reqId, Map<UUID, Message> responses, Map<UUID, Throwable> errors) {
+ finishProcess(reqId, firstError(errors));
+ }
+ }
- return true;
+ /** */
+ private class ClusterVersionFinalizationProcess extends AbstractProcess {
+ /** */
+ private final DistributedProcess<Message, Message> preparePhase;
+
+ /** */
+ private final DistributedProcess<Message, Message> completePhase;
+
+ /** */
+ public ClusterVersionFinalizationProcess() {
+ preparePhase = new DistributedProcess<>(
+ ctx,
+ RU_PREPARE_VERSION_FINALIZATION,
+ this::executePreparePhase,
+ this::finishPreparePhase,
+ (reqId, req) -> new InitMessage<>(reqId, RU_PREPARE_VERSION_FINALIZATION, req, true));
+
+ completePhase = new DistributedProcess<>(
+ ctx,
+ RU_COMPLETE_VERSION_FINALIZATION,
+ this::executeCompletePhase,
+ this::finishCompletePhase,
+ (reqId, req) -> new InitMessage<>(reqId, RU_COMPLETE_VERSION_FINALIZATION, req, true));
+ }
+
+ /** {@inheritDoc} */
+ @Override protected UUID startInternal() {
+ UUID reqId = UUID.randomUUID();
+
+ preparePhase.start(reqId, null);
+
+ if (log.isInfoEnabled())
+ log.info("Cluster version finalization process has been started [procId=" + reqId + ']');
+
+ return reqId;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void finishProcess(UUID reqId, @Nullable Throwable err) {
+ if (err != null)
+ U.error(log, "Cluster version finalization process failed [procId=" + reqId + ']', err);
+
+ super.finishProcess(reqId, err);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void abort(String reason) {
+ U.warn(log, "Cluster version finalization process has been aborted [procId=" + curFinalizeProcId + ", reason=" + reason + ']');
+
+ curFinalizeProcId = null;
+
+ super.abort(reason);
+ }
+
+ /** */
+ boolean isInProgress() {
+ return isVerUpgradeEnabled && curFinalizeProcId != null;
+ }
+
+ /** */
+ private IgniteInternalFuture<Message> executePreparePhase(UUID reqId, Message req) {
+ synchronized (topGuard) {
+ if (curFinalizeProcId != null) {
+ U.error(log, "Failed to handle cluster version finalization request. Another process is " +
+ "already in progress [curProcId=" + reqId + ", activeProcId=" + curFinalizeProcId + ']');
+
+ return new GridFinishedFuture<>(new IgniteException("Cluster version finalization process is already in progress"));
+ }
+
+ curFinalizeProcId = reqId;
+
+ if (!isReadyForVersionFinalization())
+ return new GridFinishedFuture<>(new IgniteException(
+ "Cluster version finalization failed. The cluster contains nodes running" +
+ " different versions of one or more components. Retry the operation after upgrading" +
+ " all cluster node components to the same version" +
+ " [clusterFeatures=" + clusterFeatures().entrySet().stream().collect(
+ Collectors.toMap(e -> e.getKey().id(), Map.Entry::getValue)) + ']'));
+
+ return new GridFinishedFuture<>();
+ }
+ }
+
+ /** */
+ private void finishPreparePhase(UUID reqId, Map<UUID, Message> responses, Map<UUID, Throwable> errors) {
+ if (!F.isEmpty(errors)) {
+ if (reqId.equals(curFinalizeProcId))
+ curFinalizeProcId = null;
+
+ finishProcess(reqId, firstError(errors));
+ }
+ else if (reqId.equals(curFinalizeProcId) && U.isLocalNodeCoordinator(ctx.discovery()))
+ completePhase.start(reqId, null);
+ }
+
+ /** */
+ private IgniteInternalFuture<Message> executeCompletePhase(UUID reqId, Message req) {
+ if (!reqId.equals(curFinalizeProcId)) {
+ // This condition is guaranteed to occur only when cluster version finalization is aborted
+ // after the prepare phase has completed successfully but before the completion phase begins.
+ // Aborting cluster version finalization is mutually exclusive with the finalization completion
+ // phase and is applied consistently across all cluster nodes.
+ return new GridFinishedFuture<>(new IgniteException(
+ "Failed to complete the cluster version finalization operation." +
+ " The operation may have been aborted by an administrator. Retry the operation if possible"
+ ));
+ }
+
+ featureMgr.activateLocalVersionFeatures();
+
+ isVerUpgradeEnabled = false;
+ curFinalizeProcId = null;
+
+ return new GridFinishedFuture<>();
+ }
+
+ /** */
+ private void finishCompletePhase(UUID reqId, Map<UUID, Message> responses, Map<UUID, Throwable> errors) {
+ finishProcess(reqId, firstError(errors));
+ }
+ }
+
+ /** */
+ private class ClusterVersionFinalizationAbortProcess extends AbstractProcess {
+ /** */
+ private final DistributedProcess<Message, Message> distributedProc;
+
+ /** */
+ public ClusterVersionFinalizationAbortProcess() {
+ distributedProc = new DistributedProcess<>(
+ ctx,
+ RU_ABORT_VERSION_FINALIZATION,
+ this::execute,
+ this::finish,
+ (reqId, req) -> new InitMessage<>(reqId, RU_ABORT_VERSION_FINALIZATION, req, true));
+ }
+
+ /** {@inheritDoc} */
+ @Override protected UUID startInternal() {
+ UUID reqId = UUID.randomUUID();
+
+ distributedProc.start(reqId, null);
+
+ return reqId;
+ }
+
+ /** */
+ private IgniteInternalFuture<Message> execute(UUID ignored, Message req) {
+ if (finalizeProc.isInProgress())
+ finalizeProc.abort("Operation has been aborted by administrator");
+
+ return new GridFinishedFuture<>();
+ }
+
+ /** */
+ private void finish(UUID reqId, Map<UUID, Message> responses, Map<UUID, Throwable> errors) {
+ finishProcess(reqId, firstError(errors));
+ }
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteComponentFeatureSet.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteComponentFeatureSet.java
new file mode 100644
index 0000000..a689f0f
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteComponentFeatureSet.java
@@ -0,0 +1,118 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Objects;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.lang.IgniteProductVersion;
+import org.apache.ignite.plugin.extensions.communication.Message;
+
+/** Represents a set of {@link IgniteFeature}s available for the specific Ignite component version. */
+public class IgniteComponentFeatureSet implements Message, Externalizable {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ @Order(0)
+ String compName;
+
+ /** */
+ @Order(1)
+ IgniteProductVersion compVer;
+
+ /** */
+ @Order(2)
+ IgniteFeatureSet features;
+
+ /** */
+ public IgniteComponentFeatureSet() {
+ // No-op.
+ }
+
+ /** */
+ public IgniteComponentFeatureSet(String compName, IgniteProductVersion compVer, IgniteFeatureSet features) {
+ A.notNull(compName, "component name");
+ A.notNull(compVer, "component version");
+ A.notNull(features, "component features");
+
+ this.compName = compName;
+ this.compVer = compVer;
+ this.features = features;
+ }
+
+ /** */
+ public String componentName() {
+ return compName;
+ }
+
+ /** */
+ public IgniteProductVersion version() {
+ return compVer;
+ }
+
+ /** */
+ public boolean contains(int featureId) {
+ return features.contains(featureId);
+ }
+
+ /** */
+ public boolean isUpgradableTo(IgniteComponentFeatureSet target) {
+ return Objects.equals(compName, target.compName) && features.isUpgradableTo(target.features);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeUTF(compName);
+ out.writeObject(compVer);
+ out.writeObject(features);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ compName = in.readUTF();
+ compVer = (IgniteProductVersion)in.readObject();
+ features = (IgniteFeatureSet)in.readObject();
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ IgniteComponentFeatureSet other = (IgniteComponentFeatureSet)o;
+
+ return Objects.equals(compName, other.compName)
+ && Objects.equals(features, other.features)
+ && Objects.equals(compVer, other.compVer);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return "IgniteComponent [name=" + compName + ", ver=" + compVer + ']';
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return Objects.hash(compName, features, compVer);
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteComponentFeatureSetProvider.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteComponentFeatureSetProvider.java
new file mode 100644
index 0000000..31316cc
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteComponentFeatureSetProvider.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import java.util.Collection;
+import org.apache.ignite.lang.IgniteProductVersion;
+import org.apache.ignite.plugin.Extension;
+
+/**
+ * Provides the ability for internal components (e.g., plugins and SPIs) to provide their own independent sets of
+ * {@link IgniteFeature}s that will be accounted during Rolling Upgrade.
+ *
+ * @see IgniteFeature
+ */
+public interface IgniteComponentFeatureSetProvider extends Extension {
+ /** The name of the Ignite component that provides its own set of {@link IgniteFeature}s. */
+ public String componentName();
+
+ /** The version of the Ignite component with which the provided {@link IgniteFeature}s will be associated. */
+ public IgniteProductVersion componentVersion();
+
+ /**
+ * The set of features supported by the Ignite component. Note that the {@link IgniteFeature#componentName()} value
+ * for all features must match the {@link #componentName()} value.
+ */
+ public Collection<IgniteFeature> features();
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteCoreFeature.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteCoreFeature.java
new file mode 100644
index 0000000..a0250ef
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteCoreFeature.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import java.util.Objects;
+import org.apache.ignite.internal.util.tostring.GridToStringInclude;
+import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.internal.util.typedef.internal.S;
+
+/** Represents an implementation of {@link IgniteFeature} used to define incompatible changes in Ignite core functionality. */
+public class IgniteCoreFeature implements IgniteFeature {
+ /** */
+ public static final String COMPONENT_NAME = "core";
+
+ /** */
+ @GridToStringInclude
+ private final int id;
+
+ /** */
+ public IgniteCoreFeature(int id) {
+ A.ensure(id >= 0, "Feature ID must be non-negative");
+
+ this.id = id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int id() {
+ return id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String componentName() {
+ return COMPONENT_NAME;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ IgniteCoreFeature that = (IgniteCoreFeature)o;
+
+ return id == that.id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return Objects.hash(id);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return S.toString(IgniteCoreFeature.class, this);
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeature.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeature.java
new file mode 100644
index 0000000..adc1e79
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeature.java
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+/**
+ * Represents a change in Ignite node behavior that is not compatible with Ignite nodes from previous versions.
+ * {@link IgniteFeature} is one of the core mechanisms on which the Ignite Rolling Upgrade implementation depends.
+ * It serves two main purposes:
+ * <ol>
+ * <li>determining Rolling Upgrade availability between different Ignite versions</li>
+ * <li>providing the ability to deactivate Ignite functionality introduced in newer versions for the duration of a Rolling Upgrade</li>
+ * </ol>
+ *
+ * This interface allows you to define Ignite features for both custom plugins/SPIs and core Ignite modules, and ensures
+ * they are handled consistently throughout the Rolling Upgrade process.
+ *
+ * @see IgniteFeatureSet
+ * @see IgniteComponentFeatureSetProvider
+ */
+public interface IgniteFeature {
+ /**
+ * <p>{@link IgniteFeature} is identified by a unique integer ID. IDs of {@link IgniteFeature} instances must:</p>
+ * <ul>
+ * <li>remain unchanged between Ignite versions</li>
+ * <li>start at {@code 0} and increase monotonically</li>
+ * </ul>
+ *
+ * @return The unique identifier of this feature.
+ */
+ int id();
+
+ /** The name of the Ignite component to which this {@link IgniteFeature} belongs. */
+ String componentName();
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureManager.java
new file mode 100644
index 0000000..f9a229d
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureManager.java
@@ -0,0 +1,163 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.util.future.GridFutureAdapter;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.lang.IgniteRunnable;
+import org.jetbrains.annotations.Nullable;
+
+/** Maintains the set of active cluster {@link IgniteComponentFeatureSet} used by Rolling Upgrade logic. */
+public class IgniteFeatureManager {
+ /** */
+ private final GridKernalContext ctx;
+
+ /** */
+ private final IgniteNodeFeatureSet locVerFeatures;
+
+ /** */
+ private final GridFutureAdapter<Void> locVerFeaturesActivationFut;
+
+ /** */
+ private volatile IgniteNodeFeatureSet activeFeatures;
+
+ /** */
+ public IgniteFeatureManager(GridKernalContext ctx, IgniteComponentFeatureSet locCoreFeatures) {
+ this.ctx = ctx;
+ this.locVerFeatures = collectLocalVersionFeatures(ctx, locCoreFeatures);
+ locVerFeaturesActivationFut = new GridFutureAdapter<>();
+ }
+
+ /** @return The set of features declared by the local node's product version. */
+ public IgniteNodeFeatureSet localVersionFeatures() {
+ return locVerFeatures;
+ }
+
+ /** @return Active functions of the specified component. */
+ @Nullable public IgniteComponentFeatureSet activeComponentFeatures(String cmpName) {
+ return activeFeatures().componentFeatures(cmpName);
+ }
+
+ /** @return The set of features currently active in the cluster. */
+ public IgniteNodeFeatureSet activeFeatures() {
+ final IgniteNodeFeatureSet finalActiveFeatures = activeFeatures;
+
+ checkActiveFeaturesInitialized(finalActiveFeatures);
+
+ return finalActiveFeatures;
+ }
+
+ /** @return {@code true} if the specified {@link IgniteFeature} is active in the cluster; {@code false} otherwise. */
+ public boolean isActive(IgniteFeature feature) {
+ final IgniteNodeFeatureSet finalActiveFeatures = activeFeatures;
+
+ checkActiveFeaturesInitialized(finalActiveFeatures);
+
+ return finalActiveFeatures.contains(feature);
+ }
+
+ /** Registers the specified listener to be notified when the {@link IgniteFeature} is activated. */
+ public void listenActivation(IgniteFeature feature, IgniteRunnable lsnr) {
+ assert locVerFeatures.contains(feature);
+
+ final IgniteNodeFeatureSet finalActiveFeatures = activeFeatures;
+
+ checkActiveFeaturesInitialized(finalActiveFeatures);
+
+ if (finalActiveFeatures.contains(feature))
+ lsnr.run();
+ else
+ locVerFeaturesActivationFut.listen(lsnr);
+ }
+
+ /** */
+ public void onGridDataReceived(IgniteNodeFeatureSet activeClusterFeatures) {
+ if (locVerFeatures.equals(activeClusterFeatures))
+ activateLocalVersionFeatures();
+ else
+ this.activeFeatures = activeClusterFeatures;
+ }
+
+ /** */
+ public void onLocalJoin() {
+ if (activeFeatures == null)
+ activateLocalVersionFeatures();
+ }
+
+ /** */
+ public synchronized void activateLocalVersionFeatures() {
+ if (locVerFeaturesActivationFut.isDone())
+ return;
+
+ activeFeatures = locVerFeatures;
+
+ locVerFeaturesActivationFut.onDone();
+ }
+
+ /** */
+ private void checkActiveFeaturesInitialized(IgniteNodeFeatureSet activeFeatures) {
+ if (activeFeatures == null) {
+ throw new IllegalStateException("Local node features are not yet initialized [locNodeId=" +
+ ctx.discovery().localNode().id() + ']');
+ }
+ }
+
+ /** */
+ private IgniteNodeFeatureSet collectLocalVersionFeatures(GridKernalContext ctx, IgniteComponentFeatureSet locCoreFeatures) {
+ Set<IgniteComponentFeatureSet> features = new HashSet<>();
+
+ features.add(locCoreFeatures);
+
+ IgniteComponentFeatureSetProvider[] components = ctx.plugins().extensions(IgniteComponentFeatureSetProvider.class);
+
+ if (!F.isEmpty(components)) {
+ for (IgniteComponentFeatureSetProvider component : components)
+ features.add(buildComponentFeatures(component));
+ }
+
+ return new IgniteNodeFeatureSet(features);
+ }
+
+ /** */
+ private IgniteComponentFeatureSet buildComponentFeatures(IgniteComponentFeatureSetProvider cmpFeaturesProvider) {
+ Collection<IgniteFeature> cmpFeatures = cmpFeaturesProvider.features();
+
+ A.notEmpty(cmpFeatures, "component features");
+
+ boolean allFeaturesBelongToComponent = cmpFeatures.stream()
+ .map(IgniteFeature::componentName)
+ .allMatch(featureCmp -> featureCmp.equals(cmpFeaturesProvider.componentName()));
+
+ if (!allFeaturesBelongToComponent) {
+ throw new IgniteException("All specified Ignite Features must belong to the same component" +
+ " [componentName=" + cmpFeaturesProvider.componentName() + ']');
+ }
+
+ return new IgniteComponentFeatureSet(
+ cmpFeaturesProvider.componentName(),
+ cmpFeaturesProvider.componentVersion(),
+ IgniteFeatureSet.buildFrom(cmpFeatures)
+ );
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureSet.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureSet.java
new file mode 100644
index 0000000..aa99496
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureSet.java
@@ -0,0 +1,311 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+import java.util.Objects;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.util.GridIntIterator;
+import org.apache.ignite.internal.util.GridIntList;
+import org.apache.ignite.internal.util.typedef.internal.A;
+import org.apache.ignite.plugin.extensions.communication.Message;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Represents a set of Ignite node features. A feature set determines the behavior of an Ignite node. Therefore,
+ * comparing the feature sets of Ignite nodes running different versions helps identify behavioral differences between
+ * versions and determine Rolling Upgrade availability.
+ *
+ * <p>The Ignite Feature Set divides all features into two categories: features that can be deactivated to simulate
+ * the behavior of nodes from previous versions, and features that cannot be deactivated.</p>
+ *
+ * <p>Note that the Ignite Feature Set operates on {@link IgniteFeature} identifiers and relies on the following
+ * properties of {@link IgniteFeature} identifiers:</p>
+ *
+ * <ul>
+ * <li>The identifiers of existing features do not change between Ignite versions</li>
+ * <li>Identifier values start at {@code 0} and increase monotonically</li>
+ * </ul>
+ *
+ * <p>The feature set divides features into three ranges:</p>
+ *
+ * <ol>
+ * <li>
+ * A continuous range of feature IDs that cannot be deactivated:
+ * {@code [0 -> }{@link IgniteFeatureSet#rangeStartInclusive}{@code )}
+ * </li>
+ * <li>
+ * A continuous range of feature IDs that can be deactivated:
+ * {@code [}{@link IgniteFeatureSet#rangeStartInclusive}{@code -> }
+ * {@link IgniteFeatureSet#rangeEndInclusive}{@code ]}
+ * </li>
+ * <li>
+ * A sparse suffix containing IDs of features that can be deactivated. The identifier values in this range
+ * are greater than {@link IgniteFeatureSet#rangeEndInclusive}
+ * </li>
+ * </ol>
+ *
+ * @see IgniteFeature
+ */
+public class IgniteFeatureSet implements Iterable<Integer>, Message, Externalizable {
+ /** */
+ private static final long serialVersionUID = 0L;
+
+ /** */
+ @Order(0)
+ int rangeStartInclusive;
+
+ /** */
+ @Order(1)
+ int rangeEndInclusive;
+
+ /** */
+ @Order(2)
+ @Nullable GridIntList sparseSuffix;
+
+ /** */
+ public IgniteFeatureSet() {
+ // No-op.
+ }
+
+ /** */
+ private IgniteFeatureSet(int rangeStartInclusive, int rangeEndInclusive, @Nullable GridIntList sparseSuffix) {
+ A.ensure(rangeStartInclusive >= 0, "rangeStart must be greater than or equal to 0");
+ A.ensure(rangeEndInclusive >= rangeStartInclusive, "rangeEnd must be greater than or equal to rangeStart");
+
+ this.rangeStartInclusive = rangeStartInclusive;
+ this.rangeEndInclusive = rangeEndInclusive;
+ this.sparseSuffix = sparseSuffix;
+ }
+
+ /** */
+ public boolean isUpgradableTo(IgniteFeatureSet target) {
+ GridIntList diff = difference(target);
+
+ for (GridIntIterator iter = diff.iterator(); iter.hasNext(); ) {
+ int featureId = iter.next();
+
+ if (!target.contains(featureId) || !target.canDeactivate(featureId))
+ return false;
+ }
+
+ return true;
+ }
+
+ /** */
+ public GridIntList difference(IgniteFeatureSet other) {
+ GridIntList res = new GridIntList();
+
+ for (int featureId : other) {
+ if (!contains(featureId))
+ res.add(featureId);
+ }
+
+ for (int featureId : this) {
+ if (!other.contains(featureId))
+ res.add(featureId);
+ }
+
+ return res;
+ }
+
+ /** */
+ public boolean contains(int featureId) {
+ if (featureId <= rangeEndInclusive)
+ return true;
+
+ return sparseSuffix != null && sparseSuffix.contains(featureId);
+ }
+
+ /** */
+ private int calculateSize() {
+ int size = rangeEndInclusive + 1;
+
+ if (sparseSuffix != null)
+ size += sparseSuffix.size();
+
+ return size;
+ }
+
+ /** */
+ private boolean canDeactivate(int featureId) {
+ return rangeStartInclusive <= featureId;
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (this == o)
+ return true;
+
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ IgniteFeatureSet that = (IgniteFeatureSet)o;
+
+ return rangeStartInclusive == that.rangeStartInclusive
+ && rangeEndInclusive == that.rangeEndInclusive
+ && Objects.equals(sparseSuffix, that.sparseSuffix);
+ }
+
+ /** {@inheritDoc} */
+ @Override public @NotNull Iterator<Integer> iterator() {
+ return new Iterator<>() {
+ /** */
+ private int idx = 0;
+
+ /** */
+ private final int size = calculateSize();
+
+ /** {@inheritDoc} */
+ @Override public boolean hasNext() {
+ return idx < size;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Integer next() {
+ if (!hasNext())
+ throw new NoSuchElementException();
+
+ Integer res = idx <= rangeEndInclusive ? idx : sparseSuffix.get(idx - rangeEndInclusive - 1);
+
+ ++idx;
+
+ return res;
+ }
+ };
+ }
+
+ /** {@inheritDoc} */
+ @Override public void writeExternal(ObjectOutput out) throws IOException {
+ out.writeInt(rangeStartInclusive);
+ out.writeInt(rangeEndInclusive);
+ out.writeObject(sparseSuffix);
+ }
+
+ /** {@inheritDoc} */
+ @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
+ rangeStartInclusive = in.readInt();
+ rangeEndInclusive = in.readInt();
+ sparseSuffix = (GridIntList)in.readObject();
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return Objects.hash(rangeStartInclusive, rangeEndInclusive, sparseSuffix);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ StringBuilder sb = new StringBuilder();
+
+ sb.append("IgniteFeatureSet [").append(rangeStartInclusive);
+
+ if (rangeStartInclusive != rangeEndInclusive)
+ sb.append(rangeEndInclusive - rangeStartInclusive > 1 ? " -> " : ", ").append(rangeEndInclusive);
+
+ if (sparseSuffix != null) {
+ for (GridIntIterator iter = sparseSuffix.iterator(); iter.hasNext(); )
+ sb.append(", ").append(iter.next());
+ }
+
+ sb.append(']');
+
+ return sb.toString();
+ }
+
+ /** */
+ public static IgniteFeatureSet buildFrom(Class<?> cls) {
+ return buildFrom(readDeclaredFeatures(cls));
+ }
+
+ /**
+ * Creates an {@link IgniteFeatureSet} from the specified collection of {@link IgniteFeature}s that can be deactivated
+ * on an Ignite node.
+ *
+ * <p>{@link IgniteFeature} instances that are not present in the specified collection and whose IDs are lower than
+ * the minimum ID among the specified {@link IgniteFeature}s are considered non-deactivatable.</p>
+ */
+ public static IgniteFeatureSet buildFrom(Collection<? extends IgniteFeature> features) {
+ A.notEmpty(features, "features");
+
+ GridIntList featureIds = new GridIntList(features.stream().mapToInt(IgniteFeature::id).toArray());
+
+ featureIds.sort();
+
+ int rangeStart = featureIds.get(0);
+ int rangeEnd = rangeStart;
+
+ int idx = 1;
+
+ for (; idx < featureIds.size(); idx++) {
+ int nextFeatureId = featureIds.get(idx);
+
+ assert nextFeatureId != rangeEnd : "Duplication of Ignite Feature ID [duplicatedFeatureId=" + nextFeatureId + ']';
+
+ if (nextFeatureId == rangeEnd + 1)
+ rangeEnd = nextFeatureId;
+ else
+ break;
+ }
+
+ GridIntList sparseSuffix = idx < featureIds.size() ? featureIds.copyOfRange(idx, featureIds.size()) : null;
+
+ return new IgniteFeatureSet(rangeStart, rangeEnd, sparseSuffix);
+ }
+
+ /** */
+ public static Collection<IgniteFeature> readDeclaredFeatures(Class<?> cls) {
+ A.notNull(cls, "cls");
+
+ List<IgniteFeature> features = new ArrayList<>();
+
+ for (Field field : cls.getFields()) {
+ if (Modifier.isStatic(field.getModifiers()) &&
+ field.getType().equals(IgniteFeature.class) &&
+ field.getName().endsWith("_FEATURE")
+ ) {
+ try {
+ IgniteFeature feature = (IgniteFeature)field.get(null);
+
+ features.add(feature);
+ }
+ catch (IllegalAccessException e) {
+ throw new IgniteException(
+ "Failed to parse specified class to collect feature definitions [cls=" + cls.getName() + ']', e);
+ }
+ }
+ }
+
+ if (features.isEmpty())
+ throw new IgniteException("No Ignite feature definitions were found in the specified class [cls=" + cls.getName() + ']');
+
+ return features;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteNodeFeatureSet.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteNodeFeatureSet.java
new file mode 100644
index 0000000..6bf5661
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteNodeFeatureSet.java
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.util.tostring.GridToStringExclude;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Represents a set of {@link IgniteFeature}s supported by an Ignite node. Ignite is divided into independent components.
+ * Each component is associated with its version and a set of {@link IgniteFeature}s.
+ */
+public class IgniteNodeFeatureSet {
+ /** */
+ @GridToStringExclude
+ private final Map<String, IgniteComponentFeatureSet> features;
+
+ /** */
+ public IgniteNodeFeatureSet(Collection<IgniteComponentFeatureSet> features) {
+ this.features = indexByComponentName(features);
+ }
+
+ /** */
+ public Set<String> components() {
+ return Collections.unmodifiableSet(features.keySet());
+ }
+
+ /** */
+ public Collection<IgniteComponentFeatureSet> values() {
+ return Collections.unmodifiableCollection(features.values());
+ }
+
+ /** */
+ @Nullable public IgniteComponentFeatureSet componentFeatures(String cmpName) {
+ return features.get(cmpName);
+ }
+
+ /** */
+ public boolean containsAll(IgniteNodeFeatureSet other) {
+ if (!components().containsAll(other.components()))
+ return false;
+
+ for (IgniteComponentFeatureSet otherCmpFeatures : other.features.values()) {
+ if (!otherCmpFeatures.equals(features.get(otherCmpFeatures.componentName())))
+ return false;
+ }
+
+ return true;
+ }
+
+ /** */
+ public boolean contains(IgniteFeature feature) {
+ IgniteComponentFeatureSet cmpFeatures = features.get(feature.componentName());
+
+ return cmpFeatures != null && cmpFeatures.contains(feature.id());
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean equals(Object o) {
+ if (o == null || getClass() != o.getClass())
+ return false;
+
+ IgniteNodeFeatureSet other = (IgniteNodeFeatureSet)o;
+
+ return Objects.equals(features, other.features);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int hashCode() {
+ return Objects.hashCode(features);
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return features.values().stream().map(IgniteComponentFeatureSet::toString).collect(Collectors.joining(", ", "[", "]"));
+ }
+
+ /** */
+ private static Map<String, IgniteComponentFeatureSet> indexByComponentName(Collection<IgniteComponentFeatureSet> features) {
+ Map<String, IgniteComponentFeatureSet> res = new HashMap<>();
+
+ for (IgniteComponentFeatureSet compFeatures : features) {
+ if (res.put(compFeatures.componentName(), compFeatures) != null)
+ throw new IgniteException("Duplicated component name [cmpName=" + compFeatures.componentName() + ']');
+ }
+
+ return res;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/SupportedFeatureRegistry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/SupportedFeatureRegistry.java
new file mode 100644
index 0000000..7b3e55b
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/rollingupgrade/feature/SupportedFeatureRegistry.java
@@ -0,0 +1,96 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import org.apache.ignite.internal.processors.rollingupgrade.RollingUpgradeProcessor;
+
+/**
+ * Declares the {@link IgniteFeature}s supported by the current Ignite version.
+ * The complete set of declared {@link IgniteFeature}s defines the behavior of a node running the current version
+ * and determines whether a Rolling Upgrade is supported between the current Ignite version and older Ignite versions.
+ *
+ * <p><b>Developer Guide</b></p>
+ *
+ * <p>Developers should introduce a new {@link IgniteFeature} whenever a code change may break backward compatibility
+ * with older Ignite versions.</p>
+ *
+ * <p>Typical cases include:</p>
+ *
+ * <ol>
+ * <li>Message schema changes (adding, replacing, or removing fields).</li>
+ * <li>Changes to message production or processing logic.</li>
+ * <li>Introduction of new message types and their associated processing logic.</li>
+ * <li>API deprecation or removal.</li>
+ * <li>Changes to persistence logic or on-disk data formats.</li>
+ * </ol>
+ *
+ * <p>Template for Rolling Upgrade-compatible code:</p>
+ *
+ * <pre>{@code
+ * if (ctx.rollingUpgrade().features().isActive(IGNITE_FEATURE)) {
+ * // <new logic>
+ * }
+ * else {
+ * // <old logic>
+ * }
+ * }</pre>
+ *
+ * <p>{@link IgniteFeature} ID and naming conventions:</p>
+ *
+ * <ol>
+ * <li>Each variable declaring an {@link IgniteFeature} must end with the {@code _FEATURE} suffix.</li>
+ * <li>IDs of existing {@link IgniteFeature}s must not be modified.</li>
+ * <li>IDs assigned to new {@link IgniteFeature}s must increase monotonically.</li>
+ * <li>{@link IgniteFeature}s must be declared in ascending order of their identifiers.</li>
+ * </ol>
+ *
+ * <p><b>Release Manager Guide</b></p>
+ * <p><b>Release based on the Ignite main branch</b></p>
+ * <p>The release manager should:</p>
+ *
+ * <ol>
+ * <li>
+ * Determine which previous Ignite versions should remain eligible for Rolling Upgrade to the current version.
+ * </li>
+ * <li>
+ * Remove {@link IgniteFeature}s introduced in Ignite versions from which Rolling Upgrade is no longer supported.
+ * Such removals must always form a contiguous range starting from the lowest {@link IgniteFeature} identifier.
+ * </li>
+ * <li>
+ * Remove code that emulates the behavior of Ignite versions from which Rolling Upgrade is no longer supported.
+ * As a result, only the {@code <new logic>} branch should remain.
+ * </li>
+ * </ol>
+ *
+ * <p><b>Release based on a legacy branch (backporting features to earlier Ignite versions)</b></p>
+ * <p>The release manager must follow the rules listed below:</p>
+ * <ol>
+ * <li>Identifiers of backported {@link IgniteFeature}s must not be modified.</li>
+ * <li>Removal of existing {@link IgniteFeature}s is strictly prohibited.</li>
+ * <li>Introducing new {@link IgniteFeature}s that do not exist in the main branch is strictly prohibited.</li>
+ * </ol>
+ *
+ * @see IgniteFeature
+ * @see IgniteFeatureSet
+ * @see IgniteFeatureManager
+ * @see RollingUpgradeProcessor
+ */
+public class SupportedFeatureRegistry {
+ /** */
+ public static final IgniteFeature ROLLING_UPGRADE_FEATURE = new IgniteCoreFeature(0);
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/security/IgniteSecurityProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/security/IgniteSecurityProcessor.java
index 7b34ed7..ddbf0d3 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/security/IgniteSecurityProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/security/IgniteSecurityProcessor.java
@@ -34,6 +34,7 @@
import org.apache.ignite.internal.processors.security.sandbox.NoOpSandbox;
import org.apache.ignite.internal.thread.context.OperationContext;
import org.apache.ignite.internal.thread.context.OperationContextAttribute;
+import org.apache.ignite.internal.thread.context.OperationContextDispatcher;
import org.apache.ignite.internal.thread.context.Scope;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -55,6 +56,7 @@
import static org.apache.ignite.internal.processors.security.SecurityUtils.MSG_SEC_PROC_CLS_IS_INVALID;
import static org.apache.ignite.internal.processors.security.SecurityUtils.hasSecurityManager;
import static org.apache.ignite.internal.processors.security.SecurityUtils.nodeSecurityContext;
+import static org.apache.ignite.internal.thread.context.DistributedOperationContextAttribute.SECURITY;
import static org.apache.ignite.plugin.security.SecurityPermission.ADMIN_USER_ACCESS;
import static org.apache.ignite.plugin.security.SecurityPermission.JOIN_AS_SERVER;
@@ -88,8 +90,12 @@
return SANDBOXED_NODES_COUNTER.get() > 0;
}
- /** Context attribute that holds Security Context. */
- private static final OperationContextAttribute<SecurityContext> SEC_CTX = OperationContextAttribute.newInstance();
+ /**
+ * Attribute that holds local and distributed Security Context.
+ *
+ * @see OperationContextDispatcher
+ */
+ private static final OperationContextAttribute<SecurityContextWrapper> SEC_CTX_ATTR = OperationContextAttribute.newInstance();
/** Security processor. */
private final GridSecurityProcessor secPrc;
@@ -126,28 +132,12 @@
/** {@inheritDoc} */
@Override public Scope withContext(SecurityContext secCtx) {
- return OperationContext.set(SEC_CTX, secCtx == dfltSecCtx ? null : secCtx);
+ return OperationContext.set(SEC_CTX_ATTR, secCtx == dfltSecCtx ? null : new SecurityContextWrapper(secCtx));
}
/** {@inheritDoc} */
@Override public Scope withContext(UUID subjId) {
- try {
- SecurityContext res = secPrc.securityContext(subjId);
-
- if (res == null) {
- res = findNodeSecurityContext(subjId);
-
- if (res == null)
- throw new IllegalStateException("Failed to find security context for subject with given ID : " + subjId);
- }
-
- return withContext(res);
- }
- catch (Throwable e) {
- log.error(FAILED_OBTAIN_SEC_CTX_MSG, e);
-
- throw e;
- }
+ return withContext(securityContext(subjId));
}
/**
@@ -172,14 +162,41 @@
/** {@inheritDoc} */
@Override public boolean isDefaultContext() {
- return OperationContext.get(SEC_CTX) == null;
+ return OperationContext.get(SEC_CTX_ATTR) == null;
}
/** {@inheritDoc} */
@Override public SecurityContext securityContext() {
- SecurityContext res = OperationContext.get(SEC_CTX);
+ SecurityContextWrapper secCtx = OperationContext.get(SEC_CTX_ATTR);
- return res == null ? dfltSecCtx : res;
+ if (secCtx == null)
+ return dfltSecCtx;
+
+ if (secCtx.delegate() == null)
+ secCtx.delegate(securityContext(secCtx.subjId));
+
+ return secCtx.delegate();
+ }
+
+ /** */
+ private SecurityContext securityContext(UUID subjId) {
+ try {
+ SecurityContext res = secPrc.securityContext(subjId);
+
+ if (res == null) {
+ res = findNodeSecurityContext(subjId);
+
+ if (res == null)
+ throw new IllegalStateException("Failed to find security context for subject with given ID : " + subjId);
+ }
+
+ return res;
+ }
+ catch (Throwable e) {
+ log.error(FAILED_OBTAIN_SEC_CTX_MSG, e);
+
+ throw e;
+ }
}
/** {@inheritDoc} */
@@ -236,6 +253,8 @@
@Override public void start() throws IgniteCheckedException {
super.start();
+ ctx.operationContextDispatcher().registerDistributedAttribute(SECURITY.id(), SEC_CTX_ATTR);
+
ctx.addNodeAttribute(ATTR_GRID_SEC_PROC_CLASS, secPrc.getClass().getName());
secPrc.start();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/security/SecurityContextWrapper.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/security/SecurityContextWrapper.java
new file mode 100644
index 0000000..81777e5
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/security/SecurityContextWrapper.java
@@ -0,0 +1,61 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.security;
+
+import java.util.UUID;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.internal.thread.context.DistributedOperationContextAttribute;
+import org.apache.ignite.internal.thread.context.OperationContextDispatcher;
+import org.apache.ignite.plugin.extensions.communication.Message;
+import org.apache.ignite.plugin.security.SecuritySubject;
+
+/**
+ * {@link SecurityContext} attribute value holder and message for {@link SecuritySubject}'s id.
+ *
+ * @see OperationContextDispatcher#collectDistributedAttributes()
+ * @see DistributedOperationContextAttribute#SECURITY
+ */
+public class SecurityContextWrapper implements Message {
+ /** A value of {@link SecuritySubject#id()} */
+ @Order(0)
+ UUID subjId;
+
+ /** Transient, effective {@link SecurityContext}. */
+ private SecurityContext delegate;
+
+ /** Empty constructor for serialization purposes. */
+ public SecurityContextWrapper() {
+ // No-op.
+ }
+
+ /** */
+ public SecurityContextWrapper(SecurityContext delegate) {
+ this.delegate = delegate;
+ this.subjId = delegate.subject().id();
+ }
+
+ /** */
+ public SecurityContext delegate() {
+ return delegate;
+ }
+
+ /** */
+ public void delegate(SecurityContext delegate) {
+ this.delegate = delegate;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java
index e7f5954..3411854 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/service/IgniteServiceProcessor.java
@@ -389,7 +389,7 @@
if (data.commonData() == null)
return;
- ServiceProcessorCommonDiscoveryData clusterData = (ServiceProcessorCommonDiscoveryData)data.commonData();
+ ServiceProcessorCommonDiscoveryData clusterData = data.commonData();
for (ServiceInfo desc : clusterData.registeredServices()) {
try {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/NoopTracing.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/NoopTracing.java
index 7756375..c7cd10f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/NoopTracing.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/NoopTracing.java
@@ -22,15 +22,11 @@
import org.apache.ignite.logger.NullLogger;
import org.apache.ignite.spi.tracing.TracingConfigurationManager;
import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
/**
* Noop implementation of {@link Tracing}.
*/
-public class NoopTracing implements Tracing {
- /** Noop serialized span. */
- public static final byte[] NOOP_SERIALIZED_SPAN = new byte[0];
-
+public class NoopTracing extends NoopSpanManager implements Tracing {
/** Traceable messages handler. */
private final TraceableMessagesHandler msgHnd;
@@ -47,29 +43,6 @@
}
/** {@inheritDoc} */
- @Override public Span create(@NotNull SpanType spanType, @Nullable Span parentSpan) {
- return NoopSpan.INSTANCE;
- }
-
- /** {@inheritDoc} */
- @Override public Span create(@NotNull SpanType spanType, @Nullable byte[] serializedParentSpan) {
- return NoopSpan.INSTANCE;
- }
-
- /** {@inheritDoc} */
- @Override public @NotNull Span create(
- @NotNull SpanType spanType,
- @Nullable Span parentSpan,
- @Nullable String label) {
- return NoopSpan.INSTANCE;
- }
-
- /** {@inheritDoc} */
- @Override public byte[] serialize(@NotNull Span span) {
- return NOOP_SERIALIZED_SPAN;
- }
-
- /** {@inheritDoc} */
@Override public @NotNull TracingConfigurationManager configuration() {
return NoopTracingConfigurationManager.INSTANCE;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNode.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNode.java
index 98e2030..c507bdf 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNode.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/optimizer/affinity/PartitionNode.java
@@ -41,7 +41,6 @@
*/
int joinGroup();
-
/**
* @return First met cache name of an any <code>PartitionSingleNode</code>
* during <code>PartitionNode</code> tree traversal. This method is intended to be used within the Jdbc thin client.
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java b/modules/core/src/main/java/org/apache/ignite/internal/thread/context/DistributedOperationContextAttribute.java
similarity index 60%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java
copy to modules/core/src/main/java/org/apache/ignite/internal/thread/context/DistributedOperationContextAttribute.java
index 706d2c2..7c6899f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/binary/BinaryMetadataVersionsData.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/thread/context/DistributedOperationContextAttribute.java
@@ -15,25 +15,22 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.cache.binary;
+package org.apache.ignite.internal.thread.context;
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+import org.apache.ignite.internal.processors.security.SecurityContext;
+import org.apache.ignite.internal.processors.security.SecurityContextWrapper;
-/** */
-public class BinaryMetadataVersionsData implements Message {
- /** */
- @Order(0)
- Map<Integer, BinaryMetadataVersionInfo> data;
-
- /** */
- public BinaryMetadataVersionsData() {}
-
+/** Ids of Ignite's known distributed operation context attributes. */
+public enum DistributedOperationContextAttribute {
/**
- * @param data Data.
+ * Distributed {@link SecurityContext}.
+ *
+ * @see SecurityContextWrapper
*/
- public BinaryMetadataVersionsData(Map<Integer, BinaryMetadataVersionInfo> data) {
- this.data = Map.copyOf(data);
+ SECURITY;
+
+ /** Cluster-wide id of distributed attribute. */
+ public byte id() {
+ return (byte)ordinal();
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/thread/context/OperationContextDispatcher.java b/modules/core/src/main/java/org/apache/ignite/internal/thread/context/OperationContextDispatcher.java
new file mode 100644
index 0000000..11f56e0
--- /dev/null
+++ b/modules/core/src/main/java/org/apache/ignite/internal/thread/context/OperationContextDispatcher.java
@@ -0,0 +1,145 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.internal.thread.context;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentSkipListMap;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.OperationContextMessage;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.plugin.extensions.communication.Message;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Provides the ability to manage {@link OperationContext} attributes in a distributed manner.
+ *
+ * <p>This mechanism is primarily used to propagate {@link OperationContext} state across the cluster by
+ * capturing it before a message is sent, transferring it together with the message, and restoring it on
+ * the receiving node before message processing begins.</p>
+ *
+ * <p>The implementation relies on a mapping between a distributed identifier and an
+ * {@link OperationContextAttribute} instance that is consistent across all cluster nodes.</p>
+ *
+ * <p>To enable propagation of an {@link OperationContextAttribute} value across cluster nodes, the
+ * attribute must be registered with the {@link #registerDistributedAttribute(int, OperationContextAttribute)} method.
+ *
+ * <p> Note, that the maximum number of distributed attributes to register is currently limited to
+ * {@link #MAX_ATTRS_CNT} for implementation reasons.</p>
+ *
+ * @see OperationContext
+ * @see OperationContextMessage
+ * @see DistributedOperationContextAttribute
+ */
+public class OperationContextDispatcher {
+ /** Maximal number of supported distributed attributes. */
+ static final byte MAX_ATTRS_CNT = Byte.SIZE;
+
+ /** Registered distributed attributes by their cluster-wide id. */
+ private final Map<Byte, OperationContextAttribute<? extends Message>> attrs = new ConcurrentSkipListMap<>();
+
+ /** Whether the registration of new distributed attributes is allowed. */
+ private volatile boolean regFinished;
+
+ /**
+ * Registers an attribute of {@link OperationContext} with the specified distributed ID.
+ *
+ * <p>The distributed ID is used to consistently identify the attribute across all nodes in the cluster.
+ * It must be unique, and its value must be in the range [{@code 0} : {@code Byte.SIZE}).</p>
+ *
+ * <p>Registered attribute value is automatically captured and propagated between cluster nodes
+ * during the messages transmission.</p>
+ */
+ public <T extends Message> void registerDistributedAttribute(int id, OperationContextAttribute<T> attr) {
+ if (regFinished)
+ throw new IgniteException("Initialization of distributed operation context attributes has already finished.");
+
+ assert id >= 0 && id < MAX_ATTRS_CNT : "Invalid distributed attributed id [id=" + id + ']';
+
+ if (attrs.putIfAbsent((byte)id, attr) != null)
+ throw new IgniteException("Duplicated distributed attribute id [id=" + id + ']');
+ }
+
+ /**
+ * Collects the values of all distributed {@link OperationContextAttribute}s registered by this dispatcher.
+ *
+ * @see OperationContext#get(OperationContextAttribute)
+ */
+ public @Nullable OperationContextMessage collectDistributedAttributes() {
+ OperationContextMessage res = null;
+ List<Message> vals = null;
+
+ for (Map.Entry<Byte, OperationContextAttribute<? extends Message>> e : attrs.entrySet()) {
+ OperationContextAttribute<? extends Message> attr = e.getValue();
+
+ Message curVal = OperationContext.get(attr);
+
+ if (curVal != attr.initialValue()) {
+ if (res == null) {
+ res = new OperationContextMessage();
+
+ vals = new ArrayList<>(MAX_ATTRS_CNT / 2);
+ }
+
+ byte mask = (byte)(1 << e.getKey());
+
+ assert (res.idBitmap & mask) == 0;
+
+ vals.add(curVal);
+ res.idBitmap |= mask;
+ }
+ }
+
+ if (res != null)
+ res.vals = vals.toArray(new Message[vals.size()]);
+
+ return res;
+ }
+
+ /** Restores distributed {@link OperationContextAttribute} values received from a remote node. */
+ public Scope restoreDistributedAttributes(@Nullable OperationContextMessage msg) {
+ if (msg == null)
+ return Scope.NOOP_SCOPE;
+
+ assert msg.idBitmap != 0;
+ assert !F.isEmpty(msg.vals);
+ assert msg.vals.length <= MAX_ATTRS_CNT;
+
+ OperationContext.ContextUpdater updater = OperationContext.ContextUpdater.create();
+
+ for (byte valIdx = 0, maskIdx = 0; valIdx < msg.vals.length; ++valIdx) {
+ Message curVal = msg.vals[valIdx];
+
+ while ((msg.idBitmap & (1 << maskIdx)) == 0)
+ ++maskIdx;
+
+ OperationContextAttribute<Message> attr = (OperationContextAttribute<Message>)attrs.get(maskIdx++);
+
+ assert attr != null;
+
+ updater.set(attr, curVal);
+ }
+
+ return updater.apply();
+ }
+
+ /** Restricts further registration of distributed attributes. */
+ public void finishRegistration() {
+ regFinished = true;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/transactions/IgniteTxOptimisticCheckedException.java b/modules/core/src/main/java/org/apache/ignite/internal/transactions/IgniteTxOptimisticCheckedException.java
index 9430dd7..0cc0ffd 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/transactions/IgniteTxOptimisticCheckedException.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/transactions/IgniteTxOptimisticCheckedException.java
@@ -17,10 +17,12 @@
package org.apache.ignite.internal.transactions;
+import org.apache.ignite.internal.util.future.GridCompoundFuture.SkipLoggingException;
+
/**
* Exception thrown whenever grid transactions fail optimistically.
*/
-public class IgniteTxOptimisticCheckedException extends TransactionCheckedException {
+public class IgniteTxOptimisticCheckedException extends TransactionCheckedException implements SkipLoggingException {
/** */
private static final long serialVersionUID = 0L;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/GridIntList.java b/modules/core/src/main/java/org/apache/ignite/internal/util/GridIntList.java
index 0457b59..6d00a47 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/GridIntList.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/GridIntList.java
@@ -22,7 +22,9 @@
import java.io.ObjectInput;
import java.io.ObjectOutput;
import java.util.Arrays;
+import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.typedef.internal.SB;
+import org.apache.ignite.plugin.extensions.communication.Message;
import static org.apache.ignite.internal.util.IgniteUtils.EMPTY_INTS;
@@ -30,15 +32,17 @@
* Minimal list API to work with primitive ints. This list exists
* to avoid boxing/unboxing when using standard list from Java.
*/
-public class GridIntList implements Externalizable {
+public class GridIntList implements Message, Externalizable {
/** */
private static final long serialVersionUID = 0L;
/** */
- private int[] arr;
+ @Order(0)
+ int[] arr;
/** */
- private int idx;
+ @Order(1)
+ int idx;
/**
*
@@ -223,6 +227,17 @@
return res;
}
+ /**
+ * @param from The initial index of the range to be copied, inclusive.
+ * @param to The final index of the range to be copied, exclusive.
+ * @return a new {@link GridIntList} containing the specified range from the current {@link GridIntList}.
+ */
+ public GridIntList copyOfRange(int from, int to) {
+ assert 0 <= from && from <= to && to <= idx;
+
+ return new GridIntList(Arrays.copyOfRange(arr, from, to));
+ }
+
/** {@inheritDoc} */
@Override public void writeExternal(ObjectOutput out) throws IOException {
out.writeInt(idx);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
index 1513346..1f722fa 100755
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java
@@ -65,7 +65,6 @@
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.channels.FileLock;
-import java.nio.channels.SocketChannel;
import java.nio.charset.Charset;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
@@ -114,7 +113,7 @@
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.function.Consumer;
-import java.util.function.Function;
+import java.util.function.LongConsumer;
import java.util.jar.JarFile;
import java.util.logging.ConsoleHandler;
import java.util.logging.Handler;
@@ -135,6 +134,7 @@
import javax.management.ObjectName;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
+import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCheckedException;
@@ -144,13 +144,7 @@
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.binary.BinaryField;
-import org.apache.ignite.binary.BinaryIdMapper;
-import org.apache.ignite.binary.BinaryNameMapper;
import org.apache.ignite.binary.BinaryObjectBuilder;
-import org.apache.ignite.binary.BinaryObjectException;
-import org.apache.ignite.binary.BinarySerializer;
-import org.apache.ignite.binary.BinaryType;
-import org.apache.ignite.binary.BinaryTypeConfiguration;
import org.apache.ignite.cluster.ClusterGroupEmptyException;
import org.apache.ignite.cluster.ClusterMetrics;
import org.apache.ignite.cluster.ClusterNode;
@@ -171,7 +165,6 @@
import org.apache.ignite.internal.IgniteNodeAttributes;
import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.binary.BinaryMarshaller;
-import org.apache.ignite.internal.binary.BinaryMetadata;
import org.apache.ignite.internal.binary.BinaryMetadataHandler;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.binary.builder.BinaryObjectBuilderEx;
@@ -194,15 +187,18 @@
import org.apache.ignite.internal.processors.cache.CacheObjectContext;
import org.apache.ignite.internal.processors.cache.GridCacheSharedContext;
import org.apache.ignite.internal.processors.cache.IgnitePeerToPeerClassLoadingException;
+import org.apache.ignite.internal.processors.metric.MetricRegistryImpl;
import org.apache.ignite.internal.transactions.IgniteTxHeuristicCheckedException;
import org.apache.ignite.internal.transactions.IgniteTxOptimisticCheckedException;
import org.apache.ignite.internal.transactions.IgniteTxRollbackCheckedException;
import org.apache.ignite.internal.transactions.IgniteTxTimeoutCheckedException;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.future.IgniteFutureImpl;
-import org.apache.ignite.internal.util.lang.GridClosureException;
import org.apache.ignite.internal.util.lang.GridPeerDeployAware;
import org.apache.ignite.internal.util.lang.IgniteThrowableFunction;
+import org.apache.ignite.internal.util.nio.GridNioFilter;
+import org.apache.ignite.internal.util.nio.GridNioServer;
+import org.apache.ignite.internal.util.nio.ssl.GridNioSslFilter;
import org.apache.ignite.internal.util.typedef.C1;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.G;
@@ -231,7 +227,6 @@
import org.apache.ignite.spi.discovery.DiscoverySpiCustomMessage;
import org.apache.ignite.spi.discovery.DiscoverySpiOrderSupport;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
-import org.apache.ignite.thread.IgniteThread;
import org.apache.ignite.transactions.TransactionDeadlockException;
import org.apache.ignite.transactions.TransactionHeuristicException;
import org.apache.ignite.transactions.TransactionOptimisticException;
@@ -300,9 +295,6 @@
/** Empty integers array. */
public static final int[] EMPTY_INTS = new int[0];
- /** Empty longs array. */
- public static final long[] EMPTY_LONGS = new long[0];
-
/** Empty strings array. */
public static final String[] EMPTY_STRS = new String[0];
@@ -350,9 +342,6 @@
public static final String JMX_DOMAIN = IgniteUtils.class.getName().substring(0, IgniteUtils.class.getName().
indexOf('.', IgniteUtils.class.getName().indexOf('.') + 1));
- /** Network packet header. */
- public static final byte[] IGNITE_HEADER = intToBytes(0x0149474E);
-
/** Default buffer size = 4K. */
private static final int BUF_SIZE = 4096;
@@ -413,10 +402,6 @@
public static boolean IGNITE_TEST_FEATURES_ENABLED =
IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_TEST_FEATURES_ENABLED);
- /** For tests. */
- @SuppressWarnings("PublicField")
- public static boolean useTestBinaryCtx;
-
/** */
private static final boolean assertionsEnabled;
@@ -2131,28 +2116,6 @@
}
/**
- * Compares fragments of byte arrays.
- *
- * @param a First array.
- * @param aOff First array offset.
- * @param b Second array.
- * @param bOff Second array offset.
- * @param len Length of fragments.
- * @return {@code true} if fragments are equal, {@code false} otherwise.
- */
- public static boolean bytesEqual(byte[] a, int aOff, byte[] b, int bOff, int len) {
- if (aOff + len > a.length || bOff + len > b.length)
- return false;
- else {
- for (int i = 0; i < len; i++)
- if (a[aOff + i] != b[bOff + i])
- return false;
-
- return true;
- }
- }
-
- /**
* @param bytes Number of bytes to display.
* @param si If {@code true}, then unit base is 1000, otherwise unit base is 1024.
* @return Formatted size.
@@ -2797,47 +2760,6 @@
}
/**
- * Quietly closes given resource ignoring possible checked exception.
- *
- * @param rsrc Resource to close. If it's {@code null} - it's no-op.
- */
- public static void closeQuiet(@Nullable AutoCloseable rsrc) {
- if (rsrc != null)
- try {
- rsrc.close();
- }
- catch (Exception ignored) {
- // No-op.
- }
- }
-
- /**
- * Quietly closes given {@link Socket} ignoring possible checked exception.
- *
- * @param sock Socket to close. If it's {@code null} - it's no-op.
- */
- public static void closeQuiet(@Nullable Socket sock) {
- if (sock == null)
- return;
-
- try {
- // Avoid tls 1.3 incompatibility https://bugs.openjdk.java.net/browse/JDK-8208526
- sock.shutdownOutput();
- sock.shutdownInput();
- }
- catch (Exception ignored) {
- // No-op.
- }
-
- try {
- sock.close();
- }
- catch (Exception ignored) {
- // No-op.
- }
- }
-
- /**
* Quietly releases file lock ignoring all possible exceptions.
*
* @param lock File lock. If it's {@code null} - it's no-op.
@@ -3289,69 +3211,6 @@
}
/**
- * Cancels given runnable.
- *
- * @param w Worker to cancel - it's no-op if runnable is {@code null}.
- */
- public static void cancel(@Nullable GridWorker w) {
- if (w != null)
- w.cancel();
- }
-
- /**
- * Cancels collection of runnables.
- *
- * @param ws Collection of workers - it's no-op if collection is {@code null}.
- */
- public static void cancel(Iterable<? extends GridWorker> ws) {
- if (ws != null)
- for (GridWorker w : ws)
- w.cancel();
- }
-
- /**
- * Joins runnable.
- *
- * @param w Worker to join.
- * @param log The logger to possible exception.
- * @return {@code true} if worker has not been interrupted, {@code false} if it was interrupted.
- */
- public static boolean join(@Nullable GridWorker w, @Nullable IgniteLogger log) {
- if (w != null)
- try {
- w.join();
- }
- catch (InterruptedException ignore) {
- warn(log, "Got interrupted while waiting for completion of runnable: " + w);
-
- Thread.currentThread().interrupt();
-
- return false;
- }
-
- return true;
- }
-
- /**
- * Joins given collection of runnables.
- *
- * @param ws Collection of workers to join.
- * @param log The logger to possible exceptions.
- * @return {@code true} if none of the worker have been interrupted,
- * {@code false} if at least one was interrupted.
- */
- public static boolean join(Iterable<? extends GridWorker> ws, IgniteLogger log) {
- boolean retval = true;
-
- if (ws != null)
- for (GridWorker w : ws)
- if (!join(w, log))
- retval = false;
-
- return retval;
- }
-
- /**
* Shutdowns given {@code ExecutorService} and wait for executor service to stop.
*
* @param owner The ExecutorService owner.
@@ -4881,49 +4740,6 @@
}
/**
- * Unwraps closure exceptions.
- *
- * @param t Exception.
- * @return Unwrapped exception.
- */
- public static Exception unwrap(Throwable t) {
- assert t != null;
-
- while (true) {
- if (t instanceof Error)
- throw (Error)t;
-
- if (t instanceof GridClosureException) {
- t = ((GridClosureException)t).unwrap();
-
- continue;
- }
-
- return (Exception)t;
- }
- }
-
- /**
- * Casts the passed {@code Throwable t} to {@link IgniteCheckedException}.<br>
- * If {@code t} is a {@link GridClosureException}, it is unwrapped and then cast to {@link IgniteCheckedException}.
- * If {@code t} is an {@link IgniteCheckedException}, it is returned.
- * If {@code t} is not a {@link IgniteCheckedException}, a new {@link IgniteCheckedException} caused by {@code t}
- * is returned.
- *
- * @param t Throwable to cast.
- * @return {@code t} cast to {@link IgniteCheckedException}.
- */
- public static IgniteCheckedException cast(Throwable t) {
- assert t != null;
-
- t = unwrap(t);
-
- return t instanceof IgniteCheckedException
- ? (IgniteCheckedException)t
- : new IgniteCheckedException(t);
- }
-
- /**
* Checks if class loader is an internal P2P class loader.
*
* @param ldr Class loader to check.
@@ -5154,23 +4970,6 @@
}
/**
- * Sleeps for given number of milliseconds.
- *
- * @param ms Time to sleep.
- * @throws IgniteInterruptedCheckedException Wrapped {@link InterruptedException}.
- */
- public static void sleep(long ms) throws IgniteInterruptedCheckedException {
- try {
- Thread.sleep(ms);
- }
- catch (InterruptedException e) {
- Thread.currentThread().interrupt();
-
- throw new IgniteInterruptedCheckedException(e);
- }
- }
-
- /**
* Joins worker.
*
* @param w Worker.
@@ -5649,30 +5448,6 @@
}
/**
- * Gets absolute value for integer. If integer is {@link Integer#MIN_VALUE}, then {@code 0} is returned.
- *
- * @param i Integer.
- * @return Absolute value.
- */
- public static int safeAbs(int i) {
- i = Math.abs(i);
-
- return i < 0 ? 0 : i;
- }
-
- /**
- * Gets absolute value for long. If argument is {@link Long#MIN_VALUE}, then {@code 0} is returned.
- *
- * @param i Argument.
- * @return Absolute value.
- */
- public static long safeAbs(long i) {
- i = Math.abs(i);
-
- return i < 0 ? 0 : i;
- }
-
- /**
* When {@code long} value given is positive returns that value, otherwise returns provided default value.
*
* @param i Input value.
@@ -7290,31 +7065,6 @@
}
/**
- * Utility method to add the given throwable error to the given throwable root error. If the given
- * suppressed throwable is an {@code Error}, but the root error is not, will change the root to the {@code Error}.
- *
- * @param root Root error to add suppressed error to.
- * @param err Error to add.
- * @return New root error.
- */
- public static <T extends Throwable> T addSuppressed(T root, T err) {
- assert err != null;
-
- if (root == null)
- return err;
-
- if (err instanceof Error && !(root instanceof Error)) {
- err.addSuppressed(root);
-
- root = err;
- }
- else
- root.addSuppressed(err);
-
- return root;
- }
-
- /**
* @return {@code true} if local node is coordinator.
*/
public static boolean isLocalNodeCoordinator(GridDiscoveryManager discoMgr) {
@@ -7451,30 +7201,6 @@
}
/**
- * Safely write buffer fully to blocking socket channel.
- * Will throw assert if non blocking channel passed.
- *
- * @param sockCh WritableByteChannel.
- * @param buf Buffer.
- * @throws IOException IOException.
- */
- public static void writeFully(SocketChannel sockCh, ByteBuffer buf) throws IOException {
- int totalWritten = 0;
-
- assert sockCh.isBlocking() : "SocketChannel should be in blocking mode " + sockCh;
-
- while (buf.hasRemaining()) {
- int written = sockCh.write(buf);
-
- if (written < 0)
- throw new IOException("Error writing buffer to channel " +
- "[written = " + written + ", buf " + buf + ", totalWritten = " + totalWritten + "]");
-
- totalWritten += written;
- }
- }
-
- /**
* @return New identity hash set.
*/
public static <X> Set<X> newIdentityHashSet() {
@@ -7896,35 +7622,16 @@
) {
BinaryConfiguration bcfg = cfg.getBinaryConfiguration() == null ? new BinaryConfiguration() : cfg.getBinaryConfiguration();
- return useTestBinaryCtx
- ? new TestBinaryContext(
- metaHnd,
- marsh,
- cfg.getIgniteInstanceName(),
- cfg.getClassLoader(),
- bcfg.getSerializer(),
- bcfg.getIdMapper(),
- bcfg.getNameMapper(),
- bcfg.getTypeConfigurations(),
- CU.affinityFields(cfg),
- bcfg.isCompactFooter(),
- CU::affinityFieldName,
- log
- )
- : new BinaryContext(
- metaHnd,
- marsh,
- cfg.getIgniteInstanceName(),
- cfg.getClassLoader(),
- bcfg.getSerializer(),
- bcfg.getIdMapper(),
- bcfg.getNameMapper(),
- bcfg.getTypeConfigurations(),
- CU.affinityFields(cfg),
- bcfg.isCompactFooter(),
- CU::affinityFieldName,
- log
- );
+ return BinaryUtils.binaryContext(
+ metaHnd,
+ marsh,
+ cfg.getIgniteInstanceName(),
+ cfg.getClassLoader(),
+ bcfg,
+ CU.affinityFields(cfg),
+ BinaryUtils::affinityFieldName,
+ log
+ );
}
/**
@@ -8000,106 +7707,6 @@
}
}
- /**
- * Creates thread with given worker.
- *
- * @param worker Runnable to create thread with.
- */
- public static IgniteThread newThread(GridWorker worker) {
- return new IgniteThread(worker.igniteInstanceName(), worker.name(), worker);
- }
-
- /** */
- @SuppressWarnings("PublicInnerClass")
- public static class TestBinaryContext extends BinaryContext {
- /** */
- private List<TestBinaryContextListener> listeners;
-
- /** */
- public TestBinaryContext(
- BinaryMetadataHandler metaHnd,
- @Nullable BinaryMarshaller marsh,
- @Nullable String igniteInstanceName,
- @Nullable ClassLoader clsLdr,
- @Nullable BinarySerializer dfltSerializer,
- @Nullable BinaryIdMapper idMapper,
- @Nullable BinaryNameMapper nameMapper,
- @Nullable Collection<BinaryTypeConfiguration> typeCfgs,
- Map<String, String> affFlds,
- boolean compactFooter,
- Function<Class<?>, String> affFldNameProvider,
- IgniteLogger log
- ) {
- super(
- metaHnd,
- marsh,
- igniteInstanceName,
- clsLdr,
- dfltSerializer,
- idMapper,
- nameMapper,
- typeCfgs,
- affFlds,
- compactFooter,
- affFldNameProvider,
- log
- );
- }
-
-
- /** {@inheritDoc} */
- @Nullable @Override public BinaryType metadata(int typeId) throws BinaryObjectException {
- BinaryType metadata = super.metadata(typeId);
-
- if (listeners != null) {
- for (TestBinaryContextListener listener : listeners)
- listener.onAfterMetadataRequest(typeId, metadata);
- }
-
- return metadata;
- }
-
- /** {@inheritDoc} */
- @Override public void updateMetadata(int typeId, BinaryMetadata meta, boolean failIfUnregistered) throws BinaryObjectException {
- if (listeners != null) {
- for (TestBinaryContextListener listener : listeners)
- listener.onBeforeMetadataUpdate(typeId, meta);
- }
-
- super.updateMetadata(typeId, meta, failIfUnregistered);
- }
-
- /** */
- public interface TestBinaryContextListener {
- /**
- * @param typeId Type id.
- * @param type Type.
- */
- void onAfterMetadataRequest(int typeId, BinaryType type);
-
- /**
- * @param typeId Type id.
- * @param metadata Metadata.
- */
- void onBeforeMetadataUpdate(int typeId, BinaryMetadata metadata);
- }
-
- /** @param lsnr Listener. */
- public void addListener(TestBinaryContextListener lsnr) {
- if (listeners == null)
- listeners = new ArrayList<>();
-
- if (!listeners.contains(lsnr))
- listeners.add(lsnr);
- }
-
- /** */
- public void clearAllListener() {
- if (listeners != null)
- listeners.clear();
- }
- }
-
/** */
public static final IgniteDataTransferObjectSerializer<?> EMPTY_DTO_SERIALIZER = new IgniteDataTransferObjectSerializer() {
/** {@inheritDoc} */
@@ -8136,4 +7743,68 @@
return msg instanceof SecurityAwareCustomMessageWrapper ?
((SecurityAwareCustomMessageWrapper)msg).delegate() : (DiscoveryCustomMessage)msg;
}
+
+ /**
+ * Sets the received/sent bytes and per-session queue-size metric consumers on the given NIO server builder,
+ * creating the underlying metrics in the provided registry.
+ *
+ * @param builder NIO server builder.
+ * @param mreg Metric registry.
+ * @return The given builder for chaining.
+ */
+ public static <T> GridNioServer.Builder<T> setNioServerMetrics(GridNioServer.Builder<T> builder, MetricRegistryImpl mreg) {
+ return builder
+ .receivedBytesMetric(mreg.longAdderMetric(
+ GridNioServer.RECEIVED_BYTES_METRIC_NAME, GridNioServer.RECEIVED_BYTES_METRIC_DESC)::add)
+ .sentBytesMetric(mreg.longAdderMetric(
+ GridNioServer.SENT_BYTES_METRIC_NAME, GridNioServer.SENT_BYTES_METRIC_DESC)::add)
+ .outboundMessagesQueueSizeMetric(mreg.longAdderMetric(
+ GridNioServer.OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_NAME,
+ GridNioServer.OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_DESC)::add)
+ .maxMessagesQueueSizeMetric(mreg.maxValueMetric(
+ GridNioServer.MAX_MESSAGES_QUEUE_SIZE_METRIC_NAME,
+ GridNioServer.MAX_MESSAGES_QUEUE_SIZE_METRIC_DESC, 60_000, 5)::update);
+ }
+
+ /**
+ * Registers the active TCP sessions count metric in the given registry, backed by the NIO server.
+ *
+ * @param srv NIO server.
+ * @param mreg Metric registry.
+ */
+ public static void registerNioServerMetrics(GridNioServer<?> srv, GridNioFilter[] filters, MetricRegistryImpl mreg) {
+ boolean sslEnabled = Arrays.stream(filters).anyMatch(filter -> filter instanceof GridNioSslFilter);
+
+ mreg.register(GridNioServer.SSL_ENABLED_METRIC_NAME, () -> sslEnabled, "Whether SSL is enabled");
+ mreg.register(GridNioServer.SESSIONS_CNT_METRIC_NAME, srv::activeTcpSessionsCount, "Active TCP sessions count.");
+ }
+
+ /**
+ * Creates an SSL NIO filter, wiring its metrics from the given registry.
+ *
+ * @param sslCtx SSL context.
+ * @param directBuf Direct buffer flag.
+ * @param order Byte order.
+ * @param log Logger to use.
+ * @param mreg Optional metric registry; if {@code null}, the filter is created without metrics.
+ * @return SSL NIO filter.
+ */
+ public static GridNioSslFilter sslFilter(
+ SSLContext sslCtx,
+ boolean directBuf,
+ ByteOrder order,
+ IgniteLogger log,
+ @Nullable MetricRegistryImpl mreg
+ ) {
+ LongConsumer handshakeDuration = mreg == null ? null : mreg.histogram(
+ GridNioSslFilter.SSL_HANDSHAKE_DURATION_HISTOGRAM_METRIC_NAME,
+ new long[] {250, 500, 1000},
+ "SSL handshake duration in milliseconds.")::value;
+
+ Runnable rejectedSesCnt = mreg == null ? null : mreg.intMetric(
+ GridNioSslFilter.SSL_REJECTED_SESSIONS_CNT_METRIC_NAME,
+ "TCP sessions count that were rejected due to SSL errors.")::increment;
+
+ return new GridNioSslFilter(sslCtx, directBuf, order, log, handshakeDuration, rejectedSesCnt);
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/DistributedProcess.java b/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/DistributedProcess.java
index f4aeb18..3d0ce06 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/DistributedProcess.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/distributed/DistributedProcess.java
@@ -24,7 +24,6 @@
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.BiFunction;
-import java.util.function.Function;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.cluster.ClusterNode;
@@ -97,7 +96,7 @@
public DistributedProcess(
GridKernalContext ctx,
DistributedProcessType type,
- Function<I, IgniteInternalFuture<R>> exec,
+ BiFunction<UUID, I, IgniteInternalFuture<R>> exec,
CI3<UUID, Map<UUID, R>, Map<UUID, Throwable>> finish
) {
this(ctx, type, exec, finish, (id, req) -> new InitMessage<>(id, type, req, false));
@@ -113,7 +112,7 @@
public DistributedProcess(
GridKernalContext ctx,
DistributedProcessType type,
- Function<I, IgniteInternalFuture<R>> exec,
+ BiFunction<UUID, I, IgniteInternalFuture<R>> exec,
CI3<UUID, Map<UUID, R>, Map<UUID, Throwable>> finish,
BiFunction<UUID, I, ? extends InitMessage<I>> initMsgFactory
) {
@@ -150,7 +149,7 @@
initCoordinator(p, topVer);
try {
- IgniteInternalFuture<R> fut = exec.apply((I)msg.request());
+ IgniteInternalFuture<R> fut = exec.apply(msg.processId(), (I)msg.request());
fut.listen(() -> {
if (fut.error() != null)
@@ -499,6 +498,26 @@
/**
* Snapshot partitions validation.
*/
- CHECK_SNAPSHOT_PARTS
+ CHECK_SNAPSHOT_PARTS,
+
+ /**
+ * Cluster version Rolling Upgrade enable process.
+ */
+ RU_ENABLE,
+
+ /**
+ * Cluster version finalization prepare phase.
+ */
+ RU_PREPARE_VERSION_FINALIZATION,
+
+ /**
+ * Cluster version finalization complete phase.
+ */
+ RU_COMPLETE_VERSION_FINALIZATION,
+
+ /**
+ * Cluster version finalization abort process.
+ */
+ RU_ABORT_VERSION_FINALIZATION,
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterMetricsMXBean.java b/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterMetricsMXBean.java
index d5f834f..e5aaa73 100644
--- a/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterMetricsMXBean.java
+++ b/modules/core/src/main/java/org/apache/ignite/mxbean/ClusterMetricsMXBean.java
@@ -27,239 +27,239 @@
@MXBeanDescription("MBean that provides access to aggregated cluster metrics.")
public interface ClusterMetricsMXBean extends ClusterMetrics {
/** {@inheritDoc} */
- @Override @MXBeanDescription("Last update time of this node metrics.")
- public long getLastUpdateTime();
+ @MXBeanDescription("Last update time of this node metrics.")
+ @Override public long getLastUpdateTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Maximum number of jobs that ever ran concurrently on this node.")
- public int getMaximumActiveJobs();
+ @MXBeanDescription("Maximum number of jobs that ever ran concurrently on this node.")
+ @Override public int getMaximumActiveJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Number of currently active jobs concurrently executing on the node.")
- public int getCurrentActiveJobs();
+ @MXBeanDescription("Number of currently active jobs concurrently executing on the node.")
+ @Override public int getCurrentActiveJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Average number of active jobs concurrently executing on the node.")
- public float getAverageActiveJobs();
+ @MXBeanDescription("Average number of active jobs concurrently executing on the node.")
+ @Override public float getAverageActiveJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Maximum number of waiting jobs this node had.")
- public int getMaximumWaitingJobs();
+ @MXBeanDescription("Maximum number of waiting jobs this node had.")
+ @Override public int getMaximumWaitingJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Number of queued jobs currently waiting to be executed.")
- public int getCurrentWaitingJobs();
+ @MXBeanDescription("Number of queued jobs currently waiting to be executed.")
+ @Override public int getCurrentWaitingJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Average number of waiting jobs this node had queued.")
- public float getAverageWaitingJobs();
+ @MXBeanDescription("Average number of waiting jobs this node had queued.")
+ @Override public float getAverageWaitingJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Maximum number of jobs rejected at once during a single collision resolution operation.")
- public int getMaximumRejectedJobs();
+ @MXBeanDescription("Maximum number of jobs rejected at once during a single collision resolution operation.")
+ @Override public int getMaximumRejectedJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Number of jobs rejected after more recent collision resolution operation.")
- public int getCurrentRejectedJobs();
+ @MXBeanDescription("Number of jobs rejected after more recent collision resolution operation.")
+ @Override public int getCurrentRejectedJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Average number of jobs this node rejects during collision resolution operations.")
- public float getAverageRejectedJobs();
+ @MXBeanDescription("Average number of jobs this node rejects during collision resolution operations.")
+ @Override public float getAverageRejectedJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription(
+ @MXBeanDescription(
"Total number of jobs this node rejects during collision resolution operations since node startup.")
- public int getTotalRejectedJobs();
+ @Override public int getTotalRejectedJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Maximum number of cancelled jobs this node ever had running concurrently.")
- public int getMaximumCancelledJobs();
+ @MXBeanDescription("Maximum number of cancelled jobs this node ever had running concurrently.")
+ @Override public int getMaximumCancelledJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Number of cancelled jobs that are still running.")
- public int getCurrentCancelledJobs();
+ @MXBeanDescription("Number of cancelled jobs that are still running.")
+ @Override public int getCurrentCancelledJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Average number of cancelled jobs this node ever had running concurrently.")
- public float getAverageCancelledJobs();
+ @MXBeanDescription("Average number of cancelled jobs this node ever had running concurrently.")
+ @Override public float getAverageCancelledJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Total number of cancelled jobs since node startup.")
- public int getTotalCancelledJobs();
+ @MXBeanDescription("Total number of cancelled jobs since node startup.")
+ @Override public int getTotalCancelledJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Total number of jobs handled by the node.")
- public int getTotalExecutedJobs();
+ @MXBeanDescription("Total number of jobs handled by the node.")
+ @Override public int getTotalExecutedJobs();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Total time all finished jobs takes to execute on the node.")
- public long getTotalJobsExecutionTime();
+ @MXBeanDescription("Total time all finished jobs takes to execute on the node.")
+ @Override public long getTotalJobsExecutionTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Maximum time a job ever spent waiting in a queue to be executed.")
- public long getMaximumJobWaitTime();
+ @MXBeanDescription("Maximum time a job ever spent waiting in a queue to be executed.")
+ @Override public long getMaximumJobWaitTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Current wait time of oldest job.")
- public long getCurrentJobWaitTime();
+ @MXBeanDescription("Current wait time of oldest job.")
+ @Override public long getCurrentJobWaitTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Average time jobs spend waiting in the queue to be executed.")
- public double getAverageJobWaitTime();
+ @MXBeanDescription("Average time jobs spend waiting in the queue to be executed.")
+ @Override public double getAverageJobWaitTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Time it took to execute the longest job on the node.")
- public long getMaximumJobExecuteTime();
+ @MXBeanDescription("Time it took to execute the longest job on the node.")
+ @Override public long getMaximumJobExecuteTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Longest time a current job has been executing for.")
- public long getCurrentJobExecuteTime();
+ @MXBeanDescription("Longest time a current job has been executing for.")
+ @Override public long getCurrentJobExecuteTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Average time a job takes to execute on the node.")
- public double getAverageJobExecuteTime();
+ @MXBeanDescription("Average time a job takes to execute on the node.")
+ @Override public double getAverageJobExecuteTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Total number of tasks handled by the node.")
- public int getTotalExecutedTasks();
+ @MXBeanDescription("Total number of tasks handled by the node.")
+ @Override public int getTotalExecutedTasks();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Total time this node spent executing jobs.")
- public long getTotalBusyTime();
+ @MXBeanDescription("Total time this node spent executing jobs.")
+ @Override public long getTotalBusyTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Total time this node spent idling (not executing any jobs).")
- public long getTotalIdleTime();
+ @MXBeanDescription("Total time this node spent idling (not executing any jobs).")
+ @Override public long getTotalIdleTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Time this node spend idling since executing last job.")
- public long getCurrentIdleTime();
+ @MXBeanDescription("Time this node spend idling since executing last job.")
+ @Override public long getCurrentIdleTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Percentage of time this node is busy executing jobs vs. idling.")
- public float getBusyTimePercentage();
+ @MXBeanDescription("Percentage of time this node is busy executing jobs vs. idling.")
+ @Override public float getBusyTimePercentage();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Percentage of time this node is idling vs. executing jobs.")
- public float getIdleTimePercentage();
+ @MXBeanDescription("Percentage of time this node is idling vs. executing jobs.")
+ @Override public float getIdleTimePercentage();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The number of CPUs available to the Java Virtual Machine.")
- public int getTotalCpus();
+ @MXBeanDescription("The number of CPUs available to the Java Virtual Machine.")
+ @Override public int getTotalCpus();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The system load average; or a negative value if not available.")
- public double getCurrentCpuLoad();
+ @MXBeanDescription("The system load average; or a negative value if not available.")
+ @Override public double getCurrentCpuLoad();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Average of CPU load values over all metrics kept in the history.")
- public double getAverageCpuLoad();
+ @MXBeanDescription("Average of CPU load values over all metrics kept in the history.")
+ @Override public double getAverageCpuLoad();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Average time spent in GC since the last update.")
- public double getCurrentGcCpuLoad();
+ @MXBeanDescription("Average time spent in GC since the last update.")
+ @Override public double getCurrentGcCpuLoad();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The initial size of memory in bytes; -1 if undefined.")
- public long getHeapMemoryInitialized();
+ @MXBeanDescription("The initial size of memory in bytes; -1 if undefined.")
+ @Override public long getHeapMemoryInitialized();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Current heap size that is used for object allocation.")
- public long getHeapMemoryUsed();
+ @MXBeanDescription("Current heap size that is used for object allocation.")
+ @Override public long getHeapMemoryUsed();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The amount of committed memory in bytes.")
- public long getHeapMemoryCommitted();
+ @MXBeanDescription("The amount of committed memory in bytes.")
+ @Override public long getHeapMemoryCommitted();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The maximum amount of memory in bytes; -1 if undefined.")
- public long getHeapMemoryMaximum();
+ @MXBeanDescription("The maximum amount of memory in bytes; -1 if undefined.")
+ @Override public long getHeapMemoryMaximum();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The total amount of memory in bytes; -1 if undefined.")
- public long getHeapMemoryTotal();
+ @MXBeanDescription("The total amount of memory in bytes; -1 if undefined.")
+ @Override public long getHeapMemoryTotal();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The initial size of memory in bytes; -1 if undefined.")
- public long getNonHeapMemoryInitialized();
+ @MXBeanDescription("The initial size of memory in bytes; -1 if undefined.")
+ @Override public long getNonHeapMemoryInitialized();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Current non-heap memory size that is used by Java VM.")
- public long getNonHeapMemoryUsed();
+ @MXBeanDescription("Current non-heap memory size that is used by Java VM.")
+ @Override public long getNonHeapMemoryUsed();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Amount of non-heap memory in bytes that is committed for the JVM to use.")
- public long getNonHeapMemoryCommitted();
+ @MXBeanDescription("Amount of non-heap memory in bytes that is committed for the JVM to use.")
+ @Override public long getNonHeapMemoryCommitted();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Maximum amount of non-heap memory in bytes that can " +
+ @MXBeanDescription("Maximum amount of non-heap memory in bytes that can " +
"be used for memory management. -1 if undefined.")
- public long getNonHeapMemoryMaximum();
+ @Override public long getNonHeapMemoryMaximum();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Total amount of non-heap memory in bytes that can " +
+ @MXBeanDescription("Total amount of non-heap memory in bytes that can " +
"be used for memory management. -1 if undefined.")
- public long getNonHeapMemoryTotal();
+ @Override public long getNonHeapMemoryTotal();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Uptime of the JVM in milliseconds.")
- public long getUpTime();
+ @MXBeanDescription("Uptime of the JVM in milliseconds.")
+ @Override public long getUpTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Start time of the JVM in milliseconds.")
- public long getStartTime();
+ @MXBeanDescription("Start time of the JVM in milliseconds.")
+ @Override public long getStartTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Current number of live threads.")
- public int getCurrentThreadCount();
+ @MXBeanDescription("Current number of live threads.")
+ @Override public int getCurrentThreadCount();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The peak live thread count.")
- public int getMaximumThreadCount();
+ @MXBeanDescription("The peak live thread count.")
+ @Override public int getMaximumThreadCount();
/** {@inheritDoc} */
- @Override @MXBeanDescription("The total number of threads started.")
- public long getTotalStartedThreadCount();
+ @MXBeanDescription("The total number of threads started.")
+ @Override public long getTotalStartedThreadCount();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Current number of live daemon threads.")
- public int getCurrentDaemonThreadCount();
+ @MXBeanDescription("Current number of live daemon threads.")
+ @Override public int getCurrentDaemonThreadCount();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Last data version.")
- public long getLastDataVersion();
+ @MXBeanDescription("Last data version.")
+ @Override public long getLastDataVersion();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Sent messages count.")
- public int getSentMessagesCount();
+ @MXBeanDescription("Sent messages count.")
+ @Override public int getSentMessagesCount();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Sent bytes count.")
- public long getSentBytesCount();
+ @MXBeanDescription("Sent bytes count.")
+ @Override public long getSentBytesCount();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Received messages count.")
- public int getReceivedMessagesCount();
+ @MXBeanDescription("Received messages count.")
+ @Override public int getReceivedMessagesCount();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Received bytes count.")
- public long getReceivedBytesCount();
+ @MXBeanDescription("Received bytes count.")
+ @Override public long getReceivedBytesCount();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Outbound messages queue size.")
- public int getOutboundMessagesQueueSize();
+ @MXBeanDescription("Outbound messages queue size.")
+ @Override public int getOutboundMessagesQueueSize();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Start time of the grid node in milliseconds.")
- public long getNodeStartTime();
+ @MXBeanDescription("Start time of the grid node in milliseconds.")
+ @Override public long getNodeStartTime();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Total number of nodes.")
- public int getTotalNodes();
+ @MXBeanDescription("Total number of nodes.")
+ @Override public int getTotalNodes();
/** {@inheritDoc} */
- @Override @MXBeanDescription("Current PME duration in milliseconds.")
- public long getCurrentPmeDuration();
+ @MXBeanDescription("Current PME duration in milliseconds.")
+ @Override public long getCurrentPmeDuration();
/**
* Get count of total baseline nodes.
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationMetricsListener.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationMetricsListener.java
index 2fb542c..4bf17f1 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationMetricsListener.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationMetricsListener.java
@@ -44,6 +44,8 @@
import static java.util.stream.Collectors.toMap;
import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.SEPARATOR;
import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
+import static org.apache.ignite.internal.util.nio.GridNioServer.OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_DESC;
+import static org.apache.ignite.internal.util.nio.GridNioServer.OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_NAME;
import static org.apache.ignite.internal.util.nio.GridNioServer.RECEIVED_BYTES_METRIC_DESC;
import static org.apache.ignite.internal.util.nio.GridNioServer.RECEIVED_BYTES_METRIC_NAME;
import static org.apache.ignite.internal.util.nio.GridNioServer.SENT_BYTES_METRIC_DESC;
@@ -105,6 +107,9 @@
/** Received messages count metric. */
private final LongAdderMetric rcvdMsgsMetric;
+ /** Outbound messages queue size metric. */
+ private final LongAdderMetric outboundMessagesQueueSizeMetric;
+
/** Counters of sent and received messages by direct type. */
private final IntMap<IgniteBiTuple<LongAdderMetric, LongAdderMetric>> msgCntrsByType;
@@ -146,6 +151,11 @@
sentMsgsMetric = mreg.longAdderMetric(SENT_MESSAGES_METRIC_NAME, SENT_MESSAGES_METRIC_DESC);
rcvdMsgsMetric = mreg.longAdderMetric(RECEIVED_MESSAGES_METRIC_NAME, RECEIVED_MESSAGES_METRIC_DESC);
+ outboundMessagesQueueSizeMetric = mreg.longAdderMetric(
+ OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_NAME,
+ OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_DESC
+ );
+
spiCtx.addMetricRegistryCreationListener(mreg -> {
// Metrics for the specific nodes or other communication metrics.
if (!TcpCommunicationSpi.isCommunicationMetrics(mreg.name()))
@@ -277,6 +287,15 @@
}
/**
+ * Gets outbound messages queue size.
+ *
+ * @return Outbound messages queue size.
+ */
+ public int outboundMessagesQueueSize() {
+ return (int)outboundMessagesQueueSizeMetric.value();
+ }
+
+ /**
* Gets received messages counts (grouped by type).
*
* @return Map containing message types and respective counts.
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
index 3078e20..216219c 100755
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/TcpCommunicationSpi.java
@@ -411,9 +411,10 @@
/** {@inheritDoc} */
@Override public int getOutboundMessagesQueueSize() {
- GridNioServer<Message> srv = nioSrvWrapper.nio();
+ if (metricsLsnr == null)
+ return 0;
- return srv != null ? srv.outboundMessagesQueueSize() : 0;
+ return metricsLsnr.outboundMessagesQueueSize();
}
/** {@inheritDoc} */
@@ -616,7 +617,7 @@
ctxInitLatch,
client,
igniteExSupplier,
- new CommunicationListener<Message>() {
+ new CommunicationListener<>() {
@Override public void onMessage(UUID nodeId, Message msg, IgniteRunnable msgC) {
notifyListener(nodeId, msg, msgC);
}
@@ -651,7 +652,7 @@
getWorkersRegistry(ignite),
ignite instanceof IgniteEx ? ((IgniteEx)ignite).context().metric() : null,
this::createTcpClient,
- new CommunicationListenerEx<Message>() {
+ new CommunicationListenerEx<>() {
@Override public void onMessage(UUID nodeId, Message msg, IgniteRunnable msgC) {
notifyListener(nodeId, msg, msgC);
}
@@ -1161,17 +1162,6 @@
}
/**
- * Concatenates the two parameter bytes to form a message type value.
- *
- * @param b0 The first byte.
- * @param b1 The second byte.
- * @return Message type.
- */
- public static short makeMessageType(byte b0, byte b1) {
- return (short)((b1 & 0xFF) << 8 | b0 & 0xFF);
- }
-
- /**
* @param ignite Ignite.
*/
private static WorkersRegistry getWorkersRegistry(Ignite ignite) {
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/GridNioServerWrapper.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/GridNioServerWrapper.java
index df7935c..eb90f00 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/GridNioServerWrapper.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/GridNioServerWrapper.java
@@ -56,6 +56,7 @@
import org.apache.ignite.internal.managers.GridManager;
import org.apache.ignite.internal.managers.tracing.GridTracingManager;
import org.apache.ignite.internal.processors.metric.GridMetricManager;
+import org.apache.ignite.internal.processors.metric.MetricRegistryImpl;
import org.apache.ignite.internal.processors.tracing.Tracing;
import org.apache.ignite.internal.util.GridConcurrentFactory;
import org.apache.ignite.internal.util.IgniteExceptionRegistry;
@@ -909,7 +910,7 @@
filters.add(new GridConnectionBytesVerifyFilter(log));
if (stateProvider.isSslEnabled()) {
- GridNioSslFilter sslFilter = new GridNioSslFilter(
+ GridNioSslFilter sslFilter = U.sslFilter(
igniteCfg.getSslContextFactory().create(),
true,
ByteOrder.LITTLE_ENDIAN,
@@ -924,6 +925,11 @@
filters.add(sslFilter);
}
+ GridNioFilter[] filtersArr = filters.toArray(new GridNioFilter[filters.size()]);
+
+ MetricRegistryImpl mreg = metricMgr != null ?
+ metricMgr.registry(COMMUNICATION_METRICS_GROUP_NAME) : null;
+
GridNioServer.Builder<Message> builder = GridNioServer.<Message>builder()
.address(cfg.localHost())
.port(port)
@@ -941,7 +947,7 @@
.directMode(true)
.writeTimeout(cfg.socketWriteTimeout())
.selectorSpins(cfg.selectorSpins())
- .filters(filters.toArray(new GridNioFilter[filters.size()]))
+ .filters(filtersArr)
.writerFactory(writerFactory)
.skipRecoveryPredicate(skipRecoveryPred)
.messageQueueSizeListener(queueSizeMonitor)
@@ -949,13 +955,17 @@
.readWriteSelectorsAssign(cfg.usePairedConnections())
.messageFactory(msgFactory);
- if (metricMgr != null) {
- builder.workerListener(workersRegistry)
- .metricRegistry(metricMgr.registry(COMMUNICATION_METRICS_GROUP_NAME));
+ if (mreg != null) {
+ builder.workerListener(workersRegistry);
+
+ U.setNioServerMetrics(builder, mreg);
}
GridNioServer<Message> srvr = builder.build();
+ if (mreg != null)
+ U.registerNioServerMetrics(srvr, filtersArr, mreg);
+
cfg.boundTcpPort(port);
// Ack Port the TCP server was bound to.
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/TcpHandshakeExecutor.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/TcpHandshakeExecutor.java
index 7a609d2..612ef14 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/TcpHandshakeExecutor.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/internal/TcpHandshakeExecutor.java
@@ -39,8 +39,8 @@
import org.apache.ignite.spi.communication.tcp.messages.RecoveryLastReceivedMessageSerializer;
import org.jetbrains.annotations.Nullable;
+import static org.apache.ignite.internal.util.CommonUtils.makeMessageType;
import static org.apache.ignite.plugin.extensions.communication.Message.DIRECT_TYPE_SIZE;
-import static org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.makeMessageType;
import static org.apache.ignite.spi.communication.tcp.messages.RecoveryLastReceivedMessage.NEED_WAIT;
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/messages/RecoveryLastReceivedMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/messages/RecoveryLastReceivedMessage.java
index 354635b..0405c57 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/messages/RecoveryLastReceivedMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/communication/tcp/messages/RecoveryLastReceivedMessage.java
@@ -18,7 +18,6 @@
package org.apache.ignite.spi.communication.tcp.messages;
import org.apache.ignite.internal.Order;
-import org.apache.ignite.internal.direct.stream.DirectByteBufferStream;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -41,7 +40,7 @@
/**
* Message body size in bytes. In worst case it uses 10 bytes for serialization.
*
- * @see DirectByteBufferStream#writeLong(long).
+ * @see org.apache.ignite.internal.direct.stream.DirectByteBufferStream#writeLong(long).
*/
private static final int MESSAGE_SIZE = 10;
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoveryDataBag.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoveryDataBag.java
index 58e4173..a2f3af7 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoveryDataBag.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoveryDataBag.java
@@ -23,6 +23,7 @@
import java.util.Set;
import java.util.UUID;
import org.apache.ignite.internal.GridComponent;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.Nullable;
@@ -59,11 +60,17 @@
/** @return ID fo the joining node. */
UUID joiningNodeId();
- /** @return Common for all cluster nodes discovery data that is sent to the joining node. */
- Serializable commonData();
+ /**
+ * @param <T> Data type.
+ * @return Common for all cluster nodes discovery data that is sent to the joining node.
+ */
+ <T> T commonData();
- /** @return Discovery data that is mapped to the particular cluster node and sent to the joining node. */
- Map<UUID, Serializable> nodeSpecificData();
+ /**
+ * @param <T> Data type.
+ * @return Discovery data that is mapped to the particular cluster node and sent to the joining node.
+ */
+ <T> Map<UUID, T> nodeSpecificData();
}
/**
@@ -87,7 +94,7 @@
@Override @Nullable public <T> T joiningNodeData() {
Message dataMsg = joiningNodeData.get(cmpId);
- return dataMsg instanceof ObjectData ? ObjectData.unwrap(dataMsg) : (T)dataMsg;
+ return SerializableDataBagItemWrapper.unwrapIfNecessary(dataMsg);
}
/**
@@ -106,7 +113,7 @@
private int cmpId;
/** */
- private Map<UUID, Serializable> nodeSpecificData
+ private Map<UUID, Message> nodeSpecificData
= new LinkedHashMap<>(DiscoveryDataBag.this.nodeSpecificData.size());
/** {@inheritDoc} */
@@ -115,16 +122,16 @@
}
/** {@inheritDoc} */
- @Override @Nullable public Serializable commonData() {
+ @Override @Nullable public <T> T commonData() {
if (commonData != null)
- return commonData.get(cmpId);
+ return SerializableDataBagItemWrapper.unwrapIfNecessary(commonData.get(cmpId));
return null;
}
/** {@inheritDoc} */
- @Override public Map<UUID, Serializable> nodeSpecificData() {
- return nodeSpecificData;
+ @Override public <T> Map<UUID, T> nodeSpecificData() {
+ return F.viewReadOnly(nodeSpecificData, SerializableDataBagItemWrapper::unwrapIfNecessary);
}
/**
@@ -142,7 +149,7 @@
private void reinitNodeSpecData(int cmpId) {
nodeSpecificData.clear();
- for (Map.Entry<UUID, Map<Integer, Serializable>> e : DiscoveryDataBag.this.nodeSpecificData.entrySet()) {
+ for (Map.Entry<UUID, Map<Integer, Message>> e : DiscoveryDataBag.this.nodeSpecificData.entrySet()) {
if (e.getValue() != null && e.getValue().containsKey(cmpId))
nodeSpecificData.put(e.getKey(), e.getValue().get(cmpId));
}
@@ -156,7 +163,7 @@
private static final UUID DEFAULT_KEY = null;
/** */
- private UUID joiningNodeId;
+ private final UUID joiningNodeId;
/**
* Component IDs with already initialized common discovery data.
@@ -164,13 +171,13 @@
private Set<Integer> cmnDataInitializedCmps;
/** */
- private Map<Integer, Message> joiningNodeData = new HashMap<>();
+ private final Map<Integer, Message> joiningNodeData = new HashMap<>();
/** */
- private Map<Integer, Serializable> commonData = new HashMap<>();
+ private final Map<Integer, Message> commonData = new HashMap<>();
/** */
- private Map<UUID, Map<Integer, Serializable>> nodeSpecificData = new LinkedHashMap<>();
+ private final Map<UUID, Map<Integer, Message>> nodeSpecificData = new LinkedHashMap<>();
/** */
private JoiningNodeDiscoveryDataImpl newJoinerData;
@@ -246,7 +253,7 @@
* @param data Serializable data.
*/
public void addJoiningNodeData(Integer cmpId, Serializable data) {
- joiningNodeData.put(cmpId, new ObjectData(data));
+ joiningNodeData.put(cmpId, new SerializableDataBagItemWrapper(data));
}
/**
@@ -259,19 +266,35 @@
/**
* @param cmpId Component ID.
- * @param data Data.
+ * @param data Serializable data.
*/
public void addGridCommonData(Integer cmpId, Serializable data) {
+ commonData.put(cmpId, new SerializableDataBagItemWrapper(data));
+ }
+
+ /**
+ * @param cmpId Component ID.
+ * @param data Message data.
+ */
+ public void addGridCommonData(Integer cmpId, Message data) {
commonData.put(cmpId, data);
}
/**
* @param cmpId Component ID.
- * @param data Data.
+ * @param data Serializable data.
*/
public void addNodeSpecificData(Integer cmpId, Serializable data) {
+ addNodeSpecificData(cmpId, new SerializableDataBagItemWrapper(data));
+ }
+
+ /**
+ * @param cmpId Component ID.
+ * @param data Message data.
+ */
+ public void addNodeSpecificData(Integer cmpId, Message data) {
if (!nodeSpecificData.containsKey(DEFAULT_KEY))
- nodeSpecificData.put(DEFAULT_KEY, new HashMap<Integer, Serializable>());
+ nodeSpecificData.put(DEFAULT_KEY, new HashMap<>());
nodeSpecificData.get(DEFAULT_KEY).put(cmpId, data);
}
@@ -296,14 +319,14 @@
/**
* @param cmnData Cmn data.
*/
- public void commonData(Map<Integer, Serializable> cmnData) {
+ public void commonData(Map<Integer, Message> cmnData) {
commonData.putAll(cmnData);
}
/**
* @param nodeSpecData Node specific data.
*/
- public void nodeSpecificData(Map<UUID, Map<Integer, Serializable>> nodeSpecData) {
+ public void nodeSpecificData(Map<UUID, Map<Integer, Message>> nodeSpecData) {
nodeSpecificData.putAll(nodeSpecData);
}
@@ -316,12 +339,12 @@
* @return Discovery data for each Ignite component that is aggregated from the cluster nodes and sent to the
* joining node.
*/
- public Map<Integer, Serializable> commonData() {
+ public Map<Integer, Message> commonData() {
return commonData;
}
/** @return Discovery data that belongs to the current cluster node and is sent to the joining node. */
- @Nullable public Map<Integer, Serializable> localNodeSpecificData() {
+ @Nullable public Map<Integer, Message> localNodeSpecificData() {
return nodeSpecificData.get(DEFAULT_KEY);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/ObjectData.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/SerializableDataBagItemWrapper.java
similarity index 64%
rename from modules/core/src/main/java/org/apache/ignite/spi/discovery/ObjectData.java
rename to modules/core/src/main/java/org/apache/ignite/spi/discovery/SerializableDataBagItemWrapper.java
index f9da59b..7e3bc16 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/ObjectData.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/SerializableDataBagItemWrapper.java
@@ -29,8 +29,8 @@
import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.Nullable;
-/** Wrapper message for serializable data. */
-public class ObjectData implements MarshallableMessage {
+/** Wrapper message for serializable data in a {@link DiscoveryDataBag}. */
+public class SerializableDataBagItemWrapper implements MarshallableMessage {
/** */
@GridToStringInclude
private Serializable data;
@@ -40,16 +40,41 @@
@Order(0)
byte[] dataBytes;
+ /** Unmarshalling error. */
+ IgniteCheckedException unmarshallError;
+
/** */
- public ObjectData() {}
+ public SerializableDataBagItemWrapper() {}
/**
* @param data Original data.
*/
- public ObjectData(Serializable data) {
+ public SerializableDataBagItemWrapper(Serializable data) {
this.data = data;
}
+ /**
+ * @param msg Message.
+ * @param <T> Type of data.
+ *
+ * @return Original message or data unwrapped from an SerializableDataBagItemWrapper wrapper.
+ */
+ static @Nullable <T> T unwrapIfNecessary(@Nullable Message msg) {
+ if (msg == null)
+ return null;
+
+ return msg instanceof SerializableDataBagItemWrapper ? ((SerializableDataBagItemWrapper)msg).unwrap() : (T)msg;
+ }
+
+ /**
+ * @param <T> Type of data.
+ *
+ * @return Original data unwrapped from a message.
+ */
+ private <T> T unwrap() {
+ return (T)(data);
+ }
+
/** {@inheritDoc} */
@Override public void prepareMarshal(Marshaller marsh) throws IgniteCheckedException {
if (data != null)
@@ -59,24 +84,24 @@
/** {@inheritDoc} */
@Override public void finishUnmarshal(Marshaller marsh, ClassLoader clsLdr) throws IgniteCheckedException {
if (dataBytes != null) {
- data = U.unmarshal(marsh, dataBytes, clsLdr);
+ try {
+ data = U.unmarshal(marsh, dataBytes, clsLdr);
- dataBytes = null;
+ dataBytes = null;
+ }
+ catch (IgniteCheckedException e) {
+ unmarshallError = e;
+ }
}
}
- /**
- * @param msg Message.
- * @param <T> Type of data.
- *
- * @return Original data unwrapped from a message.
- */
- public static <T> T unwrap(@Nullable Message msg) {
- return msg != null ? (T)(((ObjectData)msg).data) : null;
+ /** @return Unmarshalling error. */
+ public IgniteCheckedException unmarshallError() {
+ return unmarshallError;
}
/** {@inheritDoc} */
@Override public String toString() {
- return S.toString(ObjectData.class, this);
+ return S.toString(SerializableDataBagItemWrapper.class, this);
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
index a0e1a20..86a4f19 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ClientImpl.java
@@ -70,6 +70,7 @@
import org.apache.ignite.internal.processors.tracing.messages.SpanContainer;
import org.apache.ignite.internal.processors.tracing.messages.TraceableMessage;
import org.apache.ignite.internal.processors.tracing.messages.TraceableMessagesTable;
+import org.apache.ignite.internal.thread.context.Scope;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.F;
@@ -1310,6 +1311,8 @@
* @param msg Message.
*/
private void sendMessage(TcpDiscoveryAbstractMessage msg) {
+ msg.opCtxMsg = operationCtxDispatcher.collectDistributedAttributes();
+
synchronized (mux) {
queue.add(msg);
@@ -1757,251 +1760,255 @@
blockingSectionEnd();
}
- if (msg instanceof JoinTimeout) {
- int joinCnt0 = ((JoinTimeout)msg).joinCnt;
+ TcpDiscoveryAbstractMessage dm = msg instanceof TcpDiscoveryAbstractMessage
+ ? (TcpDiscoveryAbstractMessage)msg
+ : null;
- if (joinCnt == joinCnt0) {
- if (state == STARTING) {
- joinError(new IgniteSpiException("Join process timed out, did not receive response for " +
- "join request (consider increasing 'joinTimeout' configuration property) " +
- "[joinTimeout=" + spi.joinTimeout + ", sock=" + currSock + ']'));
+ try (Scope ignored = operationCtxDispatcher.restoreDistributedAttributes(dm == null ? null : dm.opCtxMsg)) {
+ if (msg instanceof JoinTimeout) {
+ int joinCnt0 = ((JoinTimeout)msg).joinCnt;
- break;
- }
- else if (state == DISCONNECTED) {
- if (log.isDebugEnabled())
- log.debug("Failed to reconnect, local node segmented " +
- "[joinTimeout=" + spi.joinTimeout + ']');
-
- state = SEGMENTED;
-
- notifyDiscovery(
- EVT_NODE_SEGMENTED, topVer, locNode, allVisibleNodes(), null);
- }
- }
- }
- else if (msg == SPI_STOP) {
- boolean connected = state == CONNECTED;
-
- state = STOPPED;
-
- assert spi.getSpiContext().isStopping();
-
- if (connected && currSock != null) {
- TcpDiscoveryNodeLeftMessage leftMsg = new TcpDiscoveryNodeLeftMessage(getLocalNodeId());
-
- leftMsg.client(true);
-
- Span rootSpan = tracing.create(TraceableMessagesTable.traceName(leftMsg.getClass()))
- .addTag(SpanTags.tag(SpanTags.EVENT_NODE, SpanTags.ID), () -> locNode.id().toString())
- .addTag(SpanTags.tag(SpanTags.EVENT_NODE, SpanTags.CONSISTENT_ID),
- () -> locNode.consistentId().toString())
- .addLog(() -> "Created");
-
- leftMsg.spanContainer().serializedSpanBytes(tracing.serialize(rootSpan));
-
- sockWriter.sendMessage(leftMsg);
-
- rootSpan.addLog(() -> "Sent").end();
- }
- else
- leaveLatch.countDown();
- }
- else if (msg == SPI_RECONNECT) {
- if (state == CONNECTED) {
- if (reconnector != null) {
- reconnector.cancel();
- reconnector.join();
-
- reconnector = null;
- }
-
- sockWriter.forceLeave();
- sockReader.forceStopRead();
-
- currSock = null;
-
- queue.clear();
-
- onDisconnected();
-
- UUID newId = UUID.randomUUID();
-
- U.quietAndWarn(log, "Local node will try to reconnect to cluster with new id due " +
- "to network problems [newId=" + newId +
- ", prevId=" + locNode.id() +
- ", locNode=" + locNode + ']');
-
- locNode.onClientDisconnected(newId);
-
- throttleClientReconnect();
-
- tryJoin();
- }
- }
- else if (msg instanceof TcpDiscoveryNodeFailedMessage &&
- ((TcpDiscoveryNodeFailedMessage)msg).failedNodeId().equals(locNode.id())) {
- TcpDiscoveryNodeFailedMessage msg0 = (TcpDiscoveryNodeFailedMessage)msg;
-
- assert msg0.force() : msg0;
-
- forceFailMsg = msg0;
- }
- else if (msg instanceof SocketClosedMessage) {
- if (((SocketClosedMessage)msg).sock == currSock) {
- Socket sock = currSock.sock;
-
- InetSocketAddress prevAddr = new InetSocketAddress(sock.getInetAddress(), sock.getPort());
-
- currSock = null;
-
- boolean join = joinLatch.getCount() > 0;
-
- if (spi.getSpiContext().isStopping() || state == SEGMENTED) {
- leaveLatch.countDown();
-
- if (join) {
- joinError(new IgniteSpiException("Failed to connect to cluster: socket closed."));
+ if (joinCnt == joinCnt0) {
+ if (state == STARTING) {
+ joinError(new IgniteSpiException("Join process timed out, did not receive response for " +
+ "join request (consider increasing 'joinTimeout' configuration property) " +
+ "[joinTimeout=" + spi.joinTimeout + ", sock=" + currSock + ']'));
break;
}
- }
- else {
- if (forceFailMsg != null) {
- if (log.isDebugEnabled()) {
- log.debug("Connection closed, local node received force fail message, " +
- "will not try to restore connection");
- }
-
- queue.addFirst(SPI_RECONNECT_FAILED);
- }
- else {
+ else if (state == DISCONNECTED) {
if (log.isDebugEnabled())
- log.debug("Connection closed, will try to restore connection.");
-
- assert reconnector == null;
-
- reconnector = new Reconnector(join, prevAddr);
- reconnector.start();
- }
- }
- }
- }
- else if (msg == SPI_RECONNECT_FAILED) {
- if (reconnector != null) {
- reconnector.cancel();
- reconnector.join();
-
- reconnector = null;
- }
- else
- assert forceFailMsg != null;
-
- if (spi.isClientReconnectDisabled()) {
- if (state != SEGMENTED && state != STOPPED) {
- if (forceFailMsg != null) {
- U.quietAndWarn(log, "Local node was dropped from cluster due to network problems " +
- "[nodeInitiatedFail=" + forceFailMsg.creatorNodeId() +
- ", msg=" + forceFailMsg.warning() + ']');
- }
-
- if (log.isDebugEnabled()) {
- log.debug("Failed to restore closed connection, reconnect disabled, " +
- "local node segmented [networkTimeout=" + spi.netTimeout + ']');
- }
-
- state = SEGMENTED;
-
- notifyDiscovery(
- EVT_NODE_SEGMENTED, topVer, locNode, allVisibleNodes(), null);
- }
- }
- else {
- if (state == STARTING || state == CONNECTED) {
- if (log.isDebugEnabled()) {
- log.debug("Failed to restore closed connection, will try to reconnect " +
- "[networkTimeout=" + spi.netTimeout +
- ", joinTimeout=" + spi.joinTimeout +
- ", failMsg=" + forceFailMsg + ']');
- }
-
- onDisconnected();
- }
-
- UUID newId = UUID.randomUUID();
-
- if (forceFailMsg != null) {
- long delay = IgniteSystemProperties.getLong(IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY,
- DFLT_DISCO_FAILED_CLIENT_RECONNECT_DELAY);
-
- if (delay > 0) {
- U.quietAndWarn(log, "Local node was dropped from cluster due to network problems, " +
- "will try to reconnect with new id after " + delay + "ms (reconnect delay " +
- "can be changed using IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY system " +
- "property) [" +
- "newId=" + newId +
- ", prevId=" + locNode.id() +
- ", locNode=" + locNode +
- ", nodeInitiatedFail=" + forceFailMsg.creatorNodeId() +
- ", msg=" + forceFailMsg.warning() + ']');
-
- Thread.sleep(delay);
- }
- else {
- U.quietAndWarn(log, "Local node was dropped from cluster due to network problems, " +
- "will try to reconnect with new id [" +
- "newId=" + newId +
- ", prevId=" + locNode.id() +
- ", locNode=" + locNode +
- ", nodeInitiatedFail=" + forceFailMsg.creatorNodeId() +
- ", msg=" + forceFailMsg.warning() + ']');
- }
-
- forceFailMsg = null;
- }
- else if (log.isInfoEnabled()) {
- log.info("Client node disconnected from cluster, will try to reconnect with new id " +
- "[newId=" + newId + ", prevId=" + locNode.id() + ", locNode=" + locNode + ']');
- }
-
- locNode.onClientDisconnected(newId);
-
- tryJoin();
- }
- }
- else {
- TcpDiscoveryAbstractMessage discoMsg = (TcpDiscoveryAbstractMessage)msg;
-
- if (joining()) {
- IgniteSpiException err = null;
-
- if (discoMsg instanceof TcpDiscoveryDuplicateIdMessage)
- err = spi.duplicateIdError((TcpDiscoveryDuplicateIdMessage)msg);
- else if (discoMsg instanceof TcpDiscoveryAuthFailedMessage)
- err = spi.authenticationFailedError((TcpDiscoveryAuthFailedMessage)msg);
- //TODO: https://issues.apache.org/jira/browse/IGNITE-9829
- else if (discoMsg instanceof TcpDiscoveryCheckFailedMessage)
- err = spi.checkFailedError((TcpDiscoveryCheckFailedMessage)msg);
-
- if (err != null) {
- if (state == DISCONNECTED) {
- U.error(log, "Failed to reconnect, segment local node.", err);
+ log.debug("Failed to reconnect, local node segmented " +
+ "[joinTimeout=" + spi.joinTimeout + ']');
state = SEGMENTED;
notifyDiscovery(
EVT_NODE_SEGMENTED, topVer, locNode, allVisibleNodes(), null);
}
- else
- joinError(err);
-
- cancel();
-
- break;
}
}
+ else if (msg == SPI_STOP) {
+ boolean connected = state == CONNECTED;
- processDiscoveryMessage((TcpDiscoveryAbstractMessage)msg);
+ state = STOPPED;
+
+ assert spi.getSpiContext().isStopping();
+
+ if (connected && currSock != null) {
+ TcpDiscoveryNodeLeftMessage leftMsg = new TcpDiscoveryNodeLeftMessage(getLocalNodeId());
+
+ leftMsg.client(true);
+
+ Span rootSpan = tracing.create(TraceableMessagesTable.traceName(leftMsg.getClass()))
+ .addTag(SpanTags.tag(SpanTags.EVENT_NODE, SpanTags.ID), () -> locNode.id().toString())
+ .addTag(SpanTags.tag(SpanTags.EVENT_NODE, SpanTags.CONSISTENT_ID),
+ () -> locNode.consistentId().toString())
+ .addLog(() -> "Created");
+
+ leftMsg.spanContainer().serializedSpanBytes(tracing.serialize(rootSpan));
+
+ sockWriter.sendMessage(leftMsg);
+
+ rootSpan.addLog(() -> "Sent").end();
+ }
+ else
+ leaveLatch.countDown();
+ }
+ else if (msg == SPI_RECONNECT) {
+ if (state == CONNECTED) {
+ if (reconnector != null) {
+ reconnector.cancel();
+ reconnector.join();
+
+ reconnector = null;
+ }
+
+ sockWriter.forceLeave();
+ sockReader.forceStopRead();
+
+ currSock = null;
+
+ queue.clear();
+
+ onDisconnected();
+
+ UUID newId = UUID.randomUUID();
+
+ U.quietAndWarn(log, "Local node will try to reconnect to cluster with new id due " +
+ "to network problems [newId=" + newId +
+ ", prevId=" + locNode.id() +
+ ", locNode=" + locNode + ']');
+
+ locNode.onClientDisconnected(newId);
+
+ throttleClientReconnect();
+
+ tryJoin();
+ }
+ }
+ else if (msg instanceof TcpDiscoveryNodeFailedMessage &&
+ ((TcpDiscoveryNodeFailedMessage)msg).failedNodeId().equals(locNode.id())) {
+ TcpDiscoveryNodeFailedMessage msg0 = (TcpDiscoveryNodeFailedMessage)msg;
+
+ assert msg0.force() : msg0;
+
+ forceFailMsg = msg0;
+ }
+ else if (msg instanceof SocketClosedMessage) {
+ if (((SocketClosedMessage)msg).sock == currSock) {
+ Socket sock = currSock.sock;
+
+ InetSocketAddress prevAddr = new InetSocketAddress(sock.getInetAddress(), sock.getPort());
+
+ currSock = null;
+
+ boolean join = joinLatch.getCount() > 0;
+
+ if (spi.getSpiContext().isStopping() || state == SEGMENTED) {
+ leaveLatch.countDown();
+
+ if (join) {
+ joinError(new IgniteSpiException("Failed to connect to cluster: socket closed."));
+
+ break;
+ }
+ }
+ else {
+ if (forceFailMsg != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Connection closed, local node received force fail message, " +
+ "will not try to restore connection");
+ }
+
+ queue.addFirst(SPI_RECONNECT_FAILED);
+ }
+ else {
+ if (log.isDebugEnabled())
+ log.debug("Connection closed, will try to restore connection.");
+
+ assert reconnector == null;
+
+ reconnector = new Reconnector(join, prevAddr);
+ reconnector.start();
+ }
+ }
+ }
+ }
+ else if (msg == SPI_RECONNECT_FAILED) {
+ if (reconnector != null) {
+ reconnector.cancel();
+ reconnector.join();
+
+ reconnector = null;
+ }
+ else
+ assert forceFailMsg != null;
+
+ if (spi.isClientReconnectDisabled()) {
+ if (state != SEGMENTED && state != STOPPED) {
+ if (forceFailMsg != null) {
+ U.quietAndWarn(log, "Local node was dropped from cluster due to network problems " +
+ "[nodeInitiatedFail=" + forceFailMsg.creatorNodeId() +
+ ", msg=" + forceFailMsg.warning() + ']');
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("Failed to restore closed connection, reconnect disabled, " +
+ "local node segmented [networkTimeout=" + spi.netTimeout + ']');
+ }
+
+ state = SEGMENTED;
+
+ notifyDiscovery(
+ EVT_NODE_SEGMENTED, topVer, locNode, allVisibleNodes(), null);
+ }
+ }
+ else {
+ if (state == STARTING || state == CONNECTED) {
+ if (log.isDebugEnabled()) {
+ log.debug("Failed to restore closed connection, will try to reconnect " +
+ "[networkTimeout=" + spi.netTimeout +
+ ", joinTimeout=" + spi.joinTimeout +
+ ", failMsg=" + forceFailMsg + ']');
+ }
+
+ onDisconnected();
+ }
+
+ UUID newId = UUID.randomUUID();
+
+ if (forceFailMsg != null) {
+ long delay = IgniteSystemProperties.getLong(IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY,
+ DFLT_DISCO_FAILED_CLIENT_RECONNECT_DELAY);
+
+ if (delay > 0) {
+ U.quietAndWarn(log, "Local node was dropped from cluster due to network problems, " +
+ "will try to reconnect with new id after " + delay + "ms (reconnect delay " +
+ "can be changed using IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY system " +
+ "property) [" +
+ "newId=" + newId +
+ ", prevId=" + locNode.id() +
+ ", locNode=" + locNode +
+ ", nodeInitiatedFail=" + forceFailMsg.creatorNodeId() +
+ ", msg=" + forceFailMsg.warning() + ']');
+
+ Thread.sleep(delay);
+ }
+ else {
+ U.quietAndWarn(log, "Local node was dropped from cluster due to network problems, " +
+ "will try to reconnect with new id [" +
+ "newId=" + newId +
+ ", prevId=" + locNode.id() +
+ ", locNode=" + locNode +
+ ", nodeInitiatedFail=" + forceFailMsg.creatorNodeId() +
+ ", msg=" + forceFailMsg.warning() + ']');
+ }
+
+ forceFailMsg = null;
+ }
+ else if (log.isInfoEnabled()) {
+ log.info("Client node disconnected from cluster, will try to reconnect with new id " +
+ "[newId=" + newId + ", prevId=" + locNode.id() + ", locNode=" + locNode + ']');
+ }
+
+ locNode.onClientDisconnected(newId);
+
+ tryJoin();
+ }
+ }
+ else {
+ if (joining()) {
+ IgniteSpiException err = null;
+
+ if (dm instanceof TcpDiscoveryDuplicateIdMessage)
+ err = spi.duplicateIdError((TcpDiscoveryDuplicateIdMessage)msg);
+ else if (dm instanceof TcpDiscoveryAuthFailedMessage)
+ err = spi.authenticationFailedError((TcpDiscoveryAuthFailedMessage)msg);
+ //TODO: https://issues.apache.org/jira/browse/IGNITE-9829
+ else if (dm instanceof TcpDiscoveryCheckFailedMessage)
+ err = spi.checkFailedError((TcpDiscoveryCheckFailedMessage)msg);
+
+ if (err != null) {
+ if (state == DISCONNECTED) {
+ U.error(log, "Failed to reconnect, segment local node.", err);
+
+ state = SEGMENTED;
+
+ notifyDiscovery(
+ EVT_NODE_SEGMENTED, topVer, locNode, allVisibleNodes(), null);
+ }
+ else
+ joinError(err);
+
+ cancel();
+
+ break;
+ }
+ }
+
+ processDiscoveryMessage(dm);
+ }
}
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
index 82c012c..c95bba5 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
@@ -95,6 +95,7 @@
import org.apache.ignite.internal.processors.tracing.messages.SpanContainer;
import org.apache.ignite.internal.processors.tracing.messages.TraceableMessage;
import org.apache.ignite.internal.processors.tracing.messages.TraceableMessagesTable;
+import org.apache.ignite.internal.thread.context.Scope;
import org.apache.ignite.internal.thread.pool.IgniteThreadPoolExecutor;
import org.apache.ignite.internal.util.GridBoundedLinkedHashSet;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
@@ -2581,36 +2582,6 @@
if (addedMsg.gridDiscoveryData() != null)
addedMsg.clearDiscoveryData();
}
- else if (msg instanceof TcpDiscoveryNodeAddFinishedMessage) {
- TcpDiscoveryNodeAddFinishedMessage addFinishMsg = (TcpDiscoveryNodeAddFinishedMessage)msg;
-
- if (addFinishMsg.clientDiscoData() != null) {
- addFinishMsg = new TcpDiscoveryNodeAddFinishedMessage(addFinishMsg);
-
- msg = addFinishMsg;
-
- DiscoveryDataPacket discoData = addFinishMsg.clientDiscoData();
-
- Set<Integer> mrgdCmnData = new HashSet<>();
- Set<UUID> mrgdSpecData = new HashSet<>();
-
- boolean allMerged = false;
-
- for (TcpDiscoveryAbstractMessage msg0 : msgs) {
-
- if (msg0 instanceof TcpDiscoveryNodeAddFinishedMessage) {
- DiscoveryDataPacket existingDiscoData =
- ((TcpDiscoveryNodeAddFinishedMessage)msg0).clientDiscoData();
-
- if (existingDiscoData != null)
- allMerged = discoData.mergeDataFrom(existingDiscoData, mrgdCmnData, mrgdSpecData);
- }
-
- if (allMerged)
- break;
- }
- }
- }
else if (msg instanceof TcpDiscoveryNodeLeftMessage)
clearClientAddFinished(msg.creatorNodeId());
else if (msg instanceof TcpDiscoveryNodeFailedMessage)
@@ -2978,11 +2949,14 @@
/** Thread local variable indicates that discovery manager was notified after message processing. */
private final ThreadLocal<Boolean> notifiedDiscovery = ThreadLocal.withInitial(() -> false);
- /**
- * @param log Logger.
- */
- protected RingMessageWorker(IgniteLogger log) {
- super("tcp-disco-msg-worker-[]", log, 10, getWorkerRegistry(spi));
+ /** */
+ RingMessageWorker(IgniteLogger log) {
+ this(log, new LinkedBlockingDeque<>());
+ }
+
+ /** */
+ protected RingMessageWorker(IgniteLogger log, BlockingDeque<TcpDiscoveryAbstractMessage> queue) {
+ super("tcp-disco-msg-worker-[]", log, 10, getWorkerRegistry(spi), queue);
setBeforeEachPollAction(() -> {
updateHeartbeat();
@@ -3046,8 +3020,10 @@
return;
}
- if (msg instanceof TraceableMessage) {
- TraceableMessage tMsg = (TraceableMessage)msg;
+ if (!fromSocket)
+ msg.opCtxMsg = operationCtxDispatcher.collectDistributedAttributes();
+
+ if (msg instanceof TraceableMessage tMsg) {
// If we read this message from socket.
if (fromSocket)
@@ -3173,11 +3149,8 @@
task.run();
}
- /** {@inheritDoc} */
- @Override protected void processMessage(TcpDiscoveryAbstractMessage msg) {
- if (msg == WAKEUP)
- return;
-
+ /** */
+ private void processMessage0(TcpDiscoveryAbstractMessage msg) {
notifiedDiscovery.set(false);
if (msg instanceof TraceableMessage) {
@@ -3315,6 +3288,16 @@
}
}
+ /** {@inheritDoc} */
+ @Override protected void processMessage(TcpDiscoveryAbstractMessage msg) {
+ if (msg == WAKEUP)
+ return;
+
+ try (Scope ignored = operationCtxDispatcher.restoreDistributedAttributes(msg.opCtxMsg)) {
+ processMessage0(msg);
+ }
+ }
+
/**
* Processes authentication failed message.
*
@@ -4768,9 +4751,17 @@
/** */
private IgniteNodeValidationResult validateByIgniteComponentsWithJoiningNodeData(TcpDiscoveryJoinRequestMessage req) {
- DiscoveryDataBag data = req.gridDiscoveryData().bagWithJoiningNodeData();
+ DiscoveryDataPacket packet = req.gridDiscoveryData();
- return spi.getSpiContext().validateNode(req.node(), data);
+ try {
+ DiscoveryDataBag dataBag = packet.bagWithJoiningNodeData(spi.ignite().log(),
+ spi.ignite().configuration().isClientMode());
+
+ return spi.getSpiContext().validateNode(req.node(), dataBag);
+ }
+ catch (IgniteCheckedException e) {
+ return new IgniteNodeValidationResult(req.node().id(), e.getMessage());
+ }
}
/** */
@@ -7787,9 +7778,15 @@
* @param log Logger.
*/
private ClientMessageWorker(Socket sock, UUID clientNodeId, IgniteLogger log) {
- super("tcp-disco-client-message-worker-[" + U.id8(clientNodeId)
- + ' ' + sock.getInetAddress().getHostAddress()
- + ":" + sock.getPort() + ']', log, Math.max(spi.metricsUpdateFreq, 10), null);
+ super(
+ "tcp-disco-client-message-worker-[" + U.id8(clientNodeId) +
+ ' ' + sock.getInetAddress().getHostAddress() +
+ ":" + sock.getPort() + ']',
+ log,
+ Math.max(spi.metricsUpdateFreq, 10),
+ null,
+ new LinkedBlockingDeque<>()
+ );
this.sock = sock;
this.clientNodeId = clientNodeId;
@@ -8116,7 +8113,7 @@
*/
private abstract class MessageWorker<T> extends GridWorker {
/** Message queue. */
- protected final BlockingDeque<T> queue = new LinkedBlockingDeque<>();
+ protected final BlockingDeque<T> queue;
/** Polling timeout. */
private final long pollingTimeout;
@@ -8129,15 +8126,18 @@
* @param log Logger.
* @param pollingTimeout Messages polling timeout.
* @param lsnr Listener for life-cycle events.
+ * @param queue The queue used for holding messages and handing off to worker thread.
*/
protected MessageWorker(
String name,
IgniteLogger log,
long pollingTimeout,
- @Nullable GridWorkerListener lsnr
+ @Nullable GridWorkerListener lsnr,
+ BlockingDeque<T> queue
) {
super(spi.ignite().name(), name, log, lsnr);
+ this.queue = queue;
this.pollingTimeout = pollingTimeout;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java
index 789f3d0..25ad69c 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryImpl.java
@@ -43,6 +43,7 @@
import org.apache.ignite.internal.processors.cluster.NodeMetricsMessage;
import org.apache.ignite.internal.processors.tracing.NoopTracing;
import org.apache.ignite.internal.processors.tracing.Tracing;
+import org.apache.ignite.internal.thread.context.OperationContextDispatcher;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.U;
@@ -139,6 +140,9 @@
/** Tracing. */
protected Tracing tracing;
+ /** Distributed operation context dispatcher. */
+ protected final OperationContextDispatcher operationCtxDispatcher;
+
/**
* @param spi Adapter.
*/
@@ -151,6 +155,8 @@
tracing = ((IgniteEx)spi.ignite()).context().tracing();
else
tracing = new NoopTracing();
+
+ operationCtxDispatcher = ((IgniteEx)spi.ignite()).context().operationContextDispatcher();
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryIoSession.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryIoSession.java
index b8fc471..d054080 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryIoSession.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryIoSession.java
@@ -35,6 +35,7 @@
import org.apache.ignite.internal.direct.DirectMessageReader;
import org.apache.ignite.internal.direct.DirectMessageWriter;
import org.apache.ignite.internal.managers.communication.UnknownMessageException;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
@@ -44,8 +45,6 @@
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import static org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.makeMessageType;
-
/**
* Handles I/O operations between discovery nodes in the cluster. This class encapsulates the socket connection used
* by the {@link TcpDiscoverySpi} to exchange discovery protocol messages between nodes.
@@ -150,7 +149,7 @@
byte b0 = (byte)in.read();
byte b1 = (byte)in.read();
- short msgType = makeMessageType(b0, b1);
+ short msgType = CommonUtils.makeMessageType(b0, b1);
Message msg;
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index a7f68fb..5594e77 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -445,7 +445,7 @@
protected IgniteLogger log;
/** */
- protected TcpDiscoveryImpl impl;
+ TcpDiscoveryImpl impl;
/** */
private boolean clientReconnectDisabled;
@@ -2068,21 +2068,14 @@
assert dataPacket != null;
assert dataPacket.joiningNodeId() != null;
- //create data bag, pass it to exchange.collect
DiscoveryDataBag dataBag = dataPacket.bagForDataCollection();
exchange.collect(dataBag);
- //marshall collected bag into packet, return packet
if (dataPacket.joiningNodeId().equals(locNode.id()))
dataPacket.addJoiningNodeData(dataBag);
else
- dataPacket.marshalGridNodeData(
- dataBag,
- locNode.id(),
- marshaller(),
- ignite.configuration().getNetworkCompressionLevel(),
- log);
+ dataPacket.addNodeData(dataBag, locNode.id());
return dataPacket;
}
@@ -2097,22 +2090,21 @@
DiscoveryDataBag dataBag;
- if (dataPacket.joiningNodeId().equals(locNode.id())) {
- try {
- dataBag = dataPacket.unmarshalGridData(marshaller(), clsLdr, locNode.clientRouterNodeId() != null, log);
- }
- catch (IgniteCheckedException e) {
- if (ignite() instanceof IgniteEx) {
- FailureProcessor failure = ((IgniteEx)ignite()).context().failure();
-
- failure.process(new FailureContext(CRITICAL_ERROR, e));
- }
-
- throw new IgniteException(e);
- }
+ try {
+ if (dataPacket.joiningNodeId().equals(locNode.id()))
+ dataBag = dataPacket.bagWithNodeData(ignite.log(), ignite.configuration().isClientMode());
+ else
+ dataBag = dataPacket.bagWithJoiningNodeData(ignite.log(), ignite.configuration().isClientMode());
}
- else
- dataBag = dataPacket.bagWithJoiningNodeData();
+ catch (IgniteCheckedException e) {
+ if (ignite() instanceof IgniteEx) {
+ FailureProcessor failure = ((IgniteEx)ignite()).context().failure();
+
+ failure.process(new FailureContext(CRITICAL_ERROR, e));
+ }
+
+ throw new IgniteException(e);
+ }
exchange.onExchange(dataBag);
}
@@ -2126,10 +2118,8 @@
impl.spiStart(igniteInstanceName);
}
- /**
- *
- */
- protected void initializeImpl() {
+ /** */
+ private void initializeImpl() {
if (impl != null)
return;
@@ -2155,7 +2145,7 @@
if (sockTimeout == 0)
sockTimeout = DFLT_SOCK_TIMEOUT;
- impl = new ServerImpl(this, DFLT_UTLITY_POOL_SIZE, DFLT_RMT_DC_PING_POOL_SIZE);
+ impl = createServerTcpDiscoveryImplementation();
}
metricsUpdateFreq = ignite.configuration().getMetricsUpdateFrequency();
@@ -2238,6 +2228,11 @@
cfgNodeId = ignite.configuration().getNodeId();
}
+ /** */
+ TcpDiscoveryImpl createServerTcpDiscoveryImplementation() {
+ return new ServerImpl(this, DFLT_UTLITY_POOL_SIZE, DFLT_RMT_DC_PING_POOL_SIZE);
+ }
+
/** {@inheritDoc} */
@Override public void spiStop() throws IgniteSpiException {
if (ctxInitLatch.getCount() > 0)
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/DiscoveryDataPacket.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/DiscoveryDataPacket.java
index 4ded165..cd1e8c1 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/DiscoveryDataPacket.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/DiscoveryDataPacket.java
@@ -16,9 +16,6 @@
*/
package org.apache.ignite.spi.discovery.tcp.internal;
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@@ -31,23 +28,19 @@
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.marshaller.Marshaller;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.spi.discovery.DiscoveryDataBag;
+import org.apache.ignite.spi.discovery.SerializableDataBagItemWrapper;
+import org.jetbrains.annotations.Nullable;
+import static java.lang.Boolean.TRUE;
import static org.apache.ignite.internal.GridComponent.DiscoveryDataExchangeType.CONTINUOUS_PROC;
/**
- * Carries discovery data in marshalled form
+ * Carries discovery data in form of {@link Message}
* and allows convenient way of converting it to and from {@link DiscoveryDataBag} objects.
*/
-public class DiscoveryDataPacket implements Serializable, Message {
- /** Local file header signature (read as a little-endian number). */
- private static final int ZIP_HEADER_SIGNATURE = 0x04034b50;
-
- /** */
- private static final long serialVersionUID = 0L;
-
+public class DiscoveryDataPacket implements Message {
/** */
@Order(0)
UUID joiningNodeId;
@@ -59,14 +52,19 @@
/** */
@Order(2)
- Map<Integer, byte[]> commonData = new HashMap<>();
+ @Compress
+ Map<Integer, Message> commonData = new HashMap<>();
/** */
@Order(3)
- Map<UUID, Map<Integer, byte[]>> nodeSpecificData = new HashMap<>();
+ @Compress
+ Map<UUID, Map<Integer, Message>> nodeSpecificData = new HashMap<>();
/** */
- private transient boolean joiningNodeClient;
+ private boolean joiningNodeClient;
+
+ /** Unmarshalling error, if any. */
+ private IgniteCheckedException unmarshErr;
/** Constructor. */
public DiscoveryDataPacket() {
@@ -90,25 +88,15 @@
/**
* @param bag Bag.
* @param nodeId Node id.
- * @param marsh Marsh.
- * @param log Logger.
*/
- public void marshalGridNodeData(DiscoveryDataBag bag, UUID nodeId, Marshaller marsh,
- int compressionLevel, IgniteLogger log) {
- marshalData(bag.commonData(), commonData, marsh, compressionLevel, log);
+ public void addNodeData(DiscoveryDataBag bag, UUID nodeId) {
+ if (bag.commonData() != null)
+ commonData.putAll(bag.commonData());
- Map<Integer, Serializable> locNodeSpecificData = bag.localNodeSpecificData();
+ Map<Integer, Message> locNodeSpecificData = bag.localNodeSpecificData();
- if (locNodeSpecificData != null) {
- Map<Integer, byte[]> marshLocNodeSpecificData = U.newHashMap(locNodeSpecificData.size());
-
- marshalData(locNodeSpecificData, marshLocNodeSpecificData, marsh, compressionLevel, log);
-
- filterDuplicatedData(marshLocNodeSpecificData);
-
- if (!marshLocNodeSpecificData.isEmpty())
- nodeSpecificData.put(nodeId, marshLocNodeSpecificData);
- }
+ if (!F.isEmpty(locNodeSpecificData))
+ nodeSpecificData.put(nodeId, locNodeSpecificData);
}
/**
@@ -120,47 +108,34 @@
}
/**
- * @param marsh Marsh.
- * @param clsLdr Class loader.
- * @param clientNode Client node.
- * @param log Logger.
+ * @param log Ignite logger.
+ * @param client Client mode flag.
+ *
+ * @return Data bag with node data.
*/
- public DiscoveryDataBag unmarshalGridData(
- Marshaller marsh,
- ClassLoader clsLdr,
- boolean clientNode,
- IgniteLogger log
- ) throws IgniteCheckedException {
+ public DiscoveryDataBag bagWithNodeData(IgniteLogger log, Boolean client) throws IgniteCheckedException {
+ checkUnmarshallingErrors(log, client);
+
DiscoveryDataBag dataBag = new DiscoveryDataBag(joiningNodeId, joiningNodeClient);
- if (commonData != null && !commonData.isEmpty())
- dataBag.commonData(unmarshalData(commonData, marsh, clsLdr, clientNode, log, true));
+ if (!F.isEmpty(commonData))
+ dataBag.commonData(commonData);
- if (nodeSpecificData != null && !nodeSpecificData.isEmpty()) {
- Map<UUID, Map<Integer, Serializable>> unmarshNodeSpecData = U.newLinkedHashMap(nodeSpecificData.size());
-
- for (Map.Entry<UUID, Map<Integer, byte[]>> nodeBinEntry : nodeSpecificData.entrySet()) {
- Map<Integer, byte[]> nodeBinData = nodeBinEntry.getValue();
-
- if (nodeBinData == null || nodeBinData.isEmpty())
- continue;
-
- unmarshNodeSpecData.put(
- nodeBinEntry.getKey(),
- unmarshalData(nodeBinData, marsh, clsLdr, clientNode, log, true)
- );
- }
-
- dataBag.nodeSpecificData(unmarshNodeSpecData);
- }
+ if (!F.isEmpty(nodeSpecificData))
+ dataBag.nodeSpecificData(nodeSpecificData);
return dataBag;
}
/**
+ * @param log Ignite logger.
+ * @param client Client mode flag.
+ *
* @return Data bag with joining node data.
*/
- public DiscoveryDataBag bagWithJoiningNodeData() {
+ public DiscoveryDataBag bagWithJoiningNodeData(IgniteLogger log, @Nullable Boolean client) throws IgniteCheckedException {
+ checkUnmarshallingErrors(log, client);
+
DiscoveryDataBag dataBag = new DiscoveryDataBag(joiningNodeId, joiningNodeClient);
if (!F.isEmpty(joiningNodeData))
@@ -184,199 +159,68 @@
}
/**
- * @param existingDataPacket Existing data packet.
- * @param mrgdCmnDataKeys Mrgd cmn data keys.
- * @param mrgdSpecifDataKeys Mrgd specif data keys.
- */
- public boolean mergeDataFrom(
- DiscoveryDataPacket existingDataPacket,
- Collection<Integer> mrgdCmnDataKeys,
- Collection<UUID> mrgdSpecifDataKeys
- ) {
- if (commonData.size() != mrgdCmnDataKeys.size()) {
- for (Map.Entry<Integer, byte[]> e : commonData.entrySet()) {
- if (!mrgdCmnDataKeys.contains(e.getKey())) {
- byte[] data = existingDataPacket.commonData.get(e.getKey());
-
- if (data != null && Arrays.equals(e.getValue(), data)) {
- e.setValue(data);
-
- boolean add = mrgdCmnDataKeys.add(e.getKey());
-
- assert add;
-
- if (mrgdCmnDataKeys.size() == commonData.size())
- break;
- }
- }
- }
- }
-
- if (nodeSpecificData.size() != mrgdSpecifDataKeys.size()) {
- for (Map.Entry<UUID, Map<Integer, byte[]>> e : nodeSpecificData.entrySet()) {
- if (!mrgdSpecifDataKeys.contains(e.getKey())) {
- Map<Integer, byte[]> data = existingDataPacket.nodeSpecificData.get(e.getKey());
-
- if (data != null && mapsEqual(e.getValue(), data)) {
- e.setValue(data);
-
- boolean add = mrgdSpecifDataKeys.add(e.getKey());
-
- assert add;
-
- if (mrgdSpecifDataKeys.size() == nodeSpecificData.size())
- break;
- }
- }
- }
- }
-
- return (mrgdCmnDataKeys.size() == commonData.size()) && (mrgdSpecifDataKeys.size() == nodeSpecificData.size());
- }
-
- /**
- * @param m1 first map to compare.
- * @param m2 second map to compare.
- */
- private boolean mapsEqual(Map<Integer, byte[]> m1, Map<Integer, byte[]> m2) {
- if (m1 == m2)
- return true;
-
- if (m1.size() == m2.size()) {
- for (Map.Entry<Integer, byte[]> e : m1.entrySet()) {
- byte[] data = m2.get(e.getKey());
-
- if (!Arrays.equals(e.getValue(), data))
- return false;
- }
-
- return true;
- }
-
- return false;
- }
-
- /**
- * @param src Source.
- * @param marsh Marsh.
- * @param clsLdr Class loader.
- * @param clientNode Client node.
- * @param log Logger.
- * @param panic Throw unmarshalling if {@code true}.
- * @throws IgniteCheckedException If {@code panic} is {@code True} and unmarshalling failed.
- */
- private Map<Integer, Serializable> unmarshalData(
- Map<Integer, byte[]> src,
- Marshaller marsh,
- ClassLoader clsLdr,
- boolean clientNode,
- IgniteLogger log,
- boolean panic
- ) throws IgniteCheckedException {
- Map<Integer, Serializable> res = U.newHashMap(src.size());
-
- for (Map.Entry<Integer, byte[]> binEntry : src.entrySet()) {
- try {
- Serializable compData = isZipped(binEntry.getValue()) ?
- U.unmarshalZip(marsh, binEntry.getValue(), clsLdr) :
- U.unmarshal(marsh, binEntry.getValue(), clsLdr);
- res.put(binEntry.getKey(), compData);
- }
- catch (IgniteCheckedException e) {
- if (CONTINUOUS_PROC.ordinal() == binEntry.getKey() &&
- X.hasCause(e, ClassNotFoundException.class) && clientNode
- ) {
- U.warn(log, "Failed to unmarshal continuous query remote filter on client node. Can be ignored.");
-
- continue;
- }
- else if (binEntry.getKey() < GridComponent.DiscoveryDataExchangeType.VALUES.length) {
- U.error(log,
- "Failed to unmarshal discovery data for component: " +
- GridComponent.DiscoveryDataExchangeType.VALUES[binEntry.getKey()],
- e
- );
- }
- else {
- U.warn(log, "Failed to unmarshal discovery data." +
- " Component " + binEntry.getKey() + " is not found.");
- }
-
- if (panic)
- throw e;
- }
- }
-
- return res;
- }
-
- /**
- * @param val Value to check.
- * @return {@code true} if value is zipped.
- */
- private boolean isZipped(byte[] val) {
- return val != null && val.length > 3 && makeInt(val) == ZIP_HEADER_SIGNATURE;
- }
-
- /**
- * Make int from first 4 bytes in little-endian byte order.
+ * Dumps and throws caught unmarshalling errors.
*
- * @param b Source of bytes.
- * @return Made int.
+ * @param log Ignite logger.
+ * @param client Client mode flag.
+ * @throws IgniteCheckedException If unmarshalling errors occurs.
*/
- private static int makeInt(byte[] b) {
- return (((b[3]) << 24) |
- ((b[2] & 0xff) << 16) |
- ((b[1] & 0xff) << 8) |
- ((b[0] & 0xff)));
- }
+ public void checkUnmarshallingErrors(IgniteLogger log, @Nullable Boolean client)
+ throws IgniteCheckedException {
+ if (unmarshErr != null)
+ throw unmarshErr;
- /**
- * @param src Source.
- * @param target Target.
- * @param marsh Marsh.
- * @param log Logger.
- */
- private void marshalData(
- Map<Integer, Serializable> src,
- Map<Integer, byte[]> target,
- Marshaller marsh,
- int compressionLevel,
- IgniteLogger log
- ) {
- // may happen if nothing was collected from components,
- // corresponding map (for common data or for node specific data) left null
- if (src == null)
- return;
+ Iterator<Map.Entry<Integer, Message>> dataIter = compoundDataIterator();
- for (Map.Entry<Integer, Serializable> entry : src.entrySet()) {
- try {
- target.put(entry.getKey(), U.zip(U.marshal(marsh, entry.getValue()), compressionLevel));
+ IgniteCheckedException err = null;
+
+ while (dataIter.hasNext()) {
+ Map.Entry<Integer, Message> item = dataIter.next();
+
+ if (item.getValue() instanceof SerializableDataBagItemWrapper wrapper) {
+ int cmpId = item.getKey();
+
+ IgniteCheckedException e = wrapper.unmarshallError();
+
+ if (e != null) {
+ if (CONTINUOUS_PROC.ordinal() == cmpId && X.hasCause(e, ClassNotFoundException.class) && TRUE.equals(client)) {
+ U.warn(log, "Failed to unmarshal continuous query remote filter on client node. " +
+ "Can be ignored.");
+
+ continue;
+ }
+ else if (cmpId < GridComponent.DiscoveryDataExchangeType.VALUES.length) {
+ U.error(log, "Failed to unmarshal discovery data for component: " +
+ GridComponent.DiscoveryDataExchangeType.VALUES[cmpId], e);
+ }
+ else {
+ U.warn(log, "Failed to unmarshal discovery data." +
+ " Component " + cmpId + " is not found.", e);
+ }
+
+ if (err == null)
+ err = e;
+ else
+ err.addSuppressed(e);
+ }
}
- catch (IgniteCheckedException e) {
- U.error(log, "Failed to marshal discovery data " +
- "[comp=" + entry.getKey() + ", data=" + entry.getValue() + ']', e);
- }
+ }
+
+ if (err != null) {
+ unmarshErr = err;
+
+ throw err;
}
}
- /** */
- private void filterDuplicatedData(Map<Integer, byte[]> discoData) {
- for (Map<Integer, byte[]> existingData : nodeSpecificData.values()) {
- Iterator<Map.Entry<Integer, byte[]>> it = discoData.entrySet().iterator();
-
- while (it.hasNext()) {
- Map.Entry<Integer, byte[]> discoDataEntry = it.next();
-
- byte[] curData = existingData.get(discoDataEntry.getKey());
-
- if (Arrays.equals(curData, discoDataEntry.getValue()))
- it.remove();
- }
-
- if (discoData.isEmpty())
- break;
- }
+ /** @return Iterator through all messages, stored in DataPacket. */
+ private Iterator<Map.Entry<Integer, Message>> compoundDataIterator() {
+ return F.concat(joiningNodeData.entrySet().iterator(),
+ commonData.entrySet().iterator(),
+ nodeSpecificData.values()
+ .stream()
+ .flatMap(m -> m.entrySet().stream())
+ .iterator());
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/InetSocketAddressMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/InetSocketAddressMessage.java
index f23e36f..d76279f 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/InetSocketAddressMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/InetSocketAddressMessage.java
@@ -52,7 +52,6 @@
return port;
}
-
/** {@inheritDoc} */
@Override public String toString() {
return S.toString(InetSocketAddressMessage.class, this);
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryAbstractMessage.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryAbstractMessage.java
index 7a97763..5f09498 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryAbstractMessage.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryAbstractMessage.java
@@ -21,6 +21,7 @@
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
+import org.apache.ignite.internal.OperationContextMessage;
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.tostring.GridToStringInclude;
@@ -76,6 +77,11 @@
@Order(4)
Set<UUID> failedNodes;
+ /** Operation context attributes message. */
+ @GridToStringInclude
+ @Order(5)
+ public @Nullable OperationContextMessage opCtxMsg;
+
/**
* Default no-arg constructor for {@link Externalizable} interface.
*/
@@ -100,6 +106,7 @@
verifierNodeId = msg.verifierNodeId;
topVer = msg.topVer;
flags = msg.flags;
+ opCtxMsg = msg.opCtxMsg;
}
/**
diff --git a/modules/core/src/main/resources/META-INF/classnames.properties b/modules/core/src/main/resources/META-INF/classnames.properties
index 4e14099..431e7ee 100644
--- a/modules/core/src/main/resources/META-INF/classnames.properties
+++ b/modules/core/src/main/resources/META-INF/classnames.properties
@@ -705,7 +705,6 @@
org.apache.ignite.internal.managers.checkpoint.GridCheckpointRequest
org.apache.ignite.internal.managers.communication.GridIoManager$ConcurrentHashMap0
org.apache.ignite.internal.managers.communication.GridIoMessage
-org.apache.ignite.internal.managers.communication.GridIoSecurityAwareMessage
org.apache.ignite.internal.managers.communication.GridIoUserMessage
org.apache.ignite.internal.managers.communication.IgniteIoTestMessage
org.apache.ignite.internal.managers.communication.SessionChannelMessage
diff --git a/modules/core/src/main/resources/ignite.properties b/modules/core/src/main/resources/ignite-build-info.properties
similarity index 100%
rename from modules/core/src/main/resources/ignite.properties
rename to modules/core/src/main/resources/ignite-build-info.properties
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/MdcAffinityBackupFilterSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/MdcAffinityBackupFilterSelfTest.java
index a45f3cc..97c1949 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/MdcAffinityBackupFilterSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/affinity/rendezvous/MdcAffinityBackupFilterSelfTest.java
@@ -314,6 +314,8 @@
lastNode = startGrid(nodeIdx++);
}
+ System.clearProperty(IgniteSystemProperties.IGNITE_DATA_CENTER_ID);
+
return lastNode;
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridReleaseTypeSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridReleaseTypeSelfTest.java
deleted file mode 100644
index bc97718..0000000
--- a/modules/core/src/test/java/org/apache/ignite/internal/GridReleaseTypeSelfTest.java
+++ /dev/null
@@ -1,525 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.function.UnaryOperator;
-import org.apache.ignite.IgniteCheckedException;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cluster.ClusterState;
-import org.apache.ignite.configuration.DataStorageConfiguration;
-import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.util.function.ThrowableSupplier;
-import org.apache.ignite.internal.util.lang.IgnitePair;
-import org.apache.ignite.internal.util.lang.RunnableX;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.X;
-import org.apache.ignite.lang.IgniteProductVersion;
-import org.apache.ignite.spi.IgniteSpiException;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
-import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-
-import static org.apache.ignite.testframework.GridTestUtils.assertThrows;
-import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
-import static org.junit.Assume.assumeTrue;
-
-/**
- * Test Rolling Upgrade release types.
- */
-@RunWith(Parameterized.class)
-public class GridReleaseTypeSelfTest extends GridCommonAbstractTest {
- /** */
- private String nodeVer;
-
- /**
- * Indicates whether the tested node is started as a client.
- * This flag is used to run all test cases for both client and server node configurations.
- */
- @Parameterized.Parameter
- public boolean client;
-
- /** Persistence. */
- @Parameterized.Parameter(1)
- public boolean persistence;
-
- /** @return Test parameters. */
- @Parameterized.Parameters(name = "client={0}, persistence={1}")
- public static Collection<?> parameters() {
- return GridTestUtils.cartesianProduct(List.of(false, true), List.of(false, true));
- }
-
- /** {@inheritDoc} */
- @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
- IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
-
- TcpDiscoverySpi discoSpi = new TcpDiscoverySpi() {
- @Override public void setNodeAttributes(Map<String, Object> attrs,
- IgniteProductVersion ver) {
- super.setNodeAttributes(attrs, ver);
-
- attrs.put(IgniteNodeAttributes.ATTR_BUILD_VER, nodeVer);
- }
- };
-
- discoSpi.setIpFinder(sharedStaticIpFinder);
-
- cfg.setDiscoverySpi(discoSpi);
-
- DataStorageConfiguration storageCfg = new DataStorageConfiguration();
-
- storageCfg.getDefaultDataRegionConfiguration().setPersistenceEnabled(persistence);
-
- cfg.setDataStorageConfiguration(storageCfg);
-
- return cfg;
- }
-
- /** {@inheritDoc} */
- @Override protected void afterTest() throws Exception {
- stopAllGrids();
- cleanPersistenceDir();
- }
-
- /** */
- @Test
- public void testTwoConflictVersions() {
- testConflictVersions("2.18.0", "2.16.0", client);
- testConflictVersions("2.21.0", "2.23.1", client);
- testConflictVersions("2.20.1", "2.20.2", client);
- }
-
- /** */
- @Test
- public void testThreeConflictVersions() throws Exception {
- testConflictVersionsWithRollingUpgrade("2.18.0", "2.18.1", "2.18.2", client, "2.18.1");
-
- testConflictVersionsWithRollingUpgrade("2.18.0", "2.18.1", "2.17.2", client, "2.18.1");
-
- testConflictVersionsWithRollingUpgrade("2.18.1", "2.19.0", "2.19.1", client, "2.19.0");
-
- testConflictVersionsWithRollingUpgrade("2.18.1", "2.18.2", "2.18.0", client, "2.18.2");
- }
-
- /** */
- @Test
- public void testTwoCompatibleVersions() throws Exception {
- testCompatibleVersions("2.18.0", "2.18.0", client, null);
- testCompatibleVersions("2.19.2", "2.19.2", client, null);
-
- testCompatibleVersions("2.18.0", "2.18.1", client, "2.18.1");
- testCompatibleVersions("2.18.2", "2.19.0", client, "2.19.0");
- }
-
- /** */
- @Test
- public void testThreeCompatibleVersions() throws Exception {
- testCompatibleVersions("2.18.0", "2.18.0", "2.18.0", client, null);
- testCompatibleVersions("2.18.2", "2.18.2", "2.18.2", client, null);
-
- testCompatibleVersions("2.18.0", "2.18.1", "2.18.1", client, "2.18.1");
- testCompatibleVersions("2.18.1", "2.19.0", "2.18.1", client, "2.19.0");
- }
-
- /** */
- @Test
- public void testForwardRollingUpgrade() throws Exception {
- doTestRollingUpgrade("2.18.0", "2.18.1", false);
- }
-
- /** */
- @Test
- public void testForceRollingUpgrade() throws Exception {
- doTestRollingUpgrade("2.18.0", "2.19.1", true);
- }
-
- /** Performs full rolling upgrade scenario. */
- private void doTestRollingUpgrade(String curVer, String targetVer, boolean force) throws Exception {
- IgniteEx ign0 = startGrid(0, curVer, false);
- IgniteEx ign1 = startGrid(1, curVer, client);
- IgniteEx ign2 = startGrid(2, curVer, client);
-
- assertClusterSize(3);
-
- assertRemoteRejected(() -> startGrid(3, targetVer, client));
-
- configureRollingUpgradeVersion(ign0, targetVer, force);
-
- for (int i = 0; i < 3; i++) {
- int finalI = i;
- assertTrue(waitForCondition(() -> grid(finalI).context().rollingUpgrade().enabled(), getTestTimeout()));
- }
-
- ign2.close();
-
- assertClusterSize(2);
-
- startGrid(2, targetVer, client);
-
- assertClusterSize(3);
-
- ign1.close();
-
- assertClusterSize(2);
-
- startGrid(1, targetVer, client);
-
- assertClusterSize(3);
-
- ign0.close();
-
- assertClusterSize(2);
-
- startGrid(0, targetVer, false);
-
- assertClusterSize(3);
-
- if (client)
- grid(0).context().rollingUpgrade().disable();
- else
- grid(2).context().rollingUpgrade().disable();
-
- for (int i = 0; i < 3; i++) {
- if (!grid(i).localNode().isClient())
- assertFalse(grid(i).context().rollingUpgrade().enabled());
- }
-
- assertRemoteRejected(() -> startGrid(3, curVer, client));
- }
-
- /** */
- @Test
- public void testJoiningNodeFailed() throws Exception {
- int joinTimeout = 5_000;
-
- IgniteEx ign0 = startGrid(0, "2.18.0", false,
- cfg -> {
- ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setJoinTimeout(joinTimeout);
- return cfg;
- });
-
- configureRollingUpgradeVersion(ign0, "2.18.1");
-
- RunnableX runnableX = () -> startGrid(1, "2.18.1", false,
- cfg -> {
- TcpDiscoverySpi oldSpi = (TcpDiscoverySpi)cfg.getDiscoverySpi();
-
- TcpDiscoverySpi newSpi = new TcpDiscoverySpi() {
- @Override public void setNodeAttributes(Map<String, Object> attrs, IgniteProductVersion ver) {
- super.setNodeAttributes(attrs, ver);
-
- attrs.put(IgniteNodeAttributes.ATTR_BUILD_VER, nodeVer);
- attrs.put(IgniteNodeAttributes.ATTR_MARSHALLER, "null");
- }
- };
-
- newSpi.setIpFinder(oldSpi.getIpFinder());
-
- return cfg.setDiscoverySpi(newSpi);
- });
-
- Throwable e = assertThrows(log, runnableX, IgniteException.class, null);
-
- assertTrue(X.hasCause(e, "Local node's marshaller differs from remote node's marshaller", IgniteSpiException.class));
-
- ign0.context().rollingUpgrade().disable();
-
- assertFalse(ign0.context().rollingUpgrade().enabled());
- }
-
- /** */
- @Test
- public void testJoiningNodeLeft() throws Exception {
- IgniteEx ign0 = startGrid(0, "2.18.0", false, cfg -> {
- ((TcpDiscoverySpi)cfg.getDiscoverySpi()).setJoinTimeout(0);
- return cfg;
- });
-
- configureRollingUpgradeVersion(ign0, "2.18.1");
-
- try (IgniteEx ignore = startGrid(1, "2.18.1", false)) {
- assertClusterSize(2);
- }
-
- assertClusterSize(1);
-
- ign0.context().rollingUpgrade().disable();
- }
-
- /** */
- @Test
- public void testCoordinatorChange() throws Exception {
- IgniteEx ign0 = startGrid(0, "2.18.0", false);
- IgniteEx ign1 = startGrid(1, "2.18.0", false);
-
- configureRollingUpgradeVersion(ign0, "2.19.0");
-
- startGrid(2, "2.19.0", false);
-
- assertClusterSize(3);
-
- ign0.close();
- ign1.close();
-
- assertClusterSize(1);
-
- startGrid(0, "2.18.0", client);
- startGrid(1, "2.19.0", client);
-
- assertClusterSize(3);
-
- assertRemoteRejected(() -> startGrid(4, "2.20.0", client));
-
- assertClusterSize(3);
- }
-
- /** */
- @Test
- public void testNodeRestart() throws Exception {
- assumeTrue("Distributed metastorage is only preserved across restarts when persistence is enabled", persistence);
-
- for (int i = 0; i < 3; i++)
- startGrid(i, "2.18.0", false);
-
- assertClusterSize(3);
-
- configureRollingUpgradeVersion(grid(0), "2.18.1");
-
- for (int i = 0; i < 3; i++)
- grid(i).close();
-
- assertClusterSize(0);
-
- for (int i = 0; i < 3; i++)
- startGrid(i, "2.18.0", false);
-
- assertClusterSize(3);
-
- for (int i = 0; i < 3; i++) {
- assertTrue(grid(i).context().rollingUpgrade().enabled());
-
- IgnitePair<IgniteProductVersion> stored = grid(i).context().rollingUpgrade().versions();
-
- assertEquals(F.pair(IgniteProductVersion.fromString("2.18.0"), IgniteProductVersion.fromString("2.18.1")), stored);
- }
- }
-
- /** */
- @Test
- public void testRollingUpgradeProcessorVersionCheck() throws Exception {
- IgniteEx grid0 = startGrid(0, "2.18.0", false);
- startGrid(1, "2.18.0", client);
-
- assertClusterSize(2);
-
- assertEnablingFails(grid0, "3.0.0", "Major versions are different");
- assertEnablingFails(grid0, "2.19.2", "Minor version can only be incremented by 1");
- assertEnablingFails(grid0, "2.18.2", "Patch version can only be incremented by 1");
-
- IgnitePair<IgniteProductVersion> newPair = F.pair(IgniteProductVersion.fromString("2.18.0"),
- IgniteProductVersion.fromString("2.19.0"));
-
- grid0.context().rollingUpgrade().enable(newPair.get2(), false);
-
- assertEnablingFails(grid0, "2.18.1", "Rolling upgrade is already enabled with a different current and target version");
-
- for (int i = 0; i < 2; i++) {
- assertTrue(waitForCondition(grid(i).context().rollingUpgrade()::enabled, getTestTimeout()));
-
- assertEquals(newPair, grid(i).context().rollingUpgrade().versions());
- }
- }
-
- /**
- * Checks that enabling rolling upgrade fails with expected error message.
- *
- * @param ex Ex.
- * @param ver New version.
- * @param errMsg Expected error message.
- */
- private void assertEnablingFails(IgniteEx ex, String ver, String errMsg) {
- Throwable e = assertThrows(log,
- () -> ex.context().rollingUpgrade().enable(IgniteProductVersion.fromString(ver), false),
- IgniteException.class,
- null);
-
- assertTrue(e.getMessage().contains(errMsg));
- }
-
- /**
- * Checks that disabling rolling upgrade fails with expected error message.
- *
- * @param ex Ex.
- * @param errMsg Expected error message.
- */
- private void assertDisablingFails(IgniteEx ex, String errMsg) {
- Throwable e = assertThrows(log,
- () -> ex.context().rollingUpgrade().disable(),
- IgniteException.class,
- null);
-
- assertTrue(e.getMessage().contains(errMsg));
- }
-
- /** Tests that starting a node with rejected version fails with remote rejection. */
- private void testConflictVersions(String acceptedVer, String rejVer, boolean client) {
- ThrowableSupplier<IgniteEx, Exception> sup = () -> {
- IgniteEx ign = startGrid(0, acceptedVer, false);
-
- startGrid(1, rejVer, client, cfg -> {
- TcpDiscoverySpi spi = (TcpDiscoverySpi)cfg.getDiscoverySpi();
-
- // Decrease network timeout to reduce waiting time for node failure
- // after it has been rejected by the coordinator due to version conflict.
- spi.setNetworkTimeout(1_000);
-
- return cfg;
- });
-
- return ign;
- };
-
- assertRemoteRejected(sup);
-
- stopAllGrids();
- }
-
- /** Checks that the third grid is not compatible when rolling upgrade version is set. */
- private void testConflictVersionsWithRollingUpgrade(String acceptedVer1, String acceptedVer2, String rejVer,
- boolean client, String rollUpVer) throws Exception {
- ThrowableSupplier<IgniteEx, Exception> sup = () -> {
- IgniteEx ign = startGrid(0, acceptedVer1, false);
-
- configureRollingUpgradeVersion(ign, rollUpVer);
-
- startGrid(1, acceptedVer2, client);
-
- startGrid(2, rejVer, client);
-
- return ign;
- };
-
- assertRemoteRejected(sup);
-
- stopAllGrids();
-
- cleanPersistenceDir();
- }
-
- /** Checks that remote node rejected due to incompatible version. */
- private void assertRemoteRejected(ThrowableSupplier<IgniteEx, Exception> gridStart) {
- Throwable e = assertThrows(log, gridStart::get, IgniteCheckedException.class, null);
-
- assertTrue(X.hasCause(e, "Remote node rejected due to incompatible version for cluster join", IgniteSpiException.class));
- }
-
- /** Tests two compatible grids. */
- private void testCompatibleVersions(String acceptedVer1,
- String acceptedVer2,
- boolean client,
- String rollUpVerCheck) throws Exception {
- IgniteEx grid = startGrid(0, acceptedVer1, false);
-
- if (rollUpVerCheck != null)
- configureRollingUpgradeVersion(grid, rollUpVerCheck);
-
- startGrid(1, acceptedVer2, client);
-
- assertClusterSize(2);
-
- stopAllGrids();
-
- if (persistence)
- cleanPersistenceDir();
- }
-
- /** Tests three compatible grids. */
- private void testCompatibleVersions(
- String acceptedVer1,
- String acceptedVer2,
- String acceptedVer3,
- boolean client,
- String rollUpVerCheck
- ) throws Exception {
- IgniteEx grid = startGrid(0, acceptedVer1, false);
-
- if (rollUpVerCheck != null)
- configureRollingUpgradeVersion(grid, rollUpVerCheck);
-
- startGrid(1, acceptedVer2, client);
- startGrid(2, acceptedVer3, client);
-
- assertClusterSize(3);
-
- stopAllGrids();
-
- if (persistence)
- cleanPersistenceDir();
- }
-
- /** Starts grid with required version. */
- private IgniteEx startGrid(int idx, String ver, boolean isClient) throws Exception {
- return startGrid(idx, ver, isClient, null);
- }
-
- /** Starts grid with required version and custom configuration. */
- private IgniteEx startGrid(int idx, String ver, boolean isClient, UnaryOperator<IgniteConfiguration> cfgOp) throws Exception {
- nodeVer = ver;
-
- IgniteEx ign = isClient ? startClientGrid(idx, cfgOp) : startGrid(idx, cfgOp);
-
- if (persistence)
- ign.cluster().state(ClusterState.ACTIVE);
-
- return ign;
- }
-
- /** */
- private void configureRollingUpgradeVersion(IgniteEx grid, String ver) throws IgniteCheckedException {
- configureRollingUpgradeVersion(grid, ver, false);
- }
-
- /**
- * @param ver Version for rolling upgrade support.
- * @param force Force rolling upgrade.
- */
- private void configureRollingUpgradeVersion(IgniteEx grid, String ver, boolean force) throws IgniteCheckedException {
- if (ver == null) {
- grid.context().rollingUpgrade().disable();
- return;
- }
-
- IgniteProductVersion target = IgniteProductVersion.fromString(ver);
-
- grid.context().rollingUpgrade().enable(target, force);
- }
-
- /**
- * @param size Expected cluster size.
- */
- private void assertClusterSize(int size) throws IgniteInterruptedCheckedException {
- assertTrue("Expected cluster size: " + size + ", but was: " + Ignition.allGrids().size(),
- waitForCondition(() -> Ignition.allGrids().size() == size, getTestTimeout()));
- }
-}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
index 6a76831..6f724f5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/binary/BinaryMarshallerSelfTest.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.binary;
+import java.io.ByteArrayOutputStream;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
@@ -754,6 +755,28 @@
}
/**
+ * Marshalling into an {@link java.io.OutputStream} must produce exactly the same bytes as marshalling into an array.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testMarshalToStreamMatchesArray() throws Exception {
+ BinaryMarshaller marsh = binaryMarshaller();
+
+ for (Object obj : new Object[] {null, "string", 42, simpleObject()}) {
+ byte[] arr = marsh.marshal(obj);
+
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+ marsh.marshal(obj, out);
+
+ assertArrayEquals("Mismatch for " + obj, arr, out.toByteArray());
+
+ assertEquals(obj, marsh.unmarshal(out.toByteArray(), null));
+ }
+ }
+
+ /**
* @throws Exception If failed.
*/
@Test
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/codegen/MessageProcessorTest.java b/modules/core/src/test/java/org/apache/ignite/internal/codegen/MessageProcessorTest.java
index e1e2e38..8fb559b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/codegen/MessageProcessorTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/codegen/MessageProcessorTest.java
@@ -36,6 +36,7 @@
import org.apache.ignite.internal.Order;
import org.apache.ignite.internal.cache.query.QueryIndexMessage;
import org.apache.ignite.internal.util.CommonUtils;
+import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -363,13 +364,14 @@
for (String srcFile: srcFiles)
input.add(javaFile(srcFile));
- File igniteCoreJar = jarForClass(Message.class);
+ File igniteCoreJar = jarForClass(IgniteUtils.class);
File igniteCodegenJar = jarForClass(Order.class);
File igniteBinaryApiJar = jarForClass(IgniteUuid.class);
File igniteCommonsJar = jarForClass(CommonUtils.class);
+ File igniteNioJar = jarForClass(Message.class);
return Compiler.javac()
- .withClasspath(F.asList(igniteCoreJar, igniteCodegenJar, igniteBinaryApiJar, igniteCommonsJar))
+ .withClasspath(F.asList(igniteCoreJar, igniteCodegenJar, igniteBinaryApiJar, igniteCommonsJar, igniteNioJar))
.withProcessors(proc)
.compile(input);
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStreamImplByteOrderSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStreamImplByteOrderSelfTest.java
index 4c5a786..4000481 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStreamImplByteOrderSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/direct/stream/DirectByteBufferStreamImplByteOrderSelfTest.java
@@ -25,6 +25,8 @@
import java.util.function.Supplier;
import org.apache.commons.lang3.StringUtils;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersionEx;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.plugin.extensions.communication.Message;
@@ -542,6 +544,106 @@
}
/** */
+ @Test
+ public void testGridCacheVersion() {
+ try {
+ GridCacheVersion ver = new GridCacheVersion(2, 20, 8198, 4);
+
+ readWriteGridCacheVersion(ver);
+ readWriteGridCacheVersion(null);
+
+ buff.limit(0);
+
+ readWriteGridCacheVersion(ver);
+ readWriteGridCacheVersion(null);
+
+ buff.limit(6);
+
+ readWriteGridCacheVersion(ver);
+ readWriteGridCacheVersion(null);
+
+ }
+ finally {
+ buff.limit(buff.capacity());
+ }
+ }
+
+ /** */
+ @Test
+ public void testGridCacheVersionEx() {
+ try {
+ GridCacheVersionEx ver = new GridCacheVersionEx(1, 2, 3, new GridCacheVersion(2, 20, 8198, 4));
+
+ assertTrue(ver.conflictVersion().dataCenterId() != 0);
+
+ readWriteGridCacheVersion(ver);
+ readWriteGridCacheVersion(null);
+
+ buff.limit(0);
+
+ readWriteGridCacheVersion(ver);
+ readWriteGridCacheVersion(null);
+
+ buff.limit(6);
+
+ readWriteGridCacheVersion(ver);
+ readWriteGridCacheVersion(null);
+
+ }
+ finally {
+ buff.limit(buff.capacity());
+ }
+ }
+
+ /** */
+ private void readWriteGridCacheVersion(GridCacheVersion ver) {
+ DirectByteBufferStream writeStream = createStream(buff);
+ DirectByteBufferStream readStream = createStream(buff);
+
+ int startLimit = buff.limit();
+ int iter = 0;
+
+ do {
+ writeStream.writeGridCacheVersion(ver);
+
+ if (buff.limit() < buff.capacity())
+ buff.limit(buff.limit() + 1);
+ else
+ buff.limit(buff.capacity());
+
+ assertTrue("Must be done earlier", iter++ < buff.capacity());
+ } while (!writeStream.lastFinished());
+
+ buff.rewind();
+ buff.limit(startLimit);
+
+ GridCacheVersion ver1;
+
+ iter = 0;
+
+ do {
+ ver1 = readStream.readGridCacheVersion();
+
+ if (buff.limit() < buff.capacity())
+ buff.limit(buff.limit() + 1);
+ else
+ buff.limit(buff.capacity());
+
+ assertTrue("Must be done earlier", iter++ < buff.capacity());
+ } while (!readStream.lastFinished());
+
+ assertEquals(ver, ver1);
+
+ if (ver instanceof GridCacheVersionEx) {
+ assertEquals(ver.conflictVersion(), ver1.conflictVersion());
+ assertEquals(ver.conflictVersion().dataCenterId(), ver1.conflictVersion().dataCenterId());
+ }
+
+ buff.rewind();
+ buff.limit(startLimit);
+ }
+
+ /** */
private void readWriteIgniteProductVersion(IgniteProductVersion ver) {
DirectByteBufferStream writeStream = createStream(buff);
DirectByteBufferStream readStream = createStream(buff);
@@ -552,14 +654,12 @@
do {
writeStream.writeIgniteProductVersion(ver);
- if (iter == 0 && buff.limit() < buff.capacity())
- buff.limit(buff.limit() + 4);
- else if (iter == 1 && buff.limit() < buff.capacity())
- buff.limit(buff.limit() + 10);
+ if (buff.limit() < buff.capacity())
+ buff.limit(buff.limit() + 1);
else
buff.limit(buff.capacity());
- assertTrue("Must be done earlier", iter++ < 10);
+ assertTrue("Must be done earlier", iter++ < 100);
} while (!writeStream.lastFinished());
buff.rewind();
@@ -572,14 +672,12 @@
do {
ver1 = readStream.readIgniteProductVersion();
- if (iter == 0 && buff.limit() < buff.capacity())
- buff.limit(buff.limit() + 4);
- else if (iter == 1 && buff.limit() < buff.capacity())
- buff.limit(buff.limit() + 10);
+ if (buff.limit() < buff.capacity())
+ buff.limit(buff.limit() + 1);
else
buff.limit(buff.capacity());
- assertTrue("Must be done earlier", iter++ < 10);
+ assertTrue("Must be done earlier", iter++ < 100);
} while (!readStream.lastFinished());
assertEquals(ver, ver1);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/AbstractMessageSerializationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/AbstractMessageSerializationTest.java
index 82d3d96..4f76c87 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/managers/AbstractMessageSerializationTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/AbstractMessageSerializationTest.java
@@ -29,6 +29,7 @@
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.lang.IgniteUuid;
@@ -317,6 +318,11 @@
}
/** {@inheritDoc} */
+ @Override public boolean writeGridCacheVersion(GridCacheVersion ver) {
+ return writeField(GridCacheVersion.class);
+ }
+
+ /** {@inheritDoc} */
@Override public boolean isHeaderWritten() {
return true;
}
@@ -585,6 +591,13 @@
}
/** {@inheritDoc} */
+ @Override public GridCacheVersion readGridCacheVersion() {
+ readField(GridCacheVersion.class);
+
+ return null;
+ }
+
+ /** {@inheritDoc} */
@Override public boolean isLastRead() {
if (position <= capacity)
return true;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
index 67d90fe..36b4579 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/JmxExporterSpiTest.java
@@ -64,8 +64,8 @@
import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectAllTypes;
import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectEnum;
import org.apache.ignite.internal.client.thin.ProtocolVersion;
-import org.apache.ignite.internal.metric.SystemViewSelfTest.TestPredicate;
-import org.apache.ignite.internal.metric.SystemViewSelfTest.TestTransformer;
+import org.apache.ignite.internal.metric.SystemViewQueriesTest.TestPredicate;
+import org.apache.ignite.internal.metric.SystemViewQueriesTest.TestTransformer;
import org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager;
import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
import org.apache.ignite.internal.processors.metric.GridMetricManager;
@@ -91,8 +91,8 @@
import static org.apache.ignite.internal.managers.systemview.ScanQuerySystemView.SCAN_QRY_SYS_VIEW;
import static org.apache.ignite.internal.managers.systemview.SystemViewMBean.FILTER_OPERATION;
import static org.apache.ignite.internal.managers.systemview.SystemViewMBean.VIEWS;
-import static org.apache.ignite.internal.metric.SystemViewSelfTest.TEST_PREDICATE;
-import static org.apache.ignite.internal.metric.SystemViewSelfTest.TEST_TRANSFORMER;
+import static org.apache.ignite.internal.metric.SystemViewQueriesTest.TEST_PREDICATE;
+import static org.apache.ignite.internal.metric.SystemViewQueriesTest.TEST_TRANSFORMER;
import static org.apache.ignite.internal.processors.cache.CacheMetricsImpl.CACHE_METRICS;
import static org.apache.ignite.internal.processors.cache.ClusterCachesInfo.CACHES_VIEW;
import static org.apache.ignite.internal.processors.cache.ClusterCachesInfo.CACHE_GRPS_VIEW;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewAbstractTest.java
new file mode 100644
index 0000000..8a6c2ae
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewAbstractTest.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+
+/** Abstract base class for system view tests. */
+public abstract class SystemViewAbstractTest extends GridCommonAbstractTest {
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ cleanPersistenceDir();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ super.afterTestsStopped();
+
+ cleanPersistenceDir();
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewBinaryMetaTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewBinaryMetaTest.java
new file mode 100644
index 0000000..f9970b0
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewBinaryMetaTest.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.lang.reflect.Field;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectAllTypes;
+import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectEnum;
+import org.apache.ignite.spi.systemview.view.BinaryMetadataView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.BINARY_METADATA_VIEW;
+
+/** Tests for {@link SystemView} for binary meta. */
+public class SystemViewBinaryMetaTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testBinaryMeta() throws Exception {
+ try (IgniteEx g = startGrid(0)) {
+ IgniteCache<Integer, TestObjectAllTypes> c1 = g.createCache("test-cache");
+ IgniteCache<Integer, TestObjectEnum> c2 = g.createCache("test-enum-cache");
+
+ c1.put(1, new TestObjectAllTypes());
+ c2.put(1, TestObjectEnum.A);
+
+ SystemView<BinaryMetadataView> view = g.context().systemView().view(BINARY_METADATA_VIEW);
+
+ assertNotNull(view);
+ assertEquals(2, view.size());
+
+ for (BinaryMetadataView meta : view) {
+ if (TestObjectEnum.class.getName().contains(meta.typeName())) {
+ assertTrue(meta.isEnum());
+
+ assertEquals(0, meta.fieldsCount());
+ }
+ else {
+ assertFalse(meta.isEnum());
+
+ Field[] fields = TestObjectAllTypes.class.getDeclaredFields();
+
+ assertEquals(fields.length, meta.fieldsCount());
+
+ for (Field field : fields)
+ assertTrue(meta.fields().contains(field.getName()));
+ }
+ }
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewCacheTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewCacheTest.java
new file mode 100644
index 0000000..94028e0
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewCacheTest.java
@@ -0,0 +1,221 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import javax.cache.expiry.CreatedExpiryPolicy;
+import javax.cache.expiry.Duration;
+import javax.cache.expiry.EternalExpiryPolicy;
+import javax.cache.expiry.ModifiedExpiryPolicy;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.spi.systemview.view.CacheGroupIoView;
+import org.apache.ignite.spi.systemview.view.CacheGroupView;
+import org.apache.ignite.spi.systemview.view.CacheView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.cache.ClusterCachesInfo.CACHES_VIEW;
+import static org.apache.ignite.internal.processors.cache.ClusterCachesInfo.CACHE_GRPS_VIEW;
+import static org.apache.ignite.internal.processors.cache.GridCacheProcessor.CACHE_GRP_IO_VIEW;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
+
+/** Tests for {@link SystemView} for caches. */
+public class SystemViewCacheTest extends SystemViewAbstractTest {
+ /** Tests work of {@link SystemView} for caches. */
+ @Test
+ public void testCachesView() throws Exception {
+ try (IgniteEx g = startGrid()) {
+ Set<String> cacheNames = new HashSet<>(Arrays.asList("cache-1", "cache-2"));
+
+ for (String name : cacheNames)
+ g.createCache(name);
+
+ SystemView<CacheView> caches = g.context().systemView().view(CACHES_VIEW);
+
+ assertEquals(g.context().cache().cacheDescriptors().size(), F.size(caches.iterator()));
+
+ for (CacheView row : caches)
+ cacheNames.remove(row.cacheName());
+
+ assertTrue(cacheNames.toString(), cacheNames.isEmpty());
+ }
+ }
+
+ /** Tests work of {@link SystemView} for cache groups. */
+ @Test
+ public void testCacheGroupsView() throws Exception {
+ try (IgniteEx g = startGrid()) {
+ Set<String> grpNames = new HashSet<>(Arrays.asList("grp-1", "grp-2"));
+
+ for (String grpName : grpNames)
+ g.createCache(new CacheConfiguration<>("cache-" + grpName).setGroupName(grpName));
+
+ SystemView<CacheGroupView> grps = g.context().systemView().view(CACHE_GRPS_VIEW);
+
+ assertEquals(g.context().cache().cacheGroupDescriptors().size(), F.size(grps.iterator()));
+
+ for (CacheGroupView row : grps)
+ grpNames.remove(row.cacheGroupName());
+
+ assertTrue(grpNames.toString(), grpNames.isEmpty());
+ }
+ }
+
+ /** Tests work of {@link SystemView} for cache expiry policy info with in-memory configuration. */
+ @Test
+ public void testCacheViewExpiryPolicyWithInMemory() throws Exception {
+ testCacheViewExpiryPolicy(false);
+ }
+
+ /** Tests work of {@link SystemView} for cache expiry policy info with persist configuration. */
+ @Test
+ public void testCacheViewExpiryPolicyWithPersist() throws Exception {
+ testCacheViewExpiryPolicy(true);
+ }
+
+ /** Tests work of {@link SystemView} for cache groups expiry policy info. */
+ private void testCacheViewExpiryPolicy(boolean withPersistence) throws Exception {
+ try (IgniteEx g = !withPersistence ? startGrid() : startGrid(getConfiguration().setDataStorageConfiguration(
+ new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration().setPersistenceEnabled(true)
+ )))) {
+
+ if (withPersistence)
+ g.cluster().state(ClusterState.ACTIVE);
+
+ String eternalCacheName = "eternalCache";
+ String createdCacheName = "createdCache";
+ String eagerTtlCacheName = "eagerTtlCache";
+ String withoutGrpCacheName = "withoutGrpCache";
+ String dfltCacheName = "defaultCache";
+
+ CacheConfiguration<Long, Long> eternalCache = new CacheConfiguration<Long, Long>(eternalCacheName)
+ .setGroupName("group1")
+ .setExpiryPolicyFactory(EternalExpiryPolicy.factoryOf());
+
+ CacheConfiguration<Long, Long> createdCache = new CacheConfiguration<Long, Long>(createdCacheName)
+ .setGroupName("group2")
+ .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.MILLISECONDS, 500L)));
+
+ CacheConfiguration<Long, Long> eagerTtlCache = new CacheConfiguration<Long, Long>(eagerTtlCacheName)
+ .setGroupName("group2")
+ .setEagerTtl(false)
+ .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.MILLISECONDS, 500L)));
+
+ CacheConfiguration<Long, Long> withoutGrpCache = new CacheConfiguration<Long, Long>(withoutGrpCacheName)
+ .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.MILLISECONDS, 500L)));
+
+ CacheConfiguration<Long, Long> dfltCache = new CacheConfiguration<Long, Long>(dfltCacheName)
+ .setGroupName("group3");
+
+ g.createCache(eternalCache);
+ g.createCache(createdCache);
+ g.createCache(eagerTtlCache);
+ g.createCache(withoutGrpCache);
+ g.createCache(dfltCache);
+
+ SystemView<CacheView> caches = g.context().systemView().view(CACHES_VIEW);
+
+ for (CacheView row : caches) {
+ switch (row.cacheName()) {
+ case "defaultCache":
+ case "eternalCache":
+ assertEquals("No", row.hasExpiringEntries());
+
+ g.cache(row.cacheName()).put(0, 0);
+
+ assertEquals("No", row.hasExpiringEntries());
+
+ g.cache(row.cacheName())
+ .withExpiryPolicy(new CreatedExpiryPolicy(new Duration(TimeUnit.MILLISECONDS, 200L)))
+ .put(1, 1);
+
+ assertEquals("Yes", row.hasExpiringEntries());
+ assertTrue(waitForCondition(() -> "No".equals(row.hasExpiringEntries()), getTestTimeout()));
+
+ break;
+
+ case "withoutGrpCache":
+ case "createdCache":
+ assertEquals("No", row.hasExpiringEntries());
+
+ g.cache(row.cacheName()).put(0, 0);
+
+ assertEquals("Yes", row.hasExpiringEntries());
+ assertTrue(waitForCondition(() -> "No".equals(row.hasExpiringEntries()), getTestTimeout()));
+
+ g.cache(row.cacheName())
+ .withExpiryPolicy(new ModifiedExpiryPolicy(new Duration(TimeUnit.MILLISECONDS, 200L)))
+ .put(1, 1);
+
+ assertEquals("Yes", row.hasExpiringEntries());
+ assertTrue(waitForCondition(() -> "No".equals(row.hasExpiringEntries()), getTestTimeout()));
+
+ if (row.cacheName().equals(createdCacheName)) {
+ g.cache(eagerTtlCacheName).put(2, 2);
+ assertEquals("No", row.hasExpiringEntries());
+ }
+
+ break;
+
+ case "eagerTtlCache":
+ assertEquals("Unknown", row.hasExpiringEntries());
+
+ break;
+ }
+ }
+ }
+ }
+
+ /** Tests work of {@link SystemView} for cache group I/O operations. */
+ @Test
+ public void testCacheGroupIo() throws Exception {
+ cleanPersistenceDir();
+
+ try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(
+ new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration().setPersistenceEnabled(true))))
+ ) {
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ IgniteCache<Object, Object> cache = ignite.createCache("cache");
+
+ cache.put(0, 0);
+ cache.get(0);
+
+ SystemView<CacheGroupIoView> view = ignite.context().systemView().view(CACHE_GRP_IO_VIEW);
+
+ CacheGroupIoView row = F.find(view, null,
+ (IgnitePredicate<CacheGroupIoView>)r -> "cache".equals(r.cacheGroupName()));
+
+ assertNotNull(row);
+ assertTrue(row.logicalReads() > 0);
+ assertTrue(row.insertedBytes() > 0);
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewClientTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewClientTest.java
new file mode 100644
index 0000000..f1448d7
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewClientTest.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.sql.Connection;
+import java.util.Iterator;
+import java.util.Properties;
+import org.apache.ignite.IgniteJdbcThinDriver;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.client.Config;
+import org.apache.ignite.client.IgniteClient;
+import org.apache.ignite.configuration.ClientConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.client.thin.ProtocolVersion;
+import org.apache.ignite.internal.processors.odbc.jdbc.JdbcConnectionContext;
+import org.apache.ignite.internal.systemview.ClientConnectionAttributeViewWalker;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.spi.systemview.view.ClientConnectionAttributeView;
+import org.apache.ignite.spi.systemview.view.ClientConnectionView;
+import org.apache.ignite.spi.systemview.view.FiltrableSystemView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.odbc.ClientListenerProcessor.CLI_CONN_ATTR_VIEW;
+import static org.apache.ignite.internal.processors.odbc.ClientListenerProcessor.CLI_CONN_VIEW;
+import static org.apache.ignite.internal.util.lang.GridFunc.identity;
+
+/** Tests for {@link SystemView} for clients. */
+public class SystemViewClientTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testClientsConnections() throws Exception {
+ try (IgniteEx g0 = startGrid(0)) {
+ String host = g0.configuration().getClientConnectorConfiguration().getHost();
+
+ if (host == null)
+ host = g0.configuration().getLocalHost();
+
+ int port = g0.configuration().getClientConnectorConfiguration().getPort();
+
+ SystemView<ClientConnectionView> conns = g0.context().systemView().view(CLI_CONN_VIEW);
+
+ try (IgniteClient cli = Ignition.startClient(new ClientConfiguration().setAddresses(host + ":" + port))) {
+ assertEquals(1, conns.size());
+
+ ClientConnectionView cliConn = conns.iterator().next();
+
+ assertEquals("THIN", cliConn.type());
+ assertEquals(cliConn.localAddress().getHostName(), cliConn.remoteAddress().getHostName());
+ assertEquals(g0.configuration().getClientConnectorConfiguration().getPort(),
+ cliConn.localAddress().getPort());
+ assertEquals(cliConn.version(), ProtocolVersion.LATEST_VER.toString());
+
+ try (Connection conn =
+ new IgniteJdbcThinDriver().connect("jdbc:ignite:thin://" + host, new Properties())) {
+ assertEquals(2, conns.size());
+ assertEquals(1, F.size(jdbcConnectionsIterator(conns)));
+
+ ClientConnectionView jdbcConn = jdbcConnectionsIterator(conns).next();
+
+ assertEquals("JDBC", jdbcConn.type());
+ assertEquals(jdbcConn.localAddress().getHostName(), jdbcConn.remoteAddress().getHostName());
+ assertEquals(g0.configuration().getClientConnectorConfiguration().getPort(),
+ jdbcConn.localAddress().getPort());
+ assertEquals(jdbcConn.version(), JdbcConnectionContext.CURRENT_VER.asString());
+ }
+ }
+
+ boolean res = GridTestUtils.waitForCondition(() -> conns.size() == 0, 5_000);
+
+ assertTrue(res);
+ }
+ }
+
+ /** */
+ @Test
+ public void testClientConnectionAttributes() throws Exception {
+ try (IgniteEx g0 = startGrid(0)) {
+ SystemView<ClientConnectionAttributeView> view = g0.context().systemView().view(CLI_CONN_ATTR_VIEW);
+
+ try (
+ IgniteClient cl1 = Ignition.startClient(new ClientConfiguration().setAddresses(Config.SERVER)
+ .setUserAttributes(F.asMap("attr1", "val1", "attr2", "val2")));
+ IgniteClient cl2 = Ignition.startClient(new ClientConfiguration().setAddresses(Config.SERVER)
+ .setUserAttributes(F.asMap("attr1", "val2")));
+ IgniteClient cl3 = Ignition.startClient(new ClientConfiguration().setAddresses(Config.SERVER))
+ ) {
+ assertEquals(3, F.size(view.iterator()));
+
+ assertEquals(1, F.size(view.iterator(), row ->
+ "attr1".equals(row.name()) && "val1".equals(row.value())));
+
+ // Test filtering.
+ assertTrue(view instanceof FiltrableSystemView);
+
+ Iterator<ClientConnectionAttributeView> iter = ((FiltrableSystemView<ClientConnectionAttributeView>)view)
+ .iterator(F.asMap(ClientConnectionAttributeViewWalker.NAME_FILTER, "attr1"));
+
+ assertEquals(2, F.size(iter));
+
+ iter = ((FiltrableSystemView<ClientConnectionAttributeView>)view).iterator(
+ F.asMap(ClientConnectionAttributeViewWalker.NAME_FILTER, "attr2"));
+
+ assertTrue(iter.hasNext());
+
+ long connId = iter.next().connectionId();
+
+ assertFalse(iter.hasNext());
+
+ iter = ((FiltrableSystemView<ClientConnectionAttributeView>)view).iterator(
+ F.asMap(ClientConnectionAttributeViewWalker.CONNECTION_ID_FILTER, connId));
+
+ assertEquals(2, F.size(iter));
+ }
+ }
+ }
+
+ /** */
+ private Iterator<ClientConnectionView> jdbcConnectionsIterator(SystemView<ClientConnectionView> conns) {
+ return F.iterator(conns.iterator(), identity(), true, v -> "JDBC".equals(v.type()));
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewComputeTaskTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewComputeTaskTest.java
new file mode 100644
index 0000000..e7f388d
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewComputeTaskTest.java
@@ -0,0 +1,349 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.BrokenBarrierException;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.CyclicBarrier;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCompute;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.compute.ComputeJob;
+import org.apache.ignite.compute.ComputeJobResult;
+import org.apache.ignite.compute.ComputeJobResultPolicy;
+import org.apache.ignite.compute.ComputeTask;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.processors.task.GridInternal;
+import org.apache.ignite.lang.IgniteCallable;
+import org.apache.ignite.lang.IgniteClosure;
+import org.apache.ignite.lang.IgniteRunnable;
+import org.apache.ignite.lang.IgniteUuid;
+import org.apache.ignite.spi.systemview.view.ComputeJobView;
+import org.apache.ignite.spi.systemview.view.ComputeTaskView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.job.GridJobProcessor.JOBS_VIEW;
+import static org.apache.ignite.internal.processors.task.GridTaskProcessor.TASKS_VIEW;
+import static org.apache.ignite.testframework.GridTestUtils.runAsync;
+
+/** Tests for {@link SystemView} for compute tasks. */
+public class SystemViewComputeTaskTest extends SystemViewAbstractTest {
+ /** */
+ private static CountDownLatch jobStartedLatch;
+
+ /** */
+ private static CountDownLatch releaseJobLatch;
+
+ /** Tests work of {@link SystemView} for compute grid {@link IgniteCompute#broadcastAsync(IgniteRunnable)} call. */
+ @Test
+ public void testComputeBroadcast() throws Exception {
+ CyclicBarrier barrier = new CyclicBarrier(6);
+
+ try (IgniteEx g1 = startGrid(0)) {
+ SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
+
+ for (int i = 0; i < 5; i++) {
+ g1.compute().broadcastAsync(() -> {
+ try {
+ barrier.await();
+ barrier.await();
+ }
+ catch (InterruptedException | BrokenBarrierException e) {
+ throw new RuntimeException(e);
+ }
+ });
+ }
+
+ barrier.await();
+
+ assertEquals(5, tasks.size());
+
+ ComputeTaskView t = tasks.iterator().next();
+
+ assertFalse(t.internal());
+ assertNull(t.affinityCacheName());
+ assertEquals(-1, t.affinityPartitionId());
+ assertTrue(t.taskClassName().startsWith(getClass().getName()));
+ assertTrue(t.taskName().startsWith(getClass().getName()));
+ assertEquals(g1.localNode().id(), t.taskNodeId());
+ assertEquals("0", t.userVersion());
+
+ barrier.await();
+ }
+ }
+
+ /** Tests work of {@link SystemView} for compute grid {@link IgniteCompute#runAsync(IgniteRunnable)} call. */
+ @Test
+ public void testComputeRunnable() throws Exception {
+ CyclicBarrier barrier = new CyclicBarrier(2);
+
+ try (IgniteEx g1 = startGrid(0)) {
+ SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
+
+ g1.compute().runAsync(() -> {
+ try {
+ barrier.await();
+ barrier.await();
+ }
+ catch (InterruptedException | BrokenBarrierException e) {
+ throw new RuntimeException(e);
+ }
+ });
+
+ barrier.await();
+
+ assertEquals(1, tasks.size());
+
+ ComputeTaskView t = tasks.iterator().next();
+
+ assertFalse(t.internal());
+ assertNull(t.affinityCacheName());
+ assertEquals(-1, t.affinityPartitionId());
+ assertTrue(t.taskClassName().startsWith(getClass().getName()));
+ assertTrue(t.taskName().startsWith(getClass().getName()));
+ assertEquals(g1.localNode().id(), t.taskNodeId());
+ assertEquals("0", t.userVersion());
+
+ barrier.await();
+ }
+ }
+
+ /** Tests work of {@link SystemView} for compute grid {@link IgniteCompute#apply(IgniteClosure, Object)} call. */
+ @Test
+ public void testComputeApply() throws Exception {
+ CyclicBarrier barrier = new CyclicBarrier(2);
+
+ try (IgniteEx g1 = startGrid(0)) {
+ SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
+
+ GridTestUtils.runAsync(() -> {
+ g1.compute().apply(x -> {
+ try {
+ barrier.await();
+ barrier.await();
+ }
+ catch (InterruptedException | BrokenBarrierException e) {
+ throw new RuntimeException(e);
+ }
+
+ return 0;
+ }, 1);
+ });
+
+ barrier.await();
+
+ assertEquals(1, tasks.size());
+
+ ComputeTaskView t = tasks.iterator().next();
+
+ assertFalse(t.internal());
+ assertNull(t.affinityCacheName());
+ assertEquals(-1, t.affinityPartitionId());
+ assertTrue(t.taskClassName().startsWith(getClass().getName()));
+ assertTrue(t.taskName().startsWith(getClass().getName()));
+ assertEquals(g1.localNode().id(), t.taskNodeId());
+ assertEquals("0", t.userVersion());
+
+ barrier.await();
+ }
+ }
+
+ /**
+ * Tests work of {@link SystemView} for compute grid
+ * {@link IgniteCompute#affinityCallAsync(String, Object, IgniteCallable)} call.
+ */
+ @Test
+ public void testComputeAffinityCall() throws Exception {
+ CyclicBarrier barrier = new CyclicBarrier(2);
+
+ try (IgniteEx g1 = startGrid(0)) {
+ SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
+
+ IgniteCache<Integer, Integer> cache = g1.createCache("test-cache");
+
+ cache.put(1, 1);
+
+ g1.compute().affinityCallAsync("test-cache", 1, () -> {
+ try {
+ barrier.await();
+ barrier.await();
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+
+ return 0;
+ });
+
+ barrier.await();
+
+ assertEquals(1, tasks.size());
+
+ ComputeTaskView t = tasks.iterator().next();
+
+ assertFalse(t.internal());
+ assertEquals("test-cache", t.affinityCacheName());
+ assertEquals(1, t.affinityPartitionId());
+ assertTrue(t.taskClassName().startsWith(getClass().getName()));
+ assertTrue(t.taskName().startsWith(getClass().getName()));
+ assertEquals(g1.localNode().id(), t.taskNodeId());
+ assertEquals("0", t.userVersion());
+
+ barrier.await();
+ }
+ }
+
+ /** */
+ @Test
+ public void testComputeTask() throws Exception {
+ doTestComputeTask(false);
+ }
+
+ /** */
+ @Test
+ public void testInternalComputeTask() throws Exception {
+ doTestComputeTask(true);
+ }
+
+ /** */
+ private void doTestComputeTask(boolean internal) throws Exception {
+ int gridCnt = 3;
+
+ IgniteEx g1 = startGrids(gridCnt);
+
+ try {
+ IgniteCache<Integer, Integer> cache = g1.createCache("test-cache");
+
+ cache.put(1, 1);
+
+ for (int i = 0; i < gridCnt; i++) {
+ IgniteEx grid = grid(i);
+
+ SystemView<ComputeTaskView> tasks = grid.context().systemView().view(TASKS_VIEW);
+
+ jobStartedLatch = new CountDownLatch(3);
+ releaseJobLatch = new CountDownLatch(1);
+
+ IgniteInternalFuture<Object> fut
+ = runAsync(() -> grid.compute().execute(internal ? new InternalTask() : new UserTask(), 1));
+
+ assertTrue(jobStartedLatch.await(30_000, TimeUnit.MILLISECONDS));
+
+ try {
+ assertEquals(1, tasks.size());
+
+ ComputeTaskView t = tasks.iterator().next();
+
+ assertEquals("Expecting to see " + (internal ? "internal" : "user") + " task", internal, t.internal());
+ assertNull(t.affinityCacheName());
+ assertEquals(-1, t.affinityPartitionId());
+ assertTrue(t.taskClassName().startsWith(getClass().getName()));
+ assertTrue(t.taskName().startsWith(getClass().getName()));
+ assertEquals(grid.localNode().id(), t.taskNodeId());
+ assertEquals("0", t.userVersion());
+
+ checkJobs(gridCnt, internal, t.sessionId());
+ }
+ finally {
+ releaseJobLatch.countDown();
+ }
+
+ fut.get(getTestTimeout(), TimeUnit.MILLISECONDS);
+ }
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+
+ /** */
+ private void checkJobs(int gridCnt, boolean internal, IgniteUuid sesId) {
+ for (int i = 0; i < gridCnt; i++) {
+ SystemView<ComputeJobView> jobs = grid(i).context().systemView().view(JOBS_VIEW);
+
+ assertTrue("Expecting to see " + (internal ? "internal" : "user") + " job", jobs.size() > 0);
+
+ ComputeJobView job = jobs.iterator().next();
+
+ assertEquals(sesId, job.sessionId());
+ assertEquals("Expecting to see " + (internal ? "internal" : "user") + " job", internal, job.isInternal());
+ }
+
+ releaseJobLatch.countDown();
+ }
+
+ /** */
+ private static class UserTask implements ComputeTask<Object, Object> {
+ /** {@inheritDoc} */
+ @Override public @NotNull Map<? extends ComputeJob, ClusterNode> map(
+ List<ClusterNode> subgrid,
+ @Nullable Object arg
+ ) throws IgniteException {
+ return subgrid.stream().collect(Collectors.toMap(k -> new UserJob(), Function.identity()));
+ }
+
+ /** {@inheritDoc} */
+ @Override public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> rcvd) throws IgniteException {
+ return ComputeJobResultPolicy.WAIT;
+ }
+
+ /** {@inheritDoc} */
+ @Nullable @Override public Object reduce(List<ComputeJobResult> results) throws IgniteException {
+ return 1;
+ }
+
+ /** */
+ private static class UserJob implements ComputeJob {
+ /** {@inheritDoc} */
+ @Override public void cancel() {
+ // No-op.
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object execute() throws IgniteException {
+ jobStartedLatch.countDown();
+
+ try {
+ assertTrue(releaseJobLatch.await(30_000, TimeUnit.MILLISECONDS));
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+
+ return 1;
+ }
+ }
+ }
+
+ /** */
+ @GridInternal
+ public static class InternalTask extends UserTask {
+ // No-op.
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewConfigurationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewConfigurationTest.java
new file mode 100644
index 0000000..35574e9
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewConfigurationTest.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.spi.systemview.view.ConfigurationView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.events.EventType.EVT_CONSISTENCY_VIOLATION;
+import static org.apache.ignite.internal.IgniteKernal.CFG_VIEW;
+import static org.apache.ignite.internal.util.IgniteUtils.MB;
+
+/** Tests for {@link SystemView} for configuration. */
+public class SystemViewConfigurationTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testConfigurationView() throws Exception {
+ long expMaxSize = 10 * MB;
+
+ String expName = "my-instance";
+
+ String expDrName = "my-dr";
+
+ IgniteConfiguration icfg = getConfiguration(expName)
+ .setIncludeEventTypes(EVT_CONSISTENCY_VIOLATION)
+ .setDataStorageConfiguration(new DataStorageConfiguration()
+ .setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration()
+ .setLazyMemoryAllocation(false))
+ .setDataRegionConfigurations(
+ new DataRegionConfiguration()
+ .setName(expDrName)
+ .setMaxSize(expMaxSize)));
+
+ try (IgniteEx ignite = startGrid(icfg)) {
+ Map<String, String> viewContent = new HashMap<>();
+
+ ignite.context().systemView().<ConfigurationView>view(CFG_VIEW)
+ .forEach(view -> viewContent.put(view.name(), view.value()));
+
+ assertEquals(expName, viewContent.get("IgniteInstanceName"));
+ assertEquals(
+ "false",
+ viewContent.get("DataStorageConfiguration.DefaultDataRegionConfiguration.LazyMemoryAllocation")
+ );
+ assertEquals(expDrName, viewContent.get("DataStorageConfiguration.DataRegionConfigurations[0].Name"));
+ assertEquals(
+ Long.toString(expMaxSize),
+ viewContent.get("DataStorageConfiguration.DataRegionConfigurations[0].MaxSize")
+ );
+ assertEquals(
+ CacheAtomicityMode.TRANSACTIONAL.name(),
+ viewContent.get("CacheConfiguration[0].AtomicityMode")
+ );
+ assertTrue(viewContent.containsKey("AddressResolver"));
+ assertNull(viewContent.get("AddressResolver"));
+ assertEquals("[" + EVT_CONSISTENCY_VIOLATION + ']', viewContent.get("IncludeEventTypes"));
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewDSTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewDSTest.java
new file mode 100644
index 0000000..05abbf4
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewDSTest.java
@@ -0,0 +1,704 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import org.apache.ignite.IgniteAtomicLong;
+import org.apache.ignite.IgniteAtomicReference;
+import org.apache.ignite.IgniteAtomicSequence;
+import org.apache.ignite.IgniteAtomicStamped;
+import org.apache.ignite.IgniteCountDownLatch;
+import org.apache.ignite.IgniteLock;
+import org.apache.ignite.IgniteQueue;
+import org.apache.ignite.IgniteSemaphore;
+import org.apache.ignite.IgniteSet;
+import org.apache.ignite.configuration.AtomicConfiguration;
+import org.apache.ignite.configuration.CollectionConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.typedef.internal.CU;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.apache.ignite.spi.systemview.view.datastructures.AtomicLongView;
+import org.apache.ignite.spi.systemview.view.datastructures.AtomicReferenceView;
+import org.apache.ignite.spi.systemview.view.datastructures.AtomicSequenceView;
+import org.apache.ignite.spi.systemview.view.datastructures.AtomicStampedView;
+import org.apache.ignite.spi.systemview.view.datastructures.CountDownLatchView;
+import org.apache.ignite.spi.systemview.view.datastructures.QueueView;
+import org.apache.ignite.spi.systemview.view.datastructures.ReentrantLockView;
+import org.apache.ignite.spi.systemview.view.datastructures.SemaphoreView;
+import org.apache.ignite.spi.systemview.view.datastructures.SetView;
+import org.junit.Test;
+
+import static org.apache.ignite.configuration.AtomicConfiguration.DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.DEFAULT_DS_GROUP_NAME;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.DEFAULT_VOLATILE_DS_GROUP_NAME;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.LATCHES_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.LOCKS_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.LONGS_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.QUEUES_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.REFERENCES_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.SEMAPHORES_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.SEQUENCES_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.SETS_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.STAMPED_VIEW;
+import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.VOLATILE_DATA_REGION_NAME;
+import static org.apache.ignite.testframework.GridTestUtils.runAsync;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
+
+/** Tests for {@link SystemView} for data structures. */
+public class SystemViewDSTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testAtomicSequence() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+ IgniteAtomicSequence s1 = g0.atomicSequence("seq-1", 42, true);
+ IgniteAtomicSequence s2 = g0.atomicSequence("seq-2",
+ new AtomicConfiguration().setBackups(1).setGroupName("my-group"), 43, true);
+
+ s1.batchSize(42);
+
+ SystemView<AtomicSequenceView> seqs0 = g0.context().systemView().view(SEQUENCES_VIEW);
+ SystemView<AtomicSequenceView> seqs1 = g1.context().systemView().view(SEQUENCES_VIEW);
+
+ assertEquals(2, seqs0.size());
+ assertEquals(0, seqs1.size());
+
+ for (AtomicSequenceView s : seqs0) {
+ if ("seq-1".equals(s.name())) {
+ assertEquals(42, s.value());
+ assertEquals(42, s.batchSize());
+ assertEquals(DEFAULT_DS_GROUP_NAME, s.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), s.groupId());
+
+ long val = s1.addAndGet(42);
+
+ assertEquals(val, s.value());
+ assertFalse(s.removed());
+ }
+ else {
+ assertEquals("seq-2", s.name());
+ assertEquals(DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE, s.batchSize());
+ assertEquals(43, s.value());
+ assertEquals("my-group", s.groupName());
+ assertEquals(CU.cacheId("my-group"), s.groupId());
+ assertFalse(s.removed());
+
+ s2.close();
+
+ assertTrue(waitForCondition(s::removed, getTestTimeout()));
+ }
+ }
+
+ g1.atomicSequence("seq-1", 42, true);
+
+ assertEquals(1, seqs1.size());
+
+ AtomicSequenceView s = seqs1.iterator().next();
+
+ assertEquals(DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE + 42, s.value());
+ assertEquals(DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE, s.batchSize());
+ assertEquals(DEFAULT_DS_GROUP_NAME, s.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), s.groupId());
+ assertFalse(s.removed());
+
+ s1.close();
+
+ assertTrue(waitForCondition(s::removed, getTestTimeout()));
+
+ assertEquals(0, seqs0.size());
+ assertEquals(0, seqs1.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testAtomicLongs() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+ IgniteAtomicLong l1 = g0.atomicLong("long-1", 42, true);
+ IgniteAtomicLong l2 = g0.atomicLong("long-2",
+ new AtomicConfiguration().setBackups(1).setGroupName("my-group"), 43, true);
+
+ SystemView<AtomicLongView> longs0 = g0.context().systemView().view(LONGS_VIEW);
+ SystemView<AtomicLongView> longs1 = g1.context().systemView().view(LONGS_VIEW);
+
+ assertEquals(2, longs0.size());
+ assertEquals(0, longs1.size());
+
+ for (AtomicLongView l : longs0) {
+ if ("long-1".equals(l.name())) {
+ assertEquals(42, l.value());
+ assertEquals(DEFAULT_DS_GROUP_NAME, l.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), l.groupId());
+
+ long val = l1.addAndGet(42);
+
+ assertEquals(val, l.value());
+ assertFalse(l.removed());
+ }
+ else {
+ assertEquals("long-2", l.name());
+ assertEquals(43, l.value());
+ assertEquals("my-group", l.groupName());
+ assertEquals(CU.cacheId("my-group"), l.groupId());
+ assertFalse(l.removed());
+
+ l2.close();
+
+ assertTrue(waitForCondition(l::removed, getTestTimeout()));
+ }
+ }
+
+ g1.atomicLong("long-1", 42, true);
+
+ assertEquals(1, longs1.size());
+
+ AtomicLongView l = longs1.iterator().next();
+
+ assertEquals(84, l.value());
+ assertEquals(DEFAULT_DS_GROUP_NAME, l.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), l.groupId());
+ assertFalse(l.removed());
+
+ l1.close();
+
+ assertTrue(waitForCondition(l::removed, getTestTimeout()));
+
+ assertEquals(0, longs0.size());
+ assertEquals(0, longs1.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testAtomicReference() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+ IgniteAtomicReference<String> l1 = g0.atomicReference("ref-1", "str1", true);
+ IgniteAtomicReference<Integer> l2 = g0.atomicReference("ref-2",
+ new AtomicConfiguration().setBackups(1).setGroupName("my-group"), 43, true);
+
+ SystemView<AtomicReferenceView> refs0 = g0.context().systemView().view(REFERENCES_VIEW);
+ SystemView<AtomicReferenceView> refs1 = g1.context().systemView().view(REFERENCES_VIEW);
+
+ assertEquals(2, refs0.size());
+ assertEquals(0, refs1.size());
+
+ for (AtomicReferenceView r : refs0) {
+ if ("ref-1".equals(r.name())) {
+ assertEquals("str1", r.value());
+ assertEquals(DEFAULT_DS_GROUP_NAME, r.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), r.groupId());
+
+ l1.set("str2");
+
+ assertEquals("str2", r.value());
+ assertFalse(r.removed());
+ }
+ else {
+ assertEquals("ref-2", r.name());
+ assertEquals("43", r.value());
+ assertEquals("my-group", r.groupName());
+ assertEquals(CU.cacheId("my-group"), r.groupId());
+ assertFalse(r.removed());
+
+ l2.close();
+
+ assertTrue(waitForCondition(r::removed, getTestTimeout()));
+ }
+ }
+
+ g1.atomicReference("ref-1", "str3", true);
+
+ assertEquals(1, refs1.size());
+
+ AtomicReferenceView l = refs1.iterator().next();
+
+ assertEquals("str2", l.value());
+ assertEquals(DEFAULT_DS_GROUP_NAME, l.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), l.groupId());
+ assertFalse(l.removed());
+
+ l1.close();
+
+ assertTrue(waitForCondition(l::removed, getTestTimeout()));
+
+ assertEquals(0, refs0.size());
+ assertEquals(0, refs1.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testAtomicStamped() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+ IgniteAtomicStamped<String, Integer> s1 = g0.atomicStamped("s-1", "str0", 1, true);
+ IgniteAtomicStamped<String, Integer> s2 = g0.atomicStamped("s-2",
+ new AtomicConfiguration().setBackups(1).setGroupName("my-group"), "str1", 43, true);
+
+ SystemView<AtomicStampedView> stamps0 = g0.context().systemView().view(STAMPED_VIEW);
+ SystemView<AtomicStampedView> stamps1 = g1.context().systemView().view(STAMPED_VIEW);
+
+ assertEquals(2, stamps0.size());
+ assertEquals(0, stamps1.size());
+
+ for (AtomicStampedView s : stamps0) {
+ if ("s-1".equals(s.name())) {
+ assertEquals("str0", s.value());
+ assertEquals("1", s.stamp());
+ assertEquals(DEFAULT_DS_GROUP_NAME, s.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), s.groupId());
+
+ s1.set("str2", 2);
+
+ assertEquals("str2", s.value());
+ assertEquals("2", s.stamp());
+ assertFalse(s.removed());
+ }
+ else {
+ assertEquals("s-2", s.name());
+ assertEquals("str1", s.value());
+ assertEquals("43", s.stamp());
+ assertEquals("my-group", s.groupName());
+ assertEquals(CU.cacheId("my-group"), s.groupId());
+ assertFalse(s.removed());
+
+ s2.close();
+
+ assertTrue(waitForCondition(s::removed, getTestTimeout()));
+ }
+ }
+
+ g1.atomicStamped("s-1", "str3", 3, true);
+
+ assertEquals(1, stamps1.size());
+
+ AtomicStampedView l = stamps1.iterator().next();
+
+ assertEquals("str2", l.value());
+ assertEquals("2", l.stamp());
+ assertEquals(DEFAULT_DS_GROUP_NAME, l.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), l.groupId());
+ assertFalse(l.removed());
+
+ s1.close();
+
+ assertTrue(l.removed());
+
+ assertEquals(0, stamps0.size());
+ assertEquals(0, stamps1.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testCountDownLatch() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+ IgniteCountDownLatch l1 = g0.countDownLatch("c1", 3, false, true);
+ IgniteCountDownLatch l2 = g0.countDownLatch("c2", 1, true, true);
+
+ SystemView<CountDownLatchView> latches0 = g0.context().systemView().view(LATCHES_VIEW);
+ SystemView<CountDownLatchView> latches1 = g1.context().systemView().view(LATCHES_VIEW);
+
+ assertEquals(2, latches0.size());
+ assertEquals(0, latches1.size());
+
+ String grpName = DEFAULT_VOLATILE_DS_GROUP_NAME + "@" + VOLATILE_DATA_REGION_NAME;
+
+ for (CountDownLatchView l : latches0) {
+ if ("c1".equals(l.name())) {
+ assertEquals(3, l.count());
+ assertEquals(3, l.initialCount());
+ assertFalse(l.autoDelete());
+
+ l1.countDown();
+
+ assertEquals(2, l.count());
+ assertEquals(3, l.initialCount());
+ assertFalse(l.removed());
+ }
+ else {
+ assertEquals("c2", l.name());
+ assertEquals(1, l.count());
+ assertEquals(1, l.initialCount());
+ assertTrue(l.autoDelete());
+ assertFalse(l.removed());
+
+ l2.countDown();
+ l2.close();
+
+ assertTrue(waitForCondition(l::removed, getTestTimeout()));
+ }
+
+ assertEquals(grpName, l.groupName());
+ assertEquals(CU.cacheId(grpName), l.groupId());
+ }
+
+ IgniteCountDownLatch l3 = g1.countDownLatch("c1", 10, true, true);
+
+ assertEquals(1, latches1.size());
+
+ CountDownLatchView l = latches1.iterator().next();
+
+ assertEquals(2, l.count());
+ assertEquals(3, l.initialCount());
+ assertEquals(grpName, l.groupName());
+ assertEquals(CU.cacheId(grpName), l.groupId());
+ assertFalse(l.removed());
+ assertFalse(l.autoDelete());
+
+ l3.countDown();
+ l3.countDown();
+ l3.close();
+
+ assertTrue(waitForCondition(l::removed, getTestTimeout()));
+
+ assertEquals(0, latches0.size());
+ assertEquals(0, latches1.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testSemaphores() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+ IgniteSemaphore s1 = g0.semaphore("s1", 3, false, true);
+ IgniteSemaphore s2 = g0.semaphore("s2", 1, true, true);
+
+ SystemView<SemaphoreView> semaphores0 = g0.context().systemView().view(SEMAPHORES_VIEW);
+ SystemView<SemaphoreView> semaphores1 = g1.context().systemView().view(SEMAPHORES_VIEW);
+
+ assertEquals(2, semaphores0.size());
+ assertEquals(0, semaphores1.size());
+
+ String grpName = DEFAULT_VOLATILE_DS_GROUP_NAME + "@" + VOLATILE_DATA_REGION_NAME;
+
+ IgniteInternalFuture<?> acquirePermitFut = null;
+
+ for (SemaphoreView s : semaphores0) {
+ if ("s1".equals(s.name())) {
+ assertEquals(3, s.availablePermits());
+ assertFalse(s.hasQueuedThreads());
+ assertEquals(0, s.queueLength());
+ assertFalse(s.failoverSafe());
+ assertFalse(s.broken());
+ assertFalse(s.removed());
+
+ acquirePermitFut = runAsync(() -> {
+ s1.acquire(2);
+
+ try {
+ Thread.sleep(getTestTimeout());
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ finally {
+ s1.release(2);
+ }
+ });
+
+ assertTrue(waitForCondition(() -> s.availablePermits() == 1, getTestTimeout()));
+ assertTrue(s.hasQueuedThreads());
+ assertEquals(1, s.queueLength());
+ }
+ else {
+ assertEquals(1, s.availablePermits());
+ assertFalse(s.hasQueuedThreads());
+ assertEquals(0, s.queueLength());
+ assertTrue(s.failoverSafe());
+ assertFalse(s.broken());
+ assertFalse(s.removed());
+
+ s2.close();
+
+ assertTrue(waitForCondition(s::removed, getTestTimeout()));
+ }
+
+ assertEquals(grpName, s.groupName());
+ assertEquals(CU.cacheId(grpName), s.groupId());
+ }
+
+ IgniteSemaphore l3 = g1.semaphore("s1", 10, true, true);
+
+ assertEquals(1, semaphores1.size());
+
+ SemaphoreView s = semaphores1.iterator().next();
+
+ assertEquals(1, s.availablePermits());
+ assertTrue(s.hasQueuedThreads());
+ assertEquals(1, s.queueLength());
+ assertFalse(s.failoverSafe());
+ assertFalse(s.broken());
+ assertFalse(s.removed());
+
+ acquirePermitFut.cancel();
+ assertTrue(waitForCondition(() -> s.availablePermits() == 3, getTestTimeout()));
+
+ l3.close();
+
+ assertTrue(waitForCondition(s::removed, getTestTimeout()));
+
+ assertEquals(0, semaphores0.size());
+ assertEquals(0, semaphores1.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testLocks() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+ IgniteLock l1 = g0.reentrantLock("l1", false, true, true);
+ IgniteLock l2 = g0.reentrantLock("l2", true, false, true);
+
+ SystemView<ReentrantLockView> locks0 = g0.context().systemView().view(LOCKS_VIEW);
+ SystemView<ReentrantLockView> locks1 = g1.context().systemView().view(LOCKS_VIEW);
+
+ assertEquals(2, locks0.size());
+ assertEquals(0, locks1.size());
+
+ String grpName = DEFAULT_VOLATILE_DS_GROUP_NAME + "@" + VOLATILE_DATA_REGION_NAME;
+
+ IgniteInternalFuture<?> lockFut = null;
+
+ Runnable lockNSleep = () -> {
+ l1.lock();
+
+ try {
+ Thread.sleep(getTestTimeout());
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ finally {
+ l1.unlock();
+ }
+ };
+
+ for (ReentrantLockView l : locks0) {
+ if ("l1".equals(l.name())) {
+ assertFalse(l.locked());
+ assertFalse(l.hasQueuedThreads());
+ assertFalse(l.failoverSafe());
+ assertTrue(l.fair());
+ assertFalse(l.broken());
+ assertFalse(l.removed());
+
+ lockFut = runAsync(lockNSleep);
+
+ assertTrue(waitForCondition(l::locked, getTestTimeout()));
+ }
+ else {
+ assertFalse(l.hasQueuedThreads());
+ assertTrue(l.failoverSafe());
+ assertFalse(l.fair());
+ assertFalse(l.broken());
+ assertFalse(l.removed());
+
+ l2.close();
+
+ assertTrue(waitForCondition(l::removed, getTestTimeout()));
+ }
+
+ assertEquals(grpName, l.groupName());
+ assertEquals(CU.cacheId(grpName), l.groupId());
+ }
+
+ IgniteLock l3 = g1.reentrantLock("l1", true, false, true);
+
+ assertEquals(1, locks1.size());
+
+ ReentrantLockView s = locks1.iterator().next();
+
+ assertTrue(s.locked());
+ assertFalse(s.hasQueuedThreads());
+ assertFalse(s.failoverSafe());
+ assertTrue(s.fair());
+ assertFalse(s.broken());
+ assertFalse(s.removed());
+
+ lockFut.cancel();
+
+ assertTrue(waitForCondition(() -> !s.locked(), getTestTimeout()));
+ assertFalse(s.hasQueuedThreads());
+
+ l3.close();
+
+ assertTrue(waitForCondition(s::removed, getTestTimeout()));
+
+ assertEquals(0, locks0.size());
+ assertEquals(0, locks1.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testQueue() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+
+ IgniteQueue<String> q0 = g0.queue("queue-1", 42, new CollectionConfiguration()
+ .setCollocated(true)
+ .setBackups(1)
+ .setGroupName("my-group"));
+ IgniteQueue<?> q1 = g0.queue("queue-2", 0, new CollectionConfiguration());
+
+ SystemView<QueueView> queues0 = g0.context().systemView().view(QUEUES_VIEW);
+ SystemView<QueueView> queues1 = g1.context().systemView().view(QUEUES_VIEW);
+
+ assertEquals(2, queues0.size());
+ assertEquals(0, queues1.size());
+
+ for (QueueView q : queues0) {
+ if ("queue-1".equals(q.name())) {
+ assertNotNull(q.id());
+ assertEquals("queue-1", q.name());
+ assertEquals(42, q.capacity());
+ assertTrue(q.bounded());
+ assertTrue(q.collocated());
+ assertEquals("my-group", q.groupName());
+ assertEquals(CU.cacheId("my-group"), q.groupId());
+ assertFalse(q.removed());
+ assertEquals(0, q.size());
+
+ q0.add("first");
+
+ assertEquals(1, q.size());
+ }
+ else {
+ assertNotNull(q.id());
+ assertEquals("queue-2", q.name());
+ assertEquals(Integer.MAX_VALUE, q.capacity());
+ assertFalse(q.bounded());
+ assertFalse(q.collocated());
+ assertEquals(DEFAULT_DS_GROUP_NAME, q.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), q.groupId());
+ assertFalse(q.removed());
+ assertEquals(0, q.size());
+
+ q1.close();
+
+ assertTrue(waitForCondition(q::removed, getTestTimeout()));
+ }
+ }
+
+ IgniteQueue<?> q2 = g1.queue("queue-1", 42, new CollectionConfiguration()
+ .setCollocated(true)
+ .setBackups(1)
+ .setGroupName("my-group"));
+
+ assertEquals(1, queues1.size());
+
+ QueueView q = queues1.iterator().next();
+
+ assertNotNull(q.id());
+ assertEquals("queue-1", q.name());
+ assertEquals(42, q.capacity());
+ assertTrue(q.bounded());
+ assertTrue(q.collocated());
+ assertEquals("my-group", q.groupName());
+ assertEquals(CU.cacheId("my-group"), q.groupId());
+ assertFalse(q.removed());
+ assertEquals(1, q.size());
+
+ q2.close();
+
+ assertTrue(waitForCondition(q::removed, getTestTimeout()));
+
+ assertEquals(0, queues0.size());
+ assertEquals(0, queues1.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testSet() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1)) {
+
+ IgniteSet<String> s0 = g0.set("set-1", new CollectionConfiguration()
+ .setCollocated(true)
+ .setBackups(1)
+ .setGroupName("my-group"));
+ IgniteSet<?> s1 = g0.set("set-2", new CollectionConfiguration());
+
+ SystemView<SetView> sets0 = g0.context().systemView().view(SETS_VIEW);
+ SystemView<SetView> sets1 = g1.context().systemView().view(SETS_VIEW);
+
+ assertEquals(2, sets0.size());
+ assertEquals(0, sets1.size());
+
+ for (SetView q : sets0) {
+ if ("set-1".equals(q.name())) {
+ assertNotNull(q.id());
+ assertEquals("set-1", q.name());
+ assertTrue(q.collocated());
+ assertEquals("my-group", q.groupName());
+ assertEquals(CU.cacheId("my-group"), q.groupId());
+ assertFalse(q.removed());
+ assertEquals(0, q.size());
+
+ s0.add("first");
+
+ assertEquals(1, q.size());
+ }
+ else {
+ assertNotNull(q.id());
+ assertEquals("set-2", q.name());
+ assertFalse(q.collocated());
+ assertEquals(DEFAULT_DS_GROUP_NAME, q.groupName());
+ assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), q.groupId());
+ assertFalse(q.removed());
+ assertEquals(0, q.size());
+
+ s1.close();
+
+ assertTrue(waitForCondition(q::removed, getTestTimeout()));
+ }
+ }
+
+ IgniteSet<?> s2 = g1.set("set-1", new CollectionConfiguration()
+ .setCollocated(true)
+ .setBackups(1)
+ .setGroupName("my-group"));
+
+ assertEquals(1, sets1.size());
+
+ SetView s = sets1.iterator().next();
+
+ assertNotNull(s.id());
+ assertEquals("set-1", s.name());
+ assertTrue(s.collocated());
+ assertEquals("my-group", s.groupName());
+ assertEquals(CU.cacheId("my-group"), s.groupId());
+ assertFalse(s.removed());
+ assertEquals(1, s.size());
+
+ s2.close();
+
+ assertTrue(waitForCondition(s::removed, getTestTimeout()));
+
+ assertEquals(0, sets0.size());
+ assertEquals(0, sets1.size());
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewExecutorsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewExecutorsTest.java
new file mode 100644
index 0000000..bd11b1b
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewExecutorsTest.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.Iterator;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.thread.pool.IgniteStripedExecutor;
+import org.apache.ignite.spi.systemview.view.StripedExecutorTaskView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.pool.PoolProcessor.STREAM_POOL_QUEUE_VIEW;
+import static org.apache.ignite.internal.processors.pool.PoolProcessor.SYS_POOL_QUEUE_VIEW;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
+
+/** Tests for {@link SystemView} for executors. */
+public class SystemViewExecutorsTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testStripedExecutors() throws Exception {
+ try (IgniteEx g = startGrid(0)) {
+ checkStripeExecutorView(g.context().pools().getStripedExecutorService(),
+ g.context().systemView().view(SYS_POOL_QUEUE_VIEW),
+ "sys");
+
+ checkStripeExecutorView(g.context().pools().getDataStreamerExecutorService(),
+ g.context().systemView().view(STREAM_POOL_QUEUE_VIEW),
+ "data-streamer");
+ }
+ }
+
+ /**
+ * Checks striped executor system view.
+ *
+ * @param execSvc Striped executor.
+ * @param view System view.
+ * @param poolName Executor name.
+ */
+ private void checkStripeExecutorView(IgniteStripedExecutor execSvc, SystemView<StripedExecutorTaskView> view,
+ String poolName) throws Exception {
+ CountDownLatch latch = new CountDownLatch(1);
+
+ execSvc.execute(0, new TestRunnable(latch, 0));
+ execSvc.execute(0, new TestRunnable(latch, 1));
+ execSvc.execute(1, new TestRunnable(latch, 2));
+ execSvc.execute(1, new TestRunnable(latch, 3));
+
+ try {
+ boolean res = waitForCondition(() -> view.size() == 2, 5_000);
+
+ assertTrue(res);
+
+ Iterator<StripedExecutorTaskView> iter = view.iterator();
+
+ assertTrue(iter.hasNext());
+
+ StripedExecutorTaskView row0 = iter.next();
+
+ assertEquals(0, row0.stripeIndex());
+ assertEquals(TestRunnable.class.getSimpleName() + '1', row0.description());
+ assertEquals(poolName + "-stripe-0", row0.threadName());
+ assertEquals(TestRunnable.class.getName(), row0.taskName());
+
+ assertTrue(iter.hasNext());
+
+ StripedExecutorTaskView row1 = iter.next();
+
+ assertEquals(1, row1.stripeIndex());
+ assertEquals(TestRunnable.class.getSimpleName() + '3', row1.description());
+ assertEquals(poolName + "-stripe-1", row1.threadName());
+ assertEquals(TestRunnable.class.getName(), row1.taskName());
+ }
+ finally {
+ latch.countDown();
+ }
+ }
+
+ /** Test runnable. */
+ public static class TestRunnable implements Runnable {
+ /** */
+ private final CountDownLatch latch;
+
+ /** */
+ private final int idx;
+
+ /** */
+ public TestRunnable(CountDownLatch latch, int idx) {
+ this.latch = latch;
+ this.idx = idx;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void run() {
+ try {
+ latch.await(5, TimeUnit.SECONDS);
+ }
+ catch (InterruptedException e) {
+ throw new IgniteException(e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return getClass().getSimpleName() + idx;
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewMetastorageTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewMetastorageTest.java
new file mode 100644
index 0000000..16a3174
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewMetastorageTest.java
@@ -0,0 +1,148 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.Iterator;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
+import org.apache.ignite.internal.systemview.MetastorageViewWalker;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.spi.systemview.view.FiltrableSystemView;
+import org.apache.ignite.spi.systemview.view.MetastorageView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.cache.persistence.DataStorageMetricsImpl.DATASTORAGE_METRIC_PREFIX;
+import static org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.METASTORE_VIEW;
+import static org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.DISTRIBUTED_METASTORE_VIEW;
+import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
+
+/** Tests for {@link SystemView} for metastorage. */
+public class SystemViewMetastorageTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testMetastorage() throws Exception {
+ cleanPersistenceDir();
+
+ try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(
+ new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration().setPersistenceEnabled(true)
+ )))) {
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ IgniteCacheDatabaseSharedManager db = ignite.context().cache().context().database();
+
+ SystemView<MetastorageView> metaStoreView = ignite.context().systemView().view(METASTORE_VIEW);
+
+ assertNotNull(metaStoreView);
+
+ String name = "test-key";
+ String val = "test-value";
+ String unmarshalledName = "unmarshalled-key";
+ String unmarshalledVal = "[Raw data. 0 bytes]";
+
+ db.checkpointReadLock();
+
+ try {
+ db.metaStorage().write(name, val);
+ db.metaStorage().writeRaw(unmarshalledName, new byte[0]);
+ }
+ finally {
+ db.checkpointReadUnlock();
+ }
+
+ assertNotNull(F.find(metaStoreView, null,
+ (IgnitePredicate<? super MetastorageView>)view ->
+ name.equals(view.name()) && val.equals(view.value())));
+
+ assertNotNull(F.find(metaStoreView, null,
+ (IgnitePredicate<? super MetastorageView>)view ->
+ unmarshalledName.equals(view.name()) && unmarshalledVal.equals(view.value())));
+
+ // Test filtering.
+ assertTrue(metaStoreView instanceof FiltrableSystemView);
+
+ Iterator<MetastorageView> iter = ((FiltrableSystemView<MetastorageView>)metaStoreView)
+ .iterator(F.asMap(MetastorageViewWalker.NAME_FILTER, name));
+
+ assertTrue(iter.hasNext());
+
+ MetastorageView row = iter.next();
+
+ assertTrue(name.equals(row.name()) && val.equals(row.value()));
+ assertFalse(iter.hasNext());
+ }
+ }
+
+ /** */
+ @Test
+ public void testDistributedMetastorage() throws Exception {
+ cleanPersistenceDir();
+
+ try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(
+ new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration().setPersistenceEnabled(true)
+ )))) {
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ String histogramName = "CheckpointBeforeLockHistogram";
+
+ ignite.context().metric().configureHistogram(metricName(DATASTORAGE_METRIC_PREFIX, histogramName), new long[] { 1, 2, 3});
+
+ DistributedMetaStorage dms = ignite.context().distributedMetastorage();
+
+ String name = "test-distributed-key";
+ String val = "test-distributed-value";
+
+ dms.write(name, val);
+
+ SystemView<MetastorageView> dmsView = ignite.context().systemView().view(DISTRIBUTED_METASTORE_VIEW);
+
+ assertNotNull(F.find(
+ dmsView,
+ null,
+ (IgnitePredicate<? super MetastorageView>)view -> name.equals(view.name()) && val.equals(view.value()))
+ );
+
+ assertNotNull(F.find(
+ dmsView,
+ null,
+ (IgnitePredicate<? super MetastorageView>)
+ view -> view.name().endsWith(histogramName) && "[1, 2, 3]".equals(view.value()))
+ );
+
+ // Test filtering.
+ assertTrue(dmsView instanceof FiltrableSystemView);
+
+ Iterator<MetastorageView> iter = ((FiltrableSystemView<MetastorageView>)dmsView)
+ .iterator(F.asMap(MetastorageViewWalker.NAME_FILTER, name));
+
+ assertTrue(iter.hasNext());
+
+ MetastorageView row = iter.next();
+
+ assertTrue(name.equals(row.name()) && val.equals(row.value()));
+ assertFalse(iter.hasNext());
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewNodesTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewNodesTest.java
new file mode 100644
index 0000000..f603641
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewNodesTest.java
@@ -0,0 +1,235 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.Iterator;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.systemview.BaselineNodeAttributeViewWalker;
+import org.apache.ignite.internal.systemview.NodeAttributeViewWalker;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.systemview.view.BaselineNodeAttributeView;
+import org.apache.ignite.spi.systemview.view.BaselineNodeView;
+import org.apache.ignite.spi.systemview.view.ClusterNodeView;
+import org.apache.ignite.spi.systemview.view.FiltrableSystemView;
+import org.apache.ignite.spi.systemview.view.NodeAttributeView;
+import org.apache.ignite.spi.systemview.view.NodeMetricsView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.apache.ignite.testframework.junits.WithSystemProperty;
+import org.junit.Test;
+
+import static org.apache.ignite.IgniteSystemProperties.IGNITE_DATA_CENTER_ID;
+import static org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.NODES_SYS_VIEW;
+import static org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.NODE_ATTRIBUTES_SYS_VIEW;
+import static org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.NODE_METRICS_SYS_VIEW;
+import static org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor.BASELINE_NODES_SYS_VIEW;
+import static org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor.BASELINE_NODE_ATTRIBUTES_SYS_VIEW;
+import static org.apache.ignite.internal.util.IgniteUtils.toStringSafe;
+
+/** Tests for {@link SystemView} for nodes. */
+public class SystemViewNodesTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ @WithSystemProperty(key = IGNITE_DATA_CENTER_ID, value = "DC0")
+ public void testNodes() throws Exception {
+ try (IgniteEx g1 = startGrid(0)) {
+ SystemView<ClusterNodeView> views = g1.context().systemView().view(NODES_SYS_VIEW);
+
+ assertEquals(1, views.size());
+
+ try (IgniteEx g2 = startGrid(1)) {
+ awaitPartitionMapExchange();
+
+ checkViewsState(views, g1.localNode(), g2.localNode());
+ checkViewsState(g2.context().systemView().view(NODES_SYS_VIEW), g2.localNode(), g1.localNode());
+ }
+
+ assertEquals(1, views.size());
+ }
+ }
+
+ /** */
+ @Test
+ public void testNodeAttributes() throws Exception {
+ try (
+ IgniteEx ignite0 = startGrid(getConfiguration(getTestIgniteInstanceName(0))
+ .setUserAttributes(F.asMap("name", "val0")));
+ IgniteEx ignite1 = startGrid(getConfiguration(getTestIgniteInstanceName(1))
+ .setUserAttributes(F.asMap("name", "val1")))
+ ) {
+ awaitPartitionMapExchange();
+
+ SystemView<NodeAttributeView> view = ignite0.context().systemView().view(NODE_ATTRIBUTES_SYS_VIEW);
+
+ assertEquals(ignite0.cluster().localNode().attributes().size() +
+ ignite1.cluster().localNode().attributes().size(), view.size());
+
+ assertEquals(1, F.size(view.iterator(), row -> "name".equals(row.name()) && "val0".equals(row.value())));
+ assertEquals(1, F.size(view.iterator(), row -> "name".equals(row.name()) && "val1".equals(row.value())));
+
+ // Test filtering.
+ assertTrue(view instanceof FiltrableSystemView);
+
+ Iterator<NodeAttributeView> iter = ((FiltrableSystemView<NodeAttributeView>)view)
+ .iterator(F.asMap(NodeAttributeViewWalker.NODE_ID_FILTER, ignite0.cluster().localNode().id()));
+
+ assertEquals(1, F.size(iter, row -> "name".equals(row.name()) && "val0".equals(row.value())));
+
+ iter = ((FiltrableSystemView<NodeAttributeView>)view).iterator(
+ F.asMap(NodeAttributeViewWalker.NODE_ID_FILTER, ignite1.cluster().localNode().id().toString()));
+
+ assertEquals(1, F.size(iter, row -> "name".equals(row.name()) && "val1".equals(row.value())));
+
+ iter = ((FiltrableSystemView<NodeAttributeView>)view).iterator(
+ F.asMap(NodeAttributeViewWalker.NODE_ID_FILTER, "malformed-id"));
+
+ assertEquals(0, F.size(iter));
+
+ iter = ((FiltrableSystemView<NodeAttributeView>)view).iterator(
+ F.asMap(NodeAttributeViewWalker.NAME_FILTER, "name"));
+
+ assertEquals(2, F.size(iter));
+
+ iter = ((FiltrableSystemView<NodeAttributeView>)view)
+ .iterator(F.asMap(NodeAttributeViewWalker.NODE_ID_FILTER, ignite0.cluster().localNode().id(),
+ NodeAttributeViewWalker.NAME_FILTER, "name"));
+
+ assertEquals(1, F.size(iter));
+ }
+ }
+
+ /** */
+ @Test
+ public void testNodeMetrics() throws Exception {
+ long ts = U.currentTimeMillis();
+
+ try (IgniteEx ignite0 = startGrid(0); IgniteEx ignite1 = startGrid(1)) {
+ awaitPartitionMapExchange();
+
+ SystemView<NodeMetricsView> view = ignite0.context().systemView().view(NODE_METRICS_SYS_VIEW);
+
+ assertEquals(2, view.size());
+ assertEquals(1, F.size(view.iterator(), row -> row.nodeId().equals(ignite0.cluster().localNode().id())));
+ assertEquals(1, F.size(view.iterator(), row -> row.nodeId().equals(ignite1.cluster().localNode().id())));
+ assertEquals(2, F.size(view.iterator(), row -> row.lastUpdateTime().getTime() >= ts));
+ }
+ }
+
+ /** */
+ @Test
+ public void testBaselineNodes() throws Exception {
+ cleanPersistenceDir();
+
+ try (
+ IgniteEx ignite0 = startGrid(getConfiguration(getTestIgniteInstanceName(0))
+ .setDataStorageConfiguration(new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration().setPersistenceEnabled(true)))
+ .setConsistentId("consId0"));
+ IgniteEx ignite1 = startGrid(getConfiguration(getTestIgniteInstanceName(1))
+ .setDataStorageConfiguration(new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration().setPersistenceEnabled(true)))
+ .setConsistentId("consId1"));
+ ) {
+ ignite0.cluster().state(ClusterState.ACTIVE);
+
+ ignite1.close();
+
+ awaitPartitionMapExchange();
+
+ SystemView<BaselineNodeView> view = ignite0.context().systemView().view(BASELINE_NODES_SYS_VIEW);
+
+ assertEquals(2, view.size());
+ assertEquals(1, F.size(view.iterator(), row -> "consId0".equals(row.consistentId()) && row.online()));
+ assertEquals(1, F.size(view.iterator(), row -> "consId1".equals(row.consistentId()) && !row.online()));
+ }
+ }
+
+ /** */
+ @Test
+ public void testBaselineNodeAttributes() throws Exception {
+ cleanPersistenceDir();
+
+ try (IgniteEx ignite = startGrid(getConfiguration()
+ .setDataStorageConfiguration(
+ new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration().setName("pds").setPersistenceEnabled(true)
+ ))
+ .setUserAttributes(F.asMap("name", "val"))
+ .setConsistentId("consId"))
+ ) {
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ SystemView<BaselineNodeAttributeView> view = ignite.context().systemView()
+ .view(BASELINE_NODE_ATTRIBUTES_SYS_VIEW);
+
+ assertEquals(ignite.cluster().localNode().attributes().size(), view.size());
+
+ assertEquals(1, F.size(view.iterator(), row -> "consId".equals(row.nodeConsistentId()) &&
+ "name".equals(row.name()) && "val".equals(row.value())));
+
+ // Test filtering.
+ assertTrue(view instanceof FiltrableSystemView);
+
+ Iterator<BaselineNodeAttributeView> iter = ((FiltrableSystemView<BaselineNodeAttributeView>)view)
+ .iterator(F.asMap(BaselineNodeAttributeViewWalker.NODE_CONSISTENT_ID_FILTER, "consId",
+ BaselineNodeAttributeViewWalker.NAME_FILTER, "name"));
+
+ assertEquals(1, F.size(iter));
+
+ iter = ((FiltrableSystemView<BaselineNodeAttributeView>)view).iterator(
+ F.asMap(BaselineNodeAttributeViewWalker.NODE_CONSISTENT_ID_FILTER, "consId"));
+
+ assertEquals(1, F.size(iter, row -> "name".equals(row.name())));
+
+ iter = ((FiltrableSystemView<BaselineNodeAttributeView>)view).iterator(
+ F.asMap(BaselineNodeAttributeViewWalker.NAME_FILTER, "name"));
+
+ assertEquals(1, F.size(iter));
+ }
+ }
+
+ /** */
+ private void checkViewsState(SystemView<ClusterNodeView> views, ClusterNode loc, ClusterNode rmt) {
+ assertEquals(2, views.size());
+
+ for (ClusterNodeView nodeView : views) {
+ if (nodeView.nodeId().equals(loc.id()))
+ checkNodeView(nodeView, loc, true);
+ else
+ checkNodeView(nodeView, rmt, false);
+ }
+ }
+
+ /** */
+ private void checkNodeView(ClusterNodeView view, ClusterNode node, boolean isLoc) {
+ assertEquals(node.id(), view.nodeId());
+ assertEquals(node.consistentId().toString(), view.consistentId());
+ assertEquals(toStringSafe(node.addresses()), view.addresses());
+ assertEquals(toStringSafe(node.hostNames()), view.hostnames());
+ assertEquals(node.order(), view.nodeOrder());
+ assertEquals(node.version().toString(), view.version());
+ assertEquals(isLoc, view.isLocal());
+ assertEquals(node.isClient(), view.isClient());
+ assertEquals(node.dataCenterId(), view.dataCenterId());
+ assertEquals("DC0", view.dataCenterId());
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPageListsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPageListsTest.java
new file mode 100644
index 0000000..e2182ce
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPageListsTest.java
@@ -0,0 +1,156 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.Iterator;
+import java.util.Map;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
+import org.apache.ignite.internal.processors.cache.persistence.freelist.PagesList;
+import org.apache.ignite.internal.systemview.CachePagesListViewWalker;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.spi.systemview.view.CachePagesListView;
+import org.apache.ignite.spi.systemview.view.FiltrableSystemView;
+import org.apache.ignite.spi.systemview.view.PagesListView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.cache.GridCacheProcessor.CACHE_GRP_PAGE_LIST_VIEW;
+import static org.apache.ignite.internal.processors.cache.GridCacheUtils.cacheId;
+import static org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager.DATA_REGION_PAGE_LIST_VIEW;
+
+/** Tests for {@link SystemView} for page lists. */
+public class SystemViewPageListsTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testPagesList() throws Exception {
+ cleanPersistenceDir();
+
+ try (IgniteEx ignite = startGrid(getConfiguration()
+ .setDataStorageConfiguration(
+ new DataStorageConfiguration().setDataRegionConfigurations(
+ new DataRegionConfiguration().setName("dr0").setMaxSize(100L * 1024 * 1024),
+ new DataRegionConfiguration().setName("dr1").setMaxSize(100L * 1024 * 1024)
+ .setPersistenceEnabled(true)
+ )))) {
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ GridCacheDatabaseSharedManager dbMgr = (GridCacheDatabaseSharedManager)ignite.context().cache().context()
+ .database();
+
+ int pageSize = dbMgr.pageSize();
+
+ dbMgr.enableCheckpoints(false).get();
+
+ for (int i = 0; i < 2; i++) {
+ IgniteCache<Object, Object> cache = ignite.getOrCreateCache(new CacheConfiguration<>("cache" + i)
+ .setDataRegionName("dr" + i).setAffinity(new RendezvousAffinityFunction().setPartitions(2)));
+
+ int key = 0;
+
+ // Fill up different free-list buckets.
+ for (int j = 0; j < pageSize / 2; j++)
+ cache.put(key++, new byte[j + 1]);
+
+ // Put some pages to one bucket to overflow pages cache.
+ for (int j = 0; j < 1000; j++)
+ cache.put(key++, new byte[pageSize / 2]);
+ }
+
+ long dr0flPages = 0;
+ int dr0flStripes = 0;
+
+ SystemView<PagesListView> dataRegionPageLists = ignite.context().systemView().view(DATA_REGION_PAGE_LIST_VIEW);
+
+ for (PagesListView pagesListView : dataRegionPageLists) {
+ if (pagesListView.name().startsWith("dr0")) {
+ dr0flPages += pagesListView.bucketSize();
+ dr0flStripes += pagesListView.stripesCount();
+ }
+ }
+
+ assertTrue(dr0flPages > 0);
+ assertTrue(dr0flStripes > 0);
+
+ int bucketsCnt = ((PagesList)ignite.context().cache().context().database().freeList("dr0")).bucketsCount();
+ int[] bucketPagesSize = new int[bucketsCnt];
+
+ for (PagesListView pagesListView : dataRegionPageLists) {
+ int bucket = pagesListView.bucketNumber();
+
+ if (bucketPagesSize[bucket] == 0) {
+ assertTrue(bucket == 0 || pagesListView.pageFreeSpace() != 0);
+ bucketPagesSize[bucket] = pagesListView.pageFreeSpace();
+ }
+ else
+ assertEquals(bucketPagesSize[bucket], pagesListView.pageFreeSpace());
+ }
+
+ int prev = 0;
+
+ for (int size : bucketPagesSize) {
+ if (size > 0) {
+ assertTrue(size > prev);
+ prev = size;
+ }
+ }
+
+ SystemView<CachePagesListView> cacheGrpPageLists = ignite.context().systemView().view(CACHE_GRP_PAGE_LIST_VIEW);
+
+ long dr1flPages = 0;
+ int dr1flStripes = 0;
+ int dr1flCached = 0;
+
+ for (CachePagesListView pagesListView : cacheGrpPageLists) {
+ if (pagesListView.cacheGroupId() == cacheId("cache1")) {
+ dr1flPages += pagesListView.bucketSize();
+ dr1flStripes += pagesListView.stripesCount();
+ dr1flCached += pagesListView.cachedPagesCount();
+ }
+ }
+
+ assertTrue(dr1flPages > 0);
+ assertTrue(dr1flStripes > 0);
+ assertTrue(dr1flCached > 0);
+
+ // Test filtering.
+ assertTrue(cacheGrpPageLists instanceof FiltrableSystemView);
+
+ Iterator<CachePagesListView> iter = ((FiltrableSystemView<CachePagesListView>)cacheGrpPageLists).iterator(Map.of(
+ CachePagesListViewWalker.CACHE_GROUP_ID_FILTER, cacheId("cache1"),
+ CachePagesListViewWalker.PARTITION_ID_FILTER, 0,
+ CachePagesListViewWalker.BUCKET_NUMBER_FILTER, 0
+ ));
+
+ assertEquals(1, F.size(iter));
+
+ iter = ((FiltrableSystemView<CachePagesListView>)cacheGrpPageLists).iterator(Map.of(
+ CachePagesListViewWalker.CACHE_GROUP_ID_FILTER, cacheId("cache1"),
+ CachePagesListViewWalker.BUCKET_NUMBER_FILTER, 0
+ ));
+
+ assertEquals(2, F.size(iter));
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPageTimestampsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPageTimestampsTest.java
new file mode 100644
index 0000000..86f28a7
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPageTimestampsTest.java
@@ -0,0 +1,228 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.concurrent.atomic.AtomicLong;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteDataStreamer;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.processors.metric.impl.PeriodicHistogramMetricImpl;
+import org.apache.ignite.internal.util.GridTestClockTimer;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.spi.systemview.view.PagesTimestampHistogramView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager.PAGE_TS_HISTOGRAM_VIEW;
+
+/** Tests for {@link SystemView} for page timestamps. */
+public class SystemViewPageTimestampsTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testPagesTimestampHistogram() throws Exception {
+ int keysCnt = 50_000;
+
+ AtomicLong curTime = new AtomicLong(System.currentTimeMillis());
+
+ GridTestClockTimer.timeSupplier(curTime::get);
+ GridTestClockTimer.update();
+
+ String regionName = "default";
+
+ DataStorageConfiguration dsCfg = new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration()
+ .setMaxSize(50L * 1024 * 1024)
+ .setPersistenceEnabled(true)
+ .setName(regionName)
+ .setMetricsEnabled(true)
+ );
+
+ cleanPersistenceDir();
+
+ try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(dsCfg))) {
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ CacheConfiguration<Object, Object> ccfg1 = new CacheConfiguration<>("test-pages-ts1")
+ .setAffinity(new RendezvousAffinityFunction(false, 10));
+
+ CacheConfiguration<Object, Object> ccfg2 = new CacheConfiguration<>("test-pages-ts2")
+ .setAffinity(new RendezvousAffinityFunction(false, 10));
+
+ IgniteCache<Object, Object> cache1 = ignite.createCache(ccfg1);
+
+ long ts1 = curTime.get();
+
+ for (int i = 0; i < 1000; i++)
+ cache1.put(i, i);
+
+ long ts2 = curTime.addAndGet(PeriodicHistogramMetricImpl.DFLT_BUCKETS_INTERVAL);
+ GridTestClockTimer.update();
+
+ for (int i = 1000; i < 2000; i++)
+ cache1.put(i, i);
+
+ SystemView<PagesTimestampHistogramView> pagesTsHistogram =
+ ignite.context().systemView().view(PAGE_TS_HISTOGRAM_VIEW);
+
+ assertNotNull(pagesTsHistogram);
+
+ long totalCnt = 0;
+
+ for (PagesTimestampHistogramView view : pagesTsHistogram) {
+ if (regionName.equals(view.dataRegionName())) {
+ if ((ts1 >= view.intervalStart().getTime() && ts1 <= view.intervalEnd().getTime()) ||
+ (ts2 >= view.intervalStart().getTime() && ts2 <= view.intervalEnd().getTime())) {
+ assertTrue("Unexpected pages count: " + view.pagesCount(), view.pagesCount() > 0);
+
+ totalCnt += view.pagesCount();
+ }
+ else
+ assertEquals(0, view.pagesCount());
+ }
+ }
+
+ assertTrue(totalCnt > 0);
+ assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(), totalCnt);
+
+ assertEquals(2, F.size(F.iterator(pagesTsHistogram, v -> v, true, v -> v.pagesCount() > 0)));
+
+ // Check histogram after replacement.
+ long ts3 = curTime.addAndGet(PeriodicHistogramMetricImpl.DFLT_BUCKETS_INTERVAL);
+ GridTestClockTimer.update();
+
+ ignite.createCache(ccfg2);
+
+ try (IgniteDataStreamer<Integer, Object> streamer = ignite.dataStreamer("test-pages-ts2")) {
+ for (int i = 0; i < keysCnt; i++)
+ streamer.addData(i, new byte[1000]);
+ }
+
+ assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
+ F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
+
+ assertFalse(F.isEmpty(F.iterator(pagesTsHistogram, v -> v, true, v -> v.pagesCount() > 0 &&
+ v.intervalStart().getTime() <= ts3 && ts3 <= v.intervalEnd().getTime())));
+
+ // Check histogram after cache destroy and remove of outdated pages.
+ long ts4 = curTime.addAndGet(PeriodicHistogramMetricImpl.DFLT_BUCKETS_INTERVAL);
+ GridTestClockTimer.update();
+
+ ignite.destroyCache("test-pages-ts2");
+
+ IgniteCache<Object, Object> cache2 = ignite.createCache(ccfg2);
+
+ for (int i = 0; i < keysCnt; i++) {
+ cache1.put(i, i);
+ cache2.put(i, new byte[1000]);
+ }
+
+ assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
+ F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
+
+ assertFalse(F.isEmpty(F.iterator(pagesTsHistogram, v -> v, true, v -> v.pagesCount() > 0 &&
+ v.intervalStart().getTime() <= ts4 && ts4 <= v.intervalEnd().getTime())));
+ }
+ finally {
+ GridTestClockTimer.timeSupplier(GridTestClockTimer.DFLT_TIME_SUPPLIER);
+ }
+ }
+
+ /** */
+ @Test
+ public void testPagesTimestampHistogramAfterPartitionEviction() throws Exception {
+ int keysCnt = 50_000;
+
+ String regionName = "default";
+
+ DataStorageConfiguration dsCfg = new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration()
+ .setMaxSize(50L * 1024 * 1024)
+ .setPersistenceEnabled(true)
+ .setName(regionName)
+ .setMetricsEnabled(true)
+ );
+
+ cleanPersistenceDir();
+
+ try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(dsCfg))) {
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ IgniteCache<Object, Object> cache = ignite.createCache(new CacheConfiguration<>("test-pages-ts")
+ .setBackups(1).setAffinity(new RendezvousAffinityFunction(false, 10)));
+
+ try (IgniteDataStreamer<Integer, Object> streamer = ignite.dataStreamer("test-pages-ts")) {
+ for (int i = 0; i < keysCnt; i++)
+ streamer.addData(i, new byte[1000]);
+ }
+
+ startGrid(getConfiguration(getTestIgniteInstanceName(1)).setDataStorageConfiguration(dsCfg));
+ startGrid(getConfiguration(getTestIgniteInstanceName(2)).setDataStorageConfiguration(dsCfg));
+
+ resetBaselineTopology();
+
+ awaitPartitionMapExchange(true, true, null);
+
+ // Force checkpoint to invalidate evicted partitions.
+ forceCheckpoint(ignite);
+
+ // Check histogram after partition eviction.
+ SystemView<PagesTimestampHistogramView> pagesTsHistogram =
+ ignite.context().systemView().view(PAGE_TS_HISTOGRAM_VIEW);
+
+ assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
+ F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
+
+ stopGrid(2);
+
+ resetBaselineTopology();
+
+ // Wait until rebalance complete.
+ assertTrue(GridTestUtils.waitForCondition(() -> ignite.context().discovery().topologyVersionEx()
+ .minorTopologyVersion() >= 2, 5_000L));
+
+ // Check histogram after rebalance.
+ assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
+ F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
+
+ stopGrid(1);
+
+ resetBaselineTopology();
+
+ // Allocate some pages after eviction.
+ for (int i = 0; i < 10_000; i++)
+ cache.put(i + keysCnt, new byte[1024]);
+
+ // Acquire some outdated pages.
+ for (int i = 0; i < keysCnt + 10_000; i++)
+ assertNotNull(cache.get(i));
+
+ // Check histogram after replacement of outdated pages.
+ assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
+ F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
+ }
+ finally {
+ stopAllGrids();
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPluginTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPluginTest.java
new file mode 100644
index 0000000..7732c5f
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewPluginTest.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.stream.StreamSupport;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.plugin.AbstractTestPluginProvider;
+import org.apache.ignite.plugin.IgnitePlugin;
+import org.apache.ignite.spi.systemview.view.PluginView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.plugin.IgnitePluginProcessor.PLUGINS_SYS_VIEW;
+
+/** Tests for {@link SystemView} for plugins. */
+public class SystemViewPluginTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testPluginView() throws Exception {
+ try (IgniteEx n = startGrid(getConfiguration().setPluginProviders(new TestPluginProvider()))) {
+ SystemView<PluginView> view = n.context().systemView().view(PLUGINS_SYS_VIEW);
+
+ PluginView testPluginView = StreamSupport.stream(view.spliterator(), false)
+ .filter(v -> "FOR_SYS_VIEW_PLUGIN_NAME".equals(v.name()))
+ .findFirst()
+ .orElseThrow(() -> new AssertionError("Plugin not found"));
+
+ assertEquals("FOR_SYS_VIEW_PLUGIN_NAME", testPluginView.name());
+ assertEquals("FOR_SYS_VIEW_PLUGIN_INFO", testPluginView.info());
+ assertEquals("42", testPluginView.version());
+ assertEquals(TestPluginProvider.TestPlugin.class.getName(), testPluginView.className());
+ }
+ }
+
+ /** */
+ private static class TestPluginProvider extends AbstractTestPluginProvider {
+ /** {@inheritDoc} */
+ @Override public String name() {
+ return "FOR_SYS_VIEW_PLUGIN_NAME";
+ }
+
+ /** {@inheritDoc} */
+ @Override public String version() {
+ return "42";
+ }
+
+ /** {@inheritDoc} */
+ @Override public String info() {
+ return "FOR_SYS_VIEW_PLUGIN_INFO";
+ }
+
+ /** {@inheritDoc} */
+ @Override public <T extends IgnitePlugin> T plugin() {
+ return (T)new TestPlugin();
+ }
+
+ /** */
+ private static class TestPlugin implements IgnitePlugin {
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewQueriesTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewQueriesTest.java
new file mode 100644
index 0000000..b444e8b
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewQueriesTest.java
@@ -0,0 +1,312 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.List;
+import java.util.function.Consumer;
+import javax.cache.Cache;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.query.ContinuousQuery;
+import org.apache.ignite.cache.query.QueryCursor;
+import org.apache.ignite.cache.query.ScanQuery;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.lang.IgniteBiPredicate;
+import org.apache.ignite.lang.IgniteClosure;
+import org.apache.ignite.spi.systemview.view.ContinuousQueryView;
+import org.apache.ignite.spi.systemview.view.ScanQueryView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.managers.systemview.ScanQuerySystemView.SCAN_QRY_SYS_VIEW;
+import static org.apache.ignite.internal.processors.cache.GridCacheUtils.cacheGroupId;
+import static org.apache.ignite.internal.processors.cache.GridCacheUtils.cacheId;
+import static org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.CQ_SYS_VIEW;
+import static org.apache.ignite.internal.util.IgniteUtils.toStringSafe;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
+
+/** Tests for {@link SystemView} for queries. */
+public class SystemViewQueriesTest extends SystemViewAbstractTest {
+ /** */
+ public static final String TEST_PREDICATE = "TestPredicate";
+
+ /** */
+ public static final String TEST_TRANSFORMER = "TestTransformer";
+
+ /** Tests work of {@link SystemView} for continuous queries. */
+ @Test
+ public void testContinuousQuery() throws Exception {
+ try (IgniteEx originNode = startGrid(0); IgniteEx remoteNode = startGrid(1)) {
+ IgniteCache<Integer, Integer> cache = originNode.createCache("cache-1");
+
+ SystemView<ContinuousQueryView> origQrys = originNode.context().systemView().view(CQ_SYS_VIEW);
+ SystemView<ContinuousQueryView> remoteQrys = remoteNode.context().systemView().view(CQ_SYS_VIEW);
+
+ assertEquals(0, origQrys.size());
+ assertEquals(0, remoteQrys.size());
+
+ try (QueryCursor qry = cache.query(new ContinuousQuery<>()
+ .setInitialQuery(new ScanQuery<>())
+ .setPageSize(100)
+ .setTimeInterval(1000)
+ .setLocalListener(evts -> {
+ // No-op.
+ })
+ .setRemoteFilterFactory(() -> evt -> true)
+ )) {
+ for (int i = 0; i < 100; i++)
+ cache.put(i, i);
+
+ checkContinuousQueryView(originNode, origQrys, true);
+ checkContinuousQueryView(originNode, remoteQrys, false);
+ }
+
+ assertEquals(0, origQrys.size());
+ assertTrue(waitForCondition(() -> remoteQrys.size() == 0, getTestTimeout()));
+ }
+ }
+
+ /** */
+ private void checkContinuousQueryView(IgniteEx g, SystemView<ContinuousQueryView> qrys, boolean loc) {
+ assertEquals(1, qrys.size());
+
+ for (ContinuousQueryView cq : qrys) {
+ assertEquals("cache-1", cq.cacheName());
+ assertEquals(100, cq.bufferSize());
+ assertEquals(1000, cq.interval());
+ assertEquals(g.localNode().id(), cq.nodeId());
+
+ if (loc)
+ assertTrue(cq.localListener().startsWith(getClass().getName()));
+ else
+ assertNull(cq.localListener());
+
+ assertTrue(cq.remoteFilter().startsWith(getClass().getName()));
+ assertNull(cq.localTransformedListener());
+ assertNull(cq.remoteTransformer());
+ }
+ }
+
+ /** Tests work of {@link SystemView} for local scan queries. */
+ @Test
+ public void testLocalScanQuery() throws Exception {
+ try (IgniteEx g0 = startGrid(0)) {
+ IgniteCache<Integer, Integer> cache1 = g0.createCache(
+ new CacheConfiguration<Integer, Integer>("cache1")
+ .setGroupName("group1"));
+
+ int part = g0.affinity("cache1").primaryPartitions(g0.localNode())[0];
+
+ List<Integer> partKeys = partitionKeys(cache1, part, 11, 0);
+
+ for (Integer key : partKeys)
+ cache1.put(key, key);
+
+ SystemView<ScanQueryView> qrySysView0 = g0.context().systemView().view(SCAN_QRY_SYS_VIEW);
+
+ assertNotNull(qrySysView0);
+
+ assertEquals(0, qrySysView0.size());
+
+ QueryCursor<Integer> qryRes1 = cache1.query(
+ new ScanQuery<Integer, Integer>()
+ .setFilter(new TestPredicate())
+ .setLocal(true)
+ .setPartition(part)
+ .setPageSize(10),
+ new TestTransformer());
+
+ assertTrue(qryRes1.iterator().hasNext());
+
+ boolean res = waitForCondition(() -> qrySysView0.size() > 0, 5_000);
+
+ assertTrue(res);
+
+ ScanQueryView view = qrySysView0.iterator().next();
+
+ assertEquals(g0.localNode().id(), view.originNodeId());
+ assertEquals(0, view.queryId());
+ assertEquals("cache1", view.cacheName());
+ assertEquals(cacheId("cache1"), view.cacheId());
+ assertEquals(cacheGroupId("cache1", "group1"), view.cacheGroupId());
+ assertEquals("group1", view.cacheGroupName());
+ assertTrue(view.startTime() <= System.currentTimeMillis());
+ assertTrue(view.duration() >= 0);
+ assertFalse(view.canceled());
+ assertEquals(TEST_PREDICATE, view.filter());
+ assertTrue(view.local());
+ assertEquals(part, view.partition());
+ assertEquals(toStringSafe(g0.context().discovery().topologyVersionEx()), view.topology());
+ assertEquals(TEST_TRANSFORMER, view.transformer());
+ assertFalse(view.keepBinary());
+ assertNull(view.subjectId());
+ assertNull(view.taskName());
+
+ qryRes1.close();
+
+ res = waitForCondition(() -> qrySysView0.size() == 0, 5_000);
+
+ assertTrue(res);
+ }
+ }
+
+ /** Tests work of {@link SystemView} for scan queries. */
+ @Test
+ public void testScanQuery() throws Exception {
+ try (IgniteEx g0 = startGrid(0);
+ IgniteEx g1 = startGrid(1);
+ IgniteEx client1 = startClientGrid("client-1");
+ IgniteEx client2 = startClientGrid("client-2")) {
+
+ IgniteCache<Integer, Integer> cache1 = client1.createCache(
+ new CacheConfiguration<Integer, Integer>("cache1")
+ .setGroupName("group1"));
+
+ IgniteCache<Integer, Integer> cache2 = client2.createCache("cache2");
+
+ for (int i = 0; i < 100; i++) {
+ cache1.put(i, i);
+ cache2.put(i, i);
+ }
+
+ SystemView<ScanQueryView> qrySysView0 = g0.context().systemView().view(SCAN_QRY_SYS_VIEW);
+ SystemView<ScanQueryView> qrySysView1 = g1.context().systemView().view(SCAN_QRY_SYS_VIEW);
+
+ assertNotNull(qrySysView0);
+ assertNotNull(qrySysView1);
+
+ assertEquals(0, qrySysView0.size());
+ assertEquals(0, qrySysView1.size());
+
+ QueryCursor<Integer> qryRes1 = cache1.query(
+ new ScanQuery<Integer, Integer>()
+ .setFilter(new TestPredicate())
+ .setPageSize(10),
+ new TestTransformer());
+
+ QueryCursor<?> qryRes2 = cache2.withKeepBinary().query(new ScanQuery<>()
+ .setPageSize(20));
+
+ assertTrue(qryRes1.iterator().hasNext());
+ assertTrue(qryRes2.iterator().hasNext());
+
+ checkScanQueryView(client1, client2, qrySysView0);
+ checkScanQueryView(client1, client2, qrySysView1);
+
+ qryRes1.close();
+ qryRes2.close();
+
+ boolean res = waitForCondition(
+ () -> qrySysView0.size() + qrySysView1.size() == 0, 5_000);
+
+ assertTrue(res);
+ }
+ }
+
+ /** */
+ private void checkScanQueryView(IgniteEx client1, IgniteEx client2, SystemView<ScanQueryView> qrySysView)
+ throws Exception {
+ boolean res = waitForCondition(() -> qrySysView.size() > 1, 5_000);
+
+ assertTrue(res);
+
+ Consumer<ScanQueryView> cache1checker = view -> {
+ assertEquals(client1.localNode().id(), view.originNodeId());
+ assertTrue(view.queryId() != 0);
+ assertEquals("cache1", view.cacheName());
+ assertEquals(cacheId("cache1"), view.cacheId());
+ assertEquals(cacheGroupId("cache1", "group1"), view.cacheGroupId());
+ assertEquals("group1", view.cacheGroupName());
+ assertTrue(view.startTime() <= System.currentTimeMillis());
+ assertTrue(view.duration() >= 0);
+ assertFalse(view.canceled());
+ assertEquals(TEST_PREDICATE, view.filter());
+ assertFalse(view.local());
+ assertEquals(-1, view.partition());
+ assertEquals(toStringSafe(client1.context().discovery().topologyVersionEx()), view.topology());
+ assertEquals(TEST_TRANSFORMER, view.transformer());
+ assertFalse(view.keepBinary());
+ assertNull(view.subjectId());
+ assertNull(view.taskName());
+ assertEquals(10, view.pageSize());
+ };
+
+ Consumer<ScanQueryView> cache2checker = view -> {
+ assertEquals(client2.localNode().id(), view.originNodeId());
+ assertTrue(view.queryId() != 0);
+ assertEquals("cache2", view.cacheName());
+ assertEquals(cacheId("cache2"), view.cacheId());
+ assertEquals(cacheGroupId("cache2", null), view.cacheGroupId());
+ assertEquals("cache2", view.cacheGroupName());
+ assertTrue(view.startTime() <= System.currentTimeMillis());
+ assertTrue(view.duration() >= 0);
+ assertFalse(view.canceled());
+ assertNull(view.filter());
+ assertFalse(view.local());
+ assertEquals(-1, view.partition());
+ assertEquals(toStringSafe(client2.context().discovery().topologyVersionEx()), view.topology());
+ assertNull(view.transformer());
+ assertTrue(view.keepBinary());
+ assertNull(view.subjectId());
+ assertNull(view.taskName());
+ assertEquals(20, view.pageSize());
+ };
+
+ boolean found1 = false;
+ boolean found2 = false;
+
+ for (ScanQueryView view : qrySysView) {
+ if ("cache2".equals(view.cacheName())) {
+ cache2checker.accept(view);
+ found1 = true;
+ }
+ else {
+ cache1checker.accept(view);
+ found2 = true;
+ }
+ }
+
+ assertTrue(found1 && found2);
+ }
+
+ /** Test predicate. */
+ public static class TestPredicate implements IgniteBiPredicate<Integer, Integer> {
+ /** {@inheritDoc} */
+ @Override public boolean apply(Integer integer, Integer integer2) {
+ return true;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return TEST_PREDICATE;
+ }
+ }
+
+ /** Test transformer. */
+ public static class TestTransformer implements IgniteClosure<javax.cache.Cache.Entry<Integer, Integer>, Integer> {
+ /** {@inheritDoc} */
+ @Override public Integer apply(Cache.Entry<Integer, Integer> entry) {
+ return entry.getKey();
+ }
+
+ /** {@inheritDoc} */
+ @Override public String toString() {
+ return TEST_TRANSFORMER;
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
deleted file mode 100644
index c8d0803..0000000
--- a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java
+++ /dev/null
@@ -1,2754 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.ignite.internal.metric;
-
-import java.lang.reflect.Field;
-import java.sql.Connection;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.concurrent.BrokenBarrierException;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.CyclicBarrier;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-import java.util.stream.StreamSupport;
-import javax.cache.Cache;
-import javax.cache.expiry.CreatedExpiryPolicy;
-import javax.cache.expiry.Duration;
-import javax.cache.expiry.EternalExpiryPolicy;
-import javax.cache.expiry.ModifiedExpiryPolicy;
-import com.google.common.collect.Lists;
-import org.apache.ignite.IgniteAtomicLong;
-import org.apache.ignite.IgniteAtomicReference;
-import org.apache.ignite.IgniteAtomicSequence;
-import org.apache.ignite.IgniteAtomicStamped;
-import org.apache.ignite.IgniteCache;
-import org.apache.ignite.IgniteCompute;
-import org.apache.ignite.IgniteCountDownLatch;
-import org.apache.ignite.IgniteDataStreamer;
-import org.apache.ignite.IgniteException;
-import org.apache.ignite.IgniteJdbcThinDriver;
-import org.apache.ignite.IgniteLock;
-import org.apache.ignite.IgniteQueue;
-import org.apache.ignite.IgniteSemaphore;
-import org.apache.ignite.IgniteSet;
-import org.apache.ignite.Ignition;
-import org.apache.ignite.cache.CacheAtomicityMode;
-import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
-import org.apache.ignite.cache.query.ContinuousQuery;
-import org.apache.ignite.cache.query.QueryCursor;
-import org.apache.ignite.cache.query.ScanQuery;
-import org.apache.ignite.client.Config;
-import org.apache.ignite.client.IgniteClient;
-import org.apache.ignite.cluster.ClusterNode;
-import org.apache.ignite.cluster.ClusterState;
-import org.apache.ignite.compute.ComputeJob;
-import org.apache.ignite.compute.ComputeJobResult;
-import org.apache.ignite.compute.ComputeJobResultPolicy;
-import org.apache.ignite.compute.ComputeTask;
-import org.apache.ignite.configuration.AtomicConfiguration;
-import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.configuration.ClientConfiguration;
-import org.apache.ignite.configuration.CollectionConfiguration;
-import org.apache.ignite.configuration.DataRegionConfiguration;
-import org.apache.ignite.configuration.DataStorageConfiguration;
-import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectAllTypes;
-import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectEnum;
-import org.apache.ignite.internal.client.thin.ProtocolVersion;
-import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
-import org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager;
-import org.apache.ignite.internal.processors.cache.persistence.freelist.PagesList;
-import org.apache.ignite.internal.processors.metastorage.DistributedMetaStorage;
-import org.apache.ignite.internal.processors.metric.impl.PeriodicHistogramMetricImpl;
-import org.apache.ignite.internal.processors.odbc.jdbc.JdbcConnectionContext;
-import org.apache.ignite.internal.processors.service.DummyService;
-import org.apache.ignite.internal.processors.task.GridInternal;
-import org.apache.ignite.internal.systemview.BaselineNodeAttributeViewWalker;
-import org.apache.ignite.internal.systemview.CachePagesListViewWalker;
-import org.apache.ignite.internal.systemview.ClientConnectionAttributeViewWalker;
-import org.apache.ignite.internal.systemview.MetastorageViewWalker;
-import org.apache.ignite.internal.systemview.NodeAttributeViewWalker;
-import org.apache.ignite.internal.thread.pool.IgniteStripedExecutor;
-import org.apache.ignite.internal.util.GridTestClockTimer;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.T2;
-import org.apache.ignite.internal.util.typedef.internal.CU;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.lang.IgniteCallable;
-import org.apache.ignite.lang.IgniteClosure;
-import org.apache.ignite.lang.IgnitePredicate;
-import org.apache.ignite.lang.IgniteRunnable;
-import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.plugin.AbstractTestPluginProvider;
-import org.apache.ignite.plugin.IgnitePlugin;
-import org.apache.ignite.services.ServiceConfiguration;
-import org.apache.ignite.spi.systemview.view.BaselineNodeAttributeView;
-import org.apache.ignite.spi.systemview.view.BaselineNodeView;
-import org.apache.ignite.spi.systemview.view.BinaryMetadataView;
-import org.apache.ignite.spi.systemview.view.CacheGroupIoView;
-import org.apache.ignite.spi.systemview.view.CacheGroupView;
-import org.apache.ignite.spi.systemview.view.CachePagesListView;
-import org.apache.ignite.spi.systemview.view.CacheView;
-import org.apache.ignite.spi.systemview.view.ClientConnectionAttributeView;
-import org.apache.ignite.spi.systemview.view.ClientConnectionView;
-import org.apache.ignite.spi.systemview.view.ClusterNodeView;
-import org.apache.ignite.spi.systemview.view.ComputeJobView;
-import org.apache.ignite.spi.systemview.view.ComputeTaskView;
-import org.apache.ignite.spi.systemview.view.ConfigurationView;
-import org.apache.ignite.spi.systemview.view.ContinuousQueryView;
-import org.apache.ignite.spi.systemview.view.FiltrableSystemView;
-import org.apache.ignite.spi.systemview.view.MetastorageView;
-import org.apache.ignite.spi.systemview.view.NodeAttributeView;
-import org.apache.ignite.spi.systemview.view.NodeMetricsView;
-import org.apache.ignite.spi.systemview.view.PagesListView;
-import org.apache.ignite.spi.systemview.view.PagesTimestampHistogramView;
-import org.apache.ignite.spi.systemview.view.PluginView;
-import org.apache.ignite.spi.systemview.view.ScanQueryView;
-import org.apache.ignite.spi.systemview.view.ServiceView;
-import org.apache.ignite.spi.systemview.view.SnapshotView;
-import org.apache.ignite.spi.systemview.view.StripedExecutorTaskView;
-import org.apache.ignite.spi.systemview.view.SystemView;
-import org.apache.ignite.spi.systemview.view.TransactionView;
-import org.apache.ignite.spi.systemview.view.datastructures.AtomicLongView;
-import org.apache.ignite.spi.systemview.view.datastructures.AtomicReferenceView;
-import org.apache.ignite.spi.systemview.view.datastructures.AtomicSequenceView;
-import org.apache.ignite.spi.systemview.view.datastructures.AtomicStampedView;
-import org.apache.ignite.spi.systemview.view.datastructures.CountDownLatchView;
-import org.apache.ignite.spi.systemview.view.datastructures.QueueView;
-import org.apache.ignite.spi.systemview.view.datastructures.ReentrantLockView;
-import org.apache.ignite.spi.systemview.view.datastructures.SemaphoreView;
-import org.apache.ignite.spi.systemview.view.datastructures.SetView;
-import org.apache.ignite.testframework.GridTestUtils;
-import org.apache.ignite.testframework.junits.WithSystemProperty;
-import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.apache.ignite.transactions.Transaction;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.junit.Test;
-
-import static org.apache.ignite.IgniteSystemProperties.IGNITE_DATA_CENTER_ID;
-import static org.apache.ignite.configuration.AtomicConfiguration.DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE;
-import static org.apache.ignite.events.EventType.EVT_CONSISTENCY_VIOLATION;
-import static org.apache.ignite.internal.IgniteKernal.CFG_VIEW;
-import static org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.NODES_SYS_VIEW;
-import static org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.NODE_ATTRIBUTES_SYS_VIEW;
-import static org.apache.ignite.internal.managers.discovery.GridDiscoveryManager.NODE_METRICS_SYS_VIEW;
-import static org.apache.ignite.internal.managers.systemview.ScanQuerySystemView.SCAN_QRY_SYS_VIEW;
-import static org.apache.ignite.internal.processors.cache.ClusterCachesInfo.CACHES_VIEW;
-import static org.apache.ignite.internal.processors.cache.ClusterCachesInfo.CACHE_GRPS_VIEW;
-import static org.apache.ignite.internal.processors.cache.GridCacheProcessor.CACHE_GRP_IO_VIEW;
-import static org.apache.ignite.internal.processors.cache.GridCacheProcessor.CACHE_GRP_PAGE_LIST_VIEW;
-import static org.apache.ignite.internal.processors.cache.GridCacheUtils.cacheGroupId;
-import static org.apache.ignite.internal.processors.cache.GridCacheUtils.cacheId;
-import static org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl.BINARY_METADATA_VIEW;
-import static org.apache.ignite.internal.processors.cache.persistence.DataStorageMetricsImpl.DATASTORAGE_METRIC_PREFIX;
-import static org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager.METASTORE_VIEW;
-import static org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager.DATA_REGION_PAGE_LIST_VIEW;
-import static org.apache.ignite.internal.processors.cache.persistence.IgniteCacheDatabaseSharedManager.PAGE_TS_HISTOGRAM_VIEW;
-import static org.apache.ignite.internal.processors.cache.persistence.metastorage.MetaStorage.METASTORAGE_CACHE_NAME;
-import static org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager.TXS_MON_LIST;
-import static org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor.BASELINE_NODES_SYS_VIEW;
-import static org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor.BASELINE_NODE_ATTRIBUTES_SYS_VIEW;
-import static org.apache.ignite.internal.processors.continuous.GridContinuousProcessor.CQ_SYS_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.DEFAULT_DS_GROUP_NAME;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.DEFAULT_VOLATILE_DS_GROUP_NAME;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.LATCHES_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.LOCKS_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.LONGS_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.QUEUES_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.REFERENCES_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.SEMAPHORES_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.SEQUENCES_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.SETS_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.STAMPED_VIEW;
-import static org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor.VOLATILE_DATA_REGION_NAME;
-import static org.apache.ignite.internal.processors.job.GridJobProcessor.JOBS_VIEW;
-import static org.apache.ignite.internal.processors.metastorage.persistence.DistributedMetaStorageImpl.DISTRIBUTED_METASTORE_VIEW;
-import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
-import static org.apache.ignite.internal.processors.odbc.ClientListenerProcessor.CLI_CONN_ATTR_VIEW;
-import static org.apache.ignite.internal.processors.odbc.ClientListenerProcessor.CLI_CONN_VIEW;
-import static org.apache.ignite.internal.processors.plugin.IgnitePluginProcessor.PLUGINS_SYS_VIEW;
-import static org.apache.ignite.internal.processors.pool.PoolProcessor.STREAM_POOL_QUEUE_VIEW;
-import static org.apache.ignite.internal.processors.pool.PoolProcessor.SYS_POOL_QUEUE_VIEW;
-import static org.apache.ignite.internal.processors.service.IgniteServiceProcessor.SVCS_VIEW;
-import static org.apache.ignite.internal.processors.task.GridTaskProcessor.TASKS_VIEW;
-import static org.apache.ignite.internal.util.IgniteUtils.MB;
-import static org.apache.ignite.internal.util.IgniteUtils.toStringSafe;
-import static org.apache.ignite.internal.util.lang.GridFunc.alwaysTrue;
-import static org.apache.ignite.internal.util.lang.GridFunc.identity;
-import static org.apache.ignite.spi.systemview.view.SnapshotView.SNAPSHOT_SYS_VIEW;
-import static org.apache.ignite.testframework.GridTestUtils.runAsync;
-import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
-import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
-import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
-import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
-import static org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE;
-import static org.apache.ignite.transactions.TransactionState.ACTIVE;
-
-/** Tests for {@link SystemView}. */
-public class SystemViewSelfTest extends GridCommonAbstractTest {
- /** */
- public static final String TEST_PREDICATE = "TestPredicate";
-
- /** */
- public static final String TEST_TRANSFORMER = "TestTransformer";
-
- /** */
- private static CountDownLatch jobStartedLatch;
-
- /** */
- private static CountDownLatch releaseJobLatch;
-
- /** {@inheritDoc} */
- @Override protected void beforeTestsStarted() throws Exception {
- super.beforeTestsStarted();
-
- cleanPersistenceDir();
- }
-
- /** {@inheritDoc} */
- @Override protected void afterTestsStopped() throws Exception {
- super.afterTestsStopped();
-
- cleanPersistenceDir();
- }
-
- /** Tests work of {@link SystemView} for caches. */
- @Test
- public void testCachesView() throws Exception {
- try (IgniteEx g = startGrid()) {
- Set<String> cacheNames = new HashSet<>(Arrays.asList("cache-1", "cache-2"));
-
- for (String name : cacheNames)
- g.createCache(name);
-
- SystemView<CacheView> caches = g.context().systemView().view(CACHES_VIEW);
-
- assertEquals(g.context().cache().cacheDescriptors().size(), F.size(caches.iterator()));
-
- for (CacheView row : caches)
- cacheNames.remove(row.cacheName());
-
- assertTrue(cacheNames.toString(), cacheNames.isEmpty());
- }
- }
-
- /** Tests work of {@link SystemView} for cache groups. */
- @Test
- public void testCacheGroupsView() throws Exception {
- try (IgniteEx g = startGrid()) {
- Set<String> grpNames = new HashSet<>(Arrays.asList("grp-1", "grp-2"));
-
- for (String grpName : grpNames)
- g.createCache(new CacheConfiguration<>("cache-" + grpName).setGroupName(grpName));
-
- SystemView<CacheGroupView> grps = g.context().systemView().view(CACHE_GRPS_VIEW);
-
- assertEquals(g.context().cache().cacheGroupDescriptors().size(), F.size(grps.iterator()));
-
- for (CacheGroupView row : grps)
- grpNames.remove(row.cacheGroupName());
-
- assertTrue(grpNames.toString(), grpNames.isEmpty());
- }
- }
-
- /** Tests work of {@link SystemView} for cache expiry policy info with in-memory configuration. */
- @Test
- public void testCacheViewExpiryPolicyWithInMemory() throws Exception {
- testCacheViewExpiryPolicy(false);
- }
-
- /** Tests work of {@link SystemView} for cache expiry policy info with persist configuration. */
- @Test
- public void testCacheViewExpiryPolicyWithPersist() throws Exception {
- testCacheViewExpiryPolicy(true);
- }
-
- /** Tests work of {@link SystemView} for cache groups expiry policy info. */
- private void testCacheViewExpiryPolicy(boolean withPersistence) throws Exception {
- try (IgniteEx g = !withPersistence ? startGrid() : startGrid(getConfiguration().setDataStorageConfiguration(
- new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration().setPersistenceEnabled(true)
- )))) {
-
- if (withPersistence)
- g.cluster().state(ClusterState.ACTIVE);
-
- String eternalCacheName = "eternalCache";
- String createdCacheName = "createdCache";
- String eagerTtlCacheName = "eagerTtlCache";
- String withoutGrpCacheName = "withoutGrpCache";
- String dfltCacheName = "defaultCache";
-
- CacheConfiguration<Long, Long> eternalCache = new CacheConfiguration<Long, Long>(eternalCacheName)
- .setGroupName("group1")
- .setExpiryPolicyFactory(EternalExpiryPolicy.factoryOf());
-
- CacheConfiguration<Long, Long> createdCache = new CacheConfiguration<Long, Long>(createdCacheName)
- .setGroupName("group2")
- .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.MILLISECONDS, 500L)));
-
- CacheConfiguration<Long, Long> eagerTtlCache = new CacheConfiguration<Long, Long>(eagerTtlCacheName)
- .setGroupName("group2")
- .setEagerTtl(false)
- .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.MILLISECONDS, 500L)));
-
- CacheConfiguration<Long, Long> withoutGrpCache = new CacheConfiguration<Long, Long>(withoutGrpCacheName)
- .setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.MILLISECONDS, 500L)));
-
- CacheConfiguration<Long, Long> dfltCache = new CacheConfiguration<Long, Long>(dfltCacheName)
- .setGroupName("group3");
-
- g.createCache(eternalCache);
- g.createCache(createdCache);
- g.createCache(eagerTtlCache);
- g.createCache(withoutGrpCache);
- g.createCache(dfltCache);
-
- SystemView<CacheView> caches = g.context().systemView().view(CACHES_VIEW);
-
- for (CacheView row : caches) {
- switch (row.cacheName()) {
- case "defaultCache":
- case "eternalCache":
- assertEquals("No", row.hasExpiringEntries());
-
- g.cache(row.cacheName()).put(0, 0);
-
- assertEquals("No", row.hasExpiringEntries());
-
- g.cache(row.cacheName())
- .withExpiryPolicy(new CreatedExpiryPolicy(new Duration(TimeUnit.MILLISECONDS, 200L)))
- .put(1, 1);
-
- assertEquals("Yes", row.hasExpiringEntries());
- assertTrue(waitForCondition(() -> "No".equals(row.hasExpiringEntries()), getTestTimeout()));
-
- break;
-
- case "withoutGrpCache":
- case "createdCache":
- assertEquals("No", row.hasExpiringEntries());
-
- g.cache(row.cacheName()).put(0, 0);
-
- assertEquals("Yes", row.hasExpiringEntries());
- assertTrue(waitForCondition(() -> "No".equals(row.hasExpiringEntries()), getTestTimeout()));
-
- g.cache(row.cacheName())
- .withExpiryPolicy(new ModifiedExpiryPolicy(new Duration(TimeUnit.MILLISECONDS, 200L)))
- .put(1, 1);
-
- assertEquals("Yes", row.hasExpiringEntries());
- assertTrue(waitForCondition(() -> "No".equals(row.hasExpiringEntries()), getTestTimeout()));
-
- if (row.cacheName().equals(createdCacheName)) {
- g.cache(eagerTtlCacheName).put(2, 2);
- assertEquals("No", row.hasExpiringEntries());
- }
-
- break;
-
- case "eagerTtlCache":
- assertEquals("Unknown", row.hasExpiringEntries());
-
- break;
- }
- }
- }
- }
-
- /** Tests work of {@link SystemView} for services. */
- @Test
- public void testServices() throws Exception {
- try (IgniteEx g = startGrid()) {
- {
- ServiceConfiguration srvcCfg = new ServiceConfiguration();
-
- srvcCfg.setName("service");
- srvcCfg.setMaxPerNodeCount(1);
- srvcCfg.setService(new DummyService());
- srvcCfg.setNodeFilter(new TestNodeFilter());
-
- g.services().deploy(srvcCfg);
-
- SystemView<ServiceView> srvs = g.context().systemView().view(SVCS_VIEW);
-
- assertEquals(g.context().service().serviceDescriptors().size(), F.size(srvs.iterator()));
-
- ServiceView sview = srvs.iterator().next();
-
- assertEquals(srvcCfg.getName(), sview.name());
- assertNotNull(sview.serviceId());
- assertEquals(DummyService.class, sview.serviceClass());
- assertEquals(srvcCfg.getMaxPerNodeCount(), sview.maxPerNodeCount());
- assertNull(sview.cacheName());
- assertNull(sview.affinityKey());
- assertEquals(TestNodeFilter.class, sview.nodeFilter());
- assertFalse(sview.staticallyConfigured());
- assertEquals(g.localNode().id(), sview.originNodeId());
- assertEquals(F.asMap(g.localNode().id(), 1), sview.topologySnapshot());
- }
-
- {
- g.createCache("test-cache");
-
- ServiceConfiguration srvcCfg = new ServiceConfiguration();
-
- srvcCfg.setName("service-2");
- srvcCfg.setMaxPerNodeCount(2);
- srvcCfg.setService(new DummyService());
- srvcCfg.setNodeFilter(new TestNodeFilter());
- srvcCfg.setCacheName("test-cache");
- srvcCfg.setAffinityKey(1L);
-
- g.services().deploy(srvcCfg);
-
- final ServiceView[] sview = {null};
-
- g.context().systemView().<ServiceView>view(SVCS_VIEW).forEach(sv -> {
- if (sv.name().equals(srvcCfg.getName()))
- sview[0] = sv;
- });
-
- assertEquals(srvcCfg.getName(), sview[0].name());
- assertNotNull(sview[0].serviceId());
- assertEquals(DummyService.class, sview[0].serviceClass());
- assertEquals(srvcCfg.getMaxPerNodeCount(), sview[0].maxPerNodeCount());
- assertEquals("test-cache", sview[0].cacheName());
- assertEquals("1", sview[0].affinityKey());
- assertEquals(TestNodeFilter.class, sview[0].nodeFilter());
- assertFalse(sview[0].staticallyConfigured());
- assertEquals(g.localNode().id(), sview[0].originNodeId());
- assertEquals(F.asMap(g.localNode().id(), 2), sview[0].topologySnapshot());
- }
- }
- }
-
- /** Tests work of {@link SystemView} for compute grid {@link IgniteCompute#broadcastAsync(IgniteRunnable)} call. */
- @Test
- public void testComputeBroadcast() throws Exception {
- CyclicBarrier barrier = new CyclicBarrier(6);
-
- try (IgniteEx g1 = startGrid(0)) {
- SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
-
- for (int i = 0; i < 5; i++) {
- g1.compute().broadcastAsync(() -> {
- try {
- barrier.await();
- barrier.await();
- }
- catch (InterruptedException | BrokenBarrierException e) {
- throw new RuntimeException(e);
- }
- });
- }
-
- barrier.await();
-
- assertEquals(5, tasks.size());
-
- ComputeTaskView t = tasks.iterator().next();
-
- assertFalse(t.internal());
- assertNull(t.affinityCacheName());
- assertEquals(-1, t.affinityPartitionId());
- assertTrue(t.taskClassName().startsWith(getClass().getName()));
- assertTrue(t.taskName().startsWith(getClass().getName()));
- assertEquals(g1.localNode().id(), t.taskNodeId());
- assertEquals("0", t.userVersion());
-
- barrier.await();
- }
- }
-
- /** Tests work of {@link SystemView} for compute grid {@link IgniteCompute#runAsync(IgniteRunnable)} call. */
- @Test
- public void testComputeRunnable() throws Exception {
- CyclicBarrier barrier = new CyclicBarrier(2);
-
- try (IgniteEx g1 = startGrid(0)) {
- SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
-
- g1.compute().runAsync(() -> {
- try {
- barrier.await();
- barrier.await();
- }
- catch (InterruptedException | BrokenBarrierException e) {
- throw new RuntimeException(e);
- }
- });
-
- barrier.await();
-
- assertEquals(1, tasks.size());
-
- ComputeTaskView t = tasks.iterator().next();
-
- assertFalse(t.internal());
- assertNull(t.affinityCacheName());
- assertEquals(-1, t.affinityPartitionId());
- assertTrue(t.taskClassName().startsWith(getClass().getName()));
- assertTrue(t.taskName().startsWith(getClass().getName()));
- assertEquals(g1.localNode().id(), t.taskNodeId());
- assertEquals("0", t.userVersion());
-
- barrier.await();
- }
- }
-
- /** Tests work of {@link SystemView} for compute grid {@link IgniteCompute#apply(IgniteClosure, Object)} call. */
- @Test
- public void testComputeApply() throws Exception {
- CyclicBarrier barrier = new CyclicBarrier(2);
-
- try (IgniteEx g1 = startGrid(0)) {
- SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
-
- GridTestUtils.runAsync(() -> {
- g1.compute().apply(x -> {
- try {
- barrier.await();
- barrier.await();
- }
- catch (InterruptedException | BrokenBarrierException e) {
- throw new RuntimeException(e);
- }
-
- return 0;
- }, 1);
- });
-
- barrier.await();
-
- assertEquals(1, tasks.size());
-
- ComputeTaskView t = tasks.iterator().next();
-
- assertFalse(t.internal());
- assertNull(t.affinityCacheName());
- assertEquals(-1, t.affinityPartitionId());
- assertTrue(t.taskClassName().startsWith(getClass().getName()));
- assertTrue(t.taskName().startsWith(getClass().getName()));
- assertEquals(g1.localNode().id(), t.taskNodeId());
- assertEquals("0", t.userVersion());
-
- barrier.await();
- }
- }
-
- /**
- * Tests work of {@link SystemView} for compute grid
- * {@link IgniteCompute#affinityCallAsync(String, Object, IgniteCallable)} call.
- */
- @Test
- public void testComputeAffinityCall() throws Exception {
- CyclicBarrier barrier = new CyclicBarrier(2);
-
- try (IgniteEx g1 = startGrid(0)) {
- SystemView<ComputeTaskView> tasks = g1.context().systemView().view(TASKS_VIEW);
-
- IgniteCache<Integer, Integer> cache = g1.createCache("test-cache");
-
- cache.put(1, 1);
-
- g1.compute().affinityCallAsync("test-cache", 1, () -> {
- try {
- barrier.await();
- barrier.await();
- }
- catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
-
- return 0;
- });
-
- barrier.await();
-
- assertEquals(1, tasks.size());
-
- ComputeTaskView t = tasks.iterator().next();
-
- assertFalse(t.internal());
- assertEquals("test-cache", t.affinityCacheName());
- assertEquals(1, t.affinityPartitionId());
- assertTrue(t.taskClassName().startsWith(getClass().getName()));
- assertTrue(t.taskName().startsWith(getClass().getName()));
- assertEquals(g1.localNode().id(), t.taskNodeId());
- assertEquals("0", t.userVersion());
-
- barrier.await();
- }
- }
-
- /** */
- @Test
- public void testComputeTask() throws Exception {
- doTestComputeTask(false);
- }
-
- /** */
- @Test
- public void testInternalComputeTask() throws Exception {
- doTestComputeTask(true);
- }
-
- /** */
- private void doTestComputeTask(boolean internal) throws Exception {
- int gridCnt = 3;
-
- IgniteEx g1 = startGrids(gridCnt);
-
- try {
- IgniteCache<Integer, Integer> cache = g1.createCache("test-cache");
-
- cache.put(1, 1);
-
- for (int i = 0; i < gridCnt; i++) {
- IgniteEx grid = grid(i);
-
- SystemView<ComputeTaskView> tasks = grid.context().systemView().view(TASKS_VIEW);
-
- jobStartedLatch = new CountDownLatch(3);
- releaseJobLatch = new CountDownLatch(1);
-
- IgniteInternalFuture<Object> fut
- = runAsync(() -> grid.compute().execute(internal ? new InternalTask() : new UserTask(), 1));
-
- assertTrue(jobStartedLatch.await(30_000, TimeUnit.MILLISECONDS));
-
- try {
- assertEquals(1, tasks.size());
-
- ComputeTaskView t = tasks.iterator().next();
-
- assertEquals("Expecting to see " + (internal ? "internal" : "user") + " task", internal, t.internal());
- assertNull(t.affinityCacheName());
- assertEquals(-1, t.affinityPartitionId());
- assertTrue(t.taskClassName().startsWith(getClass().getName()));
- assertTrue(t.taskName().startsWith(getClass().getName()));
- assertEquals(grid.localNode().id(), t.taskNodeId());
- assertEquals("0", t.userVersion());
-
- checkJobs(gridCnt, internal, t.sessionId());
- }
- finally {
- releaseJobLatch.countDown();
- }
-
- fut.get(getTestTimeout(), TimeUnit.MILLISECONDS);
- }
- }
- finally {
- stopAllGrids();
- }
- }
-
- /** */
- private void checkJobs(int gridCnt, boolean internal, IgniteUuid sesId) {
- for (int i = 0; i < gridCnt; i++) {
- SystemView<ComputeJobView> jobs = grid(i).context().systemView().view(JOBS_VIEW);
-
- assertTrue("Expecting to see " + (internal ? "internal" : "user") + " job", jobs.size() > 0);
-
- ComputeJobView job = jobs.iterator().next();
-
- assertEquals(sesId, job.sessionId());
- assertEquals("Expecting to see " + (internal ? "internal" : "user") + " job", internal, job.isInternal());
- }
-
- releaseJobLatch.countDown();
- }
-
- /** */
- @Test
- public void testClientsConnections() throws Exception {
- try (IgniteEx g0 = startGrid(0)) {
- String host = g0.configuration().getClientConnectorConfiguration().getHost();
-
- if (host == null)
- host = g0.configuration().getLocalHost();
-
- int port = g0.configuration().getClientConnectorConfiguration().getPort();
-
- SystemView<ClientConnectionView> conns = g0.context().systemView().view(CLI_CONN_VIEW);
-
- try (IgniteClient cli = Ignition.startClient(new ClientConfiguration().setAddresses(host + ":" + port))) {
- assertEquals(1, conns.size());
-
- ClientConnectionView cliConn = conns.iterator().next();
-
- assertEquals("THIN", cliConn.type());
- assertEquals(cliConn.localAddress().getHostName(), cliConn.remoteAddress().getHostName());
- assertEquals(g0.configuration().getClientConnectorConfiguration().getPort(),
- cliConn.localAddress().getPort());
- assertEquals(cliConn.version(), ProtocolVersion.LATEST_VER.toString());
-
- try (Connection conn =
- new IgniteJdbcThinDriver().connect("jdbc:ignite:thin://" + host, new Properties())) {
- assertEquals(2, conns.size());
- assertEquals(1, F.size(jdbcConnectionsIterator(conns)));
-
- ClientConnectionView jdbcConn = jdbcConnectionsIterator(conns).next();
-
- assertEquals("JDBC", jdbcConn.type());
- assertEquals(jdbcConn.localAddress().getHostName(), jdbcConn.remoteAddress().getHostName());
- assertEquals(g0.configuration().getClientConnectorConfiguration().getPort(),
- jdbcConn.localAddress().getPort());
- assertEquals(jdbcConn.version(), JdbcConnectionContext.CURRENT_VER.asString());
- }
- }
-
- boolean res = GridTestUtils.waitForCondition(() -> conns.size() == 0, 5_000);
-
- assertTrue(res);
- }
- }
-
- /** */
- @Test
- public void testClientConnectionAttributes() throws Exception {
- try (IgniteEx g0 = startGrid(0)) {
- SystemView<ClientConnectionAttributeView> view = g0.context().systemView().view(CLI_CONN_ATTR_VIEW);
-
- try (
- IgniteClient cl1 = Ignition.startClient(new ClientConfiguration().setAddresses(Config.SERVER)
- .setUserAttributes(F.asMap("attr1", "val1", "attr2", "val2")));
- IgniteClient cl2 = Ignition.startClient(new ClientConfiguration().setAddresses(Config.SERVER)
- .setUserAttributes(F.asMap("attr1", "val2")));
- IgniteClient cl3 = Ignition.startClient(new ClientConfiguration().setAddresses(Config.SERVER))
- ) {
- assertEquals(3, F.size(view.iterator()));
-
- assertEquals(1, F.size(view.iterator(), row ->
- "attr1".equals(row.name()) && "val1".equals(row.value())));
-
- // Test filtering.
- assertTrue(view instanceof FiltrableSystemView);
-
- Iterator<ClientConnectionAttributeView> iter = ((FiltrableSystemView<ClientConnectionAttributeView>)view)
- .iterator(F.asMap(ClientConnectionAttributeViewWalker.NAME_FILTER, "attr1"));
-
- assertEquals(2, F.size(iter));
-
- iter = ((FiltrableSystemView<ClientConnectionAttributeView>)view).iterator(
- F.asMap(ClientConnectionAttributeViewWalker.NAME_FILTER, "attr2"));
-
- assertTrue(iter.hasNext());
-
- long connId = iter.next().connectionId();
-
- assertFalse(iter.hasNext());
-
- iter = ((FiltrableSystemView<ClientConnectionAttributeView>)view).iterator(
- F.asMap(ClientConnectionAttributeViewWalker.CONNECTION_ID_FILTER, connId));
-
- assertEquals(2, F.size(iter));
- }
- }
- }
-
- /** */
- @Test
- public void testContinuousQuery() throws Exception {
- try (IgniteEx originNode = startGrid(0); IgniteEx remoteNode = startGrid(1)) {
- IgniteCache<Integer, Integer> cache = originNode.createCache("cache-1");
-
- SystemView<ContinuousQueryView> origQrys = originNode.context().systemView().view(CQ_SYS_VIEW);
- SystemView<ContinuousQueryView> remoteQrys = remoteNode.context().systemView().view(CQ_SYS_VIEW);
-
- assertEquals(0, origQrys.size());
- assertEquals(0, remoteQrys.size());
-
- try (QueryCursor qry = cache.query(new ContinuousQuery<>()
- .setInitialQuery(new ScanQuery<>())
- .setPageSize(100)
- .setTimeInterval(1000)
- .setLocalListener(evts -> {
- // No-op.
- })
- .setRemoteFilterFactory(() -> evt -> true)
- )) {
- for (int i = 0; i < 100; i++)
- cache.put(i, i);
-
- checkContinuousQueryView(originNode, origQrys, true);
- checkContinuousQueryView(originNode, remoteQrys, false);
- }
-
- assertEquals(0, origQrys.size());
- assertTrue(waitForCondition(() -> remoteQrys.size() == 0, getTestTimeout()));
- }
- }
-
- /** */
- private void checkContinuousQueryView(IgniteEx g, SystemView<ContinuousQueryView> qrys, boolean loc) {
- assertEquals(1, qrys.size());
-
- for (ContinuousQueryView cq : qrys) {
- assertEquals("cache-1", cq.cacheName());
- assertEquals(100, cq.bufferSize());
- assertEquals(1000, cq.interval());
- assertEquals(g.localNode().id(), cq.nodeId());
-
- if (loc)
- assertTrue(cq.localListener().startsWith(getClass().getName()));
- else
- assertNull(cq.localListener());
-
- assertTrue(cq.remoteFilter().startsWith(getClass().getName()));
- assertNull(cq.localTransformedListener());
- assertNull(cq.remoteTransformer());
- }
- }
-
- /** */
- @Test
- @WithSystemProperty(key = IGNITE_DATA_CENTER_ID, value = "DC0")
- public void testNodes() throws Exception {
- try (IgniteEx g1 = startGrid(0)) {
- SystemView<ClusterNodeView> views = g1.context().systemView().view(NODES_SYS_VIEW);
-
- assertEquals(1, views.size());
-
- try (IgniteEx g2 = startGrid(1)) {
- awaitPartitionMapExchange();
-
- checkViewsState(views, g1.localNode(), g2.localNode());
- checkViewsState(g2.context().systemView().view(NODES_SYS_VIEW), g2.localNode(), g1.localNode());
- }
-
- assertEquals(1, views.size());
- }
- }
-
- /** */
- @Test
- public void testNodeAttributes() throws Exception {
- try (
- IgniteEx ignite0 = startGrid(getConfiguration(getTestIgniteInstanceName(0))
- .setUserAttributes(F.asMap("name", "val0")));
- IgniteEx ignite1 = startGrid(getConfiguration(getTestIgniteInstanceName(1))
- .setUserAttributes(F.asMap("name", "val1")))
- ) {
- awaitPartitionMapExchange();
-
- SystemView<NodeAttributeView> view = ignite0.context().systemView().view(NODE_ATTRIBUTES_SYS_VIEW);
-
- assertEquals(ignite0.cluster().localNode().attributes().size() +
- ignite1.cluster().localNode().attributes().size(), view.size());
-
- assertEquals(1, F.size(view.iterator(), row -> "name".equals(row.name()) && "val0".equals(row.value())));
- assertEquals(1, F.size(view.iterator(), row -> "name".equals(row.name()) && "val1".equals(row.value())));
-
- // Test filtering.
- assertTrue(view instanceof FiltrableSystemView);
-
- Iterator<NodeAttributeView> iter = ((FiltrableSystemView<NodeAttributeView>)view)
- .iterator(F.asMap(NodeAttributeViewWalker.NODE_ID_FILTER, ignite0.cluster().localNode().id()));
-
- assertEquals(1, F.size(iter, row -> "name".equals(row.name()) && "val0".equals(row.value())));
-
- iter = ((FiltrableSystemView<NodeAttributeView>)view).iterator(
- F.asMap(NodeAttributeViewWalker.NODE_ID_FILTER, ignite1.cluster().localNode().id().toString()));
-
- assertEquals(1, F.size(iter, row -> "name".equals(row.name()) && "val1".equals(row.value())));
-
- iter = ((FiltrableSystemView<NodeAttributeView>)view).iterator(
- F.asMap(NodeAttributeViewWalker.NODE_ID_FILTER, "malformed-id"));
-
- assertEquals(0, F.size(iter));
-
- iter = ((FiltrableSystemView<NodeAttributeView>)view).iterator(
- F.asMap(NodeAttributeViewWalker.NAME_FILTER, "name"));
-
- assertEquals(2, F.size(iter));
-
- iter = ((FiltrableSystemView<NodeAttributeView>)view)
- .iterator(F.asMap(NodeAttributeViewWalker.NODE_ID_FILTER, ignite0.cluster().localNode().id(),
- NodeAttributeViewWalker.NAME_FILTER, "name"));
-
- assertEquals(1, F.size(iter));
- }
- }
-
- /** */
- @Test
- public void testNodeMetrics() throws Exception {
- long ts = U.currentTimeMillis();
-
- try (IgniteEx ignite0 = startGrid(0); IgniteEx ignite1 = startGrid(1)) {
- awaitPartitionMapExchange();
-
- SystemView<NodeMetricsView> view = ignite0.context().systemView().view(NODE_METRICS_SYS_VIEW);
-
- assertEquals(2, view.size());
- assertEquals(1, F.size(view.iterator(), row -> row.nodeId().equals(ignite0.cluster().localNode().id())));
- assertEquals(1, F.size(view.iterator(), row -> row.nodeId().equals(ignite1.cluster().localNode().id())));
- assertEquals(2, F.size(view.iterator(), row -> row.lastUpdateTime().getTime() >= ts));
- }
- }
-
- /** */
- @Test
- public void testCacheGroupIo() throws Exception {
- cleanPersistenceDir();
-
- try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(
- new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration().setPersistenceEnabled(true))))
- ) {
- ignite.cluster().state(ClusterState.ACTIVE);
-
- IgniteCache<Object, Object> cache = ignite.createCache("cache");
-
- cache.put(0, 0);
- cache.get(0);
-
- SystemView<CacheGroupIoView> view = ignite.context().systemView().view(CACHE_GRP_IO_VIEW);
-
- CacheGroupIoView row = F.find(view, null,
- (IgnitePredicate<CacheGroupIoView>)r -> "cache".equals(r.cacheGroupName()));
-
- assertNotNull(row);
- assertTrue(row.logicalReads() > 0);
- assertTrue(row.insertedBytes() > 0);
- }
- }
-
- /** */
- private void checkViewsState(SystemView<ClusterNodeView> views, ClusterNode loc, ClusterNode rmt) {
- assertEquals(2, views.size());
-
- for (ClusterNodeView nodeView : views) {
- if (nodeView.nodeId().equals(loc.id()))
- checkNodeView(nodeView, loc, true);
- else
- checkNodeView(nodeView, rmt, false);
- }
- }
-
- /** */
- private void checkNodeView(ClusterNodeView view, ClusterNode node, boolean isLoc) {
- assertEquals(node.id(), view.nodeId());
- assertEquals(node.consistentId().toString(), view.consistentId());
- assertEquals(toStringSafe(node.addresses()), view.addresses());
- assertEquals(toStringSafe(node.hostNames()), view.hostnames());
- assertEquals(node.order(), view.nodeOrder());
- assertEquals(node.version().toString(), view.version());
- assertEquals(isLoc, view.isLocal());
- assertEquals(node.isClient(), view.isClient());
- assertEquals(node.dataCenterId(), view.dataCenterId());
- assertEquals("DC0", view.dataCenterId());
- }
-
- /** */
- private Iterator<ClientConnectionView> jdbcConnectionsIterator(SystemView<ClientConnectionView> conns) {
- return F.iterator(conns.iterator(), identity(), true, v -> "JDBC".equals(v.type()));
- }
-
- /** */
- @Test
- public void testTransactions() throws Exception {
- try (IgniteEx g = startGrid(0)) {
- IgniteCache<Integer, Integer> cache1 = g.createCache(new CacheConfiguration<Integer, Integer>("c1")
- .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
-
- IgniteCache<Integer, Integer> cache2 = g.createCache(new CacheConfiguration<Integer, Integer>("c2")
- .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
-
- SystemView<TransactionView> txs = g.context().systemView().view(TXS_MON_LIST);
-
- assertEquals(0, F.size(txs.iterator(), alwaysTrue()));
-
- CountDownLatch latch = new CountDownLatch(1);
-
- try {
- AtomicInteger cntr = new AtomicInteger();
-
- GridTestUtils.runMultiThreadedAsync(() -> {
- try (Transaction tx = g.transactions().withLabel("test").txStart(PESSIMISTIC, REPEATABLE_READ)) {
- cache1.put(cntr.incrementAndGet(), cntr.incrementAndGet());
- cache1.put(cntr.incrementAndGet(), cntr.incrementAndGet());
-
- latch.await();
- }
- catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }, 5, "xxx");
-
- boolean res = waitForCondition(() -> txs.size() == 5, 10_000L);
-
- assertTrue(res);
-
- TransactionView txv = txs.iterator().next();
-
- assertEquals(g.localNode().id(), txv.localNodeId());
- assertEquals(txv.isolation(), REPEATABLE_READ);
- assertEquals(txv.concurrency(), PESSIMISTIC);
- assertEquals(txv.state(), ACTIVE);
- assertNotNull(txv.xid());
- assertFalse(txv.system());
- assertFalse(txv.implicit());
- assertFalse(txv.implicitSingle());
- assertTrue(txv.near());
- assertFalse(txv.dht());
- assertTrue(txv.colocated());
- assertTrue(txv.local());
- assertEquals("test", txv.label());
- assertFalse(txv.onePhaseCommit());
- assertFalse(txv.internal());
- assertEquals(0, txv.timeout());
- assertTrue(txv.startTime() <= System.currentTimeMillis());
- assertEquals(String.valueOf(cacheId(cache1.getName())), txv.cacheIds());
-
- GridTestUtils.runMultiThreadedAsync(() -> {
- try (Transaction tx = g.transactions().txStart(OPTIMISTIC, SERIALIZABLE)) {
- cache1.put(cntr.incrementAndGet(), cntr.incrementAndGet());
- cache1.put(cntr.incrementAndGet(), cntr.incrementAndGet());
- cache2.put(cntr.incrementAndGet(), cntr.incrementAndGet());
-
- latch.await();
- }
- catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- }, 5, "xxx");
-
- res = waitForCondition(() -> txs.size() == 10, 10_000L);
-
- assertTrue(res);
-
- for (TransactionView tx : txs) {
- if (PESSIMISTIC == tx.concurrency())
- continue;
-
- assertEquals(g.localNode().id(), tx.localNodeId());
- assertEquals(tx.isolation(), SERIALIZABLE);
- assertEquals(tx.concurrency(), OPTIMISTIC);
- assertEquals(tx.state(), ACTIVE);
- assertNotNull(tx.xid());
- assertFalse(tx.system());
- assertFalse(tx.implicit());
- assertFalse(tx.implicitSingle());
- assertTrue(tx.near());
- assertFalse(tx.dht());
- assertTrue(tx.colocated());
- assertTrue(tx.local());
- assertNull(tx.label());
- assertFalse(tx.onePhaseCommit());
- assertFalse(tx.internal());
- assertEquals(0, tx.timeout());
- assertTrue(tx.startTime() <= System.currentTimeMillis());
-
- String s1 = cacheId(cache1.getName()) + "," + cacheId(cache2.getName());
- String s2 = cacheId(cache2.getName()) + "," + cacheId(cache1.getName());
-
- assertTrue(s1.equals(tx.cacheIds()) || s2.equals(tx.cacheIds()));
- }
- }
- finally {
- latch.countDown();
- }
-
- boolean res = waitForCondition(() -> txs.size() == 0, 10_000L);
-
- assertTrue(res);
- }
- }
-
- /** */
- @Test
- public void testLocalScanQuery() throws Exception {
- try (IgniteEx g0 = startGrid(0)) {
- IgniteCache<Integer, Integer> cache1 = g0.createCache(
- new CacheConfiguration<Integer, Integer>("cache1")
- .setGroupName("group1"));
-
- int part = g0.affinity("cache1").primaryPartitions(g0.localNode())[0];
-
- List<Integer> partKeys = partitionKeys(cache1, part, 11, 0);
-
- for (Integer key : partKeys)
- cache1.put(key, key);
-
- SystemView<ScanQueryView> qrySysView0 = g0.context().systemView().view(SCAN_QRY_SYS_VIEW);
-
- assertNotNull(qrySysView0);
-
- assertEquals(0, qrySysView0.size());
-
- QueryCursor<Integer> qryRes1 = cache1.query(
- new ScanQuery<Integer, Integer>()
- .setFilter(new TestPredicate())
- .setLocal(true)
- .setPartition(part)
- .setPageSize(10),
- new TestTransformer());
-
- assertTrue(qryRes1.iterator().hasNext());
-
- boolean res = waitForCondition(() -> qrySysView0.size() > 0, 5_000);
-
- assertTrue(res);
-
- ScanQueryView view = qrySysView0.iterator().next();
-
- assertEquals(g0.localNode().id(), view.originNodeId());
- assertEquals(0, view.queryId());
- assertEquals("cache1", view.cacheName());
- assertEquals(cacheId("cache1"), view.cacheId());
- assertEquals(cacheGroupId("cache1", "group1"), view.cacheGroupId());
- assertEquals("group1", view.cacheGroupName());
- assertTrue(view.startTime() <= System.currentTimeMillis());
- assertTrue(view.duration() >= 0);
- assertFalse(view.canceled());
- assertEquals(TEST_PREDICATE, view.filter());
- assertTrue(view.local());
- assertEquals(part, view.partition());
- assertEquals(toStringSafe(g0.context().discovery().topologyVersionEx()), view.topology());
- assertEquals(TEST_TRANSFORMER, view.transformer());
- assertFalse(view.keepBinary());
- assertNull(view.subjectId());
- assertNull(view.taskName());
-
- qryRes1.close();
-
- res = waitForCondition(() -> qrySysView0.size() == 0, 5_000);
-
- assertTrue(res);
- }
- }
-
- /** */
- @Test
- public void testScanQuery() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1);
- IgniteEx client1 = startClientGrid("client-1");
- IgniteEx client2 = startClientGrid("client-2")) {
-
- IgniteCache<Integer, Integer> cache1 = client1.createCache(
- new CacheConfiguration<Integer, Integer>("cache1")
- .setGroupName("group1"));
-
- IgniteCache<Integer, Integer> cache2 = client2.createCache("cache2");
-
- for (int i = 0; i < 100; i++) {
- cache1.put(i, i);
- cache2.put(i, i);
- }
-
- SystemView<ScanQueryView> qrySysView0 = g0.context().systemView().view(SCAN_QRY_SYS_VIEW);
- SystemView<ScanQueryView> qrySysView1 = g1.context().systemView().view(SCAN_QRY_SYS_VIEW);
-
- assertNotNull(qrySysView0);
- assertNotNull(qrySysView1);
-
- assertEquals(0, qrySysView0.size());
- assertEquals(0, qrySysView1.size());
-
- QueryCursor<Integer> qryRes1 = cache1.query(
- new ScanQuery<Integer, Integer>()
- .setFilter(new TestPredicate())
- .setPageSize(10),
- new TestTransformer());
-
- QueryCursor<?> qryRes2 = cache2.withKeepBinary().query(new ScanQuery<>()
- .setPageSize(20));
-
- assertTrue(qryRes1.iterator().hasNext());
- assertTrue(qryRes2.iterator().hasNext());
-
- checkScanQueryView(client1, client2, qrySysView0);
- checkScanQueryView(client1, client2, qrySysView1);
-
- qryRes1.close();
- qryRes2.close();
-
- boolean res = waitForCondition(
- () -> qrySysView0.size() + qrySysView1.size() == 0, 5_000);
-
- assertTrue(res);
- }
- }
-
- /** */
- private void checkScanQueryView(IgniteEx client1, IgniteEx client2, SystemView<ScanQueryView> qrySysView)
- throws Exception {
- boolean res = waitForCondition(() -> qrySysView.size() > 1, 5_000);
-
- assertTrue(res);
-
- Consumer<ScanQueryView> cache1checker = view -> {
- assertEquals(client1.localNode().id(), view.originNodeId());
- assertTrue(view.queryId() != 0);
- assertEquals("cache1", view.cacheName());
- assertEquals(cacheId("cache1"), view.cacheId());
- assertEquals(cacheGroupId("cache1", "group1"), view.cacheGroupId());
- assertEquals("group1", view.cacheGroupName());
- assertTrue(view.startTime() <= System.currentTimeMillis());
- assertTrue(view.duration() >= 0);
- assertFalse(view.canceled());
- assertEquals(TEST_PREDICATE, view.filter());
- assertFalse(view.local());
- assertEquals(-1, view.partition());
- assertEquals(toStringSafe(client1.context().discovery().topologyVersionEx()), view.topology());
- assertEquals(TEST_TRANSFORMER, view.transformer());
- assertFalse(view.keepBinary());
- assertNull(view.subjectId());
- assertNull(view.taskName());
- assertEquals(10, view.pageSize());
- };
-
- Consumer<ScanQueryView> cache2checker = view -> {
- assertEquals(client2.localNode().id(), view.originNodeId());
- assertTrue(view.queryId() != 0);
- assertEquals("cache2", view.cacheName());
- assertEquals(cacheId("cache2"), view.cacheId());
- assertEquals(cacheGroupId("cache2", null), view.cacheGroupId());
- assertEquals("cache2", view.cacheGroupName());
- assertTrue(view.startTime() <= System.currentTimeMillis());
- assertTrue(view.duration() >= 0);
- assertFalse(view.canceled());
- assertNull(view.filter());
- assertFalse(view.local());
- assertEquals(-1, view.partition());
- assertEquals(toStringSafe(client2.context().discovery().topologyVersionEx()), view.topology());
- assertNull(view.transformer());
- assertTrue(view.keepBinary());
- assertNull(view.subjectId());
- assertNull(view.taskName());
- assertEquals(20, view.pageSize());
- };
-
- boolean found1 = false;
- boolean found2 = false;
-
- for (ScanQueryView view : qrySysView) {
- if ("cache2".equals(view.cacheName())) {
- cache2checker.accept(view);
- found1 = true;
- }
- else {
- cache1checker.accept(view);
- found2 = true;
- }
- }
-
- assertTrue(found1 && found2);
- }
-
- /** */
- @Test
- public void testAtomicSequence() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
- IgniteAtomicSequence s1 = g0.atomicSequence("seq-1", 42, true);
- IgniteAtomicSequence s2 = g0.atomicSequence("seq-2",
- new AtomicConfiguration().setBackups(1).setGroupName("my-group"), 43, true);
-
- s1.batchSize(42);
-
- SystemView<AtomicSequenceView> seqs0 = g0.context().systemView().view(SEQUENCES_VIEW);
- SystemView<AtomicSequenceView> seqs1 = g1.context().systemView().view(SEQUENCES_VIEW);
-
- assertEquals(2, seqs0.size());
- assertEquals(0, seqs1.size());
-
- for (AtomicSequenceView s : seqs0) {
- if ("seq-1".equals(s.name())) {
- assertEquals(42, s.value());
- assertEquals(42, s.batchSize());
- assertEquals(DEFAULT_DS_GROUP_NAME, s.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), s.groupId());
-
- long val = s1.addAndGet(42);
-
- assertEquals(val, s.value());
- assertFalse(s.removed());
- }
- else {
- assertEquals("seq-2", s.name());
- assertEquals(DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE, s.batchSize());
- assertEquals(43, s.value());
- assertEquals("my-group", s.groupName());
- assertEquals(CU.cacheId("my-group"), s.groupId());
- assertFalse(s.removed());
-
- s2.close();
-
- assertTrue(waitForCondition(s::removed, getTestTimeout()));
- }
- }
-
- g1.atomicSequence("seq-1", 42, true);
-
- assertEquals(1, seqs1.size());
-
- AtomicSequenceView s = seqs1.iterator().next();
-
- assertEquals(DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE + 42, s.value());
- assertEquals(DFLT_ATOMIC_SEQUENCE_RESERVE_SIZE, s.batchSize());
- assertEquals(DEFAULT_DS_GROUP_NAME, s.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), s.groupId());
- assertFalse(s.removed());
-
- s1.close();
-
- assertTrue(waitForCondition(s::removed, getTestTimeout()));
-
- assertEquals(0, seqs0.size());
- assertEquals(0, seqs1.size());
- }
- }
-
- /** */
- @Test
- public void testAtomicLongs() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
- IgniteAtomicLong l1 = g0.atomicLong("long-1", 42, true);
- IgniteAtomicLong l2 = g0.atomicLong("long-2",
- new AtomicConfiguration().setBackups(1).setGroupName("my-group"), 43, true);
-
- SystemView<AtomicLongView> longs0 = g0.context().systemView().view(LONGS_VIEW);
- SystemView<AtomicLongView> longs1 = g1.context().systemView().view(LONGS_VIEW);
-
- assertEquals(2, longs0.size());
- assertEquals(0, longs1.size());
-
- for (AtomicLongView l : longs0) {
- if ("long-1".equals(l.name())) {
- assertEquals(42, l.value());
- assertEquals(DEFAULT_DS_GROUP_NAME, l.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), l.groupId());
-
- long val = l1.addAndGet(42);
-
- assertEquals(val, l.value());
- assertFalse(l.removed());
- }
- else {
- assertEquals("long-2", l.name());
- assertEquals(43, l.value());
- assertEquals("my-group", l.groupName());
- assertEquals(CU.cacheId("my-group"), l.groupId());
- assertFalse(l.removed());
-
- l2.close();
-
- assertTrue(waitForCondition(l::removed, getTestTimeout()));
- }
- }
-
- g1.atomicLong("long-1", 42, true);
-
- assertEquals(1, longs1.size());
-
- AtomicLongView l = longs1.iterator().next();
-
- assertEquals(84, l.value());
- assertEquals(DEFAULT_DS_GROUP_NAME, l.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), l.groupId());
- assertFalse(l.removed());
-
- l1.close();
-
- assertTrue(waitForCondition(l::removed, getTestTimeout()));
-
- assertEquals(0, longs0.size());
- assertEquals(0, longs1.size());
- }
- }
-
- /** */
- @Test
- public void testAtomicReference() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
- IgniteAtomicReference<String> l1 = g0.atomicReference("ref-1", "str1", true);
- IgniteAtomicReference<Integer> l2 = g0.atomicReference("ref-2",
- new AtomicConfiguration().setBackups(1).setGroupName("my-group"), 43, true);
-
- SystemView<AtomicReferenceView> refs0 = g0.context().systemView().view(REFERENCES_VIEW);
- SystemView<AtomicReferenceView> refs1 = g1.context().systemView().view(REFERENCES_VIEW);
-
- assertEquals(2, refs0.size());
- assertEquals(0, refs1.size());
-
- for (AtomicReferenceView r : refs0) {
- if ("ref-1".equals(r.name())) {
- assertEquals("str1", r.value());
- assertEquals(DEFAULT_DS_GROUP_NAME, r.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), r.groupId());
-
- l1.set("str2");
-
- assertEquals("str2", r.value());
- assertFalse(r.removed());
- }
- else {
- assertEquals("ref-2", r.name());
- assertEquals("43", r.value());
- assertEquals("my-group", r.groupName());
- assertEquals(CU.cacheId("my-group"), r.groupId());
- assertFalse(r.removed());
-
- l2.close();
-
- assertTrue(waitForCondition(r::removed, getTestTimeout()));
- }
- }
-
- g1.atomicReference("ref-1", "str3", true);
-
- assertEquals(1, refs1.size());
-
- AtomicReferenceView l = refs1.iterator().next();
-
- assertEquals("str2", l.value());
- assertEquals(DEFAULT_DS_GROUP_NAME, l.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), l.groupId());
- assertFalse(l.removed());
-
- l1.close();
-
- assertTrue(waitForCondition(l::removed, getTestTimeout()));
-
- assertEquals(0, refs0.size());
- assertEquals(0, refs1.size());
- }
- }
-
- /** */
- @Test
- public void testAtomicStamped() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
- IgniteAtomicStamped<String, Integer> s1 = g0.atomicStamped("s-1", "str0", 1, true);
- IgniteAtomicStamped<String, Integer> s2 = g0.atomicStamped("s-2",
- new AtomicConfiguration().setBackups(1).setGroupName("my-group"), "str1", 43, true);
-
- SystemView<AtomicStampedView> stamps0 = g0.context().systemView().view(STAMPED_VIEW);
- SystemView<AtomicStampedView> stamps1 = g1.context().systemView().view(STAMPED_VIEW);
-
- assertEquals(2, stamps0.size());
- assertEquals(0, stamps1.size());
-
- for (AtomicStampedView s : stamps0) {
- if ("s-1".equals(s.name())) {
- assertEquals("str0", s.value());
- assertEquals("1", s.stamp());
- assertEquals(DEFAULT_DS_GROUP_NAME, s.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), s.groupId());
-
- s1.set("str2", 2);
-
- assertEquals("str2", s.value());
- assertEquals("2", s.stamp());
- assertFalse(s.removed());
- }
- else {
- assertEquals("s-2", s.name());
- assertEquals("str1", s.value());
- assertEquals("43", s.stamp());
- assertEquals("my-group", s.groupName());
- assertEquals(CU.cacheId("my-group"), s.groupId());
- assertFalse(s.removed());
-
- s2.close();
-
- assertTrue(waitForCondition(s::removed, getTestTimeout()));
- }
- }
-
- g1.atomicStamped("s-1", "str3", 3, true);
-
- assertEquals(1, stamps1.size());
-
- AtomicStampedView l = stamps1.iterator().next();
-
- assertEquals("str2", l.value());
- assertEquals("2", l.stamp());
- assertEquals(DEFAULT_DS_GROUP_NAME, l.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), l.groupId());
- assertFalse(l.removed());
-
- s1.close();
-
- assertTrue(l.removed());
-
- assertEquals(0, stamps0.size());
- assertEquals(0, stamps1.size());
- }
- }
-
- /** */
- @Test
- public void testCountDownLatch() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
- IgniteCountDownLatch l1 = g0.countDownLatch("c1", 3, false, true);
- IgniteCountDownLatch l2 = g0.countDownLatch("c2", 1, true, true);
-
- SystemView<CountDownLatchView> latches0 = g0.context().systemView().view(LATCHES_VIEW);
- SystemView<CountDownLatchView> latches1 = g1.context().systemView().view(LATCHES_VIEW);
-
- assertEquals(2, latches0.size());
- assertEquals(0, latches1.size());
-
- String grpName = DEFAULT_VOLATILE_DS_GROUP_NAME + "@" + VOLATILE_DATA_REGION_NAME;
-
- for (CountDownLatchView l : latches0) {
- if ("c1".equals(l.name())) {
- assertEquals(3, l.count());
- assertEquals(3, l.initialCount());
- assertFalse(l.autoDelete());
-
- l1.countDown();
-
- assertEquals(2, l.count());
- assertEquals(3, l.initialCount());
- assertFalse(l.removed());
- }
- else {
- assertEquals("c2", l.name());
- assertEquals(1, l.count());
- assertEquals(1, l.initialCount());
- assertTrue(l.autoDelete());
- assertFalse(l.removed());
-
- l2.countDown();
- l2.close();
-
- assertTrue(waitForCondition(l::removed, getTestTimeout()));
- }
-
- assertEquals(grpName, l.groupName());
- assertEquals(CU.cacheId(grpName), l.groupId());
- }
-
- IgniteCountDownLatch l3 = g1.countDownLatch("c1", 10, true, true);
-
- assertEquals(1, latches1.size());
-
- CountDownLatchView l = latches1.iterator().next();
-
- assertEquals(2, l.count());
- assertEquals(3, l.initialCount());
- assertEquals(grpName, l.groupName());
- assertEquals(CU.cacheId(grpName), l.groupId());
- assertFalse(l.removed());
- assertFalse(l.autoDelete());
-
- l3.countDown();
- l3.countDown();
- l3.close();
-
- assertTrue(waitForCondition(l::removed, getTestTimeout()));
-
- assertEquals(0, latches0.size());
- assertEquals(0, latches1.size());
- }
- }
-
- /** */
- @Test
- public void testSemaphores() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
- IgniteSemaphore s1 = g0.semaphore("s1", 3, false, true);
- IgniteSemaphore s2 = g0.semaphore("s2", 1, true, true);
-
- SystemView<SemaphoreView> semaphores0 = g0.context().systemView().view(SEMAPHORES_VIEW);
- SystemView<SemaphoreView> semaphores1 = g1.context().systemView().view(SEMAPHORES_VIEW);
-
- assertEquals(2, semaphores0.size());
- assertEquals(0, semaphores1.size());
-
- String grpName = DEFAULT_VOLATILE_DS_GROUP_NAME + "@" + VOLATILE_DATA_REGION_NAME;
-
- IgniteInternalFuture<?> acquirePermitFut = null;
-
- for (SemaphoreView s : semaphores0) {
- if ("s1".equals(s.name())) {
- assertEquals(3, s.availablePermits());
- assertFalse(s.hasQueuedThreads());
- assertEquals(0, s.queueLength());
- assertFalse(s.failoverSafe());
- assertFalse(s.broken());
- assertFalse(s.removed());
-
- acquirePermitFut = runAsync(() -> {
- s1.acquire(2);
-
- try {
- Thread.sleep(getTestTimeout());
- }
- catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- finally {
- s1.release(2);
- }
- });
-
- assertTrue(waitForCondition(() -> s.availablePermits() == 1, getTestTimeout()));
- assertTrue(s.hasQueuedThreads());
- assertEquals(1, s.queueLength());
- }
- else {
- assertEquals(1, s.availablePermits());
- assertFalse(s.hasQueuedThreads());
- assertEquals(0, s.queueLength());
- assertTrue(s.failoverSafe());
- assertFalse(s.broken());
- assertFalse(s.removed());
-
- s2.close();
-
- assertTrue(waitForCondition(s::removed, getTestTimeout()));
- }
-
- assertEquals(grpName, s.groupName());
- assertEquals(CU.cacheId(grpName), s.groupId());
- }
-
- IgniteSemaphore l3 = g1.semaphore("s1", 10, true, true);
-
- assertEquals(1, semaphores1.size());
-
- SemaphoreView s = semaphores1.iterator().next();
-
- assertEquals(1, s.availablePermits());
- assertTrue(s.hasQueuedThreads());
- assertEquals(1, s.queueLength());
- assertFalse(s.failoverSafe());
- assertFalse(s.broken());
- assertFalse(s.removed());
-
- acquirePermitFut.cancel();
- assertTrue(waitForCondition(() -> s.availablePermits() == 3, getTestTimeout()));
-
- l3.close();
-
- assertTrue(waitForCondition(s::removed, getTestTimeout()));
-
- assertEquals(0, semaphores0.size());
- assertEquals(0, semaphores1.size());
- }
- }
-
- /** */
- @Test
- public void testLocks() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
- IgniteLock l1 = g0.reentrantLock("l1", false, true, true);
- IgniteLock l2 = g0.reentrantLock("l2", true, false, true);
-
- SystemView<ReentrantLockView> locks0 = g0.context().systemView().view(LOCKS_VIEW);
- SystemView<ReentrantLockView> locks1 = g1.context().systemView().view(LOCKS_VIEW);
-
- assertEquals(2, locks0.size());
- assertEquals(0, locks1.size());
-
- String grpName = DEFAULT_VOLATILE_DS_GROUP_NAME + "@" + VOLATILE_DATA_REGION_NAME;
-
- IgniteInternalFuture<?> lockFut = null;
-
- Runnable lockNSleep = () -> {
- l1.lock();
-
- try {
- Thread.sleep(getTestTimeout());
- }
- catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
- finally {
- l1.unlock();
- }
- };
-
- for (ReentrantLockView l : locks0) {
- if ("l1".equals(l.name())) {
- assertFalse(l.locked());
- assertFalse(l.hasQueuedThreads());
- assertFalse(l.failoverSafe());
- assertTrue(l.fair());
- assertFalse(l.broken());
- assertFalse(l.removed());
-
- lockFut = runAsync(lockNSleep);
-
- assertTrue(waitForCondition(l::locked, getTestTimeout()));
- }
- else {
- assertFalse(l.hasQueuedThreads());
- assertTrue(l.failoverSafe());
- assertFalse(l.fair());
- assertFalse(l.broken());
- assertFalse(l.removed());
-
- l2.close();
-
- assertTrue(waitForCondition(l::removed, getTestTimeout()));
- }
-
- assertEquals(grpName, l.groupName());
- assertEquals(CU.cacheId(grpName), l.groupId());
- }
-
- IgniteLock l3 = g1.reentrantLock("l1", true, false, true);
-
- assertEquals(1, locks1.size());
-
- ReentrantLockView s = locks1.iterator().next();
-
- assertTrue(s.locked());
- assertFalse(s.hasQueuedThreads());
- assertFalse(s.failoverSafe());
- assertTrue(s.fair());
- assertFalse(s.broken());
- assertFalse(s.removed());
-
- lockFut.cancel();
-
- assertTrue(waitForCondition(() -> !s.locked(), getTestTimeout()));
- assertFalse(s.hasQueuedThreads());
-
- l3.close();
-
- assertTrue(waitForCondition(s::removed, getTestTimeout()));
-
- assertEquals(0, locks0.size());
- assertEquals(0, locks1.size());
- }
- }
-
- /** */
- @Test
- public void testQueue() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
-
- IgniteQueue<String> q0 = g0.queue("queue-1", 42, new CollectionConfiguration()
- .setCollocated(true)
- .setBackups(1)
- .setGroupName("my-group"));
- IgniteQueue<?> q1 = g0.queue("queue-2", 0, new CollectionConfiguration());
-
- SystemView<QueueView> queues0 = g0.context().systemView().view(QUEUES_VIEW);
- SystemView<QueueView> queues1 = g1.context().systemView().view(QUEUES_VIEW);
-
- assertEquals(2, queues0.size());
- assertEquals(0, queues1.size());
-
- for (QueueView q : queues0) {
- if ("queue-1".equals(q.name())) {
- assertNotNull(q.id());
- assertEquals("queue-1", q.name());
- assertEquals(42, q.capacity());
- assertTrue(q.bounded());
- assertTrue(q.collocated());
- assertEquals("my-group", q.groupName());
- assertEquals(CU.cacheId("my-group"), q.groupId());
- assertFalse(q.removed());
- assertEquals(0, q.size());
-
- q0.add("first");
-
- assertEquals(1, q.size());
- }
- else {
- assertNotNull(q.id());
- assertEquals("queue-2", q.name());
- assertEquals(Integer.MAX_VALUE, q.capacity());
- assertFalse(q.bounded());
- assertFalse(q.collocated());
- assertEquals(DEFAULT_DS_GROUP_NAME, q.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), q.groupId());
- assertFalse(q.removed());
- assertEquals(0, q.size());
-
- q1.close();
-
- assertTrue(waitForCondition(q::removed, getTestTimeout()));
- }
- }
-
- IgniteQueue<?> q2 = g1.queue("queue-1", 42, new CollectionConfiguration()
- .setCollocated(true)
- .setBackups(1)
- .setGroupName("my-group"));
-
- assertEquals(1, queues1.size());
-
- QueueView q = queues1.iterator().next();
-
- assertNotNull(q.id());
- assertEquals("queue-1", q.name());
- assertEquals(42, q.capacity());
- assertTrue(q.bounded());
- assertTrue(q.collocated());
- assertEquals("my-group", q.groupName());
- assertEquals(CU.cacheId("my-group"), q.groupId());
- assertFalse(q.removed());
- assertEquals(1, q.size());
-
- q2.close();
-
- assertTrue(waitForCondition(q::removed, getTestTimeout()));
-
- assertEquals(0, queues0.size());
- assertEquals(0, queues1.size());
- }
- }
-
- /** */
- @Test
- public void testSet() throws Exception {
- try (IgniteEx g0 = startGrid(0);
- IgniteEx g1 = startGrid(1)) {
-
- IgniteSet<String> s0 = g0.set("set-1", new CollectionConfiguration()
- .setCollocated(true)
- .setBackups(1)
- .setGroupName("my-group"));
- IgniteSet<?> s1 = g0.set("set-2", new CollectionConfiguration());
-
- SystemView<SetView> sets0 = g0.context().systemView().view(SETS_VIEW);
- SystemView<SetView> sets1 = g1.context().systemView().view(SETS_VIEW);
-
- assertEquals(2, sets0.size());
- assertEquals(0, sets1.size());
-
- for (SetView q : sets0) {
- if ("set-1".equals(q.name())) {
- assertNotNull(q.id());
- assertEquals("set-1", q.name());
- assertTrue(q.collocated());
- assertEquals("my-group", q.groupName());
- assertEquals(CU.cacheId("my-group"), q.groupId());
- assertFalse(q.removed());
- assertEquals(0, q.size());
-
- s0.add("first");
-
- assertEquals(1, q.size());
- }
- else {
- assertNotNull(q.id());
- assertEquals("set-2", q.name());
- assertFalse(q.collocated());
- assertEquals(DEFAULT_DS_GROUP_NAME, q.groupName());
- assertEquals(CU.cacheId(DEFAULT_DS_GROUP_NAME), q.groupId());
- assertFalse(q.removed());
- assertEquals(0, q.size());
-
- s1.close();
-
- assertTrue(waitForCondition(q::removed, getTestTimeout()));
- }
- }
-
- IgniteSet<?> s2 = g1.set("set-1", new CollectionConfiguration()
- .setCollocated(true)
- .setBackups(1)
- .setGroupName("my-group"));
-
- assertEquals(1, sets1.size());
-
- SetView s = sets1.iterator().next();
-
- assertNotNull(s.id());
- assertEquals("set-1", s.name());
- assertTrue(s.collocated());
- assertEquals("my-group", s.groupName());
- assertEquals(CU.cacheId("my-group"), s.groupId());
- assertFalse(s.removed());
- assertEquals(1, s.size());
-
- s2.close();
-
- assertTrue(waitForCondition(s::removed, getTestTimeout()));
-
- assertEquals(0, sets0.size());
- assertEquals(0, sets1.size());
- }
- }
-
- /** */
- @Test
- public void testStripedExecutors() throws Exception {
- try (IgniteEx g = startGrid(0)) {
- checkStripeExecutorView(g.context().pools().getStripedExecutorService(),
- g.context().systemView().view(SYS_POOL_QUEUE_VIEW),
- "sys");
-
- checkStripeExecutorView(g.context().pools().getDataStreamerExecutorService(),
- g.context().systemView().view(STREAM_POOL_QUEUE_VIEW),
- "data-streamer");
- }
- }
-
- /**
- * Checks striped executor system view.
- *
- * @param execSvc Striped executor.
- * @param view System view.
- * @param poolName Executor name.
- */
- private void checkStripeExecutorView(IgniteStripedExecutor execSvc, SystemView<StripedExecutorTaskView> view,
- String poolName) throws Exception {
- CountDownLatch latch = new CountDownLatch(1);
-
- execSvc.execute(0, new TestRunnable(latch, 0));
- execSvc.execute(0, new TestRunnable(latch, 1));
- execSvc.execute(1, new TestRunnable(latch, 2));
- execSvc.execute(1, new TestRunnable(latch, 3));
-
- try {
- boolean res = waitForCondition(() -> view.size() == 2, 5_000);
-
- assertTrue(res);
-
- Iterator<StripedExecutorTaskView> iter = view.iterator();
-
- assertTrue(iter.hasNext());
-
- StripedExecutorTaskView row0 = iter.next();
-
- assertEquals(0, row0.stripeIndex());
- assertEquals(TestRunnable.class.getSimpleName() + '1', row0.description());
- assertEquals(poolName + "-stripe-0", row0.threadName());
- assertEquals(TestRunnable.class.getName(), row0.taskName());
-
- assertTrue(iter.hasNext());
-
- StripedExecutorTaskView row1 = iter.next();
-
- assertEquals(1, row1.stripeIndex());
- assertEquals(TestRunnable.class.getSimpleName() + '3', row1.description());
- assertEquals(poolName + "-stripe-1", row1.threadName());
- assertEquals(TestRunnable.class.getName(), row1.taskName());
- }
- finally {
- latch.countDown();
- }
- }
-
- /** */
- public static class TestPredicate implements IgniteBiPredicate<Integer, Integer> {
- /** {@inheritDoc} */
- @Override public boolean apply(Integer integer, Integer integer2) {
- return true;
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return TEST_PREDICATE;
- }
- }
-
- /** */
- public static class TestTransformer implements IgniteClosure<Cache.Entry<Integer, Integer>, Integer> {
- /** {@inheritDoc} */
- @Override public Integer apply(Cache.Entry<Integer, Integer> entry) {
- return entry.getKey();
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return TEST_TRANSFORMER;
- }
- }
-
- /** */
- @Test
- public void testPagesList() throws Exception {
- cleanPersistenceDir();
-
- try (IgniteEx ignite = startGrid(getConfiguration()
- .setDataStorageConfiguration(
- new DataStorageConfiguration().setDataRegionConfigurations(
- new DataRegionConfiguration().setName("dr0").setMaxSize(100L * 1024 * 1024),
- new DataRegionConfiguration().setName("dr1").setMaxSize(100L * 1024 * 1024)
- .setPersistenceEnabled(true)
- )))) {
- ignite.cluster().state(ClusterState.ACTIVE);
-
- GridCacheDatabaseSharedManager dbMgr = (GridCacheDatabaseSharedManager)ignite.context().cache().context()
- .database();
-
- int pageSize = dbMgr.pageSize();
-
- dbMgr.enableCheckpoints(false).get();
-
- for (int i = 0; i < 2; i++) {
- IgniteCache<Object, Object> cache = ignite.getOrCreateCache(new CacheConfiguration<>("cache" + i)
- .setDataRegionName("dr" + i).setAffinity(new RendezvousAffinityFunction().setPartitions(2)));
-
- int key = 0;
-
- // Fill up different free-list buckets.
- for (int j = 0; j < pageSize / 2; j++)
- cache.put(key++, new byte[j + 1]);
-
- // Put some pages to one bucket to overflow pages cache.
- for (int j = 0; j < 1000; j++)
- cache.put(key++, new byte[pageSize / 2]);
- }
-
- long dr0flPages = 0;
- int dr0flStripes = 0;
-
- SystemView<PagesListView> dataRegionPageLists = ignite.context().systemView().view(DATA_REGION_PAGE_LIST_VIEW);
-
- for (PagesListView pagesListView : dataRegionPageLists) {
- if (pagesListView.name().startsWith("dr0")) {
- dr0flPages += pagesListView.bucketSize();
- dr0flStripes += pagesListView.stripesCount();
- }
- }
-
- assertTrue(dr0flPages > 0);
- assertTrue(dr0flStripes > 0);
-
- int bucketsCnt = ((PagesList)ignite.context().cache().context().database().freeList("dr0")).bucketsCount();
- int[] bucketPagesSize = new int[bucketsCnt];
-
- for (PagesListView pagesListView : dataRegionPageLists) {
- int bucket = pagesListView.bucketNumber();
-
- if (bucketPagesSize[bucket] == 0) {
- assertTrue(bucket == 0 || pagesListView.pageFreeSpace() != 0);
- bucketPagesSize[bucket] = pagesListView.pageFreeSpace();
- }
- else
- assertEquals(bucketPagesSize[bucket], pagesListView.pageFreeSpace());
- }
-
- int prev = 0;
-
- for (int size : bucketPagesSize) {
- if (size > 0) {
- assertTrue(size > prev);
- prev = size;
- }
- }
-
- SystemView<CachePagesListView> cacheGrpPageLists = ignite.context().systemView().view(CACHE_GRP_PAGE_LIST_VIEW);
-
- long dr1flPages = 0;
- int dr1flStripes = 0;
- int dr1flCached = 0;
-
- for (CachePagesListView pagesListView : cacheGrpPageLists) {
- if (pagesListView.cacheGroupId() == cacheId("cache1")) {
- dr1flPages += pagesListView.bucketSize();
- dr1flStripes += pagesListView.stripesCount();
- dr1flCached += pagesListView.cachedPagesCount();
- }
- }
-
- assertTrue(dr1flPages > 0);
- assertTrue(dr1flStripes > 0);
- assertTrue(dr1flCached > 0);
-
- // Test filtering.
- assertTrue(cacheGrpPageLists instanceof FiltrableSystemView);
-
- Iterator<CachePagesListView> iter = ((FiltrableSystemView<CachePagesListView>)cacheGrpPageLists).iterator(Map.of(
- CachePagesListViewWalker.CACHE_GROUP_ID_FILTER, cacheId("cache1"),
- CachePagesListViewWalker.PARTITION_ID_FILTER, 0,
- CachePagesListViewWalker.BUCKET_NUMBER_FILTER, 0
- ));
-
- assertEquals(1, F.size(iter));
-
- iter = ((FiltrableSystemView<CachePagesListView>)cacheGrpPageLists).iterator(Map.of(
- CachePagesListViewWalker.CACHE_GROUP_ID_FILTER, cacheId("cache1"),
- CachePagesListViewWalker.BUCKET_NUMBER_FILTER, 0
- ));
-
- assertEquals(2, F.size(iter));
- }
- }
-
- /** */
- @Test
- public void testBinaryMeta() throws Exception {
- try (IgniteEx g = startGrid(0)) {
- IgniteCache<Integer, TestObjectAllTypes> c1 = g.createCache("test-cache");
- IgniteCache<Integer, TestObjectEnum> c2 = g.createCache("test-enum-cache");
-
- c1.put(1, new TestObjectAllTypes());
- c2.put(1, TestObjectEnum.A);
-
- SystemView<BinaryMetadataView> view = g.context().systemView().view(BINARY_METADATA_VIEW);
-
- assertNotNull(view);
- assertEquals(2, view.size());
-
- for (BinaryMetadataView meta : view) {
- if (TestObjectEnum.class.getName().contains(meta.typeName())) {
- assertTrue(meta.isEnum());
-
- assertEquals(0, meta.fieldsCount());
- }
- else {
- assertFalse(meta.isEnum());
-
- Field[] fields = TestObjectAllTypes.class.getDeclaredFields();
-
- assertEquals(fields.length, meta.fieldsCount());
-
- for (Field field : fields)
- assertTrue(meta.fields().contains(field.getName()));
- }
- }
- }
- }
-
- /** */
- @Test
- public void testMetastorage() throws Exception {
- cleanPersistenceDir();
-
- try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(
- new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration().setPersistenceEnabled(true)
- )))) {
- ignite.cluster().state(ClusterState.ACTIVE);
-
- IgniteCacheDatabaseSharedManager db = ignite.context().cache().context().database();
-
- SystemView<MetastorageView> metaStoreView = ignite.context().systemView().view(METASTORE_VIEW);
-
- assertNotNull(metaStoreView);
-
- String name = "test-key";
- String val = "test-value";
- String unmarshalledName = "unmarshalled-key";
- String unmarshalledVal = "[Raw data. 0 bytes]";
-
- db.checkpointReadLock();
-
- try {
- db.metaStorage().write(name, val);
- db.metaStorage().writeRaw(unmarshalledName, new byte[0]);
- }
- finally {
- db.checkpointReadUnlock();
- }
-
- assertNotNull(F.find(metaStoreView, null,
- (IgnitePredicate<? super MetastorageView>)view ->
- name.equals(view.name()) && val.equals(view.value())));
-
- assertNotNull(F.find(metaStoreView, null,
- (IgnitePredicate<? super MetastorageView>)view ->
- unmarshalledName.equals(view.name()) && unmarshalledVal.equals(view.value())));
-
- // Test filtering.
- assertTrue(metaStoreView instanceof FiltrableSystemView);
-
- Iterator<MetastorageView> iter = ((FiltrableSystemView<MetastorageView>)metaStoreView)
- .iterator(F.asMap(MetastorageViewWalker.NAME_FILTER, name));
-
- assertTrue(iter.hasNext());
-
- MetastorageView row = iter.next();
-
- assertTrue(name.equals(row.name()) && val.equals(row.value()));
- assertFalse(iter.hasNext());
- }
- }
-
- /** */
- @Test
- public void testDistributedMetastorage() throws Exception {
- cleanPersistenceDir();
-
- try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(
- new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration().setPersistenceEnabled(true)
- )))) {
- ignite.cluster().state(ClusterState.ACTIVE);
-
- String histogramName = "CheckpointBeforeLockHistogram";
-
- ignite.context().metric().configureHistogram(metricName(DATASTORAGE_METRIC_PREFIX, histogramName), new long[] { 1, 2, 3});
-
- DistributedMetaStorage dms = ignite.context().distributedMetastorage();
-
- String name = "test-distributed-key";
- String val = "test-distributed-value";
-
- dms.write(name, val);
-
- SystemView<MetastorageView> dmsView = ignite.context().systemView().view(DISTRIBUTED_METASTORE_VIEW);
-
- assertNotNull(F.find(
- dmsView,
- null,
- (IgnitePredicate<? super MetastorageView>)view -> name.equals(view.name()) && val.equals(view.value()))
- );
-
- assertNotNull(F.find(
- dmsView,
- null,
- (IgnitePredicate<? super MetastorageView>)
- view -> view.name().endsWith(histogramName) && "[1, 2, 3]".equals(view.value()))
- );
-
- // Test filtering.
- assertTrue(dmsView instanceof FiltrableSystemView);
-
- Iterator<MetastorageView> iter = ((FiltrableSystemView<MetastorageView>)dmsView)
- .iterator(F.asMap(MetastorageViewWalker.NAME_FILTER, name));
-
- assertTrue(iter.hasNext());
-
- MetastorageView row = iter.next();
-
- assertTrue(name.equals(row.name()) && val.equals(row.value()));
- assertFalse(iter.hasNext());
- }
- }
-
- /** */
- @Test
- public void testBaselineNodes() throws Exception {
- cleanPersistenceDir();
-
- try (
- IgniteEx ignite0 = startGrid(getConfiguration(getTestIgniteInstanceName(0))
- .setDataStorageConfiguration(new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration().setPersistenceEnabled(true)))
- .setConsistentId("consId0"));
- IgniteEx ignite1 = startGrid(getConfiguration(getTestIgniteInstanceName(1))
- .setDataStorageConfiguration(new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration().setPersistenceEnabled(true)))
- .setConsistentId("consId1"));
- ) {
- ignite0.cluster().state(ClusterState.ACTIVE);
-
- ignite1.close();
-
- awaitPartitionMapExchange();
-
- SystemView<BaselineNodeView> view = ignite0.context().systemView().view(BASELINE_NODES_SYS_VIEW);
-
- assertEquals(2, view.size());
- assertEquals(1, F.size(view.iterator(), row -> "consId0".equals(row.consistentId()) && row.online()));
- assertEquals(1, F.size(view.iterator(), row -> "consId1".equals(row.consistentId()) && !row.online()));
- }
- }
-
- /** */
- @Test
- public void testBaselineNodeAttributes() throws Exception {
- cleanPersistenceDir();
-
- try (IgniteEx ignite = startGrid(getConfiguration()
- .setDataStorageConfiguration(
- new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration().setName("pds").setPersistenceEnabled(true)
- ))
- .setUserAttributes(F.asMap("name", "val"))
- .setConsistentId("consId"))
- ) {
- ignite.cluster().state(ClusterState.ACTIVE);
-
- SystemView<BaselineNodeAttributeView> view = ignite.context().systemView()
- .view(BASELINE_NODE_ATTRIBUTES_SYS_VIEW);
-
- assertEquals(ignite.cluster().localNode().attributes().size(), view.size());
-
- assertEquals(1, F.size(view.iterator(), row -> "consId".equals(row.nodeConsistentId()) &&
- "name".equals(row.name()) && "val".equals(row.value())));
-
- // Test filtering.
- assertTrue(view instanceof FiltrableSystemView);
-
- Iterator<BaselineNodeAttributeView> iter = ((FiltrableSystemView<BaselineNodeAttributeView>)view)
- .iterator(F.asMap(BaselineNodeAttributeViewWalker.NODE_CONSISTENT_ID_FILTER, "consId",
- BaselineNodeAttributeViewWalker.NAME_FILTER, "name"));
-
- assertEquals(1, F.size(iter));
-
- iter = ((FiltrableSystemView<BaselineNodeAttributeView>)view).iterator(
- F.asMap(BaselineNodeAttributeViewWalker.NODE_CONSISTENT_ID_FILTER, "consId"));
-
- assertEquals(1, F.size(iter, row -> "name".equals(row.name())));
-
- iter = ((FiltrableSystemView<BaselineNodeAttributeView>)view).iterator(
- F.asMap(BaselineNodeAttributeViewWalker.NAME_FILTER, "name"));
-
- assertEquals(1, F.size(iter));
- }
- }
-
- /** */
- @Test
- public void testSnapshot() throws Exception {
- cleanPersistenceDir();
-
- String dfltCacheGrp = "testGroup";
-
- String testSnap0 = "testSnap0";
- String testSnap1 = "testSnap1";
-
- try (IgniteEx ignite = startGrid(getConfiguration()
- .setCacheConfiguration(new CacheConfiguration<>(DEFAULT_CACHE_NAME).setGroupName(dfltCacheGrp))
- .setDataStorageConfiguration(
- new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration().setName("pds").setPersistenceEnabled(true)
- ).setWalCompactionEnabled(true)))
- ) {
- ignite.cluster().state(ClusterState.ACTIVE);
-
- ignite.cache(DEFAULT_CACHE_NAME).put(1, 1);
-
- ignite.snapshot().createSnapshot(testSnap0).get();
- ignite.snapshot().createSnapshot(testSnap1).get(getTestTimeout());
- ignite.snapshot().createIncrementalSnapshot(testSnap1).get(getTestTimeout());
- ignite.snapshot().createIncrementalSnapshot(testSnap1).get(getTestTimeout());
-
- SystemView<SnapshotView> views = ignite.context().systemView().view(SNAPSHOT_SYS_VIEW);
-
- List<T2<String, Integer>> exp = Lists.newArrayList(
- new T2<>(testSnap0, null),
- new T2<>(testSnap1, null),
- new T2<>(testSnap1, 1),
- new T2<>(testSnap1, 2));
-
- assertEquals(4, views.size());
-
- for (SnapshotView v: views) {
- assertTrue(exp.remove(new T2<>(v.name(), v.incrementIndex())));
-
- assertEquals(ignite.localNode().consistentId().toString(), v.consistentId());
- assertNotNull(v.snapshotRecordSegment());
- assertTrue("snapshotTime should be non-zero value",
- v.snapshotTime() > 0);
-
- Integer incIdx = v.incrementIndex();
-
- if (incIdx == null) {
- assertEquals(ignite.localNode().consistentId().toString(), v.baselineNodes());
- assertEquals(String.join(",", dfltCacheGrp, METASTORAGE_CACHE_NAME), v.cacheGroups());
- assertEquals("FULL", v.type());
- }
- else
- assertEquals("INCREMENTAL", v.type());
- }
-
- assertTrue(exp.isEmpty());
- }
- }
-
- /** */
- @Test
- public void testPagesTimestampHistogram() throws Exception {
- int keysCnt = 50_000;
-
- AtomicLong curTime = new AtomicLong(System.currentTimeMillis());
-
- GridTestClockTimer.timeSupplier(curTime::get);
- GridTestClockTimer.update();
-
- String regionName = "default";
-
- DataStorageConfiguration dsCfg = new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration()
- .setMaxSize(50L * 1024 * 1024)
- .setPersistenceEnabled(true)
- .setName(regionName)
- .setMetricsEnabled(true)
- );
-
- cleanPersistenceDir();
-
- try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(dsCfg))) {
- ignite.cluster().state(ClusterState.ACTIVE);
-
- CacheConfiguration<Object, Object> ccfg1 = new CacheConfiguration<>("test-pages-ts1")
- .setAffinity(new RendezvousAffinityFunction(false, 10));
-
- CacheConfiguration<Object, Object> ccfg2 = new CacheConfiguration<>("test-pages-ts2")
- .setAffinity(new RendezvousAffinityFunction(false, 10));
-
- IgniteCache<Object, Object> cache1 = ignite.createCache(ccfg1);
-
- long ts1 = curTime.get();
-
- for (int i = 0; i < 1000; i++)
- cache1.put(i, i);
-
- long ts2 = curTime.addAndGet(PeriodicHistogramMetricImpl.DFLT_BUCKETS_INTERVAL);
- GridTestClockTimer.update();
-
- for (int i = 1000; i < 2000; i++)
- cache1.put(i, i);
-
- SystemView<PagesTimestampHistogramView> pagesTsHistogram =
- ignite.context().systemView().view(PAGE_TS_HISTOGRAM_VIEW);
-
- assertNotNull(pagesTsHistogram);
-
- long totalCnt = 0;
-
- for (PagesTimestampHistogramView view : pagesTsHistogram) {
- if (regionName.equals(view.dataRegionName())) {
- if ((ts1 >= view.intervalStart().getTime() && ts1 <= view.intervalEnd().getTime()) ||
- (ts2 >= view.intervalStart().getTime() && ts2 <= view.intervalEnd().getTime())) {
- assertTrue("Unexpected pages count: " + view.pagesCount(), view.pagesCount() > 0);
-
- totalCnt += view.pagesCount();
- }
- else
- assertEquals(0, view.pagesCount());
- }
- }
-
- assertTrue(totalCnt > 0);
- assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(), totalCnt);
-
- assertEquals(2, F.size(F.iterator(pagesTsHistogram, v -> v, true, v -> v.pagesCount() > 0)));
-
- // Check histogram after replacement.
- long ts3 = curTime.addAndGet(PeriodicHistogramMetricImpl.DFLT_BUCKETS_INTERVAL);
- GridTestClockTimer.update();
-
- ignite.createCache(ccfg2);
-
- try (IgniteDataStreamer<Integer, Object> streamer = ignite.dataStreamer("test-pages-ts2")) {
- for (int i = 0; i < keysCnt; i++)
- streamer.addData(i, new byte[1000]);
- }
-
- assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
- F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
-
- assertFalse(F.isEmpty(F.iterator(pagesTsHistogram, v -> v, true, v -> v.pagesCount() > 0 &&
- v.intervalStart().getTime() <= ts3 && ts3 <= v.intervalEnd().getTime())));
-
- // Check histogram after cache destroy and remove of outdated pages.
- long ts4 = curTime.addAndGet(PeriodicHistogramMetricImpl.DFLT_BUCKETS_INTERVAL);
- GridTestClockTimer.update();
-
- ignite.destroyCache("test-pages-ts2");
-
- IgniteCache<Object, Object> cache2 = ignite.createCache(ccfg2);
-
- for (int i = 0; i < keysCnt; i++) {
- cache1.put(i, i);
- cache2.put(i, new byte[1000]);
- }
-
- assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
- F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
-
- assertFalse(F.isEmpty(F.iterator(pagesTsHistogram, v -> v, true, v -> v.pagesCount() > 0 &&
- v.intervalStart().getTime() <= ts4 && ts4 <= v.intervalEnd().getTime())));
- }
- finally {
- GridTestClockTimer.timeSupplier(GridTestClockTimer.DFLT_TIME_SUPPLIER);
- }
- }
-
- /** */
- @Test
- public void testPagesTimestampHistogramAfterPartitionEviction() throws Exception {
- int keysCnt = 50_000;
-
- String regionName = "default";
-
- DataStorageConfiguration dsCfg = new DataStorageConfiguration().setDefaultDataRegionConfiguration(
- new DataRegionConfiguration()
- .setMaxSize(50L * 1024 * 1024)
- .setPersistenceEnabled(true)
- .setName(regionName)
- .setMetricsEnabled(true)
- );
-
- cleanPersistenceDir();
-
- try (IgniteEx ignite = startGrid(getConfiguration().setDataStorageConfiguration(dsCfg))) {
- ignite.cluster().state(ClusterState.ACTIVE);
-
- IgniteCache<Object, Object> cache = ignite.createCache(new CacheConfiguration<>("test-pages-ts")
- .setBackups(1).setAffinity(new RendezvousAffinityFunction(false, 10)));
-
- try (IgniteDataStreamer<Integer, Object> streamer = ignite.dataStreamer("test-pages-ts")) {
- for (int i = 0; i < keysCnt; i++)
- streamer.addData(i, new byte[1000]);
- }
-
- startGrid(getConfiguration(getTestIgniteInstanceName(1)).setDataStorageConfiguration(dsCfg));
- startGrid(getConfiguration(getTestIgniteInstanceName(2)).setDataStorageConfiguration(dsCfg));
-
- resetBaselineTopology();
-
- awaitPartitionMapExchange(true, true, null);
-
- // Force checkpoint to invalidate evicted partitions.
- forceCheckpoint(ignite);
-
- // Check histogram after partition eviction.
- SystemView<PagesTimestampHistogramView> pagesTsHistogram =
- ignite.context().systemView().view(PAGE_TS_HISTOGRAM_VIEW);
-
- assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
- F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
-
- stopGrid(2);
-
- resetBaselineTopology();
-
- // Wait until rebalance complete.
- assertTrue(GridTestUtils.waitForCondition(() -> ignite.context().discovery().topologyVersionEx()
- .minorTopologyVersion() >= 2, 5_000L));
-
- // Check histogram after rebalance.
- assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
- F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
-
- stopGrid(1);
-
- resetBaselineTopology();
-
- // Allocate some pages after eviction.
- for (int i = 0; i < 10_000; i++)
- cache.put(i + keysCnt, new byte[1024]);
-
- // Acquire some outdated pages.
- for (int i = 0; i < keysCnt + 10_000; i++)
- assertNotNull(cache.get(i));
-
- // Check histogram after replacement of outdated pages.
- assertEquals(ignite.dataRegionMetrics(regionName).getPhysicalMemoryPages(),
- F.sumInt(F.iterator(pagesTsHistogram, v -> (int)v.pagesCount(), true)));
- }
- finally {
- stopAllGrids();
- }
- }
-
- /** */
- @Test
- public void testConfigurationView() throws Exception {
- long expMaxSize = 10 * MB;
-
- String expName = "my-instance";
-
- String expDrName = "my-dr";
-
- IgniteConfiguration icfg = getConfiguration(expName)
- .setIncludeEventTypes(EVT_CONSISTENCY_VIOLATION)
- .setDataStorageConfiguration(new DataStorageConfiguration()
- .setDefaultDataRegionConfiguration(
- new DataRegionConfiguration()
- .setLazyMemoryAllocation(false))
- .setDataRegionConfigurations(
- new DataRegionConfiguration()
- .setName(expDrName)
- .setMaxSize(expMaxSize)));
-
- try (IgniteEx ignite = startGrid(icfg)) {
- Map<String, String> viewContent = new HashMap<>();
-
- ignite.context().systemView().<ConfigurationView>view(CFG_VIEW)
- .forEach(view -> viewContent.put(view.name(), view.value()));
-
- assertEquals(expName, viewContent.get("IgniteInstanceName"));
- assertEquals(
- "false",
- viewContent.get("DataStorageConfiguration.DefaultDataRegionConfiguration.LazyMemoryAllocation")
- );
- assertEquals(expDrName, viewContent.get("DataStorageConfiguration.DataRegionConfigurations[0].Name"));
- assertEquals(
- Long.toString(expMaxSize),
- viewContent.get("DataStorageConfiguration.DataRegionConfigurations[0].MaxSize")
- );
- assertEquals(
- CacheAtomicityMode.TRANSACTIONAL.name(),
- viewContent.get("CacheConfiguration[0].AtomicityMode")
- );
- assertTrue(viewContent.containsKey("AddressResolver"));
- assertNull(viewContent.get("AddressResolver"));
- assertEquals("[" + EVT_CONSISTENCY_VIOLATION + ']', viewContent.get("IncludeEventTypes"));
- }
- }
-
- /** */
- @Test
- public void testPluginView() throws Exception {
- try (IgniteEx n = startGrid(getConfiguration().setPluginProviders(new TestPluginProvider()))) {
- SystemView<PluginView> view = n.context().systemView().view(PLUGINS_SYS_VIEW);
-
- PluginView testPluginView = StreamSupport.stream(view.spliterator(), false)
- .filter(v -> "FOR_SYS_VIEW_PLUGIN_NAME".equals(v.name()))
- .findFirst()
- .orElseThrow(() -> new AssertionError("Plugin not found"));
-
- assertEquals("FOR_SYS_VIEW_PLUGIN_NAME", testPluginView.name());
- assertEquals("FOR_SYS_VIEW_PLUGIN_INFO", testPluginView.info());
- assertEquals("42", testPluginView.version());
- assertEquals(TestPluginProvider.TestPlugin.class.getName(), testPluginView.className());
- }
- }
-
- /** Test node filter. */
- public static class TestNodeFilter implements IgnitePredicate<ClusterNode> {
- /** {@inheritDoc} */
- @Override public boolean apply(ClusterNode node) {
- return true;
- }
- }
-
- /** Test runnable. */
- public static class TestRunnable implements Runnable {
- /** */
- private final CountDownLatch latch;
-
- /** */
- private final int idx;
-
- /** */
- public TestRunnable(CountDownLatch latch, int idx) {
- this.latch = latch;
- this.idx = idx;
- }
-
- /** {@inheritDoc} */
- @Override public void run() {
- try {
- latch.await(5, TimeUnit.SECONDS);
- }
- catch (InterruptedException e) {
- throw new IgniteException(e);
- }
- }
-
- /** {@inheritDoc} */
- @Override public String toString() {
- return getClass().getSimpleName() + idx;
- }
- }
-
- /** */
- private static class UserTask implements ComputeTask<Object, Object> {
- /** {@inheritDoc} */
- @Override public @NotNull Map<? extends ComputeJob, ClusterNode> map(
- List<ClusterNode> subgrid,
- @Nullable Object arg
- ) throws IgniteException {
- return subgrid.stream().collect(Collectors.toMap(k -> new UserJob(), Function.identity()));
- }
-
- /** {@inheritDoc} */
- @Override public ComputeJobResultPolicy result(ComputeJobResult res, List<ComputeJobResult> rcvd) throws IgniteException {
- return ComputeJobResultPolicy.WAIT;
- }
-
- /** {@inheritDoc} */
- @Nullable @Override public Object reduce(List<ComputeJobResult> results) throws IgniteException {
- return 1;
- }
-
- /** */
- private static class UserJob implements ComputeJob {
- /** {@inheritDoc} */
- @Override public void cancel() {
- // No-op.
- }
-
- /** {@inheritDoc} */
- @Override public Object execute() throws IgniteException {
- jobStartedLatch.countDown();
-
- try {
- assertTrue(releaseJobLatch.await(30_000, TimeUnit.MILLISECONDS));
- }
- catch (InterruptedException e) {
- throw new RuntimeException(e);
- }
-
- return 1;
- }
- }
- }
-
- /** */
- @GridInternal
- public static class InternalTask extends UserTask {
- // No-op.
- }
-
- /** */
- private static class TestPluginProvider extends AbstractTestPluginProvider {
- /** {@inheritDoc} */
- @Override public String name() {
- return "FOR_SYS_VIEW_PLUGIN_NAME";
- }
-
- /** {@inheritDoc} */
- @Override public String version() {
- return "42";
- }
-
- /** {@inheritDoc} */
- @Override public String info() {
- return "FOR_SYS_VIEW_PLUGIN_INFO";
- }
-
- /** {@inheritDoc} */
- @Override public <T extends IgnitePlugin> T plugin() {
- return (T)new TestPlugin();
- }
-
- /** */
- private static class TestPlugin implements IgnitePlugin {
- }
- }
-}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewServiceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewServiceTest.java
new file mode 100644
index 0000000..d9a32a6
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewServiceTest.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.processors.service.DummyService;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.lang.IgnitePredicate;
+import org.apache.ignite.services.ServiceConfiguration;
+import org.apache.ignite.spi.systemview.view.ServiceView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.service.IgniteServiceProcessor.SVCS_VIEW;
+
+/** Tests for {@link SystemView} for services. */
+public class SystemViewServiceTest extends SystemViewAbstractTest {
+ /** Tests work of {@link SystemView} for services. */
+ @Test
+ public void testServices() throws Exception {
+ try (IgniteEx g = startGrid()) {
+ {
+ ServiceConfiguration srvcCfg = new ServiceConfiguration();
+
+ srvcCfg.setName("service");
+ srvcCfg.setMaxPerNodeCount(1);
+ srvcCfg.setService(new DummyService());
+ srvcCfg.setNodeFilter(new TestNodeFilter());
+
+ g.services().deploy(srvcCfg);
+
+ SystemView<ServiceView> srvs = g.context().systemView().view(SVCS_VIEW);
+
+ assertEquals(g.context().service().serviceDescriptors().size(), F.size(srvs.iterator()));
+
+ ServiceView sview = srvs.iterator().next();
+
+ assertEquals(srvcCfg.getName(), sview.name());
+ assertNotNull(sview.serviceId());
+ assertEquals(DummyService.class, sview.serviceClass());
+ assertEquals(srvcCfg.getMaxPerNodeCount(), sview.maxPerNodeCount());
+ assertNull(sview.cacheName());
+ assertNull(sview.affinityKey());
+ assertEquals(TestNodeFilter.class, sview.nodeFilter());
+ assertFalse(sview.staticallyConfigured());
+ assertEquals(g.localNode().id(), sview.originNodeId());
+ assertEquals(F.asMap(g.localNode().id(), 1), sview.topologySnapshot());
+ }
+
+ {
+ g.createCache("test-cache");
+
+ ServiceConfiguration srvcCfg = new ServiceConfiguration();
+
+ srvcCfg.setName("service-2");
+ srvcCfg.setMaxPerNodeCount(2);
+ srvcCfg.setService(new DummyService());
+ srvcCfg.setNodeFilter(new TestNodeFilter());
+ srvcCfg.setCacheName("test-cache");
+ srvcCfg.setAffinityKey(1L);
+
+ g.services().deploy(srvcCfg);
+
+ final ServiceView[] sview = {null};
+
+ g.context().systemView().<ServiceView>view(SVCS_VIEW).forEach(sv -> {
+ if (sv.name().equals(srvcCfg.getName()))
+ sview[0] = sv;
+ });
+
+ assertEquals(srvcCfg.getName(), sview[0].name());
+ assertNotNull(sview[0].serviceId());
+ assertEquals(DummyService.class, sview[0].serviceClass());
+ assertEquals(srvcCfg.getMaxPerNodeCount(), sview[0].maxPerNodeCount());
+ assertEquals("test-cache", sview[0].cacheName());
+ assertEquals("1", sview[0].affinityKey());
+ assertEquals(TestNodeFilter.class, sview[0].nodeFilter());
+ assertFalse(sview[0].staticallyConfigured());
+ assertEquals(g.localNode().id(), sview[0].originNodeId());
+ assertEquals(F.asMap(g.localNode().id(), 2), sview[0].topologySnapshot());
+ }
+ }
+ }
+
+ /** Test node filter. */
+ public static class TestNodeFilter implements IgnitePredicate<ClusterNode> {
+ /** {@inheritDoc} */
+ @Override public boolean apply(ClusterNode node) {
+ return true;
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSnapshotsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSnapshotsTest.java
new file mode 100644
index 0000000..e6fcf81
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSnapshotsTest.java
@@ -0,0 +1,95 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.List;
+import com.google.common.collect.Lists;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.T2;
+import org.apache.ignite.spi.systemview.view.SnapshotView;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.cache.persistence.metastorage.MetaStorage.METASTORAGE_CACHE_NAME;
+import static org.apache.ignite.spi.systemview.view.SnapshotView.SNAPSHOT_SYS_VIEW;
+
+/** Tests for {@link SystemView} for snapshots. */
+public class SystemViewSnapshotsTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testSnapshot() throws Exception {
+ cleanPersistenceDir();
+
+ String dfltCacheGrp = "testGroup";
+
+ String testSnap0 = "testSnap0";
+ String testSnap1 = "testSnap1";
+
+ try (IgniteEx ignite = startGrid(getConfiguration()
+ .setCacheConfiguration(new CacheConfiguration<>(DEFAULT_CACHE_NAME).setGroupName(dfltCacheGrp))
+ .setDataStorageConfiguration(
+ new DataStorageConfiguration().setDefaultDataRegionConfiguration(
+ new DataRegionConfiguration().setName("pds").setPersistenceEnabled(true)
+ ).setWalCompactionEnabled(true)))
+ ) {
+ ignite.cluster().state(ClusterState.ACTIVE);
+
+ ignite.cache(DEFAULT_CACHE_NAME).put(1, 1);
+
+ ignite.snapshot().createSnapshot(testSnap0).get();
+ ignite.snapshot().createSnapshot(testSnap1).get(getTestTimeout());
+ ignite.snapshot().createIncrementalSnapshot(testSnap1).get(getTestTimeout());
+ ignite.snapshot().createIncrementalSnapshot(testSnap1).get(getTestTimeout());
+
+ SystemView<SnapshotView> views = ignite.context().systemView().view(SNAPSHOT_SYS_VIEW);
+
+ List<T2<String, Integer>> exp = Lists.newArrayList(
+ new T2<>(testSnap0, null),
+ new T2<>(testSnap1, null),
+ new T2<>(testSnap1, 1),
+ new T2<>(testSnap1, 2));
+
+ assertEquals(4, views.size());
+
+ for (SnapshotView v: views) {
+ assertTrue(exp.remove(new T2<>(v.name(), v.incrementIndex())));
+
+ assertEquals(ignite.localNode().consistentId().toString(), v.consistentId());
+ assertNotNull(v.snapshotRecordSegment());
+ assertTrue("snapshotTime should be non-zero value",
+ v.snapshotTime() > 0);
+
+ Integer incIdx = v.incrementIndex();
+
+ if (incIdx == null) {
+ assertEquals(ignite.localNode().consistentId().toString(), v.baselineNodes());
+ assertEquals(String.join(",", dfltCacheGrp, METASTORAGE_CACHE_NAME), v.cacheGroups());
+ assertEquals("FULL", v.type());
+ }
+ else
+ assertEquals("INCREMENTAL", v.type());
+ }
+
+ assertTrue(exp.isEmpty());
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewTransactionsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewTransactionsTest.java
new file mode 100644
index 0000000..1d07df0
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewTransactionsTest.java
@@ -0,0 +1,155 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.metric;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.spi.systemview.view.SystemView;
+import org.apache.ignite.spi.systemview.view.TransactionView;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.transactions.Transaction;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.processors.cache.GridCacheUtils.cacheId;
+import static org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager.TXS_MON_LIST;
+import static org.apache.ignite.internal.util.lang.GridFunc.alwaysTrue;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
+import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
+import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
+import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
+import static org.apache.ignite.transactions.TransactionIsolation.SERIALIZABLE;
+import static org.apache.ignite.transactions.TransactionState.ACTIVE;
+
+/** Tests for {@link SystemView} for transactions. */
+public class SystemViewTransactionsTest extends SystemViewAbstractTest {
+ /** */
+ @Test
+ public void testTransactions() throws Exception {
+ try (IgniteEx g = startGrid(0)) {
+ IgniteCache<Integer, Integer> cache1 = g.createCache(new CacheConfiguration<Integer, Integer>("c1")
+ .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
+
+ IgniteCache<Integer, Integer> cache2 = g.createCache(new CacheConfiguration<Integer, Integer>("c2")
+ .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
+
+ SystemView<TransactionView> txs = g.context().systemView().view(TXS_MON_LIST);
+
+ assertEquals(0, F.size(txs.iterator(), alwaysTrue()));
+
+ CountDownLatch latch = new CountDownLatch(1);
+
+ try {
+ AtomicInteger cntr = new AtomicInteger();
+
+ GridTestUtils.runMultiThreadedAsync(() -> {
+ try (Transaction tx = g.transactions().withLabel("test").txStart(PESSIMISTIC, REPEATABLE_READ)) {
+ cache1.put(cntr.incrementAndGet(), cntr.incrementAndGet());
+ cache1.put(cntr.incrementAndGet(), cntr.incrementAndGet());
+
+ latch.await();
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }, 5, "xxx");
+
+ boolean res = waitForCondition(() -> txs.size() == 5, 10_000L);
+
+ assertTrue(res);
+
+ TransactionView txv = txs.iterator().next();
+
+ assertEquals(g.localNode().id(), txv.localNodeId());
+ assertEquals(txv.isolation(), REPEATABLE_READ);
+ assertEquals(txv.concurrency(), PESSIMISTIC);
+ assertEquals(txv.state(), ACTIVE);
+ assertNotNull(txv.xid());
+ assertFalse(txv.system());
+ assertFalse(txv.implicit());
+ assertFalse(txv.implicitSingle());
+ assertTrue(txv.near());
+ assertFalse(txv.dht());
+ assertTrue(txv.colocated());
+ assertTrue(txv.local());
+ assertEquals("test", txv.label());
+ assertFalse(txv.onePhaseCommit());
+ assertFalse(txv.internal());
+ assertEquals(0, txv.timeout());
+ assertTrue(txv.startTime() <= System.currentTimeMillis());
+ assertEquals(String.valueOf(cacheId(cache1.getName())), txv.cacheIds());
+
+ GridTestUtils.runMultiThreadedAsync(() -> {
+ try (Transaction tx = g.transactions().txStart(OPTIMISTIC, SERIALIZABLE)) {
+ cache1.put(cntr.incrementAndGet(), cntr.incrementAndGet());
+ cache1.put(cntr.incrementAndGet(), cntr.incrementAndGet());
+ cache2.put(cntr.incrementAndGet(), cntr.incrementAndGet());
+
+ latch.await();
+ }
+ catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }, 5, "xxx");
+
+ res = waitForCondition(() -> txs.size() == 10, 10_000L);
+
+ assertTrue(res);
+
+ for (TransactionView tx : txs) {
+ if (PESSIMISTIC == tx.concurrency())
+ continue;
+
+ assertEquals(g.localNode().id(), tx.localNodeId());
+ assertEquals(tx.isolation(), SERIALIZABLE);
+ assertEquals(tx.concurrency(), OPTIMISTIC);
+ assertEquals(tx.state(), ACTIVE);
+ assertNotNull(tx.xid());
+ assertFalse(tx.system());
+ assertFalse(tx.implicit());
+ assertFalse(tx.implicitSingle());
+ assertTrue(tx.near());
+ assertFalse(tx.dht());
+ assertTrue(tx.colocated());
+ assertTrue(tx.local());
+ assertNull(tx.label());
+ assertFalse(tx.onePhaseCommit());
+ assertFalse(tx.internal());
+ assertEquals(0, tx.timeout());
+ assertTrue(tx.startTime() <= System.currentTimeMillis());
+
+ String s1 = cacheId(cache1.getName()) + "," + cacheId(cache2.getName());
+ String s2 = cacheId(cache2.getName()) + "," + cacheId(cache1.getName());
+
+ assertTrue(s1.equals(tx.cacheIds()) || s2.equals(tx.cacheIds()));
+ }
+ }
+ finally {
+ latch.countDown();
+ }
+
+ boolean res = waitForCondition(() -> txs.size() == 0, 10_000L);
+
+ assertTrue(res);
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java
index ddffe35..aaec37f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheGroupsMetricsRebalanceTest.java
@@ -19,6 +19,7 @@
import java.util.Arrays;
import java.util.Collection;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Random;
@@ -38,7 +39,6 @@
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
-import org.apache.ignite.events.Event;
import org.apache.ignite.events.EventType;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
@@ -51,7 +51,6 @@
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiPredicate;
-import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.metric.MetricRegistry;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.spi.metric.IntMetric;
@@ -427,7 +426,19 @@
}
});
- IgniteEx ig = startGrid(4);
+ CountDownLatch latch = new CountDownLatch(1);
+
+ // Register the listener via node configuration so it is active before the node joins and starts rebalancing:
+ // otherwise EVT_CACHE_REBALANCE_STOPPED may fire before localListen() and the latch would never be released.
+ IgniteConfiguration cfg = optimize(getConfiguration(getTestIgniteInstanceName(4)));
+
+ cfg.setLocalEventListeners(Collections.singletonMap(evt -> {
+ latch.countDown();
+
+ return false;
+ }, new int[] {EventType.EVT_CACHE_REBALANCE_STOPPED}));
+
+ IgniteEx ig = startGrid(cfg);
GridTestUtils.runAsync(new Runnable() {
@Override public void run() {
@@ -439,16 +450,6 @@
}
});
- CountDownLatch latch = new CountDownLatch(1);
-
- ig.events().localListen(new IgnitePredicate<Event>() {
- @Override public boolean apply(Event evt) {
- latch.countDown();
-
- return false;
- }
- }, EventType.EVT_CACHE_REBALANCE_STOPPED);
-
latch.await();
GridTestUtils.waitForCondition(new GridAbsPredicate() {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheOperationContextTransactionalLockTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheOperationContextTransactionalLockTest.java
new file mode 100644
index 0000000..76e36e6
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheOperationContextTransactionalLockTest.java
@@ -0,0 +1,141 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheEntry;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.internal.processors.cache.transactions.IgniteTxEntry;
+import org.apache.ignite.internal.processors.cache.transactions.IgniteTxKey;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.apache.ignite.transactions.Transaction;
+import org.junit.Test;
+
+import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
+import static org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED;
+
+/** Tests operation context propagation when a versioned cache entry is locked in a transaction. */
+public class CacheOperationContextTransactionalLockTest extends GridCommonAbstractTest {
+ /** */
+ private static final int KEY = 1;
+
+ /** */
+ private static Ignite ignite;
+
+ /** */
+ private static IgniteCache<Integer, Integer> cache;
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ ignite = startGrid(0);
+
+ cache = ignite.createCache(new CacheConfiguration<Integer, Integer>(DEFAULT_CACHE_NAME)
+ .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL));
+
+ cache.put(KEY, KEY);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+
+ ignite = null;
+ cache = null;
+
+ super.afterTestsStopped();
+ }
+
+ /** Checks the defaults used when there is no operation context. */
+ @Test
+ public void testDefaultOperationContext() throws Exception {
+ assertTxEntryFlags(internalCache(), false, false, false, false);
+ }
+
+ /** Checks propagation of the skip-store flag. */
+ @Test
+ public void testSkipStoreOperationContext() throws Exception {
+ assertTxEntryFlags(internalCache().withSkipStore(), true, false, false, false);
+ }
+
+ /** Checks propagation of the skip-read-through flag. */
+ @Test
+ public void testSkipReadThroughOperationContext() throws Exception {
+ assertTxEntryFlags(internalCache().withSkipReadThrough(), false, true, false, false);
+ }
+
+ /** Checks propagation of the keep-binary-in-interceptor flag. */
+ @Test
+ public void testKeepBinaryInInterceptorOperationContext() throws Exception {
+ assertTxEntryFlags(internalCache().withKeepBinaryInInterceptor(), false, false, true, false);
+ }
+
+ /** Checks propagation of the keep-binary flag. */
+ @Test
+ public void testKeepBinaryOperationContext() throws Exception {
+ assertTxEntryFlags(internalCache().keepBinary(), false, false, true, true);
+ }
+
+ /**
+ * Locks a versioned entry and checks flags stored in its transaction entry.
+ *
+ * @param internalCache Internal cache projection used to acquire the lock.
+ * @param skipStore Expected skip-store flag.
+ * @param skipReadThrough Expected skip-read-through flag.
+ * @param keepBinaryInInterceptor Expected keep-binary-in-interceptor flag.
+ * @param keepBinary Expected keep-binary flag.
+ * @throws Exception If failed.
+ */
+ private void assertTxEntryFlags(
+ IgniteInternalCache<Integer, Integer> internalCache,
+ boolean skipStore,
+ boolean skipReadThrough,
+ boolean keepBinaryInInterceptor,
+ boolean keepBinary
+ ) throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ assertNotNull(entry);
+ assertNotNull(entry.version());
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ assertTrue(internalCache.lockTxEntry(entry, 0));
+
+ GridCacheContext<Integer, Integer> ctx = internalCache.context();
+ IgniteTxKey txKey = ctx.txKey(ctx.toCacheKeyObject(KEY));
+ IgniteTxEntry txEntry = internalCache.tx().entry(txKey);
+
+ assertNotNull(txEntry);
+ assertEquals(skipStore, txEntry.skipStore());
+ assertEquals(skipReadThrough, txEntry.skipReadThrough());
+ assertEquals(keepBinaryInInterceptor, txEntry.keepBinaryInInterceptor());
+ assertEquals(keepBinary, txEntry.keepBinary());
+
+ tx.commit();
+ }
+ }
+
+ /** Returns the cache's internal proxy. */
+ @SuppressWarnings("unchecked")
+ private static IgniteInternalCache<Integer, Integer> internalCache() {
+ return cache.unwrap(IgniteCacheProxy.class).internalProxy();
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheVersionedEntryTransactionalLockTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheVersionedEntryTransactionalLockTest.java
new file mode 100644
index 0000000..41acd7a
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CacheVersionedEntryTransactionalLockTest.java
@@ -0,0 +1,514 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheEntry;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.CacheWriteSynchronizationMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.apache.ignite.transactions.Transaction;
+import org.apache.ignite.transactions.TransactionIsolation;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
+import static org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED;
+import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
+
+/**
+ * Tests transactional locks acquired only for unchanged cache entry versions.
+ */
+@RunWith(Parameterized.class)
+public class CacheVersionedEntryTransactionalLockTest extends GridCommonAbstractTest {
+ /** */
+ private static Ignite ignite0;
+
+ /** */
+ private static Ignite ignite1;
+
+ /** */
+ private static Ignite client;
+
+ /** */
+ @Parameterized.Parameter(0)
+ public boolean useNearCache;
+
+ /** */
+ @Parameterized.Parameter(1)
+ public int backups;
+
+ /** */
+ @Parameterized.Parameter(2)
+ public boolean replicated;
+
+ /** */
+ @Parameterized.Parameter(3)
+ public boolean batch;
+
+ /**
+ * Returns data for test.
+ *
+ * @return Test parameters.
+ */
+ @Parameterized.Parameters(name = "useNearCache={0}, backups={1}, replicated={2}, batch={3}")
+ public static Collection<Object[]> testData() {
+ return List.of(new Object[][] {
+ {false, 0, false, false},
+ {false, 0, false, true},
+ {false, 0, true, false},
+ {false, 0, true, true},
+ {false, 1, false, false},
+ {false, 1, false, true},
+ {false, 1, true, false},
+ {false, 1, true, true},
+ {false, 2, false, false},
+ {false, 2, false, true},
+ {false, 2, true, false},
+ {false, 2, true, true},
+ {true, 0, false, false},
+ {true, 0, false, true},
+ {true, 0, true, false},
+ {true, 0, true, true},
+ {true, 1, false, false},
+ {true, 1, false, true},
+ {true, 1, true, false},
+ {true, 1, true, true},
+ {true, 2, false, false},
+ {true, 2, false, true},
+ {true, 2, true, false},
+ {true, 2, true, true}
+ });
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ ignite0 = startGridsMultiThreaded(4);
+
+ awaitPartitionMapExchange();
+
+ ignite1 = grid(1);
+ client = startClientGrid();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+
+ ignite0 = null;
+ ignite1 = null;
+ client = null;
+
+ super.afterTestsStopped();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ ignite0.destroyCache(DEFAULT_CACHE_NAME);
+
+ super.afterTest();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ return super.getConfiguration(igniteInstanceName)
+ .setConsistentId(igniteInstanceName);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected long getTestTimeout() {
+ return 120_000;
+ }
+
+ /**
+ * Creates transactional cache.
+ *
+ * @param ignite Node.
+ * @return Transactional cache.
+ */
+ private IgniteCache<Integer, Integer> transactionalCache(Ignite ignite) {
+ CacheConfiguration<?, ?> ccfg =
+ new CacheConfiguration<>(DEFAULT_CACHE_NAME)
+ .setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC)
+ .setNearConfiguration(useNearCache ? new NearCacheConfiguration<>() : null)
+ .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL)
+ .setCacheMode(replicated ? CacheMode.REPLICATED : CacheMode.PARTITIONED)
+ .setBackups(backups);
+
+ return (IgniteCache<Integer, Integer>)ignite.createCache(ccfg);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockBeforePutFromClientTest() throws Exception {
+ IgniteCache<Integer, Integer> cache = transactionalCache(client);
+
+ int key = 42;
+
+ checkLockBeforePut(cache, key, READ_COMMITTED);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockBeforePutLocalKeyTest() throws Exception {
+ IgniteCache<Integer, Integer> cache = transactionalCache(ignite0);
+
+ int key = primaryKey(cache);
+
+ checkLockBeforePut(cache, key, READ_COMMITTED);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockBeforePutRemoteKeyTest() throws Exception {
+ IgniteCache<Integer, Integer> cache = transactionalCache(ignite0);
+
+ int key = primaryKey(ignite1.cache(DEFAULT_CACHE_NAME));
+
+ checkLockBeforePut(cache, key, REPEATABLE_READ);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockBeforePutLocalKeyRepeatableReadTest() throws Exception {
+ IgniteCache<Integer, Integer> cache = transactionalCache(ignite0);
+
+ int key = primaryKey(cache);
+
+ checkLockBeforePut(cache, key, REPEATABLE_READ);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockBeforePutRemoteKeyRepeatableReadTest() throws Exception {
+ IgniteCache<Integer, Integer> cache = transactionalCache(ignite0);
+
+ int key = primaryKey(ignite1.cache(DEFAULT_CACHE_NAME));
+
+ checkLockBeforePut(cache, key, REPEATABLE_READ);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testEntryVersionDoesNotChangeWhenEntryIsNotUpdated() throws Exception {
+ IgniteCache<Integer, Integer> cache = transactionalCache(ignite0);
+
+ int locKey = primaryKey(cache);
+ int remoteKey = primaryKey(ignite1.cache(DEFAULT_CACHE_NAME));
+
+ cache.put(locKey, 0);
+ cache.put(remoteKey, 0);
+
+ CacheEntry<Integer, Integer> locEntry = cache.getEntry(locKey);
+ CacheEntry<Integer, Integer> remoteEntry = cache.getEntry(remoteKey);
+
+ try (Transaction tx = ignite0.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ if (batch) {
+ assertTrue(acquireLockForEntries(cache, List.of(locEntry, remoteEntry), 0));
+ }
+ else {
+ assertTrue(acquireLockForEntry(cache, locEntry, 0));
+ assertTrue(acquireLockForEntry(cache, remoteEntry, 0));
+ }
+
+ tx.commit();
+ }
+
+ assertEquals(locEntry.version(), cache.getEntry(locKey).version());
+ assertEquals(remoteEntry.version(), cache.getEntry(remoteKey).version());
+
+ try (Transaction tx = ignite0.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ if (batch) {
+ assertTrue(acquireLockForEntries(cache, List.of(locEntry, remoteEntry), 0));
+ }
+ else {
+ assertTrue(acquireLockForEntry(cache, locEntry, 0));
+ assertTrue(acquireLockForEntry(cache, remoteEntry, 0));
+ }
+
+ tx.rollback();
+ }
+
+ assertEquals(locEntry.version(), cache.getEntry(locKey).version());
+ assertEquals(remoteEntry.version(), cache.getEntry(remoteKey).version());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testVersionedEntryLockReturnsFalseWhenEntryIsLockedByAnotherTransactionNoWait() throws Exception {
+ checkReturningWhenCanNotWaitForLock(-1, false, false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testVersionedEntryLockReturnsFalseWhenEntryIsLockedByAnotherTransaction() throws Exception {
+ checkReturningWhenCanNotWaitForLock(200, false, false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testVersionedEntryLockReturnsFalseWhenLocalEntryIsLockedByAnotherTransaction() throws Exception {
+ checkReturningWhenCanNotWaitForLock(200, false, true);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testVersionedEntryLockReturnsFalseWhenEntryIsLockedByAnotherTransactionAndCommit() throws Exception {
+ checkReturningWhenCanNotWaitForLock(200, true, false);
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testVersionedEntryLockReturnsFalseWhenLocalEntryIsLockedByAnotherTransactionAndCommit() throws Exception {
+ checkReturningWhenCanNotWaitForLock(200, true, true);
+ }
+
+ /**
+ * Checks that lock acquisition can be retried in the same transaction after the competing transaction finishes.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testVersionedEntryLockCanBeRetriedAfterWaitTimeout() throws Exception {
+ Ignite holder = ignite0;
+ Ignite initiator = ignite1;
+
+ IgniteCache<Integer, Integer> holderCache = transactionalCache(holder);
+ IgniteCache<Integer, Integer> cache = initiator.cache(DEFAULT_CACHE_NAME);
+
+ int key = primaryKey(holderCache);
+
+ holderCache.put(key, 0);
+
+ CacheEntry<Integer, Integer> entry = cache.getEntry(key);
+
+ try (Transaction holderTx = holder.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ holderCache.put(key, 42);
+
+ try (Transaction tx = initiator.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ if (batch)
+ assertFalse(acquireLockForEntries(cache, List.of(entry), 200));
+ else
+ assertFalse(acquireLockForEntry(cache, entry, 200));
+
+ holderTx.rollback();
+
+ if (batch)
+ assertTrue(acquireLockForEntries(cache, List.of(entry), 5_000));
+ else
+ assertTrue(acquireLockForEntry(cache, entry, 5_000));
+
+ cache.put(key, 1);
+
+ tx.commit();
+ }
+ }
+
+ assertEquals(1, cache.get(key).intValue());
+ }
+
+ /**
+ * Checks that the lock entry method returns {@code false} when can not wait for lock.
+ *
+ * @param timeout Timeout.
+ * @param commit Whether to commit the transaction.
+ * @param locForLocal Whether the contended key should be local to the lock initiator.
+ * @throws IgniteCheckedException If failed.
+ */
+ private void checkReturningWhenCanNotWaitForLock(long timeout, boolean commit, boolean locForLocal) throws IgniteCheckedException {
+ Ignite holder = ignite0;
+ Ignite initiator = ignite1;
+
+ IgniteCache<Integer, Integer> holderCache = transactionalCache(holder);
+ IgniteCache<Integer, Integer> cache = initiator.cache(DEFAULT_CACHE_NAME);
+
+ List<Integer> firstKeySet = locForLocal ? primaryKeys(cache, 2) : primaryKeys(holderCache, 2);
+ Integer concurentLockedKey = firstKeySet.get(0);
+ Integer txKey1 = firstKeySet.get(1);
+ Integer txKey2 = locForLocal ? primaryKey(holderCache) : primaryKey(cache);
+
+ holderCache.put(concurentLockedKey, 0);
+ holderCache.put(txKey1, 0);
+ holderCache.put(txKey2, 0);
+
+ CacheEntry<Integer, Integer> entry = cache.getEntry(concurentLockedKey);
+
+ try (Transaction holderTx = holder.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ holderCache.put(concurentLockedKey, 42);
+
+ try (Transaction tx = initiator.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ long startWaiting = U.currentTimeMillis();
+
+ if (batch) {
+ assertFalse(acquireLockForEntries(cache, List.of(
+ cache.getEntry(txKey1),
+ entry,
+ cache.getEntry(txKey2)
+ ), timeout));
+
+ assertTrue(acquireLockForEntries(cache, List.of(
+ cache.getEntry(txKey1),
+ cache.getEntry(txKey2)
+ ), timeout));
+ }
+ else {
+ assertTrue(acquireLockForEntry(cache, cache.getEntry(txKey1), timeout));
+ assertTrue(acquireLockForEntry(cache, cache.getEntry(txKey2), timeout));
+
+ assertFalse(acquireLockForEntry(cache, entry, timeout));
+ }
+
+ long waitTime = U.currentTimeMillis() - startWaiting;
+
+ assertTrue("Waited for lock for " + waitTime + " ms but timeout is " + timeout + " ms.",
+ waitTime >= timeout);
+
+ cache.put(txKey1, 42);
+ cache.put(txKey2, 42);
+
+ if (commit)
+ tx.commit();
+ }
+
+ holderTx.rollback();
+ }
+
+ assertEquals(0, holderCache.get(concurentLockedKey).intValue());
+ assertEquals(0, cache.get(concurentLockedKey).intValue());
+
+ if (commit) {
+ assertEquals(42, holderCache.get(txKey1).intValue());
+ assertEquals(42, cache.get(txKey2).intValue());
+ }
+ else {
+ assertEquals(0, holderCache.get(txKey1).intValue());
+ assertEquals(0, cache.get(txKey2).intValue());
+ }
+ }
+
+ /**
+ * Checks locking an entry before updating it.
+ *
+ * @param cache Cache.
+ * @param key Key.
+ * @param txIsolation Transaction isolation.
+ * @throws IgniteCheckedException If failed.
+ */
+ private void checkLockBeforePut(
+ IgniteCache<Integer, Integer> cache,
+ int key,
+ TransactionIsolation txIsolation
+ ) throws IgniteCheckedException {
+ cache.put(key, 0);
+
+ CacheEntry<Integer, Integer> entry = cache.getEntry(key);
+
+ assertNotNull(entry);
+ assertNotNull(entry.version());
+
+ Ignite ign = cache.unwrap(Ignite.class);
+
+ try (Transaction tx = ign.transactions().txStart(PESSIMISTIC, txIsolation)) {
+ if (batch)
+ assertTrue(acquireLockForEntries(cache, List.of(entry), 0));
+ else
+ assertTrue(acquireLockForEntry(cache, entry, 0));
+
+ assertEquals(0, cache.get(key).intValue());
+
+ cache.put(key, 1);
+
+ assertEquals(1, cache.get(key).intValue());
+
+ tx.commit();
+ }
+
+ assertEquals(1, cache.get(key).intValue());
+ assertTrue(cache.getEntry(key).version().compareTo(entry.version()) > 0);
+ }
+
+ /**
+ * Acquires a transactional lock for an entry.
+ *
+ * @param cache Cache.
+ * @param entry Entry.
+ * @param timeout Lock wait timeout.
+ * @return {@code true} if the lock was acquired.
+ * @throws IgniteCheckedException If failed.
+ */
+ @SuppressWarnings("unchecked")
+ private static boolean acquireLockForEntry(
+ IgniteCache<Integer, Integer> cache,
+ CacheEntry<Integer, Integer> entry,
+ long timeout
+ ) throws IgniteCheckedException {
+ return cache.unwrap(IgniteCacheProxy.class).internalProxy().lockTxEntry(entry, timeout);
+ }
+
+ /**
+ * Acquires transactional locks for entries.
+ *
+ * @param cache Cache.
+ * @param entries Entries.
+ * @param timeout Lock wait timeout.
+ * @return {@code true} if all locks were acquired.
+ * @throws IgniteCheckedException If failed.
+ */
+ @SuppressWarnings("unchecked")
+ private static boolean acquireLockForEntries(
+ IgniteCache<Integer, Integer> cache,
+ List<CacheEntry<Integer, Integer>> entries,
+ long timeout
+ ) throws IgniteCheckedException {
+ return cache.unwrap(IgniteCacheProxy.class).internalProxy().lockTxEntries(entries, timeout);
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ConcurrentCheckpointAndUpdateTtlTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ConcurrentCheckpointAndUpdateTtlTest.java
index bbd515c..0dce369 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ConcurrentCheckpointAndUpdateTtlTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/ConcurrentCheckpointAndUpdateTtlTest.java
@@ -147,7 +147,7 @@
}, 1, "touch");
IgniteInternalFuture<?> cpFut = runMultiThreadedAsync(() -> {
- for (int i = 0; i < 1_000; i++) {
+ for (int i = 0; i < GridTestUtils.SF.applyLB(1_000, 200); i++) {
try {
forceCheckpoint(F.asList(grid(0), grid(1)));
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
index 42975f9..d8f8624 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/CrossCacheTxRandomOperationsTest.java
@@ -34,6 +34,7 @@
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionConcurrency;
@@ -263,7 +264,7 @@
boolean checkData = fullSync && !optimistic;
- long stopTime = System.currentTimeMillis() + 10_000;
+ long stopTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(10_000, 2_000);
for (int i = 0; i < 10_000; i++) {
if (i % 100 == 0) {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java
index 3c4bfe3..306c8ab 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/IgniteCachePutAllRestartTest.java
@@ -125,7 +125,7 @@
try {
ThreadLocalRandom rnd = ThreadLocalRandom.current();
- long endTime = System.currentTimeMillis() + 2 * 60_000;
+ long endTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(2 * 60_000, 20_000);
while (System.currentTimeMillis() < endTime) {
int node = rnd.nextInt(1, NODES);
@@ -151,7 +151,7 @@
ThreadLocalRandom rnd = ThreadLocalRandom.current();
- long endTime = System.currentTimeMillis() + 2 * 60_000;
+ long endTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(2 * 60_000, 20_000);
while (System.currentTimeMillis() < endTime) {
int node = rnd.nextInt(0, NODES);
@@ -168,7 +168,7 @@
Random rnd = new Random();
- long endTime = System.currentTimeMillis() + 60_000;
+ long endTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(60_000, 10_000);
try {
int iter = 0;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/LockTxEntryOneNodeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/LockTxEntryOneNodeTest.java
new file mode 100644
index 0000000..087526b
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/LockTxEntryOneNodeTest.java
@@ -0,0 +1,602 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import javax.cache.processor.EntryProcessor;
+import javax.cache.processor.EntryProcessorException;
+import javax.cache.processor.MutableEntry;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheEntry;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.apache.ignite.transactions.Transaction;
+import org.apache.ignite.transactions.TransactionTimeoutException;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+import static org.apache.ignite.cache.CacheMode.REPLICATED;
+import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
+import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
+import static org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED;
+import static org.apache.ignite.transactions.TransactionIsolation.REPEATABLE_READ;
+
+/**
+ * Tests transactional entry locking through internal cache API.
+ */
+@RunWith(Parameterized.class)
+public class LockTxEntryOneNodeTest extends GridCommonAbstractTest {
+ /** */
+ private static final int KEY = 1;
+
+ /** */
+ private static final int INIT_VAL = 1;
+
+ /** */
+ private static final int UPDATED_VAL = 2;
+
+ /** */
+ private static Ignite ignite;
+
+ /** */
+ @Parameterized.Parameter(0)
+ public boolean commit;
+
+ /** */
+ @Parameterized.Parameter(1)
+ public boolean useNearCache;
+
+ /** */
+ @Parameterized.Parameter(2)
+ public CacheMode cacheMode;
+
+ /** Operation that enlists an entry in a transaction before a versioned lock is acquired. */
+ private enum TxOperation {
+ /** Read. */
+ GET,
+
+ /** Update. */
+ PUT,
+
+ /** Update with previous value returned. */
+ GET_AND_PUT,
+
+ /** Delete. */
+ REMOVE,
+
+ /** Delete with previous value returned. */
+ GET_AND_REMOVE,
+
+ /** Transform. */
+ INVOKE
+ }
+
+ /** Cache. */
+ private IgniteCache<Integer, Integer> cache;
+
+ /**
+ * Returns data for test.
+ *
+ * @return Test parameters.
+ */
+ @Parameterized.Parameters(name = "commit={0}, useNearCache={1}, cacheMode={2}")
+ public static Collection<Object[]> testData() {
+ return List.of(new Object[][] {
+ {false, false, PARTITIONED},
+ {false, false, REPLICATED},
+ {true, false, PARTITIONED},
+ {true, false, REPLICATED},
+ {false, true, PARTITIONED},
+ {false, true, REPLICATED},
+ {true, true, PARTITIONED},
+ {true, true, REPLICATED},
+ });
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ ignite = startGrid(0);
+
+ awaitPartitionMapExchange();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTestsStopped() throws Exception {
+ stopAllGrids();
+
+ ignite = null;
+
+ super.afterTestsStopped();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ cache = ignite.createCache(new CacheConfiguration<Integer, Integer>(DEFAULT_CACHE_NAME)
+ .setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL)
+ .setNearConfiguration(useNearCache ? new NearCacheConfiguration<>() : null)
+ .setCacheMode(cacheMode));
+
+ cache.put(KEY, INIT_VAL);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ ignite.destroyCache(DEFAULT_CACHE_NAME);
+
+ super.afterTest();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected long getTestTimeout() {
+ return 30_000;
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockTxEntryInPessimisticTransaction() throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ assertTrue(acquireLockForEntry(entry, 0));
+
+ assertEquals(entry.getValue(), cache.get(KEY));
+
+ checkInaccessInOtherTx(cache);
+
+ if (commit)
+ tx.commit();
+ }
+
+ assertEquals(INIT_VAL, cache.get(KEY).intValue());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockAlreadyLockedTxEntry() throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ cache.put(KEY, UPDATED_VAL);
+
+ assertTrue(acquireLockForEntry(entry, 0));
+
+ assertEquals(UPDATED_VAL, cache.get(KEY).intValue());
+
+ checkInaccessInOtherTx(cache);
+
+ if (commit)
+ tx.commit();
+ }
+
+ assertEquals(commit ? UPDATED_VAL : INIT_VAL, cache.get(KEY).intValue());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockAlreadyEnlistedTxEntryAfterOperation() throws Exception {
+ for (TxOperation op : TxOperation.values()) {
+ int key = KEY + op.ordinal() + 1;
+
+ cache.put(key, INIT_VAL);
+
+ CacheEntry<Integer, Integer> entry = cache.getEntry(key);
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ applyOperation(op, key);
+
+ try {
+ assertTrue("Failed to lock already enlisted tx entry [op=" + op + ']',
+ acquireLockForEntry(entry, 0));
+ }
+ catch (AssertionError e) {
+ throw new AssertionError("Failed to lock already enlisted tx entry [op=" + op + ']', e);
+ }
+
+ checkInaccessInOtherTx(cache, key);
+
+ if (commit)
+ tx.commit();
+ }
+
+ assertEquals("Unexpected value after transaction [op=" + op + ']',
+ commit ? expectedValue(op) : Integer.valueOf(INIT_VAL),
+ cache.get(key));
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testFailToLockTxEntryInPessimisticTransaction() throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ cache.put(KEY, UPDATED_VAL);
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ assertFalse(acquireLockForEntry(entry, 0));
+
+ assertEquals(UPDATED_VAL, cache.get(KEY).intValue());
+
+ checkAccessInOtherTx(cache);
+
+ if (commit)
+ tx.commit();
+ }
+
+ assertEquals(UPDATED_VAL, cache.get(KEY).intValue());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockTxEntryReturnsFalseOnTimeoutWhenLockedInOtherTransaction() throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ assertTrue(acquireLockForEntry(entry, 0));
+
+ IgniteInternalFuture<Boolean> lockFut = GridTestUtils.runAsync(new Callable<Boolean>() {
+ @Override public Boolean call() throws Exception {
+ boolean locked = true;
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ locked = acquireLockForEntry(entry, 100);
+
+ assertFalse(locked);
+
+ cache.put(2, 2);
+
+ if (commit)
+ tx.commit();
+ }
+
+ return locked;
+ }
+ });
+
+ assertFalse(lockFut.get(10_000));
+
+ if (commit)
+ tx.commit();
+ }
+
+ assertEquals(INIT_VAL, cache.get(KEY).intValue());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockTxEntryDoesNotWaitMuchLongerThanTimeout() throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ assertTrue(acquireLockForEntry(entry, 0));
+
+ IgniteInternalFuture<Long> lockFut = GridTestUtils.runAsync(new Callable<Long>() {
+ @Override public Long call() throws Exception {
+ long waitTime;
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ long start = U.currentTimeMillis();
+
+ assertFalse(acquireLockForEntry(entry, 200));
+
+ waitTime = U.currentTimeMillis() - start;
+
+ if (commit)
+ tx.commit();
+ }
+
+ return waitTime;
+ }
+ });
+
+ long waitTime = lockFut.get(10_000);
+
+ assertTrue("Waited for lock for " + waitTime + " ms it is unexpectedly long.",
+ waitTime < 1_000);
+
+ if (commit)
+ tx.commit();
+ }
+
+ assertEquals(INIT_VAL, cache.get(KEY).intValue());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockTxEntryReturnsFalseForLockedKeyAndTrueForOtherKey() throws Exception {
+ int otherKey = KEY + 1;
+
+ cache.put(otherKey, INIT_VAL);
+
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+ CacheEntry<Integer, Integer> otherEntry = cache.getEntry(otherKey);
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ assertTrue(acquireLockForEntry(entry, 0));
+
+ IgniteInternalFuture<Void> lockFut = GridTestUtils.runAsync(new Callable<Void>() {
+ @Override public Void call() throws Exception {
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ assertFalse(acquireLockForEntry(entry, -1));
+ assertTrue(acquireLockForEntry(otherEntry, -1));
+
+ if (commit)
+ tx.commit();
+ }
+
+ return null;
+ }
+ });
+
+ lockFut.get(10_000);
+
+ if (commit)
+ tx.commit();
+ }
+
+ assertEquals(INIT_VAL, cache.get(KEY).intValue());
+ assertEquals(INIT_VAL, cache.get(otherKey).intValue());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testUpdateAfterLock() throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, READ_COMMITTED)) {
+ assertTrue(acquireLockForEntry(entry, 0));
+
+ checkInaccessInOtherTx(cache);
+
+ assertEquals(entry.getValue(), cache.get(KEY));
+
+ cache.put(KEY, UPDATED_VAL);
+
+ assertEquals(UPDATED_VAL, cache.get(KEY).intValue());
+
+ if (commit)
+ tx.commit();
+ }
+
+ assertEquals(commit ? UPDATED_VAL : INIT_VAL, cache.get(KEY).intValue());
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockTxEntryFailsWithoutTransaction() throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ GridTestUtils.assertThrows(log, new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ acquireLockForEntry(entry, 0);
+
+ return null;
+ }
+ }, IgniteCheckedException.class, "without transaction");
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testLockTxEntryAsyncFailsInOptimisticTransaction() throws Exception {
+ CacheEntry<Integer, Integer> entry = cache.getEntry(KEY);
+
+ try (Transaction tx = ignite.transactions().txStart(OPTIMISTIC, REPEATABLE_READ)) {
+ GridTestUtils.assertThrows(log, new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ return acquireLockForEntry(entry, 0);
+ }
+ }, IgniteCheckedException.class, "optimistic transaction");
+ }
+ }
+
+ /**
+ * Checks that another transaction can access the cache.
+ *
+ * @param cache Cache.
+ * @throws IgniteCheckedException If failed.
+ */
+ private void checkAccessInOtherTx(IgniteCache<Integer, Integer> cache) throws IgniteCheckedException {
+ checkAccessInOtherTx(cache, KEY);
+ }
+
+ /**
+ * Checks that another transaction can access the cache.
+ *
+ * @param cache Cache.
+ * @param key Key.
+ * @throws IgniteCheckedException If failed.
+ */
+ private void checkAccessInOtherTx(IgniteCache<Integer, Integer> cache, int key) throws IgniteCheckedException {
+ IgniteInternalFuture<Void> accessFut = GridTestUtils.runAsync(new Callable<Void>() {
+ @Override public Void call() {
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 100, 1)) {
+ cache.get(key);
+
+ tx.commit();
+ }
+
+ return null;
+ }
+ });
+
+ accessFut.get(10_000);
+ }
+
+ /**
+ * Checks that another transaction cannot access the cache.
+ *
+ * @param cache Cache.
+ * @throws IgniteCheckedException If failed.
+ */
+ private void checkInaccessInOtherTx(IgniteCache<Integer, Integer> cache) throws IgniteCheckedException {
+ checkInaccessInOtherTx(cache, KEY);
+ }
+
+ /**
+ * Checks that another transaction cannot access the cache.
+ *
+ * @param cache Cache.
+ * @param key Key.
+ * @throws IgniteCheckedException If failed.
+ */
+ private void checkInaccessInOtherTx(IgniteCache<Integer, Integer> cache, int key) throws IgniteCheckedException {
+ IgniteInternalFuture<Void> accessFut = GridTestUtils.runAsync(new Callable<Void>() {
+ @Override public Void call() {
+ try (Transaction tx = ignite.transactions().txStart(PESSIMISTIC, REPEATABLE_READ, 100, 1)) {
+ cache.get(key);
+
+ tx.commit();
+ }
+
+ return null;
+ }
+ });
+
+ GridTestUtils.assertThrowsWithCause(new Callable<Object>() {
+ @Override public Object call() throws Exception {
+ return accessFut.get(10_000);
+ }
+ }, TransactionTimeoutException.class);
+ }
+
+ /**
+ * Acquires a transactional lock for an entry.
+ *
+ * @param entry Entry.
+ * @param timeout Lock wait timeout.
+ * @return {@code true} if the lock was acquired.
+ * @throws IgniteCheckedException If failed.
+ */
+ @SuppressWarnings("unchecked")
+ private boolean acquireLockForEntry(
+ CacheEntry<Integer, Integer> entry,
+ long timeout
+ ) throws IgniteCheckedException {
+ return cache.unwrap(IgniteCacheProxy.class).internalProxy().lockTxEntry(entry, timeout);
+ }
+
+ /**
+ * Applies cache operation inside transaction.
+ *
+ * @param op Operation.
+ * @param key Key.
+ */
+ private void applyOperation(TxOperation op, int key) {
+ switch (op) {
+ case GET:
+ assertEquals(INIT_VAL, cache.get(key).intValue());
+
+ break;
+
+ case PUT:
+ cache.put(key, UPDATED_VAL);
+
+ break;
+
+ case GET_AND_PUT:
+ assertEquals(INIT_VAL, cache.getAndPut(key, UPDATED_VAL).intValue());
+
+ break;
+
+ case REMOVE:
+ assertTrue(cache.remove(key));
+
+ break;
+
+ case GET_AND_REMOVE:
+ assertEquals(INIT_VAL, cache.getAndRemove(key).intValue());
+
+ break;
+
+ case INVOKE:
+ cache.invoke(key, new EntryProcessor<Integer, Integer, Object>() {
+ @Override public Object process(MutableEntry<Integer, Integer> entry, Object... args)
+ throws EntryProcessorException {
+ entry.setValue(UPDATED_VAL);
+
+ return null;
+ }
+ });
+
+ break;
+
+ default:
+ fail("Unexpected operation: " + op);
+ }
+ }
+
+ /**
+ * @param op Operation.
+ * @return Expected value after committed transaction.
+ */
+ private Integer expectedValue(TxOperation op) {
+ switch (op) {
+ case GET:
+ return INIT_VAL;
+
+ case PUT:
+ case GET_AND_PUT:
+ case INVOKE:
+ return UPDATED_VAL;
+
+ case REMOVE:
+ case GET_AND_REMOVE:
+ return null;
+
+ default:
+ fail("Unexpected operation: " + op);
+
+ return null;
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/MdcCacheMetricsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/MdcCacheMetricsTest.java
new file mode 100644
index 0000000..8f39077
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/MdcCacheMetricsTest.java
@@ -0,0 +1,600 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.apache.ignite.IgniteSystemProperties;
+import org.apache.ignite.cache.affinity.rendezvous.ClusterNodeAttributeAffinityBackupFilter;
+import org.apache.ignite.cache.affinity.rendezvous.ClusterNodeAttributeColocatedBackupFilter;
+import org.apache.ignite.cache.affinity.rendezvous.MdcAffinityBackupFilter;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.lang.IgniteBiPredicate;
+import org.apache.ignite.spi.metric.BooleanMetric;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+
+import static org.apache.ignite.cache.CacheMode.PARTITIONED;
+import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_DATA_CENTER_ID;
+import static org.apache.ignite.internal.processors.metric.impl.MetricUtils.cacheMetricsRegistryName;
+
+/**
+ * Test for new cache metrics for highlighting two data safety issues in Multi DataCenter environments:
+ * 1. If cache configuration doesn't specify an affinity backup filter that could guarantee presence of data copy in each DC.
+ * 2. If cluster topology changed in such a way that partition copies are not spread across all available DCs.
+ */
+public class MdcCacheMetricsTest extends GridCommonAbstractTest {
+ /** */
+ private static final int NODES_NUMBER = 5;
+
+ /** */
+ private static final String CACHE_WITH_MDC_FILTER = "mdcSafeCache0";
+
+ /** */
+ private static final String CACHE_WITH_COLOCATED_FILTER = "mdcSafeCache1";
+
+ /** */
+ private static final String CACHE_WITH_MDC_SAFE_ATTRIBUTE_FILTER = "mdcSafeCache2";
+
+ /** */
+ private static final String MDC_UNSAFE_CACHE = "mdcUnsafeCache0";
+
+ /** */
+ private static final String CACHE_WITH_MDC_UNSAFE_ATTRIBUTE_FILTER = "mdcUnsafeCache1";
+
+ /** */
+ private static final String STRETCHED_CELL_ATTR_NAME = "DC_CELL_ATTR";
+
+ /** */
+ private static final String ATTR_FOR_UNSAFE_ATTR_FILTER = "MDC_UNAWARE_ATTR";
+
+ /** */
+ private static final String[] STRETCHED_CELL_IDS = {"CELL_0", "CELL_1"};
+
+ /** */
+ private static final String DC_ID_0 = "DC_0";
+
+ /** */
+ private static final String DC_ID_1 = "DC_1";
+
+ /** */
+ private static final String AFFINITY_CFG_MDC_SAFE_METRIC_NAME = "IsCacheAffinityConfigurationMdcSafe";
+
+ /** */
+ private static final String PARTITION_DISTRIBUTION_SAFE_METRIC_NAME = "IsCachePartitionDistributionSafe";
+
+ /** */
+ private String dcId;
+
+ /** */
+ private String cellId;
+
+ /** */
+ private boolean useStaticCaches;
+
+ /** */
+ private boolean persistenceEnabled;
+
+ /** */
+ private final Set<String> allCaches = new HashSet<>();
+
+ /** */
+ private final Set<String> mdcSafeCaches = new HashSet<>();
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ stopAllGrids();
+
+ allCaches.clear();
+ mdcSafeCaches.clear();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ super.afterTest();
+
+ stopAllGrids();
+
+ cleanPersistenceDir();
+
+ allCaches.clear();
+ mdcSafeCaches.clear();
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ cfg.setDataStorageConfiguration(new DataStorageConfiguration()
+ .setDefaultDataRegionConfiguration(new DataRegionConfiguration()
+ .setPersistenceEnabled(persistenceEnabled)
+ .setMaxSize(32 * 1024 * 1024)
+ ));
+
+ if (useStaticCaches) {
+ CacheConfiguration mdcSafeCacheCfg0 = prepareCacheCfg(
+ CACHE_WITH_MDC_FILTER,
+ new MdcAffinityBackupFilter(2, 1),
+ true);
+
+ CacheConfiguration mdcSafeCacheCfg1 = prepareCacheCfg(
+ CACHE_WITH_COLOCATED_FILTER,
+ new ClusterNodeAttributeColocatedBackupFilter(STRETCHED_CELL_ATTR_NAME),
+ true);
+
+ CacheConfiguration mdcUnsafeCacheCfg0 = prepareCacheCfg(MDC_UNSAFE_CACHE, null, false);
+
+ CacheConfiguration mdcUnsafeCacheCfg1 = prepareCacheCfg(
+ CACHE_WITH_MDC_UNSAFE_ATTRIBUTE_FILTER,
+ new ClusterNodeAttributeAffinityBackupFilter(ATTR_FOR_UNSAFE_ATTR_FILTER),
+ false);
+
+ cfg.setCacheConfiguration(mdcSafeCacheCfg0, mdcSafeCacheCfg1, mdcUnsafeCacheCfg0, mdcUnsafeCacheCfg1);
+ }
+
+ if (!cfg.isClientMode())
+ cfg.setUserAttributes(F.asMap(
+ STRETCHED_CELL_ATTR_NAME,
+ cellId,
+ IgniteSystemProperties.IGNITE_DATA_CENTER_ID,
+ dcId));
+
+ return cfg;
+ }
+
+ /** */
+ private CacheConfiguration prepareCacheCfg(
+ String cacheName,
+ IgniteBiPredicate<ClusterNode, List<ClusterNode>> affBackupFilter,
+ boolean affCfgMdcSafe) {
+ return prepareCacheCfg(cacheName, affBackupFilter, affCfgMdcSafe, null);
+ }
+
+ /** */
+ private CacheConfiguration prepareCacheCfg(
+ String cacheName,
+ IgniteBiPredicate<ClusterNode, List<ClusterNode>> affBackupFilter,
+ boolean affCfgMdcSafe,
+ String cacheGroupName) {
+ CacheConfiguration cacheCfg = new CacheConfiguration(cacheName)
+ .setCacheMode(PARTITIONED)
+ .setBackups(1);
+
+ if (cacheGroupName != null)
+ cacheCfg.setGroupName(cacheGroupName);
+
+ cacheCfg.setAffinity(
+ new RendezvousAffinityFunction()
+ .setPartitions(32)
+ .setAffinityBackupFilter(affBackupFilter));
+
+ if (affCfgMdcSafe)
+ mdcSafeCaches.add(cacheName);
+
+ allCaches.add(cacheName);
+
+ return cacheCfg;
+ }
+
+ /**
+ * Test verifies correctness of metric for cache configuration related to data distribution across DCs
+ * if caches are organized into groups.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testAffinityCfgMdcSafeMetricForCacheGroup() throws Exception {
+ startClusterAcrossDataCenters(new String[] {DC_ID_0, DC_ID_1}, 2);
+
+ IgniteEx client = startClientGrid(NODES_NUMBER - 1);
+
+ client.getOrCreateCache(
+ prepareCacheCfg(
+ CACHE_WITH_MDC_FILTER + "_0",
+ new MdcAffinityBackupFilter(2, 1),
+ true,
+ "mdcSafeCachesGroup"));
+
+ client.getOrCreateCache(
+ prepareCacheCfg(
+ CACHE_WITH_MDC_FILTER + "_1",
+ new MdcAffinityBackupFilter(2, 1),
+ true,
+ "mdcSafeCachesGroup"));
+
+ client.getOrCreateCache(
+ prepareCacheCfg(MDC_UNSAFE_CACHE + "_0", null, false, "mdcUnsafeCachesGroup"));
+
+ client.getOrCreateCache(
+ prepareCacheCfg(MDC_UNSAFE_CACHE + "_1", null, false, "mdcUnsafeCachesGroup"));
+
+ checkMdcReadyMetric();
+ }
+
+ /**
+ * Test verifies correctness of metric for partition copies distribution across DCs
+ * if caches are organized into groups.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testPartitionDistributionMetricForCacheGroups() throws Exception {
+ persistenceEnabled = true;
+
+ startClusterAcrossDataCenters(new String[] {DC_ID_0, DC_ID_1}, 2);
+
+ IgniteEx client = startClientGrid(NODES_NUMBER - 1);
+
+ client.cluster().state(ClusterState.ACTIVE);
+
+ client.getOrCreateCache(prepareCacheCfg(
+ CACHE_WITH_MDC_FILTER + "_0",
+ new MdcAffinityBackupFilter(2, 1),
+ true,
+ "mdcFilterCacheGroup"));
+ client.getOrCreateCache(prepareCacheCfg(
+ CACHE_WITH_MDC_FILTER + "_1",
+ new MdcAffinityBackupFilter(2, 1),
+ true,
+ "mdcFilterCacheGroup"));
+
+ awaitPartitionMapExchange();
+
+ BooleanMetric cache0DistributionSafeMetric = findMetricForCache(
+ grid(1),
+ CACHE_WITH_MDC_FILTER + "_0",
+ PARTITION_DISTRIBUTION_SAFE_METRIC_NAME);
+ BooleanMetric cache1DistributionSafeMetric = findMetricForCache(
+ grid(1),
+ CACHE_WITH_MDC_FILTER + "_1",
+ PARTITION_DISTRIBUTION_SAFE_METRIC_NAME);
+
+ assertNotNull(cache0DistributionSafeMetric);
+ assertNotNull(cache1DistributionSafeMetric);
+ assertTrue(cache0DistributionSafeMetric.value());
+ assertTrue(cache1DistributionSafeMetric.value());
+
+ stopGrid(0);
+
+ assertFalse(cache0DistributionSafeMetric.value());
+ assertFalse(cache1DistributionSafeMetric.value());
+
+ client.cluster().setBaselineTopology(client.cluster().topologyVersion());
+
+ assertTrue(cache0DistributionSafeMetric.value());
+ assertTrue(cache1DistributionSafeMetric.value());
+ }
+
+ /**
+ * Test verifies correctness of metric for cache configuration related to data distribution across DCs for dynamically started caches.
+ * Metric should take a {@code false} value if cache configuration doesn't guarantee presence of data copy in each DC
+ * and {@code true} otherwise.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testAffinityCfgMdcSafeMetricForDynamicCaches() throws Exception {
+ startClusterAcrossDataCenters(new String[] {DC_ID_0, DC_ID_1}, 2);
+
+ IgniteEx client = startClientGrid(NODES_NUMBER - 1);
+
+ client.cluster().state(ClusterState.ACTIVE);
+
+ client.getOrCreateCache(
+ prepareCacheCfg(CACHE_WITH_MDC_FILTER, new MdcAffinityBackupFilter(2, 1), true));
+
+ client.getOrCreateCache(
+ prepareCacheCfg(CACHE_WITH_COLOCATED_FILTER, new ClusterNodeAttributeColocatedBackupFilter(STRETCHED_CELL_ATTR_NAME), true));
+
+ client.getOrCreateCache(
+ prepareCacheCfg(MDC_UNSAFE_CACHE, null, false));
+
+ client.getOrCreateCache(
+ prepareCacheCfg(CACHE_WITH_MDC_UNSAFE_ATTRIBUTE_FILTER,
+ new ClusterNodeAttributeAffinityBackupFilter(ATTR_FOR_UNSAFE_ATTR_FILTER), false));
+
+ checkMdcReadyMetric();
+ }
+
+ /**
+ * Test verifies correctness of metric for cache configuration related to data distribution across DCs for statically configured caches.
+ * Metric should take a {@code false} value if cache configuration doesn't guarantee presence of data copy in each DC
+ * and {@code true} otherwise.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testAffinityCfgMdcSafeMetricForStaticCaches() throws Exception {
+ useStaticCaches = true;
+
+ startClusterAcrossDataCenters(new String[] {DC_ID_0, DC_ID_1}, 2);
+
+ IgniteEx client = startClientGrid(NODES_NUMBER - 1);
+
+ client.cluster().state(ClusterState.ACTIVE);
+
+ checkMdcReadyMetric();
+ }
+
+ /**
+ * Test verifies correctness of metric for partition copies distribution across DCs.
+ * Metric should take a {@code false} value if there is at least one partition which doesn't have copies in all DCs
+ * and {@code true} otherwise.
+ * <p/>
+ * This test considers in-memory caches only.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testPartitionDistributionMetricInMemoryCaches() throws Exception {
+ startClusterAcrossDataCenters(new String[] {DC_ID_0, DC_ID_1}, 2);
+
+ IgniteEx client = startClientGrid(NODES_NUMBER - 1);
+
+ client.getOrCreateCache(prepareCacheCfg(CACHE_WITH_MDC_FILTER, new MdcAffinityBackupFilter(2, 1), true));
+ client.getOrCreateCache(prepareCacheCfg(CACHE_WITH_COLOCATED_FILTER,
+ new ClusterNodeAttributeColocatedBackupFilter(STRETCHED_CELL_ATTR_NAME), true));
+ client.getOrCreateCache(prepareCacheCfg(CACHE_WITH_MDC_SAFE_ATTRIBUTE_FILTER,
+ new ClusterNodeAttributeAffinityBackupFilter(ATTR_DATA_CENTER_ID), true));
+
+ awaitPartitionMapExchange();
+
+ BooleanMetric cacheWithMdcFilterDistributionSafeMetric = findMetricForCache(
+ grid(1),
+ CACHE_WITH_MDC_FILTER,
+ PARTITION_DISTRIBUTION_SAFE_METRIC_NAME);
+ BooleanMetric cacheWithColocatedFilterDistributionSafeMetric = findMetricForCache(
+ grid(1),
+ CACHE_WITH_COLOCATED_FILTER,
+ PARTITION_DISTRIBUTION_SAFE_METRIC_NAME);
+ BooleanMetric cacheWithMdcSafeAttrFilterDistributionSafeMetric = findMetricForCache(
+ grid(1),
+ CACHE_WITH_MDC_SAFE_ATTRIBUTE_FILTER,
+ PARTITION_DISTRIBUTION_SAFE_METRIC_NAME
+ );
+
+ assertNotNull(cacheWithMdcFilterDistributionSafeMetric);
+ assertNotNull(cacheWithColocatedFilterDistributionSafeMetric);
+ assertNotNull(cacheWithMdcSafeAttrFilterDistributionSafeMetric);
+ assertTrue(cacheWithMdcFilterDistributionSafeMetric.value());
+ assertTrue(cacheWithColocatedFilterDistributionSafeMetric.value());
+ assertTrue(cacheWithMdcSafeAttrFilterDistributionSafeMetric.value());
+
+ stopGrid(0);
+
+ assertTrue(cacheWithMdcFilterDistributionSafeMetric.value());
+ assertTrue(cacheWithMdcSafeAttrFilterDistributionSafeMetric.value());
+ assertFalse(cacheWithColocatedFilterDistributionSafeMetric.value());
+ }
+
+ /**
+ * Test verifies correctness of metric for partition copies distribution across DCs.
+ * Metric should take a {@code false} value if there is at least one partition which doesn't have copies in all DCs
+ * and {@code true} otherwise.
+ * <p/>
+ * This test considers persistent caches only and takes into account changes of BaselineTopology.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testPartitionDistributionMetricPersistentCaches() throws Exception {
+ persistenceEnabled = true;
+
+ startClusterAcrossDataCenters(new String[] {DC_ID_0, DC_ID_1}, 2);
+
+ IgniteEx client = startClientGrid(NODES_NUMBER - 1);
+
+ client.cluster().state(ClusterState.ACTIVE);
+
+ client.getOrCreateCache(prepareCacheCfg(
+ CACHE_WITH_MDC_FILTER, new MdcAffinityBackupFilter(2, 1), true));
+ client.getOrCreateCache(prepareCacheCfg(CACHE_WITH_COLOCATED_FILTER,
+ new ClusterNodeAttributeColocatedBackupFilter(STRETCHED_CELL_ATTR_NAME), true));
+ client.getOrCreateCache(prepareCacheCfg(CACHE_WITH_MDC_SAFE_ATTRIBUTE_FILTER,
+ new ClusterNodeAttributeAffinityBackupFilter(ATTR_DATA_CENTER_ID), true));
+
+ awaitPartitionMapExchange();
+
+ BooleanMetric cacheWithMdcFilterDistributionSafeMetric = findMetricForCache(
+ grid(1),
+ CACHE_WITH_MDC_FILTER,
+ PARTITION_DISTRIBUTION_SAFE_METRIC_NAME);
+ BooleanMetric cacheWithColocatedFilterDistributionSafeMetric = findMetricForCache(
+ grid(1),
+ CACHE_WITH_COLOCATED_FILTER,
+ PARTITION_DISTRIBUTION_SAFE_METRIC_NAME);
+ BooleanMetric cacheWithMdcSafeAttrFilterDistributionSafeMetric = findMetricForCache(
+ grid(1),
+ CACHE_WITH_MDC_SAFE_ATTRIBUTE_FILTER,
+ PARTITION_DISTRIBUTION_SAFE_METRIC_NAME
+ );
+
+ assertNotNull(cacheWithMdcFilterDistributionSafeMetric);
+ assertNotNull(cacheWithColocatedFilterDistributionSafeMetric);
+ assertNotNull(cacheWithMdcSafeAttrFilterDistributionSafeMetric);
+ assertTrue(cacheWithMdcFilterDistributionSafeMetric.value());
+ assertTrue(cacheWithColocatedFilterDistributionSafeMetric.value());
+ assertTrue(cacheWithMdcSafeAttrFilterDistributionSafeMetric.value());
+
+ stopGrid(0);
+
+ assertFalse(cacheWithMdcFilterDistributionSafeMetric.value());
+ assertFalse(cacheWithColocatedFilterDistributionSafeMetric.value());
+ assertFalse(cacheWithMdcSafeAttrFilterDistributionSafeMetric.value());
+
+ client.cluster().setBaselineTopology(client.cluster().topologyVersion());
+
+ // MdcAffinityBackupFilter and ClusterNodeAttributeAffinityBackupFilter are able to reassign partitions
+ // after BaselineTopology change, thus distribution safe metric restores to true.
+ assertTrue(cacheWithMdcFilterDistributionSafeMetric.value());
+ assertTrue(cacheWithMdcSafeAttrFilterDistributionSafeMetric.value());
+ // But ClusterNodeAttributeColocatedBackupFilter doesn't reassign partitions after BaselineTopology change
+ // so distribution safe metric for this cache remains false.
+ assertFalse(cacheWithColocatedFilterDistributionSafeMetric.value());
+ }
+
+ /** */
+ private BooleanMetric findMetricForCache(IgniteEx grid, String cacheName, String metricName) {
+ GridCacheContext<Object, Object> cacheCtx = grid.cachex(cacheName).context();
+
+ return cacheCtx.kernalContext().metric().registry(cacheMetricsRegistryName(
+ cacheCtx.name(), cacheCtx.cache().isNear())).findMetric(metricName);
+ }
+
+ /** */
+ private void checkMdcReadyMetric() throws InterruptedException {
+ awaitPartitionMapExchange();
+
+ for (int i = 0; i < NODES_NUMBER; i++) {
+ IgniteEx ig = grid(i);
+
+ for (String cacheName : allCaches) {
+ BooleanMetric cacheMdcSafeMetric = findMetricForCache(ig, cacheName, AFFINITY_CFG_MDC_SAFE_METRIC_NAME);
+
+ if (ig.localNode().isClient()) {
+ assertNull(cacheMdcSafeMetric);
+
+ continue;
+ }
+ else
+ assertNotNull("Grid: " + i + ", cache: " + cacheName, cacheMdcSafeMetric);
+
+ boolean cacheMdcSafe = cacheMdcSafeMetric.value();
+
+ assertEquals(mdcSafeCaches.contains(cacheName), cacheMdcSafe);
+ }
+ }
+ }
+
+ /**
+ * Test verifies that IsCacheAffinityConfigurationMdcSafe metric is NOT registered
+ * when MDC attribute (data center ID) is not configured in the cluster.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testAffinityCfgMdcSafeMetricNotRegisteredOnNonMdcCluster() throws Exception {
+ startGrids(2);
+
+ IgniteEx client = startClientGrid();
+
+ client.cluster().state(ClusterState.ACTIVE);
+
+ client.getOrCreateCache(
+ prepareCacheCfg(CACHE_WITH_MDC_FILTER, new MdcAffinityBackupFilter(2, 1), true));
+
+ client.getOrCreateCache(
+ prepareCacheCfg(MDC_UNSAFE_CACHE, null, false));
+
+ awaitPartitionMapExchange();
+
+ // Verify that IsCacheAffinityConfigurationMdcSafe metric is NOT registered on server nodes
+ for (int i = 0; i < 2; i++) {
+ IgniteEx srv = grid(i);
+
+ for (String cacheName : allCaches) {
+ BooleanMetric cacheMdcSafeMetric = findMetricForCache(srv, cacheName, AFFINITY_CFG_MDC_SAFE_METRIC_NAME);
+
+ assertNull("Metric " + AFFINITY_CFG_MDC_SAFE_METRIC_NAME +
+ " should not be registered when MDC attribute is not configured [grid=" + i +
+ ", cache=" + cacheName + ']', cacheMdcSafeMetric);
+ }
+ }
+
+ // Verify that the metric is also NOT registered on client nodes
+ for (String cacheName : allCaches) {
+ BooleanMetric cacheMdcSafeMetric = findMetricForCache(client, cacheName, AFFINITY_CFG_MDC_SAFE_METRIC_NAME);
+
+ assertNull("Metric " + AFFINITY_CFG_MDC_SAFE_METRIC_NAME +
+ " should not be registered on client node [cache=" + cacheName + ']', cacheMdcSafeMetric);
+ }
+ }
+
+ /**
+ * Test verifies that IsCachePartitionDistributionSafe metric is NOT registered
+ * when MDC attribute (data center ID) is not configured in the cluster.
+ *
+ * @throws Exception If failed.
+ */
+ @Test
+ public void testPartitionDistributionMetricNotRegisteredOnNonMdcCluster() throws Exception {
+ startGrids(2);
+
+ IgniteEx client = startClientGrid();
+
+ client.cluster().state(ClusterState.ACTIVE);
+
+ client.getOrCreateCache(
+ prepareCacheCfg(CACHE_WITH_MDC_FILTER, new MdcAffinityBackupFilter(2, 1), true));
+
+ client.getOrCreateCache(
+ prepareCacheCfg(MDC_UNSAFE_CACHE, null, false));
+
+ awaitPartitionMapExchange();
+
+ // Verify that IsCachePartitionDistributionSafe metric is NOT registered on server nodes
+ for (int i = 0; i < 2; i++) {
+ IgniteEx srv = grid(i);
+
+ for (String cacheName : allCaches) {
+ BooleanMetric partDistMetric = findMetricForCache(srv, cacheName, PARTITION_DISTRIBUTION_SAFE_METRIC_NAME);
+
+ assertNull("Metric " + PARTITION_DISTRIBUTION_SAFE_METRIC_NAME +
+ " should not be registered when MDC attribute is not configured [grid=" + i +
+ ", cache=" + cacheName + ']', partDistMetric);
+ }
+ }
+
+ // Verify that the metric is also NOT registered on client nodes
+ for (String cacheName : allCaches) {
+ BooleanMetric partDistMetric = findMetricForCache(client, cacheName, PARTITION_DISTRIBUTION_SAFE_METRIC_NAME);
+
+ assertNull("Metric " + PARTITION_DISTRIBUTION_SAFE_METRIC_NAME +
+ " should not be registered on client node [cache=" + cacheName + ']', partDistMetric);
+ }
+ }
+
+ /** */
+ private IgniteEx startClusterAcrossDataCenters(String[] dcIds, int nodesPerDc) throws Exception {
+ int nodeIdx = 0;
+ IgniteEx lastNode = null;
+
+ for (String dcId : dcIds) {
+ this.dcId = dcId;
+
+ for (int i = 0; i < nodesPerDc; i++) {
+ cellId = STRETCHED_CELL_IDS[i];
+
+ lastNode = startGrid(nodeIdx++);
+ }
+ }
+
+ return lastNode;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
index cd1f17b..20a18bf 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteCacheGetRestartTest.java
@@ -47,7 +47,7 @@
*/
public class IgniteCacheGetRestartTest extends GridCommonAbstractTest {
/** */
- private static final long TEST_TIME = 60_000;
+ private static final long TEST_TIME = GridTestUtils.SF.applyLB(60_000, 10_000);
/** */
private static final int SRVS = 3;
@@ -56,7 +56,7 @@
private static final int CLIENTS = 1;
/** */
- private static final int KEYS = 100_000;
+ private static final int KEYS = GridTestUtils.SF.applyLB(100_000, 10_000);
/** */
private ThreadLocal<Boolean> client = new ThreadLocal<>();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWithWriteThroughCheckTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWithWriteThroughCheckTest.java
new file mode 100644
index 0000000..b58264f
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWithWriteThroughCheckTest.java
@@ -0,0 +1,316 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.cache.distributed;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CountDownLatch;
+import javax.cache.Cache;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.cache.CacheAtomicityMode;
+import org.apache.ignite.cache.CacheMode;
+import org.apache.ignite.cache.CacheWriteSynchronizationMode;
+import org.apache.ignite.cache.store.CacheStoreAdapter;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.events.DiscoveryEvent;
+import org.apache.ignite.internal.GridTopic;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.TestRecordingCommunicationSpi;
+import org.apache.ignite.internal.managers.communication.GridMessageListener;
+import org.apache.ignite.internal.managers.discovery.DiscoCache;
+import org.apache.ignite.internal.managers.eventstorage.DiscoveryEventListener;
+import org.apache.ignite.internal.managers.eventstorage.HighPriorityListener;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareResponse;
+import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
+import org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
+import org.apache.ignite.internal.util.typedef.G;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteBiInClosure;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.apache.ignite.transactions.Transaction;
+import org.apache.ignite.transactions.TransactionConcurrency;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.apache.ignite.events.EventType.EVT_NODE_FAILED;
+import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
+import static org.apache.ignite.testframework.GridTestUtils.cartesianProduct;
+import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
+import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
+import static org.apache.ignite.transactions.TransactionIsolation.READ_COMMITTED;
+
+/** */
+@RunWith(Parameterized.class)
+public class IgniteTxCacheWithWriteThroughCheckTest extends GridCommonAbstractTest {
+ /** Node kill trigger. */
+ private static CountDownLatch nodeKillLatch;
+
+ /** Node left on backup. */
+ private static CountDownLatch nodeLeftRegisteredOnBackup;
+
+ /** */
+ @Parameterized.Parameter(0)
+ public Boolean withPersistence;
+
+ /** */
+ @Parameterized.Parameter(1)
+ public TransactionConcurrency conc;
+
+ /** */
+ @Parameterized.Parameters(name = "withPersistence={0}, concMode={1}")
+ public static Collection<Object[]> parameters() {
+ return cartesianProduct(
+ List.of(true, false),
+ List.of(OPTIMISTIC, PESSIMISTIC)
+ );
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ stopAllGrids();
+
+ if (withPersistence)
+ cleanPersistenceDir();
+
+ nodeKillLatch = new CountDownLatch(1);
+ nodeLeftRegisteredOnBackup = new CountDownLatch(1);
+
+ MapCacheStore.salvagedLatch = new CountDownLatch(1);
+ MapCacheStore.txCoordStoreLatch = new CountDownLatch(2);
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ try {
+ for (Ignite node : G.allGrids()) {
+ Collection<IgniteInternalTx> txs = ((IgniteEx)node).context().cache().context().tm().activeTransactions();
+
+ assertTrue("Unfinished txs [node=" + node.name() + ", txs=" + txs + ']', txs.isEmpty());
+ }
+ }
+ finally {
+ stopAllGrids();
+
+ super.afterTest();
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ return super.getConfiguration(igniteInstanceName)
+ .setDataStorageConfiguration(new DataStorageConfiguration()
+ .setDefaultDataRegionConfiguration(new DataRegionConfiguration().setPersistenceEnabled(withPersistence)))
+ .setConsistentId(igniteInstanceName)
+ .setCommunicationSpi(new TestRecordingCommunicationSpi());
+ }
+
+ /** Test scenario:
+ * <ul>
+ * <li>Start 3 nodes [node0, node1, node2].</li>
+ * <li>Initialize put operation into transactional cache where [node1] holds primary partition for such insertion.</li>
+ * <li>Kill [node1] right after tx PREPARE stage is completed (it triggers tx recovery procedure).</li>
+ * </ul>
+ *
+ * @see IgniteTxManager#salvageTx(IgniteInternalTx)
+ */
+ @Test
+ public void testTxCoordinatorLeftClusterWithEnabledReadWriteThrough() throws Exception {
+ // Sequential start is important here.
+ IgniteEx nodeCoord = startGrid(0);
+ // Near node.
+ IgniteEx nodePrimary = startGrid(1);
+ // Backup node.
+ IgniteEx nodeBackup = startGrid(2);
+
+ int firstVal = 1;
+ int secondVal = 2;
+
+ nodeCoord.cluster().state(ClusterState.ACTIVE);
+
+ CacheConfiguration<Object, Object> ccfgWithWriteThrough = configureCache(DEFAULT_CACHE_NAME);
+ IgniteCache<Object, Object> cache = nodeCoord.createCache(ccfgWithWriteThrough);
+
+ Integer primaryKey = primaryKey(nodePrimary.cache(DEFAULT_CACHE_NAME));
+
+ try (Transaction tx = nodeCoord.transactions().txStart()) {
+ cache.put(primaryKey, firstVal);
+
+ tx.commit();
+ }
+
+ nodeCoord.cluster().state(ClusterState.INACTIVE);
+
+ GridMessageListener lsnr = new GridMessageListener() {
+ @Override public void onMessage(UUID nodeId, Object msg, byte plc) {
+ if (msg instanceof GridNearTxPrepareResponse) {
+ IgniteTxManager txMgr = nodeBackup.context().cache().context().tm();
+ Collection<IgniteInternalTx> txs = txMgr.activeTransactions();
+
+ assertEquals(1, txs.size());
+ IgniteInternalTx idleTx = txs.iterator().next();
+ assertFalse(idleTx.local());
+
+ Map<GridCacheVersion, IgniteInternalTx> activeTx = GridTestUtils.getFieldValue(txMgr, "idMap");
+ assertEquals(1, activeTx.size());
+
+ nodeKillLatch.countDown();
+
+ U.awaitQuiet(nodeLeftRegisteredOnBackup);
+
+ // Let`s wait until all discovery events have been processed on backup node.
+ doSleep(1000);
+
+ MapCacheStore.txCoordStoreLatch.countDown();
+ }
+ }
+ };
+
+ nodeCoord.context().io().removeMessageListener(GridTopic.TOPIC_CACHE); // Remove old cache listener.
+ nodeCoord.context().io().addMessageListener(GridTopic.TOPIC_CACHE, lsnr); // Register as first listener.
+ nodeCoord.context().cache().context().io().start0(); // Register cache listener again.
+
+ nodeCoord.cluster().state(ClusterState.ACTIVE);
+ awaitPartitionMapExchange(true, true, null);
+
+ nodeCoord.context().event().addDiscoveryEventListener(new BeforeRecoveryListener(), EVT_NODE_FAILED, EVT_NODE_LEFT);
+ nodeBackup.context().event().addDiscoveryEventListener(new BeforeBackupRecoveryListener(), EVT_NODE_FAILED, EVT_NODE_LEFT);
+
+ IgniteInternalFuture<Object> stopFut = GridTestUtils.runAsync(() -> {
+ nodeKillLatch.await();
+ nodePrimary.close();
+ });
+
+ try (Transaction tx = nodeCoord.transactions().txStart(conc, READ_COMMITTED)) {
+ cache.put(primaryKey, secondVal);
+
+ tx.commit();
+ }
+ catch (Throwable th) {
+ fail("Unexpected exception: " + th);
+ }
+
+ stopFut.get(getTestTimeout());
+
+ awaitPartitionMapExchange();
+
+ assertEquals(secondVal, nodeCoord.cache(DEFAULT_CACHE_NAME).get(primaryKey));
+ assertEquals(secondVal, nodeBackup.cache(DEFAULT_CACHE_NAME).get(primaryKey));
+
+ // Check value after restart.
+ stopAllGrids();
+ startGridsMultiThreaded(3);
+
+ awaitPartitionMapExchange(true, true, null);
+
+ for (Ignite ignite : G.allGrids())
+ assertEquals(secondVal, ignite.getOrCreateCache(ccfgWithWriteThrough).get(primaryKey));
+ }
+
+ /** */
+ private CacheConfiguration<Object, Object> configureCache(String cacheName) {
+ CacheConfiguration<Object, Object> ccfg = new CacheConfiguration<>(cacheName);
+ ccfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
+ ccfg.setCacheMode(CacheMode.REPLICATED);
+ ccfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
+
+ ccfg.setReadThrough(true);
+ ccfg.setWriteThrough(true);
+ ccfg.setCacheStoreFactory(MapCacheStore::new);
+
+ return ccfg;
+ }
+
+ /** */
+ public static class MapCacheStore extends CacheStoreAdapter<Object, Object> {
+ /** Store map. */
+ private static final Map<Object, Object> map = new ConcurrentHashMap<>();
+
+ /** */
+ static CountDownLatch salvagedLatch;
+
+ /** */
+ static CountDownLatch txCoordStoreLatch;
+
+ /** {@inheritDoc} */
+ @Override public void loadCache(IgniteBiInClosure<Object, Object> clo, Object... args) {
+ for (Map.Entry<Object, Object> e : map.entrySet())
+ clo.apply(e.getKey(), e.getValue());
+ }
+
+ /** {@inheritDoc} */
+ @Override public Object load(Object key) {
+ Object val = map.get(key);
+
+ salvagedLatch.countDown();
+
+ return val;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void write(Cache.Entry<?, ?> e) {
+ map.put(e.getKey(), e.getValue());
+
+ txCoordStoreLatch.countDown();
+ }
+
+ /** {@inheritDoc} */
+ @Override public void delete(Object key) {
+ map.remove(key);
+ }
+ }
+
+ /** */
+ private static class BeforeRecoveryListener implements DiscoveryEventListener, HighPriorityListener {
+ /** {@inheritDoc} */
+ @Override public void onEvent(DiscoveryEvent evt, DiscoCache discoCache) {
+ U.awaitQuiet(MapCacheStore.txCoordStoreLatch);
+ }
+
+ /** {@inheritDoc} */
+ @Override public int order() {
+ return -1;
+ }
+ }
+
+ /** */
+ private static class BeforeBackupRecoveryListener implements DiscoveryEventListener, HighPriorityListener {
+ /** {@inheritDoc} */
+ @Override public void onEvent(DiscoveryEvent evt, DiscoCache discoCache) {
+ nodeLeftRegisteredOnBackup.countDown();
+ }
+
+ /** {@inheritDoc} */
+ @Override public int order() {
+ return -1;
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
index 7d05a9b..a3c805e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/IgniteTxCacheWriteSynchronizationModesMultithreadedTest.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.processors.cache.distributed;
+import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
@@ -37,7 +38,9 @@
import org.apache.ignite.cache.store.CacheStoreAdapter;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.processors.cache.transactions.IgniteInternalTx;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.G;
@@ -93,6 +96,17 @@
assertTrue(grid(SRVS + i).configuration().isClientMode());
}
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ for (Ignite node : G.allGrids()) {
+ Collection<IgniteInternalTx> txs = ((IgniteEx)node).context().cache().context().tm().activeTransactions();
+
+ assertTrue("Unfinished txs [node=" + node.name() + ", txs=" + txs + ']', txs.isEmpty());
+ }
+
+ super.afterTest();
+ }
+
/**
* @throws Exception If failed.
*/
@@ -291,7 +305,7 @@
* @throws Exception If failed.
*/
private void commitMultithreaded(final IgniteBiInClosure<Ignite, IgniteCache<Integer, Integer>> c) throws Exception {
- final long stopTime = System.currentTimeMillis() + 10_000;
+ final long stopTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(10_000, 2_000);
GridTestUtils.runMultiThreaded(new IgniteInClosure<Integer>() {
@Override public void apply(Integer idx) {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheTxRecoveryRollbackTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheTxRecoveryRollbackTest.java
index 937b51c..35f8053 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheTxRecoveryRollbackTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/distributed/dht/IgniteCacheTxRecoveryRollbackTest.java
@@ -36,8 +36,8 @@
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.NearCacheConfiguration;
+import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxFinishRequest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearTxPrepareResponse;
@@ -86,7 +86,7 @@
@Override protected void afterTest() throws Exception {
try {
for (Ignite node : G.allGrids()) {
- Collection<IgniteInternalTx> txs = ((IgniteKernal)node).context().cache().context().tm().activeTransactions();
+ Collection<IgniteInternalTx> txs = ((IgniteEx)node).context().cache().context().tm().activeTransactions();
assertTrue("Unfinished txs [node=" + node.name() + ", txs=" + txs + ']', txs.isEmpty());
}
@@ -379,7 +379,7 @@
final IgniteCache<Integer, Integer> clientCache = client.cache(DEFAULT_CACHE_NAME);
IgniteInternalFuture<?> fut = GridTestUtils.runAsync(new Callable<Void>() {
- @Override public Void call() throws Exception {
+ @Override public Void call() {
log.info("Start put");
clientCache.put(key, 2);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheStoreSessionWriteBehindAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheStoreSessionWriteBehindAbstractTest.java
index 0a86ed9..c964154 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheStoreSessionWriteBehindAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/integration/IgniteCacheStoreSessionWriteBehindAbstractTest.java
@@ -75,8 +75,8 @@
* @return Cache configuration.
* @throws Exception In case of error.
*/
- @Override @SuppressWarnings("unchecked")
- protected CacheConfiguration cacheConfiguration(String igniteInstanceName) throws Exception {
+ @SuppressWarnings("unchecked")
+ @Override protected CacheConfiguration cacheConfiguration(String igniteInstanceName) throws Exception {
CacheConfiguration ccfg0 = super.cacheConfiguration(igniteInstanceName);
ccfg0.setReadThrough(true);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsTransactionsHangTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsTransactionsHangTest.java
index 5aa594f..bf95ec1 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsTransactionsHangTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/IgnitePdsTransactionsHangTest.java
@@ -40,6 +40,7 @@
import org.apache.ignite.configuration.TransactionConfiguration;
import org.apache.ignite.internal.processors.cache.transactions.IgniteTxManager;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionIsolation;
@@ -68,7 +69,7 @@
public static final int WARM_UP_PERIOD = 20;
/** Duration. */
- public static final int DURATION = 180;
+ public static final int DURATION = GridTestUtils.SF.applyLB(180, 40);
/** Maximum count of inserted keys. */
public static final int MAX_KEY_COUNT = 500_000;
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalRebalanceTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalRebalanceTest.java
index f609473..61144f4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalRebalanceTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/db/wal/IgniteWalRebalanceTest.java
@@ -496,12 +496,11 @@
forceCheckpoint();
- stopAllGrids();
+ stopGrid(1);
+ stopGrid(2);
// Rewrite data to trigger further rebalance.
- IgniteEx supplierNode = startGrid(0);
-
- supplierNode.cluster().state(ACTIVE);
+ IgniteEx supplierNode = grid(0);
IgniteCache<Object, Object> cache = supplierNode.cache(CACHE_NAME);
@@ -532,12 +531,15 @@
getTestTimeout()
);
+ // Hold the demand until the WAL read is armed to fail, so the error fires mid-rebalance.
+ TestRecordingCommunicationSpi spi = (TestRecordingCommunicationSpi)demanderNode.configuration().getCommunicationSpi();
+
+ spi.waitForBlocked();
+
// Inject I/O factory which can throw exception during WAL read on supplier node.
FailingIOFactory ioFactory = injectFailingIOFactory(supplierNode);
// Resume rebalance process.
- TestRecordingCommunicationSpi spi = (TestRecordingCommunicationSpi)demanderNode.configuration().getCommunicationSpi();
-
spi.stopBlock();
// Wait till rebalance will be failed and cancelled.
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotSelfTest.java
index ee23e27..570761d 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IgniteClusterSnapshotSelfTest.java
@@ -849,81 +849,99 @@
/** @throws Exception If fails. */
@Test
public void testClusterSnapshotMetrics() throws Exception {
- String newSnapshotName = SNAPSHOT_NAME + "_new";
CountDownLatch deltaApply = new CountDownLatch(1);
CountDownLatch deltaBlock = new CountDownLatch(1);
IgniteEx ignite = startGridsWithCache(2, dfltCacheCfg, CACHE_KEYS_RANGE);
- MetricRegistry mreg0 = ignite.context().metric().registry(SNAPSHOT_METRICS);
-
- LongMetric startTime = mreg0.findMetric("LastSnapshotStartTime");
- LongMetric endTime = mreg0.findMetric("LastSnapshotEndTime");
- ObjectGauge<String> snpName = mreg0.findMetric("LastSnapshotName");
- ObjectGauge<String> errMsg = mreg0.findMetric("LastSnapshotErrorMessage");
- ObjectGauge<List<String>> snpList = mreg0.findMetric("LocalSnapshotNames");
+ startClientGrid();
// Snapshot process will be blocked when delta partition files processing starts.
snp(ignite).localSnapshotSenderFactory(
blockingLocalSnapshotSender(ignite, deltaApply, deltaBlock));
- assertEquals("Snapshot start time must be undefined prior to snapshot operation started.",
- 0, startTime.value());
- assertEquals("Snapshot end time must be undefined to snapshot operation started.",
- 0, endTime.value());
- assertTrue("Snapshot name must not exist prior to snapshot operation started.", snpName.value().isEmpty());
- assertTrue("Snapshot error message must null prior to snapshot operation started.", errMsg.value().isEmpty());
- assertTrue("Snapshots on local node must not exist", snpList.value().isEmpty());
+ for (Ignite g : G.allGrids()) {
+ MetricRegistry mreg = ((IgniteEx)g).context().metric().registry(SNAPSHOT_METRICS);
+
+ LongMetric startTime = mreg.findMetric("LastSnapshotStartTime");
+ LongMetric endTime = mreg.findMetric("LastSnapshotEndTime");
+ ObjectGauge<String> snpName = mreg.findMetric("LastSnapshotName");
+ ObjectGauge<String> errMsg = mreg.findMetric("LastSnapshotErrorMessage");
+ ObjectGauge<List<String>> snpList = mreg.findMetric("LocalSnapshotNames");
+
+ if (g.cluster().localNode().isClient()) {
+ assertNull("Snapshot start time must not be created on a client node.", startTime);
+ assertNull("Snapshot end time must not be created on a client node.", endTime);
+ assertNull("Snapshot name must not be created on a client node.", snpName);
+ assertNull("Snapshot error message must not be created on a client node.", errMsg);
+ assertNull("Snapshot local names must not be created on a client node.", snpList);
+
+ continue;
+ }
+
+ assertEquals("Snapshot start time must be undefined prior to snapshot operation started.",
+ 0, startTime.value());
+ assertEquals("Snapshot end time must be undefined to snapshot operation started.",
+ 0, endTime.value());
+ assertTrue("Snapshot name must not exist prior to snapshot operation started.", snpName.value().isEmpty());
+ assertTrue("Snapshot error message must null prior to snapshot operation started.", errMsg.value().isEmpty());
+ assertTrue("Snapshots on local node must not exist", snpList.value().isEmpty());
+ }
long cutoffStartTime = U.currentTimeMillis();
- IgniteFuture<Void> fut0 = snp(ignite).createSnapshot(SNAPSHOT_NAME, null, false, onlyPrimary);
+ IgniteFuture<Void> fut = snp(ignite).createSnapshot(SNAPSHOT_NAME, null, false, onlyPrimary);
- U.await(deltaApply);
+ for (Ignite g : G.allGrids()) {
+ MetricRegistry mreg = ((IgniteEx)g).context().metric().registry(SNAPSHOT_METRICS);
- assertTrue("Snapshot start time must be set prior to snapshot operation started " +
- "[startTime=" + startTime.value() + ", cutoffTime=" + cutoffStartTime + ']',
- startTime.value() >= cutoffStartTime);
- assertEquals("Snapshot end time must be zero prior to snapshot operation started.",
- 0, endTime.value());
- assertEquals("Snapshot name must be set prior to snapshot operation started.",
- SNAPSHOT_NAME, snpName.value());
- assertTrue("Snapshot error message must null prior to snapshot operation started.",
- errMsg.value().isEmpty());
+ LongMetric startTime = mreg.findMetric("LastSnapshotStartTime");
+ LongMetric endTime = mreg.findMetric("LastSnapshotEndTime");
+ ObjectGauge<String> snpName = mreg.findMetric("LastSnapshotName");
+ ObjectGauge<String> errMsg = mreg.findMetric("LastSnapshotErrorMessage");
- IgniteFuture<Void> fut1 = snp(grid(1)).createSnapshot(newSnapshotName, null, false, onlyPrimary);
+ if (g.cluster().localNode().isClient()) {
+ assertNull("Snapshot start time must not be created on a client node.", startTime);
+ assertNull("Snapshot end time must not be created on a client node.", endTime);
+ assertNull("Snapshot name must not be created on a client node.", snpName);
+ assertNull("Snapshot error message must not be created on a client node.", errMsg);
- assertThrowsWithCause((Callable<Object>)fut1::get, IgniteException.class);
+ continue;
+ }
- MetricRegistry mreg1 = grid(1).context().metric().registry(SNAPSHOT_METRICS);
+ assertTrue("Snapshot start time must be set prior to snapshot operation started " +
+ "[startTime=" + startTime.value() + ", cutoffTime=" + cutoffStartTime + ']',
+ waitForCondition(() -> startTime.value() >= cutoffStartTime, getTestTimeout(), 30));
- LongMetric startTime1 = mreg1.findMetric("LastSnapshotStartTime");
- LongMetric endTime1 = mreg1.findMetric("LastSnapshotEndTime");
- ObjectGauge<String> snpName1 = mreg1.findMetric("LastSnapshotName");
- ObjectGauge<String> errMsg1 = mreg1.findMetric("LastSnapshotErrorMessage");
+ assertTrue("Snapshot end time must be zero prior to snapshot operation started.",
+ waitForCondition(() -> 0 == endTime.value(), 30));
- assertTrue("Snapshot start time must be greater than zero for finished snapshot.",
- startTime1.value() > 0);
- assertEquals("Snapshot end time must zero for failed on start snapshots.",
- 0, endTime1.value());
- assertEquals("Snapshot name must be set when snapshot operation already finished.",
- newSnapshotName, snpName1.value());
- assertNotNull("Concurrent snapshot operation must failed.",
- errMsg1.value());
+ assertEquals("Snapshot name must be set prior to snapshot operation started.",
+ SNAPSHOT_NAME, snpName.value());
+
+ assertTrue("Snapshot error message must null prior to snapshot operation started.",
+ errMsg.value().isEmpty());
+ }
deltaBlock.countDown();
- fut0.get();
+ fut.get();
- assertTrue("Snapshot start time must be greater than zero for finished snapshot.",
- startTime.value() > 0);
- assertTrue("Snapshot end time must be greater than zero for finished snapshot.",
- endTime.value() > 0);
- assertEquals("Snapshot name must be set when snapshot operation already finished.",
- SNAPSHOT_NAME, snpName.value());
- assertTrue("Concurrent snapshot operation must finished successfully.",
- errMsg.value().isEmpty());
- assertEquals("Only the first snapshot must be created and stored on disk.",
- Collections.singletonList(SNAPSHOT_NAME), snpList.value());
+ for (Ignite g : G.allGrids()) {
+ MetricRegistry mreg = ((IgniteEx)g).context().metric().registry(SNAPSHOT_METRICS);
+
+ LongMetric startTime = mreg.findMetric("LastSnapshotStartTime");
+ LongMetric endTime = mreg.findMetric("LastSnapshotEndTime");
+
+ if (g.cluster().localNode().isClient()) {
+ assertNull("Snapshot start time must not be created on a client node.", startTime);
+ assertNull("Snapshot end time must not be created on a client node.", endTime);
+
+ continue;
+ }
+
+ assertTrue(waitForCondition(() -> endTime.value() != 0L && startTime.value() != 0 && endTime.value() > startTime.value(),
+ getTestTimeout()));
+ }
}
/** @throws Exception If fails. */
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/dump/IgniteCacheDumpSeveralDiskTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/dump/IgniteCacheDumpSeveralDiskTest.java
new file mode 100644
index 0000000..9eb4055
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/dump/IgniteCacheDumpSeveralDiskTest.java
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ignite.internal.processors.cache.persistence.snapshot.dump;
+
+import java.io.File;
+import java.util.Collection;
+import java.util.stream.IntStream;
+import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
+import org.apache.ignite.cluster.ClusterState;
+import org.apache.ignite.configuration.CacheConfiguration;
+import org.apache.ignite.configuration.DataRegionConfiguration;
+import org.apache.ignite.configuration.DataStorageConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jetbrains.annotations.NotNull;
+import org.junit.Test;
+
+/** */
+public class IgniteCacheDumpSeveralDiskTest extends GridCommonAbstractTest {
+ /** */
+ public static final String NVME_1 = "nvme1";
+
+ /** */
+ public static final String NVME_2 = "nvme2";
+
+ /** */
+ public static final String NVME_4 = "nvme4";
+
+ /** */
+ public static final String NVME_5 = "nvme5";
+
+ /** {@inheritDoc} */
+ @Override protected void beforeTestsStarted() throws Exception {
+ super.beforeTestsStarted();
+
+ cleanPersistenceDir();
+
+ U.delete(new File(U.defaultWorkDirectory()));
+
+ assertTrue(U.mkdirs(new File(path(NVME_5))));
+
+ IgniteEx srv = startGrid(0);
+
+ srv.cluster().state(ClusterState.ACTIVE);
+
+ IgniteCache<Object, Object> c = srv.createCache(new CacheConfiguration<>("cache")
+ .setStoragePaths(path(NVME_1), path(NVME_2), path(NVME_4))
+ .setAffinity(new RendezvousAffinityFunction().setPartitions(3)));
+
+ IntStream.range(0, 10).forEach(i -> c.put(i, i));
+ }
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ DataStorageConfiguration dsCfg = new DataStorageConfiguration();
+
+ dsCfg
+ .setStoragePath(path(NVME_1))
+ .setExtraStoragePaths(path(NVME_2), path(NVME_4))
+ .setDefaultDataRegionConfiguration(new DataRegionConfiguration().setPersistenceEnabled(true));
+
+ return cfg.setDataStorageConfiguration(dsCfg).setSnapshotPath("/dev/null");
+ }
+
+ /** */
+ @Test
+ public void testSeveralDisksDump() throws Exception {
+ createSnapshot(true);
+ }
+
+ /** */
+ @Test
+ public void testSeveralDisksSnapshot() throws Exception {
+ createSnapshot(false);
+ }
+
+ /** */
+ private void createSnapshot(boolean dump) throws Exception {
+ String name = dump ? "dump" : "snapshot";
+ String snpPath = path("nvme5/snapshot");
+ Collection<String> cacheGrpNames = null;
+ boolean incremental = false;
+ boolean onlyPrimary = true;
+ boolean compress = false;
+ boolean encrypt = false;
+
+ grid(0).context().cache().context().snapshotMgr().createSnapshot(
+ name,
+ snpPath,
+ cacheGrpNames,
+ incremental,
+ onlyPrimary,
+ dump,
+ compress,
+ encrypt,
+ false,
+ false
+ ).get();
+ }
+
+ /** */
+ private static @NotNull String path(String path) throws IgniteCheckedException {
+ return U.defaultWorkDirectory() + "/" + path;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotJoiningClientTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotJoiningClientTest.java
index fd42dc1..d40a168 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotJoiningClientTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotJoiningClientTest.java
@@ -29,6 +29,7 @@
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.pagemem.wal.WALIterator;
import org.apache.ignite.internal.pagemem.wal.record.IncrementalSnapshotFinishRecord;
import org.apache.ignite.internal.pagemem.wal.record.WALRecord;
@@ -183,7 +184,7 @@
if (rec.type() == WALRecord.RecordType.INCREMENTAL_SNAPSHOT_FINISH_RECORD) {
IncrementalSnapshotFinishRecord finRec = (IncrementalSnapshotFinishRecord)rec;
- assertTrue(finRec.excluded().stream().anyMatch(id -> id.asIgniteUuid().equals(txId)));
+ assertTrue(finRec.excluded().stream().anyMatch(id -> BinaryUtils.asIgniteUuid(id).equals(txId)));
return true;
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotRestoreTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotRestoreTest.java
index 5cad5b4..d6553f9 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotRestoreTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotRestoreTest.java
@@ -53,6 +53,7 @@
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
import org.apache.ignite.internal.binary.BinaryContext;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.management.consistency.ConsistencyRepairCommandArg;
import org.apache.ignite.internal.management.consistency.ConsistencyRepairTask;
import org.apache.ignite.internal.management.consistency.ConsistencyTaskResult;
@@ -675,7 +676,7 @@
for (int n = 1; n < nodes(); n++) {
TestRecordingCommunicationSpi.spi(grid(n)).blockMessages((node, msg) ->
msg instanceof GridNearTxPrepareResponse
- && ((GridNearTxPrepareResponse)msg).version().asIgniteUuid().equals(exclTxId.get()));
+ && BinaryUtils.asIgniteUuid(((GridNearTxPrepareResponse)msg).version()).equals(exclTxId.get()));
}
msgBlkSet.countDown();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotWarnAtomicCachesTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotWarnAtomicCachesTest.java
index 1806cee..68911b3 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotWarnAtomicCachesTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/incremental/IncrementalSnapshotWarnAtomicCachesTest.java
@@ -19,6 +19,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -112,8 +113,8 @@
/** */
public void checkCachesSnapshotCreationAndRestore(CacheConfiguration<Integer, Integer>... ccfgs) throws Exception {
- List<Integer> allWarnCaches = new ArrayList<>();
- Map<String, List<Integer>> warnCachesByGrps = new HashMap<>();
+ List<String> allWarnCaches = new ArrayList<>();
+ Map<String, List<String>> warnCachesByGrps = new HashMap<>();
for (CacheConfiguration<?, ?> ccfg: ccfgs) {
if (ccfg.getAtomicityMode() == CacheAtomicityMode.ATOMIC && ccfg.getBackups() > 0) {
@@ -122,37 +123,25 @@
warnCachesByGrps.compute(grpName, (grp, caches) -> {
caches = caches == null ? new ArrayList<>() : caches;
- int cacheNum = Integer.parseInt(ccfg.getName().replace("cache", ""));
+ caches.add(ccfg.getName());
- caches.add(cacheNum);
-
- allWarnCaches.add(cacheNum);
+ allWarnCaches.add(ccfg.getName());
return caches;
});
}
}
- checkWarnMessageOnCreateSnapshot(cachesPattern(allWarnCaches), ccfgs);
- checkWarnMessageOnRestoreSnapshot(cachesPattern(allWarnCaches), null);
+ checkWarnMessageOnCreateSnapshot(allWarnCaches, ccfgs);
+ checkWarnMessageOnRestoreSnapshot(allWarnCaches, null);
for (String grp: warnCachesByGrps.keySet())
- checkWarnMessageOnRestoreSnapshot(cachesPattern(warnCachesByGrps.get(grp)), F.asList(grp));
- }
-
- /** Transforms cache numbers to cache pattern. For example, [0, 1] -> cache[0,1], cache[0,1]. */
- private @Nullable String cachesPattern(List<Integer> cacheNums) {
- if (cacheNums.isEmpty())
- return null;
-
- return cacheNums.stream()
- .map(c -> "cache" + cacheNums)
- .collect(Collectors.joining(", "));
+ checkWarnMessageOnRestoreSnapshot(warnCachesByGrps.get(grp), F.asList(grp));
}
/** */
private void checkWarnMessageOnCreateSnapshot(
- @Nullable String warnAtomicCaches,
+ Collection<String> warnAtomicCaches,
CacheConfiguration<Integer, Integer>... ccfgs
) throws Exception {
this.ccfgs = ccfgs;
@@ -172,25 +161,25 @@
g.snapshot().createSnapshot(SNP).get(getTestTimeout());
- assertTrue(warnAtomicCaches, lsnr.check());
+ assertTrue(lsnr.check());
for (CacheConfiguration<Integer, Integer> c: ccfgs) {
for (int i = 1_000; i < 2_000; i++)
g.cache(c.getName()).put(i, i);
}
- lsnr = warnLogListener(warnAtomicCaches, warnAtomicCaches == null ? 0 : 1);
+ lsnr = warnLogListener(warnAtomicCaches, warnAtomicCaches.isEmpty() ? 0 : 3);
lsnLogger.registerListener(lsnr);
g.snapshot().createIncrementalSnapshot(SNP).get(getTestTimeout());
- assertTrue(warnAtomicCaches, lsnr.check());
+ assertTrue(lsnr.check(getTestTimeout()));
}
/** */
private void checkWarnMessageOnRestoreSnapshot(
- @Nullable String warnAtomicCaches,
+ Collection<String> warnAtomicCaches,
@Nullable Collection<String> restoreCacheGrps
) throws Exception {
stopAllGrids();
@@ -211,26 +200,36 @@
g.snapshot().restoreSnapshot(SNP, restoreCacheGrps).get(getTestTimeout());
- assertTrue(warnAtomicCaches + " " + restoreCacheGrps, lsnr.check());
+ assertTrue(lsnr.check());
g.destroyCaches(g.cacheNames());
awaitPartitionMapExchange();
- lsnr = warnLogListener(warnAtomicCaches, warnAtomicCaches == null ? 0 : 1);
+ lsnr = warnLogListener(warnAtomicCaches, warnAtomicCaches.isEmpty() ? 0 : 1);
lsnLogger.registerListener(lsnr);
g.snapshot().restoreSnapshot(SNP, restoreCacheGrps, 1).get(getTestTimeout());
- assertTrue(warnAtomicCaches + " " + restoreCacheGrps, lsnr.check());
+ assertTrue(lsnr.check());
}
/** */
- private LogListener warnLogListener(@Nullable String atomicCaches, int times) {
+ private LogListener warnLogListener(Collection<String> atomicCaches, int times) {
+ String cachesStr = null;
+
+ if (atomicCaches.size() == 1)
+ cachesStr = F.first(atomicCaches);
+ else if (atomicCaches.size() > 1) {
+ cachesStr = "((" + String.join(", ", atomicCaches) + ')';
+
+ cachesStr += "|(" + atomicCaches.stream().sorted(Comparator.reverseOrder()).collect(Collectors.joining(", ")) + "))";
+ }
+
Pattern p = Pattern.compile(
"Incremental snapshot \\[snpName=" + SNP + ", incIdx=1] contains ATOMIC caches with backups:"
- + (atomicCaches == null ? "" : " \\[" + atomicCaches) + ']');
+ + (cachesStr == null ? "" : " \\[" + cachesStr) + "]");
return LogListener.matches(p).times(times).build();
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIOFreeSizeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIOFreeSizeTest.java
index 9f4d82e..dadd1bd 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIOFreeSizeTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/tree/io/PageIOFreeSizeTest.java
@@ -65,8 +65,10 @@
/** */
private final PageMetrics mock = new PageMetrics() {
+ /** */
final LongAdderMetric totalPages = new LongAdderMetric("a", null);
+ /** */
final LongAdderMetric idxPages = new LongAdderMetric("b", null);
@Override public LongAdderMetric totalPages() {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/SegmentedRingByteBufferTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/SegmentedRingByteBufferTest.java
index 22de6e1..3f0e96c 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/SegmentedRingByteBufferTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/wal/SegmentedRingByteBufferTest.java
@@ -384,7 +384,7 @@
}
}, producerCnt, "producer-thread");
- long endTime = System.currentTimeMillis() + 60 * 1000L;
+ long endTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(60 * 1000, 10_000);
while (System.currentTimeMillis() < endTime && ex.get() == null) {
while (restartBarrier.getNumberWaiting() != producerCnt && ex.get() == null)
@@ -487,7 +487,7 @@
Random rnd = new Random();
- long endTime = System.currentTimeMillis() + 60 * 1000L;
+ long endTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(60 * 1000, 10_000);
while (System.currentTimeMillis() < endTime && ex.get() == null) {
try {
@@ -591,7 +591,7 @@
Random rnd = new Random();
- long endTime = System.currentTimeMillis() + 60 * 1000L;
+ long endTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(60 * 1000, 10_000);
while (System.currentTimeMillis() < endTime && ex.get() == null) {
try {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQueryTxSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQueryTxSelfTest.java
index 8b15829..2c345f7 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQueryTxSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/IndexingSpiQueryTxSelfTest.java
@@ -22,13 +22,13 @@
import java.util.concurrent.Callable;
import javax.cache.Cache;
import org.apache.ignite.IgniteCache;
+import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteTransactions;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.processors.cache.GridCacheAbstractSelfTest;
-import org.apache.ignite.internal.transactions.IgniteTxHeuristicCheckedException;
import org.apache.ignite.spi.IgniteSpiAdapter;
import org.apache.ignite.spi.IgniteSpiException;
import org.apache.ignite.spi.indexing.IndexingQueryFilter;
@@ -36,11 +36,14 @@
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.transactions.Transaction;
import org.apache.ignite.transactions.TransactionConcurrency;
+import org.apache.ignite.transactions.TransactionHeuristicException;
import org.apache.ignite.transactions.TransactionIsolation;
import org.apache.ignite.transactions.TransactionState;
import org.jetbrains.annotations.Nullable;
import org.junit.Test;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
+
/**
* Indexing Spi transactional query test
*/
@@ -75,7 +78,7 @@
assertNotNull(client.cache(DEFAULT_CACHE_NAME));
- doTestIndexingSpiWithTx(client, 0);
+ doTestIndexingSpiWithTx(client, 0, false);
}
/** */
@@ -83,7 +86,7 @@
public void testIndexingSpiWithTxLocal() throws Exception {
IgniteEx ignite = (IgniteEx)primaryNode(0, DEFAULT_CACHE_NAME);
- doTestIndexingSpiWithTx(ignite, 0);
+ doTestIndexingSpiWithTx(ignite, 0, true);
}
/** */
@@ -91,13 +94,13 @@
public void testIndexingSpiWithTxNotLocal() throws Exception {
IgniteEx ignite = (IgniteEx)primaryNode(0, DEFAULT_CACHE_NAME);
- doTestIndexingSpiWithTx(ignite, 1);
+ doTestIndexingSpiWithTx(ignite, 1, false);
}
/**
* @throws Exception If failed.
*/
- private void doTestIndexingSpiWithTx(IgniteEx ignite, int key) throws Exception {
+ private void doTestIndexingSpiWithTx(IgniteEx ignite, int key, boolean heuristic) throws Exception {
final IgniteCache<Integer, Integer> cache = ignite.cache(DEFAULT_CACHE_NAME);
final IgniteTransactions txs = ignite.transactions();
@@ -107,7 +110,7 @@
System.out.println("Run in transaction: " + concurrency + " " + isolation);
GridTestUtils.assertThrowsWithCause(new Callable<Void>() {
- @Override public Void call() throws Exception {
+ @Override public Void call() {
Transaction tx;
try (Transaction tx0 = tx = txs.txStart(concurrency, isolation)) {
@@ -120,9 +123,20 @@
return null;
}
- }, IgniteTxHeuristicCheckedException.class);
+ }, heuristic ? TransactionHeuristicException.class : IgniteException.class);
- checkFutures();
+ // Cause asynced salvage in action
+ assertTrue(
+ waitForCondition(() -> {
+ try {
+ checkFutures();
+ return true;
+ }
+ catch (AssertionError err) {
+ return false;
+ }
+ }, 5_000)
+ );
}
}
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/ContinuousQueryMarshallerTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/ContinuousQueryMarshallerTest.java
index dab32bb..9fb42a5 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/ContinuousQueryMarshallerTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/ContinuousQueryMarshallerTest.java
@@ -83,6 +83,8 @@
final Ignite node2 = "client".equals(node2Name) ? startClientGrid(node2Name) : startGrid(node2Name);
+ awaitPartitionMapExchange();
+
final ContinuousQuery<Integer, MarshallerCheckingEntry> qry = new ContinuousQuery<>();
ScanQuery<Integer, MarshallerCheckingEntry> scanQry = new ScanQuery<>(new IgniteBiPredicate<Integer, MarshallerCheckingEntry>() {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionNoHangsTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionNoHangsTest.java
index 2328a2d..b07e5ac 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionNoHangsTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionNoHangsTest.java
@@ -182,7 +182,7 @@
}
}, 1, "restart-thread");
- long stopTime = System.currentTimeMillis() + 2 * 60_000L;
+ long stopTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(2 * 60_000, 20_000);
for (int i = 0; System.currentTimeMillis() < stopTime; i++) {
boolean detectionEnabled = grid(0).context().cache().context().tm().deadlockDetectionEnabled();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionTest.java
index 7781d24..708f87e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxDeadlockDetectionTest.java
@@ -131,7 +131,7 @@
}
}, 1, "restart-thread");
- long stopTime = System.currentTimeMillis() + 2 * 60_000L;
+ long stopTime = System.currentTimeMillis() + GridTestUtils.SF.applyLB(2 * 60_000, 20_000);
for (int i = 0; System.currentTimeMillis() < stopTime; i++) {
log.info(">>> Iteration " + i);
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateAbstractTest.java
index 65ef7af..232cef9e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateAbstractTest.java
@@ -45,6 +45,7 @@
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgnitionEx;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.processors.cache.PartitionUpdateCounter;
import org.apache.ignite.internal.processors.cache.distributed.GridCacheTxRecoveryRequest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtTxFinishRequest;
@@ -313,7 +314,7 @@
futMap.put(req.futureId(), req.version());
- return cb.beforePrimaryPrepare(to, req.version().asIgniteUuid(), createSendFuture(clientWrappedSpi, msg));
+ return cb.beforePrimaryPrepare(to, BinaryUtils.asIgniteUuid(req.version()), createSendFuture(clientWrappedSpi, msg));
}
else if (msg instanceof GridNearTxFinishRequest) {
IgniteEx to = IgnitionEx.gridxx(node.id());
@@ -440,7 +441,8 @@
IgniteInternalTx primTx = findTx(from, nearVer, true);
IgniteInternalTx backupTx = findTx(to, nearVer, false);
- return cb.beforeBackupFinish(from, to, primTx, backupTx, nearVer.asIgniteUuid(), createSendFuture(wrappedPrimSpi, msg));
+ return cb.beforeBackupFinish(from, to, primTx, backupTx, BinaryUtils.asIgniteUuid(nearVer),
+ createSendFuture(wrappedPrimSpi, msg));
}
else if (msg instanceof GridNearTxPrepareResponse) {
GridNearTxPrepareResponse resp = (GridNearTxPrepareResponse)msg;
@@ -451,7 +453,7 @@
IgniteInternalTx primTx = findTx(from, ver, true);
- return cb.afterPrimaryPrepare(from, primTx, ver.asIgniteUuid(), createSendFuture(wrappedPrimSpi, msg));
+ return cb.afterPrimaryPrepare(from, primTx, BinaryUtils.asIgniteUuid(ver), createSendFuture(wrappedPrimSpi, msg));
}
else if (msg instanceof GridNearTxFinishResponse) {
IgniteEx to = IgnitionEx.gridxx(node.id());
@@ -460,7 +462,7 @@
IgniteEx from = fromNode(wrappedPrimSpi);
- IgniteUuid nearVer = futMap.get(req.futureId()).asIgniteUuid();
+ IgniteUuid nearVer = BinaryUtils.asIgniteUuid(futMap.get(req.futureId()));
return cb.afterPrimaryFinish(from, nearVer, createSendFuture(wrappedPrimSpi, msg));
}
@@ -490,7 +492,7 @@
IgniteInternalTx backupTx = findTx(from, ver, false);
- return cb.afterBackupPrepare(to, from, backupTx, ver.asIgniteUuid(), createSendFuture(wrappedBackupSpi, msg));
+ return cb.afterBackupPrepare(to, from, backupTx, BinaryUtils.asIgniteUuid(ver), createSendFuture(wrappedBackupSpi, msg));
}
else if (msg instanceof GridDhtTxFinishResponse) {
IgniteEx from = fromNode(wrappedBackupSpi);
@@ -504,7 +506,7 @@
return false; // Message from parallel partition.
// Version is null if message is a response to checkCommittedRequest.
- return cb.afterBackupFinish(to, from, ver.asIgniteUuid(), createSendFuture(wrappedBackupSpi, msg));
+ return cb.afterBackupFinish(to, from, BinaryUtils.asIgniteUuid(ver), createSendFuture(wrappedBackupSpi, msg));
}
return false;
@@ -973,7 +975,7 @@
return false;
runAsync(() -> {
- futures.put(new T3<>(primary, TxState.COMMIT, tx.nearXidVersion().asIgniteUuid()), proceedFut);
+ futures.put(new T3<>(primary, TxState.COMMIT, BinaryUtils.asIgniteUuid(tx.nearXidVersion())), proceedFut);
if (countForNode(primary, TxState.COMMIT) == txCnt)
futures.remove(new T3<>(primary, TxState.COMMIT, version(commits.get(primary).poll()))).onDone();
@@ -993,11 +995,11 @@
runAsync(() -> {
if (assigns.get(primary) != null) {
- int v0 = assignCntr.compute(new T2<>(primary, primaryTx.nearXidVersion().asIgniteUuid()),
+ int v0 = assignCntr.compute(new T2<>(primary, BinaryUtils.asIgniteUuid(primaryTx.nearXidVersion())),
(key, val) -> (val == null ? 0 : val) + 1);
if (v0 == 2) {
- onCounterAssigned(primary, primaryTx, order(primaryTx.nearXidVersion().asIgniteUuid()));
+ onCounterAssigned(primary, primaryTx, order(BinaryUtils.asIgniteUuid(primaryTx.nearXidVersion())));
if (!assigns.get(primary).isEmpty())
futures.remove(new T3<>(primary, TxState.ASSIGN,
@@ -1006,7 +1008,7 @@
}
if (prepares.get(backup) != null) {
- futures.put(new T3<>(backup, TxState.PREPARE, primaryTx.nearXidVersion().asIgniteUuid()), proceedFut);
+ futures.put(new T3<>(backup, TxState.PREPARE, BinaryUtils.asIgniteUuid(primaryTx.nearXidVersion())), proceedFut);
// Wait until all prep requests queued and force prepare order.
if (countForNode(backup, TxState.PREPARE) == txCnt) {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateConsistencyTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateConsistencyTest.java
index 28b53c3..c0bc58e 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateConsistencyTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateConsistencyTest.java
@@ -274,7 +274,7 @@
List<Integer> primaryKeys = primaryKeys(prim.cache(DEFAULT_CACHE_NAME), 10_000);
- long stop = U.currentTimeMillis() + 30_000;
+ long stop = U.currentTimeMillis() + GridTestUtils.SF.applyLB(30_000, 10_000);
Random r = new Random();
@@ -326,7 +326,7 @@
assertFalse(backups.contains(prim));
- long stop = U.currentTimeMillis() + 30_000;
+ long stop = U.currentTimeMillis() + GridTestUtils.SF.applyLB(30_000, 10_000);
long seed = System.nanoTime();
@@ -390,7 +390,7 @@
assertFalse(backups.contains(prim));
- long stop = U.currentTimeMillis() + 30_000;
+ long stop = U.currentTimeMillis() + GridTestUtils.SF.applyLB(30_000, 10_000);
long seed = System.nanoTime();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateOnePrimaryOneBackupTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateOnePrimaryOneBackupTest.java
index cab7786..219f188 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateOnePrimaryOneBackupTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/transactions/TxPartitionCounterStateOnePrimaryOneBackupTest.java
@@ -29,6 +29,7 @@
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.processors.cache.PartitionUpdateCounter;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionSupplyMessage;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
@@ -348,7 +349,7 @@
@Override public boolean beforeBackupPrepare(IgniteEx primary, IgniteEx backup, IgniteInternalTx primaryTx,
GridFutureAdapter<?> proceedFut) {
runAsync(() -> {
- IgniteUuid nearXidVer = primaryTx.nearXidVersion().asIgniteUuid();
+ IgniteUuid nearXidVer = BinaryUtils.asIgniteUuid(primaryTx.nearXidVersion());
onPrimaryPrepared(primary, primaryTx, order(nearXidVer));
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/CacheFreeListSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/CacheFreeListSelfTest.java
index d714f66..8817a3b 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/database/CacheFreeListSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/database/CacheFreeListSelfTest.java
@@ -294,7 +294,7 @@
Random rnd = ThreadLocalRandom.current();
- for (int i = 0; i < 200_000; i++) {
+ for (int i = 0; i < GridTestUtils.SF.applyLB(200_000, 50_000); i++) {
boolean grow0 = grow.get();
if (grow0) {
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityMessageSerializationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityMessageSerializationTest.java
new file mode 100644
index 0000000..4de9416
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/query/schema/message/QueryEntityMessageSerializationTest.java
@@ -0,0 +1,193 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.schema.message;
+
+import java.io.Externalizable;
+import java.io.Serializable;
+import java.lang.reflect.Modifier;
+import java.math.BigDecimal;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import org.apache.ignite.cache.QueryEntity;
+import org.apache.ignite.cache.QueryIndex;
+import org.apache.ignite.cache.QueryIndexType;
+import org.apache.ignite.internal.CoreMessagesProvider;
+import org.apache.ignite.internal.direct.DirectMessageReader;
+import org.apache.ignite.internal.direct.DirectMessageWriter;
+import org.apache.ignite.internal.managers.communication.IgniteMessageFactoryImpl;
+import org.apache.ignite.internal.processors.query.QueryEntityEx;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.marshaller.Marshaller;
+import org.apache.ignite.plugin.extensions.communication.Message;
+import org.apache.ignite.plugin.extensions.communication.MessageFactory;
+import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
+import org.apache.ignite.plugin.extensions.communication.MessageSerializer;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+
+import static org.apache.ignite.internal.util.CommonUtils.makeMessageType;
+import static org.apache.ignite.marshaller.Marshallers.jdk;
+
+/** Test for serialization round-trip of {@link QueryEntityMessage} and {@link QueryEntityExMessage}. */
+public class QueryEntityMessageSerializationTest extends GridCommonAbstractTest {
+ /** Error suffix. */
+ public static final String ERROR_SUFFIX = " count is not equal to the expected fields count. " +
+ "Has the number of fields in the `QueryEntity` or `QueryEntityEx` classes changed?";
+
+ /** */
+ private final Marshaller marsh = jdk();
+
+ /** */
+ private final MessageFactory msgFactory = new IgniteMessageFactoryImpl(
+ new MessageFactoryProvider[] {new CoreMessagesProvider(marsh, marsh, U.gridClassLoader())});
+
+ /** */
+ @Test
+ public void testQueryEntity() throws Exception {
+ QueryEntity entity = queryEntity();
+
+ assertEquals(entity, serializeAndDeserialize(entity, serializableFieldsCount(QueryEntity.class)));
+ }
+
+ /** */
+ @Test
+ public void testQueryEntityEx() throws Exception {
+ QueryEntityEx entity = queryEntityEx();
+
+ long expReadWriteCnt = serializableFieldsCount(QueryEntityEx.class) -
+ /* QueryEntityEx duplicates 'notNullFields', but 'QueryEntityExMessage' doesn't */ 1;
+
+ QueryEntity res = serializeAndDeserialize(entity, expReadWriteCnt);
+
+ assertTrue(res instanceof QueryEntityEx);
+ assertEquals(entity, res);
+
+ // Not part of QueryEntityEx.equals(), so assert it explicitly.
+ assertEquals(entity.fillAbsentPKsWithDefaults(), ((QueryEntityEx)res).fillAbsentPKsWithDefaults());
+ }
+
+ /**
+ * @param src Source entity.
+ * @param expReadsWritesCnt Expected count of field reads and writes.
+ *
+ * @return Entity read during a full serde round-trip.
+ */
+ private QueryEntity serializeAndDeserialize(QueryEntity src, long expReadsWritesCnt) {
+ QueryEntityMessage msg = src instanceof QueryEntityEx
+ ? new QueryEntityExMessage((QueryEntityEx)src) : new QueryEntityMessage(src);
+
+ return writeAndReadBack(msg, expReadsWritesCnt).toEntity();
+ }
+
+ /**
+ * @param cls Class of an object.
+ */
+ private long serializableFieldsCount(Class<?> cls) {
+ if (cls == Object.class)
+ return 0;
+
+ assertTrue("Not a serializable class: " + cls, Serializable.class.isAssignableFrom(cls));
+ assertFalse("Should not be Externalizable:" + cls, Externalizable.class.isAssignableFrom(cls));
+
+ return serializableFieldsCount(cls.getSuperclass()) + Arrays.stream(cls.getDeclaredFields())
+ .filter(f -> !Modifier.isStatic(f.getModifiers()) && !Modifier.isTransient(f.getModifiers()))
+ .count();
+ }
+
+ /**
+ * @param msg Message to write and read back through {@link DirectMessageWriter}/{@link DirectMessageReader}.
+ * @param expReadsWritesCnt Expected count of field reads and writes.
+ * @param <T> Type of Message.
+ *
+ * @return Restored message.
+ */
+ private <T extends Message> T writeAndReadBack(T msg, long expReadsWritesCnt) {
+ ByteBuffer buf = ByteBuffer.allocate(64 * 1024);
+
+ MessageSerializer<T> serde = (MessageSerializer<T>)msgFactory.serializer(msg.directType());
+
+ DirectMessageWriter writer = new DirectMessageWriter(msgFactory);
+ writer.setBuffer(buf);
+
+ assertTrue(serde.writeTo(msg, writer));
+ assertEquals("Writes" + ERROR_SUFFIX,
+ expReadsWritesCnt, writer.state());
+
+ buf.flip();
+
+ DirectMessageReader reader = new DirectMessageReader(msgFactory, null);
+ reader.setBuffer(buf);
+
+ T res = (T)msgFactory.create(makeMessageType(buf.get(), buf.get()));
+
+ assertTrue(serde.readFrom(res, reader));
+ assertEquals("Reads" + ERROR_SUFFIX,
+ expReadsWritesCnt, reader.state());
+
+ return res;
+ }
+
+ /** @return Query entity with every field populated, including non-empty default field values. */
+ private QueryEntity queryEntity() {
+ LinkedHashMap<String, String> fields = new LinkedHashMap<>();
+ fields.put("id", Integer.class.getName());
+ fields.put("name", String.class.getName());
+ fields.put("price", BigDecimal.class.getName());
+
+ return new QueryEntity()
+ .setKeyType(Integer.class.getName())
+ .setValueType("org.apache.ignite.Person")
+ .setKeyFieldName("id")
+ .setValueFieldName("name")
+ .setTableName("PERSON")
+ .setFields(fields)
+ .setKeyFields(Set.of("id"))
+ .setAliases(Map.of("name", "NAME_ALIAS"))
+ .setIndexes(List.of(new QueryIndex("name", QueryIndexType.SORTED).setInlineSize(32)))
+ .setNotNullFields(Set.of("id", "name"))
+ .setDefaultFieldValues(Map.of(
+ "name", "unknown",
+ "price", new BigDecimal("9.99"),
+ "id", 42))
+ .setFieldsPrecision(Map.of("name", 64))
+ .setFieldsScale(Map.of("price", 2));
+ }
+
+ /** @return Extended query entity with all base and extended fields populated. */
+ private QueryEntityEx queryEntityEx() {
+ QueryEntity base = queryEntity();
+ base.setNotNullFields(null);
+
+ QueryEntityEx entity = new QueryEntityEx(base);
+
+ // Natural QueryEntityEx: notNullFields lives only in the Ex field, base shadow stays null.
+ entity.setNotNullFields(Set.of("id", "name"));
+ entity.setPreserveKeysOrder(true);
+ entity.implicitPk(true);
+ entity.fillAbsentPKsWithDefaults(true);
+ entity.sql(true);
+ entity.setPrimaryKeyInlineSize(16);
+ entity.setAffinityKeyInlineSize(24);
+
+ return entity;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
index f4e290d..bb818a8 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rest/handlers/cache/GridCacheCommandHandlerSelfTest.java
@@ -282,16 +282,6 @@
return fut;
}
- // Rewriting flagOn result to keep intercepting invocations after it.
- if ("setSkipStore".equals(mtd.getName()))
- return proxy;
-
- if ("forSubjectId".equals(mtd.getName()))
- return proxy;
-
- if ("keepBinary".equals(mtd.getName()))
- return proxy;
-
return mtd.invoke(cache, args);
}
});
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractRollingUpgradeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractRollingUpgradeTest.java
new file mode 100644
index 0000000..98718df
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/AbstractRollingUpgradeTest.java
@@ -0,0 +1,664 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.events.Event;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgnitionEx;
+import org.apache.ignite.internal.TestRecordingCommunicationSpi;
+import org.apache.ignite.internal.managers.eventstorage.GridLocalEventListener;
+import org.apache.ignite.internal.managers.eventstorage.HighPriorityListener;
+import org.apache.ignite.internal.processors.nodevalidation.DiscoveryNodeValidationProcessor;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteComponentFeatureSet;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteComponentFeatureSetProvider;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteCoreFeature;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteFeature;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteFeatureSet;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.TestIgniteReleaseFeatures_2_18_0;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.TestPluginComponentFeatureSetProvider;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.TestPluginFeature;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.TestPluginReleaseFeatures_1_0_0;
+import org.apache.ignite.internal.util.lang.ConsumerX;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.lang.IgniteProductVersion;
+import org.apache.ignite.lang.IgniteRunnable;
+import org.apache.ignite.plugin.AbstractTestPluginProvider;
+import org.apache.ignite.plugin.ExtensionRegistry;
+import org.apache.ignite.plugin.PluginContext;
+import org.apache.ignite.spi.IgniteNodeValidationResult;
+import org.apache.ignite.spi.IgniteSpiException;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.TestBlockingTcpDiscoverySpi;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.jspecify.annotations.Nullable;
+
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.ignite.events.EventType.EVT_NODE_VALIDATION_FAILED;
+import static org.apache.ignite.internal.IgniteVersionUtils.semanticVersion;
+import static org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteCoreFeature.COMPONENT_NAME;
+
+/**
+ * Provides the ability to override a node's version and supported {@link IgniteFeature}s in order to
+ * simulate a Rolling Upgrade procedure.
+ *
+ * <p>For testing purposes, the following "fake" Ignite versions and their corresponding
+ * {@link IgniteFeature}s have been introduced. These versions are used solely for testing and do not
+ * correspond to any actual Ignite releases.
+ *
+ * <table border="1">
+ * <tr>
+ * <th>Version</th>
+ * <th>Features</th>
+ * </tr>
+ * <tr>
+ * <td>2.18.0</td>
+ * <td>not supported</td>
+ * </tr>
+ * <tr>
+ * <td>2.19.0</td>
+ * <td>{@code IgniteFeatureSet [0]}</td>
+ * </tr>
+ * <tr>
+ * <td>2.19.1</td>
+ * <td>{@code IgniteFeatureSet [0, 1]}</td>
+ * </tr>
+ * <tr>
+ * <td>2.19.2</td>
+ * <td>{@code IgniteFeatureSet [0 -> 2]}</td>
+ * </tr>
+ * <tr>
+ * <td>2.19.3</td>
+ * <td>{@code IgniteFeatureSet [0 -> 2, 6]}</td>
+ * </tr>
+ * <tr>
+ * <td>2.20.0</td>
+ * <td>{@code IgniteFeatureSet [0 -> 4]}</td>
+ * </tr>
+ * <tr>
+ * <td>2.20.1</td>
+ * <td>{@code IgniteFeatureSet [0 -> 4, 6]}</td>
+ * </tr>
+ * <tr>
+ * <td>2.21.0</td>
+ * <td>{@code IgniteFeatureSet [3 -> 6]}</td>
+ * </tr>
+ * <tr>
+ * <td>2.21.1</td>
+ * <td>{@code IgniteFeatureSet [3 -> 7]}</td>
+ * </tr>
+ * </table>
+ */
+public abstract class AbstractRollingUpgradeTest extends GridCommonAbstractTest {
+ /** */
+ protected static final String TEST_DEFAULT_VER = "2.19.0";
+
+ /** */
+ protected static final String VER_INCOMPATIBLE_ERR =
+ "Joining node is not allowed to join the cluster because it is running a component with an incompatible version";
+
+ /** */
+ protected static final String MULTIPLE_VER_IN_TOP_ERR =
+ "Cluster version finalization failed. The cluster contains nodes running different versions of one or more components";
+
+ /** */
+ protected static final String VER_NOT_EQUAL_ERR =
+ "One or more component versions on the joining node differ from the corresponding versions active in the cluster";
+
+ /** */
+ protected static final String RU_UNAVAILABLE_BETWEEN_VER_ERR = "Ignite component Rolling Upgrade is not supported" +
+ " between the component version active in the cluster and the version running on the joining node";
+
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ return getConfiguration(igniteInstanceName, TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Override protected void beforeTest() throws Exception {
+ super.beforeTest();
+
+ TestRollingUpgradeProcessor.nodeJoinValidationCompletedLatch = null;
+ TestRollingUpgradeProcessor.nodeJoinUnblockedLatch = null;
+ TestNodeValidationFailedEventListener.nodeValidationFailedEventUnblockedLatch = null;
+ }
+
+ /** {@inheritDoc} */
+ @Override protected void afterTest() throws Exception {
+ super.afterTest();
+
+ stopAllGrids();
+ }
+
+ /** */
+ protected IgniteConfiguration getConfiguration(int idx, String ver) throws Exception {
+ return getConfiguration(getTestIgniteInstanceName(idx), ver);
+ }
+
+ /** */
+ protected IgniteConfiguration getConfiguration(String igniteInstanceName, String ver) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ cfg.setCommunicationSpi(new TestRecordingCommunicationSpi());
+
+ TestVersions testVersions = TestVersions.parse(ver);
+
+ IgniteComponentFeatureSet testCoreFeatures = new IgniteComponentFeatureSet(
+ COMPONENT_NAME,
+ IgniteProductVersion.fromString(testVersions.coreVersion()),
+ IgniteFeatureSet.buildFrom(readDeclaredCoreFeatures(testVersions.coreVersion()))
+ );
+
+ cfg.setPluginProviders(new AbstractTestPluginProvider() {
+ @Override public String name() {
+ return "test-rolling-upgrade-processor-provider";
+ }
+
+ /** {@inheritDoc} */
+ @Override public void initExtensions(PluginContext ctx, ExtensionRegistry registry) {
+ if (testVersions.containsPlugin()) {
+ registry.registerExtension(
+ IgniteComponentFeatureSetProvider.class,
+ new TestPluginComponentFeatureSetProvider(testVersions.pluginVersion()));
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public @Nullable <T> T createComponent(PluginContext ctx, Class<T> cls) {
+ if (cls.isAssignableFrom(DiscoveryNodeValidationProcessor.class))
+ return (T)new TestRollingUpgradeProcessor(((IgniteEx)ctx.grid()).context(), testCoreFeatures);
+
+ return null;
+ }
+ });
+
+ TcpDiscoverySpi discoSpi = new TestBlockingTcpDiscoverySpi(cfg) {
+ @Override public void setNodeAttributes(Map<String, Object> attrs, IgniteProductVersion ignored) {
+ super.setNodeAttributes(attrs, IgniteProductVersion.fromString(testVersions.coreVersion()));
+ }
+ };
+
+ cfg.setDiscoverySpi(discoSpi);
+
+ return cfg;
+ }
+
+ /** */
+ protected IgniteEx startGrid(int idx, String ver) throws Exception {
+ return startGrid(getConfiguration(idx, ver));
+ }
+
+ /** */
+ protected IgniteEx startClientGrid(int idx, String ver) throws Exception {
+ return startClientGrid(getConfiguration(idx, ver));
+ }
+
+ /** */
+ protected IgniteEx startGrid(int idx, String ver, boolean isClient) throws Exception {
+ return isClient ? startClientGrid(idx, ver) : startGrid(idx, ver);
+ }
+
+ /** */
+ public static Collection<IgniteFeature> readDeclaredCoreFeatures(String ver) throws Exception {
+ Class<?> cls = Class.forName(
+ TestIgniteReleaseFeatures_2_18_0.class.getPackageName() + ".TestIgniteReleaseFeatures_" + ver.replace(".", "_"));
+
+ return IgniteFeatureSet.readDeclaredFeatures(cls);
+ }
+
+ /** */
+ public static Collection<IgniteFeature> readDeclaredPluginFeatures(String ver) throws Exception {
+ Class<?> cls = Class.forName(
+ TestPluginReleaseFeatures_1_0_0.class.getPackageName() + ".TestPluginReleaseFeatures_" + ver.replace(".", "_"));
+
+ return IgniteFeatureSet.readDeclaredFeatures(cls);
+ }
+
+ /** */
+ protected boolean isFeatureActive(Ignite ignite, IgniteFeature feature) {
+ return ((IgniteEx)ignite).context().rollingUpgrade().features().isActive(feature);
+ }
+
+ /** */
+ protected void listenFeatureActivation(Ignite ignite, IgniteFeature feature, IgniteRunnable lsnr) {
+ ((IgniteEx)ignite).context().rollingUpgrade().features().listenActivation(feature, lsnr);
+ }
+
+ /** */
+ protected void startCluster() throws Exception {
+ startCluster(TEST_DEFAULT_VER);
+ }
+
+ /** */
+ protected void startCluster(String ver) throws Exception {
+ startGrid(0, ver);
+ startGrid(1, ver);
+ startClientGrid(2, ver);
+ }
+
+ /** */
+ protected UUID extractFinalizeProcessId(int nodeIdx) {
+ Object proc = U.field(grid(nodeIdx).context().rollingUpgrade(), "finalizeProc");
+
+ return U.field(proc, "locInitOpId");
+ }
+
+ /** */
+ protected void checkVersionFinalizationFailed(int initiatorNodeIdx, String msg) {
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> {
+ ru(initiatorNodeIdx).finalizeClusterVersion();
+
+ return null;
+ },
+ IgniteCheckedException.class,
+ msg
+ );
+ }
+
+ /** */
+ protected void checkJoinSuccess(int nodeIdx, boolean isClient) throws Exception {
+ checkJoinSuccess(nodeIdx, TEST_DEFAULT_VER, isClient);
+ }
+
+ /** */
+ protected void checkJoinSuccess(int nodeIdx, String ver, boolean isClient) throws Exception {
+ int clusterSize = clusterNode().cluster().nodes().size();
+
+ startGrid(nodeIdx, ver, isClient);
+
+ assertEquals(clusterSize + 1, clusterNode().cluster().nodes().size());
+ }
+
+ /** */
+ protected void checkJoinFailed(int nodeIdx, String ver, String msg) {
+ checkJoinFailed(nodeIdx, ver, true, msg);
+ }
+
+ /** */
+ protected void checkJoinFailed(int nodeIdx, String ver, boolean checkClientNode, String msg) {
+ int expClusterSize = clusterNode().cluster().nodes().size();
+
+ GridTestUtils.assertThrowsAnyCause(log, () -> startGrid(nodeIdx, ver), IgniteSpiException.class, msg);
+
+ if (checkClientNode)
+ GridTestUtils.assertThrowsAnyCause(log, () -> startClientGrid(nodeIdx, ver), IgniteSpiException.class, msg);
+
+ assertEquals(expClusterSize, clusterNode().cluster().nodes().size());
+ }
+
+ /** */
+ protected IgniteEx clusterNode() {
+ return (IgniteEx)Ignition.allGrids().stream().filter(i -> !i.cluster().localNode().isClient()).findFirst().orElseThrow();
+ }
+
+ /** */
+ protected void checkVersionUpgradeInProgress(String srcVer, String targetVer) throws Exception {
+ checkVersionUpgradeInProgress(srcVer, srcVer, targetVer);
+ }
+
+ /** */
+ protected void checkVersionUpgradeInProgress(String logicalVer, String srcVer, String targetVer) throws Exception {
+ checkVersionUpgradeEnabledStatus(true);
+ checkRollingUpgradeState(logicalVer, srcVer, targetVer);
+
+ checkFeaturesActive(logicalVer);
+
+ TestVersions logicalVersions = TestVersions.parse(logicalVer);
+ TestVersions targetVersions = TestVersions.parse(targetVer);
+
+ checkFeaturesNotActive(newFeatures(
+ logicalVersions.coreVersion() == null ? Collections.emptyList() : readDeclaredCoreFeatures(logicalVersions.coreVersion()),
+ targetVersions.coreVersion() == null ? Collections.emptyList() : readDeclaredCoreFeatures(targetVersions.coreVersion()))
+ );
+
+ checkFeaturesNotActive(newFeatures(
+ logicalVersions.containsPlugin() ? readDeclaredPluginFeatures(logicalVersions.pluginVersion()) : Collections.emptyList(),
+ targetVersions.containsPlugin() ? readDeclaredPluginFeatures(targetVersions.pluginVersion()) : Collections.emptyList())
+ );
+ }
+
+ /** */
+ protected void checkVersionUpgradeInactive(String expVer) throws Exception {
+ checkVersionUpgradeEnabledStatus(false);
+ checkFeaturesActive(expVer);
+ }
+
+ /** */
+ protected void checkVersionUpgradeEnabledStatus(boolean enabled) {
+ List<Ignite> cluster = Ignition.allGrids();
+
+ for (Ignite ignite : cluster)
+ assertEquals(enabled, ru(ignite).isVersionUpgradeEnabled());
+ }
+
+ /** */
+ protected void checkFeaturesActive(String ver) throws Exception {
+ TestVersions versions = TestVersions.parse(ver);
+
+ if (versions.coreVersion() != null)
+ checkFeaturesActive(readDeclaredCoreFeatures(versions.coreVersion()));
+
+ if (versions.containsPlugin())
+ checkFeaturesActive(readDeclaredPluginFeatures(versions.pluginVersion()));
+ }
+
+ /** */
+ protected void checkFeaturesActive(Collection<IgniteFeature> features) {
+ List<Ignite> cluster = Ignition.allGrids();
+
+ AtomicInteger activationNotifiedCnt = new AtomicInteger();
+ int expFeaturesCnt = 0;
+
+ for (Ignite ignite : cluster) {
+ for (IgniteFeature feature : features) {
+ if (
+ ignite.configuration().isClientMode()
+ && !ru(ignite).features().localVersionFeatures().components().contains(feature.componentName())
+ )
+ continue;
+
+ assertTrue(isFeatureActive(ignite, feature));
+ listenFeatureActivation(ignite, feature, activationNotifiedCnt::incrementAndGet);
+
+ ++expFeaturesCnt;
+ }
+ }
+
+ assertEquals(expFeaturesCnt, activationNotifiedCnt.get());
+ }
+
+ /** */
+ protected void checkFeaturesNotActive(Collection<IgniteFeature> features) {
+ if (F.isEmpty(features))
+ return;
+
+ for (Ignite ignite : Ignition.allGrids()) {
+ for (IgniteFeature feature : features)
+ assertFalse(isFeatureActive(ignite, feature));
+ }
+ }
+
+ /** */
+ protected Collection<IgniteFeature> newFeatures(Collection<IgniteFeature> srcFeatures, Collection<IgniteFeature> targetFeatures) {
+ List<IgniteFeature> res = new ArrayList<>();
+
+ for (IgniteFeature targetFeature : targetFeatures) {
+ if (!srcFeatures.contains(targetFeature))
+ res.add(targetFeature);
+ }
+
+ return res;
+ }
+
+ /** */
+ protected void checkFeatureActivationSubscription(int nodeIdx, IgniteFeature feature, CountDownLatch featureActivationLatch) {
+ long expCnt = featureActivationLatch.getCount();
+
+ assertFalse(isFeatureActive(grid(nodeIdx), feature));
+ listenFeatureActivation(grid(nodeIdx), feature, featureActivationLatch::countDown);
+ assertEquals(expCnt, featureActivationLatch.getCount());
+ }
+
+ /** */
+ protected void upgradeNodeVersion(int nodeIdx, String targetVer) throws Exception {
+ upgradeNodeVersion(nodeIdx, TEST_DEFAULT_VER, targetVer);
+ }
+
+ /** */
+ protected void upgradeNodeVersion(int nodeIdx, String srcVer, String targetVer) throws Exception {
+ upgradeNodeVersion(nodeIdx, srcVer, srcVer, targetVer);
+ }
+
+ /** */
+ protected void upgradeNodeVersion(int nodeIdx, String logicalVer, String srcVer, String targetVer) throws Exception {
+ boolean isClient = grid(nodeIdx).context().clientNode();
+
+ stopGrid(nodeIdx);
+ checkJoinSuccess(nodeIdx, targetVer, isClient);
+ checkVersionUpgradeInProgress(logicalVer, srcVer, targetVer);
+ }
+
+ /** */
+ protected void finalizeClusterVersion(int nodeIdx, String expVer) throws Exception {
+ ru(nodeIdx).finalizeClusterVersion();
+
+ checkVersionUpgradeInactive(expVer);
+ }
+
+ /** */
+ protected void restartNode(int nodeIdx) throws Exception {
+ String ver = resolveNodeCompoundVersion(nodeIdx);
+ boolean isClient = grid(nodeIdx).context().clientNode();
+
+ stopGrid(nodeIdx);
+ checkJoinSuccess(nodeIdx, ver, isClient);
+ }
+
+ /** */
+ protected void forAllNodes(ConsumerX<Integer> nodeProcessor) throws Exception {
+ for (Ignite ignite : Ignition.allGrids())
+ nodeProcessor.accept(getTestIgniteInstanceIndex(ignite.name()));
+ }
+
+ /** */
+ protected void checkUpgradeFailed(int nodeIdx, String targetVer, String errMsg) throws Exception {
+ String srcVer = resolveNodeCompoundVersion(nodeIdx);
+ boolean isClient = grid(nodeIdx).context().clientNode();
+
+ stopGrid(nodeIdx);
+
+ GridTestUtils.assertThrowsAnyCause(log, () -> startGrid(nodeIdx, targetVer, isClient), IgniteSpiException.class, errMsg);
+
+ startGrid(nodeIdx, srcVer, isClient);
+ }
+
+ /** */
+ String resolveNodeCompoundVersion(int nodeIdx) {
+ return ru(nodeIdx).features().localVersionFeatures().values().stream()
+ .sorted(Comparator.comparing(IgniteComponentFeatureSet::componentName))
+ .map(f -> semanticVersion(f.version()))
+ .collect(Collectors.joining("|"));
+ }
+
+ /** */
+ protected void checkRollingUpgradeState(String expLogicalVer, String expSrcVer, String expTargetVer) {
+ TestVersions expLogicalVersions = TestVersions.parse(expLogicalVer);
+ TestVersions expSrcVersions = TestVersions.parse(expSrcVer);
+ TestVersions expTargetVersions = TestVersions.parse(expTargetVer);
+
+ for (Ignite ignite : Ignition.allGrids()) {
+ assertTrue(ru(ignite).isVersionUpgradeEnabled());
+
+ expLogicalVersions.cmpVersions.forEach((cmp, ver) -> {
+ IgniteComponentFeatureSet cmpFeatures = ru(ignite).features().activeComponentFeatures(cmp);
+
+ assertEquals(ver, cmpFeatures == null ? null : semanticVersion(cmpFeatures.version()));
+ });
+
+ expSrcVersions.cmpVersions.forEach((cmp, ver) -> {
+ IgniteComponentUpgradeState state = ru(ignite).state(cmp);
+
+ assertEquals(ver, state.srcVer == null ? null : semanticVersion(state.srcVer));
+ });
+
+ expTargetVersions.cmpVersions.forEach((cmp, ver) -> {
+ IgniteComponentUpgradeState state = ru(ignite).state(cmp);
+
+ String expVer = Objects.equals(expSrcVersions.cmpVersions.get(cmp), ver) ? null : ver;
+
+ assertEquals(expVer, state.targetVer == null ? null : semanticVersion(state.targetVer));
+ });
+ }
+ }
+
+ /** */
+ protected int coordinatorIndex() {
+ for (Ignite grid : IgnitionEx.allGridsx()) {
+ if (U.isLocalNodeCoordinator(((IgniteEx)grid).context().discovery()))
+ return getTestIgniteInstanceIndex(grid.name());
+ }
+
+ fail("Failed to resolve coordinator node");
+
+ return -1;
+ }
+
+ /** */
+ protected RollingUpgradeProcessor ru(int nodeIdx) {
+ return ru(grid(nodeIdx));
+ }
+
+ /** */
+ protected static RollingUpgradeProcessor ru(Ignite ignite) {
+ return ((IgniteEx)ignite).context().rollingUpgrade();
+ }
+
+ /** */
+ protected static class TestVersions {
+ /** */
+ private final Map<String, String> cmpVersions = new HashMap<>();
+
+ /** */
+ public TestVersions(List<String> cmpVersions) {
+ assertTrue(!cmpVersions.isEmpty());
+ assertTrue(cmpVersions.size() <= 2);
+
+ this.cmpVersions.put(IgniteCoreFeature.COMPONENT_NAME, cmpVersions.get(0));
+
+ if (cmpVersions.size() > 1)
+ this.cmpVersions.put(TestPluginFeature.COMPONENT_NAME, cmpVersions.get(1));
+ }
+
+ /** */
+ public static TestVersions parse(String ver) {
+ if (ver == null)
+ return new TestVersions(Collections.singletonList(null));
+
+ return new TestVersions(Arrays.stream(ver.split("\\|"))
+ .map(String::trim)
+ .map(v -> "null".equals(v) ? null : v)
+ .collect(Collectors.toList()));
+ }
+
+ /** */
+ public String pluginVersion() {
+ return cmpVersions.get(TestPluginFeature.COMPONENT_NAME);
+ }
+
+ /** */
+ public String coreVersion() {
+ return cmpVersions.get(IgniteCoreFeature.COMPONENT_NAME);
+ }
+
+ /** */
+ public boolean containsPlugin() {
+ return cmpVersions.get(TestPluginFeature.COMPONENT_NAME) != null;
+ }
+ }
+
+ /** */
+ protected static class TestRollingUpgradeProcessor extends RollingUpgradeProcessor {
+ /** */
+ public static CountDownLatch nodeJoinUnblockedLatch;
+
+ /** */
+ public static CountDownLatch nodeJoinValidationCompletedLatch;
+
+ /** */
+ public TestRollingUpgradeProcessor(GridKernalContext ctx, IgniteComponentFeatureSet testCoreFeatures) {
+ super(ctx, testCoreFeatures);
+
+ ctx.event().addLocalEventListener(new TestNodeValidationFailedEventListener(), EVT_NODE_VALIDATION_FAILED);
+ }
+
+ /** {@inheritDoc} */
+ @Override @Nullable public IgniteNodeValidationResult validateNode(ClusterNode joiningNode) {
+ IgniteNodeValidationResult res = super.validateNode(joiningNode);
+
+ if (res != null)
+ return res;
+
+ if (nodeJoinValidationCompletedLatch != null)
+ nodeJoinValidationCompletedLatch.countDown();
+
+ if (nodeJoinUnblockedLatch != null) {
+ try {
+ assertTrue(nodeJoinUnblockedLatch.await(5_000, MILLISECONDS));
+ }
+ catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+
+ log.error(e.getMessage(), e);
+
+ return new IgniteNodeValidationResult(joiningNode.id(), e.getMessage());
+ }
+ }
+
+ return null;
+ }
+ }
+
+ /** */
+ protected static class TestNodeValidationFailedEventListener implements GridLocalEventListener, HighPriorityListener {
+ /** */
+ public static CountDownLatch nodeValidationFailedEventUnblockedLatch;
+
+ /** {@inheritDoc} */
+ @Override public void onEvent(Event evt) {
+ try {
+ if (nodeValidationFailedEventUnblockedLatch != null)
+ assertTrue(nodeValidationFailedEventUnblockedLatch.await(5_000, MILLISECONDS));
+ }
+ catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+
+ log.error(e.getMessage(), e);
+
+ throw new IgniteException(e);
+ }
+ }
+
+ /** {@inheritDoc} */
+ @Override public int order() {
+ return 0;
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/CoreVersionRollingUpgradeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/CoreVersionRollingUpgradeTest.java
new file mode 100644
index 0000000..e852649
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/CoreVersionRollingUpgradeTest.java
@@ -0,0 +1,951 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade;
+
+import java.util.UUID;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.atomic.AtomicReference;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.configuration.BinaryConfiguration;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.IgniteEx;
+import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.distributed.FullMessage;
+import org.apache.ignite.internal.util.distributed.InitMessage;
+import org.apache.ignite.internal.util.distributed.SingleNodeMessage;
+import org.apache.ignite.internal.util.typedef.X;
+import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.spi.IgniteSpiException;
+import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryAbstractMessage;
+import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCustomEventMessage;
+import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryJoinRequestMessage;
+import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddedMessage;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.junit.Test;
+
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.ignite.events.EventType.EVT_CLIENT_NODE_RECONNECTED;
+import static org.apache.ignite.internal.TestRecordingCommunicationSpi.spi;
+import static org.apache.ignite.internal.processors.rollingupgrade.feature.TestIgniteReleaseFeatures_2_19_2.VER_2_19_2_ID_1_FEATURE;
+import static org.apache.ignite.spi.discovery.tcp.TestBlockingTcpDiscoverySpi.blockingDiscovery;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
+
+/** */
+public class CoreVersionRollingUpgradeTest extends AbstractRollingUpgradeTest {
+ /** */
+ @Test
+ public void testVersionUpgradeDisabledSingleServer() throws Exception {
+ startGrid(0);
+
+ checkVersionUpgradeInactive("2.19.0");
+ }
+
+ /** */
+ @Test
+ public void testVersionUpgradeDisabledNodeJoin() throws Exception {
+ startCluster();
+
+ checkVersionUpgradeInactive(TEST_DEFAULT_VER);
+
+ String msg = VER_NOT_EQUAL_ERR;
+
+ checkJoinFailed(3, "2.18.0", msg);
+ checkJoinFailed(3, "2.19.1", msg);
+ }
+
+ /** */
+ @Test
+ public void testVersionUpgradeDisabledFinalization() throws Exception {
+ startCluster();
+
+ ru(1).finalizeClusterVersion();
+
+ checkVersionUpgradeInactive(TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Test
+ public void testVersionsFinalizationNoVersionUpgrade() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ checkVersionUpgradeInProgress(TEST_DEFAULT_VER, null);
+
+ ru(1).finalizeClusterVersion();
+
+ checkVersionUpgradeInactive(TEST_DEFAULT_VER);
+
+ restartNode(1);
+ restartNode(2);
+ }
+
+ /** */
+ @Test
+ public void testVersionUpgradeCommandsIdempotency() throws Exception {
+ startCluster();
+
+ ru(0).enableVersionUpgrade();
+ ru(1).enableVersionUpgrade();
+
+ checkVersionUpgradeInProgress(TEST_DEFAULT_VER, null);
+
+ ru(0).finalizeClusterVersion();
+ ru(0).finalizeClusterVersion();
+
+ checkVersionUpgradeInactive(TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Test
+ public void testVersionUpgradeEnabledNodeJoin() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ checkVersionUpgradeInProgress(TEST_DEFAULT_VER, null);
+
+ restartNode(2);
+ restartNode(0);
+
+ checkJoinSuccess(3, false);
+ checkJoinSuccess(4, true);
+
+ checkVersionUpgradeInProgress(TEST_DEFAULT_VER, null);
+
+ checkJoinFailed(5, "2.18.0", VER_INCOMPATIBLE_ERR);
+
+ upgradeNodeVersion(0, "2.19.1");
+ upgradeNodeVersion(2, "2.19.1");
+
+ checkVersionUpgradeInProgress(TEST_DEFAULT_VER, "2.19.1");
+
+ checkJoinFailed(5, "2.19.2", VER_INCOMPATIBLE_ERR);
+
+ restartNode(3);
+ restartNode(4);
+
+ restartNode(0);
+ restartNode(2);
+
+ upgradeNodeVersion(1, "2.19.1");
+ upgradeNodeVersion(3, "2.19.1");
+ upgradeNodeVersion(4, "2.19.1");
+
+ finalizeClusterVersion(1, "2.19.1");
+ }
+
+ /** */
+ @Test
+ public void testClusterVersionUpgrade() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ upgradeNodeVersion(1, "2.19.2");
+
+ checkVersionFinalizationFailed(1, MULTIPLE_VER_IN_TOP_ERR);
+
+ upgradeNodeVersion(0, "2.19.2");
+
+ checkVersionFinalizationFailed(1, MULTIPLE_VER_IN_TOP_ERR);
+
+ upgradeNodeVersion(2, "2.19.2");
+
+ finalizeClusterVersion(1, "2.19.2");
+ }
+
+ /** */
+ @Test
+ public void testJoinAfterClusterVersionFinalization() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ upgradeNodeVersion(0, "2.19.2");
+ upgradeNodeVersion(2, "2.19.2");
+ stopGrid(1);
+
+ finalizeClusterVersion(0, "2.19.2");
+
+ checkJoinSuccess(1, "2.19.2", false);
+ checkJoinSuccess(4, "2.19.2", true);
+
+ checkVersionUpgradeInactive("2.19.2");
+ }
+
+ /** */
+ @Test
+ public void testFeatureActivationListener() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ CountDownLatch featureActivationLatch = new CountDownLatch(3);
+
+ forAllNodes(nodeIdx -> {
+ upgradeNodeVersion(nodeIdx, "2.19.2");
+ checkFeatureActivationSubscription(nodeIdx, VER_2_19_2_ID_1_FEATURE, featureActivationLatch);
+ });
+
+ finalizeClusterVersion(1, "2.19.2");
+
+ assertTrue(featureActivationLatch.await(getTestTimeout(), MILLISECONDS));
+ }
+
+ /** */
+ @Test
+ public void testIterativeClusterVersionUpgrade() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.2"));
+
+ upgradeNodeVersion(0, TEST_DEFAULT_VER, "2.19.2", "2.19.3");
+
+ stopGrid(0);
+
+ checkJoinSuccess(3, TEST_DEFAULT_VER, false);
+ checkJoinSuccess(4, TEST_DEFAULT_VER, true);
+
+ checkUpgradeFailed(2, "2.19.3", VER_INCOMPATIBLE_ERR);
+ checkUpgradeFailed(1, "2.19.3", VER_INCOMPATIBLE_ERR);
+
+ upgradeNodeVersion(3, "2.19.2");
+ upgradeNodeVersion(4, "2.19.2");
+ checkJoinSuccess(0, "2.19.3", false);
+
+ checkUpgradeFailed(2, TEST_DEFAULT_VER, VER_INCOMPATIBLE_ERR);
+ checkUpgradeFailed(1, TEST_DEFAULT_VER, VER_INCOMPATIBLE_ERR);
+
+ restartNode(1);
+ restartNode(2);
+
+ upgradeNodeVersion(2, TEST_DEFAULT_VER, "2.19.2", "2.19.3");
+ upgradeNodeVersion(1, TEST_DEFAULT_VER, "2.19.2", "2.19.3");
+ upgradeNodeVersion(3, TEST_DEFAULT_VER, "2.19.2", "2.19.3");
+ // After all cluster nodes have been upgraded, the Rolling Upgrade source version becomes equal to the cluster logical version.
+ upgradeNodeVersion(4, TEST_DEFAULT_VER, TEST_DEFAULT_VER, "2.19.3");
+
+ checkJoinSuccess(5, "2.19.2", false);
+ checkJoinSuccess(6, "2.19.2", false);
+
+ upgradeNodeVersion(5, TEST_DEFAULT_VER, "2.19.2", "2.19.3");
+ // After all cluster nodes have been upgraded, the Rolling Upgrade source version becomes equal to the cluster logical version.
+ upgradeNodeVersion(6, TEST_DEFAULT_VER, TEST_DEFAULT_VER, "2.19.3");
+
+ finalizeClusterVersion(1, "2.19.3");
+ }
+
+ /** */
+ @Test
+ public void testMultipleClusterVersionUpgrades() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.2"));
+ finalizeClusterVersion(1, "2.19.2");
+
+ ru(1).enableVersionUpgrade();
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.2", "2.20.0"));
+ finalizeClusterVersion(1, "2.20.0");
+
+ ru(1).enableVersionUpgrade();
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.20.0", "2.21.0"));
+ finalizeClusterVersion(1, "2.21.0");
+ }
+
+ /** */
+ @Test
+ public void testProductVersionChangeDuringClusterVersionUpgrade() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ upgradeNodeVersion(0, "2.19.2");
+
+ upgradeNodeVersion(0, "2.19.3");
+
+ checkUpgradeFailed(1, "2.19.2", VER_INCOMPATIBLE_ERR);
+ checkUpgradeFailed(2, "2.19.2", VER_INCOMPATIBLE_ERR);
+
+ upgradeNodeVersion(1, "2.19.3");
+ upgradeNodeVersion(2, "2.19.3");
+
+ finalizeClusterVersion(1, "2.19.3");
+ }
+
+ /** */
+ @Test
+ public void testUpgradeBetweenVersionsWithCherryPicks() throws Exception {
+ startCluster("2.19.3");
+
+ ru(1).enableVersionUpgrade();
+
+ checkJoinFailed(3, "2.20.0", RU_UNAVAILABLE_BETWEEN_VER_ERR);
+
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.3", "2.20.1"));
+
+ finalizeClusterVersion(1, "2.20.1");
+ }
+
+ /** */
+ @Test
+ public void testUpgradeBetweenVersionWithCherryPicksAndContinuousRange() throws Exception {
+ startCluster("2.20.1");
+
+ ru(1).enableVersionUpgrade();
+
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.20.1", "2.21.1"));
+
+ finalizeClusterVersion(1, "2.21.1");
+ }
+
+ /** */
+ @Test
+ public void testConcurrentFinalization() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ spi(grid(1)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ try {
+ IgniteInternalFuture<Object> firstFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(1, TEST_DEFAULT_VER));
+
+ spi(grid(1)).waitForBlocked();
+
+ IgniteInternalFuture<Object> secondFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(0, TEST_DEFAULT_VER));
+
+ spi(grid(1)).waitForBlocked(2);
+
+ spi(grid(1)).stopBlock();
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> secondFut.get(getTestTimeout(), MILLISECONDS),
+ IgniteCheckedException.class,
+ "Cluster version finalization process is already in progress"
+ );
+
+ firstFut.get(getTestTimeout(), MILLISECONDS);
+
+ checkVersionUpgradeInactive(TEST_DEFAULT_VER);
+ }
+ finally {
+ spi(grid(1)).stopBlock();
+ }
+ }
+
+ /** */
+ @Test
+ public void testConcurrentFinalizationFromSameNode() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ spi(grid(1)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ try {
+ IgniteInternalFuture<Object> firstFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(0, TEST_DEFAULT_VER));
+
+ spi(grid(1)).waitForBlocked();
+
+ IgniteInternalFuture<Object> secondFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(0, TEST_DEFAULT_VER));
+
+ U.sleep(1000);
+
+ spi(grid(1)).stopBlock();
+
+ secondFut.get(getTestTimeout(), MILLISECONDS);
+
+ firstFut.get(getTestTimeout(), MILLISECONDS);
+
+ checkVersionUpgradeInactive(TEST_DEFAULT_VER);
+ }
+ finally {
+ spi(grid(1)).stopBlock();
+ }
+ }
+
+ /** */
+ @Test
+ public void testNodeJoinDuringFinalization() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ spi(grid(1)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ try {
+ IgniteInternalFuture<Object> finalizationFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(1, TEST_DEFAULT_VER));
+
+ spi(grid(1)).waitForBlocked();
+
+ checkJoinFailed(3, TEST_DEFAULT_VER, "Node joins are not allowed during cluster version finalization");
+
+ spi(grid(1)).stopBlock();
+
+ finalizationFut.get(getTestTimeout(), MILLISECONDS);
+
+ checkVersionUpgradeInactive(TEST_DEFAULT_VER);
+ }
+ finally {
+ spi(grid(1)).stopBlock();
+ }
+ }
+
+ /** */
+ @Test
+ public void testValidatedJoiningNodesAccountedDuringFinalization() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ TestRollingUpgradeProcessor.nodeJoinValidationCompletedLatch = new CountDownLatch(1);
+ TestRollingUpgradeProcessor.nodeJoinUnblockedLatch = new CountDownLatch(1);
+
+ try {
+ IgniteInternalFuture<IgniteEx> startFut = GridTestUtils.runAsync(() -> startGrid(3, "2.19.2"));
+
+ assertTrue(TestRollingUpgradeProcessor.nodeJoinValidationCompletedLatch.await(getTestTimeout(), MILLISECONDS));
+
+ blockingDiscovery(grid(0)).block();
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(1, TEST_DEFAULT_VER));
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, InitMessage.class);
+
+ TestRollingUpgradeProcessor.nodeJoinUnblockedLatch.countDown();
+
+ blockingDiscovery(grid(0)).unblock();
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> finalizeFut.get(getTestTimeout(), MILLISECONDS),
+ IgniteCheckedException.class,
+ MULTIPLE_VER_IN_TOP_ERR
+ );
+
+ startFut.get(getTestTimeout(), MILLISECONDS);
+
+ checkVersionUpgradeInProgress(TEST_DEFAULT_VER, "2.19.2");
+ }
+ finally {
+ TestRollingUpgradeProcessor.nodeJoinUnblockedLatch.countDown();
+ }
+ }
+
+ /** */
+ @Test
+ public void testCoordinatorChangeAfterVersionFinalizationFailedOnCoordinator() throws Exception {
+ startCluster();
+ startGrid(3, TEST_DEFAULT_VER);
+
+ ru(1).enableVersionUpgrade();
+
+ TestRollingUpgradeProcessor.nodeJoinValidationCompletedLatch = new CountDownLatch(1);
+ TestNodeValidationFailedEventListener.nodeValidationFailedEventUnblockedLatch = new CountDownLatch(1);
+
+ try {
+ IgniteConfiguration cfg = getConfiguration(4, "2.19.1")
+ .setBinaryConfiguration(new BinaryConfiguration().setCompactFooter(false));
+
+ IgniteInternalFuture<IgniteEx> startFut = GridTestUtils.runAsync(() -> startGrid(cfg));
+
+ assertTrue(TestRollingUpgradeProcessor.nodeJoinValidationCompletedLatch.await(getTestTimeout(), MILLISECONDS));
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(1, TEST_DEFAULT_VER));
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> finalizeFut.get(getTestTimeout(), MILLISECONDS),
+ IgniteCheckedException.class,
+ MULTIPLE_VER_IN_TOP_ERR
+ );
+
+ TestNodeValidationFailedEventListener.nodeValidationFailedEventUnblockedLatch.countDown();
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> startFut.get(getTestTimeout(), MILLISECONDS),
+ IgniteCheckedException.class,
+ "Local node's binary configuration is not equal to remote node's binary configuration"
+ );
+ }
+ finally {
+ TestNodeValidationFailedEventListener.nodeValidationFailedEventUnblockedLatch.countDown();
+ }
+
+ stopGrid(coordinatorIndex());
+
+ forAllNodes(n -> upgradeNodeVersion(n, "2.19.1"));
+
+ finalizeClusterVersion(1, "2.19.1");
+ }
+
+ /** */
+ @Test
+ public void testConcurrentFinalizationErrorPreserveNodeFence() throws Exception {
+ startGrid(0, TEST_DEFAULT_VER);
+ startGrid(1, TEST_DEFAULT_VER);
+ startGrid(2, TEST_DEFAULT_VER);
+
+ startClientGrid(3, TEST_DEFAULT_VER);
+
+ ru(1).enableVersionUpgrade();
+
+ blockingDiscovery(grid(0)).block();
+
+ try {
+ IgniteInternalFuture<Object> firstFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(1, TEST_DEFAULT_VER));
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, InitMessage.class);
+
+ IgniteInternalFuture<Object> secondFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(3, TEST_DEFAULT_VER));
+
+ waitForBlockedDiscoveryMessages(grid(0), 2, InitMessage.class);
+
+ UUID startedFinalizeProcId = extractFinalizeProcessId(1);
+
+ spi(grid(2)).blockMessages((node, msg) -> {
+ if (!(msg instanceof SingleNodeMessage<?> singleNodeMsg))
+ return false;
+
+ return singleNodeMsg.processId().equals(startedFinalizeProcId);
+ });
+
+ blockingDiscovery(grid(0)).unblock();
+
+ spi(grid(2)).waitForBlocked();
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> secondFut.get(getTestTimeout(), MILLISECONDS),
+ IgniteCheckedException.class,
+ "Cluster version finalization process is already in progress"
+ );
+
+ checkJoinFailed(4, TEST_DEFAULT_VER, "Node joins are not allowed during cluster version finalization");
+
+ spi(grid(2)).stopBlock();
+
+ firstFut.get(getTestTimeout(), MILLISECONDS);
+ }
+ finally {
+ blockingDiscovery(grid(0)).unblock();
+ spi(grid(2)).stopBlock();
+ }
+ }
+
+ /** */
+ @Test
+ public void testClientNodeDisconnectDuringFinalization() throws Exception {
+ startCluster();
+
+ ru(2).enableVersionUpgrade();
+
+ spi(grid(2)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ try {
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> ru(2).finalizeClusterVersion());
+
+ spi(grid(2)).waitForBlocked();
+
+ grid(0).context().discovery().failNode(grid(2).context().localNodeId(), "test");
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> finalizeFut.get(getTestTimeout(), MILLISECONDS),
+ IgniteException.class,
+ "Client node has disconnected");
+
+ assertTrue(waitForCondition(() -> !ru(1).isVersionUpgradeEnabled(), getTestTimeout()));
+ }
+ finally {
+ spi(grid(2)).stopBlock();
+ }
+ }
+
+ /** */
+ @Test
+ public void testClientNodeClearsActiveFinalizationProcessOnDisconnect() throws Exception {
+ startCluster();
+ startClientGrid(3, TEST_DEFAULT_VER);
+
+ CountDownLatch cliReconnectedLatch = new CountDownLatch(1);
+
+ grid(3).events().localListen(evt -> {
+ cliReconnectedLatch.countDown();
+
+ return true;
+ }, EVT_CLIENT_NODE_RECONNECTED);
+
+ ru(1).enableVersionUpgrade();
+
+ spi(grid(3)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> ru(1).finalizeClusterVersion());
+
+ spi(grid(3)).waitForBlocked();
+
+ AtomicReference<TcpDiscoveryJoinRequestMessage> cliJoinReq = new AtomicReference<>();
+ CountDownLatch cliJoinReqReceivedLatch = new CountDownLatch(1);
+
+ blockingDiscovery(grid(0)).messageFilter(m -> {
+ if ((m instanceof TcpDiscoveryJoinRequestMessage joinReq) && joinReq.node().isClient()) {
+ cliJoinReq.set(joinReq);
+ cliJoinReqReceivedLatch.countDown();
+
+ return true;
+ }
+
+ return false;
+ });
+
+ grid(0).context().discovery().failNode(grid(3).context().localNodeId(), "test");
+
+ finalizeFut.get(getTestTimeout(), MILLISECONDS);
+
+ assertTrue(cliJoinReqReceivedLatch.await(getTestTimeout(), MILLISECONDS));
+
+ blockingDiscovery(grid(0)).messageQueue().addLast(cliJoinReq.get());
+
+ assertTrue(cliReconnectedLatch.await(getTestTimeout(), MILLISECONDS));
+
+ spi(grid(3)).stopBlock();
+
+ ru(1).enableVersionUpgrade();
+
+ finalizeClusterVersion(1, TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Test
+ public void testFailedNodeDoesNotAffectFinalization() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.1"));
+
+ IgniteConfiguration cfg = getConfiguration(3, TEST_DEFAULT_VER)
+ .setBinaryConfiguration(new BinaryConfiguration().setCompactFooter(false));
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> startGrid(cfg),
+ IgniteSpiException.class,
+ "Local node's binary configuration is not equal to remote node's binary configuration"
+ );
+
+ finalizeClusterVersion(2, "2.19.1");
+ }
+
+ /** */
+ @Test
+ public void testAbortNoFinalizationInProgress() throws Exception {
+ startCluster();
+
+ ru(1).abortClusterVersionFinalization();
+
+ ru(2).enableVersionUpgrade();
+
+ ru(0).abortClusterVersionFinalization();
+
+ startGrid(3);
+
+ finalizeClusterVersion(2, TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Test
+ public void testConcurrentAbortAndPrepareFinalization() throws Exception {
+ startCluster();
+
+ ru(2).enableVersionUpgrade();
+
+ blockingDiscovery(grid(0)).block();
+
+ IgniteInternalFuture<Object> abortFut = GridTestUtils.runAsync(() -> ru(0).abortClusterVersionFinalization());
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, InitMessage.class);
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> ru(1).finalizeClusterVersion());
+
+ waitForBlockedDiscoveryMessages(grid(0), 2, InitMessage.class);
+
+ blockingDiscovery(grid(0)).unblock();
+
+ abortFut.get(getTestTimeout(), MILLISECONDS);
+ finalizeFut.get(getTestTimeout(), MILLISECONDS);
+ }
+
+ /** */
+ @Test
+ public void testAbortAfterFinalizationPrepare() throws Exception {
+ startCluster();
+
+ ru(2).enableVersionUpgrade();
+
+ spi(grid(1)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> ru(1).finalizeClusterVersion());
+
+ spi(grid(1)).waitForBlocked();
+
+ blockingDiscovery(grid(0)).block();
+
+ IgniteInternalFuture<Object> abortFut = GridTestUtils.runAsync(() -> ru(2).abortClusterVersionFinalization());
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, InitMessage.class);
+
+ blockingDiscovery(grid(0)).unblock();
+ spi(grid(1)).stopBlock();
+
+ abortFut.get(getTestTimeout(), MILLISECONDS);
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> finalizeFut.get(getTestTimeout(), MILLISECONDS),
+ IgniteException.class,
+ "Operation has been aborted by administrator");
+
+ checkVersionUpgradeInProgress(TEST_DEFAULT_VER, null);
+
+ startGrid(3, TEST_DEFAULT_VER);
+
+ finalizeClusterVersion(2, TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Test
+ public void testAbortBeforeFinalizationComplete() throws Exception {
+ startCluster();
+
+ ru(2).enableVersionUpgrade();
+
+ spi(grid(1)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> ru(1).finalizeClusterVersion());
+
+ spi(grid(1)).waitForBlocked();
+
+ UUID startedFinalizeProcId = extractFinalizeProcessId(1);
+
+ CountDownLatch finalizeCompleteStartedLatch = new CountDownLatch(1);
+ AtomicReference<TcpDiscoveryAbstractMessage> finalizeCompleteStartMsg = new AtomicReference<>();
+
+ blockingDiscovery(grid(0)).messageFilter(m -> {
+ if ((m instanceof TcpDiscoveryCustomEventMessage customMsg)
+ && (customMsg.message() instanceof InitMessage<?> initMsg)
+ && initMsg.processId().equals(startedFinalizeProcId)
+ ) {
+ finalizeCompleteStartMsg.set(m);
+ finalizeCompleteStartedLatch.countDown();
+
+ return true;
+ }
+
+ return false;
+ });
+
+ spi(grid(1)).stopBlock();
+
+ assertTrue(finalizeCompleteStartedLatch.await(getTestTimeout(), MILLISECONDS));
+
+ blockingDiscovery(grid(0)).block();
+
+ IgniteInternalFuture<Object> abortFut = GridTestUtils.runAsync(() -> ru(2).abortClusterVersionFinalization());
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, InitMessage.class);
+
+ blockingDiscovery(grid(0)).messageQueue().addLast(finalizeCompleteStartMsg.get());
+
+ blockingDiscovery(grid(0)).unblock();
+
+ abortFut.get(getTestTimeout(), MILLISECONDS);
+
+ GridTestUtils.assertThrowsAnyCause(
+ log,
+ () -> finalizeFut.get(getTestTimeout(), MILLISECONDS),
+ IgniteException.class,
+ "Operation has been aborted by administrator");
+
+ checkVersionUpgradeInProgress(TEST_DEFAULT_VER, null);
+
+ startGrid(3, TEST_DEFAULT_VER);
+
+ finalizeClusterVersion(2, TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Test
+ public void testAbortedAfterFinalizationComplete() throws Exception {
+ startGrid(0, TEST_DEFAULT_VER);
+ startGrid(1, TEST_DEFAULT_VER);
+ startGrid(2, TEST_DEFAULT_VER);
+ startClientGrid(3, TEST_DEFAULT_VER);
+
+ ru(2).enableVersionUpgrade();
+
+ spi(grid(1)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> ru(1).finalizeClusterVersion());
+
+ spi(grid(1)).waitForBlocked();
+
+ blockingDiscovery(grid(0)).block();
+
+ spi(grid(1)).stopBlock();
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, FullMessage.class);
+
+ spi(grid(1)).blockMessages((node, msg) -> msg instanceof SingleNodeMessage);
+
+ blockingDiscovery(grid(0)).unblock();
+
+ spi(grid(1)).waitForBlocked();
+
+ IgniteInternalFuture<Object> abortFut = GridTestUtils.runAsync(() -> ru(2).abortClusterVersionFinalization());
+
+ spi(grid(1)).stopBlock();
+
+ abortFut.get(getTestTimeout(), MILLISECONDS);
+
+ finalizeFut.get(getTestTimeout(), MILLISECONDS);
+
+ checkVersionUpgradeInactive(TEST_DEFAULT_VER);
+
+ ru(2).enableVersionUpgrade();
+
+ startGrid(4, TEST_DEFAULT_VER);
+
+ finalizeClusterVersion(2, TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Test
+ public void testAbortedAfterFinalizationFinished() throws Exception {
+ startCluster();
+
+ ru(2).enableVersionUpgrade();
+
+ finalizeClusterVersion(2, TEST_DEFAULT_VER);
+
+ ru(1).abortClusterVersionFinalization();
+
+ ru(2).enableVersionUpgrade();
+
+ startGrid(3, TEST_DEFAULT_VER);
+
+ finalizeClusterVersion(2, TEST_DEFAULT_VER);
+ }
+
+ /** */
+ @Test
+ public void testConcurrentNodeJoinAndFinalization() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ TestRollingUpgradeProcessor.nodeJoinValidationCompletedLatch = new CountDownLatch(1);
+ TestRollingUpgradeProcessor.nodeJoinUnblockedLatch = new CountDownLatch(1);
+
+ try {
+ IgniteInternalFuture<IgniteEx> startFut = GridTestUtils.runAsync(() -> startGrid(3, TEST_DEFAULT_VER));
+
+ assertTrue(TestRollingUpgradeProcessor.nodeJoinValidationCompletedLatch.await(getTestTimeout(), MILLISECONDS));
+
+ blockingDiscovery(grid(0)).block();
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> finalizeClusterVersion(1, TEST_DEFAULT_VER));
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, InitMessage.class);
+
+ TestRollingUpgradeProcessor.nodeJoinUnblockedLatch.countDown();
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, TcpDiscoveryNodeAddedMessage.class);
+
+ blockingDiscovery(grid(0)).unblock();
+
+ finalizeFut.get(getTestTimeout(), MILLISECONDS);
+
+ startFut.get(getTestTimeout(), MILLISECONDS);
+ }
+ finally {
+ TestRollingUpgradeProcessor.nodeJoinUnblockedLatch.countDown();
+ }
+ }
+
+ /** */
+ @Test
+ public void testConcurrentFinalizationAndNodeJoin() throws Exception {
+ startCluster();
+
+ ru(1).enableVersionUpgrade();
+
+ blockingDiscovery(grid(0)).block();
+
+ IgniteInternalFuture<Object> finalizeFut = GridTestUtils.runAsync(() -> ru(1).finalizeClusterVersion());
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, InitMessage.class);
+
+ IgniteInternalFuture<IgniteEx> startFut = GridTestUtils.runAsync(() -> startGrid(3, TEST_DEFAULT_VER));
+
+ waitForBlockedDiscoveryMessages(grid(0), 1, TcpDiscoveryJoinRequestMessage.class);
+
+ blockingDiscovery(grid(0)).unblock();
+
+ finalizeFut.get(getTestTimeout(), MILLISECONDS);
+
+ try {
+ startFut.get(getTestTimeout(), MILLISECONDS);
+ }
+ catch (IgniteCheckedException e) {
+ assertTrue(X.hasCause(e, "Node joins are not allowed during cluster version finalization", IgniteSpiException.class));
+ }
+ }
+
+ /** */
+ private void waitForBlockedDiscoveryMessages(
+ IgniteEx ignite,
+ int expCnt,
+ Class<?> msgCls
+ ) throws Exception {
+ assertTrue(waitForCondition(() -> queuedDiscoveryMessageCountMatches(ignite, expCnt, msgCls), getTestTimeout()));
+ }
+
+ /** */
+ private boolean queuedDiscoveryMessageCountMatches(IgniteEx ignite, int expCnt, Class<?> msgCls) {
+ int cnt = 0;
+
+ for (TcpDiscoveryAbstractMessage msg : blockingDiscovery(ignite).messageQueue()) {
+ Class<?> queuedMsgCls = (msg instanceof TcpDiscoveryCustomEventMessage customMsg)
+ ? customMsg.message().getClass()
+ : msg.getClass();
+
+ if (msgCls.isAssignableFrom(queuedMsgCls))
+ cnt++;
+ }
+
+ return expCnt == cnt;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/PluginVersionRollingUpgradeTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/PluginVersionRollingUpgradeTest.java
new file mode 100644
index 0000000..02879bf
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/PluginVersionRollingUpgradeTest.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade;
+
+import org.junit.Test;
+
+/** */
+public class PluginVersionRollingUpgradeTest extends AbstractRollingUpgradeTest {
+ /** */
+ @Test
+ public void testUpgradeDisabledJoinWithExtraComponent() throws Exception {
+ startGrid(0, "2.19.0");
+
+ checkJoinFailed(1, "2.19.0 | 1.0.0", VER_NOT_EQUAL_ERR);
+ }
+
+ /** */
+ @Test
+ public void testUpgradeDisabledJoinWithMissingComponent() throws Exception {
+ startGrid(0, "2.19.0 | 1.0.0");
+
+ checkJoinFailed(1, "2.19.0", false, VER_NOT_EQUAL_ERR);
+
+ checkJoinFailed(1, "2.19.0 | 2.0.0", VER_NOT_EQUAL_ERR);
+
+ checkJoinSuccess(1, "2.19.0", true);
+ }
+
+ /** */
+ @Test
+ public void testNewPluginActivation() throws Exception {
+ startCluster("2.19.0");
+
+ ru(1).enableVersionUpgrade();
+
+ checkVersionUpgradeInProgress("2.19.0 | null", "null | null");
+
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.0 | null", "2.19.0 | 1.0.0"));
+
+ finalizeClusterVersion(1, "2.19.0 | 1.0.0");
+ }
+
+ /** */
+ @Test
+ public void testPluginVersionUpgrade() throws Exception {
+ startCluster("2.19.0 | 1.0.0");
+
+ ru(1).enableVersionUpgrade();
+
+ checkVersionUpgradeInProgress("2.19.0 | 1.0.0", "null | null");
+
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.0 | 1.0.0", "2.19.0 | 2.0.0"));
+
+ finalizeClusterVersion(1, "2.19.0 | 2.0.0");
+
+ ru(1).enableVersionUpgrade();
+
+ checkVersionUpgradeInProgress("2.19.0 | 2.0.0", "null | null");
+
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.0 | 2.0.0", "2.19.0 | 3.0.0"));
+
+ finalizeClusterVersion(1, "2.19.0 | 3.0.0");
+ }
+
+ /** */
+ @Test
+ public void testPluginAndIgniteVersionUpgrade() throws Exception {
+ startCluster("2.19.0 | 1.0.0");
+
+ ru(1).enableVersionUpgrade();
+
+ forAllNodes(nodeIdx -> upgradeNodeVersion(nodeIdx, "2.19.0 | 1.0.0", "2.20.0 | 2.0.0"));
+
+ finalizeClusterVersion(1, "2.20.0 | 2.0.0");
+ }
+
+ /** */
+ @Test
+ public void testComponentVersionValidationDuringFinalization() throws Exception {
+ startGrid(0, "2.19.0 | 1.0.0");
+ startGrid(1, "2.19.0 | 1.0.0");
+ startClientGrid(2, "2.19.0");
+
+ ru(1).enableVersionUpgrade();
+
+ startClientGrid(3, "2.19.0 | 2.0.0");
+ checkVersionFinalizationFailed(0, MULTIPLE_VER_IN_TOP_ERR);
+ stopGrid(3);
+
+ startGrid(4, "2.19.0 | 2.0.0");
+ checkVersionFinalizationFailed(0, MULTIPLE_VER_IN_TOP_ERR);
+ stopGrid(4);
+
+ startClientGrid(3, "2.19.0 | 1.0.0");
+ startGrid(4, "2.19.0 | 1.0.0");
+
+ finalizeClusterVersion(1, "2.19.0 | 1.0.0");
+ }
+
+ /** */
+ @Test
+ public void testNodeValidationDuringUpgrade() throws Exception {
+ startCluster("2.19.0 | 1.0.0");
+
+ ru(1).enableVersionUpgrade();
+
+ checkJoinFailed(3, "2.20.0", false, "Some components active in the cluster are not configured on the joining server node");
+ checkJoinSuccess(3, "2.20.0", true);
+
+ checkJoinFailed(4, "2.20.0 | 3.0.0", RU_UNAVAILABLE_BETWEEN_VER_ERR);
+
+ checkJoinSuccess(4, "2.20.0 | 2.0.0", true);
+
+ checkJoinFailed(5, "2.20.0 | 3.0.0", VER_INCOMPATIBLE_ERR);
+
+ upgradeNodeVersion(0, "2.19.0 | 1.0.0", "2.20.0 | 2.0.0");
+ upgradeNodeVersion(1, "2.19.0 | 1.0.0", "2.20.0 | 2.0.0");
+ upgradeNodeVersion(2, "2.19.0 | 1.0.0", "2.20.0 | 2.0.0");
+ upgradeNodeVersion(4, "2.19.0 | 1.0.0", "2.20.0 | 2.0.0");
+
+ finalizeClusterVersion(1, "2.20.0 | 2.0.0");
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureSetTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureSetTest.java
new file mode 100644
index 0000000..2f5ca5e
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/IgniteFeatureSetTest.java
@@ -0,0 +1,167 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+import org.apache.ignite.internal.util.GridIntList;
+import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.junit.Test;
+
+import static java.util.Arrays.asList;
+import static org.apache.ignite.testframework.GridTestUtils.assertThrows;
+
+/** */
+public class IgniteFeatureSetTest extends GridCommonAbstractTest {
+ /** */
+ @Test
+ public void testFeatureSetElements() {
+ checkFeatureSetElements(List.of(0), featureSetOf(0));
+ checkFeatureSetElements(asList(0, 1, 2), featureSetOf(0, 1, 2));
+ checkFeatureSetElements(asList(0, 2, 4, 6), featureSetOf(0, 2, 4, 6));
+ checkFeatureSetElements(asList(0, 1, 2, 3), featureSetOf(3));
+ checkFeatureSetElements(asList(0, 1, 2, 3, 4), featureSetOf(2, 3, 4));
+ checkFeatureSetElements(asList(0, 10), featureSetOf(0, 10));
+ checkFeatureSetElements(asList(0, 1, 2, 10), featureSetOf(0, 1, 2, 10));
+ checkFeatureSetElements(asList(0, 1, 2, 3, 4, 10), featureSetOf(2, 3, 4, 10));
+ checkFeatureSetElements(asList(0, 1, 2, 3, 4, 10, 15), featureSetOf(2, 3, 4, 10, 15));
+ checkFeatureSetElements(asList(0, 1, 2, 3, 4, 5, 10, 15), featureSetOf(5, 2, 10, 3, 15, 4));
+ }
+
+ /** */
+ @Test
+ public void testNotContains() {
+ IgniteFeatureSet featureSet = featureSetOf(2, 3, 4, 10, 15);
+
+ assertFalse(featureSet.contains(5));
+ assertFalse(featureSet.contains(11));
+ assertFalse(featureSet.contains(16));
+ }
+
+ /** */
+ @Test
+ public void testUpgradeAvailability() {
+ assertTrue(featureSetOf(0).isUpgradableTo(featureSetOf(0)));
+ assertTrue(featureSetOf(0).isUpgradableTo(featureSetOf(0, 1, 2)));
+ assertTrue(featureSetOf(0, 1, 2).isUpgradableTo(featureSetOf(0, 1, 2, 3)));
+ assertTrue(featureSetOf(0, 1, 2).isUpgradableTo(featureSetOf(2, 3, 4)));
+ assertTrue(featureSetOf(0, 1, 2).isUpgradableTo(featureSetOf(3, 4, 5)));
+ assertTrue(featureSetOf(1).isUpgradableTo(featureSetOf(1)));
+ assertTrue(featureSetOf(2, 3, 4).isUpgradableTo(featureSetOf(2, 3, 4)));
+ assertTrue(featureSetOf(2, 3, 4).isUpgradableTo(featureSetOf(2, 3, 4, 5, 6)));
+ assertTrue(featureSetOf(2, 3, 4).isUpgradableTo(featureSetOf(2, 3, 4, 5, 10)));
+ assertTrue(featureSetOf(0, 10).isUpgradableTo(featureSetOf(0, 1, 2, 10)));
+ assertTrue(featureSetOf(2, 3, 4, 8, 10).isUpgradableTo(featureSetOf(2, 3, 4, 5, 6, 8, 10)));
+ assertTrue(featureSetOf(2, 3, 4, 8, 10).isUpgradableTo(featureSetOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 10)));
+
+ assertFalse(featureSetOf(1).isUpgradableTo(featureSetOf(0)));
+ assertFalse(featureSetOf(0, 1, 2).isUpgradableTo(featureSetOf(4, 5, 6)));
+ assertFalse(featureSetOf(0, 1, 2, 3).isUpgradableTo(featureSetOf(1, 2)));
+ assertFalse(featureSetOf(2, 3, 4).isUpgradableTo(featureSetOf(0, 1)));
+ assertFalse(featureSetOf(2, 3, 4, 10).isUpgradableTo(featureSetOf(2, 3, 4, 5, 6, 11)));
+ assertFalse(featureSetOf(2, 3, 4, 8, 10).isUpgradableTo(featureSetOf(2, 3, 4, 5, 6, 10)));
+ }
+
+ /** */
+ @Test
+ public void testDifference() {
+ assertTrue(featureSetOf(0).difference(featureSetOf(0)).isEmpty());
+ assertTrue(featureSetOf(0, 1, 2).difference(featureSetOf(0, 1, 2)).isEmpty());
+ assertTrue(featureSetOf(0, 1, 2, 10).difference(featureSetOf(0, 1, 2, 10)).isEmpty());
+ assertTrue(featureSetOf(2).difference(featureSetOf(2)).isEmpty());
+ assertTrue(featureSetOf(2, 3, 4).difference(featureSetOf(2, 3, 4)).isEmpty());
+ assertTrue(featureSetOf(2, 3, 4, 10).difference(featureSetOf(2, 3, 4, 10)).isEmpty());
+
+ assertEquals(intList(3), featureSetOf(0, 1, 2).difference(featureSetOf(0, 1, 2, 3)));
+
+ assertEquals(intList(3, 4), featureSetOf(0, 1, 2, 10).difference(featureSetOf(0, 1, 2, 3, 4, 10)));
+
+ assertEquals(intList(6, 7, 8), featureSetOf(2, 3, 4, 5).difference(featureSetOf(2, 3, 4, 5, 6, 7, 8)));
+
+ assertEquals(intList(6, 7, 8, 15), featureSetOf(2, 3, 4, 5, 10).difference(featureSetOf(2, 3, 4, 5, 6, 7, 8, 10, 15)));
+ }
+
+ /** */
+ @Test
+ public void testEqualsIdenticalSets() {
+ assertTrue(isIdentical(featureSetOf(0, 1, 2), featureSetOf(0, 1, 2)));
+ assertTrue(isIdentical(featureSetOf(0, 1, 2, 10), featureSetOf(0, 1, 2, 10)));
+ assertTrue(isIdentical(featureSetOf(1, 2, 3), featureSetOf(1, 2, 3)));
+ assertTrue(isIdentical(featureSetOf(1, 2, 3, 10), featureSetOf(1, 2, 3, 10)));
+
+ assertFalse(isIdentical(featureSetOf(0, 1, 2), null));
+ assertFalse(isIdentical(featureSetOf(0, 1, 2), featureSetOf(0, 1, 2, 3)));
+ assertFalse(isIdentical(featureSetOf(1, 2, 3), featureSetOf(1, 2, 3, 10)));
+ assertFalse(isIdentical(featureSetOf(0, 1, 2, 10), featureSetOf(0, 1, 2, 8, 10)));
+ }
+
+ /** */
+ @Test
+ public void testToString() {
+ assertEquals("IgniteFeatureSet [2 -> 5]", featureSetOf(2, 3, 4, 5).toString());
+ assertEquals("IgniteFeatureSet [2, 8, 10]", featureSetOf(2, 8, 10).toString());
+ assertEquals("IgniteFeatureSet [2, 3, 8, 10]", featureSetOf(2, 3, 8, 10).toString());
+ assertEquals("IgniteFeatureSet [2 -> 5, 8, 10]", featureSetOf(2, 3, 4, 5, 8, 10).toString());
+ }
+
+ /** */
+ @Test
+ public void testBuildInput() {
+ assertThrows(log, () -> IgniteFeatureSet.buildFrom(Collections.emptyList()), IllegalArgumentException.class, null);
+ assertThrows(log, () -> IgniteFeatureSet.buildFrom((Class<?>)null), NullPointerException.class, null);
+ assertThrows(log, () -> IgniteFeatureSet.buildFrom((List<IgniteFeature>)null), NullPointerException.class, null);
+ }
+
+ /** */
+ private IgniteFeatureSet featureSetOf(int... ids) {
+ List<IgniteFeature> features = new ArrayList<>();
+
+ for (int id : ids)
+ features.add(new IgniteCoreFeature(id));
+
+ return IgniteFeatureSet.buildFrom(features);
+ }
+
+ /** */
+ private void checkFeatureSetElements(List<Integer> expElements, IgniteFeatureSet featureSet) {
+ List<Integer> curElements = new ArrayList<>();
+
+ Iterator<Integer> iter = featureSet.iterator();
+
+ while (iter.hasNext())
+ curElements.add(iter.next());
+
+ assertThrows(log, iter::next, NoSuchElementException.class, null);
+
+ assertEquals(expElements, curElements);
+ assertTrue(expElements.stream().allMatch(featureSet::contains));
+ }
+
+ /** */
+ private boolean isIdentical(IgniteFeatureSet lhs, IgniteFeatureSet rhs) {
+ return lhs.equals(rhs) && lhs.hashCode() == rhs.hashCode();
+ }
+
+ /** */
+ private static GridIntList intList(int... vals) {
+ return new GridIntList(vals);
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_18_0.java
similarity index 63%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_18_0.java
index eb38135..7f19bd5 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_18_0.java
@@ -15,25 +15,10 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
-
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
/** */
-public class InlineSizesData implements Message {
+public class TestIgniteReleaseFeatures_2_18_0 {
/** */
- @Order(0)
- Map<String, Integer> sizes;
-
- /** */
- public InlineSizesData() {}
-
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
- }
+ public static final IgniteFeature STUB_FEATURE = new IgniteCoreFeature(Integer.MAX_VALUE);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_0.java
similarity index 63%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_0.java
index eb38135..3cb497e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_0.java
@@ -15,25 +15,10 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
-
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
/** */
-public class InlineSizesData implements Message {
+public class TestIgniteReleaseFeatures_2_19_0 {
/** */
- @Order(0)
- Map<String, Integer> sizes;
-
- /** */
- public InlineSizesData() {}
-
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
- }
+ public static final IgniteFeature ROLLING_UPGRADE_FEATURE = new IgniteCoreFeature(0);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_1.java
similarity index 64%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_1.java
index eb38135..33fd6ce 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_1.java
@@ -15,25 +15,13 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
-
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
/** */
-public class InlineSizesData implements Message {
+public class TestIgniteReleaseFeatures_2_19_1 {
/** */
- @Order(0)
- Map<String, Integer> sizes;
+ public static final IgniteFeature ROLLING_UPGRADE_FEATURE = TestIgniteReleaseFeatures_2_19_0.ROLLING_UPGRADE_FEATURE;
/** */
- public InlineSizesData() {}
-
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
- }
+ public static final IgniteFeature VER_2_19_1_ID_1_FEATURE = new IgniteCoreFeature(1);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_2.java
similarity index 63%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_2.java
index eb38135..cc17755 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_2.java
@@ -15,25 +15,16 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
-
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
/** */
-public class InlineSizesData implements Message {
+public class TestIgniteReleaseFeatures_2_19_2 {
/** */
- @Order(0)
- Map<String, Integer> sizes;
+ public static final IgniteFeature ROLLING_UPGRADE_FEATURE = TestIgniteReleaseFeatures_2_19_1.ROLLING_UPGRADE_FEATURE;
/** */
- public InlineSizesData() {}
+ public static final IgniteFeature VER_2_19_2_ID_1_FEATURE = TestIgniteReleaseFeatures_2_19_1.VER_2_19_1_ID_1_FEATURE;
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
- }
+ /** */
+ public static final IgniteFeature VER_2_19_2_ID_2_FEATURE = new IgniteCoreFeature(2);
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_3.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_3.java
new file mode 100644
index 0000000..7ede0b8
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_19_3.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+/** */
+public class TestIgniteReleaseFeatures_2_19_3 {
+ /** */
+ public static final IgniteFeature ROLLING_UPGRADE_FEATURE = TestIgniteReleaseFeatures_2_19_2.ROLLING_UPGRADE_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_19_2_ID_1_FEATURE = TestIgniteReleaseFeatures_2_19_2.VER_2_19_2_ID_1_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_19_2_ID_2_FEATURE = TestIgniteReleaseFeatures_2_19_2.VER_2_19_2_ID_2_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_19_3_ID_6_FEATURE = TestIgniteReleaseFeatures_2_21_0.VER_2_21_0_ID_6_FEATURE;
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_20_0.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_20_0.java
new file mode 100644
index 0000000..94719df
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_20_0.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+/** */
+public class TestIgniteReleaseFeatures_2_20_0 {
+ /** */
+ public static final IgniteFeature ROLLING_UPGRADE_FEATURE = TestIgniteReleaseFeatures_2_19_2.ROLLING_UPGRADE_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_19_2_ID_1_FEATURE = TestIgniteReleaseFeatures_2_19_2.VER_2_19_2_ID_1_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_19_2_ID_2_FEATURE = TestIgniteReleaseFeatures_2_19_2.VER_2_19_2_ID_2_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_20_0_ID_3_FEATURE = new IgniteCoreFeature(3);
+
+ /** */
+ public static final IgniteFeature VER_2_20_0_ID_4_FEATURE = new IgniteCoreFeature(4);
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_20_1.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_20_1.java
new file mode 100644
index 0000000..4bb051b
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_20_1.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+/** */
+public class TestIgniteReleaseFeatures_2_20_1 {
+ /** */
+ public static final IgniteFeature ROLLING_UPGRADE_FEATURE = TestIgniteReleaseFeatures_2_20_0.ROLLING_UPGRADE_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_19_2_ID_1_FEATURE = TestIgniteReleaseFeatures_2_20_0.VER_2_19_2_ID_1_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_19_2_ID_2_FEATURE = TestIgniteReleaseFeatures_2_20_0.VER_2_19_2_ID_2_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_20_0_ID_3_FEATURE = TestIgniteReleaseFeatures_2_20_0.VER_2_20_0_ID_3_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_20_0_ID_4_FEATURE = TestIgniteReleaseFeatures_2_20_0.VER_2_20_0_ID_4_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_20_1_ID_6_FEATURE = new IgniteCoreFeature(6);
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_21_0.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_21_0.java
new file mode 100644
index 0000000..fe6b190
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_21_0.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+/** */
+public class TestIgniteReleaseFeatures_2_21_0 {
+ /** */
+ public static final IgniteFeature VER_2_20_0_ID_3_FEATURE = TestIgniteReleaseFeatures_2_20_1.VER_2_20_0_ID_3_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_20_0_ID_4_FEATURE = TestIgniteReleaseFeatures_2_20_1.VER_2_20_0_ID_4_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_21_0_ID_5_FEATURE = new IgniteCoreFeature(5);
+
+ /** */
+ public static final IgniteFeature VER_2_21_0_ID_6_FEATURE = new IgniteCoreFeature(6);
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_21_1.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_21_1.java
new file mode 100644
index 0000000..6ec0004
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestIgniteReleaseFeatures_2_21_1.java
@@ -0,0 +1,36 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+/** */
+public class TestIgniteReleaseFeatures_2_21_1 {
+ /** */
+ public static final IgniteFeature VER_2_20_0_ID_3_FEATURE = TestIgniteReleaseFeatures_2_21_0.VER_2_20_0_ID_3_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_20_0_ID_4_FEATURE = TestIgniteReleaseFeatures_2_21_0.VER_2_20_0_ID_4_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_21_0_ID_5_FEATURE = TestIgniteReleaseFeatures_2_21_0.VER_2_21_0_ID_5_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_21_0_ID_6_FEATURE = TestIgniteReleaseFeatures_2_21_0.VER_2_21_0_ID_6_FEATURE;
+
+ /** */
+ public static final IgniteFeature VER_2_21_1_ID_7_FEATURE = new IgniteCoreFeature(7);
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginComponentFeatureSetProvider.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginComponentFeatureSetProvider.java
new file mode 100644
index 0000000..a15242e
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginComponentFeatureSetProvider.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
+
+import java.util.Collection;
+import org.apache.ignite.IgniteException;
+import org.apache.ignite.internal.processors.rollingupgrade.AbstractRollingUpgradeTest;
+import org.apache.ignite.lang.IgniteProductVersion;
+
+/** */
+public class TestPluginComponentFeatureSetProvider implements IgniteComponentFeatureSetProvider {
+ /** */
+ private final String pluginVer;
+
+ /** */
+ public TestPluginComponentFeatureSetProvider(String pluginVer) {
+ this.pluginVer = pluginVer;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String componentName() {
+ return TestPluginFeature.COMPONENT_NAME;
+ }
+
+ /** {@inheritDoc} */
+ @Override public IgniteProductVersion componentVersion() {
+ return IgniteProductVersion.fromString(pluginVer);
+ }
+
+ /** {@inheritDoc} */
+ @Override public Collection<IgniteFeature> features() {
+ try {
+ return AbstractRollingUpgradeTest.readDeclaredPluginFeatures(pluginVer);
+ }
+ catch (Exception e) {
+ throw new IgniteException(e);
+ }
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginFeature.java
similarity index 63%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginFeature.java
index eb38135..c752752 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginFeature.java
@@ -15,25 +15,28 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
-
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
/** */
-public class InlineSizesData implements Message {
+public class TestPluginFeature implements IgniteFeature {
/** */
- @Order(0)
- Map<String, Integer> sizes;
+ public static final String COMPONENT_NAME = "plugin";
/** */
- public InlineSizesData() {}
+ private final int id;
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
+ /** */
+ public TestPluginFeature(int id) {
+ this.id = id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public int id() {
+ return id;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String componentName() {
+ return COMPONENT_NAME;
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_1_0_0.java
similarity index 63%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_1_0_0.java
index eb38135..65d0521 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_1_0_0.java
@@ -15,25 +15,10 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
-
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
/** */
-public class InlineSizesData implements Message {
+public class TestPluginReleaseFeatures_1_0_0 {
/** */
- @Order(0)
- Map<String, Integer> sizes;
-
- /** */
- public InlineSizesData() {}
-
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
- }
+ public static final IgniteFeature VER_1_0_0_ID_0_FEATURE = new TestPluginFeature(0);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_2_0_0.java
similarity index 63%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_2_0_0.java
index eb38135..d661f5c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_2_0_0.java
@@ -15,25 +15,10 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
-
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
/** */
-public class InlineSizesData implements Message {
+public class TestPluginReleaseFeatures_2_0_0 {
/** */
- @Order(0)
- Map<String, Integer> sizes;
-
- /** */
- public InlineSizesData() {}
-
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
- }
+ public static final IgniteFeature VER_2_0_0_ID_1_FEATURE = new TestPluginFeature(1);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_3_0_0.java
similarity index 63%
copy from modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
copy to modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_3_0_0.java
index eb38135..b40cea1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/InlineSizesData.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/rollingupgrade/feature/TestPluginReleaseFeatures_3_0_0.java
@@ -15,25 +15,10 @@
* limitations under the License.
*/
-package org.apache.ignite.internal.processors.query;
-
-import java.util.Map;
-import org.apache.ignite.internal.Order;
-import org.apache.ignite.plugin.extensions.communication.Message;
+package org.apache.ignite.internal.processors.rollingupgrade.feature;
/** */
-public class InlineSizesData implements Message {
+public class TestPluginReleaseFeatures_3_0_0 {
/** */
- @Order(0)
- Map<String, Integer> sizes;
-
- /** */
- public InlineSizesData() {}
-
- /**
- * @param sizes Inline sizes.
- */
- public InlineSizesData(Map<String, Integer> sizes) {
- this.sizes = sizes;
- }
+ public static final IgniteFeature VER_3_0_0_ID_2_FEATURE = new TestPluginFeature(2);
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/IgniteSecurityProcessorTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/IgniteSecurityProcessorTest.java
index 32da11c..44a2728 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/IgniteSecurityProcessorTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/IgniteSecurityProcessorTest.java
@@ -17,21 +17,20 @@
package org.apache.ignite.internal.processors.security;
-import java.lang.reflect.Method;
import java.util.UUID;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteDiagnosticRequest;
import org.apache.ignite.internal.IgniteEx;
-import org.apache.ignite.internal.managers.GridManagerAdapter;
-import org.apache.ignite.internal.managers.communication.GridIoSecurityAwareMessage;
-import org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi;
+import org.apache.ignite.internal.processors.security.impl.TestSecurityContext;
+import org.apache.ignite.internal.processors.security.impl.TestSecuritySubject;
+import org.apache.ignite.internal.thread.context.Scope;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.ListeningTestLogger;
import org.apache.ignite.testframework.LogListener;
import org.junit.Test;
import static org.apache.ignite.internal.GridTopic.TOPIC_CACHE;
-import static org.apache.ignite.internal.managers.communication.GridIoPolicy.PUBLIC_POOL;
+import static org.apache.ignite.internal.managers.communication.GridIoPolicy.SYSTEM_POOL;
/**
* Unit test for {@link IgniteSecurityProcessor}.
@@ -60,15 +59,8 @@
@Test
public void testThrowIllegalStateExceptionIfNodeNotFoundInDiscoCache() throws Exception {
IgniteEx srv = startGridAllowAll("srv");
-
IgniteEx cli = startClientAllowAll("cli");
- Method getSpiMethod = GridManagerAdapter.class.getDeclaredMethod("getSpi");
-
- getSpiMethod.setAccessible(true);
-
- TcpCommunicationSpi spi = (TcpCommunicationSpi)getSpiMethod.invoke(cli.context().io());
-
LogListener logPattern = LogListener
.matches(s -> s.contains("Failed to obtain a security context."))
.times(1)
@@ -76,15 +68,11 @@
listeningLog.registerListener(logPattern);
- spi.sendMessage(srv.localNode(), new GridIoSecurityAwareMessage(
- UUID.randomUUID(),
- PUBLIC_POOL,
- TOPIC_CACHE,
- new IgniteDiagnosticRequest(),
- false,
- 0,
- false
- ));
+ TestSecurityContext unknownCtx = new TestSecurityContext(new TestSecuritySubject().setId(UUID.randomUUID()));
+
+ try (Scope ignored = cli.context().security().withContext(unknownCtx)) {
+ cli.context().io().sendToGridTopic(srv.localNode().id(), TOPIC_CACHE, new IgniteDiagnosticRequest(), SYSTEM_POOL);
+ }
GridTestUtils.waitForCondition(logPattern::check, getTestTimeout());
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/NodeSecurityContextPropagationTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/NodeSecurityContextPropagationTest.java
index 8619509..c0a4a50 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/security/NodeSecurityContextPropagationTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/security/NodeSecurityContextPropagationTest.java
@@ -20,14 +20,10 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.Objects;
import java.util.UUID;
-import java.util.concurrent.BlockingDeque;
import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
import java.util.function.Predicate;
-import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
@@ -37,22 +33,20 @@
import org.apache.ignite.internal.managers.discovery.SecurityAwareCustomMessageWrapper;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.MessagesPluginProvider;
-import org.apache.ignite.spi.discovery.DiscoverySpi;
import org.apache.ignite.spi.discovery.DiscoverySpiCustomMessage;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
+import org.apache.ignite.spi.discovery.tcp.TestBlockingTcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryAbstractMessage;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryCustomEventMessage;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeAddedMessage;
import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryNodeLeftMessage;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
import org.junit.Test;
import static org.apache.ignite.events.EventType.EVT_NODE_LEFT;
import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_IGNITE_INSTANCE_NAME;
import static org.apache.ignite.internal.events.DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT;
+import static org.apache.ignite.spi.discovery.tcp.TestBlockingTcpDiscoverySpi.blockingDiscovery;
import static org.apache.ignite.testframework.GridTestUtils.runAsync;
import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
@@ -81,9 +75,8 @@
.setMaxSize(100L * 1024 * 1024)))
.setAuthenticationEnabled(true);
- ((TcpDiscoverySpi)cfg.getDiscoverySpi())
- .setIpFinder(new TcpDiscoveryVmIpFinder()
- .setAddresses(Collections.singleton("127.0.0.1:47500")));
+ cfg.setDiscoverySpi(new TestBlockingTcpDiscoverySpi(new TcpDiscoveryVmIpFinder()
+ .setAddresses(Collections.singleton("127.0.0.1:47500"))));
cfg.setPluginProviders(new MessagesPluginProvider(TestDiscoveryMessage.class, TestDiscoveryAcknowledgeMessage.class));
@@ -104,15 +97,6 @@
cleanPersistenceDir();
}
- /** {@inheritDoc} */
- @Override protected IgniteEx startGrid(int idx) throws Exception {
- IgniteEx ignite = super.startGrid(idx);
-
- wrapRingMessageWorkerQueue(ignite);
-
- return ignite;
- }
-
/** */
@Test
public void testProcessCustomDiscoveryMessageFromLeftNode() throws Exception {
@@ -133,12 +117,7 @@
EVT_NODE_LEFT
);
- discoveryRingMessageWorkerQueue(srv).block();
-
- long pollingTimeout = U.field(discoveryRingMessageWorker(srv), "pollingTimeout");
-
- // We need to wait for any active BlockingDeque#poll operation to complete.
- U.sleep(5 * pollingTimeout);
+ blockingDiscovery(srv).block();
cli.context().discovery().sendCustomEvent(new TestDiscoveryMessage());
@@ -158,7 +137,7 @@
waitForCondition(() -> anyReceivedMessageMatch(srv, msg -> isDiscoveryNodeAddedMessage(msg, 3)), getTestTimeout());
- discoveryRingMessageWorkerQueue(srv).unblock();
+ blockingDiscovery(srv).unblock();
waitForCondition(
() -> grid(0).cluster().nodes().size() == 4
@@ -174,13 +153,8 @@
}
/** */
- private BlockingDequeWrapper<TcpDiscoveryAbstractMessage> discoveryRingMessageWorkerQueue(IgniteEx ignite) {
- return U.field(discoveryRingMessageWorker(ignite), "queue");
- }
-
- /** */
private boolean anyReceivedMessageMatch(IgniteEx ignite, Predicate<Object> predicate) {
- for (TcpDiscoveryAbstractMessage msg : discoveryRingMessageWorkerQueue(ignite)) {
+ for (TcpDiscoveryAbstractMessage msg : blockingDiscovery(ignite).messageQueue()) {
Object unwrappedMsg = msg;
if (msg instanceof TcpDiscoveryCustomEventMessage) {
@@ -197,298 +171,4 @@
return false;
}
-
- /** */
- private void wrapRingMessageWorkerQueue(IgniteEx ignite) throws Exception {
- Object discoMsgWorker = discoveryRingMessageWorker(ignite);
-
- BlockingDeque<TcpDiscoveryAbstractMessage> queue = U.field(discoMsgWorker, "queue");
-
- BlockingDequeWrapper<TcpDiscoveryAbstractMessage> wrapper = new BlockingDequeWrapper<>(queue);
-
- FieldUtils.writeField(discoMsgWorker, "queue", wrapper, true);
- }
-
- /** */
- private Object discoveryRingMessageWorker(IgniteEx ignite) {
- DiscoverySpi[] discoverySpis = U.field(ignite.context().discovery(), "spis");
-
- Object impl = U.field(discoverySpis[0], "impl");
-
- return U.field(impl, "msgWorker");
- }
-
- /** */
- public static class BlockingDequeWrapper<T> implements BlockingDeque<T> {
- /** */
- private volatile boolean isBlocked;
-
- /** */
- private final BlockingDeque<T> delegate;
-
- /** */
- public BlockingDequeWrapper(BlockingDeque<T> delegate) {
- this.delegate = delegate;
- }
-
- /** */
- public void block() {
- isBlocked = true;
- }
-
- /** */
- public void unblock() {
- isBlocked = false;
- }
-
- /** {@inheritDoc} */
- @Override public T poll(long timeout, TimeUnit unit) throws InterruptedException {
- return isBlocked ? null : delegate.poll(timeout, unit);
- }
-
- /** {@inheritDoc} */
- @Override public int remainingCapacity() {
- return delegate.remainingCapacity();
- }
-
- /** {@inheritDoc} */
- @NotNull @Override public T element() {
- return delegate.element();
- }
-
- /** {@inheritDoc} */
- @Override public T peek() {
- return delegate.peek();
- }
-
- /** {@inheritDoc} */
- @Override public boolean remove(Object o) {
- return delegate.remove(o);
- }
-
- /** {@inheritDoc} */
- @Override public boolean containsAll(@NotNull Collection<?> c) {
- return delegate.containsAll(c);
- }
-
- /** {@inheritDoc} */
- @Override public boolean addAll(@NotNull Collection<? extends T> c) {
- return delegate.addAll(c);
- }
-
- /** {@inheritDoc} */
- @Override public boolean removeAll(@NotNull Collection<?> c) {
- return delegate.removeAll(c);
- }
-
- /** {@inheritDoc} */
- @Override public boolean retainAll(@NotNull Collection<?> c) {
- return delegate.retainAll(c);
- }
-
- /** {@inheritDoc} */
- @Override public void clear() {
- delegate.clear();
- }
-
- /** {@inheritDoc} */
- @Override public void addFirst(T t) {
- delegate.addFirst(t);
- }
-
- /** {@inheritDoc} */
- @Override public void addLast(@NotNull T t) {
- delegate.addLast(t);
- }
-
- /** {@inheritDoc} */
- @Override public boolean offerFirst(@NotNull T t) {
- return delegate.offerFirst(t);
- }
-
- /** {@inheritDoc} */
- @Override public boolean offerLast(@NotNull T t) {
- return delegate.offerLast(t);
- }
-
- /** {@inheritDoc} */
- @Override public T removeFirst() {
- return delegate.removeFirst();
- }
-
- /** {@inheritDoc} */
- @Override public T removeLast() {
- return delegate.removeLast();
- }
-
- /** {@inheritDoc} */
- @Override public T pollFirst() {
- return delegate.pollFirst();
- }
-
- /** {@inheritDoc} */
- @Override public T pollLast() {
- return delegate.pollLast();
- }
-
- /** {@inheritDoc} */
- @Override public T getFirst() {
- return delegate.getFirst();
- }
-
- /** {@inheritDoc} */
- @Override public T getLast() {
- return delegate.getLast();
- }
-
- /** {@inheritDoc} */
- @Override public T peekFirst() {
- return delegate.peekFirst();
- }
-
- /** {@inheritDoc} */
- @Override public T peekLast() {
- return delegate.peekLast();
- }
-
- /** {@inheritDoc} */
- @Override public void putFirst(@NotNull T t) throws InterruptedException {
- delegate.putFirst(t);
- }
-
- /** {@inheritDoc} */
- @Override public void putLast(@NotNull T t) throws InterruptedException {
- delegate.putLast(t);
- }
-
- /** {@inheritDoc} */
- @Override public boolean offerFirst(@NotNull T t, long timeout, TimeUnit unit) throws InterruptedException {
- return delegate.offerFirst(t, timeout, unit);
- }
-
- /** {@inheritDoc} */
- @Override public boolean offerLast(@NotNull T t, long timeout, TimeUnit unit) throws InterruptedException {
- return delegate.offerLast(t, timeout, unit);
- }
-
- /** {@inheritDoc} */
- @NotNull @Override public T takeFirst() throws InterruptedException {
- return delegate.takeFirst();
- }
-
- /** {@inheritDoc} */
- @NotNull @Override public T takeLast() throws InterruptedException {
- return delegate.takeLast();
- }
-
- /** {@inheritDoc} */
- @Nullable @Override public T pollFirst(long timeout, TimeUnit unit) throws InterruptedException {
- return delegate.pollFirst(timeout, unit);
- }
-
- /** {@inheritDoc} */
- @Nullable @Override public T pollLast(long timeout, TimeUnit unit) throws InterruptedException {
- return delegate.pollLast(timeout, unit);
- }
-
- /** {@inheritDoc} */
- @Override public boolean removeFirstOccurrence(Object o) {
- return delegate.removeFirstOccurrence(o);
- }
-
- /** {@inheritDoc} */
- @Override public boolean removeLastOccurrence(Object o) {
- return delegate.removeLastOccurrence(o);
- }
-
- /** {@inheritDoc} */
- @Override public boolean add(T t) {
- return delegate.add(t);
- }
-
- /** {@inheritDoc} */
- @Override public boolean offer(@NotNull T t) {
- return delegate.offer(t);
- }
-
- /** {@inheritDoc} */
- @Override public void put(@NotNull T t) throws InterruptedException {
- delegate.put(t);
- }
-
- /** {@inheritDoc} */
- @Override public boolean offer(@NotNull T t, long timeout, TimeUnit unit) throws InterruptedException {
- return delegate.offer(t, timeout, unit);
- }
-
- /** {@inheritDoc} */
- @NotNull @Override public T remove() {
- return delegate.remove();
- }
-
- /** {@inheritDoc} */
- @Override public T poll() {
- return delegate.poll();
- }
-
- /** {@inheritDoc} */
- @NotNull @Override public T take() throws InterruptedException {
- return delegate.take();
- }
-
- /** {@inheritDoc} */
- @Override public boolean contains(Object o) {
- return delegate.contains(o);
- }
-
- /** {@inheritDoc} */
- @Override public int drainTo(@NotNull Collection<? super T> c) {
- return delegate.drainTo(c);
- }
-
- /** {@inheritDoc} */
- @Override public int drainTo(@NotNull Collection<? super T> c, int maxElements) {
- return delegate.drainTo(c, maxElements);
- }
-
- /** {@inheritDoc} */
- @Override public int size() {
- return delegate.size();
- }
-
- /** {@inheritDoc} */
- @Override public boolean isEmpty() {
- return delegate.isEmpty();
- }
-
- /** {@inheritDoc} */
- @Override public Iterator<T> iterator() {
- return delegate.iterator();
- }
-
- /** {@inheritDoc} */
- @NotNull @Override public Object[] toArray() {
- return delegate.toArray();
- }
-
- /** {@inheritDoc} */
- @NotNull @Override public <T1> T1[] toArray(@NotNull T1[] a) {
- return delegate.toArray(a);
- }
-
- /** {@inheritDoc} */
- @NotNull @Override public Iterator<T> descendingIterator() {
- return delegate.descendingIterator();
- }
-
- /** {@inheritDoc} */
- @Override public void push(@NotNull T t) {
- delegate.push(t);
- }
-
- /** {@inheritDoc} */
- @Override public T pop() {
- return delegate.pop();
- }
- }
}
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/thread/context/OperationContextAttributesTest.java b/modules/core/src/test/java/org/apache/ignite/internal/thread/context/OperationContextAttributesTest.java
index 9de906b..8255437 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/thread/context/OperationContextAttributesTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/thread/context/OperationContextAttributesTest.java
@@ -17,13 +17,17 @@
package org.apache.ignite.internal.thread.context;
+import java.net.InetAddress;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
+import java.util.Set;
+import java.util.UUID;
import java.util.concurrent.Callable;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Delayed;
import java.util.concurrent.ExecutorService;
@@ -35,9 +39,20 @@
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Supplier;
+import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteException;
+import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.internal.GridKernalContext;
+import org.apache.ignite.internal.GridTopic;
+import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.managers.communication.GridIoPolicy;
+import org.apache.ignite.internal.managers.communication.GridMessageListener;
+import org.apache.ignite.internal.managers.communication.IgniteIoTestMessage;
+import org.apache.ignite.internal.managers.discovery.CustomEventListener;
+import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.processors.cache.DynamicCacheChangeBatch;
import org.apache.ignite.internal.processors.timeout.GridTimeoutObject;
import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor;
import org.apache.ignite.internal.thread.context.concurrent.IgniteCompletableFuture;
@@ -47,7 +62,10 @@
import org.apache.ignite.internal.thread.pool.IgniteStripedExecutor;
import org.apache.ignite.internal.thread.pool.IgniteStripedThreadPoolExecutor;
import org.apache.ignite.internal.thread.pool.IgniteThreadPoolExecutor;
+import org.apache.ignite.internal.util.GridByteArrayList;
+import org.apache.ignite.internal.util.GridIntList;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
+import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.util.worker.queue.IgniteAsyncObjectHandler;
import org.apache.ignite.internal.util.worker.queue.IgniteDelayedObjectHandler;
@@ -56,14 +74,21 @@
import org.apache.ignite.lang.IgniteOutClosure;
import org.apache.ignite.lang.IgniteRunnable;
import org.apache.ignite.lang.IgniteUuid;
+import org.apache.ignite.plugin.AbstractTestPluginProvider;
+import org.apache.ignite.plugin.PluginContext;
+import org.apache.ignite.plugin.PluginProvider;
+import org.apache.ignite.spi.discovery.tcp.messages.InetSocketAddressMessage;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.thread.IgniteThread;
import org.junit.Test;
import org.springframework.lang.NonNull;
+import org.springframework.lang.Nullable;
import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static org.apache.ignite.testframework.GridTestUtils.assertThrows;
import static org.apache.ignite.testframework.GridTestUtils.assertThrowsAnyCause;
import static org.apache.ignite.testframework.GridTestUtils.assertThrowsWithCause;
+import static org.apache.ignite.testframework.GridTestUtils.waitForCondition;
/** */
public class OperationContextAttributesTest extends GridCommonAbstractTest {
@@ -85,6 +110,9 @@
/** */
private int beforeTestReservedAttrIds;
+ /** */
+ private @Nullable PluginProvider pluginProvider;
+
/** {@inheritDoc} */
@Override protected void beforeTest() throws Exception {
super.beforeTest();
@@ -98,6 +126,8 @@
@Override protected void afterTest() throws Exception {
super.afterTest();
+ stopAllGrids();
+
if (poolToShutdownAfterTest != null)
poolToShutdownAfterTest.shutdownNow();
@@ -105,6 +135,16 @@
OperationContextAttribute.ID_GEN.set(beforeTestReservedAttrIds);
}
+ /** {@inheritDoc} */
+ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
+ IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
+
+ if (pluginProvider != null)
+ cfg.setPluginProviders(pluginProvider);
+
+ return cfg;
+ }
+
/** */
@Test
public void testNotAttachedAttribute() {
@@ -809,6 +849,209 @@
}
/** */
+ @Test
+ public void testSendAttributesByDiscovery() throws Exception {
+ doTestOperationContextAttributesPropagation(true);
+ }
+
+ /** */
+ @Test
+ public void testSendAttributesByCommunication() throws Exception {
+ doTestOperationContextAttributesPropagation(false);
+ }
+
+ /** */
+ private void doTestOperationContextAttributesPropagation(boolean discovery) throws Exception {
+ OperationContextAttribute<InetSocketAddressMessage> dAttr1 =
+ OperationContextAttribute.newInstance(new InetSocketAddressMessage(InetAddress.getLoopbackAddress(), 80));
+
+ OperationContextAttribute<GridIntList> dAttr2 = OperationContextAttribute.newInstance(new GridIntList(new int[]{1, 1, 1}));
+
+ OperationContextAttribute<GridByteArrayList> otherTestAttr = OperationContextAttribute.newInstance(new GridByteArrayList());
+
+ pluginProvider = new AbstractTestPluginProvider() {
+ @Override public String name() {
+ return "TestDistributedOperationContextAttributesRegistrator";
+ }
+
+ @Override public void start(PluginContext ctx) {
+ GridKernalContext kctx = ((IgniteEx)ctx.grid()).context();
+
+ int dAttr1Id = OperationContextDispatcher.MAX_ATTRS_CNT - 2;
+ int dAttr2Id = OperationContextDispatcher.MAX_ATTRS_CNT - 1;
+
+ kctx.operationContextDispatcher().registerDistributedAttribute(dAttr1Id, dAttr1);
+ kctx.operationContextDispatcher().registerDistributedAttribute(dAttr2Id, dAttr2);
+
+ assertThrowsAnyCause(
+ log,
+ () -> {
+ kctx.operationContextDispatcher().registerDistributedAttribute(dAttr2Id, otherTestAttr);
+ return null;
+
+ }, IgniteException.class,
+ "Duplicated distributed attribute id"
+ );
+ }
+ };
+
+ // Local attribute 1.
+ OperationContextAttribute.newInstance(1000);
+
+ startGrids(2);
+ startClientGrid(2);
+
+ assertThrows(
+ null,
+ () -> grid(0).context().operationContextDispatcher().registerDistributedAttribute(1, null),
+ IgniteException.class,
+ "Initialization of distributed operation context attributes has already finished"
+ );
+
+ // Local attribute 2.
+ OperationContextAttribute.newInstance("locaAttr2");
+
+ InetSocketAddressMessage valToSend1 = new InetSocketAddressMessage(dAttr1.initialValue().address(), 443);
+ GridIntList valToSend2 = new GridIntList(new int[]{2, 2, 2});
+
+ if (discovery)
+ doTestOperationContextAttributesPropagationThroughDiscovery(dAttr1, valToSend1, dAttr2, valToSend2);
+ else
+ doTestOperationContextAttributesPropagationThroughCommunication(dAttr1, valToSend1, dAttr2, valToSend2);
+ }
+
+ /** */
+ private void doTestOperationContextAttributesPropagationThroughDiscovery(
+ OperationContextAttribute<InetSocketAddressMessage> dAttr1,
+ InetSocketAddressMessage valToSend1,
+ OperationContextAttribute<GridIntList> dAttr2,
+ GridIntList valToSend2
+ ) throws Exception {
+ Set<Integer> checkedNodes = ConcurrentHashMap.newKeySet();
+
+ for (int i = 0; i < G.allGrids().size(); ++i) {
+ int i0 = i;
+
+ grid(i).context().discovery().setCustomEventListener(
+ DynamicCacheChangeBatch.class, new CustomEventListener<>() {
+ @Override public void onCustomEvent(AffinityTopologyVersion topVer, ClusterNode snd,
+ DynamicCacheChangeBatch msg) {
+
+ InetSocketAddressMessage receivedVal1 = OperationContext.get(dAttr1);
+ GridIntList receivedVal2 = OperationContext.get(dAttr2);
+
+ assertTrue(receivedVal1 != null && valToSend1.port() == receivedVal1.port());
+ assertTrue(receivedVal1 != null && valToSend1.address().equals(receivedVal1.address()));
+
+ assertEquals(valToSend2, receivedVal2);
+
+ checkedNodes.add(i0);
+ }
+ });
+ }
+
+ // Send from the coordinator.
+ try (Scope ignored = OperationContext.set(dAttr1, valToSend1, dAttr2, valToSend2)) {
+ grid(0).createCache(defaultCacheConfiguration());
+ }
+
+ assertTrue(waitForCondition(() -> checkedNodes.size() == 3, getTestTimeout(), 50));
+ checkedNodes.clear();
+
+ // Send from a server.
+ try (Scope ignored = OperationContext.set(dAttr1, valToSend1, dAttr2, valToSend2)) {
+ grid(1).destroyCache(DEFAULT_CACHE_NAME);
+ }
+
+ assertTrue(waitForCondition(() -> checkedNodes.size() == 3, getTestTimeout(), 50));
+ checkedNodes.clear();
+
+ // Send from a client.
+ try (Scope ignored = OperationContext.set(dAttr1, valToSend1, dAttr2, valToSend2)) {
+ grid(2).createCache(defaultCacheConfiguration());
+ }
+
+ assertTrue(waitForCondition(() -> checkedNodes.size() == 3, getTestTimeout(), 50));
+ checkedNodes.clear();
+ }
+
+ /** */
+ private void doTestOperationContextAttributesPropagationThroughCommunication(
+ OperationContextAttribute<InetSocketAddressMessage> dAttr1,
+ InetSocketAddressMessage valToSend1,
+ OperationContextAttribute<GridIntList> dAttr2,
+ GridIntList valToSend2
+ ) throws Exception {
+ // Coordinator -> Server, Coordinator -> Client, Server -> Client, Client -> Server, etc.
+ for (int fromIdx = 0; fromIdx < 3; ++fromIdx) {
+ for (int toIdx = 0; toIdx < 3; ++toIdx) {
+ if (fromIdx == toIdx)
+ continue;
+
+ // One value.
+ try (Scope ignored = OperationContext.set(dAttr1, valToSend1)) {
+ checkOperationContextCommunicationTransmission(fromIdx, toIdx, dAttr1, null);
+ }
+
+ // A couple of values.
+ try (Scope ignored = OperationContext.set(dAttr1, valToSend1, dAttr2, valToSend2)) {
+ checkOperationContextCommunicationTransmission(fromIdx, toIdx, dAttr1, dAttr2);
+ }
+ }
+ }
+ }
+
+ /** */
+ private void checkOperationContextCommunicationTransmission(
+ int gridFromIdx,
+ int gridToIdx,
+ OperationContextAttribute<InetSocketAddressMessage> attr1,
+ @Nullable OperationContextAttribute<GridIntList> attr2
+ ) throws Exception {
+ IgniteEx from = grid(gridFromIdx);
+ IgniteEx to = grid(gridToIdx);
+
+ CountDownLatch rcvLatch = new CountDownLatch(2);
+
+ InetSocketAddressMessage expVal1 = OperationContext.get(attr1);
+ GridIntList expVal2 = attr2 == null ? null : OperationContext.get(attr2);
+
+ GridMessageListener lsnr = new GridMessageListener() {
+ @Override public void onMessage(UUID nodeId, Object msg, byte plc) {
+ if (msg instanceof IgniteIoTestMessage && ((IgniteIoTestMessage)msg).request()) {
+ InetSocketAddressMessage receivedVal1 = OperationContext.get(attr1);
+ GridIntList receivedVal2 = attr2 == null ? null : OperationContext.get(attr2);
+
+ assertTrue(receivedVal1 != null && expVal1.port() == receivedVal1.port());
+ assertTrue(receivedVal1 != null && expVal1.address().equals(receivedVal1.address()));
+
+ if (attr2 != null)
+ assertEquals(expVal2, receivedVal2);
+
+ rcvLatch.countDown();
+ }
+ }
+ };
+
+ to.context().io().addMessageListener(GridTopic.TOPIC_IO_TEST, lsnr);
+
+ try {
+ from.context().io().sendIoTest(node(from, to), null, false);
+ from.context().io().sendIoTest(node(from, to), null, true);
+
+ assertTrue(rcvLatch.await(getTestTimeout(), MILLISECONDS));
+ }
+ finally {
+ assertTrue(to.context().io().removeMessageListener(GridTopic.TOPIC_IO_TEST, lsnr));
+ }
+ }
+
+ /** Prevents {@link ClusterNode#isLocal()} to be negative. */
+ private ClusterNode node(Ignite from, Ignite to) {
+ return from.cluster().node(((IgniteEx)to).localNode().id());
+ }
+
+ /** */
private void doContextAwareExecutorServiceTest(ExecutorService pool) throws Exception {
CountDownLatch poolUnblockedLatch = blockPool(pool);
@@ -923,9 +1166,8 @@
/** */
static void assertAllCreatedChecksPassed() throws Exception {
- for (AttributeValueChecker check : CHECKS) {
+ for (AttributeValueChecker check : CHECKS)
check.get(5_000, MILLISECONDS);
- }
}
/** */
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessClientAwaitTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessClientAwaitTest.java
index bfbc412..f0d57b4 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessClientAwaitTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessClientAwaitTest.java
@@ -204,7 +204,7 @@
super(
ctx,
TEST_PROCESS,
- (req) -> new GridFinishedFuture<>(),
+ (uuid, req) -> new GridFinishedFuture<>(),
(uuid, res, err) -> {
try {
assertEquals(expNodeIdsRes, res.keySet());
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessCoordinatorLeftTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessCoordinatorLeftTest.java
index 19d3c16..6c78ad7 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessCoordinatorLeftTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessCoordinatorLeftTest.java
@@ -118,7 +118,7 @@
for (Ignite grid : G.allGrids()) {
DistributedProcess<TestIntegerMessage, TestIntegerMessage> dp = new DistributedProcess<>(((IgniteEx)grid).context(),
TEST_PROCESS,
- req -> {
+ (uuid, req) -> {
IgniteInternalFuture<TestIntegerMessage> fut = runAsync(() -> {
try {
nodeLeftLatch.await();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessErrorHandlingTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessErrorHandlingTest.java
index 6ffb7cc..d80cd98 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessErrorHandlingTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/distributed/DistributedProcessErrorHandlingTest.java
@@ -80,7 +80,7 @@
public void testBackgroundExecFailureHandled() throws Exception {
checkDistributedProcess((ign, latch) ->
new DistributedProcess<>(ign.context(), TEST_PROCESS,
- req -> runAsync(() -> {
+ (id, req) -> runAsync(() -> {
failOnNode(ign); // Fails processing request in a spawned thread.
return null;
@@ -103,7 +103,7 @@
public void testExecFailureHandled() throws Exception {
checkDistributedProcess((ign, latch) ->
new DistributedProcess<>(ign.context(), TEST_PROCESS,
- req -> {
+ (id, req) -> {
failOnNode(ign); // Fails processing request in the discovery thread.
return new GridFinishedFuture<>();
@@ -126,7 +126,7 @@
public void testFinishFailureHandled() throws Exception {
checkDistributedProcess((ign, latch) ->
new DistributedProcess<>(ign.context(), TEST_PROCESS,
- req -> new GridFinishedFuture<>(),
+ (uuid, req) -> new GridFinishedFuture<>(),
(uuid, res, err) -> {
assertEquals(SRV_NODES, res.values().size());
latch.countDown();
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSslSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSslSelfTest.java
index 79bc9f0..9b2199f 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSslSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSslSelfTest.java
@@ -71,7 +71,7 @@
.sendQueueLimit(0)
.filters(
new GridNioCodecFilter(parser, log, false),
- new GridNioSslFilter(sslCtx, true, ByteOrder.nativeOrder(), log, null));
+ new GridNioSslFilter(sslCtx, true, ByteOrder.nativeOrder(), log, null, null));
}
/** {@inheritDoc} */
diff --git a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PJobClassLoaderSelfTest.java b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PJobClassLoaderSelfTest.java
index b2e0ba1..91e47ba 100644
--- a/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PJobClassLoaderSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/p2p/GridP2PJobClassLoaderSelfTest.java
@@ -134,8 +134,8 @@
return Collections.singletonList(new ComputeJobAdapter() {
/** {@inheritDoc} */
- @Override @SuppressWarnings({"ObjectEquality"})
- public Serializable execute() {
+ @SuppressWarnings({"ObjectEquality"})
+ @Override public Serializable execute() {
assert getClass().getClassLoader() == ldr;
return null;
diff --git a/modules/core/src/test/java/org/apache/ignite/session/GridSessionSetFutureAttributeWaitListenerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/session/GridSessionSetFutureAttributeWaitListenerSelfTest.java
index 298b668..be9e7b6 100644
--- a/modules/core/src/test/java/org/apache/ignite/session/GridSessionSetFutureAttributeWaitListenerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/session/GridSessionSetFutureAttributeWaitListenerSelfTest.java
@@ -158,8 +158,8 @@
for (int i = 1; i <= SPLIT_COUNT; i++) {
jobs.add(new ComputeJobAdapter(i) {
- @Override @SuppressWarnings({"UnconditionalWait"})
- public Serializable execute() {
+ @SuppressWarnings({"UnconditionalWait"})
+ @Override public Serializable execute() {
assert taskSes != null;
if (log.isInfoEnabled())
diff --git a/modules/core/src/test/java/org/apache/ignite/session/GridSessionSetJobAttributeWaitListenerSelfTest.java b/modules/core/src/test/java/org/apache/ignite/session/GridSessionSetJobAttributeWaitListenerSelfTest.java
index a250df6..4abe283 100644
--- a/modules/core/src/test/java/org/apache/ignite/session/GridSessionSetJobAttributeWaitListenerSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/session/GridSessionSetJobAttributeWaitListenerSelfTest.java
@@ -143,8 +143,8 @@
for (int i = 1; i <= SPLIT_COUNT; i++) {
jobs.add(new ComputeJobAdapter(i) {
- @Override @SuppressWarnings({"UnconditionalWait"})
- public Serializable execute() {
+ @SuppressWarnings({"UnconditionalWait"})
+ @Override public Serializable execute() {
assert taskSes != null;
if (log.isInfoEnabled())
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiSkipWaitHandshakeOnClientTest.java b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiSkipWaitHandshakeOnClientTest.java
index d5add38..25aa63f 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiSkipWaitHandshakeOnClientTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/communication/tcp/GridTcpCommunicationSpiSkipWaitHandshakeOnClientTest.java
@@ -30,7 +30,7 @@
import org.junit.Assert;
import org.junit.Test;
-import static org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.makeMessageType;
+import static org.apache.ignite.internal.util.CommonUtils.makeMessageType;
/**
* This test check that client sends only Node ID message type on connect.
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchangeTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchangeTest.java
index 30a7ec8..49a9ccc 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchangeTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchangeTest.java
@@ -32,6 +32,7 @@
import org.apache.ignite.internal.managers.discovery.IgniteDiscoverySpi;
import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.lang.IgniteProductVersion;
+import org.apache.ignite.plugin.extensions.communication.MessageFactoryProvider;
import org.apache.ignite.spi.IgniteSpiAdapter;
import org.apache.ignite.spi.IgniteSpiContext;
import org.apache.ignite.spi.IgniteSpiException;
@@ -226,6 +227,11 @@
delegate.resolveCommunicationFailure(node, err);
}
+ /** {@inheritDoc} */
+ @Override public MessageFactoryProvider messageFactoryProvider() {
+ return delegate.messageFactoryProvider();
+ }
+
/** Delegated discovery data exchange. */
private class DelegatedDiscoverySpiDataExchange implements DiscoverySpiDataExchange {
/** Discovery data exchange delegate. */
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/MultiDataCenterSplitTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/MultiDataCenterSplitTest.java
index b2d4521..73acc8b 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/MultiDataCenterSplitTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/MultiDataCenterSplitTest.java
@@ -338,15 +338,8 @@
}
/** {@inheritDoc} */
- @Override protected void initializeImpl() {
- if (impl != null)
- return;
-
- super.initializeImpl();
-
- // In theory, might be a ClientImpl.
- if (impl instanceof ServerImpl)
- impl = new ServerImpl(this, DFLT_UTLITY_POOL_SIZE, pingPoolSize);
+ @Override TcpDiscoveryImpl createServerTcpDiscoveryImplementation() {
+ return new ServerImpl(this, DFLT_UTLITY_POOL_SIZE, pingPoolSize);
}
/** {@inheritDoc} */
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNetworkIssuesTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNetworkIssuesTest.java
index f87a075..f416144 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNetworkIssuesTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryNetworkIssuesTest.java
@@ -593,16 +593,10 @@
private final AtomicReference<Collection<InetSocketAddress>> simulatedPrevNodeAddr = new AtomicReference<>();
/** {@inheritDoc} */
- @Override protected void initializeImpl() {
- if (impl != null)
- return;
-
- super.initializeImpl();
-
- // To make the test stable, we want a loopback paddress of the previous node responds first.
+ @Override TcpDiscoveryImpl createServerTcpDiscoveryImplementation() {
+ // To make the test stable, we want a loopback address of the previous node responds first.
// We don't need a concurrent ping execution.
- if (impl instanceof ServerImpl)
- impl = new ServerImpl(this, 1, DFLT_RMT_DC_PING_POOL_SIZE);
+ return new ServerImpl(this, 1, DFLT_RMT_DC_PING_POOL_SIZE);
}
/** */
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryPendingMessageDeliveryTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryPendingMessageDeliveryTest.java
index bdd67ce..503d119 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryPendingMessageDeliveryTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoveryPendingMessageDeliveryTest.java
@@ -238,26 +238,17 @@
/** {@link TcpDiscoverySpi} which doesn't itsring to current DC. */
private class NoRingClosingTcpDiscoverySpi extends TestTcpDiscoverySpi {
/** {@inheritDoc} */
- @Override protected void initializeImpl() {
- if (impl != null)
- return;
-
- super.initializeImpl();
-
- // In theory, might be a ClientImpl.
- if (impl instanceof ServerImpl) {
- impl = new ServerImpl(this, DFLT_UTLITY_POOL_SIZE, 0) {
- @Override protected ServerImpl.RingMessageWorker createMessageWorker() {
- return new ServerImpl.RingMessageWorker(impl.log) {
- @Override protected ServerImpl.CrossRingMessageSendState createConnectionRecoveryState(
- TcpDiscoveryNode n) {
- // Do not start remote DC ping.
- return new ServerImpl.CrossRingMessageSendState();
- }
- };
- }
- };
- }
+ @Override TcpDiscoveryImpl createServerTcpDiscoveryImplementation() {
+ return new ServerImpl(this, DFLT_UTLITY_POOL_SIZE, 0) {
+ @Override protected ServerImpl.RingMessageWorker createMessageWorker() {
+ return new ServerImpl.RingMessageWorker(log) {
+ @Override protected ServerImpl.CrossRingMessageSendState createConnectionRecoveryState(TcpDiscoveryNode n) {
+ // Do not start remote DC ping.
+ return new ServerImpl.CrossRingMessageSendState();
+ }
+ };
+ }
+ };
}
}
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java
index ad98a29..4920d02 100644
--- a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySelfTest.java
@@ -58,6 +58,8 @@
import org.apache.ignite.internal.IgniteKernal;
import org.apache.ignite.internal.managers.discovery.DiscoveryCustomMessage;
import org.apache.ignite.internal.processors.continuous.StartRoutineAckDiscoveryMessage;
+import org.apache.ignite.internal.processors.marshaller.MappedName;
+import org.apache.ignite.internal.processors.marshaller.MarshallerDataBagItem;
import org.apache.ignite.internal.processors.port.GridPortRecord;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
import org.apache.ignite.internal.util.lang.GridAbsPredicate;
@@ -2431,7 +2433,7 @@
DiscoveryDataBag bag = exchange.collect(dataBag);
if (bag.commonData().containsKey(MARSHALLER_PROC.ordinal()))
- marshalledItems = getJavaMappings(getAllMappings(dataBag)).size();
+ marshalledItems = getJavaMappings(marshallerDataBagItem(dataBag)).size();
return bag;
}
@@ -2440,12 +2442,12 @@
exchange.onExchange(dataBag);
}
- private List getAllMappings(DiscoveryDataBag bag) {
- return (List)bag.commonData().get(MARSHALLER_PROC.ordinal());
+ private MarshallerDataBagItem marshallerDataBagItem(DiscoveryDataBag bag) {
+ return (MarshallerDataBagItem)bag.commonData().get(MARSHALLER_PROC.ordinal());
}
- private Map getJavaMappings(List allMappings) {
- return (Map)allMappings.get(JAVA_ID);
+ private Map<Integer, MappedName> getJavaMappings(MarshallerDataBagItem marshallerDataBagItem) {
+ return marshallerDataBagItem.mappings().get(JAVA_ID);
}
});
}
diff --git a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TestBlockingTcpDiscoverySpi.java b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TestBlockingTcpDiscoverySpi.java
new file mode 100644
index 0000000..8341917
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TestBlockingTcpDiscoverySpi.java
@@ -0,0 +1,122 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.spi.discovery.tcp;
+
+import java.util.concurrent.BlockingDeque;
+import java.util.concurrent.LinkedBlockingDeque;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Predicate;
+import org.apache.ignite.Ignite;
+import org.apache.ignite.configuration.IgniteConfiguration;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.TcpDiscoveryIpFinder;
+import org.apache.ignite.spi.discovery.tcp.messages.TcpDiscoveryAbstractMessage;
+import org.jspecify.annotations.NonNull;
+
+/** */
+public class TestBlockingTcpDiscoverySpi extends TestTcpDiscoverySpi {
+ /** */
+ private final BlockingDeque<TcpDiscoveryAbstractMessage> msgQueue = new TestBlockingLinkedDeque();
+
+ /** */
+ private volatile boolean isBlocked;
+
+ /** */
+ private volatile Predicate<TcpDiscoveryAbstractMessage> msgFilter;
+
+ /** */
+ public TestBlockingTcpDiscoverySpi(TcpDiscoveryIpFinder ipFinder) {
+ setIpFinder(ipFinder);
+ }
+
+ /** */
+ public TestBlockingTcpDiscoverySpi(IgniteConfiguration cfg) {
+ this(((TcpDiscoverySpi)cfg.getDiscoverySpi()).getIpFinder());
+ }
+
+ /** {@inheritDoc} */
+ @Override TcpDiscoveryImpl createServerTcpDiscoveryImplementation() {
+ return new ServerImpl(this, DFLT_UTLITY_POOL_SIZE, DFLT_RMT_DC_PING_POOL_SIZE) {
+ @Override protected ServerImpl.RingMessageWorker createMessageWorker() {
+ return new RingMessageWorker(log, msgQueue);
+ }
+ };
+ }
+
+ /** */
+ public void block() {
+ isBlocked = true;
+ }
+
+ /** */
+ public void unblock() {
+ isBlocked = false;
+ }
+
+ /** */
+ public void messageFilter(Predicate<TcpDiscoveryAbstractMessage> msgFilter) {
+ this.msgFilter = msgFilter;
+ }
+
+ /** */
+ public BlockingDeque<TcpDiscoveryAbstractMessage> messageQueue() {
+ return msgQueue;
+ }
+
+ /** */
+ public static TestBlockingTcpDiscoverySpi blockingDiscovery(Ignite node) {
+ assert !node.configuration().isClientMode();
+
+ return (TestBlockingTcpDiscoverySpi)node.configuration().getDiscoverySpi();
+ }
+
+ /** */
+ private class TestBlockingLinkedDeque extends LinkedBlockingDeque<TcpDiscoveryAbstractMessage> {
+ /** {@inheritDoc} */
+ @Override public TcpDiscoveryAbstractMessage poll(long timeout, TimeUnit unit) throws InterruptedException {
+ if (isBlocked)
+ return null;
+
+ TcpDiscoveryAbstractMessage msg = super.poll(timeout, unit);
+
+ if (isBlocked && msg != null) {
+ // Since this queue is processed by a single thread, it is safe to simply put the element back.
+ super.addFirst(msg);
+
+ return null;
+ }
+
+ return msg;
+ }
+
+ /** {@inheritDoc} */
+ @Override public void addFirst(@NonNull TcpDiscoveryAbstractMessage t) {
+ if (msgFilter != null && msgFilter.test(t))
+ return;
+
+ super.addFirst(t);
+ }
+
+ /** {@inheritDoc} */
+ @Override public boolean add(@NonNull TcpDiscoveryAbstractMessage t) {
+ if (msgFilter != null && msgFilter.test(t))
+ return true;
+
+ return super.add(t);
+ }
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
index 152b209..a37e758 100644
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/IgniteMock.java
@@ -480,7 +480,7 @@
bcfg.getTypeConfigurations(),
CU.affinityFields(configuration()),
bcfg.isCompactFooter(),
- CU::affinityFieldName,
+ BinaryUtils::affinityFieldName,
NullLogger.INSTANCE
) {
@Override public int typeId(String typeName) {
diff --git a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
index 8fef637..6432a52 100755
--- a/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/testframework/junits/common/GridCommonAbstractTest.java
@@ -2469,8 +2469,8 @@
List<T3<String, @Nullable PartitionUpdateCounter, Boolean>> cntrMap = G.allGrids().stream().filter(ignite ->
!ignite.configuration().isClientMode()).map(ignite ->
- new T3<>(ignite.name(), counter(partId, cacheName, ignite.name()),
- ignite.affinity(cacheName).isPrimary(ignite.cluster().localNode(), partId))).collect(toList());
+ new T3<>(ignite.name(), counter(partId, cacheName, ignite.name()),
+ ignite.affinity(cacheName).isPrimary(ignite.cluster().localNode(), partId))).collect(toList());
for (T3<String, PartitionUpdateCounter, Boolean> cntr : cntrMap) {
if (cntr.get2() == null)
@@ -2502,8 +2502,8 @@
long reserved) throws AssertionFailedError {
List<T3<String, @Nullable PartitionUpdateCounter, Boolean>> cntrMap = G.allGrids().stream().filter(ignite ->
!ignite.configuration().isClientMode()).map(ignite ->
- new T3<>(ignite.name(), counter(partId, cacheName, ignite.name()),
- ignite.affinity(cacheName).isPrimary(ignite.cluster().localNode(), partId))).collect(toList());
+ new T3<>(ignite.name(), counter(partId, cacheName, ignite.name()),
+ ignite.affinity(cacheName).isPrimary(ignite.cluster().localNode(), partId))).collect(toList());
for (T3<String, PartitionUpdateCounter, Boolean> cntr : cntrMap) {
if (cntr.get2() == null)
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
index 4014061..a36175a 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteBasicTestSuite.java
@@ -28,7 +28,6 @@
import org.apache.ignite.internal.GridNodeMetricsLogSelfTest;
import org.apache.ignite.internal.GridProjectionForCachesSelfTest;
import org.apache.ignite.internal.GridReduceSelfTest;
-import org.apache.ignite.internal.GridReleaseTypeSelfTest;
import org.apache.ignite.internal.GridSelfTest;
import org.apache.ignite.internal.GridStartStopSelfTest;
import org.apache.ignite.internal.GridStopWithCancelSelfTest;
@@ -64,6 +63,9 @@
import org.apache.ignite.internal.processors.odbc.OdbcConfigurationValidationSelfTest;
import org.apache.ignite.internal.processors.odbc.OdbcEscapeSequenceSelfTest;
import org.apache.ignite.internal.processors.odbc.SqlListenerUtilsTest;
+import org.apache.ignite.internal.processors.rollingupgrade.CoreVersionRollingUpgradeTest;
+import org.apache.ignite.internal.processors.rollingupgrade.PluginVersionRollingUpgradeTest;
+import org.apache.ignite.internal.processors.rollingupgrade.feature.IgniteFeatureSetTest;
import org.apache.ignite.internal.product.GridProductVersionSelfTest;
import org.apache.ignite.internal.util.nio.IgniteExceptionInNioWorkerSelfTest;
import org.apache.ignite.messaging.GridMessagingNoPeerClassLoadingSelfTest;
@@ -104,7 +106,8 @@
GridMessagingSelfTest.class,
GridMessagingNoPeerClassLoadingSelfTest.class,
- GridReleaseTypeSelfTest.class,
+ CoreVersionRollingUpgradeTest.class,
+ PluginVersionRollingUpgradeTest.class,
GridProductVersionSelfTest.class,
GridAffinityAssignmentV2Test.class,
GridAffinityAssignmentV2TestNoOptimizations.class,
@@ -157,6 +160,8 @@
MessageFactoryMarshallerInitializationTest.class,
LogEvictionResultsTest.class,
+
+ IgniteFeatureSetTest.class,
})
public class IgniteBasicTestSuite {
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheConsistencySelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheConsistencySelfTestSuite.java
index 82bd4b8..cd68f2c 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheConsistencySelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheConsistencySelfTestSuite.java
@@ -18,14 +18,11 @@
package org.apache.ignite.testsuites;
import org.apache.ignite.internal.processors.cache.consistency.inmem.AtomicReadRepairTest;
-import org.apache.ignite.internal.processors.cache.consistency.inmem.ExplicitTransactionalReadRepairTest;
import org.apache.ignite.internal.processors.cache.consistency.inmem.ImplicitTransactionalReadRepairTest;
import org.apache.ignite.internal.processors.cache.consistency.inmem.ReplicatedExplicitTransactionalReadRepairTest;
import org.apache.ignite.internal.processors.cache.consistency.inmem.ReplicatedImplicitTransactionalReadRepairTest;
import org.apache.ignite.internal.processors.cache.consistency.inmem.SingleBackupExplicitTransactionalReadRepairTest;
-import org.apache.ignite.internal.processors.cache.consistency.inmem.SingleBackupImplicitTransactionalReadRepairTest;
import org.apache.ignite.internal.processors.cache.consistency.persistence.PdsAtomicReadRepairTest;
-import org.apache.ignite.internal.processors.cache.consistency.persistence.PdsExplicitTransactionalReadRepairTest;
import org.apache.ignite.internal.processors.cache.consistency.persistence.PdsImplicitTransactionalReadRepairTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -37,19 +34,16 @@
@Suite.SuiteClasses({
// Inmem
AtomicReadRepairTest.class,
- ExplicitTransactionalReadRepairTest.class,
ImplicitTransactionalReadRepairTest.class,
// PDS
PdsAtomicReadRepairTest.class,
- PdsExplicitTransactionalReadRepairTest.class,
PdsImplicitTransactionalReadRepairTest.class,
// Special (inmem)
ReplicatedExplicitTransactionalReadRepairTest.class,
ReplicatedImplicitTransactionalReadRepairTest.class,
SingleBackupExplicitTransactionalReadRepairTest.class,
- SingleBackupImplicitTransactionalReadRepairTest.class,
})
public class IgniteCacheConsistencySelfTestSuite {
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheConsistencySelfTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheConsistencySelfTestSuite2.java
new file mode 100644
index 0000000..9cac11a
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheConsistencySelfTestSuite2.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import org.apache.ignite.internal.processors.cache.consistency.inmem.ExplicitTransactionalReadRepairTest;
+import org.apache.ignite.internal.processors.cache.consistency.inmem.SingleBackupImplicitTransactionalReadRepairTest;
+import org.apache.ignite.internal.processors.cache.consistency.persistence.PdsExplicitTransactionalReadRepairTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Split off from {@link IgniteCacheConsistencySelfTestSuite} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ ExplicitTransactionalReadRepairTest.class,
+ PdsExplicitTransactionalReadRepairTest.class,
+ SingleBackupImplicitTransactionalReadRepairTest.class,
+})
+public class IgniteCacheConsistencySelfTestSuite2 {
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
index dc7ab1d..84a12b0 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite.java
@@ -17,77 +17,43 @@
package org.apache.ignite.testsuites;
-import org.apache.ignite.internal.processors.cache.AtomicCacheAffinityConfigurationTest;
import org.apache.ignite.internal.processors.cache.datastructures.GridCacheQueueCleanupSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.GridCacheQueueClientDisconnectTest;
import org.apache.ignite.internal.processors.cache.datastructures.GridCacheQueueMultiNodeConsistencySelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.IgniteAtomicLongClusterReadOnlyTest;
import org.apache.ignite.internal.processors.cache.datastructures.IgniteAtomicReferenceClusterReadOnlyTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteAtomicSequenceClusterReadOnlyTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteAtomicStampedClusterReadOnlyTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteClientDataStructuresTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteCountDownLatchClusterReadOnlyTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteDataStructureUniqueNameTest;
import org.apache.ignite.internal.processors.cache.datastructures.IgniteDataStructureWithJobTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteDataStructuresCreateDeniedInClusterReadOnlyMode;
import org.apache.ignite.internal.processors.cache.datastructures.IgniteDataStructuresNoClassOnServerTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteQueueClusterReadOnlyTest;
import org.apache.ignite.internal.processors.cache.datastructures.IgniteSequenceInternalCleanupTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteSetClusterReadOnlyTest;
import org.apache.ignite.internal.processors.cache.datastructures.OutOfMemoryVolatileRegionTest;
import org.apache.ignite.internal.processors.cache.datastructures.SemaphoreFailoverNoWaitingAcquirerTest;
-import org.apache.ignite.internal.processors.cache.datastructures.SemaphoreFailoverSafeReleasePermitsTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicQueueApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicQueueCreateMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicQueueFailoverDataConsistencySelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicQueueMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicQueueRotativeMultiNodeTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicReferenceApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicReferenceMultiNodeTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicSequenceMultiThreadedTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicSequenceTxSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicSetFailoverSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicSetSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicStampedApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedDataStructuresFailoverSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedNodeRestartTxSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueCreateMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueEntryMoveSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueFailoverDataConsistencySelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueJoinedNodeSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueRotativeMultiNodeTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSequenceApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSequenceMultiNodeSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSetFailoverSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSetSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSetWithClientSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSetWithNodeFilterSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedAtomicLongApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedCountDownLatchSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedLockSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedQueueNoBackupsTest;
import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedSemaphoreSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedSetNoBackupsSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicReferenceApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicReferenceMultiNodeTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicStampedApiSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedDataStructuresFailoverSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueApiSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueRotativeMultiNodeTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedSequenceApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedSequenceMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedSetSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedSetWithClientSelfTest;
-import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedSetWithNodeFilterSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.replicated.IgniteReplicatedAtomicLongApiSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.replicated.IgniteReplicatedCountDownLatchSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.replicated.IgniteReplicatedLockSelfTest;
import org.apache.ignite.internal.processors.cache.datastructures.replicated.IgniteReplicatedSemaphoreSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheAtomicReplicatedNodeRestartSelfTest;
-import org.apache.ignite.internal.processors.datastructures.GridCacheReplicatedQueueRemoveSelfTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -96,98 +62,44 @@
*/
@RunWith(Suite.class)
@Suite.SuiteClasses({
- GridCachePartitionedQueueFailoverDataConsistencySelfTest.class,
- GridCachePartitionedAtomicQueueFailoverDataConsistencySelfTest.class,
-
- GridCacheReplicatedSequenceApiSelfTest.class,
GridCacheReplicatedSequenceMultiNodeSelfTest.class,
- GridCacheReplicatedQueueApiSelfTest.class,
- GridCacheReplicatedQueueMultiNodeSelfTest.class,
- GridCacheReplicatedQueueRotativeMultiNodeTest.class,
- GridCacheReplicatedSetSelfTest.class,
GridCacheReplicatedSetWithClientSelfTest.class,
- GridCacheReplicatedSetWithNodeFilterSelfTest.class,
- GridCacheReplicatedDataStructuresFailoverSelfTest.class,
IgniteReplicatedCountDownLatchSelfTest.class,
IgniteReplicatedSemaphoreSelfTest.class,
IgniteReplicatedLockSelfTest.class,
IgniteCacheAtomicReplicatedNodeRestartSelfTest.class,
- GridCacheReplicatedQueueRemoveSelfTest.class,
OutOfMemoryVolatileRegionTest.class,
-
- GridCachePartitionedSequenceApiSelfTest.class,
GridCachePartitionedSequenceMultiNodeSelfTest.class,
GridCachePartitionedQueueApiSelfTest.class,
GridCachePartitionedAtomicQueueApiSelfTest.class,
GridCachePartitionedQueueMultiNodeSelfTest.class,
GridCachePartitionedAtomicQueueMultiNodeSelfTest.class,
GridCacheQueueClientDisconnectTest.class,
-
GridCachePartitionedQueueCreateMultiNodeSelfTest.class,
GridCachePartitionedAtomicQueueCreateMultiNodeSelfTest.class,
GridCachePartitionedSetSelfTest.class,
- GridCachePartitionedSetWithClientSelfTest.class,
- GridCachePartitionedSetWithNodeFilterSelfTest.class,
- IgnitePartitionedSetNoBackupsSelfTest.class,
- GridCachePartitionedAtomicSetSelfTest.class,
IgnitePartitionedCountDownLatchSelfTest.class,
IgniteDataStructureWithJobTest.class,
IgnitePartitionedSemaphoreSelfTest.class,
- SemaphoreFailoverSafeReleasePermitsTest.class,
SemaphoreFailoverNoWaitingAcquirerTest.class,
IgnitePartitionedLockSelfTest.class,
-
GridCachePartitionedSetFailoverSelfTest.class,
GridCachePartitionedAtomicSetFailoverSelfTest.class,
-
- GridCachePartitionedQueueRotativeMultiNodeTest.class,
- GridCachePartitionedAtomicQueueRotativeMultiNodeTest.class,
GridCacheQueueCleanupSelfTest.class,
-
- GridCachePartitionedQueueEntryMoveSelfTest.class,
-
GridCachePartitionedDataStructuresFailoverSelfTest.class,
GridCacheQueueMultiNodeConsistencySelfTest.class,
-
- IgnitePartitionedAtomicLongApiSelfTest.class,
IgniteReplicatedAtomicLongApiSelfTest.class,
-
GridCachePartitionedAtomicSequenceMultiThreadedTest.class,
GridCachePartitionedAtomicSequenceTxSelfTest.class,
-
- GridCachePartitionedAtomicStampedApiSelfTest.class,
- GridCacheReplicatedAtomicStampedApiSelfTest.class,
-
- GridCachePartitionedAtomicReferenceApiSelfTest.class,
GridCacheReplicatedAtomicReferenceApiSelfTest.class,
-
GridCachePartitionedAtomicReferenceMultiNodeTest.class,
GridCacheReplicatedAtomicReferenceMultiNodeTest.class,
-
- GridCachePartitionedNodeRestartTxSelfTest.class,
- GridCachePartitionedQueueJoinedNodeSelfTest.class,
-
- IgniteDataStructureUniqueNameTest.class,
IgniteDataStructuresNoClassOnServerTest.class,
-
- IgniteClientDataStructuresTest.class,
-
IgnitePartitionedQueueNoBackupsTest.class,
-
IgniteSequenceInternalCleanupTest.class,
-
- AtomicCacheAffinityConfigurationTest.class,
-
IgniteCacheDataStructuresBinarySelfTestSuite.class,
-
IgniteAtomicLongClusterReadOnlyTest.class,
IgniteAtomicReferenceClusterReadOnlyTest.class,
- IgniteAtomicSequenceClusterReadOnlyTest.class,
- IgniteAtomicStampedClusterReadOnlyTest.class,
- IgniteCountDownLatchClusterReadOnlyTest.class,
- IgniteDataStructuresCreateDeniedInClusterReadOnlyMode.class,
- IgniteQueueClusterReadOnlyTest.class,
- IgniteSetClusterReadOnlyTest.class
})
public class IgniteCacheDataStructuresSelfTestSuite {
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite2.java
new file mode 100644
index 0000000..36163ed
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheDataStructuresSelfTestSuite2.java
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import org.apache.ignite.internal.processors.cache.AtomicCacheAffinityConfigurationTest;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteAtomicSequenceClusterReadOnlyTest;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteAtomicStampedClusterReadOnlyTest;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteClientDataStructuresTest;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteCountDownLatchClusterReadOnlyTest;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteDataStructureUniqueNameTest;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteDataStructuresCreateDeniedInClusterReadOnlyMode;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteQueueClusterReadOnlyTest;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteSetClusterReadOnlyTest;
+import org.apache.ignite.internal.processors.cache.datastructures.SemaphoreFailoverSafeReleasePermitsTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicQueueFailoverDataConsistencySelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicQueueRotativeMultiNodeTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicReferenceApiSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicSetSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedAtomicStampedApiSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedNodeRestartTxSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueEntryMoveSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueFailoverDataConsistencySelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueJoinedNodeSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedQueueRotativeMultiNodeTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSequenceApiSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSetWithClientSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.GridCachePartitionedSetWithNodeFilterSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedAtomicLongApiSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.partitioned.IgnitePartitionedSetNoBackupsSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedAtomicStampedApiSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedDataStructuresFailoverSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueApiSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueMultiNodeSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedQueueRotativeMultiNodeTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedSequenceApiSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedSetSelfTest;
+import org.apache.ignite.internal.processors.cache.datastructures.replicated.GridCacheReplicatedSetWithNodeFilterSelfTest;
+import org.apache.ignite.internal.processors.datastructures.GridCacheReplicatedQueueRemoveSelfTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Split off from {@link IgniteCacheDataStructuresSelfTestSuite} to reduce the single-suite
+ * runtime in CI; contains an independent subset of the same test classes.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ GridCachePartitionedQueueFailoverDataConsistencySelfTest.class,
+ GridCachePartitionedAtomicQueueFailoverDataConsistencySelfTest.class,
+ GridCacheReplicatedSequenceApiSelfTest.class,
+ GridCacheReplicatedQueueApiSelfTest.class,
+ GridCacheReplicatedQueueMultiNodeSelfTest.class,
+ GridCacheReplicatedQueueRotativeMultiNodeTest.class,
+ GridCacheReplicatedSetSelfTest.class,
+ GridCacheReplicatedSetWithNodeFilterSelfTest.class,
+ GridCacheReplicatedDataStructuresFailoverSelfTest.class,
+ GridCacheReplicatedQueueRemoveSelfTest.class,
+ GridCachePartitionedSequenceApiSelfTest.class,
+ GridCachePartitionedSetWithClientSelfTest.class,
+ GridCachePartitionedSetWithNodeFilterSelfTest.class,
+ IgnitePartitionedSetNoBackupsSelfTest.class,
+ GridCachePartitionedAtomicSetSelfTest.class,
+ SemaphoreFailoverSafeReleasePermitsTest.class,
+ GridCachePartitionedQueueRotativeMultiNodeTest.class,
+ GridCachePartitionedAtomicQueueRotativeMultiNodeTest.class,
+ GridCachePartitionedQueueEntryMoveSelfTest.class,
+ IgnitePartitionedAtomicLongApiSelfTest.class,
+ GridCachePartitionedAtomicStampedApiSelfTest.class,
+ GridCacheReplicatedAtomicStampedApiSelfTest.class,
+ GridCachePartitionedAtomicReferenceApiSelfTest.class,
+ GridCachePartitionedNodeRestartTxSelfTest.class,
+ GridCachePartitionedQueueJoinedNodeSelfTest.class,
+ IgniteDataStructureUniqueNameTest.class,
+ IgniteClientDataStructuresTest.class,
+ AtomicCacheAffinityConfigurationTest.class,
+ IgniteAtomicSequenceClusterReadOnlyTest.class,
+ IgniteAtomicStampedClusterReadOnlyTest.class,
+ IgniteCountDownLatchClusterReadOnlyTest.class,
+ IgniteDataStructuresCreateDeniedInClusterReadOnlyMode.class,
+ IgniteQueueClusterReadOnlyTest.class,
+ IgniteSetClusterReadOnlyTest.class,
+})
+public class IgniteCacheDataStructuresSelfTestSuite2 {
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite.java
index ed447fd..384e79a 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite.java
@@ -19,23 +19,13 @@
import org.apache.ignite.internal.processors.cache.GridCacheIncrementTransformTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheAtomicNodeJoinTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheSizeFailoverTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheTxNearDisabledPutGetRestartTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheTxNodeJoinTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtAtomicRemoveFailureTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtClientRemoveFailureTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtRemoveFailureTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheTxNodeFailureSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteAtomicLongChangingTopologySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.AtomicPutAllChangingTopologyTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicClientInvalidPartitionHandlingSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicClientRemoveFailureTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicInvalidPartitionHandlingSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicRemoveFailureTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearRemoveFailureTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearRemoveFailureTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingPartitionDistributionTest;
-import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteChangingBaselineDownCacheRemoveFailoverTest;
import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteChangingBaselineUpCacheRemoveFailoverTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -47,32 +37,18 @@
@Suite.SuiteClasses({
GridCacheAtomicInvalidPartitionHandlingSelfTest.class,
GridCacheAtomicClientInvalidPartitionHandlingSelfTest.class,
- GridCacheRebalancingPartitionDistributionTest.class,
GridCacheIncrementTransformTest.class,
// Failure consistency tests.
GridCacheAtomicRemoveFailureTest.class,
- GridCacheAtomicClientRemoveFailureTest.class,
GridCacheDhtAtomicRemoveFailureTest.class,
GridCacheDhtRemoveFailureTest.class,
- GridCacheDhtClientRemoveFailureTest.class,
GridCacheNearRemoveFailureTest.class,
- GridCacheAtomicNearRemoveFailureTest.class,
IgniteChangingBaselineUpCacheRemoveFailoverTest.class,
- IgniteChangingBaselineDownCacheRemoveFailoverTest.class,
IgniteCacheAtomicNodeJoinTest.class,
- IgniteCacheTxNodeJoinTest.class,
-
- IgniteCacheTxNearDisabledPutGetRestartTest.class,
-
- IgniteCacheSizeFailoverTest.class,
-
- IgniteAtomicLongChangingTopologySelfTest.class,
-
- GridCacheTxNodeFailureSelfTest.class,
AtomicPutAllChangingTopologyTest.class,
})
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite2.java
index b8514bf..919656c 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite2.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite2.java
@@ -17,47 +17,16 @@
package org.apache.ignite.testsuites;
-import org.apache.ignite.internal.processors.cache.CacheGetFromJobTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheAsyncOperationsFailoverAtomicTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheAsyncOperationsFailoverTxTest;
-import org.apache.ignite.internal.processors.cache.distributed.CachePutAllFailoverAtomicTest;
-import org.apache.ignite.internal.processors.cache.distributed.CachePutAllFailoverTxTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedFailoverSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCacheCrossCacheTxFailoverTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicFailoverSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicReplicatedFailoverSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedFailoverSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedFailoverSelfTest;
-import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteChangingBaselineDownCachePutAllFailoverTest;
-import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteChangingBaselineUpCachePutAllFailoverTest;
-import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteStableBaselineCachePutAllFailoverTest;
-import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteStableBaselineCacheRemoveFailoverTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
/** */
@RunWith(Suite.class)
@Suite.SuiteClasses({
- CacheGetFromJobTest.class,
-
- GridCacheAtomicFailoverSelfTest.class,
- GridCacheAtomicReplicatedFailoverSelfTest.class,
-
- GridCachePartitionedFailoverSelfTest.class,
- GridCacheColocatedFailoverSelfTest.class,
- GridCacheReplicatedFailoverSelfTest.class,
IgniteCacheCrossCacheTxFailoverTest.class,
- CacheAsyncOperationsFailoverAtomicTest.class,
- CacheAsyncOperationsFailoverTxTest.class,
-
- CachePutAllFailoverAtomicTest.class,
- CachePutAllFailoverTxTest.class,
- IgniteStableBaselineCachePutAllFailoverTest.class,
- IgniteStableBaselineCacheRemoveFailoverTest.class,
- IgniteChangingBaselineDownCachePutAllFailoverTest.class,
- IgniteChangingBaselineUpCachePutAllFailoverTest.class
})
public class IgniteCacheFailoverTestSuite2 {
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite4.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite4.java
new file mode 100644
index 0000000..47575ef
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite4.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheSizeFailoverTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheTxNearDisabledPutGetRestartTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheTxNodeJoinTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtClientRemoveFailureTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheTxNodeFailureSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteAtomicLongChangingTopologySelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicClientRemoveFailureTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearRemoveFailureTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingPartitionDistributionTest;
+import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteChangingBaselineDownCacheRemoveFailoverTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Split off from {@link IgniteCacheFailoverTestSuite} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ GridCacheRebalancingPartitionDistributionTest.class,
+ GridCacheAtomicClientRemoveFailureTest.class,
+ GridCacheDhtClientRemoveFailureTest.class,
+ GridCacheAtomicNearRemoveFailureTest.class,
+ IgniteChangingBaselineDownCacheRemoveFailoverTest.class,
+ IgniteCacheTxNodeJoinTest.class,
+ IgniteCacheTxNearDisabledPutGetRestartTest.class,
+ IgniteCacheSizeFailoverTest.class,
+ IgniteAtomicLongChangingTopologySelfTest.class,
+ GridCacheTxNodeFailureSelfTest.class,
+})
+public class IgniteCacheFailoverTestSuite4 {
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite5.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite5.java
new file mode 100644
index 0000000..d7d8407
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheFailoverTestSuite5.java
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import org.apache.ignite.internal.processors.cache.CacheGetFromJobTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheAsyncOperationsFailoverAtomicTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheAsyncOperationsFailoverTxTest;
+import org.apache.ignite.internal.processors.cache.distributed.CachePutAllFailoverAtomicTest;
+import org.apache.ignite.internal.processors.cache.distributed.CachePutAllFailoverTxTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedFailoverSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicFailoverSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridCacheAtomicReplicatedFailoverSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedFailoverSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedFailoverSelfTest;
+import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteChangingBaselineDownCachePutAllFailoverTest;
+import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteChangingBaselineUpCachePutAllFailoverTest;
+import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteStableBaselineCachePutAllFailoverTest;
+import org.apache.ignite.internal.processors.cache.persistence.baseline.IgniteStableBaselineCacheRemoveFailoverTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Split off from {@link IgniteCacheFailoverTestSuite2} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ CacheGetFromJobTest.class,
+ GridCacheAtomicFailoverSelfTest.class,
+ GridCacheAtomicReplicatedFailoverSelfTest.class,
+ GridCachePartitionedFailoverSelfTest.class,
+ GridCacheColocatedFailoverSelfTest.class,
+ GridCacheReplicatedFailoverSelfTest.class,
+ CacheAsyncOperationsFailoverAtomicTest.class,
+ CacheAsyncOperationsFailoverTxTest.class,
+ CachePutAllFailoverAtomicTest.class,
+ CachePutAllFailoverTxTest.class,
+ IgniteStableBaselineCachePutAllFailoverTest.class,
+ IgniteStableBaselineCacheRemoveFailoverTest.class,
+ IgniteChangingBaselineDownCachePutAllFailoverTest.class,
+ IgniteChangingBaselineUpCachePutAllFailoverTest.class,
+})
+public class IgniteCacheFailoverTestSuite5 {
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite13.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite13.java
index a2a17c5..2f4d178 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite13.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite13.java
@@ -35,10 +35,25 @@
import org.apache.ignite.internal.metric.OutboundIoMessageQueueSizeTest;
import org.apache.ignite.internal.metric.ReadMetricsOnNodeStartupTest;
import org.apache.ignite.internal.metric.SystemMetricsTest;
+import org.apache.ignite.internal.metric.SystemViewBinaryMetaTest;
import org.apache.ignite.internal.metric.SystemViewCacheExpiryPolicyTest;
+import org.apache.ignite.internal.metric.SystemViewCacheTest;
+import org.apache.ignite.internal.metric.SystemViewClientTest;
import org.apache.ignite.internal.metric.SystemViewClusterActivationTest;
import org.apache.ignite.internal.metric.SystemViewComputeJobTest;
-import org.apache.ignite.internal.metric.SystemViewSelfTest;
+import org.apache.ignite.internal.metric.SystemViewComputeTaskTest;
+import org.apache.ignite.internal.metric.SystemViewConfigurationTest;
+import org.apache.ignite.internal.metric.SystemViewDSTest;
+import org.apache.ignite.internal.metric.SystemViewExecutorsTest;
+import org.apache.ignite.internal.metric.SystemViewMetastorageTest;
+import org.apache.ignite.internal.metric.SystemViewNodesTest;
+import org.apache.ignite.internal.metric.SystemViewPageListsTest;
+import org.apache.ignite.internal.metric.SystemViewPageTimestampsTest;
+import org.apache.ignite.internal.metric.SystemViewPluginTest;
+import org.apache.ignite.internal.metric.SystemViewQueriesTest;
+import org.apache.ignite.internal.metric.SystemViewServiceTest;
+import org.apache.ignite.internal.metric.SystemViewSnapshotsTest;
+import org.apache.ignite.internal.metric.SystemViewTransactionsTest;
import org.apache.ignite.internal.processors.cache.CacheClearAsyncDeadlockTest;
import org.apache.ignite.internal.processors.cache.CacheDistributedGetLongRunningFutureDumpTest;
import org.apache.ignite.internal.processors.cache.EntriesRemoveOnShutdownTest;
@@ -88,10 +103,25 @@
GridTestUtils.addTestIfNeeded(suite, SystemMetricsTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CustomMetricsTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, MetricsConfigurationTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, SystemViewSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, SystemViewClusterActivationTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, SystemViewComputeJobTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, SystemViewCacheExpiryPolicyTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewCacheTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewServiceTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewComputeTaskTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewClientTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewNodesTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewTransactionsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewDSTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewExecutorsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewPageListsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewBinaryMetaTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewMetastorageTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewSnapshotsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewPageTimestampsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewConfigurationTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewPluginTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, SystemViewQueriesTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheMetricsAddRemoveTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheMetricsConflictResolverTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, JmxExporterSpiTest.class, ignoredTests);
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite14.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite14.java
new file mode 100644
index 0000000..2f8fc5a
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite14.java
@@ -0,0 +1,190 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.cache.affinity.rendezvous.ClusterNodeAttributeAffinityBackupFilterSelfTest;
+import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunctionFastPowerOfTwoHashSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheConcurrentReadThroughTest;
+import org.apache.ignite.internal.processors.cache.CacheConfigurationLeakTest;
+import org.apache.ignite.internal.processors.cache.CacheExchangeMessageDuplicatedStateTest;
+import org.apache.ignite.internal.processors.cache.CacheOptimisticTransactionsWithFilterSingleServerTest;
+import org.apache.ignite.internal.processors.cache.CrossCacheTxNearEnabledRandomOperationsTest;
+import org.apache.ignite.internal.processors.cache.CrossCacheTxRandomOperationsTest;
+import org.apache.ignite.internal.processors.cache.GridCacheAtomicMessageCountSelfTest;
+import org.apache.ignite.internal.processors.cache.GridCacheFastNodeLeftForTransactionTest;
+import org.apache.ignite.internal.processors.cache.GridCacheFinishPartitionsSelfTest;
+import org.apache.ignite.internal.processors.cache.GridCacheVariableTopologySelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheEntryProcessorNodeJoinTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheNoSyncForGetTest;
+import org.apache.ignite.internal.processors.cache.IgniteCachePartitionMapUpdateTest;
+import org.apache.ignite.internal.processors.cache.IgniteClientCacheStartFailoverTest;
+import org.apache.ignite.internal.processors.cache.IgniteNearClientCacheCloseTest;
+import org.apache.ignite.internal.processors.cache.IgniteOnePhaseCommitInvokeTest;
+import org.apache.ignite.internal.processors.cache.NoPresentCacheInterceptorOnClientTest;
+import org.apache.ignite.internal.processors.cache.TransactionValidationTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheDetectLostPartitionsTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheLoadingConcurrentGridStartSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheLockReleaseNodeLeaveTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheTxLoadingConcurrentGridStartSelfTestAllowOverwrite;
+import org.apache.ignite.internal.processors.cache.distributed.GridCachePartitionedNearDisabledTxMultiThreadedSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheClientNodePartitionsExchangeTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheServerNodeConcurrentStart;
+import org.apache.ignite.internal.processors.cache.distributed.dht.CachePartitionPartialCountersMapSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedDebugTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedPreloadRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedPrimarySyncSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedTxSingleThreadedSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtEntrySelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtEvictionsDisabledSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtMappingSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadBigDataSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadDelayedSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadDisabledSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadMessageCountTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadOnheapSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadPutGetSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadStartStopSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledLockSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedUnloadEventsSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCacheClearDuringRebalanceTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCacheContainsKeyColocatedSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteTxConsistencyColocatedRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.RebalanceIsProcessingWhenAssignmentIsEmptyTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearEvictionEventSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearClientHitTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearEvictionEventSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearMultiGetSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearMultiNodeSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearPartitionedClearSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearPreloadRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearReaderPreloadSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearTxForceKeyTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedAtomicGetAndTransformStoreSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedBasicStoreSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedEventSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedExplicitLockNodeFailureSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedNestedTxTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedPreloadLifecycleSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxConcurrentGetTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxMultiThreadedSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxReadTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheRendezvousAffinityClientSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.NearCachePutAllMultinodeTest;
+import org.apache.ignite.internal.processors.continuous.IgniteNoCustomEventsOnNodeStart;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.DynamicSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * Split off from {@link IgniteCacheTestSuite2} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(DynamicSuite.class)
+public class IgniteCacheTestSuite14 {
+ /**
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite() {
+ return suite(null);
+ }
+
+ /**
+ * @param ignoredTests Tests to ignore.
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite(Collection<Class> ignoredTests) {
+ List<Class<?>> suite = new ArrayList<>();
+
+ GridTestUtils.addTestIfNeeded(suite, GridCacheFastNodeLeftForTransactionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheNearMultiGetSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheNearMultiNodeSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheNearReaderPreloadSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedAtomicGetAndTransformStoreSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedBasicStoreSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheConcurrentReadThroughTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNearDisabledLockSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedMultiNodeSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedExplicitLockNodeFailureSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheLockReleaseNodeLeaveTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNestedTxTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTxConcurrentGetTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTxReadTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedTxSingleThreadedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheFinishPartitionsSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTxMultiThreadedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNearDisabledTxMultiThreadedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtEntrySelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtMappingSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadOnheapSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadBigDataSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadPutGetSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadDisabledSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedPreloadRestartSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheNearPreloadRestartSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadStartStopSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedPreloadLifecycleSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadDelayedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, RebalanceIsProcessingWhenAssignmentIsEmptyTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheLoadingConcurrentGridStartSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheTxLoadingConcurrentGridStartSelfTestAllowOverwrite.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedEventSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtEvictionsDisabledSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheNearEvictionEventSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheAtomicNearEvictionEventSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedUnloadEventsSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheAtomicMessageCountSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheNearPartitionedClearSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheNearClientHitTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedPrimarySyncSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCachePartitionMapUpdateTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheClientNodePartitionsExchangeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheServerNodeConcurrentStart.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheEntryProcessorNodeJoinTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheNearTxForceKeyTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CrossCacheTxRandomOperationsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CrossCacheTxNearEnabledRandomOperationsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheVariableTopologySelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteNoCustomEventsOnNodeStart.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheExchangeMessageDuplicatedStateTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, NearCachePutAllMultinodeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteOnePhaseCommitInvokeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheNoSyncForGetTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheContainsKeyColocatedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteNearClientCacheCloseTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteClientCacheStartFailoverTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheOptimisticTransactionsWithFilterSingleServerTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheClearDuringRebalanceTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedDebugTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadMessageCountTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteTxConsistencyColocatedRestartSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheConfigurationLeakTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, RendezvousAffinityFunctionFastPowerOfTwoHashSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheRendezvousAffinityClientSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterNodeAttributeAffinityBackupFilterSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CachePartitionPartialCountersMapSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, NoPresentCacheInterceptorOnClientTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheDetectLostPartitionsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TransactionValidationTest.class, ignoredTests);
+
+ return suite;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite15.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite15.java
new file mode 100644
index 0000000..cef8063
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite15.java
@@ -0,0 +1,108 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.internal.processors.cache.CacheCreateDestroyClusterReadOnlyModeTest;
+import org.apache.ignite.internal.processors.cache.CacheKeepBinaryTransactionTest;
+import org.apache.ignite.internal.processors.cache.CacheNearReaderUpdateTest;
+import org.apache.ignite.internal.processors.cache.CacheRebalancingSelfTest;
+import org.apache.ignite.internal.processors.cache.ClusterActivationFailureTest;
+import org.apache.ignite.internal.processors.cache.ClusterReadOnlyModeTest;
+import org.apache.ignite.internal.processors.cache.ClusterStateClientPartitionedSelfTest;
+import org.apache.ignite.internal.processors.cache.ClusterStateClientReplicatedSelfTest;
+import org.apache.ignite.internal.processors.cache.ClusterStateNoRebalancePartitionedTest;
+import org.apache.ignite.internal.processors.cache.ClusterStateNoRebalanceReplicatedTest;
+import org.apache.ignite.internal.processors.cache.ClusterStatePartitionedSelfTest;
+import org.apache.ignite.internal.processors.cache.ClusterStateReplicatedSelfTest;
+import org.apache.ignite.internal.processors.cache.EntryVersionConsistencyReadThroughTest;
+import org.apache.ignite.internal.processors.cache.IgniteCachePutStackOverflowSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheStoreCollectionTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentNodeJoinValidationTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest;
+import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeCellularSwitchComplexOperationsTest;
+import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeCellularSwitchIsolationTest;
+import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeCellularSwitchTxContinuationTest;
+import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeCellularSwitchTxCountersTest;
+import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeSwitchTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheGroupsPartitionLossPolicySelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCachePartitionLossPolicySelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheTxIteratorSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.CacheManualRebalancingTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.RebalanceMetricsTest;
+import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheSyncRebalanceModeSelfTest;
+import org.apache.ignite.internal.processors.cache.store.IgniteCacheWriteBehindNoUpdateSelfTest;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.DynamicSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * Split off from {@link IgniteCacheTestSuite5} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(DynamicSuite.class)
+public class IgniteCacheTestSuite15 {
+ /**
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite() {
+ return suite(null);
+ }
+
+ /**
+ * @param ignoredTests Tests to ignore.
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite(Collection<Class> ignoredTests) {
+ List<Class<?>> suite = new ArrayList<>();
+
+ GridTestUtils.addTestIfNeeded(suite, CacheNearReaderUpdateTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheStoreCollectionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheWriteBehindNoUpdateSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCachePutStackOverflowSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheKeepBinaryTransactionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheLateAffinityAssignmentTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheLateAffinityAssignmentNodeJoinValidationTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeSwitchTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeCellularSwitchComplexOperationsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeCellularSwitchIsolationTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeCellularSwitchTxContinuationTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeCellularSwitchTxCountersTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, EntryVersionConsistencyReadThroughTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheSyncRebalanceModeSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxIteratorSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterStatePartitionedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterStateClientPartitionedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterStateNoRebalancePartitionedTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterStateReplicatedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterStateClientReplicatedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterStateNoRebalanceReplicatedTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterReadOnlyModeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClusterActivationFailureTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheCreateDestroyClusterReadOnlyModeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCachePartitionLossPolicySelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheGroupsPartitionLossPolicySelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheRebalancingSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheManualRebalancingTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, RebalanceMetricsTest.class, ignoredTests);
+
+ return suite;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite16.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite16.java
new file mode 100644
index 0000000..2171ab5
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite16.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.internal.processors.cache.PartitionedTransactionalOptimisticCacheGetsDistributionTest;
+import org.apache.ignite.internal.processors.cache.ReplicatedAtomicCacheGetsDistributionTest;
+import org.apache.ignite.internal.processors.cache.ReplicatedTransactionalOptimisticCacheGetsDistributionTest;
+import org.apache.ignite.internal.processors.cache.ReplicatedTransactionalPessimisticCacheGetsDistributionTest;
+import org.apache.ignite.internal.processors.cache.datastructures.IgniteExchangeLatchManagerDiscoHistoryTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheExchangeMergeMdcTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheParallelStartTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheTryLockMultithreadedTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheMultiClientsStartTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgnitePessimisticTxSuspendResumeTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.latch.ExchangeLatchManagerTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxMultiCacheAsyncOpsTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxOnCachesStartTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxOnCachesStopTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxOptimisticOnPartitionExchangeTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxOptimisticPrepareOnUnstableTopologyTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxOptimisticReadThroughTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxRollbackDuringPreparingTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnIncorrectParamsTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnMapOnInvalidTopologyTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutNearCacheTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutNoDeadlockDetectionTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutOnePhaseCommitTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxStateChangeEventTest;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.DynamicSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * Split off from {@link IgniteCacheTestSuite6} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(DynamicSuite.class)
+public class IgniteCacheTestSuite16 {
+ /**
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite() {
+ return suite(null);
+ }
+
+ /**
+ * @param ignoredTests Tests to ignore.
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite(Collection<Class> ignoredTests) {
+ List<Class<?>> suite = new ArrayList<>();
+
+ GridTestUtils.addTestIfNeeded(suite, IgnitePessimisticTxSuspendResumeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheExchangeMergeMdcTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxRollbackOnTimeoutNoDeadlockDetectionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxRollbackOnTimeoutNearCacheTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxRollbackOnTimeoutOnePhaseCommitTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxOptimisticPrepareOnUnstableTopologyTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxRollbackOnIncorrectParamsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxStateChangeEventTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxMultiCacheAsyncOpsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxOnCachesStartTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxOnCachesStopTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheMultiClientsStartTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ReplicatedAtomicCacheGetsDistributionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ReplicatedTransactionalOptimisticCacheGetsDistributionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ReplicatedTransactionalPessimisticCacheGetsDistributionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, PartitionedTransactionalOptimisticCacheGetsDistributionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxOptimisticOnPartitionExchangeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxOptimisticReadThroughTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteExchangeLatchManagerDiscoHistoryTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ExchangeLatchManagerTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheTryLockMultithreadedTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheParallelStartTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxRollbackOnMapOnInvalidTopologyTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxRollbackDuringPreparingTest.class, ignoredTests);
+
+ return suite;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite17.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite17.java
new file mode 100644
index 0000000..e2fcb00
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite17.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.internal.processors.cache.CachePutIfAbsentTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheGetCustomCollectionsSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheLoadRebalanceEvictionSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteTxCachePrimarySyncTest;
+import org.apache.ignite.internal.processors.cache.transactions.PartitionUpdateCounterTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateConsistencyHistoryRebalanceTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateConsistencyTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateConsistencyVolatileRebalanceTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryOneBackupHistoryRebalanceTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryOneBackupTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryTwoBackupsHistoryRebalanceTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStatePutTest;
+import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateWithFilterTest;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.DynamicSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * Split off from {@link IgniteCacheTestSuite9} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(DynamicSuite.class)
+public class IgniteCacheTestSuite17 {
+ /**
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite() {
+ return suite(null);
+ }
+
+ /**
+ * @param ignoredTests Tests to ignore.
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite(Collection<Class> ignoredTests) {
+ List<Class<?>> suite = new ArrayList<>();
+
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheGetCustomCollectionsSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheLoadRebalanceEvictionSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteTxCachePrimarySyncTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CachePutIfAbsentTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryOneBackupHistoryRebalanceTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryOneBackupTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryTwoBackupsHistoryRebalanceTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStatePutTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateWithFilterTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, PartitionUpdateCounterTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateConsistencyTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateConsistencyHistoryRebalanceTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateConsistencyVolatileRebalanceTest.class, ignoredTests);
+
+ return suite;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite18.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite18.java
new file mode 100644
index 0000000..49018af
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite18.java
@@ -0,0 +1,172 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.cache.store.CacheStoreListenerRWThroughDisabledAtomicCacheTest;
+import org.apache.ignite.cache.store.CacheStoreSessionListenerLifecycleSelfTest;
+import org.apache.ignite.cache.store.CacheStoreWithIgniteTxFailureTest;
+import org.apache.ignite.cache.store.jdbc.CacheJdbcStoreSessionListenerSelfTest;
+import org.apache.ignite.internal.processors.GridCacheTxLoadFromStoreOnLockSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheEventWithTxLabelTest;
+import org.apache.ignite.internal.processors.cache.CacheGetEntryOptimisticReadCommittedSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheGetEntryOptimisticRepeatableReadSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheGetEntryPessimisticRepeatableReadSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheGetRemoveSkipStoreTest;
+import org.apache.ignite.internal.processors.cache.CacheReadThroughAtomicRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheRemoveAllSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheStopAndDestroySelfTest;
+import org.apache.ignite.internal.processors.cache.CacheStoreUsageMultinodeDynamicStartAtomicTest;
+import org.apache.ignite.internal.processors.cache.CacheStoreUsageMultinodeStaticStartAtomicTest;
+import org.apache.ignite.internal.processors.cache.CrossCacheLockTest;
+import org.apache.ignite.internal.processors.cache.GridCacheMarshallingNodeJoinSelfTest;
+import org.apache.ignite.internal.processors.cache.GridCacheMultinodeUpdateSelfTest;
+import org.apache.ignite.internal.processors.cache.GridCacheProcessorActiveTxTest;
+import org.apache.ignite.internal.processors.cache.GridCacheStoreManagerDeserializationTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicNearEnabledStoreValueTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicNearPeekModesTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicReplicatedPeekModesTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicStoreValueTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheContainsKeyAtomicTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheReadThroughStoreCallTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheTxCopyOnReadDisabledTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheTxPeekModesTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheTxPreloadNoWriteTest;
+import org.apache.ignite.internal.processors.cache.IgniteClientCacheInitializationFailTest;
+import org.apache.ignite.internal.processors.cache.IgniteDiscoDataHandlingInNewClusterTest;
+import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartCoordinatorFailoverTest;
+import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartNoExchangeTimeoutTest;
+import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartStopConcurrentTest;
+import org.apache.ignite.internal.processors.cache.IgniteDynamicClientCacheStartSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteInternalCacheTypesTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheAffinityEarlyTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheGetFutureHangsSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheNoValueClassOnServerNodeTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheResultIsNotNullOnPartitionLossTest;
+import org.apache.ignite.internal.processors.cache.distributed.CacheStartOnJoinTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheCreatePutMultiNodeSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheReadFromBackupTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheSingleGetMessageTest;
+import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCacheLockFailoverSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheNearOnlyTxTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheNearReadCommittedTest;
+import org.apache.ignite.internal.processors.cache.distributed.replicated.GridReplicatedTxPreloadTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLoaderWriterTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNearEnabledNoLoadPreviousValueTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNearEnabledNoReadThroughTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNoWriteThroughTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicStoreSessionTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNearEnabledNoLoadPreviousValueTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNearEnabledNoReadThroughTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNoLoadPreviousValueTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNoWriteThroughTest;
+import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxStoreSessionWriteBehindTest;
+import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryPartitionedTransactionalSelfTest;
+import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryReplicatedAtomicSelfTest;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.DynamicSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * Split off from {@link IgniteCacheTestSuite4} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(DynamicSuite.class)
+public class IgniteCacheTestSuite18 {
+ /**
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite() {
+ return suite(null);
+ }
+
+ /**
+ * @param ignoredTests Tests to ignore.
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite(Collection<Class> ignoredTests) {
+ List<Class<?>> suite = new ArrayList<>();
+
+ GridTestUtils.addTestIfNeeded(suite, GridCacheMultinodeUpdateSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicLoaderWriterTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicStoreSessionTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxStoreSessionWriteBehindTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearEnabledNoReadThroughTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNearEnabledNoReadThroughTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheGetRemoveSkipStoreTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearEnabledNoLoadPreviousValueTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNoLoadPreviousValueTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNearEnabledNoLoadPreviousValueTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNoWriteThroughTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNoWriteThroughTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearPeekModesTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicReplicatedPeekModesTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxPeekModesTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheReadThroughStoreCallTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheNearReadCommittedTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxCopyOnReadDisabledTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxPreloadNoWriteTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartCoordinatorFailoverTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartStopConcurrentTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteDynamicClientCacheStartSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartNoExchangeTimeoutTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheAffinityEarlyTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheCreatePutMultiNodeSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheStartOnJoinTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteDiscoDataHandlingInNewClusterTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteClientCacheInitializationFailTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheTxLoadFromStoreOnLockSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheMarshallingNodeJoinSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicStoreValueTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearEnabledStoreValueTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheLockFailoverSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteInternalCacheTypesTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheNoValueClassOnServerNodeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheRemoveAllSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheGetEntryOptimisticReadCommittedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheGetEntryOptimisticRepeatableReadSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheGetEntryPessimisticRepeatableReadSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheStopAndDestroySelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheJdbcStoreSessionListenerSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheStoreSessionListenerLifecycleSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheStoreListenerRWThroughDisabledAtomicCacheTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheStoreWithIgniteTxFailureTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheStoreUsageMultinodeStaticStartAtomicTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheStoreUsageMultinodeDynamicStartAtomicTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheStoreManagerDeserializationTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheReadThroughAtomicRestartSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheVersionedEntryPartitionedTransactionalSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheVersionedEntryReplicatedAtomicSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridReplicatedTxPreloadTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CrossCacheLockTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheGetFutureHangsSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheSingleGetMessageTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheReadFromBackupTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheNearOnlyTxTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheContainsKeyAtomicTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheResultIsNotNullOnPartitionLossTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheEventWithTxLabelTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheProcessorActiveTxTest.class, ignoredTests);
+
+ return suite;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite19.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite19.java
new file mode 100644
index 0000000..317f933
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite19.java
@@ -0,0 +1,82 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.cache.ClientCreateCacheGroupOnJoinNodeMapsTest;
+import org.apache.ignite.internal.processors.cache.CacheStoreTxPutAllMultiNodeTest;
+import org.apache.ignite.internal.processors.cache.GridCacheOrderedPreloadingSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCachePutKeyAttachedBinaryObjectTest;
+import org.apache.ignite.internal.processors.cache.distributed.IgniteTxCacheWithWriteThroughCheckTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRabalancingDelayedPartitionMapExchangeSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalanceOrderTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingAsyncSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingCancelTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingSyncCheckDataTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingSyncSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingUnmarshallingFailedSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.rebalancing.MultiDcRebalancingTest;
+import org.apache.ignite.internal.processors.cache.persistence.CleanupRestoredCachesSlowTest;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.DynamicSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * Split off from {@link IgniteCacheTestSuite8} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(DynamicSuite.class)
+public class IgniteCacheTestSuite19 {
+ /**
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite() {
+ return suite(null);
+ }
+
+ /**
+ * @param ignoredTests Tests to ignore.
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite(Collection<Class> ignoredTests) {
+ List<Class<?>> suite = new ArrayList<>();
+
+ // Eviction.
+ suite.addAll(IgniteCacheEvictionSelfTestSuite.suite(ignoredTests));
+
+ // Rebalancing and other cache tests.
+ GridTestUtils.addTestIfNeeded(suite, GridCacheOrderedPreloadingSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheRebalanceOrderTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingSyncSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingSyncCheckDataTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingUnmarshallingFailedSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingAsyncSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheRabalancingDelayedPartitionMapExchangeSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingCancelTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, MultiDcRebalancingTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheStoreTxPutAllMultiNodeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CleanupRestoredCachesSlowTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, ClientCreateCacheGroupOnJoinNodeMapsTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCachePutKeyAttachedBinaryObjectTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteTxCacheWithWriteThroughCheckTest.class, ignoredTests);
+
+ return suite;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
index b89ea7a..6b6dd44 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite2.java
@@ -20,148 +20,79 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.apache.ignite.cache.affinity.rendezvous.ClusterNodeAttributeAffinityBackupFilterSelfTest;
import org.apache.ignite.cache.affinity.rendezvous.ClusterNodeAttributeColocatedBackupFilterSelfTest;
import org.apache.ignite.cache.affinity.rendezvous.MdcAffinityBackupFilterSelfTest;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunctionBackupFilterSelfTest;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunctionExcludeNeighborsSelfTest;
-import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunctionFastPowerOfTwoHashSelfTest;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunctionStandardHashSelfTest;
import org.apache.ignite.internal.IgniteReflectionFactorySelfTest;
import org.apache.ignite.internal.processors.cache.CacheComparatorTest;
-import org.apache.ignite.internal.processors.cache.CacheConcurrentReadThroughTest;
-import org.apache.ignite.internal.processors.cache.CacheConfigurationLeakTest;
import org.apache.ignite.internal.processors.cache.CacheDhtLocalPartitionAfterRemoveSelfTest;
import org.apache.ignite.internal.processors.cache.CacheEnumOperationsSingleNodeTest;
import org.apache.ignite.internal.processors.cache.CacheEnumOperationsTest;
-import org.apache.ignite.internal.processors.cache.CacheExchangeMessageDuplicatedStateTest;
import org.apache.ignite.internal.processors.cache.CacheGroupLocalConfigurationSelfTest;
-import org.apache.ignite.internal.processors.cache.CacheOptimisticTransactionsWithFilterSingleServerTest;
import org.apache.ignite.internal.processors.cache.CacheOptimisticTransactionsWithFilterTest;
-import org.apache.ignite.internal.processors.cache.CrossCacheTxNearEnabledRandomOperationsTest;
-import org.apache.ignite.internal.processors.cache.CrossCacheTxRandomOperationsTest;
-import org.apache.ignite.internal.processors.cache.GridCacheAtomicMessageCountSelfTest;
-import org.apache.ignite.internal.processors.cache.GridCacheFastNodeLeftForTransactionTest;
-import org.apache.ignite.internal.processors.cache.GridCacheFinishPartitionsSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheOffheapUpdateSelfTest;
import org.apache.ignite.internal.processors.cache.GridCachePartitionedGetSelfTest;
import org.apache.ignite.internal.processors.cache.GridCachePartitionedProjectionAffinitySelfTest;
-import org.apache.ignite.internal.processors.cache.GridCacheVariableTopologySelfTest;
import org.apache.ignite.internal.processors.cache.IgniteAtomicCacheEntryProcessorNodeJoinTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheEntryProcessorNodeJoinTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheIncrementTxTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheNoSyncForGetTest;
import org.apache.ignite.internal.processors.cache.IgniteCachePartitionMapUpdateSafeLossPolicyTest;
-import org.apache.ignite.internal.processors.cache.IgniteCachePartitionMapUpdateTest;
-import org.apache.ignite.internal.processors.cache.IgniteClientCacheStartFailoverTest;
import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheAndNodeStop;
-import org.apache.ignite.internal.processors.cache.IgniteNearClientCacheCloseTest;
-import org.apache.ignite.internal.processors.cache.IgniteOnePhaseCommitInvokeTest;
import org.apache.ignite.internal.processors.cache.IgniteOnePhaseCommitNearReadersTest;
-import org.apache.ignite.internal.processors.cache.NoPresentCacheInterceptorOnClientTest;
+import org.apache.ignite.internal.processors.cache.MdcCacheMetricsTest;
import org.apache.ignite.internal.processors.cache.NonAffinityCoordinatorDynamicStartStopTest;
import org.apache.ignite.internal.processors.cache.RebalanceIteratorLargeEntriesOOMTest;
-import org.apache.ignite.internal.processors.cache.TransactionValidationTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheDetectLostPartitionsTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheLoadingConcurrentGridStartSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheLoadingConcurrentGridStartSelfTestAllowOverwrite;
-import org.apache.ignite.internal.processors.cache.distributed.CacheLockReleaseNodeLeaveTest;
import org.apache.ignite.internal.processors.cache.distributed.CachePartitionStateTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheTxLoadingConcurrentGridStartSelfTestAllowOverwrite;
import org.apache.ignite.internal.processors.cache.distributed.GridCachePartitionNotLoadedEventSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.GridCachePartitionedNearDisabledTxMultiThreadedSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.GridCacheTransformEventSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheClientNodeChangingTopologyTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheClientNodePartitionsExchangeTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheServerNodeConcurrentStart;
import org.apache.ignite.internal.processors.cache.distributed.dht.CacheGetReadFromBackupFailoverTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.CachePartitionPartialCountersMapSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedDebugTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedOptimisticTransactionSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedPreloadRestartSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedPrimarySyncSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheColocatedTxSingleThreadedSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtAtomicEvictionNearReadersSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtEntrySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtEvictionNearReadersSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtEvictionsDisabledSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtMappingSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadBigDataSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadDelayedSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadDisabledSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadMessageCountTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadMultiThreadedSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadOnheapSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadPutGetSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadStartStopSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadUnloadSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtPreloadWaitForBackupsTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledLockSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedNearDisabledMetricsSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedSupplyEventsSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedTopologyChangeSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.GridCachePartitionedUnloadEventsSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCacheClearDuringRebalanceTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCacheContainsKeyColocatedSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCachePartitionedBackupNodeFailureRecoveryTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCrossCacheTxNearEnabledSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteTxConsistencyColocatedRestartSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.RebalanceIsProcessingWhenAssignmentIsEmptyTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.IgniteCacheContainsKeyColocatedAtomicSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.atomic.IgniteCacheContainsKeyNearAtomicSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearEvictionEventSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearMultiNodeSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheAtomicNearReadersSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearClientHitTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearDynamicStartTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearEvictionEventSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearJobExecutionSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearMultiGetSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearMultiNodeSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearOneNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearPartitionedClearSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearPreloadRestartSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearPrimarySyncSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearReaderPreloadSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearReadersSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearTxForceKeyTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedAffinitySelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedAtomicGetAndTransformStoreSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedBasicApiTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedBasicOpSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedBasicStoreMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedBasicStoreSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedEventSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedEvictionSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedExplicitLockNodeFailureSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedGetAndTransformStoreSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedLoadCacheSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedLockSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeLockSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiNodeSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedMultiThreadedPutGetSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedNearDisabledBasicStoreMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedNestedTxTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedNodeFailureSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedPreloadLifecycleSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxConcurrentGetTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxMultiThreadedSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxReadTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxSingleThreadedSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCachePartitionedTxTimeoutSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheRendezvousAffinityClientSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridNearCacheStoreUpdateTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridPartitionedBackupLoadSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheContainsKeyNearSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheNearTxRollbackTest;
import org.apache.ignite.internal.processors.cache.distributed.near.NearCacheMultithreadedUpdateTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.NearCachePutAllMultinodeTest;
import org.apache.ignite.internal.processors.cache.distributed.near.NearCacheSyncUpdateTest;
import org.apache.ignite.internal.processors.cache.distributed.near.NoneRebalanceModeSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.replicated.GridCacheReplicatedJobExecutionTest;
import org.apache.ignite.internal.processors.continuous.IgniteContinuousQueryMetadataUpdateTest;
-import org.apache.ignite.internal.processors.continuous.IgniteNoCustomEventsOnNodeStart;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.DynamicSuite;
import org.junit.runner.RunWith;
@@ -185,148 +116,83 @@
public static List<Class<?>> suite(Collection<Class> ignoredTests) {
List<Class<?>> suite = new ArrayList<>();
- GridTestUtils.addTestIfNeeded(suite, GridCacheFastNodeLeftForTransactionTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheTransformEventSelfTest.class, ignoredTests);
// Partitioned cache.
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedGetSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedBasicApiTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedBasicOpSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheNearMultiGetSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, NoneRebalanceModeSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheNearOneNodeSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheNearMultiNodeSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheAtomicNearMultiNodeSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheNearReadersSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheNearReaderPreloadSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheAtomicNearReadersSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedGetAndTransformStoreSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedAtomicGetAndTransformStoreSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedBasicStoreSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridNearCacheStoreUpdateTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedBasicStoreMultiNodeSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNearDisabledBasicStoreMultiNodeSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheConcurrentReadThroughTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedLockSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNearDisabledLockSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedMultiNodeLockSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedMultiNodeSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedMultiThreadedPutGetSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNodeFailureSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedExplicitLockNodeFailureSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheLockReleaseNodeLeaveTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNestedTxTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTxConcurrentGetTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTxReadTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTxSingleThreadedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedTxSingleThreadedSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTxTimeoutSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheFinishPartitionsSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTxMultiThreadedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNearDisabledTxMultiThreadedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtEntrySelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtMappingSelfTest.class, ignoredTests);
// Preload
GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadOnheapSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadBigDataSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadPutGetSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadDisabledSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadMultiThreadedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedPreloadRestartSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheNearPreloadRestartSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadStartStopSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadUnloadSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedPreloadLifecycleSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadDelayedSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadWaitForBackupsTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, RebalanceIsProcessingWhenAssignmentIsEmptyTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheDhtLocalPartitionAfterRemoveSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheLoadingConcurrentGridStartSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheLoadingConcurrentGridStartSelfTestAllowOverwrite.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheTxLoadingConcurrentGridStartSelfTestAllowOverwrite.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridPartitionedBackupLoadSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheGetReadFromBackupFailoverTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedLoadCacheSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedEventSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionNotLoadedEventSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtEvictionsDisabledSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheNearEvictionEventSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheAtomicNearEvictionEventSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedEvictionSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedTopologyChangeSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedUnloadEventsSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedSupplyEventsSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedOptimisticTransactionSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheAtomicMessageCountSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheNearPartitionedClearSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheOffheapUpdateSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheNearClientHitTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheNearDynamicStartTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheNearPrimarySyncSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedPrimarySyncSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCachePartitionMapUpdateTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheClientNodePartitionsExchangeTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheClientNodeChangingTopologyTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheServerNodeConcurrentStart.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCachePartitionMapUpdateSafeLossPolicyTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheEntryProcessorNodeJoinTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteAtomicCacheEntryProcessorNodeJoinTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheNearTxForceKeyTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CrossCacheTxRandomOperationsTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CrossCacheTxNearEnabledRandomOperationsTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheAndNodeStop.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, NearCacheSyncUpdateTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheEnumOperationsSingleNodeTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheEnumOperationsTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheIncrementTxTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCachePartitionedBackupNodeFailureRecoveryTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheVariableTopologySelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteNoCustomEventsOnNodeStart.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheExchangeMessageDuplicatedStateTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteContinuousQueryMetadataUpdateTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, NearCacheMultithreadedUpdateTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, NearCachePutAllMultinodeTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteOnePhaseCommitInvokeTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheNoSyncForGetTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheNearTxRollbackTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheContainsKeyNearSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheContainsKeyColocatedSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheContainsKeyNearAtomicSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheContainsKeyColocatedAtomicSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteOnePhaseCommitNearReadersTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteNearClientCacheCloseTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteClientCacheStartFailoverTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheOptimisticTransactionsWithFilterSingleServerTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheOptimisticTransactionsWithFilterTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, NonAffinityCoordinatorDynamicStartStopTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheClearDuringRebalanceTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, GridCacheColocatedDebugTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheDhtAtomicEvictionNearReadersSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheDhtEvictionNearReadersSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheDhtPreloadMessageCountTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionedNearDisabledMetricsSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCrossCacheTxNearEnabledSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteTxConsistencyColocatedRestartSelfTest.class, ignoredTests);
// Configuration validation
- GridTestUtils.addTestIfNeeded(suite, CacheConfigurationLeakTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheGroupLocalConfigurationSelfTest.class, ignoredTests);
// Affinity and collocation
@@ -338,22 +204,16 @@
GridTestUtils.addTestIfNeeded(suite, GridCacheReplicatedJobExecutionTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, RendezvousAffinityFunctionExcludeNeighborsSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, RendezvousAffinityFunctionFastPowerOfTwoHashSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, RendezvousAffinityFunctionStandardHashSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheRendezvousAffinityClientSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, RendezvousAffinityFunctionBackupFilterSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClusterNodeAttributeAffinityBackupFilterSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, ClusterNodeAttributeColocatedBackupFilterSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, MdcAffinityBackupFilterSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, MdcCacheMetricsTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CachePartitionStateTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheComparatorTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CachePartitionPartialCountersMapSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteReflectionFactorySelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, NoPresentCacheInterceptorOnClientTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheDetectLostPartitionsTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TransactionValidationTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, RebalanceIteratorLargeEntriesOOMTest.class, ignoredTests);
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite4.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite4.java
index bce6d55..5cd4940 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite4.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite4.java
@@ -20,128 +20,70 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.apache.ignite.cache.store.CacheStoreListenerRWThroughDisabledAtomicCacheTest;
import org.apache.ignite.cache.store.CacheStoreListenerRWThroughDisabledTransactionalCacheTest;
-import org.apache.ignite.cache.store.CacheStoreSessionListenerLifecycleSelfTest;
import org.apache.ignite.cache.store.CacheStoreSessionListenerWriteBehindEnabledTest;
-import org.apache.ignite.cache.store.CacheStoreWithIgniteTxFailureTest;
-import org.apache.ignite.cache.store.jdbc.CacheJdbcStoreSessionListenerSelfTest;
-import org.apache.ignite.internal.processors.GridCacheTxLoadFromStoreOnLockSelfTest;
import org.apache.ignite.internal.processors.cache.CacheClientStoreSelfTest;
import org.apache.ignite.internal.processors.cache.CacheConnectionLeakStoreTxTest;
-import org.apache.ignite.internal.processors.cache.CacheEventWithTxLabelTest;
-import org.apache.ignite.internal.processors.cache.CacheGetEntryOptimisticReadCommittedSelfTest;
-import org.apache.ignite.internal.processors.cache.CacheGetEntryOptimisticRepeatableReadSelfTest;
import org.apache.ignite.internal.processors.cache.CacheGetEntryOptimisticSerializableSelfTest;
import org.apache.ignite.internal.processors.cache.CacheGetEntryPessimisticReadCommittedSelfTest;
-import org.apache.ignite.internal.processors.cache.CacheGetEntryPessimisticRepeatableReadSelfTest;
import org.apache.ignite.internal.processors.cache.CacheGetEntryPessimisticSerializableSelfTest;
-import org.apache.ignite.internal.processors.cache.CacheGetRemoveSkipStoreTest;
import org.apache.ignite.internal.processors.cache.CacheOffheapMapEntrySelfTest;
-import org.apache.ignite.internal.processors.cache.CacheReadThroughAtomicRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheOperationContextTransactionalLockTest;
import org.apache.ignite.internal.processors.cache.CacheReadThroughReplicatedAtomicRestartSelfTest;
import org.apache.ignite.internal.processors.cache.CacheReadThroughReplicatedRestartSelfTest;
import org.apache.ignite.internal.processors.cache.CacheReadThroughRestartSelfTest;
-import org.apache.ignite.internal.processors.cache.CacheRemoveAllSelfTest;
-import org.apache.ignite.internal.processors.cache.CacheStopAndDestroySelfTest;
-import org.apache.ignite.internal.processors.cache.CacheStoreUsageMultinodeDynamicStartAtomicTest;
import org.apache.ignite.internal.processors.cache.CacheStoreUsageMultinodeDynamicStartTxTest;
-import org.apache.ignite.internal.processors.cache.CacheStoreUsageMultinodeStaticStartAtomicTest;
import org.apache.ignite.internal.processors.cache.CacheStoreUsageMultinodeStaticStartTxTest;
import org.apache.ignite.internal.processors.cache.CacheTxNotAllowReadFromBackupTest;
-import org.apache.ignite.internal.processors.cache.CrossCacheLockTest;
-import org.apache.ignite.internal.processors.cache.GridCacheMarshallingNodeJoinSelfTest;
+import org.apache.ignite.internal.processors.cache.CacheVersionedEntryTransactionalLockTest;
import org.apache.ignite.internal.processors.cache.GridCacheMultinodeUpdateAtomicNearEnabledSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheMultinodeUpdateAtomicSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheMultinodeUpdateNearEnabledNoBackupsSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheMultinodeUpdateNearEnabledSelfTest;
-import org.apache.ignite.internal.processors.cache.GridCacheMultinodeUpdateSelfTest;
-import org.apache.ignite.internal.processors.cache.GridCacheProcessorActiveTxTest;
-import org.apache.ignite.internal.processors.cache.GridCacheStoreManagerDeserializationTest;
import org.apache.ignite.internal.processors.cache.GridCacheVersionMultinodeTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicCopyOnReadDisabledTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicNearEnabledStoreValueTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicNearPeekModesTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicPeekModesTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicReplicatedPeekModesTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheAtomicStoreValueTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheConfigurationDefaultTemplateTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheConfigurationTemplateTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheContainsKeyAtomicTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheDynamicStopSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheInvokeReadThroughSingleNodeTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheInvokeReadThroughTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheReadThroughStoreCallTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheStartTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheTxCopyOnReadDisabledTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheTxNearEnabledStoreValueTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheTxNearPeekModesTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheTxPeekModesTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheTxPreloadNoWriteTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheTxReplicatedPeekModesTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheTxStoreValueTest;
-import org.apache.ignite.internal.processors.cache.IgniteClientCacheInitializationFailTest;
-import org.apache.ignite.internal.processors.cache.IgniteDiscoDataHandlingInNewClusterTest;
import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheFilterTest;
import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheMultinodeTest;
-import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartCoordinatorFailoverTest;
import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartFailTest;
-import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartNoExchangeTimeoutTest;
-import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheStartStopConcurrentTest;
import org.apache.ignite.internal.processors.cache.IgniteDynamicCacheWithConfigStartSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteDynamicClientCacheStartSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteExchangeFutureHistoryTest;
-import org.apache.ignite.internal.processors.cache.IgniteInternalCacheTypesTest;
import org.apache.ignite.internal.processors.cache.IgniteStartCacheInTransactionSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteSystemCacheOnClientTest;
+import org.apache.ignite.internal.processors.cache.LockTxEntryOneNodeTest;
import org.apache.ignite.internal.processors.cache.MarshallerCacheJobRunNodeRestartTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheAffinityEarlyTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheDirectoryNameTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheDiscoveryDataConcurrentJoinTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheGetFutureHangsSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheGroupsPreloadTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheNoValueClassOnServerNodeTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheResultIsNotNullOnPartitionLossTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheStartOnJoinTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheCreatePutMultiNodeSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheCreatePutTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheFailedUpdateResponseTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheReadFromBackupTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheSingleGetMessageTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.GridCacheDhtTxPreloadSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCacheLockFailoverSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCacheMultiTxLockSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteCrossCacheTxSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.GridCacheNearTxPreloadSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheNearOnlyTxTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheNearReadCommittedTest;
-import org.apache.ignite.internal.processors.cache.distributed.replicated.GridReplicatedTxPreloadTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLoadAllTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicLoaderWriterTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNearEnabledNoLoadPreviousValueTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNearEnabledNoReadThroughTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNearEnabledNoWriteThroughTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNoLoadPreviousValueTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNoReadThroughTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicNoWriteThroughTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicStoreSessionTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheAtomicStoreSessionWriteBehindTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheJdbcBlobStoreNodeRestartTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxLoadAllTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxLoaderWriterTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNearEnabledNoLoadPreviousValueTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNearEnabledNoReadThroughTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNearEnabledNoWriteThroughTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNoLoadPreviousValueTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNoReadThroughTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxNoWriteThroughTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxStoreSessionTest;
import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxStoreSessionWriteBehindCoalescingTest;
-import org.apache.ignite.internal.processors.cache.integration.IgniteCacheTxStoreSessionWriteBehindTest;
import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryPartitionedAtomicSelfTest;
-import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryPartitionedTransactionalSelfTest;
-import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryReplicatedAtomicSelfTest;
import org.apache.ignite.internal.processors.cache.version.CacheVersionedEntryReplicatedTransactionalSelfTest;
import org.apache.ignite.internal.processors.query.ScanQueriesTopologyMappingTest;
import org.apache.ignite.testframework.GridTestUtils;
@@ -154,7 +96,7 @@
@RunWith(DynamicSuite.class)
public class IgniteCacheTestSuite4 {
/**
- * @return IgniteCache test suite.
+ * @return Test suite.
*/
public static List<Class<?>> suite() {
return suite(null);
@@ -167,171 +109,72 @@
public static List<Class<?>> suite(Collection<Class> ignoredTests) {
List<Class<?>> suite = new ArrayList<>();
- // Multi node update.
- GridTestUtils.addTestIfNeeded(suite, GridCacheMultinodeUpdateSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheMultinodeUpdateNearEnabledSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheMultinodeUpdateNearEnabledNoBackupsSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheMultinodeUpdateAtomicSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheMultinodeUpdateAtomicNearEnabledSelfTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicLoadAllTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxLoadAllTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicLoaderWriterTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxLoaderWriterTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicStoreSessionTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxStoreSessionTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicStoreSessionWriteBehindTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxStoreSessionWriteBehindTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxStoreSessionWriteBehindCoalescingTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNoReadThroughTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearEnabledNoReadThroughTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNoReadThroughTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNearEnabledNoReadThroughTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheGetRemoveSkipStoreTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNoLoadPreviousValueTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearEnabledNoLoadPreviousValueTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNoLoadPreviousValueTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNearEnabledNoLoadPreviousValueTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNoWriteThroughTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearEnabledNoWriteThroughTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNoWriteThroughTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNearEnabledNoWriteThroughTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicPeekModesTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearPeekModesTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicReplicatedPeekModesTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxPeekModesTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNearPeekModesTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxReplicatedPeekModesTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteCacheInvokeReadThroughSingleNodeTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheInvokeReadThroughTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheReadThroughStoreCallTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheVersionMultinodeTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheNearReadCommittedTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicCopyOnReadDisabledTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxCopyOnReadDisabledTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxPreloadNoWriteTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheMultinodeTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartFailTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartCoordinatorFailoverTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheWithConfigStartSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheDynamicStopSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartStopConcurrentTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheConfigurationTemplateTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheConfigurationDefaultTemplateTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteDynamicClientCacheStartSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheStartNoExchangeTimeoutTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheAffinityEarlyTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheCreatePutMultiNodeSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheCreatePutTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheStartOnJoinTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheStartTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteDiscoDataHandlingInNewClusterTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheDiscoveryDataConcurrentJoinTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteClientCacheInitializationFailTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, ScanQueriesTopologyMappingTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheFailedUpdateResponseTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, GridCacheTxLoadFromStoreOnLockSelfTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, GridCacheMarshallingNodeJoinSelfTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteCacheJdbcBlobStoreNodeRestartTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicStoreValueTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheAtomicNearEnabledStoreValueTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxStoreValueTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxNearEnabledStoreValueTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheLockFailoverSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheMultiTxLockSelfTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteInternalCacheTypesTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteExchangeFutureHistoryTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheNoValueClassOnServerNodeTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteSystemCacheOnClientTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheRemoveAllSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheGetEntryOptimisticReadCommittedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheGetEntryOptimisticRepeatableReadSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheGetEntryOptimisticSerializableSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheGetEntryPessimisticReadCommittedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheGetEntryPessimisticRepeatableReadSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheGetEntryPessimisticSerializableSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheTxNotAllowReadFromBackupTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheStopAndDestroySelfTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, CacheOffheapMapEntrySelfTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheJdbcStoreSessionListenerSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheStoreSessionListenerLifecycleSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheStoreListenerRWThroughDisabledAtomicCacheTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheStoreListenerRWThroughDisabledTransactionalCacheTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheStoreSessionListenerWriteBehindEnabledTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheStoreWithIgniteTxFailureTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, CacheClientStoreSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheStoreUsageMultinodeStaticStartAtomicTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheStoreUsageMultinodeStaticStartTxTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheStoreUsageMultinodeDynamicStartAtomicTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheStoreUsageMultinodeDynamicStartTxTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheConnectionLeakStoreTxTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, GridCacheStoreManagerDeserializationTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteStartCacheInTransactionSelfTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, CacheReadThroughRestartSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheReadThroughReplicatedRestartSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheReadThroughReplicatedAtomicRestartSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheReadThroughAtomicRestartSelfTest.class, ignoredTests);
-
- // Versioned entry tests
GridTestUtils.addTestIfNeeded(suite, CacheVersionedEntryPartitionedAtomicSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheVersionedEntryPartitionedTransactionalSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheVersionedEntryReplicatedAtomicSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheVersionedEntryReplicatedTransactionalSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheVersionedEntryTransactionalLockTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, LockTxEntryOneNodeTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, CacheOperationContextTransactionalLockTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheDhtTxPreloadSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, GridCacheNearTxPreloadSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridReplicatedTxPreloadTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheGroupsPreloadTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteDynamicCacheFilterTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CrossCacheLockTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCrossCacheTxSelfTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheGetFutureHangsSelfTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheSingleGetMessageTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheReadFromBackupTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, MarshallerCacheJobRunNodeRestartTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheNearOnlyTxTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheContainsKeyAtomicTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheResultIsNotNullOnPartitionLossTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheEventWithTxLabelTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, GridCacheProcessorActiveTxTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, CacheDirectoryNameTest.class, ignoredTests);
return suite;
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
index 86735b1..cc42656 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite5.java
@@ -20,36 +20,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.apache.ignite.internal.processors.cache.CacheCreateDestroyClusterReadOnlyModeTest;
-import org.apache.ignite.internal.processors.cache.CacheKeepBinaryTransactionTest;
-import org.apache.ignite.internal.processors.cache.CacheNearReaderUpdateTest;
-import org.apache.ignite.internal.processors.cache.CacheRebalancingSelfTest;
import org.apache.ignite.internal.processors.cache.CacheSerializableTransactionsTest;
-import org.apache.ignite.internal.processors.cache.ClusterActivationFailureTest;
-import org.apache.ignite.internal.processors.cache.ClusterReadOnlyModeTest;
-import org.apache.ignite.internal.processors.cache.ClusterStateClientPartitionedSelfTest;
-import org.apache.ignite.internal.processors.cache.ClusterStateClientReplicatedSelfTest;
-import org.apache.ignite.internal.processors.cache.ClusterStateNoRebalancePartitionedTest;
-import org.apache.ignite.internal.processors.cache.ClusterStateNoRebalanceReplicatedTest;
-import org.apache.ignite.internal.processors.cache.ClusterStatePartitionedSelfTest;
-import org.apache.ignite.internal.processors.cache.ClusterStateReplicatedSelfTest;
-import org.apache.ignite.internal.processors.cache.EntryVersionConsistencyReadThroughTest;
-import org.apache.ignite.internal.processors.cache.IgniteCachePutStackOverflowSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheStoreCollectionTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentNodeJoinValidationTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheLateAffinityAssignmentTest;
-import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeCellularSwitchComplexOperationsTest;
-import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeCellularSwitchIsolationTest;
-import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeCellularSwitchTxContinuationTest;
-import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeCellularSwitchTxCountersTest;
-import org.apache.ignite.internal.processors.cache.distributed.GridExchangeFreeSwitchTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheGroupsPartitionLossPolicySelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCachePartitionLossPolicySelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheTxIteratorSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.CacheManualRebalancingTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.RebalanceMetricsTest;
-import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheSyncRebalanceModeSelfTest;
-import org.apache.ignite.internal.processors.cache.store.IgniteCacheWriteBehindNoUpdateSelfTest;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.DynamicSuite;
import org.junit.runner.RunWith;
@@ -74,40 +45,6 @@
List<Class<?>> suite = new ArrayList<>();
GridTestUtils.addTestIfNeeded(suite, CacheSerializableTransactionsTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheNearReaderUpdateTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheStoreCollectionTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheWriteBehindNoUpdateSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCachePutStackOverflowSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheKeepBinaryTransactionTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheLateAffinityAssignmentTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheLateAffinityAssignmentNodeJoinValidationTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeSwitchTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeCellularSwitchComplexOperationsTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeCellularSwitchIsolationTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeCellularSwitchTxContinuationTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridExchangeFreeCellularSwitchTxCountersTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, EntryVersionConsistencyReadThroughTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheSyncRebalanceModeSelfTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheTxIteratorSelfTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, ClusterStatePartitionedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClusterStateClientPartitionedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClusterStateNoRebalancePartitionedTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClusterStateReplicatedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClusterStateClientReplicatedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClusterStateNoRebalanceReplicatedTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClusterReadOnlyModeTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClusterActivationFailureTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheCreateDestroyClusterReadOnlyModeTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCachePartitionLossPolicySelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheGroupsPartitionLossPolicySelfTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheRebalancingSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheManualRebalancingTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, RebalanceMetricsTest.class, ignoredTests);
return suite;
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java
index c99a42e..2b29ca6 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite6.java
@@ -26,53 +26,29 @@
import org.apache.ignite.internal.processors.cache.ClientFastReplyCoordinatorFailureTest;
import org.apache.ignite.internal.processors.cache.IgniteOutOfMemoryPropagationTest;
import org.apache.ignite.internal.processors.cache.PartitionedAtomicCacheGetsDistributionTest;
-import org.apache.ignite.internal.processors.cache.PartitionedTransactionalOptimisticCacheGetsDistributionTest;
import org.apache.ignite.internal.processors.cache.PartitionedTransactionalPessimisticCacheGetsDistributionTest;
import org.apache.ignite.internal.processors.cache.PartitionsExchangeCoordinatorFailoverTest;
-import org.apache.ignite.internal.processors.cache.ReplicatedAtomicCacheGetsDistributionTest;
-import org.apache.ignite.internal.processors.cache.ReplicatedTransactionalOptimisticCacheGetsDistributionTest;
-import org.apache.ignite.internal.processors.cache.ReplicatedTransactionalPessimisticCacheGetsDistributionTest;
import org.apache.ignite.internal.processors.cache.SysCacheInconsistencyInternalKeyTest;
import org.apache.ignite.internal.processors.cache.datastructures.IgniteExchangeLatchManagerCoordinatorFailTest;
-import org.apache.ignite.internal.processors.cache.datastructures.IgniteExchangeLatchManagerDiscoHistoryTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheClientsConcurrentStartTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheExchangeMergeMdcTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheExchangeMergeTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheParallelStartTest;
import org.apache.ignite.internal.processors.cache.distributed.CachePartitionLossWithRestartsTest;
-import org.apache.ignite.internal.processors.cache.distributed.CacheTryLockMultithreadedTest;
import org.apache.ignite.internal.processors.cache.distributed.ExchangeMergeStaleServerNodesTest;
import org.apache.ignite.internal.processors.cache.distributed.GridCachePartitionEvictionDuringReadThroughSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheClientMultiNodeUpdateTopologyLockTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheMultiClientsStartTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCacheThreadLocalTxTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteOptimisticTxSuspendResumeTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgnitePessimisticTxSuspendResumeTest;
import org.apache.ignite.internal.processors.cache.distributed.OnePhaseCommitAndNodeLeftTest;
import org.apache.ignite.internal.processors.cache.distributed.PartitionsExchangeAwareTest;
-import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.latch.ExchangeLatchManagerTest;
import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingOrderingTest;
import org.apache.ignite.internal.processors.cache.transactions.StartImplicitlyTxOnStopCacheTest;
import org.apache.ignite.internal.processors.cache.transactions.TransactionContextCleanupTest;
import org.apache.ignite.internal.processors.cache.transactions.TxLabelTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxMultiCacheAsyncOpsTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxOnCachesStartTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxOnCachesStopTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxOptimisticOnPartitionExchangeTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxOptimisticPrepareOnUnstableTopologyTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxOptimisticReadThroughTest;
import org.apache.ignite.internal.processors.cache.transactions.TxRollbackAsyncNearCacheTest;
import org.apache.ignite.internal.processors.cache.transactions.TxRollbackAsyncTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxRollbackDuringPreparingTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnIncorrectParamsTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnMapOnInvalidTopologyTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutNearCacheTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutNoDeadlockDetectionTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutOnePhaseCommitTest;
import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTimeoutTest;
import org.apache.ignite.internal.processors.cache.transactions.TxRollbackOnTopologyChangeTest;
import org.apache.ignite.internal.processors.cache.transactions.TxSavepointItTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxStateChangeEventTest;
import org.apache.ignite.internal.processors.cache.transactions.TxTimeoutOnInitializationTest;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.DynamicSuite;
@@ -99,62 +75,32 @@
GridTestUtils.addTestIfNeeded(suite, GridCachePartitionEvictionDuringReadThroughSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteOptimisticTxSuspendResumeTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgnitePessimisticTxSuspendResumeTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheExchangeMergeTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheExchangeMergeMdcTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, OnePhaseCommitAndNodeLeftTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, PendingExchangeTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, ExchangeMergeStaleServerNodesTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, ClientFastReplyCoordinatorFailureTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxRollbackOnTimeoutTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxRollbackOnTimeoutNoDeadlockDetectionTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxRollbackOnTimeoutNearCacheTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheThreadLocalTxTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxRollbackAsyncTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxRollbackAsyncNearCacheTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxRollbackOnTopologyChangeTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxRollbackOnTimeoutOnePhaseCommitTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxTimeoutOnInitializationTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxOptimisticPrepareOnUnstableTopologyTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, TxLabelTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxRollbackOnIncorrectParamsTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxSavepointItTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxStateChangeEventTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, TxMultiCacheAsyncOpsTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, TxOnCachesStartTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxOnCachesStopTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheMultiClientsStartTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteOutOfMemoryPropagationTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheIgniteOutOfMemoryExceptionTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ReplicatedAtomicCacheGetsDistributionTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ReplicatedTransactionalOptimisticCacheGetsDistributionTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ReplicatedTransactionalPessimisticCacheGetsDistributionTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, PartitionedAtomicCacheGetsDistributionTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, PartitionedTransactionalOptimisticCacheGetsDistributionTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, PartitionedTransactionalPessimisticCacheGetsDistributionTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxOptimisticOnPartitionExchangeTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, TxOptimisticReadThroughTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, IgniteExchangeLatchManagerCoordinatorFailTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteExchangeLatchManagerDiscoHistoryTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ExchangeLatchManagerTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, PartitionsExchangeCoordinatorFailoverTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CacheTryLockMultithreadedTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheParallelStartTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheNoAffinityExchangeTest.class, ignoredTests);
@@ -164,14 +110,10 @@
GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingOrderingTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheClientMultiNodeUpdateTopologyLockTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxRollbackOnMapOnInvalidTopologyTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, PartitionsExchangeAwareTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, SysCacheInconsistencyInternalKeyTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxRollbackDuringPreparingTest.class, ignoredTests);
-
GridTestUtils.addTestIfNeeded(suite, StartImplicitlyTxOnStopCacheTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TransactionContextCleanupTest.class, ignoredTests);
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite8.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite8.java
index 7e238e8..2c0d0a7 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite8.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite8.java
@@ -20,20 +20,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.apache.ignite.cache.ClientCreateCacheGroupOnJoinNodeMapsTest;
-import org.apache.ignite.internal.processors.cache.CacheStoreTxPutAllMultiNodeTest;
-import org.apache.ignite.internal.processors.cache.GridCacheOrderedPreloadingSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCachePutKeyAttachedBinaryObjectTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRabalancingDelayedPartitionMapExchangeSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalanceOrderTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingAsyncSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingCancelTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingSyncCheckDataTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingSyncSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.GridCacheRebalancingUnmarshallingFailedSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.rebalancing.MultiDcRebalancingTest;
-import org.apache.ignite.internal.processors.cache.persistence.CleanupRestoredCachesSlowTest;
-import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.DynamicSuite;
import org.junit.runner.RunWith;
@@ -62,30 +48,9 @@
// Topology validator.
suite.addAll(IgniteTopologyValidatorTestSuite.suite(ignoredTests));
- // Eviction.
- suite.addAll(IgniteCacheEvictionSelfTestSuite.suite(ignoredTests));
-
// Iterators.
suite.addAll(IgniteCacheIteratorsSelfTestSuite.suite(ignoredTests));
- // Rebalancing.
- GridTestUtils.addTestIfNeeded(suite, GridCacheOrderedPreloadingSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheRebalanceOrderTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingSyncSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingSyncCheckDataTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingUnmarshallingFailedSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingAsyncSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheRabalancingDelayedPartitionMapExchangeSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, GridCacheRebalancingCancelTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, MultiDcRebalancingTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CacheStoreTxPutAllMultiNodeTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, CleanupRestoredCachesSlowTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, ClientCreateCacheGroupOnJoinNodeMapsTest.class, ignoredTests);
-
- GridTestUtils.addTestIfNeeded(suite, IgniteCachePutKeyAttachedBinaryObjectTest.class, ignoredTests);
-
return suite;
}
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite9.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite9.java
index 0ff129f..af9336b 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite9.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteCacheTestSuite9.java
@@ -20,31 +20,18 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.apache.ignite.internal.processors.cache.CachePutIfAbsentTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheGetCustomCollectionsSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheLoadRebalanceEvictionSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheAtomicPrimarySyncBackPressureTest;
import org.apache.ignite.internal.processors.cache.distributed.CacheOperationsInterruptTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteCachePrimarySyncTest;
-import org.apache.ignite.internal.processors.cache.distributed.IgniteTxCachePrimarySyncTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteTxCacheWriteSynchronizationModesMultithreadedTest;
import org.apache.ignite.internal.processors.cache.distributed.IgniteTxConcurrentRemoveObjectsTest;
-import org.apache.ignite.internal.processors.cache.transactions.PartitionUpdateCounterTest;
import org.apache.ignite.internal.processors.cache.transactions.TxCrossCachePartitionConsistencyTest;
import org.apache.ignite.internal.processors.cache.transactions.TxDataConsistencyOnCommitFailureTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateConsistencyHistoryRebalanceTest;
import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateConsistencyNoopInvokeTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateConsistencyTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateConsistencyVolatileRebalanceTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryOneBackupHistoryRebalanceTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryOneBackupTest;
import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryTwoBackupsFailAllHistoryRebalanceTest;
import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryTwoBackupsFailAllTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryTwoBackupsHistoryRebalanceTest;
import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateOnePrimaryTwoBackupsTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStatePutTest;
import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateTwoPrimaryTwoBackupsTest;
-import org.apache.ignite.internal.processors.cache.transactions.TxPartitionCounterStateWithFilterTest;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.DynamicSuite;
import org.junit.runner.RunWith;
@@ -68,12 +55,8 @@
public static List<Class<?>> suite(Collection<Class> ignoredTests) {
List<Class<?>> suite = new ArrayList<>();
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheGetCustomCollectionsSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteCacheLoadRebalanceEvictionSelfTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCachePrimarySyncTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteTxCachePrimarySyncTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteTxCacheWriteSynchronizationModesMultithreadedTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, CachePutIfAbsentTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, CacheAtomicPrimarySyncBackPressureTest.class, ignoredTests);
@@ -84,19 +67,10 @@
GridTestUtils.addTestIfNeeded(suite, CacheOperationsInterruptTest.class, ignoredTests);
// Update counters and historical rebalance.
- GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryOneBackupHistoryRebalanceTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryOneBackupTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryTwoBackupsFailAllHistoryRebalanceTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryTwoBackupsFailAllTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryTwoBackupsHistoryRebalanceTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateOnePrimaryTwoBackupsTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStatePutTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateTwoPrimaryTwoBackupsTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateWithFilterTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, PartitionUpdateCounterTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateConsistencyTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateConsistencyHistoryRebalanceTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateConsistencyVolatileRebalanceTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxCrossCachePartitionConsistencyTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, TxPartitionCounterStateConsistencyNoopInvokeTest.class, ignoredTests);
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite.java
index 83a0f0e..1c5c0b9 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite.java
@@ -21,11 +21,6 @@
import java.util.Collection;
import java.util.List;
import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteClusterSnapshotSelfTest;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManagerSelfTest;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotRemoteRequestTest;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotRestoreFromRemoteMdcTest;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotRestoreFromRemoteTest;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotWithMetastorageTest;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.DynamicSuite;
import org.junit.runner.RunWith;
@@ -45,10 +40,5 @@
/** */
public static void addSnapshotTests(List<Class<?>> suite, Collection<Class> ignoredTests) {
GridTestUtils.addTestIfNeeded(suite, IgniteClusterSnapshotSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotManagerSelfTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotRemoteRequestTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotRestoreFromRemoteMdcTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotRestoreFromRemoteTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotWithMetastorageTest.class, ignoredTests);
}
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite2.java
index 7116588..6432a80 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite2.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite2.java
@@ -20,8 +20,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteClusterSnapshotCheckTest;
-import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteClusterSnapshotHandlerTest;
import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteClusterSnapshotRestoreSelfTest;
import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotMXBeanTest;
import org.apache.ignite.testframework.GridTestUtils;
@@ -43,8 +41,6 @@
/** */
public static void addSnapshotTests1(List<Class<?>> suite, Collection<Class> ignoredTests) {
- GridTestUtils.addTestIfNeeded(suite, IgniteClusterSnapshotCheckTest.class, ignoredTests);
- GridTestUtils.addTestIfNeeded(suite, IgniteClusterSnapshotHandlerTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotMXBeanTest.class, ignoredTests);
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite4.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite4.java
index 633db0b..86131e3 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite4.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite4.java
@@ -25,6 +25,7 @@
import org.apache.ignite.internal.processors.cache.persistence.snapshot.dump.IgniteCacheDumpFilterTest;
import org.apache.ignite.internal.processors.cache.persistence.snapshot.dump.IgniteCacheDumpSelf2Test;
import org.apache.ignite.internal.processors.cache.persistence.snapshot.dump.IgniteCacheDumpSelfTest;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.dump.IgniteCacheDumpSeveralDiskTest;
import org.apache.ignite.internal.processors.cache.persistence.snapshot.dump.IgniteConcurrentCacheDumpTest;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.DynamicSuite;
@@ -50,5 +51,6 @@
GridTestUtils.addTestIfNeeded(suite, IgniteConcurrentCacheDumpTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, IgniteCacheDumpFilterTest.class, ignoredTests);
GridTestUtils.addTestIfNeeded(suite, BufferedFileIOTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteCacheDumpSeveralDiskTest.class, ignoredTests);
}
}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite7.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite7.java
new file mode 100644
index 0000000..e8cb24c
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite7.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManagerSelfTest;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotRemoteRequestTest;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotRestoreFromRemoteMdcTest;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotRestoreFromRemoteTest;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotWithMetastorageTest;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.DynamicSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * Split off from {@link IgniteSnapshotTestSuite} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(DynamicSuite.class)
+public class IgniteSnapshotTestSuite7 {
+ /**
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite() {
+ return suite(null);
+ }
+
+ /**
+ * @param ignoredTests Tests to ignore.
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite(Collection<Class> ignoredTests) {
+ List<Class<?>> suite = new ArrayList<>();
+
+ GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotManagerSelfTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotRemoteRequestTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotRestoreFromRemoteMdcTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotRestoreFromRemoteTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteSnapshotWithMetastorageTest.class, ignoredTests);
+
+ return suite;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite8.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite8.java
new file mode 100644
index 0000000..5673ed2
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSnapshotTestSuite8.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteClusterSnapshotCheckTest;
+import org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteClusterSnapshotHandlerTest;
+import org.apache.ignite.testframework.GridTestUtils;
+import org.apache.ignite.testframework.junits.DynamicSuite;
+import org.junit.runner.RunWith;
+
+/**
+ * Split off from {@link IgniteSnapshotTestSuite2} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(DynamicSuite.class)
+public class IgniteSnapshotTestSuite8 {
+ /**
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite() {
+ return suite(null);
+ }
+
+ /**
+ * @param ignoredTests Tests to ignore.
+ * @return Test suite.
+ */
+ public static List<Class<?>> suite(Collection<Class> ignoredTests) {
+ List<Class<?>> suite = new ArrayList<>();
+
+ GridTestUtils.addTestIfNeeded(suite, IgniteClusterSnapshotCheckTest.class, ignoredTests);
+ GridTestUtils.addTestIfNeeded(suite, IgniteClusterSnapshotHandlerTest.class, ignoredTests);
+
+ return suite;
+ }
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
index 5b85617..517d528 100644
--- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite.java
@@ -18,75 +18,39 @@
package org.apache.ignite.testsuites;
import org.apache.ignite.internal.IgniteDiscoveryMassiveNodeFailTest;
-import org.apache.ignite.spi.ExponentialBackoffTimeoutStrategyTest;
import org.apache.ignite.spi.GridTcpSpiForwardingSelfTest;
import org.apache.ignite.spi.discovery.AuthenticationRestartTest;
-import org.apache.ignite.spi.discovery.DiscoverySpiDataExchangeTest;
-import org.apache.ignite.spi.discovery.FilterDataForClientNodeDiscoveryTest;
-import org.apache.ignite.spi.discovery.IgniteClientReconnectEventHandlingTest;
-import org.apache.ignite.spi.discovery.IgniteDiscoveryCacheReuseSelfTest;
-import org.apache.ignite.spi.discovery.LongClientConnectToClusterTest;
import org.apache.ignite.spi.discovery.datacenter.MultiDataCenterClientRoutingTest;
import org.apache.ignite.spi.discovery.datacenter.MultiDataCenterDeploymentTest;
import org.apache.ignite.spi.discovery.tcp.DiscoveryClientSocketTest;
-import org.apache.ignite.spi.discovery.tcp.DiscoveryDeserializationExceptionTest;
import org.apache.ignite.spi.discovery.tcp.DiscoverySerializationExceptionTest;
-import org.apache.ignite.spi.discovery.tcp.DiscoveryUnmarshalVulnerabilityTest;
-import org.apache.ignite.spi.discovery.tcp.IgniteClientConnectSslTest;
import org.apache.ignite.spi.discovery.tcp.IgniteClientConnectTest;
import org.apache.ignite.spi.discovery.tcp.IgniteClientReconnectMassiveShutdownSslTest;
-import org.apache.ignite.spi.discovery.tcp.IgniteClientReconnectMassiveShutdownTest;
-import org.apache.ignite.spi.discovery.tcp.IgniteMetricsOverflowTest;
-import org.apache.ignite.spi.discovery.tcp.MultiDataCenterRingTest;
-import org.apache.ignite.spi.discovery.tcp.MultiDataCenterSplitTest;
import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoveryMarshallerCheckSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoverySpiCoordinatorChangeTest;
import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoverySpiFailureTimeoutSelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoverySpiMulticastTest;
-import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoverySpiSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoveryUnresolvedHostTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryClientSuspensionSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryConcurrentStartTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryCoordinatorFailureTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryDeadNodeAddressResolvingTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryFailedJoinTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryIpFinderCleanerTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryIpFinderFailureTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryMdcSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryMetricsWarnLogTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryMultiThreadedTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryNetworkIssuesTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryNodeAttributesUpdateOnReconnectTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryNodeConfigConsistentIdSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryNodeConsistentIdSelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryNodeJoinAndFailureTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryPendingMessageDeliveryMdcReversedTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryPendingMessageDeliveryMdcTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryPendingMessageDeliveryTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryReconnectUnstableTopologyTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryRestartTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySegmentationPolicyTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySnapshotHistoryTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiConfigSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiFailureTimeoutSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiMBeanTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiReconnectDelayTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiSslSelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiStartStopSelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiWildcardSelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySslParametersTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySslSecuredUnsecuredTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySslSelfTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySslTrustedSelfTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySslTrustedUntrustedTest;
-import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryWithAddressFilterTest;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryWithWrongServerTest;
-import org.apache.ignite.spi.discovery.tcp.TestMetricUpdateFailure;
import org.apache.ignite.spi.discovery.tcp.ipfinder.jdbc.TcpDiscoveryJdbcIpFinderSelfTest;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinderSelfTest;
-import org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinderSelfTest;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinderDnsResolveTest;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinderSelfTest;
import org.apache.ignite.testframework.GridTestUtils;
@@ -103,41 +67,22 @@
@Suite.SuiteClasses({
TcpDiscoveryVmIpFinderDnsResolveTest.class,
TcpDiscoveryVmIpFinderSelfTest.class,
- TcpDiscoverySharedFsIpFinderSelfTest.class,
TcpDiscoveryJdbcIpFinderSelfTest.class,
- TcpDiscoveryMulticastIpFinderSelfTest.class,
TcpDiscoveryIpFinderCleanerTest.class,
- TcpDiscoverySelfTest.class,
TcpDiscoverySpiSelfTest.class,
- TcpDiscoverySpiSslSelfTest.class,
TcpDiscoverySpiWildcardSelfTest.class,
- TcpDiscoverySpiFailureTimeoutSelfTest.class,
- TcpDiscoverySpiMBeanTest.class,
TcpDiscoverySpiStartStopSelfTest.class,
TcpDiscoverySpiConfigSelfTest.class,
- TcpDiscoverySnapshotHistoryTest.class,
TcpDiscoveryNodeJoinAndFailureTest.class,
GridTcpSpiForwardingSelfTest.class,
- ExponentialBackoffTimeoutStrategyTest.class,
-
- TcpClientDiscoverySpiSelfTest.class,
- LongClientConnectToClusterTest.class,
TcpClientDiscoveryMarshallerCheckSelfTest.class,
- TcpClientDiscoverySpiCoordinatorChangeTest.class,
TcpClientDiscoverySpiMulticastTest.class,
TcpClientDiscoverySpiFailureTimeoutSelfTest.class,
- TcpClientDiscoveryUnresolvedHostTest.class,
- TcpDiscoveryNodeConsistentIdSelfTest.class,
- TcpDiscoveryNodeConfigConsistentIdSelfTest.class,
-
- TcpDiscoveryRestartTest.class,
TcpDiscoveryMultiThreadedTest.class,
- TcpDiscoveryMetricsWarnLogTest.class,
- TcpDiscoveryConcurrentStartTest.class,
TcpDiscoverySegmentationPolicyTest.class,
@@ -146,65 +91,37 @@
TcpDiscoveryWithWrongServerTest.class,
- TcpDiscoveryWithAddressFilterTest.class,
-
TcpDiscoverySpiReconnectDelayTest.class,
- TcpDiscoveryNetworkIssuesTest.class,
-
IgniteDiscoveryMassiveNodeFailTest.class,
TcpDiscoveryCoordinatorFailureTest.class,
- TestMetricUpdateFailure.class,
-
// Client connect.
IgniteClientConnectTest.class,
- IgniteClientConnectSslTest.class,
- IgniteClientReconnectMassiveShutdownTest.class,
IgniteClientReconnectMassiveShutdownSslTest.class,
TcpDiscoveryClientSuspensionSelfTest.class,
- IgniteClientReconnectEventHandlingTest.class,
TcpDiscoveryFailedJoinTest.class,
// SSL.
- TcpDiscoverySslSelfTest.class,
TcpDiscoverySslTrustedSelfTest.class,
TcpDiscoverySslSecuredUnsecuredTest.class,
- TcpDiscoverySslTrustedUntrustedTest.class,
TcpDiscoverySslParametersTest.class,
// Disco cache reuse.
- IgniteDiscoveryCacheReuseSelfTest.class,
-
- DiscoveryUnmarshalVulnerabilityTest.class,
-
- FilterDataForClientNodeDiscoveryTest.class,
TcpDiscoveryPendingMessageDeliveryTest.class,
TcpDiscoveryReconnectUnstableTopologyTest.class,
- IgniteMetricsOverflowTest.class,
-
DiscoveryClientSocketTest.class,
- DiscoverySpiDataExchangeTest.class,
-
- TcpDiscoveryIpFinderFailureTest.class,
-
- TcpDiscoveryDeadNodeAddressResolvingTest.class,
-
DiscoverySerializationExceptionTest.class,
- DiscoveryDeserializationExceptionTest.class,
// MDC.
TcpDiscoveryMdcSelfTest.class,
TcpDiscoveryPendingMessageDeliveryMdcTest.class,
- TcpDiscoveryPendingMessageDeliveryMdcReversedTest.class,
MultiDataCenterDeploymentTest.class,
- MultiDataCenterRingTest.class,
- MultiDataCenterSplitTest.class,
MultiDataCenterClientRoutingTest.class
})
public class IgniteSpiDiscoverySelfTestSuite {
diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite2.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite2.java
new file mode 100644
index 0000000..c35d838
--- /dev/null
+++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteSpiDiscoverySelfTestSuite2.java
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import org.apache.ignite.spi.ExponentialBackoffTimeoutStrategyTest;
+import org.apache.ignite.spi.discovery.DiscoverySpiDataExchangeTest;
+import org.apache.ignite.spi.discovery.FilterDataForClientNodeDiscoveryTest;
+import org.apache.ignite.spi.discovery.IgniteClientReconnectEventHandlingTest;
+import org.apache.ignite.spi.discovery.IgniteDiscoveryCacheReuseSelfTest;
+import org.apache.ignite.spi.discovery.LongClientConnectToClusterTest;
+import org.apache.ignite.spi.discovery.tcp.DiscoveryDeserializationExceptionTest;
+import org.apache.ignite.spi.discovery.tcp.DiscoveryUnmarshalVulnerabilityTest;
+import org.apache.ignite.spi.discovery.tcp.IgniteClientConnectSslTest;
+import org.apache.ignite.spi.discovery.tcp.IgniteClientReconnectMassiveShutdownTest;
+import org.apache.ignite.spi.discovery.tcp.IgniteMetricsOverflowTest;
+import org.apache.ignite.spi.discovery.tcp.MultiDataCenterRingTest;
+import org.apache.ignite.spi.discovery.tcp.MultiDataCenterSplitTest;
+import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoverySpiCoordinatorChangeTest;
+import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoverySpiSelfTest;
+import org.apache.ignite.spi.discovery.tcp.TcpClientDiscoveryUnresolvedHostTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryConcurrentStartTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryDeadNodeAddressResolvingTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryIpFinderFailureTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryMetricsWarnLogTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryNetworkIssuesTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryNodeConfigConsistentIdSelfTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryNodeConsistentIdSelfTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryPendingMessageDeliveryMdcReversedTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryRestartTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySelfTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySnapshotHistoryTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiFailureTimeoutSelfTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiMBeanTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpiSslSelfTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySslSelfTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySslTrustedUntrustedTest;
+import org.apache.ignite.spi.discovery.tcp.TcpDiscoveryWithAddressFilterTest;
+import org.apache.ignite.spi.discovery.tcp.TestMetricUpdateFailure;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinderSelfTest;
+import org.apache.ignite.spi.discovery.tcp.ipfinder.sharedfs.TcpDiscoverySharedFsIpFinderSelfTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Split off from {@link IgniteSpiDiscoverySelfTestSuite} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ TcpDiscoverySharedFsIpFinderSelfTest.class,
+ TcpDiscoveryMulticastIpFinderSelfTest.class,
+ TcpDiscoverySelfTest.class,
+ TcpDiscoverySpiSslSelfTest.class,
+ TcpDiscoverySpiFailureTimeoutSelfTest.class,
+ TcpDiscoverySpiMBeanTest.class,
+ TcpDiscoverySnapshotHistoryTest.class,
+ ExponentialBackoffTimeoutStrategyTest.class,
+ TcpClientDiscoverySpiSelfTest.class,
+ LongClientConnectToClusterTest.class,
+ TcpClientDiscoverySpiCoordinatorChangeTest.class,
+ TcpClientDiscoveryUnresolvedHostTest.class,
+ TcpDiscoveryNodeConsistentIdSelfTest.class,
+ TcpDiscoveryNodeConfigConsistentIdSelfTest.class,
+ TcpDiscoveryRestartTest.class,
+ TcpDiscoveryMetricsWarnLogTest.class,
+ TcpDiscoveryConcurrentStartTest.class,
+ TcpDiscoveryWithAddressFilterTest.class,
+ TcpDiscoveryNetworkIssuesTest.class,
+ TestMetricUpdateFailure.class,
+ IgniteClientConnectSslTest.class,
+ IgniteClientReconnectMassiveShutdownTest.class,
+ IgniteClientReconnectEventHandlingTest.class,
+ TcpDiscoverySslSelfTest.class,
+ TcpDiscoverySslTrustedUntrustedTest.class,
+ IgniteDiscoveryCacheReuseSelfTest.class,
+ DiscoveryUnmarshalVulnerabilityTest.class,
+ FilterDataForClientNodeDiscoveryTest.class,
+ IgniteMetricsOverflowTest.class,
+ DiscoverySpiDataExchangeTest.class,
+ TcpDiscoveryIpFinderFailureTest.class,
+ TcpDiscoveryDeadNodeAddressResolvingTest.class,
+ DiscoveryDeserializationExceptionTest.class,
+ TcpDiscoveryPendingMessageDeliveryMdcReversedTest.class,
+ MultiDataCenterRingTest.class,
+ MultiDataCenterSplitTest.class,
+})
+public class IgniteSpiDiscoverySelfTestSuite2 {
+}
diff --git a/modules/core/src/test/java/org/apache/ignite/util/GridIntListSelfTest.java b/modules/core/src/test/java/org/apache/ignite/util/GridIntListSelfTest.java
index 095eb32..a516438 100644
--- a/modules/core/src/test/java/org/apache/ignite/util/GridIntListSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/util/GridIntListSelfTest.java
@@ -98,6 +98,18 @@
}
/** */
+ @Test
+ public void testCopyOfRange() {
+ assertEquals(asList(), asList(1).copyOfRange(0, 0));
+ assertEquals(asList(1), asList(1).copyOfRange(0, 1));
+ assertEquals(asList(), asList(1, 2).copyOfRange(1, 1));
+ assertEquals(asList(1), asList(1, 2).copyOfRange(0, 1));
+ assertEquals(asList(2), asList(1, 2).copyOfRange(1, 2));
+ assertEquals(asList(2, 3), asList(1, 2, 3).copyOfRange(1, 3));
+ assertEquals(asList(1, 2), asList(1, 2, 3).copyOfRange(0, 2));
+ }
+
+ /** */
private GridIntList asList(int... vals) {
return new GridIntList(vals);
}
diff --git a/modules/core/src/test/resources/codegen/TestCollectionsMessageSerializer.java b/modules/core/src/test/resources/codegen/TestCollectionsMessageSerializer.java
index 329f334..28444ed 100644
--- a/modules/core/src/test/resources/codegen/TestCollectionsMessageSerializer.java
+++ b/modules/core/src/test/resources/codegen/TestCollectionsMessageSerializer.java
@@ -74,7 +74,7 @@
/** */
private final static MessageCollectionType longArrayListCollDesc = new MessageCollectionType(new MessageItemType(MessageCollectionItemType.LONG_ARR), false);
/** */
- private final static MessageCollectionType messageListCollDesc = new MessageCollectionType(new MessageItemType(MessageCollectionItemType.MSG), false);
+ private final static MessageCollectionType messageListCollDesc = new MessageCollectionType(new MessageItemType(MessageCollectionItemType.GRID_CACHE_VERSION), false);
/** */
private final static MessageCollectionType shortArrayListCollDesc = new MessageCollectionType(new MessageItemType(MessageCollectionItemType.SHORT_ARR), false);
/** */
diff --git a/modules/core/src/test/resources/codegen/TestMapMessageSerializer.java b/modules/core/src/test/resources/codegen/TestMapMessageSerializer.java
index b2e6605..26834fa 100644
--- a/modules/core/src/test/resources/codegen/TestMapMessageSerializer.java
+++ b/modules/core/src/test/resources/codegen/TestMapMessageSerializer.java
@@ -75,7 +75,7 @@
/** */
private final static MessageMapType longArrayIntArrayMapCollDesc = new MessageMapType(new MessageItemType(MessageCollectionItemType.LONG_ARR), new MessageItemType(MessageCollectionItemType.INT_ARR), false);
/** */
- private final static MessageMapType messageBoxedDoubleMapCollDesc = new MessageMapType(new MessageItemType(MessageCollectionItemType.MSG), new MessageItemType(MessageCollectionItemType.DOUBLE), false);
+ private final static MessageMapType messageBoxedDoubleMapCollDesc = new MessageMapType(new MessageItemType(MessageCollectionItemType.GRID_CACHE_VERSION), new MessageItemType(MessageCollectionItemType.DOUBLE), false);
/** */
private final static MessageMapType shortArrayByteArrayMapCollDesc = new MessageMapType(new MessageItemType(MessageCollectionItemType.SHORT_ARR), new MessageItemType(MessageCollectionItemType.BYTE_ARR), false);
/** */
diff --git a/modules/core/src/test/resources/codegen/TestMessageSerializer.java b/modules/core/src/test/resources/codegen/TestMessageSerializer.java
index 825928b..90f8b84 100644
--- a/modules/core/src/test/resources/codegen/TestMessageSerializer.java
+++ b/modules/core/src/test/resources/codegen/TestMessageSerializer.java
@@ -37,7 +37,7 @@
/** */
private final static MessageArrayType strArrCollDesc = new MessageArrayType(new MessageItemType(MessageCollectionItemType.STRING), String.class);
/** */
- private final static MessageArrayType verArrCollDesc = new MessageArrayType(new MessageItemType(MessageCollectionItemType.MSG), GridCacheVersion.class);
+ private final static MessageArrayType verArrCollDesc = new MessageArrayType(new MessageItemType(MessageCollectionItemType.GRID_CACHE_VERSION), GridCacheVersion.class);
/** */
@Override public boolean writeTo(TestMessage msg, MessageWriter writer) {
@@ -80,7 +80,7 @@
writer.incrementState();
case 5:
- if (!writer.writeMessage(msg.ver))
+ if (!writer.writeGridCacheVersion(msg.ver))
return false;
writer.incrementState();
@@ -187,7 +187,7 @@
reader.incrementState();
case 5:
- msg.ver = reader.readMessage();
+ msg.ver = reader.readGridCacheVersion();
if (!reader.isLastRead())
return false;
diff --git a/modules/core/src/test/webapp/WEB-INF/web.xml b/modules/core/src/test/webapp/WEB-INF/web.xml
index e3523c7..a145158 100644
--- a/modules/core/src/test/webapp/WEB-INF/web.xml
+++ b/modules/core/src/test/webapp/WEB-INF/web.xml
@@ -17,11 +17,11 @@
limitations under the License.
-->
-<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+ https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+ version="6.1">
<!-- Declare listener for web sessions caching. -->
<listener>
diff --git a/modules/ducktests/README.md b/modules/ducktests/README.md
index e539db2..3d56ca3 100644
--- a/modules/ducktests/README.md
+++ b/modules/ducktests/README.md
@@ -1,311 +1,312 @@
-# Overview
-The `ignitetest` framework provides basic functionality and services
-to write integration tests for Apache Ignite. This framework bases on
-the `ducktape` test framework, for information about it check the links:
-- https://github.com/confluentinc/ducktape - source code of the `ducktape`.
-- https://ducktape.readthedocs.io/en/latest/index.html - documentation to the `ducktape`.
+# Apache Ignite Integration Test Framework - Ducktests
-Structure of the `tests` directory is:
-- `./ignitetest/services` contains basic services functionality.
-- `./ignitetest/utils` contains utils for testing.
-- `./ignitetest/tests` contains tests.
-- `./checks` contains unit tests of utils, tests' decorators etc.
+The `ignitetest` framework provides basic functionality and services to write integration tests for Apache Ignite. This framework is built on top of the **ducktape** test framework.
+* For core concepts, see the [ducktape source code](https://github.com/confluentinc/ducktape).
+* For framework details, see the [ducktape documentation](https://ducktape.readthedocs.io/en/latest/index.html).
-Some tests (like the CDC replication ones) require modules maintained in the
-separate [ignite-extensions](https://github.com/apache/ignite-extensions) repository.
+### Repository Structure
+All paths below are relative to `${IGNITE_HOME}/modules/ducktests/tests`:
+* `./ignitetest/services`: Contains basic services and cluster orchestration logic.
+* `./ignitetest/utils`: Contains testing helper utilities.
+* `./ignitetest/tests`: Contains the actual integration test scenarios.
+* `./checks`: Contains internal framework unit tests and style decorators.
-To run these tests the `ignite-extensions` working directory should be checked out
-to the same filesystem level next to the `ignite` one. So it should be the below structure
-of directories:
-- `./ignite` working directory checked out from the ignite repository (mentioned as `${IGNITE_HOME}` below)
-- `./ignite-extensions` working directory checked out from the ignite-extensions repository
+---
-The needed extension module should be built before tests run.
+## Quick Start (Local Docker Run)
-For example for the CDC replication tests the `cdc-ext` module should be built as:
-```
-cd ${IGNITE_HOME}\..\ignite-extensions
-mvn clean package -pl :ignite-cdc-ext -Pskip-docs -DskipTests
+Docker is used to emulate a distributed multi-node cluster environment where each individual container acts as a running cluster node.
+
+### 1. Prerequisites
+* **Docker** installed and running on your host system.
+* **Python >= 3.8** installed on your host system (required only for local environment scripts and development).
+
+### 2. Prepare the Environment & Code
+Execute these preparation steps from the root directory of your project:
+
+> **WARNING:** Building and compiling the Apache Ignite project is strictly mandatory. You must run `mvn clean install` to generate the local Maven artifacts. Skipping this step will cause the Ignite service startup to fail with a `ClassNotFoundException`.
+
+```bash
+# 1. Change your current directory to the Ignite root
+cd \${IGNITE_HOME}
+
+# 2. Build and install Apache Ignite artifacts locally
+mvn clean install -DskipTests
+
+# 3. Build the Apache Ignite ducktests modules
+./scripts/build-module.sh ducktests
+
+# 4. Navigate into the ducktests directory
+cd modules/ducktests/tests
```
-# Local run
-Docker is used to emulate distributed environment. Single container represents
-a running node.
-
-## Requirements
-To just start tests locally the only requirement is preinstalled `docker`.
-For development process requirements are `python` >= 3.7.
-
-## Run tests
-- Change a current directory to`${IGNITE_HOME}`
-- Build Apache IGNITE invoking `${IGNITE_HOME}/scripts/build-module.sh ducktests`
-- (Optionally) Build the needed extension modules in the `${IGNITE_HOME}\..\ignite-extensions` directory
-- Change a current directory to `${IGNITE_HOME}/modules/ducktests/tests`
-- Run tests in docker containers using a following command:
-```
-./docker/run_tests.sh
-```
-- For detailed help and instructions, use a following command:
-```
-./docker/run_tests.sh --help
-```
-- Test reports, including service logs, are located in the `${IGNITE_HOME}/results` directory.
-
-## Runned tests management
-- Tear down all the currently active ducker-ignite nodes using a following command:
-```
-./docker/clean_up.sh
-```
-
-# Real environment run
-[Ducktape](https://ducktape.readthedocs.io/en/latest/index.html) allow runs on
-Custom cluster, Vagrant, K8s, Mesos, Docker, cloud providers, etc.
-
-## Requirements
-- Set up the cluster.
- See `./docker/Dockerfile` for servers setup hints.
-
-## Run tests
-- Change a current directory to`${IGNITE_HOME}`
-- Build Apache IGNITE invoking `${IGNITE_HOME}/scripts/build-module.sh ducktests`
-- (Optionally) Build the needed extension modules in the `${IGNITE_HOME}\..\ignite-extensions` directory
-- Run tests using [Ducktape](https://ducktape.readthedocs.io/en/latest/run_tests.html). \
- For example:
- ```
- ducktape --results-root=./results --cluster-file=./cluster.json --repeat 1 --max-parallel 16 ./modules/ducktests/tests/ignitetest
- ```
-# Custom Ignites (forks) testing
-## Run all tests
-### Setup
-Any version of Apache Ignite, or it's fork, can be tested.
-Binary releases supported as well as compiled sources.
-
-- Binary releases should be located at `/opt` directory, eg. `/opt/ignite-2.11.0`.
-- Source releases also should be located at `/opt` directory, but should be compiled before the first use.\
- Use the following command to compile sources properly:
- ```
- ./scripts/build-module.sh ducktests
- ```
-You may replace `/opt` with custom directory by setting `install_root` globals param. \
-For example, `--globals-json, eg: {"install_root": "/dir42"}`
-
-### Execution
-You may set versions (products) using `@ignite_versions` decorator at code
-```
-@ignite_versions(str(DEV_BRANCH), str(LATEST))
-```
-or passing versions set via globals during the execution
-```
---global-json, eg: {"ignite_versions":["2.8.1", "dev"]}
-```
-You may also specify product prefix by `project` param at globals, for example:
-```
---global-json, eg: {"project": "fork" ,"ignite_versions": ["ignite-2.8.1", "2.8.1", "dev"]}
-```
-will execute tests on `ignite-2.8.1, fork-2.8.1, fork-dev`
-
-## Run tests from the external source/repository
-TBD
-
-# Special runs
-## Run with FlightRecorder (JFR)
-To run ignite with flight recorder you should enable `jfr_enabled` through globals, for example:
-```
---global-json, eg: {"jfr_enabled":true}
-```
-## Run with safepoints logging
-Safepoint logging is disabled by default, to enable it, you need to pass `true` for `safepoint_log_enabled` for example:
-```
---global-json, eg: {"safepoint_log_enabled":true}
-```
-## Run with enabled security
-### Run with SSL enabled
-To enable ssl it is only required to pass `enabled` for `ssl` in globals:
-```
---global-json, eg: {"ssl":{"enabled":true}}
-```
-In this case, all ssl params will be set to default values, and will be written to ignite config.
-These values correspond to the keystores that are generated (and you shouldn't worry about it).
-Default keystores for these services are generated automatically on creating environment.
-
-If you want, you could override these values through globals, for example:
-```
- {"ssl": {
- "enabled": true,
- "params": {
- "server": {
- "key_store_jks": "server.jks",
- "key_store_password": "123456",
- "trust_store_jks": "truststore.jks",
- "trust_store_password": "123456"
- },
- "client": {
- "key_store_jks": "client.jks",
- "key_store_password": "123456",
- "trust_store_jks": "truststore.jks",
- "trust_store_password": "123456"
- },
- "admin": {
- "key_store_jks": "admin.jks",
- "key_store_password": "123456",
- "trust_store_jks": "truststore.jks",
- "trust_store_password": "123456"
- }
- }
- }
- }
-```
-Where:
-
-Server, client and admin are three possible interactions with a cluster in a ducktape, each of them has its own alias,
-which corresponds to keystore:
-* Ignite(clientMode = False) - server
-* Ignite(clientMode = True) - client
-* ControlUtility - admin
-
-And options `key_store_jks` and `trust_store_jks` are paths to keys.
-If you start it with `/` it will be used as an absolute path.
-Otherwise, it will be a relative path that starts from `/mnt/service/shared/`.
-
-And if you need to specify values only for one configuration, you can skip other configurations, for example:
-
-```
- {"ssl": {
- "enabled": true,
- "params": {
- "server": {
- "key_store_jks": "server.jks",
- "key_store_password": "123456",
- "trust_store_jks": "truststore.jks",
- "trust_store_password": "123456"
- }
- }
- }
- }
-```
-
-For more information about ssl in ignite you can check this link: [SSL in ignite](https://ignite.apache.org/docs/latest/security/ssl-tls)
-
-### Run with build-in authentication enabled
-Via this option you could overwrite default login and password options in tests with authentication.
-```
- {"authentication":{
- "enabled": true,
- "username": "username",
- "password": "password"
- }
- }
-```
-
-## Run with metrics export enabled
-
-To let Ignite nodes export metrics in different formats during test run use the `metrics` globals parameter
-as described in following sections.
-
-You would need to install and configure metrics collecting software (like prometheus or zabbix) by yourselves.
-
-Below is the sample `prometheus.yml` config file which may be used to collect metrics from tests running in docker:
-
-```yaml
-global:
- scrape_interval: 1s
- evaluation_interval: 5s
-
-scrape_configs:
- - job_name: 'ducktests'
- static_configs:
- - targets:
- - 172.20.0.2:8082
- - 172.20.0.3:8082
- - 172.20.0.4:8082
- - 172.20.0.5:8082
- - 172.20.0.6:8082
- - 172.20.0.7:8082
- - 172.20.0.8:8082
- - 172.20.0.9:8082
- - 172.20.0.10:8082
- - 172.20.0.11:8082
- - 172.20.0.12:8082
- - 172.20.0.13:8082
- - 172.20.0.14:8082
-```
-
-In case of docker you might want ask it to assign the same IP addresses to containers each time it is invoked.
-This way you will be able to create a static config file for your metrics scraper. To do so use
-the `--subnet` parameter for the `./docker/run_tests.sh` script as
-
-```
-./docker/run_tests.sh --subnet 170.20.0.0/16
-```
-
-### Run with the Prometheus metrics exporter
-
-To export metrics in the Prometheus format via the HTTP use the following `--globals-json` parameters:
-
-```json
-{
- "metrics": {
- "opencensus": {
- "enabled":true,
- "port": 8082
- }
- }
-}
-```
-
-To separate metrics from different tests the `iin` label is used. It may be used in software like grafana for filtration.
-
-Label contains the *test id* string: dot concatenated test package name, test class name, test method name and set of
-name/value pairs for parameters, like:
-
-`discovery_test.DiscoveryTest.test_nodes_fail_not_sequential_zk.nodes_to_kill.2.load_type.ClusterLoad.ATOMIC.ignite_version.ignite-2.11.0`
-
-**Implementation note.** The `ignite-opencensus` metrics module uses the `iin` label to expose the `IgniteInstanceName`
-cluster configuration parameter. So the `ducktests` engine exploits this fact and puts the *test id* to
-configuration of each ignite node started in scope of particular test.
-
-### Run with the JMX metrics exporter
-
-To have Ignite nodes export metrics via the JMX use below global parameters. Note that you also might want to enable the
-JMХ remote access (running on 1098 port by default) to let external tools like zabbix collect metrics.
-```json
-{
- "jmx_remote": {
- "enabled": true,
- "port": 1098
- },
- "metrics": {
- "jmx": {
- "enabled":true
- }
- }
-}
-```
-
-# Development
-## Preparing development environment
-- Create a virtual environment and activate it using following commands:
-```
+### 3. Preparing the Local Environment
+Run the following commands from your host system's shell inside `${IGNITE_HOME}/modules/ducktests/tests`:
+```bash
+# Create and activate an isolated development virtual environment
python3 -m venv ~/.virtualenvs/ignite-ducktests-dev
source ~/.virtualenvs/ignite-ducktests-dev/bin/activate
-```
-- Change a current directory to `${IGNITE_HOME}/modules/ducktests/tests`. We refer to it as `${DUCKTESTS_DIR}`.
-- Install requirements and `ignitetests` as editable using following commands:
-```
+
+# Install core framework testing requirements and editable dependencies
pip install -r docker/requirements-dev.txt
pip install -e .
```
+
+> If your environment is configured to look only at internal or restricted artifact registries, `pip install` may fail to find specific package versions.
+>
+> To resolve this, append the public PyPI mirror to your installation command:
+
+```bash
+pip install -r docker/requirements-dev.txt --extra-index-url https://pypi.org/simple
+```
+
+### 4. Run a Smoke Test
+Run the test runner script by pointing it directly to a specific smoke test target. The script will automatically build the required container images, bring up the necessary nodes, and run the test scenario:
+
+```bash
+./docker/run_tests.sh -t ./ignitetest/tests/smoke_test.py::SmokeServicesTest.test_ignite_start_stop -n 3 --global-json '{"cluster_size": 2}'
+```
+
+### 5. What a Successful Run Looks Like
+When the test runs successfully, your terminal output will display discovery logs followed by a clean execution matrix report:
+
+```text
+[INFO]: Discovered 1 tests to run
+[INFO]: starting test run with session id 2026-06-25--004...
+[INFO]: running 1 tests...
+[INFO]: RunnerClient: ... SmokeServicesTest.test_ignite_start_stop: Running...
+[INFO]: RunnerClient: ... SmokeServicesTest.test_ignite_start_stop: PASS
+================================================================================
+SESSION REPORT (ALL TESTS)
+ducktape version: 0.13.0
+run time: 6.554 seconds
+tests run: 1
+passed: 1
+failed: 0
+================================================================================
+test_id: ...SmokeServicesTest.test_ignite_start_stop
+status: PASS
+```
+
+### 6. Managing and Cleaning Containers
+Always clean up and tear down active background nodes after your test runs finish to free up local resources:
+```bash
+# Display detailed help options and arguments
+./docker/run_tests.sh --help
+
+# Stop and remove all currently active ducker-ignite cluster nodes
+./docker/clean_up.sh
+```
+
---
-- For running unit tests invoke `pytest` in `${DUCKTESTS_DIR}`.
-- For checking codestyle invoke `flake8` in `${DUCKTESTS_DIR}`.
+## Local Development & Code Checks
-#### Run checks over multiple python's versions using tox (optional)
-All commits and PR's are checked against multiple python's version, namely 3.6, 3.7 and 3.8.
-If you want to check your PR as it will be checked on Travis CI, you should do following steps:
+To modify framework logic or contribute features locally without depending on Docker container environments, isolate your development runtime dependencies.
-- Install `pyenv`, see installation instruction [here](https://github.com/pyenv/pyenv#installation).
-- Install different versions of python (recommended versions are `3.7.9` and `3.8.5`)
-- Activate them with a command `pyenv shell 3.7.9 3.8.5`
-- Install `tox` by invoking a command `pip install tox`
-- Change a current directory to `${DUCKTESTS_DIR}` and invoke `tox`
+### 1. Activate the Local Environment
+Run the following commands from your host system's shell inside `${IGNITE_HOME}/modules/ducktests/tests`:
+```bash
+# Activate an isolated development virtual environment
+source ~/.virtualenvs/ignite-ducktests-dev/bin/activate
+```
+
+### 2. Running Linters and Unit Tests
+```bash
+# Execute local framework utility unit tests
+pytest
+
+# Enforce uniform codebase style rules
+flake8
+```
+
+### 3. Testing Across Multiple Python Versions (Optional)
+To locally simulate validation matrices across distinct target runtimes (e.g., Python 3.8, 3.9) using `tox`:
+1. Install [pyenv](https://github.com/pyenv/pyenv#installation) onto your machine.
+2. Download target runtimes and initialize your runtime shell profile context:
+ ```bash
+ pyenv install 3.8
+ pyenv install 3.9
+ pyenv shell 3.8 3.9
+ ```
+3. Install `tox` and run the validation suite:
+ ```bash
+ pip install tox
+ tox
+ tox -r -e codestyle,py3
+ ```
+
+---
+
+## Testing with Ignite Extensions
+
+Some integration tests (such as CDC replication scenarios) require additional modules maintained in the separate [ignite-extensions](https://github.com/apache/ignite-extensions) repository.
+
+### Setup Directory Structure
+To run these tests, the `ignite-extensions` working directory **must** be checked out at the exact same filesystem level as your main `ignite` repository:
+```text
+ your-development-folder/
+├── ignite/ <- Checked out from the main ignite repository (${IGNITE_HOME})
+└── ignite-extensions/ <- Checked out from the ignite-extensions repository
+```
+
+### Building the Extensions
+The target extension module must be compiled on your host before running the test suite. For example, to prepare the `cdc-ext` module:
+```bash
+cd ${IGNITE_HOME}/../ignite-extensions
+mvn clean package -pl :ignite-cdc-ext -Pskip-docs -DskipTests
+```
+*Note: The local docker startup script automatically handles binding this directory inside the containers if the folder structure matches.*
+
+---
+
+## Global Parameters & Special Runs
+
+You can modify test environments at execution time using global flags injected through the `--global-json` parameter.
+
+#### Test Configuration
+
+| Global Parameter Key | Definition | Example Configuration |
+|---------------------|------------|----------------------|
+| **cluster_size** | Controls the cluster size for tests. Overrides the default num_nodes value passed in the @cluster annotation. Default value is determined by the test framework. | ```{"cluster_size": 13}``` |
+| **ignite_versions** | List of Ignite versions for testing. Tests run for each version in the list. Values are folder names in /opt/ (e.g., "ignite-dev" for master branch, "ignite-2.17.0" for release). Default is determined by test annotations. | ```{"ignite_versions": ["ignite-dev", "ignite-2.17.0"]}``` |
+| **failure_detection_timeout** | Timeout in milliseconds for failure detection in discovery. Used to detect node failures in the cluster. Default value is 10000 ms (10 seconds). | ```{"failure_detection_timeout": 20000}``` |
+
+#### Security & Authentication
+
+| Global Parameter Key | Definition | Example Configuration |
+|---------------------|------------|----------------------|
+| **ssl** | SSL configuration with nested parameters. Enabled flag controls SSL globally, params contains keystore configurations for different aliases (server, client, admin). *Paths beginning with a `/` resolve as absolute paths. Otherwise, files are read relative to `/mnt/service/shared/`.* | ```{"ssl": {"enabled": true, "params": {"client": {"key_store_jks": "client.jks", "key_store_password": "pwd", "trust_store_jks": "truststore.jks", "trust_store_password": "pwd"}}}}``` |
+| **authentication** | Authentication configuration with nested parameters. Enabled flag controls authentication globally, username and password specify credentials. Default username is "ignite" and password is "ignite". | ```{"authentication": {"enabled": true, "username": "admin", "password": "secret"}}``` |
+
+#### Performance & Monitoring
+
+| Global Parameter Key | Definition | Example Configuration |
+|---------------------|------------|----------------------|
+| **jfr_enabled** | Boolean flag to enable Java Flight Recorder for performance profiling. Default is False. | ```{"jfr_enabled": true}``` |
+| **safepoint_log_enabled** | Boolean flag to enable safepoint logging for debugging JVM behavior. Default is False. | ```{"safepoint_log_enabled": true}``` |
+| **jmx_remote** | JMX remote monitoring configuration with nested parameters. Enabled flag controls remote JMX access, port specifies the listening port (default is 1098). | ```{"jmx_remote": {"enabled": true, "port": 1099}}``` |
+| **metrics** | Metrics configuration with nested parameters. JMX metrics can be enabled, and OpenCensus metrics can be configured with period and port settings. Default period is 1000ms and default port is 8082. | ```{"metrics": {"jmx": {"enabled": true}, "opencensus": {"enabled": true, "period": 2000, "port": 8083}}}``` |
+
+*Note on OpenCensus Telemetry:* To separate metrics from different tests, the `iin` label is injected into the configuration of each Ignite node. It can be used in downstream software like Grafana for precise filtration. The label contains a detailed dot-concatenated string representing the full namespace of the current test runner context (e.g., `discovery_test.DiscoveryTest.test_nodes_fail_not_sequential_zk.nodes_to_kill.2.load_type.ClusterLoad.ATOMIC.ignite_version.ignite-2.11.0`).
+
+#### Framework Configuration
+
+| Global Parameter Key | Definition | Example Configuration |
+|---------------------|------------|----------------------|
+| **NodeSpec** | Specifies the class to use for node specifications in Ignite services. Controls how Ignite nodes are configured and started. | ```{"NodeSpec": "myapp.services.MyNodeSpec"}``` |
+| **AppSpec** | Specifies the class to use for application specifications in Ignite applications. Controls how Ignite applications are configured and started. | ```{"AppSpec": "myapp.services.MyAppSpec"}``` |
+| **IgniteTestContext** | Class name for the test context implementation. Allows customization of test context behavior. | ```{"IgniteTestContext": "myapp.context.CustomTestContext"}``` |
+| **project** | Project/fork name for version handling (e.g., "ignite", "fork"). Used to distinguish between different Ignite variants. Default is "ignite". | ```{"project": "fork"}``` |
+
+#### Paths & Directories
+
+| Global Parameter Key | Definition | Example Configuration |
+|---------------------|------------|----------------------|
+| **persistent_root** | Root directory for persistent storage in tests. Used for storing test data and logs. Default is typically the test working directory. | ```{"persistent_root": "/opt/ignite/test-data"}``` |
+| **install_root** | Root directory for Ignite installation. Points to the base directory where Ignite is installed for testing. Default is typically "/opt/ignite". | ```{"install_root": "/opt/ignite-testing"}``` |
+
+### Custom Ignites & Forks Testing
+You can test arbitrary binary releases or custom compiled forks by overriding the execution path:
+* **Binary releases:** Must be extracted to the `/opt` directory (e.g., `/opt/ignite-2.11.0`).
+* **Source forks:** Must be located at `/opt` and compiled using `./scripts/build-module.sh ducktests`.
+
+To use a custom directory path entirely, pass the `install_root` global configuration variable:
+```bash
+--global-json '{"install_root": "/custom_directory_path"}'
+```
+
+You can target specific cross-product version compatibility combinations inside test suites using the `@ignite_versions` decorator, or override them dynamically during running execution:
+
+```bash
+# Runs tests only against versions '2.8.1' and 'dev'
+--global-json '{"ignite_versions":["2.8.1", "dev"]}'
+
+# Specifies a custom product prefix ('fork') to execute tests across 'ignite-2.8.1', 'fork-2.8.1', and 'fork-dev'
+--global-json '{"project": "fork", "ignite_versions": ["ignite-2.8.1", "2.8.1", "dev"]}'
+```
+
+
+### Diagnostics & Performance Utilities
+```bash
+# Enable Java Flight Recorder (JFR) tracing
+--global-json '{"jfr_enabled": true}'
+
+# Enable JVM Safepoints performance logging
+--global-json '{"safepoint_log_enabled": true}'
+```
+
+### Security Settings
+```bash
+# Enable built-in authentication overrides
+--global-json '{"authentication": {"enabled": true, "username": "custom_user", "password": "custom_password"}}'
+
+# Enable default SSL/TLS configurations
+--global-json '{"ssl": {"enabled": true}}'
+```
+
+To supply precise keystores for explicit communication roles, use detailed layout arrays:
+```json
+{
+ "ssl": {
+ "enabled": true,
+ "params": {
+ "server": { "key_store_jks": "server.jks", "key_store_password": "pwd", "trust_store_jks": "truststore.jks", "trust_store_password": "pwd" }
+ }
+ }
+}
+```
+*Paths beginning with a `/` resolve as absolute paths. Otherwise, files are read relative to `/mnt/service/shared/`.*
+
+For more information about ssl in ignite you can check this link: [SSL in ignite](https://ignite.apache.org/docs/latest/security/ssl-tls)
+
+### Prometheus & JMX Metrics Exporters
+To configure external scraping agents (like Prometheus or Zabbix) to systematically track container telemetry, apply tracking labels.
+
+In case of docker you might want ask it to assign the same IP addresses to containers each time it is invoked. This way you will be able to create a static config file for your metrics scraper. To do so use the `--subnet` parameter for the `./docker/run_tests.sh` script as:
+
+```bash
+./docker/run_tests.sh --subnet 170.20.0.0/16
+```
+
+
+Pass the following telemetry properties to open standard scrape ports:
+```json
+{
+ "jmx_remote": { "enabled": true, "port": 1098 },
+ "metrics": {
+ "jmx": { "enabled": true },
+ "opencensus": { "enabled": true, "port": 8082 }
+ }
+}
+```
+To separate metrics from different tests, the `iin` label is used. It can be utilized in downstream software like Grafana for precise filtration.
+
+The label contains a detailed **test id** string composed of the dot-concatenated test package name, test class name, test method name, and name/value pairs for all parameters:
+
+`discovery_test.DiscoveryTest.test_nodes_fail_not_sequential_zk.nodes_to_kill.2.load_type.ClusterLoad.ATOMIC.ignite_version.ignite-2.11.0`
+
+**Implementation note:** The `ignite-opencensus` metrics module uses the `iin` label to expose the `IgniteInstanceName` cluster configuration parameter. The `ducktests` engine exploits this behavior by injecting the exact *test id* directly into the configuration of each Ignite node started within that test scope.
+
+```yaml
+# Sample host prometheus.yml scrape job configuration
+scrape_configs:
+ - job_name: 'ducktests'
+ static_configs:
+ - targets: ['172.20.0.2:8082', '172.20.0.3:8082', '172.20.0.4:8082']
+```
+
+---
+
+## Distributed Remote Environments
+
+The underlying `ducktape` execution orchestrator allows running these exact suites on production clusters, managed infrastructure, Kubernetes (K8s), Vagrant, Mesos, or Cloud environments.
+
+### Requirements
+* Ensure target remote cluster node configurations align with base OS images. Refer to `./docker/Dockerfile` for underlying software, storage routing setup, and platform software prerequisites.
+
+### Execution
+Trigger remote integration test execution loops via explicit command wrappers:
+```bash
+ducktape --results-root=./results --cluster-file=./cluster.json --repeat 1 --max-parallel 16 ./modules/ducktests/tests/ignitetest
+```
diff --git a/modules/ducktests/tests/docker/Dockerfile b/modules/ducktests/tests/docker/Dockerfile
index a88d0a9..59ed674 100644
--- a/modules/ducktests/tests/docker/Dockerfile
+++ b/modules/ducktests/tests/docker/Dockerfile
@@ -13,90 +13,164 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-ARG jdk_version=eclipse-temurin:17
-FROM $jdk_version
+# =====================================================================
+# GLOBAL ARGS (Must be declared at the very top, before any FROM)
+# =====================================================================
+ARG python_version="3.13"
+ARG jdk_version="eclipse-temurin:17"
-MAINTAINER Apache Ignite dev@ignite.apache.org
-VOLUME ["/opt/ignite-dev"]
+# ---------------------------------------------------------------------
+# Stage 1: JDK source (Temurin JDKs are self-contained and relocatable,
+# so copying the JDK across images is safe -- unlike copying CPython,
+# whose _ssl extension is linked against the source image's OpenSSL)
+# ---------------------------------------------------------------------
+FROM $jdk_version AS jdk_source
-# Set the timezone.
+# ---------------------------------------------------------------------
+# Stage 2: Main Image Build
+# ---------------------------------------------------------------------
+FROM python:${python_version}-slim
+
+# Re-declare global args here to make them accessible inside this specific stage
+ARG python_version
+ARG jdk_version
+
+# ---------------------------------------------------------------------
+# 1. Environment & Global System Configurations
+# ---------------------------------------------------------------------
ENV TZ=Europe/Moscow
+ENV DEBIAN_FRONTEND=noninteractive
+
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
-# Do not ask for confirmations when running apt-get, etc.
-ENV DEBIAN_FRONTEND noninteractive
-
-# Set the ducker.creator label so that we know that this is a ducker image. This will make it
-# visible to 'ducker purge'. The ducker.creator label also lets us know what UNIX user built this
-# image.
+# Set up ducker labels
ARG ducker_creator=default
LABEL ducker.creator=$ducker_creator
-# Update Linux and install necessary utilities.
-RUN cat /etc/apt/sources.list | sed 's/http:\/\/deb.debian.org/https:\/\/deb.debian.org/g' > /etc/apt/sources.list.2 && mv /etc/apt/sources.list.2 /etc/apt/sources.list
-RUN apt update && apt install -y sudo netcat-traditional iptables rsync unzip wget curl jq coreutils openssh-server net-tools vim python3-pip python3-dev python3-venv libffi-dev libssl-dev cmake pkg-config libfuse-dev iperf traceroute mc git && apt-get -y clean
+# Fix package mirror protocol from http to https
+# (Debian trixie uses the deb822 sources file; fall back to sources.list if present)
+RUN if [ -f /etc/apt/sources.list.d/debian.sources ]; then \
+ sed -i 's|http://deb.debian.org|https://deb.debian.org|g' /etc/apt/sources.list.d/debian.sources; \
+ elif [ -f /etc/apt/sources.list ]; then \
+ sed -i 's|http://deb.debian.org|https://deb.debian.org|g' /etc/apt/sources.list; \
+ fi
+# ---------------------------------------------------------------------
+# 2. System Utilities Installation
+# ---------------------------------------------------------------------
+RUN apt-get update && apt-get install -y \
+ sudo \
+ netcat-traditional \
+ iptables \
+ rsync \
+ unzip \
+ wget \
+ curl \
+ jq \
+ coreutils \
+ openssh-server \
+ net-tools \
+ vim \
+ libffi-dev \
+ libssl-dev \
+ cmake \
+ pkg-config \
+ libfuse-dev \
+ iperf \
+ traceroute \
+ mc \
+ git \
+ build-essential \
+ && apt-get -y clean \
+ && rm -rf /var/lib/apt/lists/*
+
+# ---------------------------------------------------------------------
+# 3. JDK Installation (copied from the Temurin image)
+# ---------------------------------------------------------------------
+ENV JAVA_HOME=/opt/java/openjdk
+COPY --from=jdk_source $JAVA_HOME $JAVA_HOME
+ENV PATH="$JAVA_HOME/bin:$PATH"
+
+# Confirm both runtimes are healthy
+RUN java -version
+
+# ---------------------------------------------------------------------
+# 4. Python Virtual Environment Setup & Requirements
+# ---------------------------------------------------------------------
+# Standardize path routing via the virtual environment block
RUN python3 -m venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
-COPY ./requirements.txt /root/requirements.txt
-RUN pip3 install -r /root/requirements.txt
-# Set up ssh
+# Print the active python version and verify ssl is importable
+RUN python3 --version && python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"
+
+COPY ./requirements.txt /root/requirements.txt
+
+# Install requirements
+RUN pip3 install \
+ --default-timeout=100 \
+ --no-cache-dir \
+ -r /root/requirements.txt
+
+# ---------------------------------------------------------------------
+# 5. SSH & Security Settings
+# ---------------------------------------------------------------------
COPY ./ssh-config /root/.ssh/config
-# NOTE: The paramiko library supports the PEM-format private key, but does not support the RFC4716 format.
RUN ssh-keygen -m PEM -q -t rsa -N '' -f /root/.ssh/id_rsa && cp -f /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys
RUN echo 'PermitUserEnvironment yes' >> /etc/ssh/sshd_config
+# ---------------------------------------------------------------------
+# 6. Apache Component Stack Dependencies (Ignite, Zookeeper, Kafka, JMX)
+# ---------------------------------------------------------------------
ARG APACHE_MIRROR="https://apache-mirror.rbc.ru/pub/apache/"
ARG APACHE_ARCHIVE="https://archive.apache.org/dist/"
-# Install binary test dependencies.
+# Install Ignite
RUN for v in "2.7.6" "2.17.0"; \
do cd /opt; \
curl -O $APACHE_ARCHIVE/ignite/$v/apache-ignite-$v-bin.zip;\
- unzip apache-ignite-$v-bin.zip && mv /opt/apache-ignite-$v-bin /opt/ignite-$v;\
- done
+ unzip apache-ignite-$v-bin.zip && mv /opt/apache-ignite-$v-bin /opt/ignite-$v; \
+ done \
+ && rm /opt/apache-ignite-*-bin.zip
-RUN rm /opt/apache-ignite-*-bin.zip
-
-#Install zookeeper.
+# Install Zookeeper
ARG ZOOKEEPER_VERSION="3.5.8"
ARG ZOOKEEPER_NAME="zookeeper-$ZOOKEEPER_VERSION"
ARG ZOOKEEPER_RELEASE_NAME="apache-$ZOOKEEPER_NAME-bin"
ARG ZOOKEEPER_RELEASE_ARTIFACT="$ZOOKEEPER_RELEASE_NAME.tar.gz"
-RUN echo $APACHE_ARCHIVE/zookeeper/$ZOOKEEPER_NAME/$ZOOKEEPER_RELEASE_ARTIFACT
RUN cd /opt && curl -O $APACHE_ARCHIVE/zookeeper/$ZOOKEEPER_NAME/$ZOOKEEPER_RELEASE_ARTIFACT \
- && tar xvf $ZOOKEEPER_RELEASE_ARTIFACT && rm $ZOOKEEPER_RELEASE_ARTIFACT
-RUN mv /opt/$ZOOKEEPER_RELEASE_NAME /opt/$ZOOKEEPER_NAME
+ && tar xvf $ZOOKEEPER_RELEASE_ARTIFACT && rm $ZOOKEEPER_RELEASE_ARTIFACT \
+ && mv /opt/$ZOOKEEPER_RELEASE_NAME /opt/$ZOOKEEPER_NAME
-#Install kafka
+# Install Kafka
ARG KAFKA_VERSION="3.9.1"
ARG KAFKA_NAME="kafka"
ARG KAFKA_RELEASE_NAME="${KAFKA_NAME}_2.13-$KAFKA_VERSION"
ARG KAFKA_RELEASE_ARTIFACT="$KAFKA_RELEASE_NAME.tgz"
-RUN echo $APACHE_ARCHIVE/kafka/$KAFKA_VERSION/$KAFKA_RELEASE_ARTIFACT
RUN cd /opt && curl -O $APACHE_ARCHIVE/kafka/$KAFKA_VERSION/$KAFKA_RELEASE_ARTIFACT \
- && tar xvf $KAFKA_RELEASE_ARTIFACT && rm $KAFKA_RELEASE_ARTIFACT
-RUN mv /opt/$KAFKA_RELEASE_NAME /opt/$KAFKA_NAME-$KAFKA_VERSION
+ && tar xvf $KAFKA_RELEASE_ARTIFACT && rm $KAFKA_RELEASE_ARTIFACT \
+ && mv /opt/$KAFKA_RELEASE_NAME /opt/$KAFKA_NAME-$KAFKA_VERSION
-# The version of Kibosh to use for testing.
-# If you update this, also update vagrant/base.sh
-ARG KIBOSH_VERSION="8841dd392e6fbf02986e2fb1f1ebf04df344b65a"
-
-# Install Kibosh
-RUN apt-get install fuse
-RUN cd /opt && git clone -q https://github.com/confluentinc/kibosh.git && cd "/opt/kibosh" && git reset --hard $KIBOSH_VERSION && mkdir "/opt/kibosh/build" && cd "/opt/kibosh/build" && ../configure && make -j 2
-
-#Install jmxterm
+# Install Jmxterm
ARG JMXTERM_NAME="jmxterm"
ARG JMXTERM_VERSION="1.0.1"
ARG JMXTERM_ARTIFACT="$JMXTERM_NAME-$JMXTERM_VERSION-uber.jar"
RUN cd /opt && curl -OL https://github.com/jiaqi/jmxterm/releases/download/v$JMXTERM_VERSION/$JMXTERM_ARTIFACT \
- && mv $JMXTERM_ARTIFACT $JMXTERM_NAME.jar
+ && mv $JMXTERM_ARTIFACT $JMXTERM_NAME.jar
+# ---------------------------------------------------------------------
+# 7. User Isolation Permissions (Ducker Execution Account Setup)
+# ---------------------------------------------------------------------
# Set up the ducker user.
-RUN userdel -r ubuntu \
- && useradd -ms /bin/bash ducker \
+ARG USER_UID=1000
+ARG USER_GID=1000
+
+# Remove conflicting default user if it exists
+RUN getent passwd ubuntu &>/dev/null && userdel -r ubuntu || true
+
+# Provision ducker system environment and security configurations
+RUN groupadd -g $USER_GID ducker \
+ && useradd -u $USER_UID -g $USER_GID -ms /bin/bash ducker \
&& mkdir -p /home/ducker/ \
&& rsync -aiq /root/.ssh/ /home/ducker/.ssh \
&& chown -R ducker /home/ducker/ /mnt/ /var/log/ /opt \
@@ -106,9 +180,9 @@
&& echo "JAVA_HOME=$JAVA_HOME" >> /home/ducker/.ssh/environment \
&& echo 'PATH=$PATH:'"$JAVA_HOME/bin" >> /home/ducker/.profile \
&& echo 'ducker ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
+
USER ducker
CMD sudo service ssh start && tail -f /dev/null
-# Container port exposure
EXPOSE 11211 47100 47500 49112 10800 8080 2888 3888 2181 1098 8082 8083
diff --git a/modules/ducktests/tests/docker/ducker-ignite b/modules/ducktests/tests/docker/ducker-ignite
index da6cc20..6285f91 100755
--- a/modules/ducktests/tests/docker/ducker-ignite
+++ b/modules/ducktests/tests/docker/ducker-ignite
@@ -44,6 +44,9 @@
# The default OpenJDK base image.
default_jdk="openjdk:17"
+# The default Python version.
+default_python="3.13"
+
# The default ducker-ignite image name.
default_image_name="ducker-ignite"
@@ -60,12 +63,15 @@
help|-h|--help
Display this help message
-build [-j|--jdk JDK] [-c|--context] [image-name]
+build [-j|--jdk JDK] [-p|--python PYTHON_VERSION] [-c|--context] [image-name]
Build a docker image that represents ducker node. Image is tagged with specified ${image_name}.
If --jdk is specified then we will use this argument as base image for ducker docker images.
Otherwise ${default_jdk} is used.
+ If --python is specified, its value will be used to extract the Python runtime for the Docker images.
+ Otherwise, ${default_python} will be used.
+
If --context is specified then build docker image from this path. Context directory must contain Dockerfile.
up [-n|--num-nodes NUM_NODES] [-f|--force] [docker-image]
@@ -255,8 +261,10 @@
must_pushd "${ducker_dir}"
# Tip: if you are scratching your head for some dependency problems that are referring to an old code version
# (for example java.lang.NoClassDefFoundError), add --no-cache flag to the build shall give you a clean start.
- must_do -v -o docker build --memory="${docker_build_memory_limit}" \
- --build-arg "ducker_creator=${user_name}" --build-arg "jdk_version=${jdk_version}" -t "${image_name}" \
+ must_do -v -o docker build --network=host --memory="${docker_build_memory_limit}" \
+ --build-arg USER_UID=$(id -u) --build-arg USER_GID=$(id -g) \
+ --build-arg "ducker_creator=${user_name}" --build-arg "jdk_version=${jdk_version}" \
+ --build-arg "python_version=${python_version}" -t "${image_name}" \
-f "${docker_context}/Dockerfile" -- "${docker_context}"
docker_status=$?
must_popd
@@ -279,12 +287,14 @@
while [[ $# -ge 1 ]]; do
case "${1}" in
-j|--jdk) set_once jdk_version "${2}" "the OpenJDK base image"; shift 2;;
+ -p|--python) set_once python_version "${2}" "the Python version"; shift 2;;
-c|--context) docker_context="${2}"; shift 2;;
*) set_once image_name "${1}" "docker image name"; shift;;
esac
done
[[ -n "${jdk_version}" ]] || jdk_version="${default_jdk}"
+ [[ -n "${python_version}" ]] || python_version="${default_python}"
[[ -n "${image_name}" ]] || image_name="${default_image_name}-${jdk_version/:/-}"
[[ -n "${docker_context}" ]] || docker_context="${ducker_dir}"
diff --git a/modules/ducktests/tests/tox.ini b/modules/ducktests/tests/tox.ini
index 56d89ca..e0fa4a7 100644
--- a/modules/ducktests/tests/tox.ini
+++ b/modules/ducktests/tests/tox.ini
@@ -13,46 +13,38 @@
# See the License for the specific language governing permissions and
# limitations under the License.
[tox]
-envlist = codestyle, py38, py39
+envlist = codestyle, py{38,39,310,311,312,313}
skipsdist = True
[testenv]
-install_command = pip install --extra-index-url https://pypi.org/simple {opts} {packages}
-envdir = {toxworkdir}/.virtualenvs/ignite-ducktests-{envname}
-deps =
- -r ./docker/requirements-dev.txt
usedevelop = True
-commands =
- pytest {env:PYTESTARGS:} {posargs}
+envdir = {toxworkdir}/.virtualenvs/ignite-ducktests-{envname}
+deps = -r{toxinidir}/docker/requirements-dev.txt
+install_command = pip install --extra-index-url https://pypi.org/simple {opts} {packages}
+commands = pytest {env:PYTESTARGS:} {posargs}
[testenv:codestyle]
basepython = python3
-commands =
- flake8
-
-[testenv:py38]
-envdir = {toxworkdir}/.virtualenvs/ignite-ducktests-py38
-
-[testenv:py39]
-envdir = {toxworkdir}/.virtualenvs/ignite-ducktests-py39
+deps = flake8
+commands = flake8
[BASIC]
-min-public-methods=0
-good-names=i, j, k, x, y, ex, pk, tx
+min-public-methods = 0
+good-names = i, j, k, x, y, ex, pk, tx
[SIMILARITIES]
-ignore-imports=yes
+ignore-imports = yes
[FORMAT]
-max-line-length=120
+max-line-length = 120
[DESIGN]
-max-parents=10
+max-parents = 10
[flake8]
-max-line-length=120
+max-line-length = 120
[pytest]
-python_files=check_*.py
-python_classes=Check
-python_functions=check_*
+python_files = check_*.py
+python_classes = Check
+python_functions = check_*
diff --git a/modules/extdata/uri/pom.xml b/modules/extdata/uri/pom.xml
index 28d0078..d79919f 100644
--- a/modules/extdata/uri/pom.xml
+++ b/modules/extdata/uri/pom.xml
@@ -251,11 +251,15 @@
<signjar jar="${basedir}/target/file/${bad-signed.jar}" keystore="${basedir}/config/signeddeploy/keystore" storepass="abc123" keypass="abc123" alias="business" />
- <sleep seconds="2" />
-
- <touch file="${basedir}/target/classes/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestWithNameTask11.class" />
-
- <zip destfile="${basedir}/target/file/${bad-signed.jar}" basedir="${basedir}/target/classes/" includes="org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestWithNameTask11.class" update="yes" />
+ <!-- Unpack, replace corrupted entry with correct class, repack to break signature -->
+ <unzip src="${basedir}/target/file/${bad-signed.jar}" dest="${basedir}/target/file_tmp/zipfix" />
+ <copy file="${basedir}/target/classes/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestWithNameTask11.class"
+ todir="${basedir}/target/file_tmp/zipfix/org/apache/ignite/spi/deployment/uri/tasks/"
+ overwrite="yes" />
+ <delete file="${basedir}/target/file/${bad-signed.jar}" />
+ <jar destfile="${basedir}/target/file/${bad-signed.jar}"
+ basedir="${basedir}/target/file_tmp/zipfix"
+ manifest="${basedir}/target/file_tmp/zipfix/META-INF/MANIFEST.MF" />
<delete dir="${basedir}/target/file_tmp/"/>
</target>
@@ -410,11 +414,15 @@
<signjar jar="${basedir}/target/file/bad-signed-deployfile.gar" keystore="${basedir}/config/signeddeploy/keystore" storepass="abc123" keypass="abc123" alias="business" />
- <sleep seconds="2" />
-
- <touch file="${basedir}/target/classes/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestWithNameTask6.class" />
-
- <zip destfile="${basedir}/target/file/bad-signed-deployfile.gar" basedir="${basedir}/target/classes/" includes="org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestWithNameTask6.class" update="yes" />
+ <!-- Unpack, replace corrupted entry with correct class, repack to break signature -->
+ <unzip src="${basedir}/target/file/bad-signed-deployfile.gar" dest="${basedir}/target/file_tmp/zipfix" />
+ <copy file="${basedir}/target/classes/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestWithNameTask6.class"
+ todir="${basedir}/target/file_tmp/zipfix/org/apache/ignite/spi/deployment/uri/tasks/"
+ overwrite="yes" />
+ <delete file="${basedir}/target/file/bad-signed-deployfile.gar" />
+ <jar destfile="${basedir}/target/file/bad-signed-deployfile.gar"
+ basedir="${basedir}/target/file_tmp/zipfix"
+ manifest="${basedir}/target/file_tmp/zipfix/META-INF/MANIFEST.MF" />
<delete dir="${basedir}/target/file_tmp/" />
</target>
diff --git a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GarHelloWorldTask.java b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GarHelloWorldTask.java
index df71641..1bcb941 100644
--- a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GarHelloWorldTask.java
+++ b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GarHelloWorldTask.java
@@ -29,8 +29,8 @@
import org.apache.ignite.compute.ComputeTaskName;
import org.apache.ignite.compute.ComputeTaskSplitAdapter;
import org.jetbrains.annotations.Nullable;
-import org.springframework.beans.factory.support.AbstractBeanFactory;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
/**
@@ -43,7 +43,8 @@
/** {@inheritDoc} */
@Override public Collection<? extends ComputeJob> split(int gridSize, String arg) throws IgniteException {
// Create Spring context.
- AbstractBeanFactory fac = new XmlBeanFactory(
+ DefaultListableBeanFactory fac = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(fac).loadBeanDefinitions(
new ClassPathResource("org/apache/ignite/spi/deployment/uri/tasks/gar-spring-bean.xml", getClass().getClassLoader()));
fac.setBeanClassLoader(getClass().getClassLoader());
diff --git a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask1.java b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask1.java
index d95c411..1348d7f 100644
--- a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask1.java
+++ b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask1.java
@@ -23,7 +23,8 @@
import org.apache.ignite.compute.ComputeJob;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.compute.ComputeTaskSplitAdapter;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
/**
@@ -32,7 +33,9 @@
public class GridUriDeploymentTestTask1 extends ComputeTaskSplitAdapter<Object, Object> {
/** */
public GridUriDeploymentTestTask1() {
- XmlBeanFactory factory = new XmlBeanFactory(new ClassPathResource("spring1.xml", getClass().getClassLoader()));
+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
+ new ClassPathResource("spring1.xml", getClass().getClassLoader()));
factory.setBeanClassLoader(getClass().getClassLoader());
diff --git a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask2.java b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask2.java
index 1325efd..cf66198 100644
--- a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask2.java
+++ b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask2.java
@@ -23,7 +23,8 @@
import org.apache.ignite.compute.ComputeJob;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.compute.ComputeTaskSplitAdapter;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
/**
@@ -35,7 +36,8 @@
/** */
public GridUriDeploymentTestTask2() {
- XmlBeanFactory factory = new XmlBeanFactory(
+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
new ClassPathResource("org/apache/ignite/spi/deployment/uri/tasks/spring2.xml",
getClass().getClassLoader()));
diff --git a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask9.java b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask9.java
index e346951..93b277c 100644
--- a/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask9.java
+++ b/modules/extdata/uri/src/main/java/org/apache/ignite/spi/deployment/uri/tasks/GridUriDeploymentTestTask9.java
@@ -23,7 +23,8 @@
import org.apache.ignite.compute.ComputeJob;
import org.apache.ignite.compute.ComputeJobResult;
import org.apache.ignite.compute.ComputeTaskSplitAdapter;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ClassPathResource;
/**
@@ -35,7 +36,8 @@
/** */
public GridUriDeploymentTestTask9() {
- XmlBeanFactory factory = new XmlBeanFactory(
+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(factory).loadBeanDefinitions(
new ClassPathResource("org/apache/ignite/spi/deployment/uri/tasks/spring9.xml",
getClass().getClassLoader()));
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlBatchSender.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlBatchSender.java
index 34ebb59..a57c932 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlBatchSender.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlBatchSender.java
@@ -37,7 +37,6 @@
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
-import org.apache.ignite.internal.processors.cache.GridCacheAdapter;
import org.apache.ignite.internal.processors.cache.GridCacheContext;
import org.apache.ignite.internal.processors.cache.distributed.dht.IgniteClusterReadOnlyException;
import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode;
@@ -280,7 +279,7 @@
* Process errors of entry processor - split the keys into duplicated/concurrently modified and those whose
* processing yielded an exception.
*
- * @param res Result of {@link GridCacheAdapter#invokeAll)}
+ * @param res Result of {@link org.apache.ignite.internal.processors.cache.GridCacheAdapter#invokeAll)}
* @param batch Batch.
* @return pair [array of duplicated/concurrently modified keys, SQL exception for erroneous keys] (exception is
* null if all keys are duplicates/concurrently modified ones).
diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlUtils.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlUtils.java
index 3790c05..08b7caf 100644
--- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlUtils.java
+++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/dml/DmlUtils.java
@@ -555,9 +555,9 @@
if (opCtx == null)
// Mimics behavior of GridCacheAdapter#keepBinary and GridCacheProxyImpl#keepBinary
- newOpCtx = new CacheOperationContext(false, false, true, null, false, null, false, null, null, false);
+ newOpCtx = CacheOperationContext.builder().keepBinary(true).build();
else if (!opCtx.isKeepBinary())
- newOpCtx = opCtx.keepBinary();
+ newOpCtx = opCtx.withKeepBinary();
if (newOpCtx != null)
cctx.operationContextPerCall(newOpCtx);
diff --git a/modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQueryInlineSizesTest.java b/modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQueryInlineSizesTest.java
index 31f4d01..87fd769 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQueryInlineSizesTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/cache/query/IndexQueryInlineSizesTest.java
@@ -185,7 +185,7 @@
Random r = new Random();
int low = r.nextInt(CNT / 2);
- int high = low + r.nextInt(CNT / 2);
+ int high = low + r.nextInt(CNT / 2 - 1) + 1;
IndexQuery<Integer, BinaryObject> qry = qryBld.apply(low, high);
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataConcurrentUpdateWithIndexesTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataConcurrentUpdateWithIndexesTest.java
index 1a4403a..8e9bbd4 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataConcurrentUpdateWithIndexesTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/BinaryMetadataConcurrentUpdateWithIndexesTest.java
@@ -44,10 +44,11 @@
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.binary.BinaryMetadata;
+import org.apache.ignite.internal.binary.BinaryUtils;
+import org.apache.ignite.internal.binary.BinaryUtils.TestBinaryContext;
+import org.apache.ignite.internal.binary.BinaryUtils.TestBinaryContext.TestBinaryContextListener;
import org.apache.ignite.internal.processors.cache.binary.CacheObjectBinaryProcessorImpl;
import org.apache.ignite.internal.processors.cache.binary.MetadataUpdateProposedMessage;
-import org.apache.ignite.internal.util.IgniteUtils.TestBinaryContext;
-import org.apache.ignite.internal.util.IgniteUtils.TestBinaryContext.TestBinaryContextListener;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.discovery.tcp.BlockTcpDiscoverySpi;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -343,14 +344,14 @@
@Override protected void beforeTest() throws Exception {
super.beforeTest();
- U.useTestBinaryCtx = true;
+ BinaryUtils.useTestBinaryCtx = true;
}
/** {@inheritDoc} */
@Override protected void afterTest() throws Exception {
super.afterTest();
- U.useTestBinaryCtx = false;
+ BinaryUtils.useTestBinaryCtx = false;
stopAllGrids();
}
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/IndexCorruptionRebuildTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/IndexCorruptionRebuildTest.java
index fb5cfcc..9184ef8 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/IndexCorruptionRebuildTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/index/IndexCorruptionRebuildTest.java
@@ -394,8 +394,8 @@
private volatile boolean rebuiltIndexes;
/** {@inheritDoc} */
- @Override @Nullable
- public IgniteInternalFuture<?> rebuild(
+ @Nullable
+ @Override public IgniteInternalFuture<?> rebuild(
GridCacheContext cctx,
boolean force,
IndexRebuildCancelToken cancelTok
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
index e2b2317..15a512d 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/cache/metric/SqlViewExporterSpiTest.java
@@ -63,9 +63,9 @@
import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectAllTypes;
import org.apache.ignite.internal.binary.mutabletest.GridBinaryTestClasses.TestObjectEnum;
import org.apache.ignite.internal.metric.AbstractExporterSpiTest;
-import org.apache.ignite.internal.metric.SystemViewSelfTest.TestPredicate;
-import org.apache.ignite.internal.metric.SystemViewSelfTest.TestRunnable;
-import org.apache.ignite.internal.metric.SystemViewSelfTest.TestTransformer;
+import org.apache.ignite.internal.metric.SystemViewExecutorsTest.TestRunnable;
+import org.apache.ignite.internal.metric.SystemViewQueriesTest.TestPredicate;
+import org.apache.ignite.internal.metric.SystemViewQueriesTest.TestTransformer;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.distributed.dht.topology.GridDhtPartitionState;
import org.apache.ignite.internal.processors.cache.persistence.GridCacheDatabaseSharedManager;
@@ -86,8 +86,8 @@
import org.junit.Test;
import static java.util.Arrays.asList;
-import static org.apache.ignite.internal.metric.SystemViewSelfTest.TEST_PREDICATE;
-import static org.apache.ignite.internal.metric.SystemViewSelfTest.TEST_TRANSFORMER;
+import static org.apache.ignite.internal.metric.SystemViewQueriesTest.TEST_PREDICATE;
+import static org.apache.ignite.internal.metric.SystemViewQueriesTest.TEST_TRANSFORMER;
import static org.apache.ignite.internal.processors.cache.GridCacheUtils.cacheGroupId;
import static org.apache.ignite.internal.processors.cache.GridCacheUtils.cacheId;
import static org.apache.ignite.internal.processors.cache.index.AbstractSchemaSelfTest.queryProcessor;
diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/WalDisabledDuringIndexRecreateTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/WalDisabledDuringIndexRecreateTest.java
index bea0718..4276b51 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/WalDisabledDuringIndexRecreateTest.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/database/WalDisabledDuringIndexRecreateTest.java
@@ -52,6 +52,7 @@
import org.apache.ignite.internal.util.typedef.internal.CU;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteBiTuple;
+import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.ListeningTestLogger;
import org.apache.ignite.testframework.LogListener;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
@@ -188,7 +189,8 @@
awaitRebuild();
- assertTrue("Rebuild must not succeed", false);
+ assertTrue("Rebuild must not succeed",
+ GridTestUtils.waitForCondition(() -> grid(0).context().failure().nodeStopping(), 1_000L));
}
catch (Exception ignore) {
// No-op
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
index 52385804..837ba9c 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite.java
@@ -17,138 +17,72 @@
package org.apache.ignite.testsuites;
-import org.apache.ignite.internal.processors.cache.AffinityAliasKeyTest;
import org.apache.ignite.internal.processors.cache.AffinityKeyNameAndValueFieldNameConflictTest;
-import org.apache.ignite.internal.processors.cache.CacheOffheapBatchIndexingMultiTypeTest;
import org.apache.ignite.internal.processors.cache.CacheQueryBuildValueTest;
import org.apache.ignite.internal.processors.cache.DdlTransactionIndexingSelfTest;
import org.apache.ignite.internal.processors.cache.GridCacheCrossCacheQuerySelfTest;
-import org.apache.ignite.internal.processors.cache.GridCacheQueryIndexDisabledSelfTest;
-import org.apache.ignite.internal.processors.cache.GridCacheQueryInternalKeysSelfTest;
-import org.apache.ignite.internal.processors.cache.GridCacheQueryPartitionsReleaseTest;
import org.apache.ignite.internal.processors.cache.GridCacheQuerySerializationSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteBinaryObjectFieldsQuerySelfTest;
import org.apache.ignite.internal.processors.cache.IgniteBinaryObjectLocalQueryArgumentsTest;
import org.apache.ignite.internal.processors.cache.IgniteBinaryObjectQueryArgumentsTest;
import org.apache.ignite.internal.processors.cache.IgniteBinaryWrappedObjectFieldsQuerySelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheCollocatedQuerySelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheDeleteSqlQuerySelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheDuplicateEntityConfigurationSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheInsertSqlQuerySelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheJoinPartitionedAndReplicatedCollocationTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheJoinPartitionedAndReplicatedTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheJoinQueryWithAffinityKeyTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheLargeResultSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheMergeSqlQueryFailingTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheMergeSqlQuerySelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheMultipleIndexedTypesTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheOffheapEvictQueryTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheOffheapIndexScanTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheParallelismQuerySortOrderTest;
-import org.apache.ignite.internal.processors.cache.IgniteCachePrimitiveFieldsQuerySelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheQueryH2IndexingLeakTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheQueryIndexSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheQueryLoadSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheSqlDmlErrorSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheSqlInsertValidationSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheSqlQueryErrorSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheUnionDuplicatesTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheUpdateSqlQuerySelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteClientReconnectCacheQueriesFailoverTest;
import org.apache.ignite.internal.processors.cache.IgniteCrossCachesJoinsQueryTest;
import org.apache.ignite.internal.processors.cache.IgniteDynamicEnableIndexingRestoreTest;
-import org.apache.ignite.internal.processors.cache.IgniteDynamicSqlRestoreTest;
import org.apache.ignite.internal.processors.cache.IgniteErrorOnRebalanceTest;
-import org.apache.ignite.internal.processors.cache.IncorrectQueryEntityTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheAtomicNearEnabledQuerySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheAtomicQuerySelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCachePartitionedQueryEvtsDisabledSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCachePartitionedQueryP2PDisabledSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCachePartitionedQuerySelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCachePartitionedSnapshotEnabledQuerySelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNoRebalanceSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedQueryEvtsDisabledSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedQueryP2PDisabledSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedQuerySelfTest;
import org.apache.ignite.internal.processors.cache.index.ArrayIndexTest;
-import org.apache.ignite.internal.processors.cache.index.BPlusTreeMetricsTest;
-import org.apache.ignite.internal.processors.cache.index.BasicIndexMultinodeTest;
import org.apache.ignite.internal.processors.cache.index.BasicIndexTest;
-import org.apache.ignite.internal.processors.cache.index.ComplexPrimaryKeyUnwrapSelfTest;
import org.apache.ignite.internal.processors.cache.index.ComplexSecondaryKeyUnwrapSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DuplicateKeyValueClassesSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicIndexClientBasicSelfTest;
import org.apache.ignite.internal.processors.cache.index.DynamicIndexServerBasicSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicIndexServerCoordinatorBasicSelfTest;
import org.apache.ignite.internal.processors.cache.index.DynamicIndexServerNodeFIlterBasicSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicIndexServerNodeFilterCoordinatorBasicSelfTest;
-import org.apache.ignite.internal.processors.cache.index.ErroneousQueryEntityConfigurationTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicColumnsClientBasicSelfTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicColumnsServerBasicSelfTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicColumnsServerCoordinatorBasicSelfTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexAtomicPartitionedNearSelfTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexAtomicPartitionedSelfTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexAtomicReplicatedSelfTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexTransactionalPartitionedNearSelfTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexTransactionalPartitionedSelfTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexTransactionalReplicatedSelfTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientAtomicPartitionedNoBackupsTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientAtomicPartitionedTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientAtomicReplicatedTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientTransactionalPartitionedNoBackupsTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientTransactionalPartitionedTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientTransactionalReplicatedTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerAtomicPartitionedNoBackupsTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerAtomicPartitionedTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerAtomicReplicatedTest;
import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerTransactionalPartitionedNoBackupsTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerTransactionalPartitionedTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerTransactionalReplicatedTest;
-import org.apache.ignite.internal.processors.cache.index.H2DynamicTableSelfTest;
-import org.apache.ignite.internal.processors.cache.index.IndexMetricsTest;
-import org.apache.ignite.internal.processors.cache.index.QueryEntityValidationSelfTest;
-import org.apache.ignite.internal.processors.cache.index.SchemaExchangeSelfTest;
-import org.apache.ignite.internal.processors.cache.index.StopNodeOnRebuildIndexFailureTest;
import org.apache.ignite.internal.processors.cache.query.CacheDataPageScanQueryTest;
-import org.apache.ignite.internal.processors.cache.query.CacheScanQueryFailoverTest;
-import org.apache.ignite.internal.processors.cache.query.GridCacheQueryTransformerSelfTest;
import org.apache.ignite.internal.processors.cache.query.GridCircularQueueTest;
import org.apache.ignite.internal.processors.cache.query.IndexingSpiQueryTxSelfTest;
-import org.apache.ignite.internal.processors.cache.transaction.DmlInsideTransactionTest;
-import org.apache.ignite.internal.processors.client.ClientConnectorConfigurationValidationSelfTest;
import org.apache.ignite.internal.processors.database.baseline.IgniteStableBaselineBinObjFieldsQuerySelfTest;
import org.apache.ignite.internal.processors.query.IgniteCachelessQueriesSelfTest;
import org.apache.ignite.internal.processors.query.IgniteQueryTableLockAndConnectionPoolSelfTest;
import org.apache.ignite.internal.processors.query.IgniteSqlSchemaIndexingTest;
import org.apache.ignite.internal.processors.query.IgniteSqlSegmentedIndexMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.query.IgniteSqlSegmentedIndexSelfTest;
-import org.apache.ignite.internal.processors.query.IgniteSqlSkipReducerOnUpdateDmlFlagSelfTest;
-import org.apache.ignite.internal.processors.query.IgniteSqlSkipReducerOnUpdateDmlSelfTest;
-import org.apache.ignite.internal.processors.query.IgniteSqlSplitterSelfTest;
import org.apache.ignite.internal.processors.query.MultipleStatementsSqlQuerySelfTest;
-import org.apache.ignite.internal.processors.query.RunningQueriesTest;
import org.apache.ignite.internal.processors.query.SqlIllegalSchemaSelfTest;
import org.apache.ignite.internal.processors.query.SqlNestedQuerySelfTest;
import org.apache.ignite.internal.processors.query.SqlPushDownFunctionTest;
-import org.apache.ignite.internal.processors.query.SqlResultSetMetaSelfTest;
-import org.apache.ignite.internal.processors.query.SqlSchemaSelfTest;
import org.apache.ignite.internal.processors.query.h2.GridSubqueryJoinOptimizerSelfTest;
import org.apache.ignite.internal.processors.query.h2.H2ResultSetIteratorNullifyOnEndSelfTest;
-import org.apache.ignite.internal.processors.query.h2.IgniteSqlBigIntegerKeyTest;
import org.apache.ignite.internal.processors.query.h2.IgniteSqlQueryMinMaxTest;
import org.apache.ignite.internal.processors.query.h2.IgniteSqlQueryStartFinishListenerTest;
import org.apache.ignite.internal.processors.query.h2.QueryDataPageScanTest;
import org.apache.ignite.internal.processors.query.h2.sql.ExplainSelfTest;
import org.apache.ignite.internal.processors.query.h2.sql.GridQueryParsingTest;
-import org.apache.ignite.internal.processors.query.h2.sql.SqlUnsupportedSelfTest;
import org.apache.ignite.internal.processors.sql.SqlConnectorConfigurationValidationSelfTest;
import org.apache.ignite.internal.sql.SqlParserBulkLoadSelfTest;
-import org.apache.ignite.internal.sql.SqlParserCreateIndexSelfTest;
import org.apache.ignite.internal.sql.SqlParserDropIndexSelfTest;
-import org.apache.ignite.internal.sql.SqlParserKillQuerySelfTest;
import org.apache.ignite.internal.sql.SqlParserMultiStatementSelfTest;
-import org.apache.ignite.internal.sql.SqlParserSetStreamingSelfTest;
-import org.apache.ignite.internal.sql.SqlParserViewSelfTest;
import org.apache.ignite.sqltests.CheckWarnJoinPartitionedTables;
import org.apache.ignite.sqltests.PartitionedSqlTest;
import org.apache.ignite.sqltests.ReplicatedSqlCustomPartitionsTest;
@@ -161,121 +95,69 @@
*/
@RunWith(Suite.class)
@Suite.SuiteClasses({
- AffinityAliasKeyTest.class,
AffinityKeyNameAndValueFieldNameConflictTest.class,
- DmlInsideTransactionTest.class,
- ComplexPrimaryKeyUnwrapSelfTest.class,
ComplexSecondaryKeyUnwrapSelfTest.class,
SqlNestedQuerySelfTest.class,
ExplainSelfTest.class,
- RunningQueriesTest.class,
PartitionedSqlTest.class,
ReplicatedSqlTest.class,
ReplicatedSqlCustomPartitionsTest.class,
CheckWarnJoinPartitionedTables.class,
- DeletionDuringRebalanceTest.class,
- SqlParserCreateIndexSelfTest.class,
SqlParserDropIndexSelfTest.class,
SqlParserBulkLoadSelfTest.class,
- SqlParserSetStreamingSelfTest.class,
- SqlParserKillQuerySelfTest.class,
SqlParserMultiStatementSelfTest.class,
- SqlParserViewSelfTest.class,
SqlConnectorConfigurationValidationSelfTest.class,
- ClientConnectorConfigurationValidationSelfTest.class,
- SqlSchemaSelfTest.class,
SqlIllegalSchemaSelfTest.class,
MultipleStatementsSqlQuerySelfTest.class,
- SqlResultSetMetaSelfTest.class,
-
BasicIndexTest.class,
- ErroneousQueryEntityConfigurationTest.class,
ArrayIndexTest.class,
- BasicIndexMultinodeTest.class,
- IndexMetricsTest.class,
- BPlusTreeMetricsTest.class,
// Misc tests.
- QueryEntityValidationSelfTest.class,
- DuplicateKeyValueClassesSelfTest.class,
- GridCacheQueryPartitionsReleaseTest.class,
- StopNodeOnRebuildIndexFailureTest.class,
// Dynamic index create/drop tests.
- SchemaExchangeSelfTest.class,
- DynamicIndexServerCoordinatorBasicSelfTest.class,
DynamicIndexServerBasicSelfTest.class,
- DynamicIndexServerNodeFilterCoordinatorBasicSelfTest.class,
DynamicIndexServerNodeFIlterBasicSelfTest.class,
- DynamicIndexClientBasicSelfTest.class,
// Parsing
GridQueryParsingTest.class,
- IgniteCacheSqlQueryErrorSelfTest.class,
- IgniteCacheSqlDmlErrorSelfTest.class,
- SqlUnsupportedSelfTest.class,
// Config.
- IgniteCacheDuplicateEntityConfigurationSelfTest.class,
- IncorrectQueryEntityTest.class,
- IgniteDynamicSqlRestoreTest.class,
IgniteDynamicEnableIndexingRestoreTest.class,
// Queries tests.
IgniteQueryTableLockAndConnectionPoolSelfTest.class,
- IgniteSqlSplitterSelfTest.class,
SqlPushDownFunctionTest.class,
- IgniteSqlSegmentedIndexSelfTest.class,
IgniteCachelessQueriesSelfTest.class,
IgniteSqlSegmentedIndexMultiNodeSelfTest.class,
IgniteSqlSchemaIndexingTest.class,
- GridCacheQueryIndexDisabledSelfTest.class,
IgniteCacheQueryLoadSelfTest.class,
IgniteCacheReplicatedQuerySelfTest.class,
- IgniteCacheReplicatedQueryP2PDisabledSelfTest.class,
IgniteCacheReplicatedQueryEvtsDisabledSelfTest.class,
- IgniteCachePartitionedQuerySelfTest.class,
- IgniteCachePartitionedSnapshotEnabledQuerySelfTest.class,
IgniteCacheAtomicQuerySelfTest.class,
- IgniteCacheAtomicNearEnabledQuerySelfTest.class,
- IgniteCachePartitionedQueryP2PDisabledSelfTest.class,
IgniteCachePartitionedQueryEvtsDisabledSelfTest.class,
- IgniteCacheParallelismQuerySortOrderTest.class,
IgniteCacheUnionDuplicatesTest.class,
- IgniteCacheJoinPartitionedAndReplicatedCollocationTest.class,
- IgniteClientReconnectCacheQueriesFailoverTest.class,
IgniteErrorOnRebalanceTest.class,
CacheQueryBuildValueTest.class,
- CacheOffheapBatchIndexingMultiTypeTest.class,
IgniteCacheQueryIndexSelfTest.class,
IgniteCacheCollocatedQuerySelfTest.class,
IgniteCacheLargeResultSelfTest.class,
- GridCacheQueryInternalKeysSelfTest.class,
H2ResultSetIteratorNullifyOnEndSelfTest.class,
- IgniteSqlBigIntegerKeyTest.class,
- IgniteCacheOffheapEvictQueryTest.class,
IgniteCacheOffheapIndexScanTest.class,
GridCacheCrossCacheQuerySelfTest.class,
GridCacheQuerySerializationSelfTest.class,
- IgniteBinaryObjectFieldsQuerySelfTest.class,
IgniteStableBaselineBinObjFieldsQuerySelfTest.class,
IgniteBinaryWrappedObjectFieldsQuerySelfTest.class,
IgniteCacheQueryH2IndexingLeakTest.class,
- IgniteCacheQueryNoRebalanceSelfTest.class,
- GridCacheQueryTransformerSelfTest.class,
- CacheScanQueryFailoverTest.class,
- IgniteCachePrimitiveFieldsQuerySelfTest.class,
- IgniteCacheJoinQueryWithAffinityKeyTest.class,
IgniteCacheJoinPartitionedAndReplicatedTest.class,
IgniteCrossCachesJoinsQueryTest.class,
@@ -290,10 +172,6 @@
IgniteCacheMergeSqlQueryFailingTest.class,
IgniteCacheInsertSqlQuerySelfTest.class,
IgniteCacheUpdateSqlQuerySelfTest.class,
- IgniteCacheDeleteSqlQuerySelfTest.class,
- IgniteSqlSkipReducerOnUpdateDmlSelfTest.class,
- IgniteSqlSkipReducerOnUpdateDmlFlagSelfTest.class,
- IgniteCacheSqlInsertValidationSelfTest.class,
IgniteBinaryObjectQueryArgumentsTest.class,
IgniteBinaryObjectLocalQueryArgumentsTest.class,
@@ -309,28 +187,16 @@
// DDL.
H2DynamicIndexTransactionalReplicatedSelfTest.class,
H2DynamicIndexTransactionalPartitionedSelfTest.class,
- H2DynamicIndexTransactionalPartitionedNearSelfTest.class,
H2DynamicIndexAtomicReplicatedSelfTest.class,
- H2DynamicIndexAtomicPartitionedSelfTest.class,
H2DynamicIndexAtomicPartitionedNearSelfTest.class,
- H2DynamicTableSelfTest.class,
H2DynamicColumnsClientBasicSelfTest.class,
- H2DynamicColumnsServerBasicSelfTest.class,
H2DynamicColumnsServerCoordinatorBasicSelfTest.class,
// DML+DDL.
- H2DynamicIndexingComplexClientAtomicPartitionedTest.class,
- H2DynamicIndexingComplexClientAtomicPartitionedNoBackupsTest.class,
H2DynamicIndexingComplexClientAtomicReplicatedTest.class,
H2DynamicIndexingComplexClientTransactionalPartitionedTest.class,
- H2DynamicIndexingComplexClientTransactionalPartitionedNoBackupsTest.class,
H2DynamicIndexingComplexClientTransactionalReplicatedTest.class,
- H2DynamicIndexingComplexServerAtomicPartitionedTest.class,
- H2DynamicIndexingComplexServerAtomicPartitionedNoBackupsTest.class,
- H2DynamicIndexingComplexServerAtomicReplicatedTest.class,
- H2DynamicIndexingComplexServerTransactionalPartitionedTest.class,
H2DynamicIndexingComplexServerTransactionalPartitionedNoBackupsTest.class,
- H2DynamicIndexingComplexServerTransactionalReplicatedTest.class,
DdlTransactionIndexingSelfTest.class,
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java
index 59d9320..0c42ba7 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite2.java
@@ -17,50 +17,29 @@
package org.apache.ignite.testsuites;
-import org.apache.ignite.internal.processors.cache.CacheScanPartitionQueryFallbackSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheCrossCacheJoinRandomTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheObjectKeyIndexingSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCachePartitionedQueryMultiThreadedSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheQueryEvictsMultiThreadedSelfTest;
-import org.apache.ignite.internal.processors.cache.IgniteCacheQueryMultiThreadedSelfTest;
import org.apache.ignite.internal.processors.cache.IgniteCacheSqlQueryMultiThreadedSelfTest;
-import org.apache.ignite.internal.processors.cache.QueryJoinWithDifferentNodeFiltersTest;
import org.apache.ignite.internal.processors.cache.SqlCacheStartStopTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheClientQueryReplicatedNodeRestartSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheDistributedQueryDefaultTimeoutSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheDistributedQueryStopOnCancelOrTimeoutSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNodeFailTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNodeRestartDistributedJoinSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNodeRestartSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNodeRestartSelfTest2;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNodeRestartTxSelfTest;
import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryStopOnCancelOrTimeoutDistributedJoinSelfTest;
-import org.apache.ignite.internal.processors.cache.distributed.near.IgniteSqlQueryWithBaselineTest;
import org.apache.ignite.internal.processors.cache.index.DynamicColumnsConcurrentAtomicPartitionedSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicColumnsConcurrentAtomicReplicatedSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicColumnsConcurrentTransactionalPartitionedSelfTest;
import org.apache.ignite.internal.processors.cache.index.DynamicColumnsConcurrentTransactionalReplicatedSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicEnableIndexingBasicSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicEnableIndexingConcurrentSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicIndexCreateAfterClusterRestartTest;
import org.apache.ignite.internal.processors.cache.index.DynamicIndexPartitionedAtomicConcurrentSelfTest;
import org.apache.ignite.internal.processors.cache.index.DynamicIndexPartitionedTransactionalConcurrentSelfTest;
-import org.apache.ignite.internal.processors.cache.index.DynamicIndexReplicatedAtomicConcurrentSelfTest;
import org.apache.ignite.internal.processors.cache.index.DynamicIndexReplicatedTransactionalConcurrentSelfTest;
import org.apache.ignite.internal.processors.cache.query.ScanQueryOffheapExpiryPolicySelfTest;
import org.apache.ignite.internal.processors.database.baseline.IgniteChangingBaselineCacheQueryNodeRestartSelfTest;
import org.apache.ignite.internal.processors.database.baseline.IgniteStableBaselineCacheQueryNodeRestartsSelfTest;
-import org.apache.ignite.internal.processors.query.CreateIndexOnInvalidDataTypeTest;
-import org.apache.ignite.internal.processors.query.DisabledSqlFunctionsTest;
-import org.apache.ignite.internal.processors.query.IgniteCacheGroupsCompareQueryTest;
import org.apache.ignite.internal.processors.query.IgniteCacheGroupsSqlDistributedJoinSelfTest;
import org.apache.ignite.internal.processors.query.IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest;
-import org.apache.ignite.internal.processors.query.IgniteCacheGroupsSqlSegmentedIndexSelfTest;
-import org.apache.ignite.internal.processors.query.LazyOnDmlTest;
import org.apache.ignite.internal.processors.query.ReducerRowsBufferTest;
import org.apache.ignite.internal.processors.query.SqlIndexConsistencyAfterInterruptAtomicCacheOperationTest;
-import org.apache.ignite.internal.processors.query.SqlIndexConsistencyAfterInterruptTxCacheOperationTest;
-import org.apache.ignite.internal.processors.query.SqlTwoCachesInGroupWithSameEntryTest;
import org.apache.ignite.internal.processors.query.WrongQueryEntityFieldTypeTest;
import org.apache.ignite.internal.processors.query.timeout.DefaultQueryTimeoutTestSuite;
import org.junit.runner.RunWith;
@@ -73,70 +52,44 @@
@Suite.SuiteClasses({
ReducerRowsBufferTest.class,
- LazyOnDmlTest.class,
-
DefaultQueryTimeoutTestSuite.class,
- CreateIndexOnInvalidDataTypeTest.class,
WrongQueryEntityFieldTypeTest.class,
- DisabledSqlFunctionsTest.class,
-
SqlCacheStartStopTest.class,
SqlIndexConsistencyAfterInterruptAtomicCacheOperationTest.class,
- SqlIndexConsistencyAfterInterruptTxCacheOperationTest.class,
- SqlTwoCachesInGroupWithSameEntryTest.class,
// Dynamic index create/drop tests.
DynamicIndexPartitionedAtomicConcurrentSelfTest.class,
DynamicIndexPartitionedTransactionalConcurrentSelfTest.class,
- DynamicIndexReplicatedAtomicConcurrentSelfTest.class,
DynamicIndexReplicatedTransactionalConcurrentSelfTest.class,
- DynamicIndexCreateAfterClusterRestartTest.class,
DynamicColumnsConcurrentAtomicPartitionedSelfTest.class,
- DynamicColumnsConcurrentTransactionalPartitionedSelfTest.class,
- DynamicColumnsConcurrentAtomicReplicatedSelfTest.class,
DynamicColumnsConcurrentTransactionalReplicatedSelfTest.class,
- DynamicEnableIndexingBasicSelfTest.class,
- DynamicEnableIndexingConcurrentSelfTest.class,
-
// Distributed joins.
IgniteCacheQueryNodeRestartDistributedJoinSelfTest.class,
IgniteCacheQueryStopOnCancelOrTimeoutDistributedJoinSelfTest.class,
// Other tests.
- IgniteCacheQueryMultiThreadedSelfTest.class,
-
- IgniteCacheQueryEvictsMultiThreadedSelfTest.class,
ScanQueryOffheapExpiryPolicySelfTest.class,
IgniteCacheCrossCacheJoinRandomTest.class,
- IgniteCacheClientQueryReplicatedNodeRestartSelfTest.class,
- IgniteCacheQueryNodeFailTest.class,
- IgniteCacheQueryNodeRestartSelfTest.class,
- IgniteSqlQueryWithBaselineTest.class,
IgniteChangingBaselineCacheQueryNodeRestartSelfTest.class,
IgniteStableBaselineCacheQueryNodeRestartsSelfTest.class,
IgniteCacheQueryNodeRestartSelfTest2.class,
IgniteCacheQueryNodeRestartTxSelfTest.class,
IgniteCacheSqlQueryMultiThreadedSelfTest.class,
IgniteCachePartitionedQueryMultiThreadedSelfTest.class,
- CacheScanPartitionQueryFallbackSelfTest.class,
IgniteCacheDistributedQueryDefaultTimeoutSelfTest.class,
IgniteCacheDistributedQueryStopOnCancelOrTimeoutSelfTest.class,
IgniteCacheObjectKeyIndexingSelfTest.class,
- IgniteCacheGroupsCompareQueryTest.class,
- IgniteCacheGroupsSqlSegmentedIndexSelfTest.class,
IgniteCacheGroupsSqlSegmentedIndexMultiNodeSelfTest.class,
IgniteCacheGroupsSqlDistributedJoinSelfTest.class,
- QueryJoinWithDifferentNodeFiltersTest.class,
-
})
public class IgniteBinaryCacheQueryTestSuite2 {
}
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite3.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite3.java
index 36154c3..d1d2e84 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite3.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite3.java
@@ -22,7 +22,6 @@
import org.apache.ignite.internal.cdc.CdcIndexRebuildTest;
import org.apache.ignite.internal.cdc.SqlCdcTest;
import org.apache.ignite.internal.dump.DumpCacheConfigTest;
-import org.apache.ignite.internal.metric.SystemViewSelfTest;
import org.apache.ignite.internal.processors.cache.BigEntryQueryTest;
import org.apache.ignite.internal.processors.cache.BinaryMetadataConcurrentUpdateWithIndexesTest;
import org.apache.ignite.internal.processors.cache.BinarySerializationQuerySelfTest;
@@ -350,7 +349,6 @@
RowCountTableStatisticsSurvivesNodeRestartTest.class,
SqlViewExporterSpiTest.class,
- SystemViewSelfTest.class,
SqlMergeTest.class,
SqlMergeOnClientNodeTest.class,
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite5.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite5.java
new file mode 100644
index 0000000..e2da4dc
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite5.java
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import org.apache.ignite.internal.processors.cache.CacheScanPartitionQueryFallbackSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheQueryEvictsMultiThreadedSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheQueryMultiThreadedSelfTest;
+import org.apache.ignite.internal.processors.cache.QueryJoinWithDifferentNodeFiltersTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheClientQueryReplicatedNodeRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNodeFailTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNodeRestartSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteSqlQueryWithBaselineTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicColumnsConcurrentAtomicReplicatedSelfTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicColumnsConcurrentTransactionalPartitionedSelfTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicEnableIndexingBasicSelfTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicEnableIndexingConcurrentSelfTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicIndexCreateAfterClusterRestartTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicIndexReplicatedAtomicConcurrentSelfTest;
+import org.apache.ignite.internal.processors.query.CreateIndexOnInvalidDataTypeTest;
+import org.apache.ignite.internal.processors.query.DisabledSqlFunctionsTest;
+import org.apache.ignite.internal.processors.query.IgniteCacheGroupsCompareQueryTest;
+import org.apache.ignite.internal.processors.query.IgniteCacheGroupsSqlSegmentedIndexSelfTest;
+import org.apache.ignite.internal.processors.query.LazyOnDmlTest;
+import org.apache.ignite.internal.processors.query.SqlIndexConsistencyAfterInterruptTxCacheOperationTest;
+import org.apache.ignite.internal.processors.query.SqlTwoCachesInGroupWithSameEntryTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Test suite for cache queries. Split off from {@link IgniteBinaryCacheQueryTestSuite2} to reduce
+ * the single-suite runtime in CI; contains an independent subset of the same test classes.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ LazyOnDmlTest.class,
+ CreateIndexOnInvalidDataTypeTest.class,
+ DisabledSqlFunctionsTest.class,
+ SqlIndexConsistencyAfterInterruptTxCacheOperationTest.class,
+ SqlTwoCachesInGroupWithSameEntryTest.class,
+ DynamicIndexReplicatedAtomicConcurrentSelfTest.class,
+ DynamicIndexCreateAfterClusterRestartTest.class,
+ DynamicColumnsConcurrentTransactionalPartitionedSelfTest.class,
+ DynamicColumnsConcurrentAtomicReplicatedSelfTest.class,
+ DynamicEnableIndexingBasicSelfTest.class,
+ DynamicEnableIndexingConcurrentSelfTest.class,
+ IgniteCacheQueryMultiThreadedSelfTest.class,
+ IgniteCacheQueryEvictsMultiThreadedSelfTest.class,
+ IgniteCacheClientQueryReplicatedNodeRestartSelfTest.class,
+ IgniteCacheQueryNodeFailTest.class,
+ IgniteCacheQueryNodeRestartSelfTest.class,
+ IgniteSqlQueryWithBaselineTest.class,
+ CacheScanPartitionQueryFallbackSelfTest.class,
+ IgniteCacheGroupsCompareQueryTest.class,
+ IgniteCacheGroupsSqlSegmentedIndexSelfTest.class,
+ QueryJoinWithDifferentNodeFiltersTest.class,
+})
+public class IgniteBinaryCacheQueryTestSuite5 {
+}
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite6.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite6.java
new file mode 100644
index 0000000..3618b32
--- /dev/null
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteBinaryCacheQueryTestSuite6.java
@@ -0,0 +1,164 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.testsuites;
+
+import org.apache.ignite.internal.processors.cache.AffinityAliasKeyTest;
+import org.apache.ignite.internal.processors.cache.CacheOffheapBatchIndexingMultiTypeTest;
+import org.apache.ignite.internal.processors.cache.GridCacheQueryIndexDisabledSelfTest;
+import org.apache.ignite.internal.processors.cache.GridCacheQueryInternalKeysSelfTest;
+import org.apache.ignite.internal.processors.cache.GridCacheQueryPartitionsReleaseTest;
+import org.apache.ignite.internal.processors.cache.IgniteBinaryObjectFieldsQuerySelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheDeleteSqlQuerySelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheDuplicateEntityConfigurationSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheJoinPartitionedAndReplicatedCollocationTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheJoinQueryWithAffinityKeyTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheOffheapEvictQueryTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheParallelismQuerySortOrderTest;
+import org.apache.ignite.internal.processors.cache.IgniteCachePrimitiveFieldsQuerySelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheSqlDmlErrorSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheSqlInsertValidationSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteCacheSqlQueryErrorSelfTest;
+import org.apache.ignite.internal.processors.cache.IgniteClientReconnectCacheQueriesFailoverTest;
+import org.apache.ignite.internal.processors.cache.IgniteDynamicSqlRestoreTest;
+import org.apache.ignite.internal.processors.cache.IncorrectQueryEntityTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheAtomicNearEnabledQuerySelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCachePartitionedQueryP2PDisabledSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCachePartitionedQuerySelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCachePartitionedSnapshotEnabledQuerySelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.near.IgniteCacheQueryNoRebalanceSelfTest;
+import org.apache.ignite.internal.processors.cache.distributed.replicated.IgniteCacheReplicatedQueryP2PDisabledSelfTest;
+import org.apache.ignite.internal.processors.cache.index.BPlusTreeMetricsTest;
+import org.apache.ignite.internal.processors.cache.index.BasicIndexMultinodeTest;
+import org.apache.ignite.internal.processors.cache.index.ComplexPrimaryKeyUnwrapSelfTest;
+import org.apache.ignite.internal.processors.cache.index.DuplicateKeyValueClassesSelfTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicIndexClientBasicSelfTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicIndexServerCoordinatorBasicSelfTest;
+import org.apache.ignite.internal.processors.cache.index.DynamicIndexServerNodeFilterCoordinatorBasicSelfTest;
+import org.apache.ignite.internal.processors.cache.index.ErroneousQueryEntityConfigurationTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicColumnsServerBasicSelfTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexAtomicPartitionedSelfTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexTransactionalPartitionedNearSelfTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientAtomicPartitionedNoBackupsTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientAtomicPartitionedTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexClientTransactionalPartitionedNoBackupsTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerAtomicPartitionedNoBackupsTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerAtomicPartitionedTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerAtomicReplicatedTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerTransactionalPartitionedTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicIndexingComplexServerTransactionalReplicatedTest;
+import org.apache.ignite.internal.processors.cache.index.H2DynamicTableSelfTest;
+import org.apache.ignite.internal.processors.cache.index.IndexMetricsTest;
+import org.apache.ignite.internal.processors.cache.index.QueryEntityValidationSelfTest;
+import org.apache.ignite.internal.processors.cache.index.SchemaExchangeSelfTest;
+import org.apache.ignite.internal.processors.cache.index.StopNodeOnRebuildIndexFailureTest;
+import org.apache.ignite.internal.processors.cache.query.CacheScanQueryFailoverTest;
+import org.apache.ignite.internal.processors.cache.query.GridCacheQueryTransformerSelfTest;
+import org.apache.ignite.internal.processors.cache.transaction.DmlInsideTransactionTest;
+import org.apache.ignite.internal.processors.client.ClientConnectorConfigurationValidationSelfTest;
+import org.apache.ignite.internal.processors.query.IgniteSqlSegmentedIndexSelfTest;
+import org.apache.ignite.internal.processors.query.IgniteSqlSkipReducerOnUpdateDmlFlagSelfTest;
+import org.apache.ignite.internal.processors.query.IgniteSqlSkipReducerOnUpdateDmlSelfTest;
+import org.apache.ignite.internal.processors.query.IgniteSqlSplitterSelfTest;
+import org.apache.ignite.internal.processors.query.RunningQueriesTest;
+import org.apache.ignite.internal.processors.query.SqlResultSetMetaSelfTest;
+import org.apache.ignite.internal.processors.query.SqlSchemaSelfTest;
+import org.apache.ignite.internal.processors.query.h2.IgniteSqlBigIntegerKeyTest;
+import org.apache.ignite.internal.processors.query.h2.sql.SqlUnsupportedSelfTest;
+import org.apache.ignite.internal.sql.SqlParserCreateIndexSelfTest;
+import org.apache.ignite.internal.sql.SqlParserKillQuerySelfTest;
+import org.apache.ignite.internal.sql.SqlParserSetStreamingSelfTest;
+import org.apache.ignite.internal.sql.SqlParserViewSelfTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * Split off from {@link IgniteBinaryCacheQueryTestSuite} to reduce the single-suite runtime in CI;
+ * contains an independent subset of the same test classes.
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ AffinityAliasKeyTest.class,
+ DmlInsideTransactionTest.class,
+ ComplexPrimaryKeyUnwrapSelfTest.class,
+ RunningQueriesTest.class,
+ DeletionDuringRebalanceTest.class,
+ SqlParserCreateIndexSelfTest.class,
+ SqlParserSetStreamingSelfTest.class,
+ SqlParserKillQuerySelfTest.class,
+ SqlParserViewSelfTest.class,
+ ClientConnectorConfigurationValidationSelfTest.class,
+ SqlSchemaSelfTest.class,
+ SqlResultSetMetaSelfTest.class,
+ ErroneousQueryEntityConfigurationTest.class,
+ BasicIndexMultinodeTest.class,
+ IndexMetricsTest.class,
+ BPlusTreeMetricsTest.class,
+ QueryEntityValidationSelfTest.class,
+ DuplicateKeyValueClassesSelfTest.class,
+ GridCacheQueryPartitionsReleaseTest.class,
+ StopNodeOnRebuildIndexFailureTest.class,
+ SchemaExchangeSelfTest.class,
+ DynamicIndexServerCoordinatorBasicSelfTest.class,
+ DynamicIndexServerNodeFilterCoordinatorBasicSelfTest.class,
+ DynamicIndexClientBasicSelfTest.class,
+ IgniteCacheSqlQueryErrorSelfTest.class,
+ IgniteCacheSqlDmlErrorSelfTest.class,
+ SqlUnsupportedSelfTest.class,
+ IgniteCacheDuplicateEntityConfigurationSelfTest.class,
+ IncorrectQueryEntityTest.class,
+ IgniteDynamicSqlRestoreTest.class,
+ IgniteSqlSplitterSelfTest.class,
+ IgniteSqlSegmentedIndexSelfTest.class,
+ GridCacheQueryIndexDisabledSelfTest.class,
+ IgniteCacheReplicatedQueryP2PDisabledSelfTest.class,
+ IgniteCachePartitionedQuerySelfTest.class,
+ IgniteCachePartitionedSnapshotEnabledQuerySelfTest.class,
+ IgniteCacheAtomicNearEnabledQuerySelfTest.class,
+ IgniteCachePartitionedQueryP2PDisabledSelfTest.class,
+ IgniteCacheParallelismQuerySortOrderTest.class,
+ IgniteCacheJoinPartitionedAndReplicatedCollocationTest.class,
+ IgniteClientReconnectCacheQueriesFailoverTest.class,
+ CacheOffheapBatchIndexingMultiTypeTest.class,
+ GridCacheQueryInternalKeysSelfTest.class,
+ IgniteSqlBigIntegerKeyTest.class,
+ IgniteCacheOffheapEvictQueryTest.class,
+ IgniteBinaryObjectFieldsQuerySelfTest.class,
+ IgniteCacheQueryNoRebalanceSelfTest.class,
+ GridCacheQueryTransformerSelfTest.class,
+ CacheScanQueryFailoverTest.class,
+ IgniteCachePrimitiveFieldsQuerySelfTest.class,
+ IgniteCacheJoinQueryWithAffinityKeyTest.class,
+ IgniteCacheDeleteSqlQuerySelfTest.class,
+ IgniteSqlSkipReducerOnUpdateDmlSelfTest.class,
+ IgniteSqlSkipReducerOnUpdateDmlFlagSelfTest.class,
+ IgniteCacheSqlInsertValidationSelfTest.class,
+ H2DynamicIndexTransactionalPartitionedNearSelfTest.class,
+ H2DynamicIndexAtomicPartitionedSelfTest.class,
+ H2DynamicTableSelfTest.class,
+ H2DynamicColumnsServerBasicSelfTest.class,
+ H2DynamicIndexingComplexClientAtomicPartitionedTest.class,
+ H2DynamicIndexingComplexClientAtomicPartitionedNoBackupsTest.class,
+ H2DynamicIndexingComplexClientTransactionalPartitionedNoBackupsTest.class,
+ H2DynamicIndexingComplexServerAtomicPartitionedTest.class,
+ H2DynamicIndexingComplexServerAtomicPartitionedNoBackupsTest.class,
+ H2DynamicIndexingComplexServerAtomicReplicatedTest.class,
+ H2DynamicIndexingComplexServerTransactionalPartitionedTest.class,
+ H2DynamicIndexingComplexServerTransactionalReplicatedTest.class,
+})
+public class IgniteBinaryCacheQueryTestSuite6 {
+}
diff --git a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite6.java b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite6.java
index 8104716..60d7e99 100644
--- a/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite6.java
+++ b/modules/indexing/src/test/java/org/apache/ignite/testsuites/IgniteCacheQuerySelfTestSuite6.java
@@ -49,6 +49,7 @@
import org.apache.ignite.internal.processors.query.IgniteSqlSinglePartitionMultiParallelismTest;
import org.apache.ignite.internal.processors.query.MemLeakOnSqlWithClientReconnectTest;
import org.apache.ignite.internal.processors.query.QueryEntityAliasesTest;
+import org.apache.ignite.internal.processors.query.schema.message.QueryEntityMessageSerializationTest;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
@@ -90,6 +91,7 @@
DropTableAfterCteSqlQueryTest.class,
LocalContinuousQueryWithNodeFailureTest.class,
ContinuousQueryUserCodeExceptionTest.class,
+ QueryEntityMessageSerializationTest.class,
})
public class IgniteCacheQuerySelfTestSuite6 {
}
diff --git a/modules/jta/pom.xml b/modules/jta/pom.xml
index 5a03105..21909a7 100644
--- a/modules/jta/pom.xml
+++ b/modules/jta/pom.xml
@@ -41,9 +41,9 @@
</dependency>
<dependency>
- <groupId>javax.transaction</groupId>
- <artifactId>jta</artifactId>
- <version>1.1</version>
+ <groupId>jakarta.transaction</groupId>
+ <artifactId>jakarta.transaction-api</artifactId>
+ <version>2.0.1</version>
</dependency>
<dependency>
@@ -53,16 +53,16 @@
</dependency>
<dependency>
- <groupId>org.ow2.jotm</groupId>
- <artifactId>jotm-core</artifactId>
- <version>${jotm.version}</version>
+ <groupId>org.jboss.narayana.jta</groupId>
+ <artifactId>narayana-jta</artifactId>
+ <version>${narayana.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>javax.resource</groupId>
- <artifactId>connector-api</artifactId>
- <version>1.5</version>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging</artifactId>
+ <version>${jboss.logging.version}</version>
<scope>test</scope>
</dependency>
@@ -100,15 +100,6 @@
<scope>test</scope>
</dependency>
- <!-- JDK9+ -->
-
- <dependency>
- <groupId>org.jboss.spec.javax.rmi</groupId>
- <artifactId>jboss-rmi-api_1.0_spec</artifactId>
- <version>${jboss.rmi.version}</version>
- <scope>test</scope>
- </dependency>
-
</dependencies>
<build>
diff --git a/modules/jta/src/main/java/org/apache/ignite/cache/jta/CacheTmLookup.java b/modules/jta/src/main/java/org/apache/ignite/cache/jta/CacheTmLookup.java
index 7f97384..8a0659e 100644
--- a/modules/jta/src/main/java/org/apache/ignite/cache/jta/CacheTmLookup.java
+++ b/modules/jta/src/main/java/org/apache/ignite/cache/jta/CacheTmLookup.java
@@ -17,7 +17,7 @@
package org.apache.ignite.cache.jta;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.configuration.TransactionConfiguration;
import org.jetbrains.annotations.Nullable;
diff --git a/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmFactory.java b/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmFactory.java
index 10f3f86..b6c778c 100644
--- a/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmFactory.java
+++ b/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmFactory.java
@@ -20,10 +20,10 @@
import java.util.Arrays;
import java.util.Hashtable;
import java.util.Map;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.util.typedef.internal.U;
diff --git a/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmLookup.java b/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmLookup.java
index dfd8b5e..db01b36 100644
--- a/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmLookup.java
+++ b/modules/jta/src/main/java/org/apache/ignite/cache/jta/jndi/CacheJndiTmLookup.java
@@ -18,9 +18,9 @@
package org.apache.ignite.cache.jta.jndi;
import java.util.List;
+import jakarta.transaction.TransactionManager;
import javax.naming.InitialContext;
import javax.naming.NamingException;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.jta.CacheTmLookup;
import org.jetbrains.annotations.Nullable;
diff --git a/modules/jta/src/main/java/org/apache/ignite/cache/jta/reflect/CacheReflectionTmLookup.java b/modules/jta/src/main/java/org/apache/ignite/cache/jta/reflect/CacheReflectionTmLookup.java
index 25b06de..96cf03d 100644
--- a/modules/jta/src/main/java/org/apache/ignite/cache/jta/reflect/CacheReflectionTmLookup.java
+++ b/modules/jta/src/main/java/org/apache/ignite/cache/jta/reflect/CacheReflectionTmLookup.java
@@ -18,7 +18,7 @@
package org.apache.ignite.cache.jta.reflect;
import java.lang.reflect.InvocationTargetException;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.jta.CacheTmLookup;
import org.apache.ignite.internal.util.typedef.internal.A;
diff --git a/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereLibertyTmFactory.java b/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereLibertyTmFactory.java
index aa579ad..581078a 100644
--- a/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereLibertyTmFactory.java
+++ b/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereLibertyTmFactory.java
@@ -18,8 +18,8 @@
package org.apache.ignite.cache.jta.websphere;
import java.lang.reflect.InvocationTargetException;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
/**
diff --git a/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereTmFactory.java b/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereTmFactory.java
index 85886df..7276e12 100644
--- a/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereTmFactory.java
+++ b/modules/jta/src/main/java/org/apache/ignite/cache/jta/websphere/WebSphereTmFactory.java
@@ -21,16 +21,16 @@
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.Synchronization;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.Synchronization;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
import javax.transaction.xa.XAResource;
import org.apache.ignite.IgniteException;
diff --git a/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaManager.java b/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaManager.java
index b98a7f8..854773a 100644
--- a/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaManager.java
+++ b/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaManager.java
@@ -18,11 +18,11 @@
package org.apache.ignite.internal.processors.cache.jta;
import java.util.concurrent.atomic.AtomicReference;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.jta.CacheTmLookup;
import org.apache.ignite.configuration.CacheConfiguration;
diff --git a/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaResource.java b/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaResource.java
index 5b1b37a..81edfc4 100644
--- a/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaResource.java
+++ b/modules/jta/src/main/java/org/apache/ignite/internal/processors/cache/jta/CacheJtaResource.java
@@ -18,9 +18,9 @@
package org.apache.ignite.internal.processors.cache.jta;
import java.util.concurrent.atomic.AtomicReference;
+import jakarta.transaction.Status;
+import jakarta.transaction.Synchronization;
import javax.cache.CacheException;
-import javax.transaction.Status;
-import javax.transaction.Synchronization;
import javax.transaction.xa.XAException;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/CacheJndiTmFactorySelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/CacheJndiTmFactorySelfTest.java
index f3781d4..8f3ba70 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/CacheJndiTmFactorySelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/CacheJndiTmFactorySelfTest.java
@@ -18,16 +18,16 @@
package org.apache.ignite.internal.processors.cache;
import java.util.concurrent.Callable;
+import jakarta.transaction.HeuristicMixedException;
+import jakarta.transaction.HeuristicRollbackException;
+import jakarta.transaction.InvalidTransactionException;
+import jakarta.transaction.NotSupportedException;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.SystemException;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
import javax.naming.Context;
import javax.naming.InitialContext;
-import javax.transaction.HeuristicMixedException;
-import javax.transaction.HeuristicRollbackException;
-import javax.transaction.InvalidTransactionException;
-import javax.transaction.NotSupportedException;
-import javax.transaction.RollbackException;
-import javax.transaction.SystemException;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.jta.jndi.CacheJndiTmFactory;
import org.apache.ignite.testframework.GridTestUtils;
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaConfigurationValidationSelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaConfigurationValidationSelfTest.java
index db41a0c..c795789 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaConfigurationValidationSelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaConfigurationValidationSelfTest.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.processors.cache;
import java.util.concurrent.Callable;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.cache.jta.CacheTmLookup;
import org.apache.ignite.configuration.CacheConfiguration;
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaFactoryConfigValidationSelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaFactoryConfigValidationSelfTest.java
index ffb08e7..e7617f5 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaFactoryConfigValidationSelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheJtaFactoryConfigValidationSelfTest.java
@@ -18,8 +18,8 @@
package org.apache.ignite.internal.processors.cache;
import java.util.concurrent.Callable;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.TransactionManager;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaLifecycleAwareSelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaLifecycleAwareSelfTest.java
index 695e995..9a4658e 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaLifecycleAwareSelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaLifecycleAwareSelfTest.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.processors.cache;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.TransactionManager;
import org.apache.ignite.Ignite;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.cache.jta.CacheTmLookup;
@@ -142,8 +142,8 @@
/** {@inheritDoc} */
@Test
- @Override public void testLifecycleAware() throws Exception {
- // No-op, see anothre tests.
+ @Override public void testLifecycleAware() {
+ // No-op, see other tests.
}
/** */
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaTransactionManagerSelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaTransactionManagerSelfTest.java
index e85d196..cab956e 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaTransactionManagerSelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/GridJtaTransactionManagerSelfTest.java
@@ -19,9 +19,10 @@
import java.util.Arrays;
import java.util.Collection;
+import jakarta.transaction.Transaction;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.Transaction;
-import javax.transaction.TransactionManager;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.TransactionConfiguration;
@@ -31,9 +32,6 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
-import org.objectweb.jotm.Current;
-import org.objectweb.jotm.Jotm;
-import org.objectweb.jotm.rmi.RmiLocalConfiguration;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.transactions.TransactionConcurrency.OPTIMISTIC;
@@ -45,8 +43,8 @@
*/
@RunWith(Parameterized.class)
public class GridJtaTransactionManagerSelfTest extends GridCommonAbstractTest {
- /** Java Open Transaction Manager facade. */
- private static Jotm jotm;
+ /** Transaction manager. */
+ private static TransactionManager txMgr;
/**
* @return Test parameters.
@@ -77,18 +75,11 @@
@Override protected void beforeTestsStarted() throws Exception {
super.beforeTestsStarted();
- jotm = new Jotm(true, false, new RmiLocalConfiguration());
-
- Current.setAppServer(false);
+ txMgr = new TransactionManagerImple();
startGrid();
}
- /** {@inheritDoc} */
- @Override protected void afterTestsStopped() throws Exception {
- jotm.stop();
- }
-
/**
* Test for switching tx context by JTA Manager.
*
@@ -102,7 +93,7 @@
cfg.setDefaultTxConcurrency(txConcurrency);
cfg.setDefaultTxIsolation(isolation);
- TransactionManager jtaTm = jotm.getTransactionManager();
+ TransactionManager jtaTm = txMgr;
IgniteCache<Integer, String> cache = jcache();
@@ -120,8 +111,21 @@
assertEquals(Integer.toString(1), cache.get(1));
+ org.apache.ignite.transactions.Transaction igniteTx = grid().transactions().tx();
+
jtaTm.suspend();
+ // Narayana's TransactionManagerImple.suspend() only detaches the JTA transaction from the
+ // current thread context without calling XAResource.end(xid, TMSUSPEND) on enlisted
+ // XA resources. This behavior is fully compliant with the JTA specification: the spec
+ // defines TransactionManager.suspend() as "suspend the current transaction and return
+ // it" without requiring end() callbacks on XA resources.
+ // The previous JTA provider (JOTM) called end(TMSUSPEND) as an implementation detail
+ // (not because the spec required it), which is why this test worked out of the box
+ // with JOTM. To compensate for Narayana's spec-compliant behavior, we must explicitly
+ // suspend the Ignite transaction to detach it from the thread.
+ igniteTx.suspend();
+
assertNull(grid().transactions().tx());
assertNull(cache.get(1));
@@ -148,6 +152,16 @@
jtaTm.resume(tx1);
+ // Narayana's TransactionManagerImple.resume() only reattaches the JTA transaction to the
+ // current thread context without calling XAResource.start(xid, TMRESUME) on previously
+ // enlisted XA resources. This is also fully compliant with the JTA specification:
+ // TransactionManager.resume() is defined as "resume a previously suspended transaction"
+ // without requiring start() callbacks on XA resources.
+ // Similarly to suspend(), JOTM called start(TMRESUME) as an implementation detail,
+ // not because the spec required it. To compensate for Narayana's behavior, we must
+ // explicitly resume the Ignite transaction to reattach it to the thread.
+ igniteTx.resume();
+
assertNotNull(grid().transactions().tx());
assertEquals(ACTIVE, grid().transactions().tx().state());
@@ -177,7 +191,7 @@
cfg.setDefaultTxConcurrency(txConcurrency);
cfg.setDefaultTxIsolation(isolation);
- TransactionManager jtaTm = jotm.getTransactionManager();
+ TransactionManager jtaTm = txMgr;
IgniteCache<Integer, String> cache = jcache();
@@ -231,7 +245,7 @@
/** {@inheritDoc} */
@Override public TransactionManager create() {
- return jotm.getTransactionManager();
+ return txMgr;
}
}
}
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/AbstractCacheJtaSelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/AbstractCacheJtaSelfTest.java
index 8fb9f1e..0a2e9a4 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/AbstractCacheJtaSelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/AbstractCacheJtaSelfTest.java
@@ -19,8 +19,11 @@
import java.util.concurrent.Callable;
import java.util.concurrent.CountDownLatch;
-import javax.transaction.Status;
-import javax.transaction.UserTransaction;
+import jakarta.transaction.Status;
+import jakarta.transaction.TransactionManager;
+import jakarta.transaction.UserTransaction;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.cache.CacheMode;
import org.apache.ignite.configuration.CacheConfiguration;
@@ -30,8 +33,6 @@
import org.apache.ignite.testframework.GridTestSafeThreadFactory;
import org.apache.ignite.transactions.Transaction;
import org.junit.Test;
-import org.objectweb.jotm.Jotm;
-import org.objectweb.jotm.rmi.RmiLocalConfiguration;
import static org.apache.ignite.cache.CacheMode.PARTITIONED;
import static org.apache.ignite.transactions.TransactionConcurrency.PESSIMISTIC;
@@ -45,24 +46,21 @@
/** */
private static final int GRID_CNT = 1;
- /** Java Open Transaction Manager facade. */
- protected static Jotm jotm;
+ /** Transaction manager. */
+ protected static TransactionManager txMgr;
+
+ /** User transaction. */
+ protected static UserTransaction userTx;
/** {@inheritDoc} */
@Override protected void beforeTestsStarted() throws Exception {
- jotm = new Jotm(true, false, new RmiLocalConfiguration());
+ txMgr = new TransactionManagerImple();
+ userTx = new UserTransactionImple();
super.beforeTestsStarted();
}
/** {@inheritDoc} */
- @Override protected void afterTestsStopped() throws Exception {
- super.afterTestsStopped();
-
- jotm.stop();
- }
-
- /** {@inheritDoc} */
@Override protected int gridCount() {
return GRID_CNT;
}
@@ -101,7 +99,7 @@
*/
@Test
public void testJta() throws Exception {
- UserTransaction jtaTx = jotm.getUserTransaction();
+ UserTransaction jtaTx = userTx;
IgniteCache<String, Integer> cache = jcache();
@@ -145,7 +143,7 @@
*/
@Test
public void testJtaTwoCaches() throws Exception {
- UserTransaction jtaTx = jotm.getUserTransaction();
+ UserTransaction jtaTx = userTx;
IgniteEx ignite = grid(0);
@@ -205,7 +203,7 @@
@Override public Object call() throws Exception {
assertNull(grid(0).transactions().tx());
- UserTransaction jtaTx = jotm.getUserTransaction();
+ UserTransaction jtaTx = userTx;
jtaTx.begin();
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaFactorySelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaFactorySelfTest.java
index ec9f8e8..df090fc 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaFactorySelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaFactorySelfTest.java
@@ -17,8 +17,8 @@
package org.apache.ignite.internal.processors.cache.jta;
+import jakarta.transaction.TransactionManager;
import javax.cache.configuration.Factory;
-import javax.transaction.TransactionManager;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.configuration.TransactionConfiguration;
@@ -42,7 +42,7 @@
/** {@inheritDoc} */
@Override public TransactionManager create() {
- return jotm.getTransactionManager();
+ return txMgr;
}
}
}
diff --git a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
index 573a543..09bc63a 100644
--- a/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
+++ b/modules/jta/src/test/java/org/apache/ignite/internal/processors/cache/jta/GridPartitionedCacheJtaLookupClassNameSelfTest.java
@@ -18,7 +18,7 @@
package org.apache.ignite.internal.processors.cache.jta;
import java.util.concurrent.Callable;
-import javax.transaction.TransactionManager;
+import jakarta.transaction.TransactionManager;
import org.apache.ignite.IgniteException;
import org.apache.ignite.cache.CacheAtomicityMode;
import org.apache.ignite.cache.jta.CacheTmLookup;
@@ -66,7 +66,7 @@
public static class TestTmLookup implements CacheTmLookup {
/** {@inheritDoc} */
@Override public TransactionManager getTm() {
- return jotm.getTransactionManager();
+ return txMgr;
}
}
diff --git a/modules/nio/pom.xml b/modules/nio/pom.xml
new file mode 100644
index 0000000..c624743
--- /dev/null
+++ b/modules/nio/pom.xml
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!--
+ POM file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-parent-internal</artifactId>
+ <version>${revision}</version>
+ <relativePath>../../parent-internal/pom.xml</relativePath>
+ </parent>
+
+ <artifactId>ignite-nio</artifactId>
+
+ <url>http://ignite.apache.org</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-commons</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-binary-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-grid-unsafe</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jetbrains</groupId>
+ <artifactId>annotations</artifactId>
+ <version>${jetbrains.annotations.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <version>${maven.deploy.plugin.version}</version>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/communication/UnknownMessageException.java b/modules/nio/src/main/java/org/apache/ignite/internal/managers/communication/UnknownMessageException.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/managers/communication/UnknownMessageException.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/managers/communication/UnknownMessageException.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientMessage.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/odbc/ClientMessage.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientMessage.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/processors/odbc/ClientMessage.java
index ec592ad..525dc2b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/ClientMessage.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/processors/odbc/ClientMessage.java
@@ -23,7 +23,7 @@
import java.io.ObjectOutput;
import java.nio.ByteBuffer;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.plugin.extensions.communication.Message;
/** */
@@ -122,7 +122,7 @@
cnt = -4;
if (stream != null) {
- U.closeQuiet(stream);
+ CommonUtils.closeQuiet(stream);
stream = null;
}
@@ -212,7 +212,7 @@
public byte[] payload() {
if (stream != null) {
data = stream.arrayCopy();
- U.closeQuiet(stream);
+ CommonUtils.closeQuiet(stream);
stream = null;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/MTC.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/MTC.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/MTC.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/MTC.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/NoopSpan.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/NoopSpan.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/NoopSpan.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/NoopSpan.java
diff --git a/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/NoopSpanManager.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/NoopSpanManager.java
new file mode 100644
index 0000000..0d948b5
--- /dev/null
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/NoopSpanManager.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.tracing;
+
+import org.apache.ignite.plugin.extensions.communication.Message;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * Noop implementation of {@link SpanManager}.
+ */
+public class NoopSpanManager implements SpanManager {
+ /** Noop serialized span. */
+ public static final byte[] NOOP_SERIALIZED_SPAN = new byte[0];
+
+ /** {@inheritDoc} */
+ @Override public Span create(@NotNull SpanType spanType, @Nullable Span parentSpan) {
+ return NoopSpan.INSTANCE;
+ }
+
+ /** {@inheritDoc} */
+ @Override public Span create(@NotNull SpanType spanType, @Nullable byte[] serializedParentSpan) {
+ return NoopSpan.INSTANCE;
+ }
+
+ /** {@inheritDoc} */
+ @Override public @NotNull Span create(
+ @NotNull SpanType spanType,
+ @Nullable Span parentSpan,
+ @Nullable String lb) {
+ return NoopSpan.INSTANCE;
+ }
+
+ /** {@inheritDoc} */
+ @Override public byte[] serialize(@NotNull Span span) {
+ return NOOP_SERIALIZED_SPAN;
+ }
+
+ /** {@inheritDoc} */
+ @Override public String traceName(Message msg) {
+ return null;
+ }
+}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/Span.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/Span.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/Span.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/Span.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanManager.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/SpanManager.java
similarity index 89%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanManager.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/SpanManager.java
index 010506d..be43ec4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanManager.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/SpanManager.java
@@ -17,6 +17,7 @@
package org.apache.ignite.internal.processors.tracing;
+import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -70,4 +71,10 @@
* @param span Span.
*/
byte[] serialize(@NotNull Span span);
+
+ /**
+ * @param msg Message to resolve a trace name for.
+ * @return Trace name of the message, or {@code null} if tracing is disabled.
+ */
+ @Nullable String traceName(Message msg);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/SpanTags.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanType.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/SpanType.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/SpanType.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/SpanType.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/messages/SpanTransport.java b/modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/messages/SpanTransport.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/processors/tracing/messages/SpanTransport.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/processors/tracing/messages/SpanTransport.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridAbstractCommunicationClient.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridAbstractCommunicationClient.java
similarity index 91%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridAbstractCommunicationClient.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridAbstractCommunicationClient.java
index 79de224..267d431 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridAbstractCommunicationClient.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridAbstractCommunicationClient.java
@@ -18,15 +18,15 @@
package org.apache.ignite.internal.util.nio;
import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
/**
* Implements basic lifecycle for communication clients.
*/
public abstract class GridAbstractCommunicationClient implements GridCommunicationClient {
/** Time when this client was last used. */
- private volatile long lastUsed = U.currentTimeMillis();
+ private volatile long lastUsed = CommonUtils.currentTimeMillis();
/** Reservations. */
private final AtomicBoolean closed = new AtomicBoolean();
@@ -73,14 +73,14 @@
/** {@inheritDoc} */
@Override public long getIdleTime() {
- return U.currentTimeMillis() - lastUsed;
+ return CommonUtils.currentTimeMillis() - lastUsed;
}
/**
* Updates used time.
*/
protected void markUsed() {
- lastUsed = U.currentTimeMillis();
+ lastUsed = CommonUtils.currentTimeMillis();
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridBufferedParser.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridBufferedParser.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridBufferedParser.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridBufferedParser.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridCommunicationClient.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridConnectionBytesVerifyFilter.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridConnectionBytesVerifyFilter.java
similarity index 86%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridConnectionBytesVerifyFilter.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridConnectionBytesVerifyFilter.java
index 3829aaa..fe1c834 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridConnectionBytesVerifyFilter.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridConnectionBytesVerifyFilter.java
@@ -22,15 +22,15 @@
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.internal.LT;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
/**
* Verifies that first bytes received in accepted (incoming)
- * NIO session are equal to {@link U#IGNITE_HEADER}.
+ * NIO session are equal to {@link CommonUtils#IGNITE_HEADER}.
* <p>
- * First {@code U.IGNITE_HEADER.length} bytes are consumed by this filter
+ * First {@code CommonUtils.IGNITE_HEADER.length} bytes are consumed by this filter
* and all other bytes are forwarded through chain without any modification.
*/
public class GridConnectionBytesVerifyFilter extends GridNioFilterAdapter {
@@ -99,27 +99,27 @@
Integer magic = ses.meta(MAGIC_META_KEY);
- if (magic == null || magic < U.IGNITE_HEADER.length) {
+ if (magic == null || magic < CommonUtils.IGNITE_HEADER.length) {
byte[] magicBuf = ses.meta(MAGIC_BUF_KEY);
if (magicBuf == null)
- magicBuf = new byte[U.IGNITE_HEADER.length];
+ magicBuf = new byte[CommonUtils.IGNITE_HEADER.length];
int magicRead = magic == null ? 0 : magic;
int cnt = buf.remaining();
- buf.get(magicBuf, magicRead, Math.min(U.IGNITE_HEADER.length - magicRead, cnt));
+ buf.get(magicBuf, magicRead, Math.min(CommonUtils.IGNITE_HEADER.length - magicRead, cnt));
- if (cnt + magicRead < U.IGNITE_HEADER.length) {
+ if (cnt + magicRead < CommonUtils.IGNITE_HEADER.length) {
// Magic bytes are not fully read.
ses.addMeta(MAGIC_META_KEY, cnt + magicRead);
ses.addMeta(MAGIC_BUF_KEY, magicBuf);
}
- else if (U.bytesEqual(magicBuf, 0, U.IGNITE_HEADER, 0, U.IGNITE_HEADER.length)) {
+ else if (CommonUtils.bytesEqual(magicBuf, 0, CommonUtils.IGNITE_HEADER, 0, CommonUtils.IGNITE_HEADER.length)) {
// Magic bytes read and equal to IGNITE_HEADER.
ses.removeMeta(MAGIC_BUF_KEY);
- ses.addMeta(MAGIC_META_KEY, U.IGNITE_HEADER.length);
+ ses.addMeta(MAGIC_META_KEY, CommonUtils.IGNITE_HEADER.length);
proceedMessageReceived(ses, buf);
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDelimitedParser.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridDelimitedParser.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDelimitedParser.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridDelimitedParser.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
similarity index 89%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
index faf416d..a78a97e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridDirectParser.java
@@ -22,14 +22,14 @@
import java.nio.ByteBuffer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.internal.direct.DirectMessageReader;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
+import org.apache.ignite.plugin.extensions.communication.MessageReader;
import org.apache.ignite.plugin.extensions.communication.MessageSerializer;
import org.jetbrains.annotations.Nullable;
-import static org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.makeMessageType;
+import static org.apache.ignite.internal.util.CommonUtils.makeMessageType;
/**
* Parser for direct messages.
@@ -67,10 +67,10 @@
/** {@inheritDoc} */
@Nullable @Override public Object decode(GridNioSession ses, ByteBuffer buf)
throws IOException, IgniteCheckedException {
- DirectMessageReader reader = ses.meta(READER_META_KEY);
+ MessageReader reader = ses.meta(READER_META_KEY);
if (reader == null)
- ses.addMeta(READER_META_KEY, reader = (DirectMessageReader)readerFactory.reader(ses, msgFactory));
+ ses.addMeta(READER_META_KEY, reader = readerFactory.reader(ses, msgFactory));
Message msg = ses.removeMeta(MSG_META_KEY);
@@ -105,7 +105,7 @@
}
}
catch (Throwable e) {
- U.error(log, "Failed to read message [msg=" + msg +
+ CommonUtils.error(log, "Failed to read message [msg=" + msg +
", buf=" + buf +
", reader=" + reader +
", ses=" + ses + "]",
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioAsyncNotifyFilter.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioAsyncNotifyFilter.java
similarity index 96%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioAsyncNotifyFilter.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioAsyncNotifyFilter.java
index 3fb1ec5..4a5889f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioAsyncNotifyFilter.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioAsyncNotifyFilter.java
@@ -22,7 +22,7 @@
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.worker.GridWorker;
import org.apache.ignite.internal.util.worker.GridWorkerPool;
import org.apache.ignite.lang.IgniteInClosure;
@@ -144,7 +144,7 @@
proceedExceptionCaught(ses, ex);
}
catch (IgniteCheckedException e) {
- U.warn(log, "Failed to forward exception to the underlying filter (will ignore) [ses=" + ses + ", " +
+ CommonUtils.warn(log, "Failed to forward exception to the underlying filter (will ignore) [ses=" + ses + ", " +
"originalEx=" + ex + ", ex=" + e + ']');
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioBackPressureControl.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioBackPressureControl.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioBackPressureControl.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioBackPressureControl.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioCodecFilter.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioCodecFilter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioCodecFilter.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioCodecFilter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioDelimitedBuffer.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioDelimitedBuffer.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioDelimitedBuffer.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioDelimitedBuffer.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioException.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioException.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioException.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioException.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilter.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilter.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilterAdapter.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilterAdapter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilterAdapter.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilterAdapter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilterChain.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilterChain.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilterChain.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioFilterChain.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioKeyAttachment.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioKeyAttachment.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioKeyAttachment.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioKeyAttachment.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageReaderFactory.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageReaderFactory.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageReaderFactory.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageReaderFactory.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageTracker.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageTracker.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageTracker.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageTracker.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageWriterFactory.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageWriterFactory.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageWriterFactory.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioMessageWriterFactory.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioParser.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioParser.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioParser.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioParser.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
similarity index 96%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
index 1cedb7d..4223821 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioRecoveryDescriptor.java
@@ -20,9 +20,9 @@
import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Deque;
+import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -30,18 +30,16 @@
import org.apache.ignite.lang.IgniteInClosure;
import org.jetbrains.annotations.Nullable;
-import static org.apache.ignite.IgniteSystemProperties.IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT;
+import static org.apache.ignite.IgniteCommonsSystemProperties.DFLT_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT;
+import static org.apache.ignite.IgniteCommonsSystemProperties.IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT;
/**
* Recovery information for single node.
*/
public class GridNioRecoveryDescriptor {
- /** @see IgniteSystemProperties#IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT */
- public static final int DFLT_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT = 5_000;
-
/** Timeout for outgoing recovery descriptor reservation. */
private static final long DESC_RESERVATION_TIMEOUT = Math.max(1_000,
- IgniteSystemProperties.getLong(IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT,
+ IgniteCommonsSystemProperties.getLong(IGNITE_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT,
DFLT_NIO_RECOVERY_DESCRIPTOR_RESERVATION_TIMEOUT));
/** Number of acknowledged messages. */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
similarity index 93%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
index 7972906..fa23121 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServer.java
@@ -47,25 +47,23 @@
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicLong;
+import java.util.function.LongConsumer;
import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.IgniteSystemProperties;
-import org.apache.ignite.configuration.ConnectorConfiguration;
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.IgniteInterruptedCheckedException;
-import org.apache.ignite.internal.managers.communication.GridIoMessage;
-import org.apache.ignite.internal.processors.metric.MetricRegistryImpl;
-import org.apache.ignite.internal.processors.metric.impl.LongAdderMetric;
import org.apache.ignite.internal.processors.odbc.ClientMessage;
import org.apache.ignite.internal.processors.tracing.MTC;
import org.apache.ignite.internal.processors.tracing.MTC.TraceSurroundings;
import org.apache.ignite.internal.processors.tracing.NoopSpan;
-import org.apache.ignite.internal.processors.tracing.NoopTracing;
+import org.apache.ignite.internal.processors.tracing.NoopSpanManager;
import org.apache.ignite.internal.processors.tracing.Span;
+import org.apache.ignite.internal.processors.tracing.SpanManager;
import org.apache.ignite.internal.processors.tracing.SpanTags;
import org.apache.ignite.internal.processors.tracing.SpanType;
-import org.apache.ignite.internal.processors.tracing.Tracing;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
import org.apache.ignite.internal.util.GridUnsafe;
import org.apache.ignite.internal.util.future.GridCompoundFuture;
@@ -77,7 +75,6 @@
import org.apache.ignite.internal.util.typedef.internal.A;
import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.util.worker.GridWorker;
import org.apache.ignite.internal.util.worker.GridWorkerListener;
import org.apache.ignite.lang.IgniteBiInClosure;
@@ -97,7 +94,6 @@
import static org.apache.ignite.failure.FailureType.SYSTEM_WORKER_TERMINATION;
import static org.apache.ignite.internal.processors.tracing.SpanTags.SOCKET_WRITE_BYTES;
import static org.apache.ignite.internal.processors.tracing.SpanType.COMMUNICATION_SOCKET_WRITE;
-import static org.apache.ignite.internal.processors.tracing.messages.TraceableMessagesTable.traceName;
import static org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.MSG_WRITER;
import static org.apache.ignite.internal.util.nio.GridNioSessionMetaKey.NIO_OPERATION;
@@ -119,6 +115,9 @@
/** Default session write timeout. */
public static final int DFLT_SES_WRITE_TIMEOUT = 5000;
+ /** Default value for {@code idleTimeout} (in milliseconds). */
+ public static final int DFLT_IDLE_TIMEOUT = 7000;
+
/** Default send queue limit. */
public static final int DFLT_SEND_QUEUE_LIMIT = 0;
@@ -145,10 +144,7 @@
/** */
private static final boolean DISABLE_KEYSET_OPTIMIZATION =
- IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_NO_SELECTOR_OPTS);
-
- /** @see IgniteSystemProperties#IGNITE_IO_BALANCE_PERIOD */
- public static final int DFLT_IO_BALANCE_PERIOD = 5000;
+ IgniteCommonsSystemProperties.getBoolean(IgniteCommonsSystemProperties.IGNITE_NO_SELECTOR_OPTS);
/** */
public static final String OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_NAME = "outboundMessagesQueueSize";
@@ -231,7 +227,7 @@
private volatile long writeTimeout = DFLT_SES_WRITE_TIMEOUT;
/** Idle timeout. */
- private volatile long idleTimeout = ConnectorConfiguration.DFLT_IDLE_TIMEOUT;
+ private volatile long idleTimeout = DFLT_IDLE_TIMEOUT;
/** For test purposes only. */
private boolean skipWrite;
@@ -251,17 +247,17 @@
/** Whether direct mode is used. */
private final boolean directMode;
- /** */
- @Nullable private final MetricRegistryImpl mreg;
-
/** Received bytes count metric. */
- @Nullable private final LongAdderMetric rcvdBytesCntMetric;
+ @Nullable private final LongConsumer rcvdBytesCntMetric;
/** Sent bytes count metric. */
- @Nullable private final LongAdderMetric sentBytesCntMetric;
+ @Nullable private final LongConsumer sentBytesCntMetric;
/** Outbound messages queue size. */
- @Nullable private final LongAdderMetric outboundMessagesQueueSizeMetric;
+ @Nullable private final LongConsumer outboundMessagesQueueSizeMetric;
+
+ /** Per-session maximum outbound messages queue size metric. */
+ @Nullable private final LongConsumer maxMessagesQueueSizeMetric;
/** Sessions. */
private final GridConcurrentHashSet<GridSelectorNioSessionImpl> sessions = new GridConcurrentHashSet<>();
@@ -295,8 +291,8 @@
*/
private final boolean readWriteSelectorsAssign;
- /** Tracing processor. */
- private Tracing tracing;
+ /** Span manager. */
+ private SpanManager tracing;
/** Message factory. */
private final MessageFactory msgFactory;
@@ -325,7 +321,10 @@
* @param msgQueueLsnr Message queue size listener.
* @param readWriteSelectorsAssign If {@code true} then in/out connections are assigned to even/odd workers.
* @param workerLsnr Worker lifecycle listener.
- * @param mreg Metrics registry.
+ * @param rcvdBytesCntMetric Received bytes count metric, or {@code null} if metrics disabled.
+ * @param sentBytesCntMetric Sent bytes count metric, or {@code null} if metrics disabled.
+ * @param outboundMessagesQueueSizeMetric Per-session outbound messages queue size metric, or {@code null} if metrics disabled.
+ * @param maxMessagesQueueSizeMetric Per-session maximum outbound messages queue size metric, or {@code null} if metrics disabled.
* @param filters Filters for this server.
* @throws IgniteCheckedException If failed.
*/
@@ -351,8 +350,11 @@
IgniteBiInClosure<GridNioSession, Integer> msgQueueLsnr,
boolean readWriteSelectorsAssign,
@Nullable GridWorkerListener workerLsnr,
- @Nullable MetricRegistryImpl mreg,
- Tracing tracing,
+ @Nullable LongConsumer rcvdBytesCntMetric,
+ @Nullable LongConsumer sentBytesCntMetric,
+ @Nullable LongConsumer outboundMessagesQueueSizeMetric,
+ @Nullable LongConsumer maxMessagesQueueSizeMetric,
+ SpanManager tracing,
MessageFactory msgFactory,
GridNioFilter... filters
) throws IgniteCheckedException {
@@ -380,7 +382,11 @@
this.selectorSpins = selectorSpins;
this.readWriteSelectorsAssign = readWriteSelectorsAssign;
this.lsnr = lsnr;
- this.tracing = tracing == null ? new NoopTracing() : tracing;
+ this.rcvdBytesCntMetric = rcvdBytesCntMetric;
+ this.sentBytesCntMetric = sentBytesCntMetric;
+ this.outboundMessagesQueueSizeMetric = outboundMessagesQueueSizeMetric;
+ this.maxMessagesQueueSizeMetric = maxMessagesQueueSizeMetric;
+ this.tracing = tracing == null ? new NoopSpanManager() : tracing;
this.msgFactory = msgFactory;
filterChain = new GridNioFilterChain<>(log, lsnr, new HeadFilter(), filters);
@@ -433,7 +439,7 @@
clientWorkers.add(worker);
- clientThreads[i] = U.newThread(worker);
+ clientThreads[i] = CommonUtils.newThread(worker);
clientThreads[i].setDaemon(daemon);
}
@@ -443,13 +449,13 @@
this.skipRecoveryPred = skipRecoveryPred != null ? skipRecoveryPred : F.<Message>alwaysFalse();
- long balancePeriod = IgniteSystemProperties.getLong(
- IgniteSystemProperties.IGNITE_IO_BALANCE_PERIOD, DFLT_IO_BALANCE_PERIOD);
+ long balancePeriod = IgniteCommonsSystemProperties.getLong(
+ IgniteCommonsSystemProperties.IGNITE_IO_BALANCE_PERIOD, IgniteCommonsSystemProperties.DFLT_IO_BALANCE_PERIOD);
IgniteRunnable balancer0 = null;
if (balancePeriod > 0) {
- boolean rndBalance = IgniteSystemProperties.getBoolean(IGNITE_IO_BALANCE_RANDOM_BALANCE, false);
+ boolean rndBalance = IgniteCommonsSystemProperties.getBoolean(IGNITE_IO_BALANCE_RANDOM_BALANCE, false);
if (rndBalance)
balancer0 = new RandomBalancer();
@@ -461,27 +467,13 @@
}
this.balancer = balancer0;
+ }
- this.mreg = mreg;
-
- rcvdBytesCntMetric = mreg == null ?
- null : mreg.longAdderMetric(RECEIVED_BYTES_METRIC_NAME, RECEIVED_BYTES_METRIC_DESC);
-
- sentBytesCntMetric = mreg == null ?
- null : mreg.longAdderMetric(SENT_BYTES_METRIC_NAME, SENT_BYTES_METRIC_DESC);
-
- outboundMessagesQueueSizeMetric = mreg == null ? null : mreg.longAdderMetric(
- OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_NAME,
- OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_DESC
- );
-
- if (mreg != null) {
- mreg.register(SESSIONS_CNT_METRIC_NAME, sessions::size, "Active TCP sessions count.");
-
- boolean sslEnabled = Arrays.stream(filters).anyMatch(filter -> filter instanceof GridNioSslFilter);
-
- mreg.register(SSL_ENABLED_METRIC_NAME, () -> sslEnabled, "Whether SSL is enabled");
- }
+ /**
+ * @return Number of active TCP sessions.
+ */
+ public int activeTcpSessionsCount() {
+ return sessions.size();
}
/**
@@ -521,7 +513,7 @@
filterChain.start();
if (acceptWorker != null)
- U.newThread(acceptWorker).start();
+ CommonUtils.newThread(acceptWorker).start();
for (IgniteThread thread : clientThreads)
thread.start();
@@ -535,11 +527,11 @@
closed = true;
// Make sure to entirely stop acceptor if any.
- U.cancel(acceptWorker);
- U.join(acceptWorker, log);
+ CommonUtils.cancel(acceptWorker);
+ CommonUtils.join(acceptWorker, log);
- U.cancel(clientWorkers);
- U.join(clientWorkers, log);
+ CommonUtils.cancel(clientWorkers);
+ CommonUtils.join(clientWorkers, log);
filterChain.stop();
@@ -781,7 +773,8 @@
ses0.offerStateChange((GridNioServer.SessionChangeRequest)fut0);
}
catch (IgniteCheckedException e) {
- U.error(log, "Failed to notify NIO Server while resending messages [rmtNode=" + recoveryDesc.node().id() + ']', e);
+ CommonUtils.error(log,
+ "Failed to notify NIO Server while resending messages [rmtNode=" + recoveryDesc.node().id() + ']', e);
}
}
}
@@ -868,7 +861,7 @@
if (!F.isEmpty(msg)) {
synchronized (sb) {
if (sb.length() > 0)
- sb.append(U.nl());
+ sb.append(CommonUtils.nl());
sb.append(msg);
}
@@ -918,7 +911,7 @@
if (!F.isEmpty(msg)) {
synchronized (sb) {
if (sb.length() > 0)
- sb.append(U.nl());
+ sb.append(CommonUtils.nl());
sb.append(msg);
}
@@ -1043,7 +1036,7 @@
/**
* Gets configurable idle timeout for this session. If not set, default value is
- * {@link ConnectorConfiguration#DFLT_IDLE_TIMEOUT}.
+ * {@link #DFLT_IDLE_TIMEOUT}.
*
* @return Idle timeout in milliseconds.
*/
@@ -1097,8 +1090,8 @@
return selector;
}
catch (Throwable e) {
- U.close(srvrCh, log);
- U.close(selector, log);
+ CommonUtils.close(srvrCh, log);
+ CommonUtils.close(selector, log);
if (e instanceof Error)
throw (Error)e;
@@ -1215,10 +1208,10 @@
@Override protected void processRead(SelectionKey key) throws IOException {
if (skipRead) {
try {
- U.sleep(50);
+ CommonUtils.sleep(50);
}
catch (IgniteInterruptedCheckedException ignored) {
- U.warn(log, "Sleep has been interrupted.");
+ CommonUtils.warn(log, "Sleep has been interrupted.");
}
return;
@@ -1249,7 +1242,7 @@
log.trace("Bytes received [sockCh=" + sockCh + ", cnt=" + cnt + ']');
if (rcvdBytesCntMetric != null)
- rcvdBytesCntMetric.add(cnt);
+ rcvdBytesCntMetric.accept(cnt);
ses.bytesReceived(cnt);
@@ -1316,7 +1309,7 @@
span.addTag(SOCKET_WRITE_BYTES, () -> Integer.toString(cnt));
if (sentBytesCntMetric != null)
- sentBytesCntMetric.add(cnt);
+ sentBytesCntMetric.accept(cnt);
ses.bytesSent(cnt);
}
@@ -1324,7 +1317,7 @@
else {
// For test purposes only (skipWrite is set to true in tests only).
try {
- U.sleep(50);
+ CommonUtils.sleep(50);
}
catch (IgniteInterruptedCheckedException e) {
throw new IOException("Thread has been interrupted.", e);
@@ -1384,10 +1377,10 @@
@Override protected void processRead(SelectionKey key) throws IOException {
if (skipRead) {
try {
- U.sleep(50);
+ CommonUtils.sleep(50);
}
catch (IgniteInterruptedCheckedException ignored) {
- U.warn(log, "Sleep has been interrupted.");
+ CommonUtils.warn(log, "Sleep has been interrupted.");
}
return;
@@ -1418,7 +1411,7 @@
return;
if (rcvdBytesCntMetric != null)
- rcvdBytesCntMetric.add(cnt);
+ rcvdBytesCntMetric.accept(cnt);
ses.bytesReceived(cnt);
onRead(cnt);
@@ -1491,7 +1484,7 @@
int cnt = sockCh.write(sslNetBuf);
if (sentBytesCntMetric != null)
- sentBytesCntMetric.add(cnt);
+ sentBytesCntMetric.accept(cnt);
ses.bytesSent(cnt);
@@ -1578,14 +1571,14 @@
log.trace("Bytes sent [sockCh=" + sockCh + ", cnt=" + cnt + ']');
if (sentBytesCntMetric != null)
- sentBytesCntMetric.add(cnt);
+ sentBytesCntMetric.accept(cnt);
ses.bytesSent(cnt);
}
else {
// For test purposes only (skipWrite is set to true in tests only).
try {
- U.sleep(50);
+ CommonUtils.sleep(50);
}
catch (IgniteInterruptedCheckedException e) {
throw new IOException("Thread has been interrupted.", e);
@@ -1636,7 +1629,7 @@
Span span = tracing.create(SpanType.COMMUNICATION_SOCKET_WRITE, req.span());
try (TraceSurroundings ignore = span.equals(NoopSpan.INSTANCE) ? null : MTC.support(span)) {
- span.addTag(SpanTags.MESSAGE, () -> traceName(msg));
+ span.addTag(SpanTags.MESSAGE, () -> tracing.traceName(msg));
assert msg != null;
@@ -1687,7 +1680,7 @@
int cnt = sockCh.write(buf);
if (sentBytesCntMetric != null)
- sentBytesCntMetric.add(cnt);
+ sentBytesCntMetric.accept(cnt);
ses.bytesSent(cnt);
@@ -1778,7 +1771,7 @@
log.trace("Bytes sent [sockCh=" + sockCh + ", cnt=" + cnt + ']');
if (sentBytesCntMetric != null)
- sentBytesCntMetric.add(cnt);
+ sentBytesCntMetric.accept(cnt);
ses.bytesSent(cnt);
onWrite(cnt);
@@ -1786,7 +1779,7 @@
else {
// For test purposes only (skipWrite is set to true in tests only).
try {
- U.sleep(50);
+ CommonUtils.sleep(50);
}
catch (IgniteInterruptedCheckedException e) {
throw new IOException("Thread has been interrupted.", e);
@@ -1839,7 +1832,7 @@
Span span = tracing.create(SpanType.COMMUNICATION_SOCKET_WRITE, req.span());
try (TraceSurroundings ignore = span.equals(NoopSpan.INSTANCE) ? null : MTC.support(span)) {
- span.addTag(SpanTags.MESSAGE, () -> traceName(msg));
+ span.addTag(SpanTags.MESSAGE, () -> tracing.traceName(msg));
int startPos = buf.position();
@@ -1981,10 +1974,10 @@
}
catch (IgniteCheckedException e) {
if (!Thread.currentThread().isInterrupted()) {
- U.error(log, "Failed to read data from remote connection (will wait for " +
+ CommonUtils.error(log, "Failed to read data from remote connection (will wait for " +
ERR_WAIT_TIME + "ms).", e);
- U.sleep(ERR_WAIT_TIME);
+ CommonUtils.sleep(ERR_WAIT_TIME);
reset = true;
}
@@ -1992,7 +1985,7 @@
}
}
catch (Throwable e) {
- U.error(log, "Caught unhandled exception in NIO worker thread (restart the node).", e);
+ CommonUtils.error(log, "Caught unhandled exception in NIO worker thread (restart the node).", e);
err = e;
@@ -2032,7 +2025,7 @@
SelectedSelectionKeySet selectedKeySet = new SelectedSelectionKeySet();
Class<?> selectorImplCls =
- Class.forName("sun.nio.ch.SelectorImpl", false, U.gridClassLoader());
+ Class.forName("sun.nio.ch.SelectorImpl", false, CommonUtils.gridClassLoader());
// Ensure the current selector implementation is what we can instrument.
if (!selectorImplCls.isAssignableFrom(selector.getClass()))
@@ -2114,7 +2107,7 @@
*/
private void bodyInternal() throws IgniteCheckedException, InterruptedException {
try {
- long lastIdleCheck = U.currentTimeMillis();
+ long lastIdleCheck = CommonUtils.currentTimeMillis();
while (selector.isOpen() && !(isCancelled() && changeReqs.isEmpty())) {
SessionChangeRequest req;
@@ -2148,7 +2141,7 @@
break;
// Just in case we do busy selects.
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
if (now - lastIdleCheck > 2000) {
lastIdleCheck = now;
@@ -2197,7 +2190,7 @@
select = false;
}
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
if (now - lastIdleCheck > 2000) {
lastIdleCheck = now;
@@ -2233,7 +2226,7 @@
if (log.isDebugEnabled())
log.debug("Closing NIO selector.");
- U.close(selector, log);
+ CommonUtils.close(selector, log);
}
}
}
@@ -2266,7 +2259,7 @@
if (key != null)
key.cancel();
- U.closeQuiet(ch);
+ CommonUtils.closeQuiet(ch);
req.onDone();
@@ -2448,7 +2441,7 @@
.append(", bytesRcvd0=").append(bytesRcvd0)
.append(", bytesSent=").append(bytesSent)
.append(", bytesSent0=").append(bytesSent0)
- .append("]").append(U.nl());
+ .append("]").append(CommonUtils.nl());
}
/**
@@ -2506,8 +2499,8 @@
Object msg = req.message();
- if (shortInfo && msg instanceof GridIoMessage)
- msg = ((GridIoMessage)msg).message().getClass().getSimpleName();
+ if (shortInfo && msg instanceof MessageWrapper)
+ msg = ((MessageWrapper)msg).message().getClass().getSimpleName();
sb.append(msg);
@@ -2550,8 +2543,8 @@
for (SessionWriteRequest req : ses.writeQueue()) {
Object msg = req.message();
- if (shortInfo && msg instanceof GridIoMessage)
- msg = ((GridIoMessage)msg).message().getClass().getSimpleName();
+ if (shortInfo && msg instanceof MessageWrapper)
+ msg = ((MessageWrapper)msg).message().getClass().getSimpleName();
if (cnt == 0)
sb.append(",\n opQueue=[").append(msg);
@@ -2614,7 +2607,7 @@
}
catch (Exception | Error e) { // TODO IGNITE-2659.
try {
- U.sleep(1000);
+ CommonUtils.sleep(1000);
}
catch (IgniteInterruptedCheckedException ignore) {
// No-op.
@@ -2623,7 +2616,7 @@
GridSelectorNioSessionImpl ses = attach.session();
if (!closed)
- U.error(log, "Failed to process selector key [ses=" + ses + ']', e);
+ CommonUtils.error(log, "Failed to process selector key [ses=" + ses + ']', e);
else if (log.isDebugEnabled())
log.debug("Failed to process selector key [ses=" + ses + ", err=" + e + ']');
@@ -2681,7 +2674,7 @@
}
catch (Exception | Error e) { // TODO IGNITE-2659.
try {
- U.sleep(1000);
+ CommonUtils.sleep(1000);
}
catch (IgniteInterruptedCheckedException ignore) {
// No-op.
@@ -2690,7 +2683,7 @@
GridSelectorNioSessionImpl ses = attach.session();
if (!closed)
- U.error(log, "Failed to process selector key [ses=" + ses + ']', e);
+ CommonUtils.error(log, "Failed to process selector key [ses=" + ses + ']', e);
else if (log.isDebugEnabled())
log.debug("Failed to process selector key [ses=" + ses + ", err=" + e + ']');
}
@@ -2703,7 +2696,7 @@
* @param keys Keys registered to selector.
*/
private void checkIdle(Iterable<SelectionKey> keys) {
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
for (SelectionKey key : keys) {
GridNioKeyAttachment attach = (GridNioKeyAttachment)key.attachment();
@@ -2782,7 +2775,9 @@
(InetSocketAddress)sockCh.getRemoteAddress(),
fut.accepted(),
sndQueueLimit,
- mreg,
+ outboundMessagesQueueSizeMetric,
+ maxMessagesQueueSizeMetric,
+ tracing,
writeBuf,
readBuf);
@@ -2847,11 +2842,11 @@
ses.onServerStopped();
}
catch (ClosedChannelException e) {
- U.warn(log, "Failed to register accepted socket channel to selector (channel was closed): "
+ CommonUtils.warn(log, "Failed to register accepted socket channel to selector (channel was closed): "
+ sock.getRemoteSocketAddress(), e);
}
catch (IOException e) {
- U.error(log, "Failed to get socket addresses.", e);
+ CommonUtils.error(log, "Failed to get socket addresses.", e);
}
}
@@ -2878,8 +2873,8 @@
}
}
finally {
- U.close(key, log);
- U.close(sock, log);
+ CommonUtils.close(key, log);
+ CommonUtils.close(sock, log);
}
}
@@ -2908,11 +2903,11 @@
if (e != null) {
// Print stack trace only if has runtime exception in it's cause.
if (e.hasCause(IOException.class))
- U.warn(log, "Client disconnected abruptly due to network connection loss or because " +
+ CommonUtils.warn(log, "Client disconnected abruptly due to network connection loss or because " +
"the connection was left open on application shutdown. [cls=" + e.getClass() +
", msg=" + e.getMessage() + ']');
else
- U.error(log, "Closing NIO session because of unhandled exception.", e);
+ CommonUtils.error(log, "Closing NIO session because of unhandled exception.", e);
}
sessions.remove(ses);
@@ -3000,7 +2995,7 @@
register(sesFut);
}
catch (IOException e) {
- U.closeQuiet(ch);
+ CommonUtils.closeQuiet(ch);
sesFut.onDone(new GridNioException("Failed to connect to node", e));
@@ -3058,18 +3053,6 @@
}
/**
- * Gets outbound messages queue size.
- *
- * @return Write queue size.
- */
- public int outboundMessagesQueueSize() {
- if (outboundMessagesQueueSizeMetric == null)
- return -1;
-
- return (int)outboundMessagesQueueSizeMetric.value();
- }
-
- /**
* A separate thread that will accept incoming connections and schedule read to some worker.
*/
private class GridNioAcceptWorker extends GridWorker {
@@ -3121,10 +3104,10 @@
}
catch (IgniteCheckedException e) {
if (!Thread.currentThread().isInterrupted()) {
- U.error(log, "Failed to accept remote connection (will wait for " + ERR_WAIT_TIME + "ms).",
+ CommonUtils.error(log, "Failed to accept remote connection (will wait for " + ERR_WAIT_TIME + "ms).",
e);
- U.sleep(ERR_WAIT_TIME);
+ CommonUtils.sleep(ERR_WAIT_TIME);
reset = true;
}
@@ -3213,12 +3196,12 @@
// Close all channels registered with selector.
for (SelectionKey key : selector.keys())
- U.close(key.channel(), log);
+ CommonUtils.close(key.channel(), log);
if (log.isDebugEnabled())
log.debug("Closing NIO selector.");
- U.close(selector, log);
+ CommonUtils.close(selector, log);
}
}
@@ -3277,9 +3260,9 @@
offerBalanced(new NioOperationFuture<>(sockCh, true, null), null);
}
catch (IgniteCheckedException e) {
- U.warn(log, "Incoming connection was rejected [addr=" + sockCh.socket().getRemoteSocketAddress() + ']', e);
+ CommonUtils.warn(log, "Incoming connection was rejected [addr=" + sockCh.socket().getRemoteSocketAddress() + ']', e);
- U.close(sockCh, log);
+ CommonUtils.close(sockCh, log);
}
}
}
@@ -3946,11 +3929,20 @@
/** Worker lifecycle listener to be used by server's worker threads. */
private GridWorkerListener workerLsnr;
- /** Metrics registry. */
- private MetricRegistryImpl mreg;
+ /** Received bytes count metric. */
+ private LongConsumer rcvdBytesCntMetric;
- /** Tracing processor */
- private Tracing tracing;
+ /** Sent bytes count metric. */
+ private LongConsumer sentBytesCntMetric;
+
+ /** Per-session outbound messages queue size metric. */
+ private LongConsumer outboundMessagesQueueSizeMetric;
+
+ /** Per-session maximum outbound messages queue size metric. */
+ private LongConsumer maxMessagesQueueSizeMetric;
+
+ /** Span manager */
+ private SpanManager tracing;
/** Message factory. */
private MessageFactory msgFactory;
@@ -3984,7 +3976,10 @@
msgQueueLsnr,
readWriteSelectorsAssign,
workerLsnr,
- mreg,
+ rcvdBytesCntMetric,
+ sentBytesCntMetric,
+ outboundMessagesQueueSizeMetric,
+ maxMessagesQueueSizeMetric,
tracing,
msgFactory,
filters != null ? Arrays.copyOf(filters, filters.length) : EMPTY_FILTERS
@@ -4010,10 +4005,10 @@
}
/**
- * @param tracing Tracing processor.
+ * @param tracing Span manager.
* @return This for chaining.
*/
- public Builder<T> tracing(Tracing tracing) {
+ public Builder<T> tracing(SpanManager tracing) {
this.tracing = tracing;
return this;
@@ -4253,11 +4248,41 @@
}
/**
- * @param mreg Metrics registry.
+ * @param rcvdBytesCntMetric Received bytes count metric.
* @return This for chaining.
*/
- public Builder<T> metricRegistry(MetricRegistryImpl mreg) {
- this.mreg = mreg;
+ public Builder<T> receivedBytesMetric(LongConsumer rcvdBytesCntMetric) {
+ this.rcvdBytesCntMetric = rcvdBytesCntMetric;
+
+ return this;
+ }
+
+ /**
+ * @param sentBytesCntMetric Sent bytes count metric.
+ * @return This for chaining.
+ */
+ public Builder<T> sentBytesMetric(LongConsumer sentBytesCntMetric) {
+ this.sentBytesCntMetric = sentBytesCntMetric;
+
+ return this;
+ }
+
+ /**
+ * @param outboundMessagesQueueSizeMetric Per-session outbound messages queue size metric.
+ * @return This for chaining.
+ */
+ public Builder<T> outboundMessagesQueueSizeMetric(LongConsumer outboundMessagesQueueSizeMetric) {
+ this.outboundMessagesQueueSizeMetric = outboundMessagesQueueSizeMetric;
+
+ return this;
+ }
+
+ /**
+ * @param maxMessagesQueueSizeMetric Per-session maximum outbound messages queue size metric.
+ * @return This for chaining.
+ */
+ public Builder<T> maxMessagesQueueSizeMetric(LongConsumer maxMessagesQueueSizeMetric) {
+ this.maxMessagesQueueSizeMetric = maxMessagesQueueSizeMetric;
return this;
}
@@ -4295,7 +4320,7 @@
/** {@inheritDoc} */
@Override public void run() {
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
if (lastBalance + balancePeriod < now) {
lastBalance = now;
@@ -4358,9 +4383,9 @@
long bytesSent0 = ses0.bytesSent0();
if (bytesSent0 < threshold &&
- (ses == null || delta > U.safeAbs(bytesSent0 - sentDiff / 2))) {
+ (ses == null || delta > CommonUtils.safeAbs(bytesSent0 - sentDiff / 2))) {
ses = ses0;
- delta = U.safeAbs(bytesSent0 - sentDiff / 2);
+ delta = CommonUtils.safeAbs(bytesSent0 - sentDiff / 2);
}
}
@@ -4391,9 +4416,9 @@
long bytesRcvd0 = ses0.bytesReceived0();
if (bytesRcvd0 < threshold &&
- (ses == null || delta > U.safeAbs(bytesRcvd0 - rcvdDiff / 2))) {
+ (ses == null || delta > CommonUtils.safeAbs(bytesRcvd0 - rcvdDiff / 2))) {
ses = ses0;
- delta = U.safeAbs(bytesRcvd0 - rcvdDiff / 2);
+ delta = CommonUtils.safeAbs(bytesRcvd0 - rcvdDiff / 2);
}
}
@@ -4441,7 +4466,7 @@
/** {@inheritDoc} */
@Override public void run() {
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
if (lastBalance + balancePeriod < now) {
lastBalance = now;
@@ -4485,9 +4510,9 @@
long bytesSent0 = ses0.bytesSent0();
if (bytesSent0 < threshold &&
- (ses == null || delta > U.safeAbs(bytesSent0 - bytesDiff / 2))) {
+ (ses == null || delta > CommonUtils.safeAbs(bytesSent0 - bytesDiff / 2))) {
ses = ses0;
- delta = U.safeAbs(bytesSent0 - bytesDiff / 2);
+ delta = CommonUtils.safeAbs(bytesSent0 - bytesDiff / 2);
}
}
@@ -4594,4 +4619,10 @@
*/
NioOperation operation();
}
+
+ /** */
+ public interface MessageWrapper {
+ /** */
+ public Message message();
+ }
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerBuffer.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerBuffer.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerBuffer.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerBuffer.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerListener.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerListener.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerListener.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerListener.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerListenerAdapter.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerListenerAdapter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerListenerAdapter.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioServerListenerAdapter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioSession.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
similarity index 96%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
index 0211eb8..56638bc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionImpl.java
@@ -24,10 +24,10 @@
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.future.GridFinishedFuture;
import org.apache.ignite.internal.util.nio.ssl.GridSslMeta;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.jetbrains.annotations.Nullable;
@@ -103,7 +103,7 @@
this.rmtAddr = rmtAddr;
this.accepted = accepted;
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
sndSchedTime = now;
createTime = now;
@@ -317,7 +317,7 @@
bytesSent += cnt;
bytesSent0 += cnt;
- lastSndTime = U.currentTimeMillis();
+ lastSndTime = CommonUtils.currentTimeMillis();
}
/**
@@ -331,14 +331,14 @@
bytesRcvd += cnt;
bytesRcvd0 += cnt;
- lastRcvTime = U.currentTimeMillis();
+ lastRcvTime = CommonUtils.currentTimeMillis();
}
/**
* Resets send schedule time to avoid multiple idle notifications.
*/
public void resetSendScheduleTime() {
- sndSchedTime = U.currentTimeMillis();
+ sndSchedTime = CommonUtils.currentTimeMillis();
}
/**
@@ -348,7 +348,7 @@
* {@code false} if session was already closed.
*/
public boolean setClosed() {
- return closeTime.compareAndSet(0, U.currentTimeMillis());
+ return closeTime.compareAndSet(0, CommonUtils.currentTimeMillis());
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioSessionMetaKey.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioTracerFilter.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioTracerFilter.java
similarity index 92%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioTracerFilter.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioTracerFilter.java
index 650aeb2..4764463 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioTracerFilter.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioTracerFilter.java
@@ -23,9 +23,9 @@
import org.apache.ignite.internal.IgniteInternalFuture;
import org.apache.ignite.internal.processors.tracing.MTC;
import org.apache.ignite.internal.processors.tracing.NoopSpan;
-import org.apache.ignite.internal.processors.tracing.NoopTracing;
+import org.apache.ignite.internal.processors.tracing.NoopSpanManager;
import org.apache.ignite.internal.processors.tracing.Span;
-import org.apache.ignite.internal.processors.tracing.Tracing;
+import org.apache.ignite.internal.processors.tracing.SpanManager;
import org.apache.ignite.internal.processors.tracing.messages.SpanTransport;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.S;
@@ -42,7 +42,7 @@
private IgniteLogger log;
/** Tracing processor. */
- private final Tracing tracer;
+ private final SpanManager tracer;
/**
* Creates a tracer filter.
@@ -50,11 +50,11 @@
* @param log Log instance to use.
* @param tracer Tracing processor.
*/
- public GridNioTracerFilter(IgniteLogger log, Tracing tracer) {
+ public GridNioTracerFilter(IgniteLogger log, SpanManager tracer) {
super("GridNioTracerFilter");
this.log = log;
- this.tracer = tracer == null ? new NoopTracing() : tracer;
+ this.tracer = tracer == null ? new NoopSpanManager() : tracer;
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioWorker.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioWorker.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridNioWorker.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridNioWorker.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
similarity index 87%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
index 5619419..267851b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridSelectorNioSessionImpl.java
@@ -26,25 +26,19 @@
import java.util.concurrent.ConcurrentLinkedDeque;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.function.LongConsumer;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.processors.metric.MetricRegistryImpl;
-import org.apache.ignite.internal.processors.metric.impl.LongAdderMetric;
-import org.apache.ignite.internal.processors.metric.impl.MaxValueMetric;
import org.apache.ignite.internal.processors.tracing.MTC;
+import org.apache.ignite.internal.processors.tracing.SpanManager;
import org.apache.ignite.internal.util.tostring.GridToStringExclude;
import org.apache.ignite.internal.util.typedef.internal.LT;
import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.util.deque.FastSizeDeque;
import org.jetbrains.annotations.Nullable;
-import static org.apache.ignite.internal.processors.tracing.messages.TraceableMessagesTable.traceName;
-import static org.apache.ignite.internal.util.nio.GridNioServer.MAX_MESSAGES_QUEUE_SIZE_METRIC_DESC;
-import static org.apache.ignite.internal.util.nio.GridNioServer.MAX_MESSAGES_QUEUE_SIZE_METRIC_NAME;
-import static org.apache.ignite.internal.util.nio.GridNioServer.OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_DESC;
-import static org.apache.ignite.internal.util.nio.GridNioServer.OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_NAME;
-
/**
* Session implementation bound to selector API and socket API.
* Note that this implementation requires non-null values for local and remote
@@ -93,10 +87,13 @@
private volatile boolean closeSocket = true;
/** Outbound messages queue size metric. */
- @Nullable private final LongAdderMetric outboundMessagesQueueSizeMetric;
+ @Nullable private final LongConsumer outboundMessagesQueueSizeMetric;
/** Maximum outbound messages queue size metric. */
- @Nullable private final MaxValueMetric maxMessagesQueueSizeMetric;
+ @Nullable private final LongConsumer maxMessagesQueueSizeMetric;
+
+ /** Span manager used to resolve trace names for logging. */
+ private final SpanManager tracing;
/**
* Creates session instance.
@@ -108,6 +105,9 @@
* @param rmtAddr Remote address.
* @param accepted Accepted flag.
* @param sndQueueLimit Send queue limit.
+ * @param outboundMessagesQueueSizeMetric Outbound messages queue size metric, or {@code null} if metrics disabled.
+ * @param maxMessagesQueueSizeMetric Maximum outbound messages queue size metric, or {@code null} if metrics disabled.
+ * @param tracing Span manager used to resolve trace names for logging.
* @param writeBuf Write buffer.
* @param readBuf Read buffer.
*/
@@ -119,7 +119,9 @@
InetSocketAddress rmtAddr,
boolean accepted,
int sndQueueLimit,
- @Nullable MetricRegistryImpl mreg,
+ @Nullable LongConsumer outboundMessagesQueueSizeMetric,
+ @Nullable LongConsumer maxMessagesQueueSizeMetric,
+ SpanManager tracing,
@Nullable ByteBuffer writeBuf,
@Nullable ByteBuffer readBuf
) {
@@ -151,17 +153,11 @@
this.readBuf = readBuf;
}
- outboundMessagesQueueSizeMetric = mreg == null ? null : mreg.longAdderMetric(
- OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_NAME,
- OUTBOUND_MESSAGES_QUEUE_SIZE_METRIC_DESC
- );
+ this.outboundMessagesQueueSizeMetric = outboundMessagesQueueSizeMetric;
- maxMessagesQueueSizeMetric = mreg == null ? null : mreg.maxValueMetric(
- MAX_MESSAGES_QUEUE_SIZE_METRIC_NAME,
- MAX_MESSAGES_QUEUE_SIZE_METRIC_DESC,
- 60_000,
- 5
- );
+ this.maxMessagesQueueSizeMetric = maxMessagesQueueSizeMetric;
+
+ this.tracing = tracing;
}
/** {@inheritDoc} */
@@ -323,17 +319,17 @@
boolean res = queue.offerFirst(writeFut);
- MTC.span().addLog(() -> "Added to system queue - " + traceName(writeFut.message()));
+ MTC.span().addLog(() -> "Added to system queue - " + tracing.traceName((Message)writeFut.message()));
assert res : "Future was not added to queue";
if (outboundMessagesQueueSizeMetric != null)
- outboundMessagesQueueSizeMetric.increment();
+ outboundMessagesQueueSizeMetric.accept(1);
if (maxMessagesQueueSizeMetric != null) {
int queueSize = queue.sizex();
- maxMessagesQueueSizeMetric.update(queueSize);
+ maxMessagesQueueSizeMetric.accept(queueSize);
return queueSize;
}
@@ -361,17 +357,17 @@
boolean res = queue.offer(writeFut);
- MTC.span().addLog(() -> "Added to queue - " + traceName(writeFut.message()));
+ MTC.span().addLog(() -> "Added to queue - " + tracing.traceName((Message)writeFut.message()));
assert res : "Future was not added to queue";
if (outboundMessagesQueueSizeMetric != null)
- outboundMessagesQueueSizeMetric.increment();
+ outboundMessagesQueueSizeMetric.accept(1);
if (maxMessagesQueueSizeMetric != null) {
int queueSize = queue.sizex();
- maxMessagesQueueSizeMetric.update(queueSize);
+ maxMessagesQueueSizeMetric.accept(queueSize);
return queueSize;
}
@@ -390,10 +386,10 @@
assert add;
if (outboundMessagesQueueSizeMetric != null)
- outboundMessagesQueueSizeMetric.add(futs.size());
+ outboundMessagesQueueSizeMetric.accept(futs.size());
if (maxMessagesQueueSizeMetric != null)
- maxMessagesQueueSizeMetric.update(futs.size());
+ maxMessagesQueueSizeMetric.accept(futs.size());
}
/**
@@ -404,7 +400,7 @@
if (last != null) {
if (outboundMessagesQueueSizeMetric != null)
- outboundMessagesQueueSizeMetric.decrement();
+ outboundMessagesQueueSizeMetric.accept(-1);
if (sem != null && !last.messageThread())
sem.release();
@@ -439,7 +435,7 @@
boolean rmv = queue.removeLastOccurrence(fut);
if (rmv && outboundMessagesQueueSizeMetric != null)
- outboundMessagesQueueSizeMetric.decrement();
+ outboundMessagesQueueSizeMetric.accept(-1);
return rmv;
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridTcpNioCommunicationClient.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridTcpNioCommunicationClient.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridTcpNioCommunicationClient.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridTcpNioCommunicationClient.java
index 4ff126f..f553f8d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/GridTcpNioCommunicationClient.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/GridTcpNioCommunicationClient.java
@@ -25,9 +25,9 @@
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.lang.IgniteInClosure2X;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.jetbrains.annotations.Nullable;
@@ -135,7 +135,7 @@
/** {@inheritDoc} */
@Override public long getIdleTime() {
- long now = U.currentTimeMillis();
+ long now = CommonUtils.currentTimeMillis();
// Session can be used for receiving and sending.
return Math.min(Math.min(now - ses.lastReceiveTime(), now - ses.lastSendScheduleTime()),
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/SelectedSelectionKeySet.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/SelectedSelectionKeySet.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/SelectedSelectionKeySet.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/SelectedSelectionKeySet.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/SessionWriteRequest.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/SessionWriteRequest.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/SessionWriteRequest.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/SessionWriteRequest.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/package-info.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/package-info.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/package-info.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/package-info.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
index 1da7c8a..bcf8580 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/BlockingSslHandler.java
@@ -28,8 +28,8 @@
import javax.net.ssl.SSLException;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.nio.GridNioException;
-import org.apache.ignite.internal.util.typedef.internal.U;
import static javax.net.ssl.SSLEngineResult.HandshakeStatus.FINISHED;
import static javax.net.ssl.SSLEngineResult.HandshakeStatus.NEED_TASK;
@@ -171,7 +171,7 @@
case NEED_WRAP: {
// If the output buffer has remaining data, clear it.
if (outNetBuf.hasRemaining())
- U.warn(log, "Output net buffer has unsent bytes during handshake (will clear). ");
+ CommonUtils.warn(log, "Output net buffer has unsent bytes during handshake (will clear). ");
outNetBuf.clear();
@@ -301,7 +301,7 @@
// If we received close_notify but not all bytes has been read by SSL engine, print a warning.
if (buf.hasRemaining())
- U.warn(log, "Got unread bytes after receiving close_notify message (will ignore).");
+ CommonUtils.warn(log, "Got unread bytes after receiving close_notify message (will ignore).");
}
inNetBuf.clear();
@@ -539,7 +539,7 @@
*/
private void writeNetBuffer() throws IgniteCheckedException {
try {
- U.writeFully(ch, outNetBuf);
+ CommonUtils.writeFully(ch, outNetBuf);
}
catch (IOException e) {
throw new IgniteCheckedException("Failed to write byte to socket.", e);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
similarity index 91%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
index ab9f299..9abcae2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslFilter.java
@@ -20,6 +20,7 @@
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
+import java.util.function.LongConsumer;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLEngine;
import javax.net.ssl.SSLException;
@@ -27,16 +28,13 @@
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.IgniteInternalFuture;
-import org.apache.ignite.internal.processors.metric.MetricRegistryImpl;
-import org.apache.ignite.internal.processors.metric.impl.HistogramMetricImpl;
-import org.apache.ignite.internal.processors.metric.impl.IntMetricImpl;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.future.GridFinishedFuture;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.nio.GridNioException;
import org.apache.ignite.internal.util.nio.GridNioFilterAdapter;
import org.apache.ignite.internal.util.nio.GridNioSession;
import org.apache.ignite.internal.util.nio.GridNioSessionMetaKey;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.jetbrains.annotations.Nullable;
@@ -86,10 +84,10 @@
@Nullable private Exception onSessionOpenedException;
/** Metric that indicates sessions count that were rejected due to SSL errors. */
- @Nullable private final IntMetricImpl rejectedSesCnt;
+ @Nullable private final Runnable rejectedSesCnt;
/** Histogram that provides distribution of SSL handshake duration. */
- @Nullable private final HistogramMetricImpl handshakeDuration;
+ @Nullable private final LongConsumer handshakeDuration;
/**
* Creates SSL filter.
@@ -98,14 +96,16 @@
* @param directBuf Direct buffer flag.
* @param order Byte order.
* @param log Logger to use.
- * @param mreg Optional metric registry.
+ * @param handshakeDuration Records SSL handshake duration (ms), or {@code null} if metrics disabled.
+ * @param rejectedSesCnt Increments the rejected-sessions counter, or {@code null} if metrics disabled.
*/
public GridNioSslFilter(
SSLContext sslCtx,
boolean directBuf,
ByteOrder order,
IgniteLogger log,
- @Nullable MetricRegistryImpl mreg
+ @Nullable LongConsumer handshakeDuration,
+ @Nullable Runnable rejectedSesCnt
) {
super("SSL filter");
@@ -113,17 +113,8 @@
this.sslCtx = sslCtx;
this.directBuf = directBuf;
this.order = order;
-
- handshakeDuration = mreg == null ? null : mreg.histogram(
- SSL_HANDSHAKE_DURATION_HISTOGRAM_METRIC_NAME,
- new long[] {250, 500, 1000},
- "SSL handshake duration in milliseconds."
- );
-
- rejectedSesCnt = mreg == null ? null : mreg.intMetric(
- SSL_REJECTED_SESSIONS_CNT_METRIC_NAME,
- "TCP sessions count that were rejected due to SSL errors."
- );
+ this.handshakeDuration = handshakeDuration;
+ this.rejectedSesCnt = rejectedSesCnt;
}
/**
@@ -253,7 +244,7 @@
long startTime = System.nanoTime();
- fut.listen(() -> handshakeDuration.value(U.nanosToMillis(System.nanoTime() - startTime)));
+ fut.listen(() -> handshakeDuration.accept(CommonUtils.nanosToMillis(System.nanoTime() - startTime)));
}
hnd.handshake();
@@ -262,7 +253,7 @@
}
catch (SSLException e) {
onSessionOpenedException = e;
- U.error(log, "Failed to start SSL handshake (will close inbound connection): " + ses, e);
+ CommonUtils.error(log, "Failed to start SSL handshake (will close inbound connection): " + ses, e);
ses.close();
}
@@ -275,7 +266,7 @@
if (fut != null) {
if (rejectedSesCnt != null)
- rejectedSesCnt.increment();
+ rejectedSesCnt.run();
fut.onDone(new IgniteCheckedException("SSL handshake failed (connection closed).", onSessionOpenedException));
}
@@ -455,7 +446,7 @@
hnd.writeNetBuffer(null);
}
catch (SSLException e) {
- U.warn(log, "Failed to shutdown SSL session gracefully (will force close) [ex=" + e + ", ses=" + ses + ']');
+ CommonUtils.warn(log, "Failed to shutdown SSL session gracefully (will force close) [ex=" + e + ", ses=" + ses + ']');
}
return proceedSessionClose(ses);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
index 13cf4ab..0b22525 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
+++ b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridNioSslHandler.java
@@ -30,10 +30,10 @@
import org.apache.ignite.IgniteException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.internal.IgniteInternalFuture;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.nio.GridNioException;
import org.apache.ignite.internal.util.nio.GridNioSession;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteInClosure;
import org.jetbrains.annotations.Nullable;
@@ -197,7 +197,7 @@
if (log.isDebugEnabled())
log.debug("Entered handshake(): [handshakeStatus=" + handshakeStatus + ", ses=" + ses + ']');
- long startTs = U.currentTimeMillis();
+ long startTs = CommonUtils.currentTimeMillis();
lock();
@@ -258,7 +258,7 @@
case NEED_WRAP: {
// If the output buffer has remaining data, clear it.
if (outNetBuf.hasRemaining())
- U.warn(log, "Output net buffer has unsent bytes during handshake (will clear): " + ses);
+ CommonUtils.warn(log, "Output net buffer has unsent bytes during handshake (will clear): " + ses);
outNetBuf.clear();
@@ -287,7 +287,7 @@
finally {
unlock();
- long elapsed = U.currentTimeMillis() - startTs;
+ long elapsed = CommonUtils.currentTimeMillis() - startTs;
if (elapsed > LONG_HANDSHAKE_THRESHOLD_MS && log.isInfoEnabled()) {
log.info("Handshake took too long: [millis=" + elapsed + ", handshakeStatus=" + handshakeStatus +
@@ -334,7 +334,7 @@
// If we received close_notify but not all bytes has been read by SSL engine, print a warning.
if (buf.hasRemaining())
- U.warn(log, "Got unread bytes after receiving close_notify message (will ignore): " + ses);
+ CommonUtils.warn(log, "Got unread bytes after receiving close_notify message (will ignore): " + ses);
}
inNetBuf.clear();
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridSslMeta.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridSslMeta.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridSslMeta.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/GridSslMeta.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/package-info.java b/modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/package-info.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/util/nio/ssl/package-info.java
rename to modules/nio/src/main/java/org/apache/ignite/internal/util/nio/ssl/package-info.java
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/Message.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/Message.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/Message.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/Message.java
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageArrayType.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageArrayType.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageArrayType.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageArrayType.java
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
index b28e672..b98e79a 100644
--- a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
+++ b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionItemType.java
@@ -83,6 +83,9 @@
/** Ignite UUID. */
IGNITE_UUID,
+ /** GridCacheVersion */
+ GRID_CACHE_VERSION,
+
/** Message. */
MSG,
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionType.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionType.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionType.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageCollectionType.java
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageFactory.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageFactory.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageFactory.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageFactory.java
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageMapType.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageMapType.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageMapType.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageMapType.java
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
index 05390bc..796acc4 100644
--- a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
+++ b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageReader.java
@@ -25,6 +25,7 @@
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.lang.IgniteUuid;
@@ -274,6 +275,9 @@
/** @return Ignite product version. */
IgniteProductVersion readIgniteProductVersion();
+ /** @return Grid cache version. */
+ GridCacheVersion readGridCacheVersion();
+
/**
* Tells whether last invocation of any of {@code readXXX(...)}
* methods has fully written the value. {@code False} is returned
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageSerializer.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageSerializer.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageSerializer.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageSerializer.java
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageType.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageType.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageType.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageType.java
diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
rename to modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
index 4386c8f..019bab8 100644
--- a/modules/core/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
+++ b/modules/nio/src/main/java/org/apache/ignite/plugin/extensions/communication/MessageWriter.java
@@ -25,6 +25,7 @@
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.cache.CacheObject;
import org.apache.ignite.internal.processors.cache.KeyCacheObject;
+import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.util.GridLongList;
import org.apache.ignite.lang.IgniteProductVersion;
import org.apache.ignite.lang.IgniteUuid;
@@ -338,6 +339,14 @@
public boolean writeIgniteProductVersion(IgniteProductVersion ver);
/**
+ * Writes ignite cache version.
+ *
+ * @param ver Version.
+ * @return Whether value was fully written.
+ */
+ public boolean writeGridCacheVersion(GridCacheVersion ver);
+
+ /**
* @return Whether header of current message is already written.
*/
public boolean isHeaderWritten();
diff --git a/modules/platforms/dotnet/Apache.Ignite.AspNet.Tests/App.config b/modules/platforms/dotnet/Apache.Ignite.AspNet.Tests/App.config
index 016078e..9dad03a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.AspNet.Tests/App.config
+++ b/modules/platforms/dotnet/Apache.Ignite.AspNet.Tests/App.config
@@ -29,8 +29,8 @@
<gcServer enabled="true"/>
</runtime>
- <igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" igniteInstanceName="myGrid1">
- <discoverySpi type="TcpDiscoverySpi">
+ <igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" igniteInstanceName="myGrid1" localhost="127.0.0.1">
+ <discoverySpi type="TcpDiscoverySpi" joinTimeout="0:2:0">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500</string>
@@ -44,7 +44,7 @@
</igniteConfiguration>
<igniteConfiguration2 igniteInstanceName="myGrid2" localhost="127.0.0.1">
- <discoverySpi type="TcpDiscoverySpi">
+ <discoverySpi type="TcpDiscoverySpi" joinTimeout="0:2:0">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500</string>
@@ -58,7 +58,7 @@
</igniteConfiguration2>
<igniteConfiguration3 igniteInstanceName="myGrid3" localhost="127.0.0.1">
- <discoverySpi type="TcpDiscoverySpi">
+ <discoverySpi type="TcpDiscoverySpi" joinTimeout="0:2:0">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500</string>
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
index cd25ad6..5803550 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Binary/BinarySelfTest.cs
@@ -57,6 +57,7 @@
"的的abcdкириллица",
new string(new[] {(char) 0xD801, (char) 0xDC37}),
"Ḽơᶉëᶆ ȋṕšᶙṁ",
+ "kjkl\r\nklk;",
"A_\ud83e\udd26\ud83c\udffc\u200d\u2642\ufe0f_B" // A_🤦🏼♂️_B
};
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeTaskSessionTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeTaskSessionTest.cs
index e336b52..6c4639d 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeTaskSessionTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Compute/ComputeTaskSessionTest.cs
@@ -75,7 +75,8 @@
ConsistentId = igniteName,
IgniteInstanceName = igniteName,
DiscoverySpi = GetStaticDiscovery(),
- JvmOptions = TestJavaOptions()
+ JvmOptions = TestJavaOptions(),
+ Localhost = "127.0.0.1"
};
/// <summary>
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ConsoleRedirectTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ConsoleRedirectTest.cs
index c882e1d..457d92b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ConsoleRedirectTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ConsoleRedirectTest.cs
@@ -115,7 +115,7 @@
MyStringWriter.LastValue = null;
// Send to Java as UTF-16 to avoid dealing with IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2
- var bytes = Encoding.Unicode.GetBytes(MyStringWriter.Prefix + val);
+ var bytes = Encoding.Unicode.GetBytes(MyStringWriter.Prefix + val + MyStringWriter.Suffix);
ignite.GetCompute().ExecuteJavaTask<string>(ConsoleWriteTask, bytes);
var expectedStr = GetExpectedStr(val);
@@ -124,7 +124,7 @@
// Test Env.NewString
MyStringWriter.LastValue = null;
- TestUtilsJni.Println(MyStringWriter.Prefix + val);
+ TestUtilsJni.Println(MyStringWriter.Prefix + val + MyStringWriter.Suffix);
Assert.AreEqual(expectedStr.Length, MyStringWriter.LastValue?.Length, message: val);
if (val != BinarySelfTest.SpecialStrings[0])
@@ -288,6 +288,9 @@
{
public const string Prefix = "[MyStringWriter]";
+ /** */
+ public const string Suffix = "[/MyStringWriter]";
+
public static bool Throw { get; set; }
public static string LastValue { get; set; }
@@ -306,9 +309,13 @@
base.Write(value);
- if (!string.IsNullOrWhiteSpace(value) && value.StartsWith(Prefix))
+ if (!string.IsNullOrWhiteSpace(value) && value.StartsWith(Prefix, StringComparison.Ordinal))
{
- LastValue = value.Substring(Prefix.Length);
+ var suffixIndex = value.LastIndexOf(Suffix, StringComparison.Ordinal);
+
+ Assert.GreaterOrEqual(suffixIndex, Prefix.Length, "Suffix is missing: " + value);
+
+ LastValue = value.Substring(Prefix.Length, suffixIndex - Prefix.Length);
}
}
}
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/DeploymentTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/DeploymentTest.cs
index 7017406..1610032 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/DeploymentTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/DeploymentTest.cs
@@ -105,7 +105,7 @@
Assert.AreEqual("ERROR: Apache.Ignite.Core.Common.IgniteException: Java class is not found " +
"(did you set IGNITE_HOME environment variable?): " +
"org/apache/ignite/internal/processors/platform/utils/PlatformUtils",
- reader.GetOutput().First());
+ reader.GetOutputWithoutJavaWarnings().First());
}
/// <summary>
@@ -170,6 +170,8 @@
Assert.Fail("Node failed to start: " + string.Join("\n", reader.GetOutput()));
}
+ Assert.IsFalse(proc.HasExited, "Node process died: " + string.Join("\n", reader.GetOutput()));
+
VerifyNodeStarted(exePath);
}
@@ -191,7 +193,7 @@
// Copy jars.
var home = IgniteHome.Resolve();
- var jarNames = new[] {@"\ignite-core-", @"\cache-api-1.0.0.jar", @"\modules\spring\"};
+ var jarNames = new[] {@"\ignite-core-", @"\cache-api-1.0.0.jar", @"\modules\spring\", @"\ignite-spring-"};
var jars = Directory.GetFiles(home, "*.jar", SearchOption.AllDirectories)
.Where(jarPath => jarNames.Any(jarPath.Contains)).ToArray();
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs
index e96fcaa..e30a16b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/ExecutableTest.cs
@@ -327,17 +327,6 @@
[Test]
public void TestInvalidCmdArgs()
{
- var ignoredWarns = new[]
- {
- "WARNING: An illegal reflective access operation has occurred",
- "WARNING: Illegal reflective access by org.apache.ignite.internal.util.GridUnsafe$2 " +
- "(file:/C:/w/incubator-ignite/modules/core/target/classes/) to field java.nio.Buffer.address",
- "WARNING: Please consider reporting this to the maintainers of org.apache.ignite.internal.util." +
- "GridUnsafe$2",
- "WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations",
- "WARNING: All illegal access operations will be denied in a future release"
- };
-
Action<string, string> checkError = (args, err) =>
{
var reader = new ListDataReader();
@@ -347,8 +336,7 @@
Assert.IsTrue(proc.Join(30000, out exitCode));
Assert.AreEqual(-1, exitCode);
- Assert.AreEqual(err, reader.GetOutput()
- .Except(ignoredWarns)
+ Assert.AreEqual(err, reader.GetOutputWithoutJavaWarnings()
.FirstOrDefault(x => !string.IsNullOrWhiteSpace(x)));
};
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/JavaServer/pom.xml b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/JavaServer/pom.xml
index 79734f0..f273773 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/JavaServer/pom.xml
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/JavaServer/pom.xml
@@ -35,7 +35,7 @@
<dependency>
<groupId>org.apache.ignite</groupId>
<artifactId>ignite-core</artifactId>
- <version>2.4.0</version>
+ <version>2.18.0</version>
</dependency>
</dependencies>
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Process/ListDataReader.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Process/ListDataReader.cs
index 5660cf9..4e2ac05 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Process/ListDataReader.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Process/ListDataReader.cs
@@ -17,6 +17,7 @@
namespace Apache.Ignite.Core.Tests.Process
{
+ using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
@@ -26,6 +27,17 @@
/// </summary>
public class ListDataReader : IIgniteProcessOutputReader
{
+ /** JVM warnings that can appear before the actual Apache.Ignite.exe output. */
+ private static readonly string[] IgnoredJavaWarnings =
+ {
+ "OpenJDK 64-Bit Server VM warning: Ignoring option --illegal-access=permit; support was removed in 17.0",
+ "WARNING: An illegal reflective access operation has occurred",
+ "WARNING: Illegal reflective access by org.apache.ignite.internal.util.GridUnsafe$2",
+ "WARNING: Please consider reporting this to the maintainers of org.apache.ignite.internal.util.GridUnsafe$2",
+ "WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations",
+ "WARNING: All illegal access operations will be denied in a future release"
+ };
+
/** Target list. */
private readonly List<string> _list = new List<string>();
@@ -53,5 +65,21 @@
return _list.ToList();
}
}
+
+ /// <summary>
+ /// Gets the output without known JVM warnings.
+ /// </summary>
+ public IList<string> GetOutputWithoutJavaWarnings()
+ {
+ return GetOutput().Where(x => !IsIgnoredJavaWarning(x)).ToList();
+ }
+
+ /// <summary>
+ /// Returns a value indicating whether provided message is a known JVM warning.
+ /// </summary>
+ private static bool IsIgnoredJavaWarning(string message)
+ {
+ return IgnoredJavaWarnings.Any(warning => message.StartsWith(warning, StringComparison.Ordinal));
+ }
}
}
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs
index c9ef65f..6652a87 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs
@@ -371,7 +371,14 @@
{
Endpoints = new[] { "127.0.0.1:47500" + (maxPort == null ? null : (".." + maxPort)) }
},
- SocketTimeout = TimeSpan.FromSeconds(0.3)
+ SocketTimeout = TimeSpan.FromSeconds(0.3),
+ // If the finder port is squatted at bind time (e.g. lingering teardown of the previous
+ // fixture), the node binds the next port and the default infinite join retries the finder
+ // address forever, eating the whole suite execution timeout: fail the test fast instead.
+ // MaxAckTimeout caps the exponential handshake backoff, otherwise a single retry sweep
+ // takes up to 20 minutes and JoinTimeout, checked between sweeps, never gets a chance.
+ JoinTimeout = TimeSpan.FromMinutes(2),
+ MaxAckTimeout = TimeSpan.FromSeconds(10)
};
}
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/app.config b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/app.config
index 8456806..b2bc4c8 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/app.config
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/app.config
@@ -32,8 +32,8 @@
<gcServer enabled="true"/>
</runtime>
- <igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" igniteInstanceName="myGrid1">
- <discoverySpi type="TcpDiscoverySpi">
+ <igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" igniteInstanceName="myGrid1" localhost="127.0.0.1">
+ <discoverySpi type="TcpDiscoverySpi" joinTimeout="0:2:0">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500</string>
@@ -47,7 +47,7 @@
</igniteConfiguration>
<igniteConfiguration2 igniteInstanceName="myGrid2" localhost="127.0.0.1">
- <discoverySpi type="TcpDiscoverySpi">
+ <discoverySpi type="TcpDiscoverySpi" joinTimeout="0:2:0">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500</string>
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/custom_app.config b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/custom_app.config
index 9fa96f5..68d31ef 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/custom_app.config
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/custom_app.config
@@ -27,7 +27,7 @@
</configSections>
<igniteConfiguration3 igniteInstanceName="myGrid3" localhost="127.0.0.1">
- <discoverySpi type="TcpDiscoverySpi">
+ <discoverySpi type="TcpDiscoverySpi" joinTimeout="0:2:0">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500</string>
diff --git a/modules/platforms/dotnet/Apache.Ignite.EntityFramework.Tests/App.config b/modules/platforms/dotnet/Apache.Ignite.EntityFramework.Tests/App.config
index 0e0da8d..7c1ce90 100644
--- a/modules/platforms/dotnet/Apache.Ignite.EntityFramework.Tests/App.config
+++ b/modules/platforms/dotnet/Apache.Ignite.EntityFramework.Tests/App.config
@@ -25,8 +25,8 @@
<gcServer enabled="true" />
</runtime>
- <igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" igniteInstanceName="myGrid1">
- <discoverySpi type="TcpDiscoverySpi">
+ <igniteConfiguration xmlns="http://ignite.apache.org/schema/dotnet/IgniteConfigurationSection" igniteInstanceName="myGrid1" localhost="127.0.0.1">
+ <discoverySpi type="TcpDiscoverySpi" joinTimeout="0:2:0">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500</string>
@@ -39,7 +39,7 @@
</igniteConfiguration>
<igniteConfiguration2 igniteInstanceName="myGrid2" localhost="127.0.0.1">
- <discoverySpi type="TcpDiscoverySpi">
+ <discoverySpi type="TcpDiscoverySpi" joinTimeout="0:2:0">
<ipFinder type="TcpDiscoveryStaticIpFinder">
<endpoints>
<string>127.0.0.1:47500</string>
diff --git a/modules/rest-http/pom.xml b/modules/rest-http/pom.xml
index 2461034..0125e00 100644
--- a/modules/rest-http/pom.xml
+++ b/modules/rest-http/pom.xml
@@ -83,8 +83,14 @@
</dependency>
<dependency>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-servlet</artifactId>
+ <version>${jetty.version}</version>
+ </dependency>
+
+ <dependency>
<groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlet</artifactId>
+ <artifactId>jetty-session</artifactId>
<version>${jetty.version}</version>
</dependency>
@@ -95,8 +101,8 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty.toolchain</groupId>
- <artifactId>jetty-jakarta-servlet-api</artifactId>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
<version>${jetty-jakarta-servlet-api.version}</version>
</dependency>
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
index dcb5d1d..c91ed3e 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestHandler.java
@@ -31,13 +31,14 @@
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import jakarta.servlet.ServletOutputStream;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.InjectableValues;
import com.fasterxml.jackson.databind.ObjectMapper;
-import jakarta.servlet.ServletOutputStream;
-import jakarta.servlet.ServletRequest;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteLogger;
import org.apache.ignite.IgniteSystemProperties;
@@ -72,8 +73,6 @@
import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.plugin.security.SecurityCredentials;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
import org.jetbrains.annotations.Nullable;
import static java.lang.String.format;
@@ -93,7 +92,7 @@
/**
* Jetty REST handler. The following URL format is supported: {@code /ignite?cmd=cmdName¶m1=abc¶m2=123}
*/
-public class GridJettyRestHandler extends AbstractHandler {
+public class GridJettyRestHandler extends HttpServlet {
/** */
public static final String IGNITE_CMD_PATH = "/ignite";
@@ -270,16 +269,13 @@
}
/** {@inheritDoc} */
- @Override public void handle(String target, Request req, HttpServletRequest srvReq, HttpServletResponse res) {
- if (log.isDebugEnabled())
- log.debug("Handling request [target=" + target + ", req=" + req + ", srvReq=" + srvReq + ']');
+ @Override protected void service(HttpServletRequest srvReq, HttpServletResponse res) {
+ String target = srvReq.getRequestURI();
- if (!target.startsWith(IGNITE_CMD_PATH))
- return;
+ if (log.isDebugEnabled())
+ log.debug("Handling request [target=" + target + ", srvReq=" + srvReq + ']');
processRequest(target, srvReq, res);
-
- req.setHandled(true);
}
/**
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
index 2631840..5bdad07 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/GridJettyRestProtocol.java
@@ -44,20 +44,20 @@
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.IgniteSpiException;
+import org.eclipse.jetty.ee11.servlet.FilterHolder;
+import org.eclipse.jetty.ee11.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee11.servlet.ServletHolder;
import org.eclipse.jetty.server.AbstractNetworkConnector;
import org.eclipse.jetty.server.Connector;
-import org.eclipse.jetty.server.Handler;
import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.server.NetworkConnector;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.SslConnectionFactory;
-import org.eclipse.jetty.server.handler.HandlerList;
-import org.eclipse.jetty.servlet.FilterHolder;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.util.MultiException;
+import org.eclipse.jetty.server.handler.ContextHandlerCollection;
import org.eclipse.jetty.util.resource.Resource;
+import org.eclipse.jetty.util.resource.ResourceFactory;
import org.eclipse.jetty.util.thread.QueuedThreadPool;
import org.eclipse.jetty.xml.XmlConfiguration;
import org.jetbrains.annotations.Nullable;
@@ -238,17 +238,6 @@
catch (Exception e) {
boolean failedToBind = e instanceof SocketException;
- if (e instanceof MultiException) {
- if (log.isDebugEnabled())
- log.debug("Caught multi exception: " + e);
-
- failedToBind = true;
-
- for (Object obj : ((MultiException)e).getThrowables())
- if (!(obj instanceof SocketException))
- failedToBind = false;
- }
-
if (e instanceof IOException && X.hasCause(e, SocketException.class))
failedToBind = true;
@@ -309,7 +298,7 @@
XmlConfiguration cfg;
try {
- Resource rsrc = Resource.newResource(cfgUrl);
+ Resource rsrc = ResourceFactory.root().newResource(cfgUrl.toURI());
cfg = new XmlConfiguration(rsrc);
}
@@ -336,18 +325,27 @@
assert httpSrv != null;
- Handler extsHnd = loadExtensions();
- WelcomeHandler welcomeHnd = new WelcomeHandler(log);
+ ContextHandlerCollection hnds = new ContextHandlerCollection();
- httpSrv.setHandler(new HandlerList(jettyHnd, extsHnd, welcomeHnd));
+ loadExtensions(hnds);
+
+ // Main context serves the REST command endpoint and the welcome page.
+ // Its root context path ("/") is matched last, after the more specific extension contexts.
+ ServletContextHandler mainCtx = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
+
+ mainCtx.setContextPath("/");
+ mainCtx.addServlet(new ServletHolder(jettyHnd), IGNITE_CMD_PATH + "/*");
+ mainCtx.addServlet(new ServletHolder(new WelcomeHandler(log)), "/");
+
+ hnds.addHandler(mainCtx);
+
+ httpSrv.setHandler(hnds);
override(getJettyConnector());
}
- /** */
- private Handler loadExtensions() throws IgniteCheckedException {
- HandlerList extsHnd = new HandlerList();
-
+ /** Discovers REST extensions and registers a dedicated servlet context for each one. */
+ private void loadExtensions(ContextHandlerCollection hnds) throws IgniteCheckedException {
CommonUtils.loadService(IgniteRestExtension.class).forEach(exts::add);
Set<String> paths = new HashSet<>();
@@ -372,13 +370,11 @@
A.ensure(!extCtx.isContextPathDefault(), "The context path must be configured: " + ext.getClass().getName());
A.ensure(paths.add(extCtx.getContextPath()), "Duplicate REST context path: " + extCtx.getContextPath());
- extsHnd.addHandler(extCtx);
+ hnds.addHandler(extCtx);
if (log.isInfoEnabled())
log.info("Configured REST extension: " + ext.getClass().getName());
}
-
- return extsHnd;
}
/**
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtension.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtension.java
index 275cac6..ee4b749 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtension.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtension.java
@@ -17,7 +17,7 @@
package org.apache.ignite.internal.processors.rest.protocols.http.jetty;
-import org.eclipse.jetty.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee11.servlet.ServletContextHandler;
/**
* Extension point for registering custom HTTP REST endpoints in the Jetty REST protocol.
diff --git a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
index 72b162b..ed137e2 100644
--- a/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
+++ b/modules/rest-http/src/main/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/WelcomeHandler.java
@@ -19,16 +19,15 @@
import java.io.IOException;
import java.io.InputStream;
+import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.ignite.IgniteLogger;
-import org.eclipse.jetty.server.Request;
-import org.eclipse.jetty.server.handler.AbstractHandler;
/**
* Handles welcome page.
*/
-public class WelcomeHandler extends AbstractHandler {
+public class WelcomeHandler extends HttpServlet {
/** Default page. */
private final byte[] dfltPage;
@@ -51,14 +50,17 @@
}
/** {@inheritDoc} */
- @Override public void handle(String target, Request req, HttpServletRequest srvReq, HttpServletResponse res) throws IOException {
+ @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
if (dfltPage == null || favicon == null || logo == null) {
res.setStatus(HttpServletResponse.SC_NOT_FOUND);
- req.setHandled(true);
return;
}
+ String target = req.getRequestURI();
+
+ res.setStatus(HttpServletResponse.SC_OK);
+
if (target.startsWith("/favicon.ico")) {
res.setContentType("image/x-icon");
res.getOutputStream().write(favicon);
@@ -73,9 +75,6 @@
}
res.getOutputStream().flush();
-
- res.setStatus(HttpServletResponse.SC_OK);
- req.setHandled(true);
}
/** */
diff --git a/modules/rest-http/src/test/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtensionTest.java b/modules/rest-http/src/test/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtensionTest.java
index c057aa5..7ea3a27 100644
--- a/modules/rest-http/src/test/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtensionTest.java
+++ b/modules/rest-http/src/test/java/org/apache/ignite/internal/processors/rest/protocols/http/jetty/IgniteRestExtensionTest.java
@@ -29,8 +29,8 @@
import org.apache.ignite.plugin.security.SecurityException;
import org.apache.ignite.resources.IgniteInstanceResource;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
-import org.eclipse.jetty.servlet.ServletContextHandler;
-import org.eclipse.jetty.servlet.ServletHolder;
+import org.eclipse.jetty.ee11.servlet.ServletContextHandler;
+import org.eclipse.jetty.ee11.servlet.ServletHolder;
import org.junit.Test;
import static org.apache.ignite.cluster.ClusterState.INACTIVE;
diff --git a/modules/spring/src/main/java/org/apache/ignite/internal/processors/resource/GridResourceSpringBeanInjector.java b/modules/spring/src/main/java/org/apache/ignite/internal/processors/resource/GridResourceSpringBeanInjector.java
index 876e79f..9980bf9 100644
--- a/modules/spring/src/main/java/org/apache/ignite/internal/processors/resource/GridResourceSpringBeanInjector.java
+++ b/modules/spring/src/main/java/org/apache/ignite/internal/processors/resource/GridResourceSpringBeanInjector.java
@@ -21,12 +21,12 @@
import java.lang.reflect.Modifier;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.internal.managers.deployment.GridDeployment;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.resources.SpringResource;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.NoUniqueBeanDefinitionException;
import org.springframework.context.ApplicationContext;
-import org.springframework.util.StringUtils;
/**
* Spring bean injector implementation works with resources provided
@@ -111,7 +111,7 @@
String beanName = annotation.resourceName();
Class<?> beanCls = annotation.resourceClass();
- boolean oneParamSet = !StringUtils.isEmpty(beanName) ^ beanCls != SpringResource.DEFAULT.class;
+ boolean oneParamSet = !F.isEmpty(beanName) ^ beanCls != SpringResource.DEFAULT.class;
if (!oneParamSet) {
throw new IgniteCheckedException("Either bean name or its class must be specified in @SpringResource, " +
@@ -119,7 +119,7 @@
}
try {
- return !StringUtils.isEmpty(beanName) ? springCtx.getBean(beanName) : springCtx.getBean(beanCls);
+ return !F.isEmpty(beanName) ? springCtx.getBean(beanName) : springCtx.getBean(beanCls);
}
catch (NoUniqueBeanDefinitionException e) {
throw e;
diff --git a/modules/spring/src/test/java/org/apache/ignite/internal/processors/resource/GridResourceProcessorSelfTest.java b/modules/spring/src/test/java/org/apache/ignite/internal/processors/resource/GridResourceProcessorSelfTest.java
index e6739b0..15e9e32 100644
--- a/modules/spring/src/test/java/org/apache/ignite/internal/processors/resource/GridResourceProcessorSelfTest.java
+++ b/modules/spring/src/test/java/org/apache/ignite/internal/processors/resource/GridResourceProcessorSelfTest.java
@@ -234,10 +234,13 @@
/** */
private Callable<String> c = new Callable<String>() {
+ /** */
@TestAnnotation
private String cStr;
+ /** */
private Runnable r = new Runnable() {
+ /** */
@TestAnnotation
private String rStr;
@@ -403,7 +406,7 @@
try {
// Should not be null if task has been completed successfully (meaning all resources have been injected).
- Assert.notNull(g.compute().execute(TestTask.class, null));
+ Assert.notNull(g.compute().execute(TestTask.class, null), "must not be null");
}
finally {
stopGrid();
diff --git a/modules/thin-client/impl/README.txt b/modules/thin-client/impl/README.txt
new file mode 100644
index 0000000..160a268
--- /dev/null
+++ b/modules/thin-client/impl/README.txt
@@ -0,0 +1,8 @@
+Apache Ignite Thin Client Implementation Module
+------------------------
+
+ignite-thin-client-impl module is internal module to separate thin-client API and implementation.
+It contains the implementation of the thin client API.
+
+Note, class files of this module are copied in ignite-core.jar during project assembly
+to ensure compatibility with previous Ignite releases.
diff --git a/modules/thin-client/impl/pom.xml b/modules/thin-client/impl/pom.xml
new file mode 100644
index 0000000..d19ba53
--- /dev/null
+++ b/modules/thin-client/impl/pom.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!--
+ POM file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.ignite</groupId>
+ <artifactId>ignite-parent-internal</artifactId>
+ <version>${revision}</version>
+ <relativePath>../../../parent-internal/pom.xml</relativePath>
+ </parent>
+
+ <artifactId>ignite-thin-client-impl</artifactId>
+
+ <url>http://ignite.apache.org</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-commons</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-binary-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-thin-client-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>${project.groupId}</groupId>
+ <artifactId>ignite-nio</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jetbrains</groupId>
+ <artifactId>annotations</artifactId>
+ <version>${jetbrains.annotations.version}</version>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <version>${maven.deploy.plugin.version}</version>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/monitoring/EventListenerDemultiplexer.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/monitoring/EventListenerDemultiplexer.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/monitoring/EventListenerDemultiplexer.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/monitoring/EventListenerDemultiplexer.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/BinaryNameMapperMode.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientAtomicLongImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientAtomicLongImpl.java
similarity index 93%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientAtomicLongImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientAtomicLongImpl.java
index f7f6f52..29055ea 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientAtomicLongImpl.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientAtomicLongImpl.java
@@ -21,7 +21,7 @@
import org.apache.ignite.client.ClientAtomicLong;
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.binary.BinaryWriterEx;
-import org.apache.ignite.internal.processors.datastructures.DataStructuresProcessor;
+import org.apache.ignite.internal.util.CommonUtils;
import org.jetbrains.annotations.Nullable;
/**
@@ -53,8 +53,8 @@
this.groupName = groupName;
this.ch = ch;
- String grpNameInternal = groupName == null ? DataStructuresProcessor.DEFAULT_DS_GROUP_NAME : groupName;
- cacheId = ClientUtils.cacheId(DataStructuresProcessor.ATOMICS_CACHE_NAME + "@" + grpNameInternal);
+ String grpNameInternal = groupName == null ? CommonUtils.DEFAULT_DS_GROUP_NAME : groupName;
+ cacheId = ClientUtils.cacheId(CommonUtils.ATOMICS_CACHE_NAME + "@" + grpNameInternal);
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientBinary.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
similarity index 92%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
index a496265..671e1a2 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientBinaryMarshaller.java
@@ -17,14 +17,14 @@
package org.apache.ignite.internal.client.thin;
+import java.util.Collections;
import org.apache.ignite.configuration.BinaryConfiguration;
-import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.binary.BinaryContext;
import org.apache.ignite.internal.binary.BinaryMarshaller;
import org.apache.ignite.internal.binary.BinaryMetadataHandler;
+import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.binary.GridBinaryMarshaller;
import org.apache.ignite.internal.binary.streams.BinaryInputStream;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.logger.NullLogger;
import org.apache.ignite.marshaller.MarshallerContext;
@@ -108,10 +108,14 @@
marsh.setContext(marshCtx);
- BinaryContext ctx = U.binaryContext(
+ BinaryContext ctx = BinaryUtils.binaryContext(
metaHnd,
marsh,
- new IgniteConfiguration().setBinaryConfiguration(binCfg),
+ null,
+ null,
+ binCfg,
+ Collections.emptyMap(),
+ BinaryUtils::affinityFieldName,
NullLogger.INSTANCE
);
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityContext.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityContext.java
similarity index 99%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityContext.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityContext.java
index 9ac6554..fb3877d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityContext.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityContext.java
@@ -38,8 +38,8 @@
import org.apache.ignite.internal.binary.BinaryUtils;
import org.apache.ignite.internal.binary.BinaryWriterEx;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridConcurrentHashSet;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion.NONE;
@@ -365,7 +365,7 @@
ClientPartitionAwarenessMapperHolder hld = cacheKeyMapperFactoryMap.computeIfAbsent(ClientUtils.cacheId(cacheName),
id -> new ClientPartitionAwarenessMapperHolder(cacheName));
- hld.ts = U.currentTimeMillis();
+ hld.ts = CommonUtils.currentTimeMillis();
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityMapping.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityMapping.java
similarity index 96%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityMapping.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityMapping.java
index 4a944e0..1ee7b28 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityMapping.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheAffinityMapping.java
@@ -26,7 +26,6 @@
import java.util.UUID;
import java.util.function.Function;
import org.apache.ignite.IgniteBinary;
-import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
import org.apache.ignite.client.ClientFeatureNotSupportedByServerException;
import org.apache.ignite.client.ClientPartitionAwarenessMapper;
import org.apache.ignite.internal.binary.BinaryReaderEx;
@@ -34,8 +33,8 @@
import org.apache.ignite.internal.binary.BinaryWriterEx;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
import static org.apache.ignite.internal.client.thin.ProtocolBitmaskFeature.ALL_AFFINITY_MAPPINGS;
import static org.apache.ignite.internal.client.thin.ProtocolBitmaskFeature.DC_AWARE;
@@ -211,7 +210,7 @@
int cachesCnt = in.readInt();
if (applicable) { // Partition awareness is applicable for these caches.
- Map<Integer, Map<Integer, Integer>> cacheKeyCfg = U.newHashMap(cachesCnt);
+ Map<Integer, Map<Integer, Integer>> cacheKeyCfg = CommonUtils.newHashMap(cachesCnt);
for (int j = 0; j < cachesCnt; j++)
cacheKeyCfg.put(in.readInt(), readCacheKeyConfiguration(in));
@@ -264,7 +263,7 @@
private static Map<Integer, Integer> readCacheKeyConfiguration(BinaryReaderEx in) {
int keyCfgCnt = in.readInt();
- Map<Integer, Integer> keyCfg = U.newHashMap(keyCfgCnt);
+ Map<Integer, Integer> keyCfg = CommonUtils.newHashMap(keyCfgCnt);
for (int i = 0; i < keyCfgCnt; i++)
keyCfg.put(in.readInt(), in.readInt());
@@ -298,7 +297,7 @@
// Expand partToNode if needed.
if (part >= partToNode.length)
- partToNode = Arrays.copyOf(partToNode, U.ceilPow2(part + 1));
+ partToNode = Arrays.copyOf(partToNode, CommonUtils.ceilPow2(part + 1));
}
partToNode[part] = nodeId;
@@ -384,12 +383,12 @@
*/
private RendezvousAffinityKeyMapper(int parts) {
this.parts = parts;
- affinityMask = RendezvousAffinityFunction.calculateMask(parts);
+ affinityMask = CommonUtils.calculateMask(parts);
}
/** {@inheritDoc} */
@Override public int partition(Object key) {
- return RendezvousAffinityFunction.calculatePartition(key, affinityMask, parts);
+ return CommonUtils.calculatePartition(key, affinityMask, parts);
}
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntry.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenerHandler.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenerHandler.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenerHandler.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenerHandler.java
index 7214232..5ca39dc 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenerHandler.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenerHandler.java
@@ -36,8 +36,8 @@
import org.apache.ignite.internal.binary.streams.BinaryInputStream;
import org.apache.ignite.internal.binary.streams.BinaryOutputStream;
import org.apache.ignite.internal.binary.streams.BinaryStreams;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.T2;
-import org.apache.ignite.internal.util.typedef.internal.U;
import static org.apache.ignite.internal.client.thin.ClientNotificationType.CONTINUOUS_QUERY_EVENT;
import static org.apache.ignite.internal.client.thin.TcpClientCache.JAVA_PLATFORM;
@@ -176,7 +176,7 @@
if (lsnr != null)
lsnr.onDisconnected(reason);
- U.closeQuiet(this);
+ CommonUtils.closeQuiet(this);
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenersRegistry.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenersRegistry.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenersRegistry.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientCacheEntryListenersRegistry.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientChannel.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientChannel.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientChannel.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientChannel.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientChannelConfiguration.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientChannelConfiguration.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientChannelConfiguration.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientChannelConfiguration.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
index 838aecc..fbca7b1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterGroupImpl.java
@@ -42,10 +42,10 @@
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.binary.BinaryReaderEx;
import org.apache.ignite.internal.binary.BinaryWriterEx;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.lang.ClusterNodeFunc;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.A;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgniteProductVersion;
import org.jetbrains.annotations.Nullable;
@@ -121,7 +121,7 @@
@Override public ClientClusterGroup forOthers(ClusterNode node, ClusterNode... nodes) {
A.notNull(node, "node");
- Collection<ClusterNode> nodes0 = collection(U::newHashSet, node, nodes);
+ Collection<ClusterNode> nodes0 = collection(CommonUtils::newHashSet, node, nodes);
return forPredicate(n -> !nodes0.contains(n));
}
@@ -221,7 +221,7 @@
@Override public ClientClusterGroup forHost(String host, String... hosts) {
A.notNull(host, "host");
- Collection<String> hosts0 = collection(U::newHashSet, host, hosts);
+ Collection<String> hosts0 = collection(CommonUtils::newHashSet, host, hosts);
return forPredicate(n -> {
for (String hostName : n.hostNames()) {
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterImpl.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterImpl.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterNodeImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterNodeImpl.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterNodeImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientClusterNodeImpl.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientComputeImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientComputeImpl.java
similarity index 99%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientComputeImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientComputeImpl.java
index 7234473..d3fbf87 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientComputeImpl.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientComputeImpl.java
@@ -37,9 +37,9 @@
import org.apache.ignite.internal.binary.BinaryWriterEx;
import org.apache.ignite.internal.binary.streams.BinaryStreams;
import org.apache.ignite.internal.processors.platform.client.ClientStatus;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
import static org.apache.ignite.internal.client.thin.ClientNotificationType.COMPUTE_TASK_FINISHED;
@@ -266,7 +266,7 @@
return mayInterruptIfRunning ? fut.cancel() : fut.onCancelled();
}
catch (IgniteCheckedException e) {
- throw U.convertException(e);
+ throw CommonUtils.convertException(e);
}
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientContinuousQueryCursor.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientContinuousQueryCursor.java
similarity index 93%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientContinuousQueryCursor.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientContinuousQueryCursor.java
index 0ff1f41..7a5e144 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientContinuousQueryCursor.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientContinuousQueryCursor.java
@@ -21,7 +21,7 @@
import java.util.Iterator;
import java.util.List;
import org.apache.ignite.cache.query.QueryCursor;
-import org.apache.ignite.internal.util.typedef.internal.U;
+import org.apache.ignite.internal.util.CommonUtils;
import org.jetbrains.annotations.NotNull;
/**
@@ -50,8 +50,8 @@
/** {@inheritDoc} */
@Override public void close() {
- U.closeQuiet(initQryCursor);
- U.closeQuiet(lsnrHnd);
+ CommonUtils.closeQuiet(initQryCursor);
+ CommonUtils.closeQuiet(lsnrHnd);
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientDiscoveryContext.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientDiscoveryContext.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientDiscoveryContext.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientDiscoveryContext.java
index 928c003..b09a119 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientDiscoveryContext.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientDiscoveryContext.java
@@ -37,8 +37,8 @@
import org.apache.ignite.client.ClientAddressFinder;
import org.apache.ignite.client.ClientException;
import org.apache.ignite.configuration.ClientConfiguration;
-import org.apache.ignite.configuration.ClientConnectorConfiguration;
import org.apache.ignite.internal.binary.BinaryReaderEx;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.HostAndPortRange;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.logger.NullLogger;
@@ -231,8 +231,8 @@
try {
ranges.add(HostAndPortRange.parse(
a,
- ClientConnectorConfiguration.DFLT_PORT,
- ClientConnectorConfiguration.DFLT_PORT + ClientConnectorConfiguration.DFLT_PORT_RANGE,
+ CommonUtils.DFLT_PORT,
+ CommonUtils.DFLT_PORT + CommonUtils.DFLT_PORT_RANGE,
"Failed to parse Ignite server address"
));
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryCursor.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryPager.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryPager.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryPager.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientFieldsQueryPager.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientIgniteSetImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientIgniteSetImpl.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientIgniteSetImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientIgniteSetImpl.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientInternalBinaryConfiguration.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientInternalBinaryConfiguration.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientInternalBinaryConfiguration.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientInternalBinaryConfiguration.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheAdapter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientJCacheEntryListenerAdapter.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientNotificationType.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientOperation.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientProtocolError.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryCursor.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryPager.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryPager.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryPager.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientQueryPager.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientRetryPolicyContextImpl.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientServiceDescriptorImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientServiceDescriptorImpl.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientServiceDescriptorImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientServiceDescriptorImpl.java
index 51a1eea..580c796 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientServiceDescriptorImpl.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientServiceDescriptorImpl.java
@@ -20,7 +20,6 @@
import java.util.UUID;
import org.apache.ignite.client.ClientServiceDescriptor;
import org.apache.ignite.platform.PlatformType;
-import org.apache.ignite.services.Service;
import org.jetbrains.annotations.Nullable;
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientServicesImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientServicesImpl.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientServicesImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientServicesImpl.java
index 6cda195..342ce8f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientServicesImpl.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientServicesImpl.java
@@ -40,9 +40,9 @@
import org.apache.ignite.internal.binary.BinaryWriterEx;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.service.ServiceCallContextImpl;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.A;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.platform.PlatformServiceMethod;
import org.apache.ignite.platform.PlatformType;
import org.apache.ignite.services.ServiceCallContext;
@@ -218,7 +218,7 @@
*/
private boolean isUpdateRequired(AffinityTopologyVersion curAffTop) {
return lastAffTop == null || curAffTop.topologyVersion() > lastAffTop.topologyVersion()
- || U.nanosToMillis(System.nanoTime() - lastUpdateRequestTime) >= SRV_TOP_UPDATE_PERIOD;
+ || CommonUtils.nanosToMillis(System.nanoTime() - lastUpdateRequestTime) >= SRV_TOP_UPDATE_PERIOD;
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientSslUtils.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientSslUtils.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientSslUtils.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientSslUtils.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ClientUtils.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/FieldsQueryPager.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/GenericQueryPager.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/GenericQueryPager.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/GenericQueryPager.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/GenericQueryPager.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/IgniteClientFutureImpl.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/NotificationListener.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/PayloadInputChannel.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/PayloadInputChannel.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/PayloadInputChannel.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/PayloadInputChannel.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/PayloadOutputChannel.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/PayloadOutputChannel.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/PayloadOutputChannel.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/PayloadOutputChannel.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolContext.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersion.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ProtocolVersionFeature.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/QueryPager.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelEx.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelEx.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelEx.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelEx.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelImpl.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelImpl.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelImpl.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelImpl.java
index ec6e96c..b29bb69 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelImpl.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/ReliableChannelImpl.java
@@ -39,8 +39,8 @@
import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.ignite.IgniteBinary;
+import org.apache.ignite.IgniteCommonsSystemProperties;
import org.apache.ignite.IgniteLogger;
-import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.client.ClientAuthenticationException;
import org.apache.ignite.client.ClientConnectionException;
import org.apache.ignite.client.ClientException;
@@ -52,8 +52,8 @@
import org.apache.ignite.configuration.ClientConfiguration;
import org.apache.ignite.internal.client.thin.io.ClientConnectionMultiplexer;
import org.apache.ignite.internal.client.thin.io.gridnioserver.GridNioClientConnectionMultiplexer;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.logger.NullLogger;
import org.jetbrains.annotations.Nullable;
@@ -141,10 +141,10 @@
partitionAwarenessEnabled = clientCfg.isPartitionAwarenessEnabled();
- String dcId = IgniteSystemProperties.getString(IgniteSystemProperties.IGNITE_DATA_CENTER_ID);
+ String dcId = IgniteCommonsSystemProperties.getString(IgniteCommonsSystemProperties.IGNITE_DATA_CENTER_ID);
if (dcId == null && !F.isEmpty(clientCfg.getUserAttributes()))
- dcId = clientCfg.getUserAttributes().get(IgniteSystemProperties.IGNITE_DATA_CENTER_ID);
+ dcId = clientCfg.getUserAttributes().get(IgniteCommonsSystemProperties.IGNITE_DATA_CENTER_ID);
affinityCtx = new ClientCacheAffinityContext(
binary,
@@ -1133,7 +1133,7 @@
*/
private synchronized void closeChannel() {
if (ch != null) {
- U.closeQuiet(ch);
+ CommonUtils.closeQuiet(ch);
ch = null;
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
similarity index 99%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
index 0099f09..ab574b9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpClientCache.java
@@ -72,11 +72,11 @@
import org.apache.ignite.internal.processors.cache.CacheInvokeResult;
import org.apache.ignite.internal.processors.cache.version.GridCacheVersion;
import org.apache.ignite.internal.processors.platform.client.ClientStatus;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.T3;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.A;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.transactions.TransactionConcurrency;
import org.apache.ignite.transactions.TransactionIsolation;
import org.jetbrains.annotations.Nullable;
@@ -1146,7 +1146,7 @@
return new ClientContinuousQueryCursor<>(cur, hnd);
}
catch (Exception e) {
- U.closeQuiet(hnd);
+ CommonUtils.closeQuiet(hnd);
throw e;
}
@@ -1202,7 +1202,7 @@
@Override public void deregisterCacheEntryListener(CacheEntryListenerConfiguration<K, V> cfg) {
ClientCacheEntryListenerHandler<?, ?> hnd = lsnrsRegistry.deregisterCacheEntryListener(name, cfg);
- U.closeQuiet(hnd);
+ CommonUtils.closeQuiet(hnd);
}
/**
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
similarity index 97%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
index 00a6c56..c61a80b 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpClientChannel.java
@@ -64,16 +64,14 @@
import org.apache.ignite.internal.client.thin.io.ClientMessageHandler;
import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion;
import org.apache.ignite.internal.processors.odbc.ClientConnectionNodeRecoveryException;
-import org.apache.ignite.internal.processors.odbc.ClientListenerNioListener;
-import org.apache.ignite.internal.processors.odbc.ClientListenerRequest;
import org.apache.ignite.internal.processors.platform.client.ClientFlag;
import org.apache.ignite.internal.processors.platform.client.ClientStatus;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.future.GridFutureAdapter;
import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.T2;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.logger.NullLogger;
import org.jetbrains.annotations.Nullable;
@@ -217,7 +215,7 @@
catch (ClientConnectionException e) {
log.info("Can't establish connection with " + addr);
- connectionEx = U.addSuppressed(connectionEx, e);
+ connectionEx = CommonUtils.addSuppressed(connectionEx, e);
continue;
}
@@ -231,9 +229,9 @@
log.info("Can't establish connection with " + addr + ". Node in recovery mode.");
- connectionEx = U.addSuppressed(connectionEx, e);
+ connectionEx = CommonUtils.addSuppressed(connectionEx, e);
- U.closeQuiet(sock);
+ CommonUtils.closeQuiet(sock);
sock = null;
continue;
@@ -290,7 +288,7 @@
if (heartbeatTimer != null)
heartbeatTimer.cancel();
- U.closeQuiet(sock);
+ CommonUtils.closeQuiet(sock);
pendingReqsLock.writeLock().lock();
@@ -842,17 +840,17 @@
/** Send handshake request. */
private void handshakeReq(ProtocolVersion proposedVer, String user, String pwd,
Map<String, String> userAttrs) throws ClientConnectionException {
- try (BinaryWriterEx writer = BinaryUtils.writer(U.binaryContext(null), BinaryStreams.outputStream(32), null)) {
+ try (BinaryWriterEx writer = BinaryUtils.writer(BinaryUtils.binaryContext(null), BinaryStreams.outputStream(32), null)) {
ProtocolContext protocolCtx = protocolContextFromVersion(proposedVer);
writer.writeInt(0); // reserve an integer for the request size
- writer.writeByte((byte)ClientListenerRequest.HANDSHAKE);
+ writer.writeByte((byte)CommonUtils.HANDSHAKE);
writer.writeShort(proposedVer.major());
writer.writeShort(proposedVer.minor());
writer.writeShort(proposedVer.patch());
- writer.writeByte(ClientListenerNioListener.THIN_CLIENT);
+ writer.writeByte(CommonUtils.THIN_CLIENT);
if (protocolCtx.isFeatureSupported(BITMAP_FEATURES)) {
byte[] features = ProtocolBitmaskFeature.featuresAsBytes(protocolCtx.features());
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientTransactions.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpClientTransactions.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpClientTransactions.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpClientTransactions.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpIgniteClient.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpIgniteClient.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpIgniteClient.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpIgniteClient.java
index b21eca8..3aca5f9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/TcpIgniteClient.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/TcpIgniteClient.java
@@ -71,9 +71,9 @@
import org.apache.ignite.internal.client.thin.io.ClientConnectionMultiplexer;
import org.apache.ignite.internal.processors.platform.client.ClientStatus;
import org.apache.ignite.internal.processors.platform.client.IgniteClientException;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.internal.util.GridArgumentCheck;
import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.logger.NullLogger;
import org.apache.ignite.marshaller.MarshallerContext;
@@ -792,7 +792,7 @@
*/
public ClientMarshallerContext() {
try {
- MarshallerUtils.processSystemClasses(U.gridClassLoader(), null, sysTypes::add);
+ MarshallerUtils.processSystemClasses(CommonUtils.gridClassLoader(), sysTypes::add);
}
catch (IOException e) {
throw new IllegalStateException("Failed to initialize marshaller context.", e);
@@ -858,7 +858,8 @@
@Override public Class getClass(int typeId, ClassLoader ldr)
throws ClassNotFoundException, IgniteCheckedException {
- return U.forName(getClassName(MarshallerPlatformIds.JAVA_ID, typeId), ldr, null);
+ return CommonUtils.forName(getClassName(MarshallerPlatformIds.JAVA_ID, typeId), ldr, null,
+ Marshallers.USE_CACHE.get());
}
/** {@inheritDoc} */
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnection.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionMultiplexer.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientConnectionStateHandler.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageDecoder.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/ClientMessageHandler.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnection.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnection.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnection.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnection.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
similarity index 98%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
index a26a6f2..5d157fe 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
+++ b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientConnectionMultiplexer.java
@@ -82,7 +82,7 @@
sslCtx = ClientSslUtils.getSslContext(cfg);
if (sslCtx != null) {
- GridNioSslFilter sslFilter = new GridNioSslFilter(sslCtx, true, ByteOrder.nativeOrder(), gridLog, null);
+ GridNioSslFilter sslFilter = new GridNioSslFilter(sslCtx, true, ByteOrder.nativeOrder(), gridLog, null, null);
sslFilter.directMode(false);
filters = new GridNioFilter[] {codecFilter, sslFilter};
}
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientListener.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientListener.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientListener.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientListener.java
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientParser.java b/modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientParser.java
similarity index 100%
rename from modules/core/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientParser.java
rename to modules/thin-client/impl/src/main/java/org/apache/ignite/internal/client/thin/io/gridnioserver/GridNioClientParser.java
diff --git a/modules/tools/pom.xml b/modules/tools/pom.xml
index c784858..5a53d9b 100644
--- a/modules/tools/pom.xml
+++ b/modules/tools/pom.xml
@@ -125,7 +125,7 @@
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
- <version>1.10.13</version>
+ <version>1.10.17</version>
</dependency>
<dependency>
diff --git a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringDocument.java b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringDocument.java
index 0143537..0a31590 100644
--- a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringDocument.java
+++ b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringDocument.java
@@ -24,7 +24,7 @@
import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.spi.IgniteSpiException;
import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
/**
* Helper class which helps to read deployer and tasks information from
@@ -32,7 +32,7 @@
*/
class GridUriDeploymentSpringDocument {
/** Initialized springs beans factory. */
- private final XmlBeanFactory factory;
+ private final DefaultListableBeanFactory factory;
/** List of tasks from package description. */
private List<Class<? extends ComputeTask<?, ?>>> tasks;
@@ -42,7 +42,7 @@
*
* @param factory Configuration factory.
*/
- GridUriDeploymentSpringDocument(XmlBeanFactory factory) {
+ GridUriDeploymentSpringDocument(DefaultListableBeanFactory factory) {
assert factory != null;
this.factory = factory;
diff --git a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringParser.java b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringParser.java
index 842a8cf..f62ce2a 100644
--- a/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringParser.java
+++ b/modules/urideploy/src/main/java/org/apache/ignite/spi/deployment/uri/GridUriDeploymentSpringParser.java
@@ -24,7 +24,8 @@
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.spi.IgniteSpiException;
import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.xml.XmlBeanFactory;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.InputStreamResource;
@@ -52,8 +53,8 @@
* @param log Logger
* @return Grid wrapper for the input stream.
* @throws org.apache.ignite.spi.IgniteSpiException Thrown if incoming input stream could not be
- * read or parsed by {@code Spring} {@link XmlBeanFactory}.
- * @see XmlBeanFactory
+ * read or parsed by {@code Spring} {@link DefaultListableBeanFactory}.
+ * @see DefaultListableBeanFactory
*/
static GridUriDeploymentSpringDocument parseTasksDocument(InputStream in, IgniteLogger log) throws
IgniteSpiException {
@@ -65,7 +66,8 @@
try {
U.copy(in, out);
- XmlBeanFactory factory = new XmlBeanFactory(new ByteArrayResource(out.toByteArray()));
+ DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
+ new XmlBeanDefinitionReader(factory).loadBeanDefinitions(new ByteArrayResource(out.toByteArray()));
return new GridUriDeploymentSpringDocument(factory);
}
diff --git a/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java b/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
index b366d4f..b7d7fb4 100644
--- a/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
+++ b/modules/urideploy/src/test/java/org/apache/ignite/spi/deployment/uri/scanners/http/GridHttpDeploymentSelfTest.java
@@ -30,6 +30,7 @@
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.ServerConnector;
import org.eclipse.jetty.server.handler.ResourceHandler;
+import org.eclipse.jetty.util.resource.ResourceFactory;
import org.junit.Test;
/**
@@ -86,7 +87,7 @@
ResourceHandler hnd = new ResourceHandler();
- hnd.setDirectoriesListed(true);
+ hnd.setDirAllowed(true);
String garPathTmp = GridTestProperties.getProperty("urideployment.path.tmp");
@@ -100,7 +101,7 @@
rsrcBase = resourseBaseDir.getPath();
- hnd.setResourceBase(rsrcBase);
+ hnd.setBaseResource(ResourceFactory.root().newResource(rsrcBase));
srv.setHandler(hnd);
diff --git a/modules/web/ignite-appserver-test/src/main/webapp/WEB-INF/web.xml b/modules/web/ignite-appserver-test/src/main/webapp/WEB-INF/web.xml
index 6fe7358..44b1dd4 100644
--- a/modules/web/ignite-appserver-test/src/main/webapp/WEB-INF/web.xml
+++ b/modules/web/ignite-appserver-test/src/main/webapp/WEB-INF/web.xml
@@ -15,11 +15,11 @@
~ limitations under the License.
-->
-<!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
-
-<web-app>
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+ https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+ version="6.1">
<display-name>Archetype Created Web Application</display-name>
<listener>
diff --git a/modules/web/ignite-websphere-test/pom.xml b/modules/web/ignite-websphere-test/pom.xml
index 84dad0d..6495420 100644
--- a/modules/web/ignite-websphere-test/pom.xml
+++ b/modules/web/ignite-websphere-test/pom.xml
@@ -43,12 +43,18 @@
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>ignite-jta</artifactId>
+ <exclusions>
+ <exclusion>
+ <groupId>jakarta.transaction</groupId>
+ <artifactId>jakarta.transaction-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>com.ibm.websphere.appserver.api</groupId>
- <artifactId>com.ibm.websphere.appserver.api.transaction</artifactId>
- <version>1.1.113</version>
+ <groupId>jakarta.transaction</groupId>
+ <artifactId>jakarta.transaction-api</artifactId>
+ <version>2.0.1</version>
</dependency>
</dependencies>
diff --git a/modules/web/ignite-websphere-test/src/main/java/org/apache/ignite/webtest/TestJtaTxServlet.java b/modules/web/ignite-websphere-test/src/main/java/org/apache/ignite/webtest/TestJtaTxServlet.java
index e7f33aa..f859bfd 100644
--- a/modules/web/ignite-websphere-test/src/main/java/org/apache/ignite/webtest/TestJtaTxServlet.java
+++ b/modules/web/ignite-websphere-test/src/main/java/org/apache/ignite/webtest/TestJtaTxServlet.java
@@ -19,13 +19,13 @@
import java.io.IOException;
import java.io.PrintWriter;
-import javax.transaction.RollbackException;
-import javax.transaction.TransactionManager;
-import com.ibm.tx.jta.TransactionManagerFactory;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
+import jakarta.transaction.RollbackException;
+import jakarta.transaction.UserTransaction;
+import javax.naming.InitialContext;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
@@ -56,7 +56,7 @@
final IgniteCache<Integer, String> cache = ignite.cache("tx");
- TransactionManager tmMgr = TransactionManagerFactory.getTransactionManager();
+ UserTransaction tmMgr = (UserTransaction)new InitialContext().lookup("java:comp/UserTransaction");
tmMgr.begin();
diff --git a/modules/web/ignite-websphere-test/src/main/webapp/WEB-INF/web.xml b/modules/web/ignite-websphere-test/src/main/webapp/WEB-INF/web.xml
index 94cb0cf..c4d24ea 100644
--- a/modules/web/ignite-websphere-test/src/main/webapp/WEB-INF/web.xml
+++ b/modules/web/ignite-websphere-test/src/main/webapp/WEB-INF/web.xml
@@ -15,11 +15,11 @@
~ limitations under the License.
-->
-<!DOCTYPE web-app PUBLIC
- "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd" >
-
-<web-app>
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+ https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+ version="6.1">
<display-name>Archetype Created Web Application</display-name>
<listener>
diff --git a/modules/web/pom.xml b/modules/web/pom.xml
index d75e7d4..26c082b 100644
--- a/modules/web/pom.xml
+++ b/modules/web/pom.xml
@@ -47,8 +47,8 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty.toolchain</groupId>
- <artifactId>jetty-jakarta-servlet-api</artifactId>
+ <groupId>jakarta.servlet</groupId>
+ <artifactId>jakarta.servlet-api</artifactId>
<version>${jetty-jakarta-servlet-api.version}</version>
</dependency>
@@ -65,15 +65,15 @@
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-servlets</artifactId>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-servlets</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
<dependency>
- <groupId>org.eclipse.jetty</groupId>
- <artifactId>jetty-webapp</artifactId>
+ <groupId>org.eclipse.jetty.ee11</groupId>
+ <artifactId>jetty-ee11-webapp</artifactId>
<version>${jetty.version}</version>
<scope>test</scope>
</dependency>
diff --git a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java
index adbbc18..c297f5c 100644
--- a/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java
+++ b/modules/web/src/main/java/org/apache/ignite/cache/websession/WebSessionFilter.java
@@ -21,10 +21,6 @@
import java.util.Collection;
import java.util.Map;
import java.util.Objects;
-import javax.cache.CacheException;
-import javax.cache.expiry.Duration;
-import javax.cache.expiry.ExpiryPolicy;
-import javax.cache.expiry.ModifiedExpiryPolicy;
import jakarta.servlet.Filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.FilterConfig;
@@ -35,6 +31,10 @@
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequestWrapper;
import jakarta.servlet.http.HttpSession;
+import javax.cache.CacheException;
+import javax.cache.expiry.Duration;
+import javax.cache.expiry.ExpiryPolicy;
+import javax.cache.expiry.ModifiedExpiryPolicy;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteClientDisconnectedException;
@@ -862,7 +862,6 @@
}
}
-
/**
* Handles cache operation exception.
* @param e Exception
diff --git a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
index 45b4ecf..c5c6e69 100644
--- a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
+++ b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionSelfTest.java
@@ -57,12 +57,13 @@
import org.apache.ignite.lang.IgnitePredicate;
import org.apache.ignite.testframework.GridTestUtils;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
+import org.eclipse.jetty.ee11.servlet.ServletHolder;
+import org.eclipse.jetty.ee11.webapp.WebAppContext;
import org.eclipse.jetty.security.HashLoginService;
import org.eclipse.jetty.security.SecurityHandler;
+import org.eclipse.jetty.security.authentication.BasicAuthenticator;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.util.security.Constraint;
-import org.eclipse.jetty.webapp.WebAppContext;
+import org.eclipse.jetty.util.resource.ResourceFactory;
import org.jetbrains.annotations.Nullable;
import org.junit.Ignore;
import org.junit.Test;
@@ -998,10 +999,10 @@
HashLoginService hashLoginSrvc = new HashLoginService();
hashLoginSrvc.setName("Test Realm");
createRealm();
- hashLoginSrvc.setConfig("/tmp/realm.properties");
+ hashLoginSrvc.setConfig(ResourceFactory.root().newResource("/tmp/realm.properties"));
SecurityHandler securityHnd = ctx.getSecurityHandler();
// DefaultAuthenticatorFactory doesn't default to basic auth anymore.
- securityHnd.setAuthMethod(Constraint.__BASIC_AUTH);
+ securityHnd.setAuthenticator(new BasicAuthenticator());
securityHnd.setLoginService(hashLoginSrvc);
srv.setHandler(ctx);
diff --git a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionServerStart.java b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionServerStart.java
index b620085..a2d0ca6 100644
--- a/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionServerStart.java
+++ b/modules/web/src/test/java/org/apache/ignite/internal/websession/WebSessionServerStart.java
@@ -25,9 +25,9 @@
import jakarta.servlet.http.HttpSession;
import org.apache.ignite.internal.util.typedef.X;
import org.apache.ignite.internal.util.typedef.internal.U;
+import org.eclipse.jetty.ee11.servlet.ServletHolder;
+import org.eclipse.jetty.ee11.webapp.WebAppContext;
import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.servlet.ServletHolder;
-import org.eclipse.jetty.webapp.WebAppContext;
/**
* Server starter for web sessions caching test.
diff --git a/modules/web/src/test/webapp2/WEB-INF/web.xml b/modules/web/src/test/webapp2/WEB-INF/web.xml
index d51b87d..bb1e5ee 100644
--- a/modules/web/src/test/webapp2/WEB-INF/web.xml
+++ b/modules/web/src/test/webapp2/WEB-INF/web.xml
@@ -17,11 +17,11 @@
~ limitations under the License.
-->
-<web-app xmlns="http://java.sun.com/xml/ns/javaee"
+<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- version="3.0">
+ xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee
+ https://jakarta.ee/xml/ns/jakartaee/web-app_6_1.xsd"
+ version="6.1">
<!-- Declare listener for web sessions caching. -->
<listener>
diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/DiscoveryMessageParser.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/DiscoveryMessageParser.java
index d29a73f..b33684d 100644
--- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/DiscoveryMessageParser.java
+++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/DiscoveryMessageParser.java
@@ -27,13 +27,12 @@
import java.util.zip.InflaterInputStream;
import org.apache.ignite.internal.direct.DirectMessageReader;
import org.apache.ignite.internal.direct.DirectMessageWriter;
+import org.apache.ignite.internal.util.CommonUtils;
import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
import org.apache.ignite.plugin.extensions.communication.MessageSerializer;
import org.apache.ignite.spi.IgniteSpiException;
-import static org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi.makeMessageType;
-
/**
* Class is responsible for serializing discovery messages using RU-ready {@link MessageSerializer} mechanism.
*/
@@ -104,7 +103,7 @@
msgReader.setBuffer(msgBuf);
- Message msg = msgFactory.create(makeMessageType((byte)in.read(), (byte)in.read()));
+ Message msg = msgFactory.create(CommonUtils.makeMessageType((byte)in.read(), (byte)in.read()));
MessageSerializer msgSer = msgFactory.serializer(msg.directType());
boolean finished;
diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkBulkJoinContext.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkBulkJoinContext.java
index a186aed..7bdc5ff 100644
--- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkBulkJoinContext.java
+++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkBulkJoinContext.java
@@ -17,28 +17,28 @@
package org.apache.ignite.spi.discovery.zk.internal;
-import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.ignite.internal.util.typedef.T2;
+import org.apache.ignite.plugin.extensions.communication.Message;
/**
*
*/
class ZkBulkJoinContext {
/** */
- List<T2<ZkJoinedNodeEvtData, Map<Integer, Serializable>>> nodes;
+ List<T2<ZkJoinedNodeEvtData, ZkDiscoDataBagWrapper>> nodes;
/**
* @param nodeEvtData Node event data.
* @param discoData Discovery data for node.
*/
- void addJoinedNode(ZkJoinedNodeEvtData nodeEvtData, Map<Integer, Serializable> discoData) {
+ void addJoinedNode(ZkJoinedNodeEvtData nodeEvtData, Map<Integer, Message> discoData) {
if (nodes == null)
nodes = new ArrayList<>();
- nodes.add(new T2<>(nodeEvtData, discoData));
+ nodes.add(new T2<>(nodeEvtData, new ZkDiscoDataBagWrapper(discoData)));
}
/**
diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkDiscoDataBagWrapper.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkDiscoDataBagWrapper.java
new file mode 100644
index 0000000..28a188e
--- /dev/null
+++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkDiscoDataBagWrapper.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.spi.discovery.zk.internal;
+
+import java.util.Map;
+import org.apache.ignite.IgniteCheckedException;
+import org.apache.ignite.internal.Order;
+import org.apache.ignite.plugin.extensions.communication.Message;
+import org.apache.ignite.plugin.extensions.communication.MessageFactory;
+import org.apache.ignite.spi.discovery.SerializableDataBagItemWrapper;
+
+/** Data bag data holder. */
+public class ZkDiscoDataBagWrapper implements Message {
+ /** */
+ @Order(0)
+ Map<Integer, Message> data;
+
+ /** */
+ private IgniteCheckedException unmarshErr;
+
+ /** Default constructor for {@link MessageFactory}. */
+ public ZkDiscoDataBagWrapper() {
+ // No-op.
+ }
+
+ /** @param data Discovery data. */
+ public ZkDiscoDataBagWrapper(Map<Integer, Message> data) {
+ this.data = data;
+ }
+
+ /**
+ * Returns data or throws caught unmarshalling errors.
+ *
+ * @return Data.
+ * @throws IgniteCheckedException Unmarshalling exception, if any.
+ */
+ public Map<Integer, Message> unmarshalledData() throws IgniteCheckedException {
+ if (unmarshErr != null)
+ throw unmarshErr;
+
+ IgniteCheckedException err = null;
+
+ for (Message msg : data.values()) {
+ if (msg instanceof SerializableDataBagItemWrapper wrapper && wrapper.unmarshallError() != null) {
+ IgniteCheckedException e = wrapper.unmarshallError();
+
+ if (err == null)
+ err = e;
+ else
+ err.addSuppressed(e);
+ }
+ }
+
+ if (err != null) {
+ unmarshErr = err;
+
+ throw err;
+ }
+
+ return data;
+ }
+}
diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkMessageFactory.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkMessageFactory.java
index 39d89b3..cf9f95a 100644
--- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkMessageFactory.java
+++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZkMessageFactory.java
@@ -28,5 +28,6 @@
factory.register(401, ZkCommunicationErrorResolveStartMessage::new, new ZkCommunicationErrorResolveStartMessageSerializer());
factory.register(402, ZkForceNodeFailMessage::new, new ZkForceNodeFailMessageSerializer());
factory.register(403, ZkNoServersMessage::new, new ZkNoServersMessageSerializer());
+ factory.register(404, ZkDiscoDataBagWrapper::new, new ZkDiscoDataBagWrapperSerializer());
}
}
diff --git a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
index 0d0531d..f69e9f6 100644
--- a/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
+++ b/modules/zookeeper/src/main/java/org/apache/ignite/spi/discovery/zk/internal/ZookeeperDiscoveryImpl.java
@@ -78,6 +78,7 @@
import org.apache.ignite.lang.IgniteRunnable;
import org.apache.ignite.lang.IgniteUuid;
import org.apache.ignite.marshaller.jdk.JdkMarshaller;
+import org.apache.ignite.plugin.extensions.communication.Message;
import org.apache.ignite.plugin.extensions.communication.MessageFactory;
import org.apache.ignite.plugin.security.SecurityCredentials;
import org.apache.ignite.spi.IgniteNodeValidationResult;
@@ -1781,7 +1782,7 @@
long evtId = rtState.evtsData.evtIdGen;
- List<T2<ZkJoinedNodeEvtData, Map<Integer, Serializable>>> nodes = joinCtx.nodes;
+ List<T2<ZkJoinedNodeEvtData, ZkDiscoDataBagWrapper>> nodes = joinCtx.nodes;
assert nodes != null && !nodes.isEmpty();
@@ -1793,11 +1794,9 @@
Map<Long, Long> dupDiscoData = null;
for (int i = 0; i < nodeCnt; i++) {
- T2<ZkJoinedNodeEvtData, Map<Integer, Serializable>> nodeEvtData = nodes.get(i);
+ T2<ZkJoinedNodeEvtData, ZkDiscoDataBagWrapper> nodeEvtData = nodes.get(i);
- Map<Integer, Serializable> discoData = nodeEvtData.get2();
-
- byte[] discoDataBytes = U.marshal(marsh, discoData);
+ byte[] discoDataBytes = msgParser.marshalZip(nodeEvtData.get2());
Long dupDataNode = null;
@@ -2251,7 +2250,7 @@
exchange.collect(collectBag);
- Map<Integer, Serializable> commonData = collectBag.commonData();
+ Map<Integer, Message> commonData = collectBag.commonData();
Object old = curTop.put(joinedNode.order(), joinedNode);
@@ -3021,12 +3020,11 @@
byte[] discoDataBytes = dataForJoined.discoveryDataForNode(locNode.order());
- Map<Integer, Serializable> commonDiscoData =
- marsh.unmarshal(discoDataBytes, U.resolveClassLoader(spi.ignite().configuration()));
+ ZkDiscoDataBagWrapper zkDataBagWrapper = msgParser.unmarshalZip(discoDataBytes);
DiscoveryDataBag dataBag = new DiscoveryDataBag(locNode.id(), locNode.isClient());
- dataBag.commonData(commonDiscoData);
+ dataBag.commonData(zkDataBagWrapper.unmarshalledData());
exchange.onExchange(dataBag);
diff --git a/parent/pom.xml b/parent/pom.xml
index 5249ea6..6acf883 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -74,7 +74,7 @@
<curator.version>5.9.0</curator.version>
<guava.version>33.5.0-jre</guava.version>
<failureaccess.version>1.0.1</failureaccess.version>
- <grpc-context.version>1.62.2</grpc-context.version>
+ <grpc-context.version>1.81.0</grpc-context.version>
<h2.version>1.4.197</h2.version>
<hamcrest.version>2.2</hamcrest.version>
<jackson.version>2.21.3</jackson.version>
@@ -83,10 +83,10 @@
<javax.cache.bundle.version>1.0.0_1</javax.cache.bundle.version>
<javax.cache.tck.version>1.1.1</javax.cache.tck.version>
<javax.cache.version>1.0.0</javax.cache.version>
- <jboss.rmi.version>1.0.6.Final</jboss.rmi.version>
+ <jboss.logging.version>3.6.3.Final</jboss.logging.version>
<jetbrains.annotations.version>26.1.0</jetbrains.annotations.version>
- <jetty.version>11.0.25</jetty.version>
- <jetty-jakarta-servlet-api.version>5.0.2</jetty-jakarta-servlet-api.version>
+ <jetty.version>12.1.10</jetty.version>
+ <jetty-jakarta-servlet-api.version>6.1.0</jetty-jakarta-servlet-api.version>
<jmh.version>1.37</jmh.version>
<jna.version>4.5.2</jna.version>
<jnr.posix.version>3.1.15</jnr.posix.version>
@@ -101,13 +101,13 @@
<maven.flatten.plugin.version>1.7.3</maven.flatten.plugin.version>
<maven.flatten.file.name>pom-installed.xml</maven.flatten.file.name>
<maven.model.version>3.8.9</maven.model.version>
- <checkstyle.puppycrawl.version>8.45</checkstyle.puppycrawl.version>
+ <checkstyle.puppycrawl.version>12.3.1</checkstyle.puppycrawl.version>
<mockito.version>5.21.0</mockito.version>
<mysql.connector.version>8.0.30</mysql.connector.version>
<postgres.connector.version>42.7.3</postgres.connector.version>
<slf4j.version>2.0.17</slf4j.version>
- <snappy.version>1.1.10.7</snappy.version>
- <spring.version>5.3.39</spring.version>
+ <snappy.version>1.1.10.8</snappy.version>
+ <spring.version>6.2.19</spring.version>
<surefire.version>3.5.6</surefire.version>
<tomcat.version>10.0.27</tomcat.version>
<yardstick.version>0.8.3</yardstick.version>
@@ -117,6 +117,7 @@
<commons.lang3.version>3.20.0</commons.lang3.version>
<ignite-kafka-ext.version>1.0.0</ignite-kafka-ext.version>
<xstream.version>1.4.17</xstream.version>
+ <narayana.version>7.3.4.Final</narayana.version>
<!-- Maven plugins versions -->
<maven.javadoc.plugin.version>3.12.0</maven.javadoc.plugin.version>
@@ -683,6 +684,18 @@
<requireMavenVersion>
<version>[3.9.6,)</version>
</requireMavenVersion>
+ <bannedDependencies>
+ <excludes>
+ <exclude>javax.transaction:jta</exclude>
+ <exclude>javax.transaction:javax.transaction-api</exclude>
+ <exclude>jakarta.transaction:jakarta.transaction-api:(,2.0.1)</exclude>
+ </excludes>
+ <message>
+ Use jakarta.transaction:jakarta.transaction-api:2.0.1+ only.
+ Add <exclusions> to the transitive source if this fails.
+ </message>
+ </bannedDependencies>
+
</rules>
</configuration>
<executions>
@@ -860,6 +873,7 @@
<!-- RAT 0.17 bug: creates temp dir NameSet* in basedir for case-sensitivity check -->
<inputExclude>NameSet*</inputExclude>
<inputExclude>**/.gitignore</inputExclude>
+ <inputExclude>**/.git</inputExclude>
<inputExclude>**/.asf.yaml</inputExclude>
<inputExclude>.travis.yml</inputExclude>
<inputExclude>.github/PULL_REQUEST_TEMPLATE.md</inputExclude>
diff --git a/pom.xml b/pom.xml
index 5b4ef9e..d666654 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,7 +43,9 @@
<module>modules/binary/api</module>
<module>modules/binary/impl</module>
<module>modules/thin-client/api</module>
+ <module>modules/thin-client/impl</module>
<module>modules/unsafe</module>
+ <module>modules/nio</module>
<module>modules/core</module>
<module>modules/compress</module>
<module>modules/dev-utils</module>
@@ -567,7 +569,7 @@
<regexp pattern="(ignite.version=).+$" />
<substitution expression="\1${project.version}" />
<fileset dir="${project.basedir}/modules/core/">
- <include name="src/main/resources/ignite.properties" />
+ <include name="src/main/resources/ignite-build-info.properties" />
</fileset>
</replaceregexp>