From e4b38b25e66b6a1594f512d853431b8f560981bc Mon Sep 17 00:00:00 2001 From: Anastasia Iakimova <94782753+Nastya828@users.noreply.github.com> Date: Sun, 22 Sep 2024 19:43:36 +0300 Subject: [PATCH 01/11] IGNITE-23222 Fixed incremental snapshot restore fail if consistent ID is not a string (#11545) --- .../SnapshotMetadataVerificationTask.java | 13 +++++-- .../snapshot/IncrementalSnapshotTest.java | 37 +++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotMetadataVerificationTask.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotMetadataVerificationTask.java index fc6d4e431c323..370e922c7a44a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotMetadataVerificationTask.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/SnapshotMetadataVerificationTask.java @@ -39,6 +39,7 @@ import org.apache.ignite.compute.ComputeJobResultPolicy; import org.apache.ignite.compute.ComputeTaskAdapter; import org.apache.ignite.internal.IgniteEx; +import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.processors.cache.persistence.wal.FileDescriptor; import org.apache.ignite.internal.processors.cache.persistence.wal.FileWriteAheadLogManager; import org.apache.ignite.internal.processors.cache.persistence.wal.reader.IgniteWalIteratorFactory; @@ -49,7 +50,9 @@ import org.apache.ignite.resources.LoggerResource; import org.jetbrains.annotations.NotNull; +import static java.lang.String.valueOf; import static org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.incrementalSnapshotWalsDir; +import static org.apache.ignite.internal.processors.cache.persistence.snapshot.IgniteSnapshotManager.snapshotMetaFileName; /** Snapshot task to verify snapshot metadata on the baseline nodes for given snapshot name. */ @GridInternal @@ -112,7 +115,7 @@ public MetadataVerificationJob(SnapshotMetadataVerificationTaskArg arg) { if (arg.incrementIndex() > 0) { List metas = snpMeta.stream() - .filter(m -> m.consistentId().equals(ignite.localNode().consistentId())) + .filter(m -> m.consistentId().equals(valueOf(ignite.localNode().consistentId()))) .collect(Collectors.toList()); if (metas.size() != 1) { @@ -174,7 +177,9 @@ private void checkMeta(SnapshotMetadata meta) { /** Checks that all incremental snapshots are present, contain correct metafile and WAL segments. */ public void checkIncrementalSnapshots(SnapshotMetadata fullMeta, SnapshotMetadataVerificationTaskArg arg) { try { - IgniteSnapshotManager snpMgr = ignite.context().cache().context().snapshotMgr(); + GridCacheSharedContext ctx = ignite.context().cache().context(); + + IgniteSnapshotManager snpMgr = ctx.snapshotMgr(); // Incremental snapshot must contain ClusterSnapshotRecord. long startSeg = fullMeta.snapshotRecordPointer().index(); @@ -187,7 +192,9 @@ public void checkIncrementalSnapshots(SnapshotMetadata fullMeta, SnapshotMetadat "[snpName=" + arg.snapshotName() + ", snpPath=" + arg.snapshotPath() + ", incrementIndex=" + inc + ']'); } - String metaFileName = IgniteSnapshotManager.snapshotMetaFileName(ignite.localNode().consistentId().toString()); + String folderName = ctx.kernalContext().pdsFolderResolver().resolveFolders().folderName(); + + String metaFileName = snapshotMetaFileName(folderName); File metafile = incSnpDir.toPath().resolve(metaFileName).toFile(); diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotTest.java index 57a8a2bac79b2..415fc90589020 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/snapshot/IncrementalSnapshotTest.java @@ -25,6 +25,7 @@ import org.apache.ignite.IgniteCache; import org.apache.ignite.IgniteException; import org.apache.ignite.cache.QueryEntity; +import org.apache.ignite.cluster.ClusterState; import org.apache.ignite.configuration.CacheConfiguration; import org.apache.ignite.configuration.DataStorageConfiguration; import org.apache.ignite.configuration.IgniteConfiguration; @@ -440,6 +441,42 @@ public void testStagesFail() throws Exception { assertCacheKeys(srv.cache(DEFAULT_CACHE_NAME), CACHE_KEYS_RANGE); } + /** */ + @Test + public void testDefaultConsistentId() throws Exception { + assumeFalse("https://issues.apache.org/jira/browse/IGNITE-17819", encryption); + + IgniteEx ignite = startGrid(getConfiguration().setConsistentId(null)); + + ignite.cluster().state(ClusterState.ACTIVE); + + IgniteCache cache = ignite.getOrCreateCache(new CacheConfiguration<>(DEFAULT_CACHE_NAME)); + + cache.put(1, 1); + + ignite.snapshot().createSnapshot(SNAPSHOT_NAME).get(); + + cache.put(2, 2); + + ignite.snapshot().createIncrementalSnapshot(SNAPSHOT_NAME).get(); + + ignite.destroyCache(DEFAULT_CACHE_NAME); + + awaitPartitionMapExchange(); + + ignite.snapshot().restoreSnapshot(SNAPSHOT_NAME, F.asList(DEFAULT_CACHE_NAME)).get(getTestTimeout()); + + assertEquals(1, cache.size()); + + ignite.destroyCache(DEFAULT_CACHE_NAME); + + awaitPartitionMapExchange(); + + ignite.snapshot().restoreSnapshot(SNAPSHOT_NAME, F.asList(DEFAULT_CACHE_NAME), 1).get(getTestTimeout()); + + assertEquals(2, cache.size()); + } + /** */ private void checkFailWhenCacheDestroyed(String cache2rvm, String errMsg) throws Exception { IgniteEx srv = startGridsWithCache( From ca197952c95d7115b49cacb3bbcf16ed04b61dd5 Mon Sep 17 00:00:00 2001 From: Ilya Shishkov Date: Mon, 23 Sep 2024 14:58:01 +0300 Subject: [PATCH 02/11] IGNITE-22919 Remove redundant CacheEntryPredicate filters (#11519) --- .../processors/cache/GridCacheEntryEx.java | 4 - .../processors/cache/GridCacheMapEntry.java | 10 --- .../GridDistributedTxRemoteAdapter.java | 3 - .../dht/GridDhtTransactionalCacheAdapter.java | 4 - .../dht/GridDhtTxLocalAdapter.java | 1 - .../dht/colocated/GridDhtColocatedCache.java | 8 -- .../colocated/GridDhtColocatedLockFuture.java | 29 ------- .../distributed/near/GridNearLockFuture.java | 45 +--------- .../distributed/near/GridNearLockRequest.java | 85 +++---------------- .../near/GridNearTransactionalCache.java | 1 - .../distributed/near/GridNearTxLocal.java | 1 - .../transactions/IgniteTxLocalAdapter.java | 4 - .../cache/GridCacheTestEntryEx.java | 2 - .../consistency/ReadRepairDataGenerator.java | 2 - 14 files changed, 11 insertions(+), 188 deletions(-) diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java index 195b9cb6e4828..ccd41cd6e5050 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheEntryEx.java @@ -333,7 +333,6 @@ public EntryGetResult innerGetAndReserveForLoad(boolean updateMetrics, * @param oldValPresent {@code True} if oldValue present. * @param oldVal Old value. * @param topVer Topology version. - * @param filter Filter. * @param drType DR type. * @param drExpireTime DR expire time (if any). * @param explicitVer Explicit version (if any). @@ -359,7 +358,6 @@ public GridCacheUpdateTxResult innerSet( boolean oldValPresent, @Nullable CacheObject oldVal, AffinityTopologyVersion topVer, - CacheEntryPredicate[] filter, GridDrType drType, long drExpireTime, @Nullable GridCacheVersion explicitVer, @@ -379,7 +377,6 @@ public GridCacheUpdateTxResult innerSet( * @param oldValPresent {@code True} if oldValue present. * @param oldVal Old value. * @param topVer Topology version. - * @param filter Filter. * @param drType DR type. * @param explicitVer Explicit version (if any). * @param taskName Task name. @@ -400,7 +397,6 @@ public GridCacheUpdateTxResult innerRemove( boolean oldValPresent, @Nullable CacheObject oldVal, AffinityTopologyVersion topVer, - CacheEntryPredicate[] filter, GridDrType drType, @Nullable GridCacheVersion explicitVer, String taskName, diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java index fea3e4cd7e511..fba18aff20db0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCacheMapEntry.java @@ -986,7 +986,6 @@ protected void recordNodeId(UUID nodeId, AffinityTopologyVersion topVer) { boolean oldValPresent, @Nullable CacheObject oldVal, AffinityTopologyVersion topVer, - CacheEntryPredicate[] filter, GridDrType drType, long drExpireTime, @Nullable GridCacheVersion explicitVer, @@ -998,10 +997,6 @@ protected void recordNodeId(UUID nodeId, AffinityTopologyVersion topVer) { final boolean valid = valid(tx != null ? tx.topologyVersion() : topVer); - // Lock should be held by now. - if (!cctx.isAll(this, filter)) - return new GridCacheUpdateTxResult(false); - final GridCacheVersion newVer; boolean intercept = cctx.config().getInterceptor() != null; @@ -1206,7 +1201,6 @@ protected Object keyValue(boolean cpy) { boolean oldValPresent, @Nullable CacheObject oldVal, AffinityTopologyVersion topVer, - CacheEntryPredicate[] filter, GridDrType drType, @Nullable GridCacheVersion explicitVer, String taskName, @@ -1221,10 +1215,6 @@ protected Object keyValue(boolean cpy) { final boolean valid = valid(tx != null ? tx.topologyVersion() : topVer); - // Lock should be held by now. - if (!cctx.isAll(this, filter)) - return new GridCacheUpdateTxResult(false); - GridCacheVersion obsoleteVer = null; boolean intercept = cctx.config().getInterceptor() != null; diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java index 0be4dca2f6327..9b5112af621a8 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/GridDistributedTxRemoteAdapter.java @@ -628,7 +628,6 @@ else if (conflictCtx.isMerge()) { txEntry.hasOldValue(), txEntry.oldValue(), topVer, - null, replicate ? DR_BACKUP : DR_NONE, near() ? null : explicitVer, resolveTaskName(), @@ -650,7 +649,6 @@ else if (conflictCtx.isMerge()) { txEntry.hasOldValue(), txEntry.oldValue(), topVer, - null, replicate ? DR_BACKUP : DR_NONE, txEntry.conflictExpireTime(), near() ? null : explicitVer, @@ -688,7 +686,6 @@ else if (op == DELETE) { txEntry.hasOldValue(), txEntry.oldValue(), topVer, - null, replicate ? DR_BACKUP : DR_NONE, near() ? null : explicitVer, resolveTaskName(), 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 ded81ed40f2bc..4f19378c1cbf0 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 @@ -33,7 +33,6 @@ import org.apache.ignite.internal.NodeStoppingException; import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; -import org.apache.ignite.internal.processors.cache.CacheEntryPredicate; import org.apache.ignite.internal.processors.cache.CacheInvalidStateException; import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.processors.cache.CacheOperationContext; @@ -737,7 +736,6 @@ else if (txLockMsgLog.isDebugEnabled()) { isolation, createTtl, accessTtl, - CU.empty0(), opCtx != null && opCtx.skipStore(), opCtx != null && opCtx.isKeepBinary()); } @@ -754,7 +752,6 @@ else if (txLockMsgLog.isDebugEnabled()) { * @param isolation Transaction isolation. * @param createTtl TTL for create operation. * @param accessTtl TTL for read operation. - * @param filter Optional filter. * @param skipStore Skip store flag. * @return Lock future. */ @@ -767,7 +764,6 @@ public GridDhtFuture lockAllAsyncInternal(@Nullable Collection obtainLockAsync( isolation, createTtl, accessTtl, - CU.empty0(), skipStore, keepBinary); 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 fd3dee277c647..0c67626cb24cc 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 @@ -30,7 +30,6 @@ import org.apache.ignite.internal.IgniteInternalFuture; import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; -import org.apache.ignite.internal.processors.cache.CacheEntryPredicate; import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.processors.cache.CacheOperationContext; import org.apache.ignite.internal.processors.cache.EntryGetResult; @@ -659,7 +658,6 @@ else if (!skipVals && ctx.statisticsEnabled()) timeout, createTtl, accessTtl, - CU.empty0(), opCtx != null && opCtx.skipStore(), opCtx != null && opCtx.isKeepBinary(), opCtx != null && opCtx.recovery()); @@ -903,7 +901,6 @@ public void removeLocks(long threadId, GridCacheVersion ver, Collection lockAllAsync( final long timeout, final long createTtl, final long accessTtl, - @Nullable final CacheEntryPredicate[] filter, final boolean skipStore, final boolean keepBinary ) { @@ -944,7 +940,6 @@ IgniteInternalFuture lockAllAsync( timeout, createTtl, accessTtl, - filter, skipStore, keepBinary); } @@ -966,7 +961,6 @@ IgniteInternalFuture lockAllAsync( timeout, createTtl, accessTtl, - filter, skipStore, keepBinary); } @@ -987,7 +981,6 @@ IgniteInternalFuture lockAllAsync( * @param timeout Lock timeout. * @param createTtl TTL for create operation. * @param accessTtl TTL for read operation. - * @param filter filter Optional filter. * @param skipStore Skip store flag. * @return Lock future. */ @@ -1003,7 +996,6 @@ private IgniteInternalFuture lockAllAsync0( final long timeout, final long createTtl, final long accessTtl, - @Nullable final CacheEntryPredicate[] filter, boolean skipStore, boolean keepBinary) { int cnt = keys.size(); 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 1baa667c04d6a..1059edb4b430b 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 @@ -39,7 +39,6 @@ import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException; import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; -import org.apache.ignite.internal.processors.cache.CacheEntryPredicate; import org.apache.ignite.internal.processors.cache.CacheInvalidStateException; import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.processors.cache.CacheOperationContext; @@ -146,9 +145,6 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF /** Lock timeout. */ private final long timeout; - /** Filter. */ - private final CacheEntryPredicate[] filter; - /** Transaction. */ @GridToStringExclude private final GridNearTxLocal tx; @@ -198,7 +194,6 @@ public final class GridDhtColocatedLockFuture extends GridCacheCompoundIdentityF * @param timeout Lock acquisition timeout. * @param createTtl TTL for create operation. * @param accessTtl TTL for read operation. - * @param filter Filter. * @param skipStore Skip store flag. */ public GridDhtColocatedLockFuture( @@ -210,7 +205,6 @@ public GridDhtColocatedLockFuture( long timeout, long createTtl, long accessTtl, - CacheEntryPredicate[] filter, boolean skipStore, boolean keepBinary, boolean recovery @@ -227,7 +221,6 @@ public GridDhtColocatedLockFuture( this.timeout = timeout; this.createTtl = createTtl; this.accessTtl = accessTtl; - this.filter = filter; this.skipStore = skipStore; this.keepBinary = keepBinary; this.recovery = recovery; @@ -1037,15 +1030,6 @@ private synchronized void map0( if (entry == null) entry = cctx.colocated().entryExx(key, topVer, true); - if (!cctx.isAll(entry, filter)) { - if (log.isDebugEnabled()) - log.debug("Entry being locked did not pass filter (will not lock): " + entry); - - onComplete(false, false); - - return; - } - assert loc ^ entry.detached() : "Invalid entry [loc=" + loc + ", entry=" + entry + ']'; GridCacheMvccCandidate cand = addEntry(entry); @@ -1219,9 +1203,6 @@ private void proceedMapping0() final Collection mappedKeys = map.distributedKeys(); final ClusterNode node = map.node(); - if (filter != null && filter.length != 0) - req.filter(filter); - if (node.isLocal()) lockLocally(mappedKeys, req.topologyVersion()); else { @@ -1271,7 +1252,6 @@ private void lockLocally( timeout, createTtl, accessTtl, - filter, skipStore, keepBinary); @@ -1400,15 +1380,6 @@ private boolean addLocalKey( assert !entry.detached(); - if (!cctx.isAll(entry, filter)) { - if (log.isDebugEnabled()) - log.debug("Entry being locked did not pass filter (will not lock): " + entry); - - onComplete(false, false); - - return false; - } - GridCacheMvccCandidate cand = addEntry(entry); if (cand != null && !cand.reentry()) 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 07590718dcce4..ee1ec02e8b480 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 @@ -38,7 +38,6 @@ import org.apache.ignite.internal.cluster.ClusterTopologyCheckedException; import org.apache.ignite.internal.cluster.ClusterTopologyServerNotFoundException; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; -import org.apache.ignite.internal.processors.cache.CacheEntryPredicate; import org.apache.ignite.internal.processors.cache.CacheObject; import org.apache.ignite.internal.processors.cache.CacheStoppedException; import org.apache.ignite.internal.processors.cache.GridCacheCompoundIdentityFuture; @@ -132,9 +131,6 @@ public final class GridNearLockFuture extends GridCacheCompoundIdentityFuture keys, boolean remap, boolean topLocked try { entry = cctx.near().entryExx(key, topVer); - if (!cctx.isAll(entry, filter)) { - if (log.isDebugEnabled()) - log.debug("Entry being locked did not pass filter (will not lock): " + entry); - - onComplete(false, false); - - return; - } - // Removed exception may be thrown here. GridCacheMvccCandidate cand = addEntry( topVer, @@ -1213,9 +1173,6 @@ private void proceedMapping0() final Collection mappedKeys = map.distributedKeys(); final ClusterNode node = map.node(); - if (filter != null && filter.length != 0) - req.filter(filter); - if (node.isLocal()) { req.miniId(-1); 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 6106872d83474..ce1b4d6b71769 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 @@ -19,13 +19,8 @@ import java.io.Externalizable; import java.nio.ByteBuffer; -import java.util.Arrays; import java.util.UUID; -import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.internal.processors.affinity.AffinityTopologyVersion; -import org.apache.ignite.internal.processors.cache.CacheEntryPredicate; -import org.apache.ignite.internal.processors.cache.GridCacheContext; -import org.apache.ignite.internal.processors.cache.GridCacheSharedContext; import org.apache.ignite.internal.processors.cache.KeyCacheObject; import org.apache.ignite.internal.processors.cache.distributed.GridDistributedLockRequest; import org.apache.ignite.internal.processors.cache.version.GridCacheVersion; @@ -64,9 +59,6 @@ public class GridNearLockRequest extends GridDistributedLockRequest { /** Mini future ID. */ private int miniId; - /** Filter. */ - private CacheEntryPredicate[] filter; - /** Array of mapped DHT versions for this entry. */ @GridToStringInclude private GridCacheVersion[] dhtVers; @@ -240,20 +232,6 @@ public boolean syncCommit() { return isFlag(SYNC_COMMIT_FLAG_MASK); } - /** - * @return Filter. - */ - public CacheEntryPredicate[] filter() { - return filter; - } - - /** - * @param filter Filter. - */ - public void filter(CacheEntryPredicate[] filter) { - this.filter = filter; - } - /** * @return Mini future ID. */ @@ -318,34 +296,6 @@ public long accessTtl() { return txLbl; } - /** {@inheritDoc} */ - @Override public void prepareMarshal(GridCacheSharedContext ctx) throws IgniteCheckedException { - super.prepareMarshal(ctx); - - if (filter != null) { - GridCacheContext cctx = ctx.cacheContext(cacheId); - - for (CacheEntryPredicate p : filter) { - if (p != null) - p.prepareMarshal(cctx); - } - } - } - - /** {@inheritDoc} */ - @Override public void finishUnmarshal(GridCacheSharedContext ctx, ClassLoader ldr) throws IgniteCheckedException { - super.finishUnmarshal(ctx, ldr); - - if (filter != null) { - GridCacheContext cctx = ctx.cacheContext(cacheId); - - for (CacheEntryPredicate p : filter) { - if (p != null) - p.finishUnmarshal(cctx, ldr); - } - } - } - /** {@inheritDoc} */ @Override public boolean writeTo(ByteBuffer buf, MessageWriter writer) { writer.setBuffer(buf); @@ -380,36 +330,30 @@ public long accessTtl() { writer.incrementState(); case 24: - if (!writer.writeObjectArray("filter", filter, MessageCollectionItemType.MSG)) - return false; - - writer.incrementState(); - - case 25: if (!writer.writeByte("flags", flags)) return false; writer.incrementState(); - case 26: + case 25: if (!writer.writeInt("miniId", miniId)) return false; writer.incrementState(); - case 27: + case 26: if (!writer.writeInt("taskNameHash", taskNameHash)) return false; writer.incrementState(); - case 28: + case 27: if (!writer.writeAffinityTopologyVersion("topVer", topVer)) return false; writer.incrementState(); - case 29: + case 28: if (!writer.writeString("txLbl", txLbl)) return false; @@ -455,14 +399,6 @@ public long accessTtl() { reader.incrementState(); case 24: - filter = reader.readObjectArray("filter", MessageCollectionItemType.MSG, CacheEntryPredicate.class); - - if (!reader.isLastRead()) - return false; - - reader.incrementState(); - - case 25: flags = reader.readByte("flags"); if (!reader.isLastRead()) @@ -470,7 +406,7 @@ public long accessTtl() { reader.incrementState(); - case 26: + case 25: miniId = reader.readInt("miniId"); if (!reader.isLastRead()) @@ -478,7 +414,7 @@ public long accessTtl() { reader.incrementState(); - case 27: + case 26: taskNameHash = reader.readInt("taskNameHash"); if (!reader.isLastRead()) @@ -486,7 +422,7 @@ public long accessTtl() { reader.incrementState(); - case 28: + case 27: topVer = reader.readAffinityTopologyVersion("topVer"); if (!reader.isLastRead()) @@ -494,7 +430,7 @@ public long accessTtl() { reader.incrementState(); - case 29: + case 28: txLbl = reader.readString("txLbl"); if (!reader.isLastRead()) @@ -514,12 +450,11 @@ public long accessTtl() { /** {@inheritDoc} */ @Override public byte fieldsCount() { - return 30; + return 29; } /** {@inheritDoc} */ @Override public String toString() { - return S.toString(GridNearLockRequest.class, this, "filter", Arrays.toString(filter), - "super", super.toString()); + return S.toString(GridNearLockRequest.class, this, "super", super.toString()); } } 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 4494fda136a6d..f4cdf274b98c0 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 @@ -302,7 +302,6 @@ private void processLockResponse(UUID nodeId, GridNearLockResponse res) { timeout, createTtl, accessTtl, - CU.empty0(), opCtx != null && opCtx.skipStore(), opCtx != null && opCtx.isKeepBinary(), opCtx != null && opCtx.recovery()); 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 6798c08fc9e4a..e414eedd07140 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 @@ -3885,7 +3885,6 @@ public IgniteInternalFuture lockAllAsync(GridCacheContext c isolation, createTtl, accessTtl, - CU.empty0(), skipStore, keepBinary); 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 ff71005cd2a05..b45173c8c7044 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 @@ -707,7 +707,6 @@ else if (conflictCtx.isUseNew()) { txEntry.hasOldValue(), txEntry.oldValue(), topVer, - null, cached.detached() ? DR_NONE : drType, txEntry.conflictExpireTime(), cached.isNear() ? null : explicitVer, @@ -740,7 +739,6 @@ else if (conflictCtx.isUseNew()) { txEntry.hasOldValue(), txEntry.oldValue(), topVer, - CU.empty0(), DR_NONE, txEntry.conflictExpireTime(), null, @@ -762,7 +760,6 @@ else if (op == DELETE) { txEntry.hasOldValue(), txEntry.oldValue(), topVer, - null, cached.detached() ? DR_NONE : drType, cached.isNear() ? null : explicitVer, resolveTaskName(), @@ -790,7 +787,6 @@ else if (op == DELETE) { txEntry.hasOldValue(), txEntry.oldValue(), topVer, - CU.empty0(), DR_NONE, null, resolveTaskName(), diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java index c73b963482347..f7a399dfab6b1 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/GridCacheTestEntryEx.java @@ -451,7 +451,6 @@ void recheckLock() { boolean hasOldVal, @Nullable CacheObject oldVal, AffinityTopologyVersion topVer, - CacheEntryPredicate[] filter, GridDrType drType, long drExpireTime, @Nullable GridCacheVersion drVer, @@ -513,7 +512,6 @@ void recheckLock() { boolean oldValPresent, @Nullable CacheObject oldVal, AffinityTopologyVersion topVer, - CacheEntryPredicate[] filter, GridDrType drType, @Nullable GridCacheVersion drVer, String taskName, diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/consistency/ReadRepairDataGenerator.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/consistency/ReadRepairDataGenerator.java index f73ed0f31a8b9..441fbbcc267cf 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/consistency/ReadRepairDataGenerator.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/consistency/ReadRepairDataGenerator.java @@ -54,7 +54,6 @@ import org.apache.ignite.internal.processors.dr.GridDrType; import org.apache.ignite.internal.util.typedef.G; import org.apache.ignite.internal.util.typedef.T2; -import org.apache.ignite.internal.util.typedef.internal.CU; import org.apache.ignite.testframework.GridTestUtils; import org.apache.ignite.testframework.junits.JUnitAssertAware; import org.mockito.ArgumentMatchers; @@ -411,7 +410,6 @@ private InconsistentMapping setDifferentValuesForSameKey( false, null, AffinityTopologyVersion.NONE, - CU.empty0(), GridDrType.DR_NONE, null, null, From a86e0c867b461ed0e6f94416703b9e0ff55b0f49 Mon Sep 17 00:00:00 2001 From: okreda1 <58815851+okreda1@users.noreply.github.com> Date: Mon, 23 Sep 2024 22:05:30 +0300 Subject: [PATCH 03/11] IGNITE-23196 [ducktests] Change JVM options to JDK11 ones (#11536) --- modules/ducktests/README.md | 92 ++++++++++++++++++- .../tests/checks/utils/check_ignite_spec.py | 22 +++-- .../ignitetest/services/utils/ignite_spec.py | 10 +- .../ignitetest/services/utils/jvm_utils.py | 2 +- .../tests/ignitetest/utils/ignite_test.py | 1 + 5 files changed, 108 insertions(+), 19 deletions(-) diff --git a/modules/ducktests/README.md b/modules/ducktests/README.md index 028b4e06e6403..96c7708e69ba5 100644 --- a/modules/ducktests/README.md +++ b/modules/ducktests/README.md @@ -3,7 +3,7 @@ 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`. -- http://ducktape-docs.readthedocs.io - documentation to the `ducktape`. +- https://ducktape.readthedocs.io/en/latest/index.html - documentation to the `ducktape`. Structure of the `tests` directory is: - `./ignitetest/services` contains basic services functionality. @@ -77,11 +77,11 @@ You may set versions (products) using `@ignite_versions` decorator at code ``` or passing versions set via globals during the execution ``` ---globals-json, eg: {"ignite_versions":["2.8.1", "dev"]} +--global-json, eg: {"ignite_versions":["2.8.1", "dev"]} ``` You may also specify product prefix by `project` param at globals, for example: ``` ---globals-json, eg: {"project": "fork" ,"ignite_versions": ["ignite-2.8.1", "2.8.1", "dev"]} +--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` @@ -89,12 +89,94 @@ will execute tests on `ignite-2.8.1, fork-2.8.1, fork-dev` 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 -TBD +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 -TBD +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 diff --git a/modules/ducktests/tests/checks/utils/check_ignite_spec.py b/modules/ducktests/tests/checks/utils/check_ignite_spec.py index 0dd8cb4515f5c..a3c8e52104939 100644 --- a/modules/ducktests/tests/checks/utils/check_ignite_spec.py +++ b/modules/ducktests/tests/checks/utils/check_ignite_spec.py @@ -81,17 +81,19 @@ def check_default_jvm_options__are_not_used__if_merge_with_default_is_false(serv def check_boolean_options__go_after_default_ones_and_overwrite_them__if_passed_via_jvm_opt(service): service.context.globals[JFR_ENABLED] = True - spec = IgniteApplicationSpec(service, jvm_opts="-XX:-UnlockCommercialFeatures") - assert "-XX:-UnlockCommercialFeatures" in spec.jvm_opts - assert "-XX:-UnlockCommercialFeatures" in spec.jvm_opts - assert spec.jvm_opts.index("-XX:-UnlockCommercialFeatures") >\ - spec.jvm_opts.index("-XX:+UnlockCommercialFeatures") + spec = IgniteApplicationSpec(service, jvm_opts="-XX:-FlightRecorder") + assert "-XX:-FlightRecorder" in spec.jvm_opts + assert "-XX:+FlightRecorder" in spec.jvm_opts + assert spec.jvm_opts.index("-XX:-FlightRecorder") >\ + spec.jvm_opts.index("-XX:+FlightRecorder") def check_colon_options__go_after_default_ones_and_overwrite_them__if_passed_via_jvm_opt(service): service.log_dir = "/default-path" - spec = IgniteApplicationSpec(service, jvm_opts=["-Xloggc:/some-non-default-path/gc.log"]) - assert "-Xloggc:/some-non-default-path/gc.log" in spec.jvm_opts - assert "-Xloggc:/default-path/gc.log" in spec.jvm_opts - assert spec.jvm_opts.index("-Xloggc:/some-non-default-path/gc.log") > \ - spec.jvm_opts.index("-Xloggc:/default-path/gc.log") + spec = IgniteApplicationSpec(service, jvm_opts=["-Xlog:gc:/some-non-default-path/gc.log"]) + assert "-Xlog:gc:/some-non-default-path/gc.log" in spec.jvm_opts + assert "-Xlog:gc*=debug,gc+stats*=debug,gc+ergo*=debug:/default-path/gc.log:uptime,time,level,tags" \ + in spec.jvm_opts + assert spec.jvm_opts.index("-Xlog:gc:/some-non-default-path/gc.log") > \ + spec.jvm_opts.index( + "-Xlog:gc*=debug,gc+stats*=debug,gc+ergo*=debug:/default-path/gc.log:uptime,time,level,tags") diff --git a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py index 7cb60371a0443..70bacf587e1c6 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py +++ b/modules/ducktests/tests/ignitetest/services/utils/ignite_spec.py @@ -36,7 +36,7 @@ from ignitetest.services.utils.metrics.metrics import is_opencensus_metrics_enabled, configure_opencensus_metrics,\ is_jmx_metrics_enabled, configure_jmx_metrics from ignitetest.services.utils.jmx_remote.jmx_remote_params import get_jmx_remote_params -from ignitetest.utils.ignite_test import JFR_ENABLED +from ignitetest.utils.ignite_test import JFR_ENABLED, SAFEPOINT_LOGS_ENABLED from ignitetest.utils.version import DEV_BRANCH SHARED_PREPARED_FILE = ".ignite_prepared" @@ -102,6 +102,11 @@ def __get_default_jvm_opts(self): oom_path=os.path.join(self.service.log_dir, "out_of_mem.hprof"), vm_error_path=os.path.join(self.service.log_dir, "hs_err_pid%p.log")) + if self.service.context.globals.get(SAFEPOINT_LOGS_ENABLED, False): + default_jvm_opts = merge_jvm_settings( + default_jvm_opts, ["-Xlog:safepoint*=debug:file=" + os.path.join(self.service.log_dir, "safepoint.log") + + ":time,uptime,level,tags"]) + default_jvm_opts = merge_jvm_settings( default_jvm_opts, ["-DIGNITE_SUCCESS_FILE=" + os.path.join(self.service.persistent_root, "success_file"), "-Dlog4j.configDebug=true"]) @@ -112,8 +117,7 @@ def __get_default_jvm_opts(self): if self.service.context.globals.get(JFR_ENABLED, False): default_jvm_opts = merge_jvm_settings(default_jvm_opts, - ["-XX:+UnlockCommercialFeatures", - "-XX:+FlightRecorder", + ["-XX:+FlightRecorder", "-XX:StartFlightRecording=dumponexit=true," + f"filename={self.service.jfr_dir}/recording.jfr"]) diff --git a/modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py b/modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py index eaab8566285cb..b67c0a471bc80 100644 --- a/modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py +++ b/modules/ducktests/tests/ignitetest/services/utils/jvm_utils.py @@ -38,7 +38,7 @@ def create_jvm_settings(heap_size=DEFAULT_HEAP, gc_settings=JVM_PARAMS_GC_G1, ge """ gc_dump = "" if gc_dump_path: - gc_dump = "-verbose:gc -Xloggc:" + gc_dump_path + gc_dump = "-Xlog:gc*=debug,gc+stats*=debug,gc+ergo*=debug:" + gc_dump_path + ":uptime,time,level,tags" out_of_mem_dump = "" if oom_path: diff --git a/modules/ducktests/tests/ignitetest/utils/ignite_test.py b/modules/ducktests/tests/ignitetest/utils/ignite_test.py index 5eb7dd669fe59..67b205f000635 100644 --- a/modules/ducktests/tests/ignitetest/utils/ignite_test.py +++ b/modules/ducktests/tests/ignitetest/utils/ignite_test.py @@ -27,6 +27,7 @@ # globals: JFR_ENABLED = "jfr_enabled" IGNITE_TEST_CONTEXT_CLASS_KEY_NAME = "IgniteTestContext" +SAFEPOINT_LOGS_ENABLED = "safepoint_log_enabled" class IgniteTestContext(TestContext): From 8782b4882ffdc51c2b72f45e190d3cab35ef3d24 Mon Sep 17 00:00:00 2001 From: Semyon Zikunov <43781436+superminkfan@users.noreply.github.com> Date: Tue, 24 Sep 2024 18:17:58 +1000 Subject: [PATCH 04/11] IGNITE-23040 Fix GridNioSslSelfTest (#11505) --- .../ignite/internal/util/nio/GridNioSelfTest.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java index 06dbed3910fc0..255e263a4d5b4 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/util/nio/GridNioSelfTest.java @@ -652,7 +652,9 @@ public void testSendReceive() throws Exception { client = createClient(U.getLocalHost(), srvr.port(), U.getLocalHost()); client.sendMessage(createMessage(), MSG_SIZE); + client.receiveMessage(); client.sendMessage(createMessage(), MSG_SIZE); + client.receiveMessage(); client.close(); } @@ -729,8 +731,10 @@ public void testMultiThreadedSendReceive() throws Exception { try { client = createClient(U.getLocalHost(), srvr.port(), U.getLocalHost()); - for (int i = 0; i < MSG_CNT; i++) + for (int i = 0; i < MSG_CNT; i++) { client.sendMessage(data, data.length); + client.receiveMessage(); + } } catch (Exception e) { error("Failed to send message.", e); @@ -890,6 +894,7 @@ public void testDeliveryDuration() throws Exception { deliveryDurations.put(msg.getId(), start); client.sendMessage(data, data.length); + client.receiveMessage(); long end = System.currentTimeMillis(); @@ -1333,6 +1338,9 @@ private static class NioListener extends GridNioServerListenerAdapter { if (latch != null) latch.countDown(); + + //sending ack of processing message + ses.send(new byte[] {(byte)0xDEADBEEF}); } /** From 3a789b617f50fc7c8277c395166ab8e8e7cba87f Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Tue, 24 Sep 2024 17:43:23 +0300 Subject: [PATCH 05/11] IGNITE-23178 SQL Calcite: Fix least restrictive type priority (for DOUBLE and FLOAT) - Fixes #11520. Signed-off-by: Aleksey Plekhanov --- .../query/calcite/type/IgniteTypeFactory.java | 13 +- .../exec/NumericTypesPrecisionsTest.java | 202 ++++++++++++++++++ .../testsuites/IgniteCalciteTestSuite.java | 3 + 3 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/NumericTypesPrecisionsTest.java diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeFactory.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeFactory.java index 744fea9c05251..00de072af2120 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeFactory.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/type/IgniteTypeFactory.java @@ -250,7 +250,18 @@ else if (type instanceof IgniteCustomType) if (types.size() == 1 || allEquals(types)) return F.first(types); - return super.leastRestrictive(types); + RelDataType res = super.leastRestrictive(types); + + // Calcite compares approximate numerics by their precisions. While FLOAT has the same precision as DOUBLE, the + // least restrictive may variate between them and issue FLOAT instead of DOUBLE. DOUBLE is more preferable. + if (res != null && res.getSqlTypeName() == SqlTypeName.FLOAT && types.size() > 1) { + for (RelDataType type : types) { + if (type.getSqlTypeName() == SqlTypeName.DOUBLE && type.getPrecision() >= res.getPrecision()) + return type; + } + } + + return res; } /** {@inheritDoc} */ diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/NumericTypesPrecisionsTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/NumericTypesPrecisionsTest.java new file mode 100644 index 0000000000000..e582e24b72ac8 --- /dev/null +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/NumericTypesPrecisionsTest.java @@ -0,0 +1,202 @@ +/* + * 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; + +import java.util.Arrays; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeSystem; +import org.apache.calcite.sql.type.SqlTypeName; +import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory; +import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeSystem; +import org.apache.ignite.internal.processors.query.calcite.util.Commons; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** Test for numeric types precisions. */ +public class NumericTypesPrecisionsTest { + /** */ + private static final IgniteTypeFactory TYPE_FACTORY = Commons.typeFactory(); + + /** */ + private static final int STRING_PRECISION = 65536; + + /** */ + private static final int DECIMAL_PRECISION = 32767; + + /** */ + private static final int DECIMAL_SCALE = 32767; + + /** */ + private final RelDataTypeSystem typeSys = IgniteTypeSystem.INSTANCE; + + /** */ + private static final RelDataType TINYINT = TYPE_FACTORY.createSqlType(SqlTypeName.TINYINT); + + /** */ + private static final RelDataType SMALLINT = TYPE_FACTORY.createSqlType(SqlTypeName.SMALLINT); + + /** */ + private static final RelDataType INTEGER = TYPE_FACTORY.createSqlType(SqlTypeName.INTEGER); + + /** */ + private static final RelDataType REAL = TYPE_FACTORY.createSqlType(SqlTypeName.REAL); + + /** */ + private static final RelDataType FLOAT = TYPE_FACTORY.createSqlType(SqlTypeName.FLOAT); + + /** */ + private static final RelDataType DOUBLE = TYPE_FACTORY.createSqlType(SqlTypeName.DOUBLE); + + /** */ + private static final RelDataType DECIMAL = TYPE_FACTORY.createSqlType(SqlTypeName.DECIMAL, 1000, 10); + + /** */ + private static final RelDataType BIGINT = TYPE_FACTORY.createSqlType(SqlTypeName.BIGINT); + + /** */ + private static final RelDataType[] TEST_SUITE = new RelDataType[] {TINYINT, SMALLINT, INTEGER, REAL, FLOAT, DOUBLE, DECIMAL, BIGINT}; + + /** */ + @Test + public void testLeastRestrictiveTinyInt() { + RelDataType[] expected = new RelDataType[] {TINYINT, SMALLINT, INTEGER, REAL, FLOAT, DOUBLE, DECIMAL, BIGINT}; + + doTestExpectedLeastRestrictive(TINYINT, expected); + } + + /** */ + @Test + public void testLeastRestrictiveSmallInt() { + RelDataType[] expected = new RelDataType[] {SMALLINT, SMALLINT, INTEGER, REAL, FLOAT, DOUBLE, DECIMAL, BIGINT}; + + doTestExpectedLeastRestrictive(SMALLINT, expected); + } + + /** */ + @Test + public void testLeastRestrictiveInteger() { + RelDataType[] expected = new RelDataType[] {INTEGER, INTEGER, INTEGER, REAL, FLOAT, DOUBLE, DECIMAL, BIGINT}; + + doTestExpectedLeastRestrictive(INTEGER, expected); + } + + /** */ + @Test + public void testLeastRestrictiveFloat() { + RelDataType[] expected = new RelDataType[] {FLOAT, FLOAT, FLOAT, FLOAT, FLOAT, DOUBLE, DOUBLE, FLOAT}; + + doTestExpectedLeastRestrictive(FLOAT, expected); + } + + /** */ + @Test + public void testLeastRestrictiveDouble() { + RelDataType[] expected = new RelDataType[] {DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE, DOUBLE}; + + doTestExpectedLeastRestrictive(DOUBLE, expected); + } + + /** */ + @Test + public void testLeastRestrictiveDecimal() { + RelDataType[] expected = new RelDataType[] {DECIMAL, DECIMAL, DECIMAL, DOUBLE, DOUBLE, DOUBLE, DECIMAL, DECIMAL}; + + doTestExpectedLeastRestrictive(DECIMAL, expected); + } + + /** */ + @Test + public void testLeastRestrictiveBigInt() { + RelDataType[] expected = new RelDataType[] {BIGINT, BIGINT, BIGINT, REAL, FLOAT, DOUBLE, DECIMAL, BIGINT}; + + doTestExpectedLeastRestrictive(BIGINT, expected); + } + + /** This test is mostly for tracking possible chages with Calcite's version updates. */ + @Test + public void testMaxPrecision() { + assertEquals(STRING_PRECISION, typeSys.getMaxPrecision(SqlTypeName.CHAR)); + assertEquals(STRING_PRECISION, typeSys.getMaxPrecision(SqlTypeName.VARCHAR)); + assertEquals(STRING_PRECISION, typeSys.getMaxPrecision(SqlTypeName.BINARY)); + assertEquals(STRING_PRECISION, typeSys.getMaxPrecision(SqlTypeName.VARBINARY)); + + assertEquals(3, typeSys.getMaxPrecision(SqlTypeName.TINYINT)); + assertEquals(5, typeSys.getMaxPrecision(SqlTypeName.SMALLINT)); + assertEquals(10, typeSys.getMaxPrecision(SqlTypeName.INTEGER)); + assertEquals(19, typeSys.getMaxPrecision(SqlTypeName.BIGINT)); + assertEquals(7, typeSys.getMaxPrecision(SqlTypeName.REAL)); + assertEquals(15, typeSys.getMaxPrecision(SqlTypeName.FLOAT)); + assertEquals(15, typeSys.getMaxPrecision(SqlTypeName.DOUBLE)); + assertEquals(DECIMAL_PRECISION, typeSys.getMaxPrecision(SqlTypeName.DECIMAL)); + + assertEquals(0, typeSys.getMaxPrecision(SqlTypeName.DATE)); + assertEquals(3, typeSys.getMaxPrecision(SqlTypeName.TIME)); + assertEquals(3, typeSys.getMaxPrecision(SqlTypeName.TIME_WITH_LOCAL_TIME_ZONE)); + assertEquals(3, typeSys.getMaxPrecision(SqlTypeName.TIMESTAMP)); + assertEquals(3, typeSys.getMaxPrecision(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE)); + } + + /** This test is mostly for tracking possible chages with Calcite's version updates. */ + @Test + public void testDefaultPrecision() { + assertEquals(1, typeSys.getDefaultPrecision(SqlTypeName.CHAR)); + assertEquals(RelDataType.PRECISION_NOT_SPECIFIED, typeSys.getDefaultPrecision(SqlTypeName.VARCHAR)); + assertEquals(1, typeSys.getDefaultPrecision(SqlTypeName.BINARY)); + assertEquals(RelDataType.PRECISION_NOT_SPECIFIED, typeSys.getDefaultPrecision(SqlTypeName.VARBINARY)); + + assertEquals(3, typeSys.getDefaultPrecision(SqlTypeName.TINYINT)); + assertEquals(5, typeSys.getDefaultPrecision(SqlTypeName.SMALLINT)); + assertEquals(10, typeSys.getDefaultPrecision(SqlTypeName.INTEGER)); + assertEquals(19, typeSys.getDefaultPrecision(SqlTypeName.BIGINT)); + assertEquals(7, typeSys.getDefaultPrecision(SqlTypeName.REAL)); + assertEquals(15, typeSys.getDefaultPrecision(SqlTypeName.FLOAT)); + assertEquals(15, typeSys.getDefaultPrecision(SqlTypeName.DOUBLE)); + assertEquals(DECIMAL_PRECISION, typeSys.getDefaultPrecision(SqlTypeName.DECIMAL)); + + assertEquals(0, typeSys.getDefaultPrecision(SqlTypeName.DATE)); + assertEquals(0, typeSys.getDefaultPrecision(SqlTypeName.TIME)); + assertEquals(3, typeSys.getDefaultPrecision(SqlTypeName.TIME_WITH_LOCAL_TIME_ZONE)); + assertEquals(3, typeSys.getDefaultPrecision(SqlTypeName.TIMESTAMP)); + assertEquals(0, typeSys.getDefaultPrecision(SqlTypeName.TIMESTAMP_WITH_LOCAL_TIME_ZONE)); + } + + + /** This test is mostly for tracking possible chages with Calcite's version updates. */ + @Test + public void testMaxNumericPrecision() { + assertEquals(DECIMAL_PRECISION, typeSys.getMaxNumericPrecision()); + } + + /** This test is mostly for tracking possible chages with Calcite's version updates. */ + @Test + public void testMaxNumericScale() { + assertEquals(DECIMAL_SCALE, typeSys.getMaxNumericScale()); + } + + /** */ + private static void doTestExpectedLeastRestrictive(RelDataType testType, RelDataType[] expectedLeast) { + assert expectedLeast.length == TEST_SUITE.length; + + for (int i = 0; i < TEST_SUITE.length; ++i) { + RelDataType actualType = TYPE_FACTORY.leastRestrictive(Arrays.asList(testType, TEST_SUITE[i])); + + assertEquals("leastRestrictive(" + testType + ", " + TEST_SUITE[i] + ")", expectedLeast[i], actualType); + } + } +} diff --git a/modules/calcite/src/test/java/org/apache/ignite/testsuites/IgniteCalciteTestSuite.java b/modules/calcite/src/test/java/org/apache/ignite/testsuites/IgniteCalciteTestSuite.java index ed7ad797597d0..e71990733db80 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/testsuites/IgniteCalciteTestSuite.java +++ b/modules/calcite/src/test/java/org/apache/ignite/testsuites/IgniteCalciteTestSuite.java @@ -20,6 +20,7 @@ import org.apache.ignite.internal.processors.query.calcite.QueryCheckerTest; import org.apache.ignite.internal.processors.query.calcite.exec.ClosableIteratorsHolderTest; import org.apache.ignite.internal.processors.query.calcite.exec.LogicalRelImplementorTest; +import org.apache.ignite.internal.processors.query.calcite.exec.NumericTypesPrecisionsTest; import org.apache.ignite.internal.processors.query.calcite.exec.exp.IgniteSqlFunctionsTest; import org.apache.ignite.internal.processors.query.calcite.exec.tracker.MemoryTrackerTest; import org.apache.ignite.internal.processors.query.calcite.message.CalciteCommunicationMessageSerializationTest; @@ -47,6 +48,8 @@ ScriptTestSuite.class, CalciteCommunicationMessageSerializationTest.class, + + NumericTypesPrecisionsTest.class, }) public class IgniteCalciteTestSuite { } From 6fa2be72c574d02381a0e4236a88ad3f8e39d748 Mon Sep 17 00:00:00 2001 From: Vladimir Steshin Date: Tue, 24 Sep 2024 17:46:43 +0300 Subject: [PATCH 06/11] IGNITE-23112 SQL Calcite: Allow grouping by alias and ordinal value - Fixes #11500. Signed-off-by: Aleksey Plekhanov --- .../calcite/sql/IgniteSqlConformance.java | 10 + .../AggregatesIntegrationTest.java | 27 +++ .../calcite/planner/AggregatePlannerTest.java | 33 ++++ .../sql/aggregate/group/test_group_by.test | 34 +++- .../aggregate/group/test_group_by.test_ignore | 182 ------------------ .../aggregate/group/test_group_by_alias.test | 17 ++ .../group/test_group_by_alias.test_ignore | 1 - .../src/test/sql/order/test_order_by.test | 20 ++ .../test/sql/order/test_order_by.test_ignore | 9 - 9 files changed, 137 insertions(+), 196 deletions(-) delete mode 100644 modules/calcite/src/test/sql/aggregate/group/test_group_by.test_ignore diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/IgniteSqlConformance.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/IgniteSqlConformance.java index c30e6725986cb..3316e71c2faae 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/IgniteSqlConformance.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/sql/IgniteSqlConformance.java @@ -35,4 +35,14 @@ public class IgniteSqlConformance extends SqlAbstractConformance { @Override public boolean isBangEqualAllowed() { return true; } + + /** {@inheritDoc} */ + @Override public boolean isGroupByAlias() { + return true; + } + + /** {@inheritDoc} */ + @Override public boolean isGroupByOrdinal() { + return true; + } } 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 4b910029caef1..3afa400e87342 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 @@ -18,6 +18,7 @@ package org.apache.ignite.internal.processors.query.calcite.integration; import java.util.List; +import org.apache.calcite.sql.validate.SqlConformance; import org.apache.ignite.IgniteCache; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.cache.CacheMode; @@ -140,6 +141,32 @@ public void testCountIndexedField() { assertQuery("SELECT COUNT(b) FROM tbl").returns(100L).check(); } + /** + * Tests grouping result by an alias and an ordinal value. + * + * @see SqlConformance#isGroupByAlias() + * @see SqlConformance#isGroupByOrdinal() + */ + @Test + public void testGroupingByAlias() { + executeSql("CREATE TABLE t1(id INT, val_int INT, val_char VARCHAR, PRIMARY KEY(id))"); + + for (int i = 0; i < 10; i++) + executeSql("INSERT INTO t1 VALUES (?, ?, ?)", i, i % 3, "val" + i % 3); + + assertQuery("SELECT val_char as ALS, count(val_int) FROM t1 GROUP BY ALS") + .returns("val0", 4L) + .returns("val1", 3L) + .returns("val2", 3L) + .check(); + + assertQuery("SELECT val_char, count(val_int) FROM t1 GROUP BY 1") + .returns("val0", 4L) + .returns("val1", 3L) + .returns("val2", 3L) + .check(); + } + /** */ @Test public void testCountOfNonNumericField() { diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AggregatePlannerTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AggregatePlannerTest.java index f464545b06dd8..cd2ef4d8f9173 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AggregatePlannerTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AggregatePlannerTest.java @@ -29,6 +29,7 @@ import org.apache.calcite.rel.type.RelDataTypeFactory; import org.apache.calcite.sql.SqlExplainLevel; import org.apache.calcite.sql.fun.SqlAvgAggFunction; +import org.apache.calcite.sql.validate.SqlConformance; import org.apache.ignite.internal.processors.query.calcite.rel.IgniteAggregate; import org.apache.ignite.internal.processors.query.calcite.rel.IgniteIndexScan; import org.apache.ignite.internal.processors.query.calcite.rel.IgniteRel; @@ -326,6 +327,38 @@ public void singleSumTypes() throws Exception { assertEquals(tf.createJavaType(Double.class), rowTypes.getFieldList().get(7).getType()); } + /** + * Tests that grouping plan works with an alias and an ordinal value. + * + * @see SqlConformance#isGroupByAlias() + * @see SqlConformance#isGroupByOrdinal() + */ + @Test + public void groupingByAliasAndOrdinal() throws Exception { + IgniteSchema schema = createSchema( + createTable( + "TEST", IgniteDistributions.broadcast(), + "ID", Integer.class, + "GRP", Integer.class, + "VAL_INT", Integer.class + ) + ); + + assertPlan( + "SELECT GRP AS ALS, SUM(VAL_INT) FROM test GROUP BY ALS", + schema, + nodeOrAnyChild(isInstanceOf(algo.colocated)), + algo.rulesToDisable + ); + + assertPlan( + "SELECT GRP, SUM(VAL_INT) FROM test GROUP BY 1", + schema, + nodeOrAnyChild(isInstanceOf(algo.colocated)), + algo.rulesToDisable + ); + } + /** * @throws Exception If failed. */ 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 e1fbc5d64dfda..56ffeccd35525 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 @@ -78,6 +78,13 @@ SELECT b, SUM(a), COUNT(*), SUM(a+2) FROM test WHERE a <= 12 GROUP BY b ORDER BY statement error SELECT b % 2 AS f, COUNT(SUM(a)) FROM test GROUP BY f; +# group by alias +query IR +SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER By f; +---- +0 24.000000 +1 12.000000 + statement ok INSERT INTO test VALUES (12, 21), (12, 21), (12, 21) @@ -113,13 +120,32 @@ SELECT i, SUM(j), ANY_VALUE(j) FROM integers GROUP BY i ORDER BY i 2 4.000000 4 3 8.000000 4 -# use an alias that is identical to a column name (should prioritize column name) +# group by constant alias query IR -SELECT 1 AS i, SUM(i) FROM integers GROUP BY i ORDER BY 2; +SELECT 1 AS k, SUM(i) FROM integers GROUP BY k ORDER BY 2; +---- +1 8.000000 + +# use an alias that is identical to a column name and the table reference +query IR +SELECT 1 AS i, SUM(t.i) FROM integers t GROUP BY t.i ORDER BY 2; ---- 1 2.000000 1 6.000000 +# use an alias that is identical to a column name +query IR +SELECT 1 AS i, SUM(i) FROM integers GROUP BY i ORDER BY 2; +---- +1 8.000000 + +# refer to the same alias twice +query IR +SELECT i % 2 AS k, SUM(i) FROM integers GROUP BY k, k ORDER BY 1; +---- +0 2.000000 +1 6.000000 + statement ok DROP TABLE integers; @@ -138,9 +164,9 @@ NULL NULL 2 2.000000 3 3.000000 -# column reference should have preference over alias reference in grouping +# column reference have to be specified when an alias with the same name exists query IIR -SELECT i, i % 2 AS i, SUM(i) FROM integers GROUP BY i ORDER BY 1 NULLS FIRST; +SELECT i, i % 2 AS i, SUM(i) FROM integers t GROUP BY t.i ORDER BY 1 NULLS FIRST; ---- NULL NULL NULL 1 1 1.000000 diff --git a/modules/calcite/src/test/sql/aggregate/group/test_group_by.test_ignore b/modules/calcite/src/test/sql/aggregate/group/test_group_by.test_ignore deleted file mode 100644 index 22efd582bad89..0000000000000 --- a/modules/calcite/src/test/sql/aggregate/group/test_group_by.test_ignore +++ /dev/null @@ -1,182 +0,0 @@ -# name: test/sql/aggregate/group/test_group_by.test -# description: Test aggregation/group by statements -# group: [group] -# Ignored: https://issues.apache.org/jira/browse/IGNITE-14885 - -statement ok -PRAGMA enable_verification - -statement ok -CREATE TABLE test (a INTEGER, b INTEGER); - -statement ok -INSERT INTO test VALUES (11, 22), (13, 22), (12, 21) - -# aggregates cannot be nested -statement error -SELECT SUM(SUM(41)), COUNT(*); - -# simple aggregates without group by -query RIR -SELECT SUM(a), COUNT(*), AVG(a) FROM test; ----- -36.000000 3 12.000000 - -query I -SELECT COUNT(*) FROM test; ----- -3 - -query RI -SELECT SUM(a), COUNT(*) FROM test WHERE a = 11; ----- -11.000000 1 - -query RRR -SELECT SUM(a), SUM(b), SUM(a) + SUM (b) FROM test; ----- -36.000000 65.000000 101.000000 - -query RR -SELECT SUM(a+2), SUM(a) + 2 * COUNT(*) FROM test; ----- -42.000000 42.000000 - -# aggregations with group by -query IRRR -SELECT b, SUM(a), SUM(a+2), AVG(a) FROM test GROUP BY b ORDER BY b; ----- -21 12.000000 14.000000 12.000000 -22 24.000000 28.000000 12.000000 - -# ORDER BY aggregation that does not occur in SELECT clause -query IR -SELECT b, SUM(a) FROM test GROUP BY b ORDER BY COUNT(a); ----- -21 12.000000 -22 24.000000 - -query IR -SELECT b, SUM(a) FROM test GROUP BY b ORDER BY COUNT(a) DESC; ----- -22 24.000000 -21 12.000000 - -query IRIR -SELECT b, SUM(a), COUNT(*), SUM(a+2) FROM test GROUP BY b ORDER BY b; ----- -21 12.000000 1 14.000000 -22 24.000000 2 28.000000 - -# group by alias -query IR -SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f; ----- -0 24.000000 -1 12.000000 - -# group by with filter -query IRIR -SELECT b, SUM(a), COUNT(*), SUM(a+2) FROM test WHERE a <= 12 GROUP BY b ORDER BY b; ----- -21 12.000000 1 14.000000 -22 11.000000 1 13.000000 - -# nested aggregate in group by -statement error -SELECT b % 2 AS f, COUNT(SUM(a)) FROM test GROUP BY f; - -statement ok -INSERT INTO test VALUES (12, 21), (12, 21), (12, 21) - -# group by with filter and multiple values per groups -query IRIR -SELECT b, SUM(a), COUNT(*), SUM(a+2) FROM test WHERE a <= 12 GROUP BY b ORDER BY b; ----- -21 48.000000 4 56.000000 -22 11.000000 1 13.000000 - -# group by with filter and multiple values per groups -statement ok -CREATE TABLE integers(i INTEGER, j INTEGER); - -statement ok -INSERT INTO integers VALUES (3, 4), (3, 4), (2, 4); - -# use GROUP BY column in math operator -query II -SELECT i, i + 10 FROM integers GROUP BY i ORDER BY i ----- -2 12 -3 13 - -# using non-group column and non-aggregate should throw an error -statement error -SELECT i, SUM(j), j FROM integers GROUP BY i ORDER BY i - -# but it works if we wrap it in ANY_VALUE() -query IRI -SELECT i, SUM(j), ANY_VALUE(j) FROM integers GROUP BY i ORDER BY i ----- -2 4.000000 4 -3 8.000000 4 - -# group by constant alias -query IR -SELECT 1 AS k, SUM(i) FROM integers GROUP BY k ORDER BY 2; ----- -1 8.000000 - -# use an alias that is identical to a column name (should prioritize column name) -query IR -SELECT 1 AS i, SUM(i) FROM integers GROUP BY i ORDER BY 2; ----- -1 2.000000 -1 6.000000 - -# refer to the same alias twice -query IR -SELECT i % 2 AS k, SUM(i) FROM integers GROUP BY k, k ORDER BY 1; ----- -0 2.000000 -1 6.000000 - -statement ok -DROP TABLE integers; - -statement ok -CREATE TABLE integers(i INTEGER); - -statement ok -INSERT INTO integers VALUES (1), (2), (3), (NULL); - -# group by NULL -query IR -SELECT i, SUM(i) FROM integers GROUP BY i ORDER BY 1 NULLS FIRST; ----- -NULL NULL -1 1.000000 -2 2.000000 -3 3.000000 - -# column reference should have preference over alias reference in grouping -query IIR -SELECT i, i % 2 AS i, SUM(i) FROM integers GROUP BY i ORDER BY 1 NULLS FIRST; ----- -NULL NULL NULL -1 1 1.000000 -2 0 2.000000 -3 1 3.000000 - -# aliases can only be referenced in the GROUP BY as the root column: operations not allowed -# CONTROVERSIAL: this query DOES work in SQLite -statement error -SELECT 1 AS k, SUM(i) FROM integers GROUP BY k+1 ORDER BY 2; - -# group by column refs should be recognized, even if one uses an explicit table specifier and the other does not -query II -SELECT test.b, SUM(a) FROM test GROUP BY b ORDER BY COUNT(a) DESC; ----- -21 48 -22 24 - diff --git a/modules/calcite/src/test/sql/aggregate/group/test_group_by_alias.test b/modules/calcite/src/test/sql/aggregate/group/test_group_by_alias.test index 4b70467bbf5c8..19bdfb57094a8 100644 --- a/modules/calcite/src/test/sql/aggregate/group/test_group_by_alias.test +++ b/modules/calcite/src/test/sql/aggregate/group/test_group_by_alias.test @@ -8,6 +8,23 @@ CREATE TABLE integers(i INTEGER) statement ok INSERT INTO integers VALUES (1), (2), (3), (NULL) +# an alias in grouping + HAVING +# CONTROVERSIAL: this query does not work in MonetDB +query IR +SELECT i % 2 AS k, SUM(i) FROM integers WHERE i IS NOT NULL GROUP BY k HAVING i%2>0; +---- +1 4.000000 + +# select groups by constant (similar to order by constant) +query IR +SELECT i % 2 AS k, SUM(i) FROM integers WHERE i IS NOT NULL GROUP BY 1 HAVING i%2>0; +---- +1 4.000000 + +# constant out of range +statement error +SELECT i % 2 AS k, SUM(i) FROM integers WHERE i IS NOT NULL GROUP BY 42 HAVING i%2>0; + # this now orders by the actual grouping column query IIR SELECT i, i % 2 AS k, SUM(i) FROM integers GROUP BY i ORDER BY i; diff --git a/modules/calcite/src/test/sql/aggregate/group/test_group_by_alias.test_ignore b/modules/calcite/src/test/sql/aggregate/group/test_group_by_alias.test_ignore index 846468d889470..5587ba28d2f73 100644 --- a/modules/calcite/src/test/sql/aggregate/group/test_group_by_alias.test_ignore +++ b/modules/calcite/src/test/sql/aggregate/group/test_group_by_alias.test_ignore @@ -1,7 +1,6 @@ # name: test/sql/aggregate/group/test_group_by_alias.test # description: Test aliases in group by/aggregation # group: [group] -# Ignored: https://issues.apache.org/jira/browse/IGNITE-14885 statement ok PRAGMA enable_verification diff --git a/modules/calcite/src/test/sql/order/test_order_by.test b/modules/calcite/src/test/sql/order/test_order_by.test index 05b6e67b8c5cf..7de6965e3a307 100644 --- a/modules/calcite/src/test/sql/order/test_order_by.test +++ b/modules/calcite/src/test/sql/order/test_order_by.test @@ -106,6 +106,13 @@ SELECT b, a FROM test WHERE a < 13 ORDER BY b DESC; 22 11 21 12 +# order by expression +query IR +SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY b % 2; +---- +0 24.000000 +1 12.000000 + # order by expression that is not in SELECT query II SELECT b % 2 AS f, a FROM test ORDER BY b % 4, a; @@ -114,6 +121,19 @@ SELECT b % 2 AS f, a FROM test ORDER BY b % 4, a; 0 11 0 13 +# ORDER BY alias +query IR +SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY f; +---- +0 24.000000 +1 12.000000 + +query IR +SELECT b % 2 AS f, SUM(a) FROM test GROUP BY f ORDER BY 1; +---- +0 24.000000 +1 12.000000 + # ORDER BY after union query I SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY k; diff --git a/modules/calcite/src/test/sql/order/test_order_by.test_ignore b/modules/calcite/src/test/sql/order/test_order_by.test_ignore index fdc6a5b0dbcdb..a4756556bc563 100644 --- a/modules/calcite/src/test/sql/order/test_order_by.test_ignore +++ b/modules/calcite/src/test/sql/order/test_order_by.test_ignore @@ -143,15 +143,6 @@ SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY k; 2 3 -# ORDER BY on alias in right-most query -# CONTROVERSIAL: SQLite allows both "k" and "l" to be referenced here, Postgres and MonetDB give an error. -query I -SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY l; ----- -1 -2 -3 - # computations with aliases are not allowed though statement error SELECT a-10 AS k FROM test UNION SELECT a-10 AS l FROM test ORDER BY 1-k; From d0ad5a46f978d3e740c63dfdeb3dcd8819f48c4f Mon Sep 17 00:00:00 2001 From: Aleksey Plekhanov Date: Tue, 24 Sep 2024 17:55:11 +0300 Subject: [PATCH 07/11] IGNITE-23235 SQL Calcite: Fix not-null count calculation if index rebuild is in progress - Fixes #11542. Signed-off-by: Aleksey Plekhanov --- .../calcite/exec/LogicalRelImplementor.java | 12 +++++++-- .../query/calcite/rel/IgniteIndexCount.java | 25 ++++++++++++++----- .../query/calcite/rule/IndexCountRule.java | 6 +++-- .../exec/LogicalRelImplementorTest.java | 15 ++++++++--- .../IndexRebuildIntegrationTest.java | 8 ++++-- 5 files changed, 50 insertions(+), 16 deletions(-) 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 3a07b6846259d..974113a04016a 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 @@ -447,8 +447,16 @@ private boolean hasExchange(RelNode rel) { else { CollectNode replacement = CollectNode.createCountCollector(ctx); - replacement.register(new ScanStorageNode<>(tbl.name(), ctx, rel.getTable().getRowType(), tbl.scan(ctx, - ctx.group(rel.sourceId()), ImmutableBitSet.of(0)))); + replacement.register( + new ScanStorageNode<>( + tbl.name(), + ctx, + rel.getTable().getRowType(), + tbl.scan(ctx, ctx.group(rel.sourceId()), ImmutableBitSet.of(rel.fieldIndex())), + rel.notNull() ? r -> ctx.rowHandler().get(0, r) != null : null, + null + ) + ); return replacement; } diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteIndexCount.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteIndexCount.java index 932768df8778b..55776870e2c08 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteIndexCount.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rel/IgniteIndexCount.java @@ -52,6 +52,9 @@ public class IgniteIndexCount extends AbstractRelNode implements SourceAwareIgni /** */ private final boolean notNull; + /** */ + private final int fieldIdx; + /** * Constructor for deserialization. * @@ -70,6 +73,7 @@ public IgniteIndexCount(RelInput input) { sourceId = -1L; notNull = input.getBoolean("notNull", false); + fieldIdx = ((Number)input.get("fieldIdx")).intValue(); } /** @@ -86,9 +90,10 @@ public IgniteIndexCount( RelTraitSet traits, RelOptTable tbl, String idxName, - boolean notNull + boolean notNull, + int fieldIdx ) { - this(-1, cluster, traits, tbl, idxName, notNull); + this(-1, cluster, traits, tbl, idxName, notNull, fieldIdx); } /** @@ -107,7 +112,8 @@ private IgniteIndexCount( RelTraitSet traits, RelOptTable tbl, String idxName, - boolean notNull + boolean notNull, + int fieldIdx ) { super(cluster, traits); @@ -115,6 +121,7 @@ private IgniteIndexCount( this.tbl = tbl; this.sourceId = sourceId; this.notNull = notNull; + this.fieldIdx = fieldIdx; } /** {@inheritDoc} */ @@ -156,7 +163,8 @@ public String indexName() { .item("index", idxName) .item("table", tbl.getQualifiedName()) .itemIf("sourceId", sourceId, sourceId != -1L) - .item("notNull", notNull); + .item("notNull", notNull) + .item("fieldIdx", fieldIdx); } /** {@inheritDoc} */ @@ -166,16 +174,21 @@ public String indexName() { /** {@inheritDoc} */ @Override public IgniteRel clone(RelOptCluster cluster, List inputs) { - return new IgniteIndexCount(sourceId, cluster, traitSet, tbl, idxName, notNull); + return new IgniteIndexCount(sourceId, cluster, traitSet, tbl, idxName, notNull, fieldIdx); } /** {@inheritDoc} */ @Override public IgniteRel clone(long srcId) { - return new IgniteIndexCount(srcId, getCluster(), traitSet, tbl, idxName, notNull); + return new IgniteIndexCount(srcId, getCluster(), traitSet, tbl, idxName, notNull, fieldIdx); } /** */ public boolean notNull() { return notNull; } + + /** */ + public int fieldIndex() { + return fieldIdx; + } } diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IndexCountRule.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IndexCountRule.java index 67a9eecbe1a45..67204eea79015 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IndexCountRule.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/rule/IndexCountRule.java @@ -76,6 +76,7 @@ private IndexCountRule(IndexCountRule.Config cfg) { IgniteIndex idx = null; boolean notNull = false; + int fieldIdx = 0; if (argList.isEmpty()) idx = table.getIndex(QueryUtils.PRIMARY_KEY_INDEX); @@ -84,7 +85,7 @@ private IndexCountRule(IndexCountRule.Config cfg) { return; notNull = true; - int fieldIdx = argList.get(0); + fieldIdx = argList.get(0); if (!scan.requiredColumns().isEmpty()) fieldIdx = scan.requiredColumns().nth(fieldIdx); @@ -121,7 +122,8 @@ else if (table.distribution().getType() == RelDistribution.Type.HASH_DISTRIBUTED idxTraits, scan.getTable(), idx.name(), - notNull + notNull, + fieldIdx ); RelBuilder b = call.builder(); diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementorTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementorTest.java index 209eb75195c24..31c39d3fa75f2 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementorTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/exec/LogicalRelImplementorTest.java @@ -200,9 +200,9 @@ private void checkIndexFirstOrLastRewriter(boolean first) { @Test public void testIndexCountRewriter() { IgniteIndexCount idxCnt = new IgniteIndexCount(cluster, cluster.traitSet(), - qctx.catalogReader().getTable(F.asList("PUBLIC", "TBL")), QueryUtils.PRIMARY_KEY_INDEX, false); + qctx.catalogReader().getTable(F.asList("PUBLIC", "TBL")), QueryUtils.PRIMARY_KEY_INDEX, false, 0); - checkCollectNode(relImplementor.visit(idxCnt)); + checkCollectNode(relImplementor.visit(idxCnt), false); tbl.addIndex(QueryUtils.PRIMARY_KEY_INDEX, 2); @@ -215,15 +215,22 @@ public void testIndexCountRewriter() { tbl.markIndexRebuildInProgress(true); - checkCollectNode(relImplementor.visit(idxCnt)); + checkCollectNode(relImplementor.visit(idxCnt), false); + + // Check not-null filter. + idxCnt = new IgniteIndexCount(cluster, cluster.traitSet(), + qctx.catalogReader().getTable(F.asList("PUBLIC", "TBL")), QueryUtils.PRIMARY_KEY_INDEX, true, 2); + + checkCollectNode(relImplementor.visit(idxCnt), true); } /** */ - private void checkCollectNode(Node node) { + private void checkCollectNode(Node node, boolean hasFilter) { assertTrue(node instanceof CollectNode); assertTrue(node.sources() != null && node.sources().size() == 1); assertTrue(node.sources().get(0) instanceof ScanNode); assertNull(node.sources().get(0).sources()); + assertEquals(hasFilter, ((ScanNode)node.sources().get(0)).filter() != null); assertEquals(tbl.getRowType(tf), node.sources().get(0).rowType()); } diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/IndexRebuildIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/IndexRebuildIntegrationTest.java index ec9a6e14fedaf..cc785af571e1c 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/IndexRebuildIntegrationTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/IndexRebuildIntegrationTest.java @@ -285,8 +285,10 @@ public void testIndexCountAtUnavailableIndex() throws IgniteCheckedException { executeSql(ddl); + executeSql("CREATE INDEX idx_val ON tbl3(val)"); + for (int i = 0; i < records; i++) - executeSql("INSERT INTO tbl3 VALUES (?, ?, ?)", i, "val" + i, "val" + i); + executeSql("INSERT INTO tbl3 VALUES (?, ?, ?)", i, i % 2 == 0 ? null : "val" + i, "val" + i); IgniteCacheTable tbl3 = (IgniteCacheTable)srvEngine.schemaHolder().schema("PUBLIC").getTable("TBL3"); @@ -300,8 +302,10 @@ public void testIndexCountAtUnavailableIndex() throws IgniteCheckedException { }); try { - for (int i = 0; i < iterations; ++i) + for (int i = 0; i < iterations; ++i) { assertQuery("select COUNT(*) from tbl3").returns((long)records).check(); + assertQuery("select COUNT(val) from tbl3").returns((long)records / 2L).check(); + } } finally { stop.set(true); From 69191152d6cef5098d13df8789ef763ade55e354 Mon Sep 17 00:00:00 2001 From: Aleksey Plekhanov Date: Tue, 24 Sep 2024 18:02:14 +0300 Subject: [PATCH 08/11] IGNITE-23190 Fix local class deployments cache cleanup on reconnect - Fixes #11541. Signed-off-by: Aleksey Plekhanov --- .../deployment/GridDeploymentLocalStore.java | 17 ++++ .../IgniteClientReconnectDeploymentTest.java | 81 +++++++++++++++++++ .../IgniteClientReconnectTestSuite.java | 4 +- 3 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectDeploymentTest.java diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java index ecf9bf8e55a3b..2c47b84a79b19 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/deployment/GridDeploymentLocalStore.java @@ -25,6 +25,7 @@ import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedDeque; @@ -105,6 +106,22 @@ class GridDeploymentLocalStore extends GridDeploymentStoreAdapter { log.debug(stopInfo()); } + /** {@inheritDoc} */ + @Override public void onKernalStart() throws IgniteCheckedException { + Set obsoleteClsLdrs = U.newIdentityHashSet(); + + synchronized (mux) { + // There can be obsolete class loaders in cache after client node reconnect with the new node id. + for (Entry> entry : cache.entrySet()) + for (GridDeployment dep : entry.getValue()) + if (!dep.classLoaderId().globalId().equals(ctx.localNodeId())) + obsoleteClsLdrs.add(dep.classLoader()); + } + + for (ClassLoader clsLdr : obsoleteClsLdrs) + undeploy(clsLdr); + } + /** {@inheritDoc} */ @Override public Collection getDeployments() { Collection deps = new ArrayList<>(); diff --git a/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectDeploymentTest.java b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectDeploymentTest.java new file mode 100644 index 0000000000000..d335668e168a3 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/IgniteClientReconnectDeploymentTest.java @@ -0,0 +1,81 @@ +/* + * 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 javax.cache.processor.EntryProcessor; +import javax.cache.processor.MutableEntry; +import org.apache.ignite.Ignite; +import org.apache.ignite.IgniteCache; +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.configuration.IgniteConfiguration; +import org.apache.ignite.testframework.junits.WithSystemProperty; +import org.junit.Test; + +import static org.apache.ignite.IgniteSystemProperties.IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY; + +/** + * Test local class deployment on client reconnect. + */ +@WithSystemProperty(key = IGNITE_DISCO_FAILED_CLIENT_RECONNECT_DELAY, value = "1000") +public class IgniteClientReconnectDeploymentTest extends IgniteClientReconnectAbstractTest { + /** {@inheritDoc} */ + @Override protected int serverCount() { + return 1; + } + + /** {@inheritDoc} */ + @Override protected int clientCount() { + return 1; + } + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { + return super.getConfiguration(igniteInstanceName).setPeerClassLoadingEnabled(true); + } + + /** + * @throws Exception If failed. + */ + @Test + public void testDeployDuringReconnect() throws Exception { + IgniteEx client = grid(serverCount()); + + Ignite srv = ignite(0); + + IgniteCache cache = client.getOrCreateCache("test_cache"); + + reconnectClientNode(client, srv, () -> { + try { + client.context().deploy().deploy(TestEntryProcessor.class, TestEntryProcessor.class.getClassLoader()); + } + catch (IgniteCheckedException e) { + throw new AssertionError(e); + } + }); + + assertTrue(cache.invoke(0, new TestEntryProcessor())); + } + + /** */ + private static class TestEntryProcessor implements EntryProcessor { + /** {@inheritDoc} */ + @Override public Boolean process(MutableEntry entry, Object... args) { + return true; + } + } +} diff --git a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java index 81972154110ec..fd01faeeb8553 100644 --- a/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java +++ b/modules/core/src/test/java/org/apache/ignite/testsuites/IgniteClientReconnectTestSuite.java @@ -28,6 +28,7 @@ import org.apache.ignite.internal.IgniteClientReconnectComputeTest; import org.apache.ignite.internal.IgniteClientReconnectContinuousProcessorTest; import org.apache.ignite.internal.IgniteClientReconnectDelayedSpiTest; +import org.apache.ignite.internal.IgniteClientReconnectDeploymentTest; import org.apache.ignite.internal.IgniteClientReconnectDiscoveryStateTest; import org.apache.ignite.internal.IgniteClientReconnectFailoverTest; import org.apache.ignite.internal.IgniteClientReconnectLockTest; @@ -58,7 +59,8 @@ IgniteClientReconnectServicesTest.class, IgniteClientReconnectStreamerTest.class, IgniteClientReconnectFailoverTest.class, - IgniteClientRejoinTest.class + IgniteClientRejoinTest.class, + IgniteClientReconnectDeploymentTest.class, }) public class IgniteClientReconnectTestSuite { } From d92c4a39554ffbac23144115c475806de7e8e6ec Mon Sep 17 00:00:00 2001 From: Aleksey Plekhanov Date: Tue, 24 Sep 2024 22:11:38 +0300 Subject: [PATCH 09/11] IGNITE-22717 SQL Calcite: User defined SQL views - Fixes #11467. Signed-off-by: Aleksey Plekhanov --- .../monitoring-metrics/system-views.adoc | 3 +- docs/_docs/sql-reference/ddl.adoc | 60 + modules/calcite/src/main/codegen/config.fmpp | 6 +- .../src/main/codegen/includes/parserImpls.ftl | 38 + .../ddl/SqlToNativeCommandConverter.java | 34 +- .../query/calcite/schema/IgniteSchema.java | 34 +- .../calcite/schema/SchemaHolderImpl.java | 29 +- .../query/calcite/schema/ViewTableImpl.java | 52 + .../calcite/schema/ViewTableMacroImpl.java | 105 + .../sql/generated/IgniteSqlParserImpl.java | 10880 ++++++++-------- .../query/calcite/util/IgniteResource.java | 4 + .../query/calcite/util/TypeUtils.java | 40 +- .../AbstractBasicIntegrationTest.java | 19 +- .../AuthorizationIntegrationTest.java | 87 +- .../integration/ViewsIntegrationTest.java | 433 + .../calcite/jdbc/JdbcCrossEngineTest.java | 37 + .../calcite/planner/AbstractPlannerTest.java | 2 +- .../planner/UserDefinedViewsPlannerTest.java | 108 + .../calcite/sql/SqlCustomParserTest.java | 92 + .../testsuites/IntegrationTestSuite.java | 2 + .../ignite/testsuites/PlannerTestSuite.java | 2 + .../jdbc/thin/JdbcThinMetadataSelfTest.java | 3 +- .../ignite/util/SystemViewCommandTest.java | 2 +- .../systemview/walker/SqlViewViewWalker.java | 16 +- .../cache/query/IgniteQueryErrorCode.java | 6 + .../processors/query/GridQueryProcessor.java | 19 +- .../internal/processors/query/QueryUtils.java | 15 + .../schema/AbstractSchemaChangeListener.java | 10 + .../query/schema/SchemaChangeListener.java | 19 +- .../schema/SchemaOperationException.java | 18 + .../query/schema/SchemaSqlViewManager.java | 222 + .../schema/management/SchemaDescriptor.java | 34 + .../schema/management/SchemaManager.java | 100 +- .../schema/management/ViewDescriptor.java | 58 + .../IgniteStatisticsConfigurationManager.java | 36 +- .../internal/sql/SqlCommandProcessor.java | 20 +- .../ignite/internal/sql/SqlKeyword.java | 15 + .../apache/ignite/internal/sql/SqlParser.java | 30 +- .../sql/command/SqlCreateViewCommand.java | 129 + .../sql/command/SqlDropViewCommand.java | 98 + .../plugin/security/SecurityPermission.java | 8 +- .../SecurityPermissionSetBuilder.java | 2 +- .../spi/systemview/view/sql/SqlViewView.java | 46 +- .../internal/sql/SqlParserViewSelfTest.java | 129 + .../SecurityPermissionSetBuilderTest.java | 6 +- .../processors/query/h2/H2SchemaManager.java | 24 + .../processors/query/h2/QueryParser.java | 3 +- .../query/h2/sql/GridSqlQueryParser.java | 2 +- .../cache/metric/SqlViewExporterSpiTest.java | 2 +- .../query/h2/sql/SqlUnsupportedSelfTest.java | 3 - .../IgniteBinaryCacheQueryTestSuite.java | 2 + 51 files changed, 7627 insertions(+), 5517 deletions(-) create mode 100644 modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/ViewTableImpl.java create mode 100644 modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/ViewTableMacroImpl.java create mode 100644 modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ViewsIntegrationTest.java create mode 100644 modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/UserDefinedViewsPlannerTest.java create mode 100644 modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaSqlViewManager.java create mode 100644 modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/ViewDescriptor.java create mode 100644 modules/core/src/main/java/org/apache/ignite/internal/sql/command/SqlCreateViewCommand.java create mode 100644 modules/core/src/main/java/org/apache/ignite/internal/sql/command/SqlDropViewCommand.java create mode 100644 modules/core/src/test/java/org/apache/ignite/internal/sql/SqlParserViewSelfTest.java diff --git a/docs/_docs/monitoring-metrics/system-views.adoc b/docs/_docs/monitoring-metrics/system-views.adoc index 1e893914a61bb..915ad69459c9f 100644 --- a/docs/_docs/monitoring-metrics/system-views.adoc +++ b/docs/_docs/monitoring-metrics/system-views.adoc @@ -645,8 +645,9 @@ This view exposes information about SQL views. [{table_opts}] |=== |NAME | TYPE | DESCRIPTION -|NAME | string | Name |SCHEMA | string | Schema +|NAME | string | Name +|SQL | string | SQL query for view |DESCRIPTION | string | Description |=== diff --git a/docs/_docs/sql-reference/ddl.adoc b/docs/_docs/sql-reference/ddl.adoc index b5849da92c165..048ee61439690 100644 --- a/docs/_docs/sql-reference/ddl.adoc +++ b/docs/_docs/sql-reference/ddl.adoc @@ -472,6 +472,66 @@ DROP INDEX idx_person_name; ---- +== CREATE VIEW + +Creates an user definded SQL view. + + +[source,sql] +---- +CREATE [OR REPLACE] VIEW [schemaName.]viewName AS query +---- + +Parameters: + +* `schemaName` - the name of the schema, where to create view. +* `viewName` - the name of the view to create. +* `OR REPLACE` - replace view if a view with the specified name already exists. +* `query` - valid SQL query. + +Schema changes applied by this command are persisted on disk if link:persistence/native-persistence[Ignite persistence] is enabled. Thus, the changes can survive full cluster restarts. + +[discrete] +=== Examples +Create a view: + + +[source,sql] +---- +CREATE VIEW adult AS SELECT * FROM person WHERE age >= 18; +---- + + +== DROP VIEW + +Deletes an existing user defined SQL view. + + +[source,sql] +---- +DROP VIEW [IF EXISTS] [schemaName.]viewName +---- + +Parameters: + +* `schemaName` - the schema of the view to drop. +* `viewName` - the name of the view to drop. +* `IF EXISTS` - do not throw an error if a view with the specified name does not exist. + +Schema changes applied by this command are persisted on disk if link:persistence/native-persistence[Ignite persistence] is enabled. Thus, the changes can survive full cluster restarts. + + +[discrete] +=== Examples +Drop a view: + + +[source,sql] +---- +DROP VIEW adult; +---- + + == CREATE USER The command creates a user with a given name and password. diff --git a/modules/calcite/src/main/codegen/config.fmpp b/modules/calcite/src/main/codegen/config.fmpp index 9b0bb6c61e21c..545dc21e8163b 100644 --- a/modules/calcite/src/main/codegen/config.fmpp +++ b/modules/calcite/src/main/codegen/config.fmpp @@ -450,7 +450,8 @@ data: { createStatementParserMethods: [ "SqlCreateTable", "SqlCreateIndex", - "SqlCreateUser" + "SqlCreateUser", + "SqlCreateView" ] # List of methods for parsing extensions to "DROP" calls. @@ -459,7 +460,8 @@ data: { dropStatementParserMethods: [ "SqlDropTable", "SqlDropIndex", - "SqlDropUser" + "SqlDropUser", + "SqlDropView" ] # List of methods for parsing extensions to "ALTER " calls. diff --git a/modules/calcite/src/main/codegen/includes/parserImpls.ftl b/modules/calcite/src/main/codegen/includes/parserImpls.ftl index 0ca3da5c61929..4aa92e168fed9 100644 --- a/modules/calcite/src/main/codegen/includes/parserImpls.ftl +++ b/modules/calcite/src/main/codegen/includes/parserImpls.ftl @@ -191,6 +191,11 @@ SqlCreate SqlCreateTable(Span s, boolean replace) : final SqlNode query; } { + { + if (replace) + throw SqlUtil.newContextException(getPos(), IgniteResource.INSTANCE.unsupportedClause("REPLACE")); + } + ifNotExists = IfNotExistsOpt() id = CompoundIdentifier() @@ -258,6 +263,11 @@ SqlCreate SqlCreateIndex(Span s, boolean replace) : SqlNumericLiteral inlineSize = null; } { + { + if (replace) + throw SqlUtil.newContextException(getPos(), IgniteResource.INSTANCE.unsupportedClause("REPLACE")); + } + ifNotExists = IfNotExistsOpt() [ idxId = SimpleIdentifier() ] @@ -412,6 +422,11 @@ SqlCreate SqlCreateUser(Span s, boolean replace) : final SqlNode password; } { + { + if (replace) + throw SqlUtil.newContextException(getPos(), IgniteResource.INSTANCE.unsupportedClause("REPLACE")); + } + user = SimpleIdentifier() password = StringLiteral() { return new IgniteSqlCreateUser(s.end(this), user, SqlLiteral.unchain(password)); @@ -752,3 +767,26 @@ SqlNode SqlStatisticsAnalyze(): return new IgniteSqlStatisticsAnalyze(tablesList, optionsList, s.end(this)); } } + +SqlCreate SqlCreateView(Span s, boolean replace) : +{ + final SqlIdentifier id; + final SqlNode query; +} +{ + id = CompoundIdentifier() + query = OrderedQueryOrExpr(ExprContext.ACCEPT_QUERY) { + return SqlDdlNodes.createView(s.end(this), replace, id, null, query); + } +} + +SqlDrop SqlDropView(Span s, boolean replace) : +{ + final boolean ifExists; + final SqlIdentifier id; +} +{ + ifExists = IfExistsOpt() id = CompoundIdentifier() { + return SqlDdlNodes.dropView(s.end(this), ifExists, id); + } +} diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/ddl/SqlToNativeCommandConverter.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/ddl/SqlToNativeCommandConverter.java index 78683aaccb7d5..44449d54305b5 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/ddl/SqlToNativeCommandConverter.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/ddl/SqlToNativeCommandConverter.java @@ -27,6 +27,9 @@ import org.apache.calcite.sql.SqlIdentifier; import org.apache.calcite.sql.SqlKind; import org.apache.calcite.sql.SqlNode; +import org.apache.calcite.sql.ddl.SqlCreateView; +import org.apache.calcite.sql.ddl.SqlDropView; +import org.apache.calcite.sql.dialect.CalciteSqlDialect; import org.apache.ignite.cache.QueryIndex; import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode; import org.apache.ignite.internal.processors.query.IgniteSQLException; @@ -55,9 +58,11 @@ import org.apache.ignite.internal.sql.command.SqlCommand; import org.apache.ignite.internal.sql.command.SqlCreateIndexCommand; import org.apache.ignite.internal.sql.command.SqlCreateUserCommand; +import org.apache.ignite.internal.sql.command.SqlCreateViewCommand; import org.apache.ignite.internal.sql.command.SqlDropIndexCommand; import org.apache.ignite.internal.sql.command.SqlDropStatisticsCommand; import org.apache.ignite.internal.sql.command.SqlDropUserCommand; +import org.apache.ignite.internal.sql.command.SqlDropViewCommand; import org.apache.ignite.internal.sql.command.SqlIndexColumn; import org.apache.ignite.internal.sql.command.SqlKillComputeTaskCommand; import org.apache.ignite.internal.sql.command.SqlKillContinuousQueryCommand; @@ -87,7 +92,9 @@ public static boolean isSupported(SqlNode sqlCmd) { || sqlCmd instanceof IgniteSqlAlterUser || sqlCmd instanceof IgniteSqlDropUser || sqlCmd instanceof IgniteSqlKill - || sqlCmd instanceof IgniteSqlStatisticsCommand; + || sqlCmd instanceof IgniteSqlStatisticsCommand + || sqlCmd instanceof SqlCreateView + || sqlCmd instanceof SqlDropView; } /** @@ -120,6 +127,10 @@ else if (cmd instanceof IgniteSqlKill) return convertKill((IgniteSqlKill)cmd, pctx); else if (cmd instanceof IgniteSqlStatisticsCommand) return convertStatistics((IgniteSqlStatisticsCommand)cmd, pctx); + else if (cmd instanceof SqlCreateView) + return convertCreateView((SqlCreateView)cmd, pctx); + else if (cmd instanceof SqlDropView) + return convertDropView((SqlDropView)cmd, pctx); throw new IgniteSQLException("Unsupported native operation [" + "cmdName=" + (cmd == null ? null : cmd.getClass().getSimpleName()) + "; " + @@ -198,6 +209,27 @@ private static SqlDropUserCommand convertDropUser(IgniteSqlDropUser sqlCmd, Plan return new SqlDropUserCommand(sqlCmd.user().getSimple()); } + /** + * Converts CREATE VIEW ... command. + */ + private static SqlCreateViewCommand convertCreateView(SqlCreateView sqlCmd, PlanningContext ctx) { + String schemaName = deriveSchemaName(sqlCmd.name, ctx); + String viewName = deriveObjectName(sqlCmd.name, ctx, "View name"); + + return new SqlCreateViewCommand(schemaName, viewName, + sqlCmd.query.toSqlString(CalciteSqlDialect.DEFAULT).toString(), sqlCmd.getReplace()); + } + + /** + * Converts DROP VIEW ... command. + */ + private static SqlDropViewCommand convertDropView(SqlDropView sqlCmd, PlanningContext ctx) { + String schemaName = deriveSchemaName(sqlCmd.name, ctx); + String viewName = deriveObjectName(sqlCmd.name, ctx, "View name"); + + return new SqlDropViewCommand(schemaName, viewName, sqlCmd.ifExists); + } + /** * Converts KILL ... command. */ diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java index 09b56821af6bb..ef81dc008fd72 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/IgniteSchema.java @@ -20,11 +20,11 @@ import java.util.Collections; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; - import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import org.apache.calcite.schema.Function; +import org.apache.calcite.schema.SchemaPlus; import org.apache.calcite.schema.Table; import org.apache.calcite.schema.impl.AbstractSchema; @@ -41,6 +41,9 @@ public class IgniteSchema extends AbstractSchema { /** */ private final Multimap funcMap = Multimaps.synchronizedMultimap(HashMultimap.create()); + /** */ + private final Map viewMap = new ConcurrentHashMap<>(); + /** * Creates a Schema. * @@ -88,4 +91,33 @@ public void removeTable(String tblName) { public void addFunction(String name, Function func) { funcMap.put(name, func); } + + /** + * @param name View name. + * @param sql View sql. + */ + public void addView(String name, String sql) { + viewMap.put(name, sql); + } + + /** + * @param name View name. + */ + public void removeView(String name) { + viewMap.remove(name); + } + + /** + * Registers current {@code IgniteSchema} in parent {@code SchemaPlus}. + * + * @param parent Parent schema. + * @return Registered schema. + */ + public SchemaPlus register(SchemaPlus parent) { + SchemaPlus newSchema = parent.add(schemaName, this); + + viewMap.forEach((name, sql) -> newSchema.add(name, new ViewTableMacroImpl(sql, newSchema))); + + return newSchema; + } } diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaHolderImpl.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaHolderImpl.java index 009f0dc03eae0..a3d78d68fd04e 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaHolderImpl.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/SchemaHolderImpl.java @@ -40,6 +40,7 @@ import org.apache.ignite.internal.processors.cache.GridCacheContextInfo; import org.apache.ignite.internal.processors.query.GridQueryTypeDescriptor; import org.apache.ignite.internal.processors.query.QueryField; +import org.apache.ignite.internal.processors.query.QueryUtils; import org.apache.ignite.internal.processors.query.calcite.exec.exp.IgniteScalarFunction; import org.apache.ignite.internal.processors.query.calcite.trait.TraitUtils; import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory; @@ -367,6 +368,26 @@ private static Object affinityIdentity(CacheConfiguration ccfg) { rebuild(); } + /** {@inheritDoc} */ + @Override public void onViewCreated(String schemaName, String viewName, String viewSql) { + IgniteSchema schema = igniteSchemas.computeIfAbsent(schemaName, IgniteSchema::new); + + schema.addView(viewName, viewSql); + + rebuild(); + } + + /** {@inheritDoc} */ + @Override public void onViewDropped(String schemaName, String viewName) { + IgniteSchema schema = igniteSchemas.get(schemaName); + + if (schema != null) { + schema.removeView(viewName); + + rebuild(); + } + } + /** {@inheritDoc} */ @Override public SchemaPlus schema(@Nullable String schema) { return schema != null ? calciteSchema.getSubSchema(schema) : calciteSchema; @@ -385,10 +406,14 @@ private IgniteCacheTable table(String schemaName, String tableName) { /** */ private void rebuild() { SchemaPlus newCalciteSchema = Frameworks.createRootSchema(false); + newCalciteSchema.add("UUID", typeFactory -> ((IgniteTypeFactory)typeFactory).createCustomType(UUID.class)); newCalciteSchema.add("OTHER", typeFactory -> ((IgniteTypeFactory)typeFactory).createCustomType(Object.class)); - newCalciteSchema.add("PUBLIC", new IgniteSchema("PUBLIC")); - igniteSchemas.forEach(newCalciteSchema::add); + newCalciteSchema.add(QueryUtils.DFLT_SCHEMA, new IgniteSchema(QueryUtils.DFLT_SCHEMA)); + + for (IgniteSchema schema : igniteSchemas.values()) + schema.register(newCalciteSchema); + calciteSchema = newCalciteSchema; } } diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/ViewTableImpl.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/ViewTableImpl.java new file mode 100644 index 0000000000000..5423a05f5e281 --- /dev/null +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/ViewTableImpl.java @@ -0,0 +1,52 @@ +/* + * 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.schema; + +import java.lang.reflect.Type; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import org.apache.calcite.rel.type.RelProtoDataType; +import org.apache.calcite.schema.impl.ViewTable; +import org.jetbrains.annotations.Nullable; + +/** + * Ignite SQL view table implementation. + */ +public class ViewTableImpl extends ViewTable { + /** Fields origins. */ + private final Map> origins; + + /** Ctor. */ + public ViewTableImpl( + Type elementType, + RelProtoDataType rowType, + String viewSql, + List schemaPath, + Map> origins + ) { + super(elementType, rowType, viewSql, schemaPath, null); + + this.origins = Collections.unmodifiableMap(origins); + } + + /** Get field origin. */ + public @Nullable List fieldOrigin(String fieldName) { + return origins.get(fieldName); + } +} diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/ViewTableMacroImpl.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/ViewTableMacroImpl.java new file mode 100644 index 0000000000000..c9f837ddb58c7 --- /dev/null +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/schema/ViewTableMacroImpl.java @@ -0,0 +1,105 @@ +/* + * 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.schema; + +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import org.apache.calcite.jdbc.CalciteSchema; +import org.apache.calcite.rel.type.RelDataTypeImpl; +import org.apache.calcite.schema.FunctionParameter; +import org.apache.calcite.schema.SchemaPlus; +import org.apache.calcite.schema.TableMacro; +import org.apache.calcite.schema.TranslatableTable; +import org.apache.calcite.sql.SqlNode; +import org.apache.ignite.internal.processors.cache.query.IgniteQueryErrorCode; +import org.apache.ignite.internal.processors.query.IgniteSQLException; +import org.apache.ignite.internal.processors.query.calcite.prepare.BaseQueryContext; +import org.apache.ignite.internal.processors.query.calcite.prepare.IgnitePlanner; +import org.apache.ignite.internal.processors.query.calcite.prepare.PlanningContext; +import org.apache.ignite.internal.processors.query.calcite.prepare.ValidationResult; +import org.apache.ignite.internal.util.typedef.F; + +/** + * Ignite SQL view table macro implementation. + */ +public class ViewTableMacroImpl implements TableMacro { + /** */ + private static final ThreadLocal> stack = ThreadLocal.withInitial(HashSet::new); + + /** */ + private final String viewSql; + + /** */ + private final SchemaPlus schema; + + /** Ctor. */ + public ViewTableMacroImpl(String viewSql, SchemaPlus schema) { + this.viewSql = viewSql; + this.schema = schema; + } + + /** {@inheritDoc} */ + @SuppressWarnings("resource") + @Override public TranslatableTable apply(List arguments) { + if (!stack.get().add(this)) + throw new IgniteSQLException("Recursive views are not supported: " + viewSql); + + try { + IgnitePlanner planner = PlanningContext.builder() + .parentContext(BaseQueryContext.builder().defaultSchema(schema).build()) + .build() + .planner(); + + SqlNode sqlNode = planner.parse(viewSql); + ValidationResult res = planner.validateAndGetTypeMetadata(sqlNode); + + Map> origins = new HashMap<>(); + + if (!F.isEmpty(res.origins())) { + for (int i = 0; i < res.origins().size(); i++) { + List origin = res.origins().get(i); + + if (!F.isEmpty(origin)) + origins.put(res.dataType().getFieldList().get(i).getName(), origin); + } + } + + return new ViewTableImpl(planner.getTypeFactory().getJavaClass(res.dataType()), + RelDataTypeImpl.proto(res.dataType()), viewSql, CalciteSchema.from(schema).path(null), origins); + } + catch (IgniteSQLException e) { + throw e; + } + catch (Exception e) { + throw new IgniteSQLException("Failed to validate SQL view query. " + e.getMessage(), + IgniteQueryErrorCode.PARSING, e); + } + finally { + stack.get().remove(this); + } + } + + /** {@inheritDoc} */ + @Override public List getParameters() { + return Collections.emptyList(); + } +} 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 b2c95bb19eb7e..7f09044dab2b2 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 @@ -1346,6 +1346,8 @@ final public SqlCreate SqlCreateTable(Span s, boolean replace) throws ParseExcep final SqlNodeList columnList; final SqlNodeList optionList; final SqlNode query; + if (replace) + {if (true) throw SqlUtil.newContextException(getPos(), IgniteResource.INSTANCE.unsupportedClause("REPLACE"));} jj_consume_token(TABLE); ifNotExists = IfNotExistsOpt(); id = CompoundIdentifier(); @@ -1423,6 +1425,8 @@ final public SqlCreate SqlCreateIndex(Span s, boolean replace) throws ParseExcep SqlIdentifier idxId = null; SqlNumericLiteral parallel = null; SqlNumericLiteral inlineSize = null; + if (replace) + {if (true) throw SqlUtil.newContextException(getPos(), IgniteResource.INSTANCE.unsupportedClause("REPLACE"));} jj_consume_token(INDEX); ifNotExists = IfNotExistsOpt(); if (jj_2_109(2)) { @@ -1611,6 +1615,8 @@ final public SqlNode SqlAlterTable() throws ParseException { final public SqlCreate SqlCreateUser(Span s, boolean replace) throws ParseException { final SqlIdentifier user; final SqlNode password; + if (replace) + {if (true) throw SqlUtil.newContextException(getPos(), IgniteResource.INSTANCE.unsupportedClause("REPLACE"));} jj_consume_token(USER); user = SimpleIdentifier(); jj_consume_token(WITH); @@ -1958,6 +1964,27 @@ final public SqlNode SqlStatisticsAnalyze() throws ParseException { throw new Error("Missing return statement in function"); } + final public SqlCreate SqlCreateView(Span s, boolean replace) throws ParseException { + final SqlIdentifier id; + final SqlNode query; + jj_consume_token(VIEW); + id = CompoundIdentifier(); + jj_consume_token(AS); + query = OrderedQueryOrExpr(ExprContext.ACCEPT_QUERY); + {if (true) return SqlDdlNodes.createView(s.end(this), replace, id, null, query);} + throw new Error("Missing return statement in function"); + } + + final public SqlDrop SqlDropView(Span s, boolean replace) throws ParseException { + final boolean ifExists; + final SqlIdentifier id; + jj_consume_token(VIEW); + ifExists = IfExistsOpt(); + id = CompoundIdentifier(); + {if (true) return SqlDdlNodes.dropView(s.end(this), ifExists, id);} + throw new Error("Missing return statement in function"); + } + final public SqlNodeList ParenthesizedKeyValueOptionCommaList() throws ParseException { final Span s; final List list = new ArrayList(); @@ -5582,6 +5609,8 @@ final public SqlCreate SqlCreate() throws ParseException { create = SqlCreateIndex(s, replace); } else if (jj_2_487(2)) { create = SqlCreateUser(s, replace); + } else if (jj_2_488(2)) { + create = SqlCreateView(s, replace); } else { jj_consume_token(-1); throw new ParseException(); @@ -5599,12 +5628,14 @@ final public SqlDrop SqlDrop() throws ParseException { final SqlDrop drop; jj_consume_token(DROP); s = span(); - if (jj_2_488(2)) { + if (jj_2_489(2)) { drop = SqlDropTable(s, replace); - } else if (jj_2_489(2)) { - drop = SqlDropIndex(s, replace); } else if (jj_2_490(2)) { + drop = SqlDropIndex(s, replace); + } else if (jj_2_491(2)) { drop = SqlDropUser(s, replace); + } else if (jj_2_492(2)) { + drop = SqlDropView(s, replace); } else { jj_consume_token(-1); throw new ParseException(); @@ -5625,9 +5656,9 @@ final public SqlDrop SqlDrop() throws ParseException { */ final public SqlNode Literal() throws ParseException { SqlNode e; - if (jj_2_491(2)) { + if (jj_2_493(2)) { e = NonIntervalLiteral(); - } else if (jj_2_492(2)) { + } else if (jj_2_494(2)) { e = IntervalLiteral(); } else { jj_consume_token(-1); @@ -5640,13 +5671,13 @@ final public SqlNode Literal() throws ParseException { /** Parses a literal that is not an interval literal. */ final public SqlNode NonIntervalLiteral() throws ParseException { final SqlNode e; - if (jj_2_493(2)) { + if (jj_2_495(2)) { e = NumericLiteral(); - } else if (jj_2_494(2)) { + } else if (jj_2_496(2)) { e = StringLiteral(); - } else if (jj_2_495(2)) { + } else if (jj_2_497(2)) { e = SpecialLiteral(); - } else if (jj_2_496(2)) { + } else if (jj_2_498(2)) { e = DateTimeLiteral(); } else { jj_consume_token(-1); @@ -5664,9 +5695,9 @@ final public SqlNode NonIntervalLiteral() throws ParseException { * LOOKAHEAD. */ final public SqlNode LiteralOrIntervalExpression() throws ParseException { final SqlNode e; - if (jj_2_497(2)) { + if (jj_2_499(2)) { e = IntervalLiteralOrExpression(); - } else if (jj_2_498(2)) { + } else if (jj_2_500(2)) { e = NonIntervalLiteral(); } else { jj_consume_token(-1); @@ -5679,17 +5710,17 @@ final public SqlNode LiteralOrIntervalExpression() throws ParseException { /** Parses a unsigned numeric literal */ final public SqlNumericLiteral UnsignedNumericLiteral() throws ParseException { final String p; - if (jj_2_499(2)) { + if (jj_2_501(2)) { jj_consume_token(UNSIGNED_INTEGER_LITERAL); {if (true) return SqlLiteral.createExactNumeric(token.image, getPos());} - } else if (jj_2_500(2)) { + } else if (jj_2_502(2)) { jj_consume_token(DECIMAL_NUMERIC_LITERAL); {if (true) return SqlLiteral.createExactNumeric(token.image, getPos());} - } else if (jj_2_501(2)) { + } else if (jj_2_503(2)) { jj_consume_token(DECIMAL); p = SimpleStringLiteral(); {if (true) return SqlParserUtil.parseDecimalLiteral(SqlParserUtil.trim(p, " "), getPos());} - } else if (jj_2_502(2)) { + } else if (jj_2_504(2)) { jj_consume_token(APPROX_NUMERIC_LITERAL); {if (true) return SqlLiteral.createApproxNumeric(token.image, getPos());} } else { @@ -5703,16 +5734,16 @@ final public SqlNumericLiteral UnsignedNumericLiteral() throws ParseException { final public SqlLiteral NumericLiteral() throws ParseException { final SqlNumericLiteral num; final Span s; - if (jj_2_503(2)) { + if (jj_2_505(2)) { jj_consume_token(PLUS); num = UnsignedNumericLiteral(); {if (true) return num;} - } else if (jj_2_504(2)) { + } else if (jj_2_506(2)) { jj_consume_token(MINUS); s = span(); num = UnsignedNumericLiteral(); {if (true) return SqlLiteral.createNegative(num, s.end(this));} - } else if (jj_2_505(2)) { + } else if (jj_2_507(2)) { num = UnsignedNumericLiteral(); {if (true) return num;} } else { @@ -5724,16 +5755,16 @@ final public SqlLiteral NumericLiteral() throws ParseException { /** Parse a special literal keyword */ final public SqlLiteral SpecialLiteral() throws ParseException { - if (jj_2_506(2)) { + if (jj_2_508(2)) { jj_consume_token(TRUE); {if (true) return SqlLiteral.createBoolean(true, getPos());} - } else if (jj_2_507(2)) { + } else if (jj_2_509(2)) { jj_consume_token(FALSE); {if (true) return SqlLiteral.createBoolean(false, getPos());} - } else if (jj_2_508(2)) { + } else if (jj_2_510(2)) { jj_consume_token(UNKNOWN); {if (true) return SqlLiteral.createUnknown(getPos());} - } else if (jj_2_509(2)) { + } else if (jj_2_511(2)) { jj_consume_token(NULL); {if (true) return SqlLiteral.createNull(getPos());} } else { @@ -5760,7 +5791,7 @@ final public SqlNode StringLiteral() throws ParseException { char unicodeEscapeChar = 0; String charSet = null; SqlCharStringLiteral literal; - if (jj_2_514(2)) { + if (jj_2_516(2)) { jj_consume_token(BINARY_STRING_LITERAL); frags = new ArrayList(); try { @@ -5796,13 +5827,13 @@ final public SqlNode StringLiteral() throws ParseException { SqlParserPos pos2 = SqlParserPos.sum(frags); {if (true) return SqlStdOperatorTable.LITERAL_CHAIN.createCall(pos2, frags);} } - } else if (jj_2_515(2)) { - if (jj_2_510(2)) { + } else if (jj_2_517(2)) { + if (jj_2_512(2)) { jj_consume_token(PREFIXED_STRING_LITERAL); charSet = SqlParserUtil.getCharacterSet(token.image); - } else if (jj_2_511(2)) { + } else if (jj_2_513(2)) { jj_consume_token(QUOTED_STRING); - } else if (jj_2_512(2)) { + } else if (jj_2_514(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 @@ -5841,7 +5872,7 @@ final public SqlNode StringLiteral() throws ParseException { RESOURCE.unknownCharacterSet(charSet));} } } - if (jj_2_513(2)) { + if (jj_2_515(2)) { jj_consume_token(UESCAPE); jj_consume_token(QUOTED_STRING); if (unicodeEscapeChar == 0) { @@ -5867,7 +5898,7 @@ final public SqlNode StringLiteral() throws ParseException { SqlParserPos pos2 = SqlParserPos.sum(rands); {if (true) return SqlStdOperatorTable.LITERAL_CHAIN.createCall(pos2, rands);} } - } else if (jj_2_516(2)) { + } else if (jj_2_518(2)) { jj_consume_token(C_STYLE_ESCAPED_STRING_LITERAL); try { p = SqlParserUtil.parseCString(getToken(0).image); @@ -5876,7 +5907,7 @@ final public SqlNode StringLiteral() throws ParseException { RESOURCE.unicodeEscapeMalformed(e.i));} } {if (true) return SqlLiteral.createCharString(p, "UTF16", getPos());} - } else if (jj_2_517(2)) { + } else if (jj_2_519(2)) { jj_consume_token(BIG_QUERY_DOUBLE_QUOTED_STRING); p = SqlParserUtil.stripQuotes(getToken(0).image, DQ, DQ, "\\\"", Casing.UNCHANGED); @@ -5886,7 +5917,7 @@ final public SqlNode StringLiteral() throws ParseException { {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.unknownCharacterSet(charSet));} } - } else if (jj_2_518(2)) { + } else if (jj_2_520(2)) { jj_consume_token(BIG_QUERY_QUOTED_STRING); p = SqlParserUtil.stripQuotes(getToken(0).image, "'", "'", "\\'", Casing.UNCHANGED); @@ -5908,13 +5939,13 @@ final public SqlNode StringLiteral() throws ParseException { * 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_519(2)) { + if (jj_2_521(2)) { jj_consume_token(QUOTED_STRING); {if (true) return SqlParserUtil.parseString(token.image);} - } else if (jj_2_520(2)) { + } else if (jj_2_522(2)) { jj_consume_token(BIG_QUERY_QUOTED_STRING); {if (true) return SqlParserUtil.stripQuotes(token.image, "'", "'", "\\'", Casing.UNCHANGED);} - } else if (jj_2_521(2)) { + } else if (jj_2_523(2)) { jj_consume_token(BIG_QUERY_DOUBLE_QUOTED_STRING); {if (true) return SqlParserUtil.stripQuotes(token.image, DQ, DQ, "\\\"", Casing.UNCHANGED);} } else { @@ -5931,50 +5962,50 @@ final public SqlLiteral DateTimeLiteral() throws ParseException { final String p; final Span s; boolean local = false; - if (jj_2_524(2)) { + if (jj_2_526(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_525(2)) { + } else if (jj_2_527(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_526(2)) { + } else if (jj_2_528(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_527(2)) { + } else if (jj_2_529(2)) { jj_consume_token(DATE); s = span(); p = SimpleStringLiteral(); {if (true) return SqlLiteral.createUnknown("DATE", p, s.end(this));} - } else if (jj_2_528(2)) { + } else if (jj_2_530(2)) { jj_consume_token(DATETIME); s = span(); p = SimpleStringLiteral(); {if (true) return SqlLiteral.createUnknown("DATETIME", p, s.end(this));} - } else if (jj_2_529(2)) { + } else if (jj_2_531(2)) { jj_consume_token(TIME); s = span(); p = SimpleStringLiteral(); {if (true) return SqlLiteral.createUnknown("TIME", p, s.end(this));} - } else if (jj_2_530(2)) { + } else if (jj_2_532(2)) { jj_consume_token(TIMESTAMP); s = span(); p = SimpleStringLiteral(); {if (true) return SqlLiteral.createUnknown("TIMESTAMP", p, s.end(this));} - } else if (jj_2_531(2)) { + } else if (jj_2_533(2)) { jj_consume_token(TIME); s = span(); jj_consume_token(WITH); - if (jj_2_522(2)) { + if (jj_2_524(2)) { jj_consume_token(LOCAL); local = true; } else { @@ -5984,11 +6015,11 @@ final public SqlLiteral DateTimeLiteral() throws ParseException { 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_532(2)) { + } else if (jj_2_534(2)) { jj_consume_token(TIMESTAMP); s = span(); jj_consume_token(WITH); - if (jj_2_523(2)) { + if (jj_2_525(2)) { jj_consume_token(LOCAL); local = true; } else { @@ -6013,13 +6044,13 @@ final public SqlNode DateTimeConstructorCall() throws ParseException { final Span s; final SqlLiteral quantifier; final List args; - if (jj_2_533(2)) { + if (jj_2_535(2)) { jj_consume_token(DATE); - } else if (jj_2_534(2)) { + } else if (jj_2_536(2)) { jj_consume_token(TIME); - } else if (jj_2_535(2)) { + } else if (jj_2_537(2)) { jj_consume_token(DATETIME); - } else if (jj_2_536(2)) { + } else if (jj_2_538(2)) { jj_consume_token(TIMESTAMP); } else { jj_consume_token(-1); @@ -6041,19 +6072,19 @@ final public SqlNode MultisetConstructor() throws ParseException { final Span s; jj_consume_token(MULTISET); s = span(); - if (jj_2_538(2)) { + if (jj_2_540(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_539(2)) { + } else if (jj_2_541(2)) { jj_consume_token(LBRACKET); AddExpression(args, ExprContext.ACCEPT_NON_QUERY); label_52: while (true) { - if (jj_2_537(2)) { + if (jj_2_539(2)) { ; } else { break label_52; @@ -6079,12 +6110,12 @@ final public SqlNode ArrayConstructor() throws ParseException { final String p; jj_consume_token(ARRAY); s = span(); - if (jj_2_543(2)) { - if (jj_2_540(2)) { + if (jj_2_545(2)) { + if (jj_2_542(2)) { jj_consume_token(LPAREN); jj_consume_token(RPAREN); args = SqlNodeList.EMPTY; - } else if (jj_2_541(2)) { + } else if (jj_2_543(2)) { args = ParenthesizedQueryOrCommaList(ExprContext.ACCEPT_ALL); } else { jj_consume_token(-1); @@ -6098,9 +6129,9 @@ final public SqlNode ArrayConstructor() throws ParseException { // equivalent to standard 'ARRAY [1, 2]' {if (true) return SqlLibraryOperators.ARRAY.createCall(s.end(this), args.getList());} } - } else if (jj_2_544(2)) { + } else if (jj_2_546(2)) { jj_consume_token(LBRACKET); - if (jj_2_542(2)) { + if (jj_2_544(2)) { args = ExpressionCommaList(s, ExprContext.ACCEPT_NON_QUERY); } else { args = SqlNodeList.EMPTY; @@ -6121,12 +6152,12 @@ final public SqlCall ArrayLiteral() throws ParseException { final Span s; jj_consume_token(LBRACE); s = span(); - if (jj_2_547(2)) { + if (jj_2_549(2)) { e = Literal(); list = startList(e); label_53: while (true) { - if (jj_2_545(2)) { + if (jj_2_547(2)) { ; } else { break label_53; @@ -6135,12 +6166,12 @@ final public SqlCall ArrayLiteral() throws ParseException { e = Literal(); list.add(e); } - } else if (jj_2_548(2)) { + } else if (jj_2_550(2)) { e = ArrayLiteral(); list = startList(e); label_54: while (true) { - if (jj_2_546(2)) { + if (jj_2_548(2)) { ; } else { break label_54; @@ -6163,12 +6194,12 @@ final public SqlNode MapConstructor() throws ParseException { final Span s; jj_consume_token(MAP); s = span(); - if (jj_2_552(2)) { - if (jj_2_549(2)) { + if (jj_2_554(2)) { + if (jj_2_551(2)) { jj_consume_token(LPAREN); jj_consume_token(RPAREN); args = SqlNodeList.EMPTY; - } else if (jj_2_550(2)) { + } else if (jj_2_552(2)) { args = ParenthesizedQueryOrCommaList(ExprContext.ACCEPT_ALL); } else { jj_consume_token(-1); @@ -6181,9 +6212,9 @@ final public SqlNode MapConstructor() throws ParseException { // 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_553(2)) { + } else if (jj_2_555(2)) { jj_consume_token(LBRACKET); - if (jj_2_551(2)) { + if (jj_2_553(2)) { args = ExpressionCommaList(s, ExprContext.ACCEPT_NON_QUERY); } else { args = SqlNodeList.EMPTY; @@ -6223,11 +6254,11 @@ final public SqlLiteral IntervalLiteral() throws ParseException { final Span s; jj_consume_token(INTERVAL); s = span(); - if (jj_2_556(2)) { - if (jj_2_554(2)) { + if (jj_2_558(2)) { + if (jj_2_556(2)) { jj_consume_token(MINUS); sign = -1; - } else if (jj_2_555(2)) { + } else if (jj_2_557(2)) { jj_consume_token(PLUS); sign = 1; } else { @@ -6255,11 +6286,11 @@ final public SqlNode IntervalLiteralOrExpression() throws ParseException { SqlNode e; jj_consume_token(INTERVAL); s = span(); - if (jj_2_559(2)) { - if (jj_2_557(2)) { + if (jj_2_561(2)) { + if (jj_2_559(2)) { jj_consume_token(MINUS); sign = -1; - } else if (jj_2_558(2)) { + } else if (jj_2_560(2)) { jj_consume_token(PLUS); sign = 1; } else { @@ -6269,20 +6300,20 @@ final public SqlNode IntervalLiteralOrExpression() throws ParseException { } else { ; } - if (jj_2_563(2)) { + if (jj_2_565(2)) { // literal (with quoted string) p = SimpleStringLiteral(); intervalQualifier = IntervalQualifier(); {if (true) return SqlParserUtil.parseIntervalLiteral(s.end(intervalQualifier), sign, p, intervalQualifier);} - } else if (jj_2_564(2)) { - if (jj_2_560(2)) { + } else if (jj_2_566(2)) { + if (jj_2_562(2)) { jj_consume_token(LPAREN); e = Expression(ExprContext.ACCEPT_SUB_QUERY); jj_consume_token(RPAREN); - } else if (jj_2_561(2)) { + } else if (jj_2_563(2)) { e = UnsignedNumericLiteral(); - } else if (jj_2_562(2)) { + } else if (jj_2_564(2)) { e = CompoundIdentifier(); } else { jj_consume_token(-1); @@ -6302,10 +6333,10 @@ final public SqlNode IntervalLiteralOrExpression() throws ParseException { } final public TimeUnit Year() throws ParseException { - if (jj_2_565(2)) { + if (jj_2_567(2)) { jj_consume_token(YEAR); {if (true) return TimeUnit.YEAR;} - } else if (jj_2_566(2)) { + } else if (jj_2_568(2)) { jj_consume_token(YEARS); {if (true) return warn(TimeUnit.YEAR);} } else { @@ -6316,10 +6347,10 @@ final public TimeUnit Year() throws ParseException { } final public TimeUnit Quarter() throws ParseException { - if (jj_2_567(2)) { + if (jj_2_569(2)) { jj_consume_token(QUARTER); {if (true) return TimeUnit.QUARTER;} - } else if (jj_2_568(2)) { + } else if (jj_2_570(2)) { jj_consume_token(QUARTERS); {if (true) return warn(TimeUnit.QUARTER);} } else { @@ -6330,10 +6361,10 @@ final public TimeUnit Quarter() throws ParseException { } final public TimeUnit Month() throws ParseException { - if (jj_2_569(2)) { + if (jj_2_571(2)) { jj_consume_token(MONTH); {if (true) return TimeUnit.MONTH;} - } else if (jj_2_570(2)) { + } else if (jj_2_572(2)) { jj_consume_token(MONTHS); {if (true) return warn(TimeUnit.MONTH);} } else { @@ -6344,10 +6375,10 @@ final public TimeUnit Month() throws ParseException { } final public TimeUnit Week() throws ParseException { - if (jj_2_571(2)) { + if (jj_2_573(2)) { jj_consume_token(WEEK); {if (true) return TimeUnit.WEEK;} - } else if (jj_2_572(2)) { + } else if (jj_2_574(2)) { jj_consume_token(WEEKS); {if (true) return warn(TimeUnit.WEEK);} } else { @@ -6358,10 +6389,10 @@ final public TimeUnit Week() throws ParseException { } final public TimeUnit Day() throws ParseException { - if (jj_2_573(2)) { + if (jj_2_575(2)) { jj_consume_token(DAY); {if (true) return TimeUnit.DAY;} - } else if (jj_2_574(2)) { + } else if (jj_2_576(2)) { jj_consume_token(DAYS); {if (true) return warn(TimeUnit.DAY);} } else { @@ -6372,10 +6403,10 @@ final public TimeUnit Day() throws ParseException { } final public TimeUnit Hour() throws ParseException { - if (jj_2_575(2)) { + if (jj_2_577(2)) { jj_consume_token(HOUR); {if (true) return TimeUnit.HOUR;} - } else if (jj_2_576(2)) { + } else if (jj_2_578(2)) { jj_consume_token(HOURS); {if (true) return warn(TimeUnit.HOUR);} } else { @@ -6386,10 +6417,10 @@ final public TimeUnit Hour() throws ParseException { } final public TimeUnit Minute() throws ParseException { - if (jj_2_577(2)) { + if (jj_2_579(2)) { jj_consume_token(MINUTE); {if (true) return TimeUnit.MINUTE;} - } else if (jj_2_578(2)) { + } else if (jj_2_580(2)) { jj_consume_token(MINUTES); {if (true) return warn(TimeUnit.MINUTE);} } else { @@ -6400,10 +6431,10 @@ final public TimeUnit Minute() throws ParseException { } final public TimeUnit Second() throws ParseException { - if (jj_2_579(2)) { + if (jj_2_581(2)) { jj_consume_token(SECOND); {if (true) return TimeUnit.SECOND;} - } else if (jj_2_580(2)) { + } else if (jj_2_582(2)) { jj_consume_token(SECONDS); {if (true) return warn(TimeUnit.SECOND);} } else { @@ -6419,42 +6450,42 @@ final public SqlIntervalQualifier IntervalQualifier() throws ParseException { final TimeUnit end; final int startPrec; int secondFracPrec = RelDataType.PRECISION_NOT_SPECIFIED; - if (jj_2_594(2)) { + if (jj_2_596(2)) { start = Year(); s = span(); startPrec = PrecisionOpt(); - if (jj_2_581(2)) { + if (jj_2_583(2)) { jj_consume_token(TO); end = Month(); } else { end = null; } - } else if (jj_2_595(2)) { + } else if (jj_2_597(2)) { start = Quarter(); s = span(); startPrec = PrecisionOpt(); end = null; - } else if (jj_2_596(2)) { + } else if (jj_2_598(2)) { start = Month(); s = span(); startPrec = PrecisionOpt(); end = null; - } else if (jj_2_597(2)) { + } else if (jj_2_599(2)) { start = Week(); s = span(); startPrec = PrecisionOpt(); end = null; - } else if (jj_2_598(2)) { + } else if (jj_2_600(2)) { start = Day(); s = span(); startPrec = PrecisionOpt(); - if (jj_2_585(2)) { + if (jj_2_587(2)) { jj_consume_token(TO); - if (jj_2_582(2)) { + if (jj_2_584(2)) { end = Hour(); - } else if (jj_2_583(2)) { + } else if (jj_2_585(2)) { end = Minute(); - } else if (jj_2_584(2)) { + } else if (jj_2_586(2)) { end = Second(); secondFracPrec = PrecisionOpt(); } else { @@ -6464,17 +6495,17 @@ final public SqlIntervalQualifier IntervalQualifier() throws ParseException { } else { end = null; } - } else if (jj_2_599(2)) { + } else if (jj_2_601(2)) { start = Hour(); s = span(); startPrec = PrecisionOpt(); - if (jj_2_589(2)) { + if (jj_2_591(2)) { jj_consume_token(TO); - if (jj_2_587(2)) { + if (jj_2_589(2)) { end = Minute(); - } else if (jj_2_588(2)) { + } else if (jj_2_590(2)) { end = Second(); - if (jj_2_586(2)) { + if (jj_2_588(2)) { jj_consume_token(LPAREN); secondFracPrec = UnsignedIntLiteral(); jj_consume_token(RPAREN); @@ -6488,14 +6519,14 @@ final public SqlIntervalQualifier IntervalQualifier() throws ParseException { } else { end = null; } - } else if (jj_2_600(2)) { + } else if (jj_2_602(2)) { start = Minute(); s = span(); startPrec = PrecisionOpt(); - if (jj_2_591(2)) { + if (jj_2_593(2)) { jj_consume_token(TO); end = Second(); - if (jj_2_590(2)) { + if (jj_2_592(2)) { jj_consume_token(LPAREN); secondFracPrec = UnsignedIntLiteral(); jj_consume_token(RPAREN); @@ -6505,13 +6536,13 @@ final public SqlIntervalQualifier IntervalQualifier() throws ParseException { } else { end = null; } - } else if (jj_2_601(2)) { + } else if (jj_2_603(2)) { start = Second(); s = span(); - if (jj_2_593(2)) { + if (jj_2_595(2)) { jj_consume_token(LPAREN); startPrec = UnsignedIntLiteral(); - if (jj_2_592(2)) { + if (jj_2_594(2)) { jj_consume_token(COMMA); secondFracPrec = UnsignedIntLiteral(); } else { @@ -6537,20 +6568,20 @@ final public SqlIntervalQualifier IntervalQualifierStart() throws ParseException final TimeUnit start; int startPrec = RelDataType.PRECISION_NOT_SPECIFIED; int secondFracPrec = RelDataType.PRECISION_NOT_SPECIFIED; - if (jj_2_611(2)) { - if (jj_2_602(2)) { + if (jj_2_613(2)) { + if (jj_2_604(2)) { start = Year(); - } else if (jj_2_603(2)) { + } else if (jj_2_605(2)) { start = Quarter(); - } else if (jj_2_604(2)) { + } else if (jj_2_606(2)) { start = Month(); - } else if (jj_2_605(2)) { + } else if (jj_2_607(2)) { start = Week(); - } else if (jj_2_606(2)) { + } else if (jj_2_608(2)) { start = Day(); - } else if (jj_2_607(2)) { + } else if (jj_2_609(2)) { start = Hour(); - } else if (jj_2_608(2)) { + } else if (jj_2_610(2)) { start = Minute(); } else { jj_consume_token(-1); @@ -6558,13 +6589,13 @@ final public SqlIntervalQualifier IntervalQualifierStart() throws ParseException } s = span(); startPrec = PrecisionOpt(); - } else if (jj_2_612(2)) { + } else if (jj_2_614(2)) { start = Second(); s = span(); - if (jj_2_610(2)) { + if (jj_2_612(2)) { jj_consume_token(LPAREN); startPrec = UnsignedIntLiteral(); - if (jj_2_609(2)) { + if (jj_2_611(2)) { jj_consume_token(COMMA); secondFracPrec = UnsignedIntLiteral(); } else { @@ -6601,10 +6632,10 @@ final public SqlIntervalQualifier IntervalQualifierStart() throws ParseException final public SqlIntervalQualifier TimeUnitOrName() throws ParseException { final SqlIdentifier unitName; final SqlIntervalQualifier intervalQualifier; - if (jj_2_613(2)) { + if (jj_2_615(2)) { intervalQualifier = TimeUnit(); {if (true) return intervalQualifier;} - } else if (jj_2_614(2)) { + } else if (jj_2_616(2)) { unitName = SimpleIdentifier(); {if (true) return new SqlIntervalQualifier(unitName.getSimple(), unitName.getParserPosition());} @@ -6628,49 +6659,49 @@ final public SqlIntervalQualifier TimeUnitOrName() throws ParseException { final public SqlIntervalQualifier TimeUnit() throws ParseException { final Span span; final String w; - if (jj_2_616(2)) { + if (jj_2_618(2)) { jj_consume_token(NANOSECOND); {if (true) return new SqlIntervalQualifier(TimeUnit.NANOSECOND, null, getPos());} - } else if (jj_2_617(2)) { + } else if (jj_2_619(2)) { jj_consume_token(MICROSECOND); {if (true) return new SqlIntervalQualifier(TimeUnit.MICROSECOND, null, getPos());} - } else if (jj_2_618(2)) { + } else if (jj_2_620(2)) { jj_consume_token(MILLISECOND); {if (true) return new SqlIntervalQualifier(TimeUnit.MILLISECOND, null, getPos());} - } else if (jj_2_619(2)) { + } else if (jj_2_621(2)) { jj_consume_token(SECOND); {if (true) return new SqlIntervalQualifier(TimeUnit.SECOND, null, getPos());} - } else if (jj_2_620(2)) { + } else if (jj_2_622(2)) { jj_consume_token(MINUTE); {if (true) return new SqlIntervalQualifier(TimeUnit.MINUTE, null, getPos());} - } else if (jj_2_621(2)) { + } else if (jj_2_623(2)) { jj_consume_token(HOUR); {if (true) return new SqlIntervalQualifier(TimeUnit.HOUR, null, getPos());} - } else if (jj_2_622(2)) { + } else if (jj_2_624(2)) { jj_consume_token(DAY); {if (true) return new SqlIntervalQualifier(TimeUnit.DAY, null, getPos());} - } else if (jj_2_623(2)) { + } else if (jj_2_625(2)) { jj_consume_token(DAYOFWEEK); {if (true) return new SqlIntervalQualifier(TimeUnit.DOW, null, getPos());} - } else if (jj_2_624(2)) { + } else if (jj_2_626(2)) { jj_consume_token(DAYOFYEAR); {if (true) return new SqlIntervalQualifier(TimeUnit.DOY, null, getPos());} - } else if (jj_2_625(2)) { + } else if (jj_2_627(2)) { jj_consume_token(DOW); {if (true) return new SqlIntervalQualifier(TimeUnit.DOW, null, getPos());} - } else if (jj_2_626(2)) { + } else if (jj_2_628(2)) { jj_consume_token(DOY); {if (true) return new SqlIntervalQualifier(TimeUnit.DOY, null, getPos());} - } else if (jj_2_627(2)) { + } else if (jj_2_629(2)) { jj_consume_token(ISODOW); {if (true) return new SqlIntervalQualifier(TimeUnit.ISODOW, null, getPos());} - } else if (jj_2_628(2)) { + } else if (jj_2_630(2)) { jj_consume_token(ISOYEAR); {if (true) return new SqlIntervalQualifier(TimeUnit.ISOYEAR, null, getPos());} - } else if (jj_2_629(2)) { + } else if (jj_2_631(2)) { jj_consume_token(WEEK); span = span(); - if (jj_2_615(2)) { + if (jj_2_617(2)) { jj_consume_token(LPAREN); w = weekdayName(); jj_consume_token(RPAREN); @@ -6678,25 +6709,25 @@ final public SqlIntervalQualifier TimeUnit() throws ParseException { } else { {if (true) return new SqlIntervalQualifier(TimeUnit.WEEK, null, getPos());} } - } else if (jj_2_630(2)) { + } else if (jj_2_632(2)) { jj_consume_token(MONTH); {if (true) return new SqlIntervalQualifier(TimeUnit.MONTH, null, getPos());} - } else if (jj_2_631(2)) { + } else if (jj_2_633(2)) { jj_consume_token(QUARTER); {if (true) return new SqlIntervalQualifier(TimeUnit.QUARTER, null, getPos());} - } else if (jj_2_632(2)) { + } else if (jj_2_634(2)) { jj_consume_token(YEAR); {if (true) return new SqlIntervalQualifier(TimeUnit.YEAR, null, getPos());} - } else if (jj_2_633(2)) { + } else if (jj_2_635(2)) { jj_consume_token(EPOCH); {if (true) return new SqlIntervalQualifier(TimeUnit.EPOCH, null, getPos());} - } else if (jj_2_634(2)) { + } else if (jj_2_636(2)) { jj_consume_token(DECADE); {if (true) return new SqlIntervalQualifier(TimeUnit.DECADE, null, getPos());} - } else if (jj_2_635(2)) { + } else if (jj_2_637(2)) { jj_consume_token(CENTURY); {if (true) return new SqlIntervalQualifier(TimeUnit.CENTURY, null, getPos());} - } else if (jj_2_636(2)) { + } else if (jj_2_638(2)) { jj_consume_token(MILLENNIUM); {if (true) return new SqlIntervalQualifier(TimeUnit.MILLENNIUM, null, getPos());} } else { @@ -6707,25 +6738,25 @@ final public SqlIntervalQualifier TimeUnit() throws ParseException { } final public String weekdayName() throws ParseException { - if (jj_2_637(2)) { + if (jj_2_639(2)) { jj_consume_token(SUNDAY); {if (true) return "WEEK_SUNDAY";} - } else if (jj_2_638(2)) { + } else if (jj_2_640(2)) { jj_consume_token(MONDAY); {if (true) return "WEEK_MONDAY";} - } else if (jj_2_639(2)) { + } else if (jj_2_641(2)) { jj_consume_token(TUESDAY); {if (true) return "WEEK_TUESDAY";} - } else if (jj_2_640(2)) { + } else if (jj_2_642(2)) { jj_consume_token(WEDNESDAY); {if (true) return "WEEK_WEDNESDAY";} - } else if (jj_2_641(2)) { + } else if (jj_2_643(2)) { jj_consume_token(THURSDAY); {if (true) return "WEEK_THURSDAY";} - } else if (jj_2_642(2)) { + } else if (jj_2_644(2)) { jj_consume_token(FRIDAY); {if (true) return "WEEK_FRIDAY";} - } else if (jj_2_643(2)) { + } else if (jj_2_645(2)) { jj_consume_token(SATURDAY); {if (true) return "WEEK_SATURDAY";} } else { @@ -6756,41 +6787,41 @@ final public void AddIdentifierSegment(List names, List po char unicodeEscapeChar = BACKSLASH; final SqlParserPos pos; final Span span; - if (jj_2_645(2)) { + if (jj_2_647(2)) { jj_consume_token(IDENTIFIER); id = unquotedIdentifier(); pos = getPos(); - } else if (jj_2_646(2)) { + } else if (jj_2_648(2)) { jj_consume_token(HYPHENATED_IDENTIFIER); id = unquotedIdentifier(); pos = getPos(); - } else if (jj_2_647(2)) { + } else if (jj_2_649(2)) { jj_consume_token(QUOTED_IDENTIFIER); id = SqlParserUtil.stripQuotes(getToken(0).image, DQ, DQ, DQDQ, quotedCasing); pos = getPos().withQuoting(true); - } else if (jj_2_648(2)) { + } else if (jj_2_650(2)) { jj_consume_token(BACK_QUOTED_IDENTIFIER); id = SqlParserUtil.stripQuotes(getToken(0).image, "`", "`", "``", quotedCasing); pos = getPos().withQuoting(true); - } else if (jj_2_649(2)) { + } else if (jj_2_651(2)) { jj_consume_token(BIG_QUERY_BACK_QUOTED_IDENTIFIER); id = SqlParserUtil.stripQuotes(getToken(0).image, "`", "`", "\\`", quotedCasing); pos = getPos().withQuoting(true); - } else if (jj_2_650(2)) { + } else if (jj_2_652(2)) { jj_consume_token(BRACKET_QUOTED_IDENTIFIER); id = SqlParserUtil.stripQuotes(getToken(0).image, "[", "]", "]]", quotedCasing); pos = getPos().withQuoting(true); - } else if (jj_2_651(2)) { + } else if (jj_2_653(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_644(2)) { + if (jj_2_646(2)) { jj_consume_token(UESCAPE); jj_consume_token(QUOTED_STRING); String s = SqlParserUtil.parseString(token.image); @@ -6802,7 +6833,7 @@ final public void AddIdentifierSegment(List names, List po SqlLiteral lit = SqlLiteral.createCharString(image, "UTF16", pos); lit = lit.unescapeUnicode(unicodeEscapeChar); id = lit.toValue(); - } else if (jj_2_652(2)) { + } else if (jj_2_654(2)) { id = NonReservedKeyWord(); pos = getPos(); } else { @@ -6887,7 +6918,7 @@ final public void AddSimpleIdentifiers(List list) throws ParseException list.add(id); label_55: while (true) { - if (jj_2_653(2)) { + if (jj_2_655(2)) { ; } else { break label_55; @@ -6923,10 +6954,10 @@ final public SqlNodeList ParenthesizedSimpleIdentifierList() throws ParseExcepti final public SqlNodeList SimpleIdentifierOrList() throws ParseException { SqlIdentifier id; SqlNodeList list; - if (jj_2_654(2)) { + if (jj_2_656(2)) { id = SimpleIdentifier(); {if (true) return new SqlNodeList(Collections.singletonList(id), id.getParserPosition());} - } else if (jj_2_655(2)) { + } else if (jj_2_657(2)) { list = ParenthesizedSimpleIdentifierList(); {if (true) return list;} } else { @@ -6946,7 +6977,7 @@ final public SqlIdentifier CompoundIdentifier() throws ParseException { AddIdentifierSegment(nameList, posList); label_56: while (true) { - if (jj_2_656(2)) { + if (jj_2_658(2)) { ; } else { break label_56; @@ -6954,7 +6985,7 @@ final public SqlIdentifier CompoundIdentifier() throws ParseException { jj_consume_token(DOT); AddIdentifierSegment(nameList, posList); } - if (jj_2_657(2)) { + if (jj_2_659(2)) { jj_consume_token(DOT); jj_consume_token(STAR); star = true; @@ -6980,7 +7011,7 @@ final public SqlIdentifier CompoundTableIdentifier() throws ParseException { AddTableIdentifierSegment(nameList, posList); label_57: while (true) { - if (jj_2_658(2)) { + if (jj_2_660(2)) { ; } else { break label_57; @@ -7000,7 +7031,7 @@ final public void AddCompoundIdentifierTypes(List list, List e AddCompoundIdentifierType(list, extendList); label_58: while (true) { - if (jj_2_659(2)) { + if (jj_2_661(2)) { ; } else { break label_58; @@ -7055,10 +7086,10 @@ final public int UnsignedIntLiteral() throws ParseException { final public int IntLiteral() throws ParseException { Token t; - if (jj_2_662(2)) { - if (jj_2_660(2)) { + if (jj_2_664(2)) { + if (jj_2_662(2)) { t = jj_consume_token(UNSIGNED_INTEGER_LITERAL); - } else if (jj_2_661(2)) { + } else if (jj_2_663(2)) { jj_consume_token(PLUS); t = jj_consume_token(UNSIGNED_INTEGER_LITERAL); } else { @@ -7071,7 +7102,7 @@ final public int IntLiteral() throws ParseException { {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.invalidLiteral(t.image, Integer.class.getCanonicalName()));} } - } else if (jj_2_663(2)) { + } else if (jj_2_665(2)) { jj_consume_token(MINUS); t = jj_consume_token(UNSIGNED_INTEGER_LITERAL); try { @@ -7095,7 +7126,7 @@ final public SqlDataTypeSpec DataType() throws ParseException { s = Span.of(typeName.getParserPos()); label_59: while (true) { - if (jj_2_664(2)) { + if (jj_2_666(2)) { ; } else { break label_59; @@ -7112,13 +7143,13 @@ final public SqlTypeNameSpec TypeName() throws ParseException { final SqlTypeNameSpec typeNameSpec; final SqlIdentifier typeName; final Span s = Span.of(); - if (jj_2_665(2)) { + if (jj_2_667(2)) { typeNameSpec = SqlTypeName(s); - } else if (jj_2_666(2)) { + } else if (jj_2_668(2)) { typeNameSpec = RowTypeName(); - } else if (jj_2_667(2)) { + } else if (jj_2_669(2)) { typeNameSpec = MapTypeName(); - } else if (jj_2_668(2)) { + } else if (jj_2_670(2)) { typeName = CompoundIdentifier(); typeNameSpec = new SqlUserDefinedTypeNameSpec(typeName, s.end(this)); } else { @@ -7132,15 +7163,15 @@ final public SqlTypeNameSpec TypeName() throws ParseException { // Types used for JDBC and ODBC scalar conversion function final public SqlTypeNameSpec SqlTypeName(Span s) throws ParseException { final SqlTypeNameSpec sqlTypeNameSpec; - if (jj_2_669(2)) { + if (jj_2_671(2)) { sqlTypeNameSpec = SqlTypeName1(s); - } else if (jj_2_670(2)) { + } else if (jj_2_672(2)) { sqlTypeNameSpec = SqlTypeName2(s); - } else if (jj_2_671(2)) { + } else if (jj_2_673(2)) { sqlTypeNameSpec = SqlTypeName3(s); - } else if (jj_2_672(2)) { + } else if (jj_2_674(2)) { sqlTypeNameSpec = CharacterTypeName(s); - } else if (jj_2_673(2)) { + } else if (jj_2_675(2)) { sqlTypeNameSpec = DateTimeTypeName(); } else { jj_consume_token(-1); @@ -7154,48 +7185,48 @@ final public SqlTypeNameSpec SqlTypeName(Span s) throws ParseException { // For extra specification, we mean precision, scale, charSet, etc. final public SqlTypeNameSpec SqlTypeName1(Span s) throws ParseException { final SqlTypeName sqlTypeName; - if (jj_2_677(2)) { + if (jj_2_679(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_678(2)) { + } else if (jj_2_680(2)) { jj_consume_token(BOOLEAN); s.add(this); sqlTypeName = SqlTypeName.BOOLEAN; - } else if (jj_2_679(2)) { - if (jj_2_674(2)) { + } else if (jj_2_681(2)) { + if (jj_2_676(2)) { jj_consume_token(INTEGER); - } else if (jj_2_675(2)) { + } else if (jj_2_677(2)) { jj_consume_token(INT); } else { jj_consume_token(-1); throw new ParseException(); } s.add(this); sqlTypeName = SqlTypeName.INTEGER; - } else if (jj_2_680(2)) { + } else if (jj_2_682(2)) { jj_consume_token(TINYINT); s.add(this); sqlTypeName = SqlTypeName.TINYINT; - } else if (jj_2_681(2)) { + } else if (jj_2_683(2)) { jj_consume_token(SMALLINT); s.add(this); sqlTypeName = SqlTypeName.SMALLINT; - } else if (jj_2_682(2)) { + } else if (jj_2_684(2)) { jj_consume_token(BIGINT); s.add(this); sqlTypeName = SqlTypeName.BIGINT; - } else if (jj_2_683(2)) { + } else if (jj_2_685(2)) { jj_consume_token(REAL); s.add(this); sqlTypeName = SqlTypeName.REAL; - } else if (jj_2_684(2)) { + } else if (jj_2_686(2)) { jj_consume_token(DOUBLE); s.add(this); - if (jj_2_676(2)) { + if (jj_2_678(2)) { jj_consume_token(PRECISION); } else { ; } sqlTypeName = SqlTypeName.DOUBLE; - } else if (jj_2_685(2)) { + } else if (jj_2_687(2)) { jj_consume_token(FLOAT); s.add(this); sqlTypeName = SqlTypeName.FLOAT; } else { @@ -7210,16 +7241,16 @@ final public SqlTypeNameSpec SqlTypeName1(Span s) throws ParseException { final public SqlTypeNameSpec SqlTypeName2(Span s) throws ParseException { final SqlTypeName sqlTypeName; int precision = -1; - if (jj_2_687(2)) { + if (jj_2_689(2)) { jj_consume_token(BINARY); s.add(this); - if (jj_2_686(2)) { + if (jj_2_688(2)) { jj_consume_token(VARYING); sqlTypeName = SqlTypeName.VARBINARY; } else { sqlTypeName = SqlTypeName.BINARY; } - } else if (jj_2_688(2)) { + } else if (jj_2_690(2)) { jj_consume_token(VARBINARY); s.add(this); sqlTypeName = SqlTypeName.VARBINARY; } else { @@ -7236,29 +7267,29 @@ final public SqlTypeNameSpec SqlTypeName3(Span s) throws ParseException { final SqlTypeName sqlTypeName; int precision = -1; int scale = -1; - if (jj_2_692(2)) { - if (jj_2_689(2)) { + if (jj_2_694(2)) { + if (jj_2_691(2)) { jj_consume_token(DECIMAL); - } else if (jj_2_690(2)) { + } else if (jj_2_692(2)) { jj_consume_token(DEC); - } else if (jj_2_691(2)) { + } else if (jj_2_693(2)) { jj_consume_token(NUMERIC); } else { jj_consume_token(-1); throw new ParseException(); } s.add(this); sqlTypeName = SqlTypeName.DECIMAL; - } else if (jj_2_693(2)) { + } else if (jj_2_695(2)) { jj_consume_token(ANY); s.add(this); sqlTypeName = SqlTypeName.ANY; } else { jj_consume_token(-1); throw new ParseException(); } - if (jj_2_695(2)) { + if (jj_2_697(2)) { jj_consume_token(LPAREN); precision = UnsignedIntLiteral(); - if (jj_2_694(2)) { + if (jj_2_696(2)) { jj_consume_token(COMMA); scale = UnsignedIntLiteral(); } else { @@ -7274,213 +7305,213 @@ final public SqlTypeNameSpec SqlTypeName3(Span s) throws ParseException { // Types used for for JDBC and ODBC scalar conversion function final public SqlJdbcDataTypeName JdbcOdbcDataTypeName() throws ParseException { - if (jj_2_730(2)) { - if (jj_2_696(2)) { + if (jj_2_732(2)) { + if (jj_2_698(2)) { jj_consume_token(SQL_CHAR); - } else if (jj_2_697(2)) { + } else if (jj_2_699(2)) { jj_consume_token(CHAR); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_CHAR;} - } else if (jj_2_731(2)) { - if (jj_2_698(2)) { + } else if (jj_2_733(2)) { + if (jj_2_700(2)) { jj_consume_token(SQL_VARCHAR); - } else if (jj_2_699(2)) { + } else if (jj_2_701(2)) { jj_consume_token(VARCHAR); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_VARCHAR;} - } else if (jj_2_732(2)) { - if (jj_2_700(2)) { + } else if (jj_2_734(2)) { + if (jj_2_702(2)) { jj_consume_token(SQL_DATE); - } else if (jj_2_701(2)) { + } else if (jj_2_703(2)) { jj_consume_token(DATE); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_DATE;} - } else if (jj_2_733(2)) { - if (jj_2_702(2)) { + } else if (jj_2_735(2)) { + if (jj_2_704(2)) { jj_consume_token(SQL_TIME); - } else if (jj_2_703(2)) { + } else if (jj_2_705(2)) { jj_consume_token(TIME); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_TIME;} - } else if (jj_2_734(2)) { - if (jj_2_704(2)) { + } else if (jj_2_736(2)) { + if (jj_2_706(2)) { jj_consume_token(SQL_TIMESTAMP); - } else if (jj_2_705(2)) { + } else if (jj_2_707(2)) { jj_consume_token(TIMESTAMP); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_TIMESTAMP;} - } else if (jj_2_735(2)) { - if (jj_2_706(2)) { + } else if (jj_2_737(2)) { + if (jj_2_708(2)) { jj_consume_token(SQL_DECIMAL); - } else if (jj_2_707(2)) { + } else if (jj_2_709(2)) { jj_consume_token(DECIMAL); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_DECIMAL;} - } else if (jj_2_736(2)) { - if (jj_2_708(2)) { + } else if (jj_2_738(2)) { + if (jj_2_710(2)) { jj_consume_token(SQL_NUMERIC); - } else if (jj_2_709(2)) { + } else if (jj_2_711(2)) { jj_consume_token(NUMERIC); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_NUMERIC;} - } else if (jj_2_737(2)) { - if (jj_2_710(2)) { + } else if (jj_2_739(2)) { + if (jj_2_712(2)) { jj_consume_token(SQL_BOOLEAN); - } else if (jj_2_711(2)) { + } else if (jj_2_713(2)) { jj_consume_token(BOOLEAN); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_BOOLEAN;} - } else if (jj_2_738(2)) { - if (jj_2_712(2)) { + } else if (jj_2_740(2)) { + if (jj_2_714(2)) { jj_consume_token(SQL_INTEGER); - } else if (jj_2_713(2)) { + } else if (jj_2_715(2)) { jj_consume_token(INTEGER); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_INTEGER;} - } else if (jj_2_739(2)) { - if (jj_2_714(2)) { + } else if (jj_2_741(2)) { + if (jj_2_716(2)) { jj_consume_token(SQL_BINARY); - } else if (jj_2_715(2)) { + } else if (jj_2_717(2)) { jj_consume_token(BINARY); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_BINARY;} - } else if (jj_2_740(2)) { - if (jj_2_716(2)) { + } else if (jj_2_742(2)) { + if (jj_2_718(2)) { jj_consume_token(SQL_VARBINARY); - } else if (jj_2_717(2)) { + } else if (jj_2_719(2)) { jj_consume_token(VARBINARY); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_VARBINARY;} - } else if (jj_2_741(2)) { - if (jj_2_718(2)) { + } else if (jj_2_743(2)) { + if (jj_2_720(2)) { jj_consume_token(SQL_TINYINT); - } else if (jj_2_719(2)) { + } else if (jj_2_721(2)) { jj_consume_token(TINYINT); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_TINYINT;} - } else if (jj_2_742(2)) { - if (jj_2_720(2)) { + } else if (jj_2_744(2)) { + if (jj_2_722(2)) { jj_consume_token(SQL_SMALLINT); - } else if (jj_2_721(2)) { + } else if (jj_2_723(2)) { jj_consume_token(SMALLINT); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_SMALLINT;} - } else if (jj_2_743(2)) { - if (jj_2_722(2)) { + } else if (jj_2_745(2)) { + if (jj_2_724(2)) { jj_consume_token(SQL_BIGINT); - } else if (jj_2_723(2)) { + } else if (jj_2_725(2)) { jj_consume_token(BIGINT); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_BIGINT;} - } else if (jj_2_744(2)) { - if (jj_2_724(2)) { + } else if (jj_2_746(2)) { + if (jj_2_726(2)) { jj_consume_token(SQL_REAL); - } else if (jj_2_725(2)) { + } else if (jj_2_727(2)) { jj_consume_token(REAL); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_REAL;} - } else if (jj_2_745(2)) { - if (jj_2_726(2)) { + } else if (jj_2_747(2)) { + if (jj_2_728(2)) { jj_consume_token(SQL_DOUBLE); - } else if (jj_2_727(2)) { + } else if (jj_2_729(2)) { jj_consume_token(DOUBLE); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_DOUBLE;} - } else if (jj_2_746(2)) { - if (jj_2_728(2)) { + } else if (jj_2_748(2)) { + if (jj_2_730(2)) { jj_consume_token(SQL_FLOAT); - } else if (jj_2_729(2)) { + } else if (jj_2_731(2)) { jj_consume_token(FLOAT); } else { jj_consume_token(-1); throw new ParseException(); } {if (true) return SqlJdbcDataTypeName.SQL_FLOAT;} - } else if (jj_2_747(2)) { + } else if (jj_2_749(2)) { jj_consume_token(SQL_INTERVAL_YEAR); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_YEAR;} - } else if (jj_2_748(2)) { + } else if (jj_2_750(2)) { jj_consume_token(SQL_INTERVAL_YEAR_TO_MONTH); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_YEAR_TO_MONTH;} - } else if (jj_2_749(2)) { + } else if (jj_2_751(2)) { jj_consume_token(SQL_INTERVAL_MONTH); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_MONTH;} - } else if (jj_2_750(2)) { + } else if (jj_2_752(2)) { jj_consume_token(SQL_INTERVAL_DAY); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_DAY;} - } else if (jj_2_751(2)) { + } else if (jj_2_753(2)) { jj_consume_token(SQL_INTERVAL_DAY_TO_HOUR); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_DAY_TO_HOUR;} - } else if (jj_2_752(2)) { + } else if (jj_2_754(2)) { jj_consume_token(SQL_INTERVAL_DAY_TO_MINUTE); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_DAY_TO_MINUTE;} - } else if (jj_2_753(2)) { + } else if (jj_2_755(2)) { jj_consume_token(SQL_INTERVAL_DAY_TO_SECOND); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_DAY_TO_SECOND;} - } else if (jj_2_754(2)) { + } else if (jj_2_756(2)) { jj_consume_token(SQL_INTERVAL_HOUR); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_HOUR;} - } else if (jj_2_755(2)) { + } else if (jj_2_757(2)) { jj_consume_token(SQL_INTERVAL_HOUR_TO_MINUTE); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_HOUR_TO_MINUTE;} - } else if (jj_2_756(2)) { + } else if (jj_2_758(2)) { jj_consume_token(SQL_INTERVAL_HOUR_TO_SECOND); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_HOUR_TO_SECOND;} - } else if (jj_2_757(2)) { + } else if (jj_2_759(2)) { jj_consume_token(SQL_INTERVAL_MINUTE); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_MINUTE;} - } else if (jj_2_758(2)) { + } else if (jj_2_760(2)) { jj_consume_token(SQL_INTERVAL_MINUTE_TO_SECOND); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_MINUTE_TO_SECOND;} - } else if (jj_2_759(2)) { + } else if (jj_2_761(2)) { jj_consume_token(SQL_INTERVAL_SECOND); {if (true) return SqlJdbcDataTypeName.SQL_INTERVAL_SECOND;} } else { @@ -7503,10 +7534,10 @@ final public SqlLiteral JdbcOdbcDataType() throws ParseException { */ final public SqlTypeNameSpec CollectionsTypeName(SqlTypeNameSpec elementTypeName) throws ParseException { final SqlTypeName collectionTypeName; - if (jj_2_760(2)) { + if (jj_2_762(2)) { jj_consume_token(MULTISET); collectionTypeName = SqlTypeName.MULTISET; - } else if (jj_2_761(2)) { + } else if (jj_2_763(2)) { jj_consume_token(ARRAY); collectionTypeName = SqlTypeName.ARRAY; } else { @@ -7522,10 +7553,10 @@ final public SqlTypeNameSpec CollectionsTypeName(SqlTypeNameSpec elementTypeName * Parse a nullable option, default is true. */ final public boolean NullableOptDefaultTrue() throws ParseException { - if (jj_2_762(2)) { + if (jj_2_764(2)) { jj_consume_token(NULL); {if (true) return true;} - } else if (jj_2_763(2)) { + } else if (jj_2_765(2)) { jj_consume_token(NOT); jj_consume_token(NULL); {if (true) return false;} @@ -7539,10 +7570,10 @@ final public boolean NullableOptDefaultTrue() throws ParseException { * Parse a nullable option, default is false. */ final public boolean NullableOptDefaultFalse() throws ParseException { - if (jj_2_764(2)) { + if (jj_2_766(2)) { jj_consume_token(NULL); {if (true) return true;} - } else if (jj_2_765(2)) { + } else if (jj_2_767(2)) { jj_consume_token(NOT); jj_consume_token(NULL); {if (true) return false;} @@ -7554,7 +7585,7 @@ final public boolean NullableOptDefaultFalse() throws ParseException { /** Parses NOT NULL and returns false, or parses nothing and returns true. */ final public boolean NotNullOpt() throws ParseException { - if (jj_2_766(2)) { + if (jj_2_768(2)) { jj_consume_token(NOT); jj_consume_token(NULL); {if (true) return false;} @@ -7573,7 +7604,7 @@ final public void AddFieldNameTypes(List fieldNames, AddFieldNameType(fieldNames, fieldTypes); label_60: while (true) { - if (jj_2_767(2)) { + if (jj_2_769(2)) { ; } else { break label_60; @@ -7631,23 +7662,23 @@ final public SqlTypeNameSpec CharacterTypeName(Span s) throws ParseException { int precision = -1; final SqlTypeName sqlTypeName; String charSetName = null; - if (jj_2_771(2)) { - if (jj_2_768(2)) { + if (jj_2_773(2)) { + if (jj_2_770(2)) { jj_consume_token(CHARACTER); - } else if (jj_2_769(2)) { + } else if (jj_2_771(2)) { jj_consume_token(CHAR); } else { jj_consume_token(-1); throw new ParseException(); } s.add(this); - if (jj_2_770(2)) { + if (jj_2_772(2)) { jj_consume_token(VARYING); sqlTypeName = SqlTypeName.VARCHAR; } else { sqlTypeName = SqlTypeName.CHAR; } - } else if (jj_2_772(2)) { + } else if (jj_2_774(2)) { jj_consume_token(VARCHAR); s.add(this); sqlTypeName = SqlTypeName.VARCHAR; } else { @@ -7655,7 +7686,7 @@ final public SqlTypeNameSpec CharacterTypeName(Span s) throws ParseException { throw new ParseException(); } precision = PrecisionOpt(); - if (jj_2_773(2)) { + if (jj_2_775(2)) { jj_consume_token(CHARACTER); jj_consume_token(SET); charSetName = Identifier(); @@ -7673,17 +7704,17 @@ final public SqlTypeNameSpec DateTimeTypeName() throws ParseException { int precision = -1; SqlTypeName typeName; final Span s; - if (jj_2_774(2)) { + if (jj_2_776(2)) { jj_consume_token(DATE); typeName = SqlTypeName.DATE; {if (true) return new SqlBasicTypeNameSpec(typeName, getPos());} - } else if (jj_2_775(2)) { + } else if (jj_2_777(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_776(2)) { + } else if (jj_2_778(2)) { jj_consume_token(TIMESTAMP); s = span(); precision = PrecisionOpt(); @@ -7699,7 +7730,7 @@ final public SqlTypeNameSpec DateTimeTypeName() throws ParseException { // Parse an optional data type precision, default is -1. final public int PrecisionOpt() throws ParseException { int precision = -1; - if (jj_2_777(2)) { + if (jj_2_779(2)) { jj_consume_token(LPAREN); precision = UnsignedIntLiteral(); jj_consume_token(RPAREN); @@ -7717,14 +7748,14 @@ final public int PrecisionOpt() throws ParseException { */ final public SqlTypeName TimeZoneOpt(boolean timeType) throws ParseException { boolean local = false; - if (jj_2_779(3)) { + if (jj_2_781(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_780(2)) { + } else if (jj_2_782(2)) { jj_consume_token(WITH); - if (jj_2_778(2)) { + if (jj_2_780(2)) { jj_consume_token(LOCAL); local = true; } else { @@ -7774,14 +7805,14 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { final SqlLiteral style; // mssql convert 'style' operand final SqlFunction f; final SqlNode format; - if (jj_2_816(2)) { - if (jj_2_781(2)) { + if (jj_2_818(2)) { + if (jj_2_783(2)) { jj_consume_token(CAST); f = SqlStdOperatorTable.CAST; - } else if (jj_2_782(2)) { + } else if (jj_2_784(2)) { jj_consume_token(SAFE_CAST); f = SqlLibraryOperators.SAFE_CAST; - } else if (jj_2_783(2)) { + } else if (jj_2_785(2)) { jj_consume_token(TRY_CAST); f = SqlLibraryOperators.TRY_CAST; } else { @@ -7792,10 +7823,10 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { jj_consume_token(LPAREN); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); jj_consume_token(AS); - if (jj_2_784(2)) { + if (jj_2_786(2)) { dt = DataType(); args.add(dt); - } else if (jj_2_785(2)) { + } else if (jj_2_787(2)) { jj_consume_token(INTERVAL); e = IntervalQualifier(); args.add(e); @@ -7803,7 +7834,7 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { jj_consume_token(-1); throw new ParseException(); } - if (jj_2_786(2)) { + if (jj_2_788(2)) { jj_consume_token(FORMAT); format = StringLiteral(); args.add(format); @@ -7812,7 +7843,7 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { } jj_consume_token(RPAREN); {if (true) return f.createCall(s.end(this), args);} - } else if (jj_2_817(2)) { + } else if (jj_2_819(2)) { jj_consume_token(EXTRACT); s = span(); jj_consume_token(LPAREN); @@ -7822,7 +7853,7 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); jj_consume_token(RPAREN); {if (true) return SqlStdOperatorTable.EXTRACT.createCall(s.end(this), args);} - } else if (jj_2_818(2)) { + } else if (jj_2_820(2)) { jj_consume_token(POSITION); s = span(); jj_consume_token(LPAREN); @@ -7833,7 +7864,7 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { args.add(e); jj_consume_token(IN); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_787(2)) { + if (jj_2_789(2)) { jj_consume_token(FROM); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); } else { @@ -7841,19 +7872,19 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { } jj_consume_token(RPAREN); {if (true) return SqlStdOperatorTable.POSITION.createCall(s.end(this), args);} - } else if (jj_2_819(2)) { + } else if (jj_2_821(2)) { jj_consume_token(CONVERT); s = span(); jj_consume_token(LPAREN); - if (jj_2_795(2)) { + if (jj_2_797(2)) { AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_788(2)) { + if (jj_2_790(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_789(2)) { + } else if (jj_2_791(2)) { jj_consume_token(COMMA); e = SimpleIdentifier(); args.add(e); @@ -7866,11 +7897,11 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { jj_consume_token(-1); throw new ParseException(); } - } else if (jj_2_796(2)) { - if (jj_2_790(2)) { + } else if (jj_2_798(2)) { + if (jj_2_792(2)) { dt = DataType(); args.add(dt); - } else if (jj_2_791(2)) { + } else if (jj_2_793(2)) { jj_consume_token(INTERVAL); e = IntervalQualifier(); args.add(e); @@ -7880,12 +7911,12 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { } jj_consume_token(COMMA); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_794(2)) { + if (jj_2_796(2)) { jj_consume_token(COMMA); - if (jj_2_792(2)) { + if (jj_2_794(2)) { style = UnsignedNumericLiteral(); args.add(style); - } else if (jj_2_793(2)) { + } else if (jj_2_795(2)) { jj_consume_token(NULL); args.add(SqlLiteral.createNull(getPos())); } else { @@ -7901,22 +7932,22 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { jj_consume_token(-1); throw new ParseException(); } - } else if (jj_2_820(2)) { + } else if (jj_2_822(2)) { jj_consume_token(TRANSLATE); s = span(); jj_consume_token(LPAREN); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_798(2)) { + if (jj_2_800(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_799(2)) { + } else if (jj_2_801(2)) { label_61: while (true) { - if (jj_2_797(2)) { + if (jj_2_799(2)) { ; } else { break label_61; @@ -7931,7 +7962,7 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { jj_consume_token(-1); throw new ParseException(); } - } else if (jj_2_821(2)) { + } else if (jj_2_823(2)) { jj_consume_token(OVERLAY); s = span(); jj_consume_token(LPAREN); @@ -7940,7 +7971,7 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); jj_consume_token(FROM); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_800(2)) { + if (jj_2_802(2)) { jj_consume_token(FOR); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); } else { @@ -7948,15 +7979,15 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { } jj_consume_token(RPAREN); {if (true) return SqlStdOperatorTable.OVERLAY.createCall(s.end(this), args);} - } else if (jj_2_822(2)) { + } else if (jj_2_824(2)) { jj_consume_token(FLOOR); s = span(); e = FloorCeilOptions(s, true); {if (true) return e;} - } else if (jj_2_823(2)) { - if (jj_2_801(2)) { + } else if (jj_2_825(2)) { + if (jj_2_803(2)) { jj_consume_token(CEIL); - } else if (jj_2_802(2)) { + } else if (jj_2_804(2)) { jj_consume_token(CEILING); } else { jj_consume_token(-1); @@ -7965,24 +7996,24 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { s = span(); e = FloorCeilOptions(s, false); {if (true) return e;} - } else if (jj_2_824(2)) { + } else if (jj_2_826(2)) { jj_consume_token(SUBSTRING); s = span(); jj_consume_token(LPAREN); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_803(2)) { + if (jj_2_805(2)) { jj_consume_token(FROM); - } else if (jj_2_804(2)) { + } else if (jj_2_806(2)) { jj_consume_token(COMMA); } else { jj_consume_token(-1); throw new ParseException(); } AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_807(2)) { - if (jj_2_805(2)) { + if (jj_2_809(2)) { + if (jj_2_807(2)) { jj_consume_token(FOR); - } else if (jj_2_806(2)) { + } else if (jj_2_808(2)) { jj_consume_token(COMMA); } else { jj_consume_token(-1); @@ -7995,23 +8026,23 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { jj_consume_token(RPAREN); {if (true) return SqlStdOperatorTable.SUBSTRING.createCall( s.end(this), args);} - } else if (jj_2_825(2)) { + } else if (jj_2_827(2)) { jj_consume_token(TRIM); SqlLiteral flag = null; SqlNode trimChars = null; s = span(); jj_consume_token(LPAREN); - if (jj_2_815(2)) { - if (jj_2_811(2)) { - if (jj_2_808(2)) { + if (jj_2_817(2)) { + if (jj_2_813(2)) { + if (jj_2_810(2)) { jj_consume_token(BOTH); s.add(this); flag = SqlTrimFunction.Flag.BOTH.symbol(getPos()); - } else if (jj_2_809(2)) { + } else if (jj_2_811(2)) { jj_consume_token(TRAILING); s.add(this); flag = SqlTrimFunction.Flag.TRAILING.symbol(getPos()); - } else if (jj_2_810(2)) { + } else if (jj_2_812(2)) { jj_consume_token(LEADING); s.add(this); flag = SqlTrimFunction.Flag.LEADING.symbol(getPos()); @@ -8022,18 +8053,18 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { } else { ; } - if (jj_2_812(2)) { + if (jj_2_814(2)) { trimChars = Expression(ExprContext.ACCEPT_SUB_QUERY); } else { ; } - if (jj_2_813(2)) { + if (jj_2_815(2)) { jj_consume_token(FROM); if (null == flag && null == trimChars) { {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.illegalFromEmpty());} } - } else if (jj_2_814(2)) { + } else if (jj_2_816(2)) { jj_consume_token(RPAREN); // This is to handle the case of TRIM(x) // (FRG-191). @@ -8061,67 +8092,67 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { args.add(e); jj_consume_token(RPAREN); {if (true) return SqlStdOperatorTable.TRIM.createCall(s.end(this), args);} - } else if (jj_2_826(2)) { + } else if (jj_2_828(2)) { node = ContainsSubstrFunctionCall(); {if (true) return node;} - } else if (jj_2_827(2)) { + } else if (jj_2_829(2)) { node = DateTimeConstructorCall(); {if (true) return node;} - } else if (jj_2_828(2)) { + } else if (jj_2_830(2)) { node = DateDiffFunctionCall(); {if (true) return node;} - } else if (jj_2_829(2)) { + } else if (jj_2_831(2)) { node = DateTruncFunctionCall(); {if (true) return node;} - } else if (jj_2_830(2)) { + } else if (jj_2_832(2)) { node = DatetimeTruncFunctionCall(); {if (true) return node;} - } else if (jj_2_831(2)) { + } else if (jj_2_833(2)) { node = TimestampAddFunctionCall(); {if (true) return node;} - } else if (jj_2_832(2)) { + } else if (jj_2_834(2)) { node = DatetimeDiffFunctionCall(); {if (true) return node;} - } else if (jj_2_833(2)) { + } else if (jj_2_835(2)) { node = TimestampDiffFunctionCall(); {if (true) return node;} - } else if (jj_2_834(2)) { + } else if (jj_2_836(2)) { node = TimestampDiff3FunctionCall(); {if (true) return node;} - } else if (jj_2_835(2)) { + } else if (jj_2_837(2)) { node = TimestampTruncFunctionCall(); {if (true) return node;} - } else if (jj_2_836(2)) { + } else if (jj_2_838(2)) { node = TimeDiffFunctionCall(); {if (true) return node;} - } else if (jj_2_837(2)) { + } else if (jj_2_839(2)) { node = TimeTruncFunctionCall(); {if (true) return node;} - } else if (jj_2_838(2)) { + } else if (jj_2_840(2)) { node = MatchRecognizeFunctionCall(); {if (true) return node;} - } else if (jj_2_839(2)) { + } else if (jj_2_841(2)) { node = JsonExistsFunctionCall(); {if (true) return node;} - } else if (jj_2_840(2)) { + } else if (jj_2_842(2)) { node = JsonValueFunctionCall(); {if (true) return node;} - } else if (jj_2_841(2)) { + } else if (jj_2_843(2)) { node = JsonQueryFunctionCall(); {if (true) return node;} - } else if (jj_2_842(2)) { + } else if (jj_2_844(2)) { node = JsonObjectFunctionCall(); {if (true) return node;} - } else if (jj_2_843(2)) { + } else if (jj_2_845(2)) { node = JsonObjectAggFunctionCall(); {if (true) return node;} - } else if (jj_2_844(2)) { + } else if (jj_2_846(2)) { node = JsonArrayFunctionCall(); {if (true) return node;} - } else if (jj_2_845(2)) { + } else if (jj_2_847(2)) { node = JsonArrayAggFunctionCall(); {if (true) return node;} - } else if (jj_2_846(2)) { + } else if (jj_2_848(2)) { node = GroupByWindowingCall(); {if (true) return node;} } else { @@ -8133,15 +8164,15 @@ final public SqlNode BuiltinFunctionCall() throws ParseException { final public SqlJsonEncoding JsonRepresentation() throws ParseException { jj_consume_token(JSON); - if (jj_2_850(2)) { + if (jj_2_852(2)) { jj_consume_token(ENCODING); - if (jj_2_847(2)) { + if (jj_2_849(2)) { jj_consume_token(UTF8); {if (true) return SqlJsonEncoding.UTF8;} - } else if (jj_2_848(2)) { + } else if (jj_2_850(2)) { jj_consume_token(UTF16); {if (true) return SqlJsonEncoding.UTF16;} - } else if (jj_2_849(2)) { + } else if (jj_2_851(2)) { jj_consume_token(UTF32); {if (true) return SqlJsonEncoding.UTF32;} } else { @@ -8171,7 +8202,7 @@ final public SqlDataTypeSpec JsonReturningClause() throws ParseException { final public SqlDataTypeSpec JsonOutputClause() throws ParseException { SqlDataTypeSpec dataType; dataType = JsonReturningClause(); - if (jj_2_851(2)) { + if (jj_2_853(2)) { jj_consume_token(FORMAT); JsonRepresentation(); } else { @@ -8194,7 +8225,7 @@ final public List JsonApiCommonSyntax() throws ParseException { AddExpression(args, ExprContext.ACCEPT_NON_QUERY); jj_consume_token(COMMA); AddExpression(args, ExprContext.ACCEPT_NON_QUERY); - if (jj_2_853(2)) { + if (jj_2_855(2)) { jj_consume_token(PASSING); e = Expression(ExprContext.ACCEPT_NON_QUERY); @@ -8203,7 +8234,7 @@ final public List JsonApiCommonSyntax() throws ParseException { label_62: while (true) { - if (jj_2_852(2)) { + if (jj_2_854(2)) { ; } else { break label_62; @@ -8223,16 +8254,16 @@ final public List JsonApiCommonSyntax() throws ParseException { } final public SqlJsonExistsErrorBehavior JsonExistsErrorBehavior() throws ParseException { - if (jj_2_854(2)) { + if (jj_2_856(2)) { jj_consume_token(TRUE); {if (true) return SqlJsonExistsErrorBehavior.TRUE;} - } else if (jj_2_855(2)) { + } else if (jj_2_857(2)) { jj_consume_token(FALSE); {if (true) return SqlJsonExistsErrorBehavior.FALSE;} - } else if (jj_2_856(2)) { + } else if (jj_2_858(2)) { jj_consume_token(UNKNOWN); {if (true) return SqlJsonExistsErrorBehavior.UNKNOWN;} - } else if (jj_2_857(2)) { + } else if (jj_2_859(2)) { jj_consume_token(ERROR); {if (true) return SqlJsonExistsErrorBehavior.ERROR;} } else { @@ -8252,7 +8283,7 @@ final public SqlCall JsonExistsFunctionCall() throws ParseException { jj_consume_token(LPAREN); commonSyntax = JsonApiCommonSyntax(); args.addAll(commonSyntax); - if (jj_2_858(2)) { + if (jj_2_860(2)) { errorBehavior = JsonExistsErrorBehavior(); args.add(errorBehavior.symbol(getPos())); jj_consume_token(ON); @@ -8267,13 +8298,13 @@ final public SqlCall JsonExistsFunctionCall() throws ParseException { final public List JsonValueEmptyOrErrorBehavior() throws ParseException { final List list = new ArrayList(); - if (jj_2_859(2)) { + if (jj_2_861(2)) { jj_consume_token(ERROR); list.add(SqlJsonValueEmptyOrErrorBehavior.ERROR.symbol(getPos())); - } else if (jj_2_860(2)) { + } else if (jj_2_862(2)) { jj_consume_token(NULL); list.add(SqlJsonValueEmptyOrErrorBehavior.NULL.symbol(getPos())); - } else if (jj_2_861(2)) { + } else if (jj_2_863(2)) { jj_consume_token(DEFAULT_); list.add(SqlJsonValueEmptyOrErrorBehavior.DEFAULT.symbol(getPos())); AddExpression(list, ExprContext.ACCEPT_NON_QUERY); @@ -8282,10 +8313,10 @@ final public List JsonValueEmptyOrErrorBehavior() throws ParseException throw new ParseException(); } jj_consume_token(ON); - if (jj_2_862(2)) { + if (jj_2_864(2)) { jj_consume_token(EMPTY); list.add(SqlJsonEmptyOrError.EMPTY.symbol(getPos())); - } else if (jj_2_863(2)) { + } else if (jj_2_865(2)) { jj_consume_token(ERROR); list.add(SqlJsonEmptyOrError.ERROR.symbol(getPos())); } else { @@ -8307,7 +8338,7 @@ final public SqlCall JsonValueFunctionCall() throws ParseException { jj_consume_token(LPAREN); commonSyntax = JsonApiCommonSyntax(); args.addAll(commonSyntax); - if (jj_2_864(2)) { + if (jj_2_866(2)) { e = JsonReturningClause(); args.add(SqlJsonValueReturning.RETURNING.symbol(getPos())); args.add(e); @@ -8316,7 +8347,7 @@ final public SqlCall JsonValueFunctionCall() throws ParseException { } label_63: while (true) { - if (jj_2_865(2)) { + if (jj_2_867(2)) { ; } else { break label_63; @@ -8331,17 +8362,17 @@ final public SqlCall JsonValueFunctionCall() throws ParseException { final public List JsonQueryEmptyOrErrorBehavior() throws ParseException { final List list = new ArrayList(); - if (jj_2_866(2)) { + if (jj_2_868(2)) { jj_consume_token(ERROR); list.add(SqlLiteral.createSymbol(SqlJsonQueryEmptyOrErrorBehavior.ERROR, getPos())); - } else if (jj_2_867(2)) { + } else if (jj_2_869(2)) { jj_consume_token(NULL); list.add(SqlLiteral.createSymbol(SqlJsonQueryEmptyOrErrorBehavior.NULL, getPos())); - } else if (jj_2_868(2)) { + } else if (jj_2_870(2)) { jj_consume_token(EMPTY); jj_consume_token(ARRAY); list.add(SqlLiteral.createSymbol(SqlJsonQueryEmptyOrErrorBehavior.EMPTY_ARRAY, getPos())); - } else if (jj_2_869(2)) { + } else if (jj_2_871(2)) { jj_consume_token(EMPTY); jj_consume_token(OBJECT); list.add(SqlLiteral.createSymbol(SqlJsonQueryEmptyOrErrorBehavior.EMPTY_OBJECT, getPos())); @@ -8350,10 +8381,10 @@ final public List JsonQueryEmptyOrErrorBehavior() throws ParseException throw new ParseException(); } jj_consume_token(ON); - if (jj_2_870(2)) { + if (jj_2_872(2)) { jj_consume_token(EMPTY); list.add(SqlLiteral.createSymbol(SqlJsonEmptyOrError.EMPTY, getPos())); - } else if (jj_2_871(2)) { + } else if (jj_2_873(2)) { jj_consume_token(ERROR); list.add(SqlLiteral.createSymbol(SqlJsonEmptyOrError.ERROR, getPos())); } else { @@ -8365,31 +8396,31 @@ final public List JsonQueryEmptyOrErrorBehavior() throws ParseException } final public SqlNode JsonQueryWrapperBehavior() throws ParseException { - if (jj_2_876(2)) { + if (jj_2_878(2)) { jj_consume_token(WITHOUT); - if (jj_2_872(2)) { + if (jj_2_874(2)) { jj_consume_token(ARRAY); } else { ; } {if (true) return SqlLiteral.createSymbol(SqlJsonQueryWrapperBehavior.WITHOUT_ARRAY, getPos());} - } else if (jj_2_877(2)) { + } else if (jj_2_879(2)) { jj_consume_token(WITH); jj_consume_token(CONDITIONAL); - if (jj_2_873(2)) { + if (jj_2_875(2)) { jj_consume_token(ARRAY); } else { ; } {if (true) return SqlLiteral.createSymbol(SqlJsonQueryWrapperBehavior.WITH_CONDITIONAL_ARRAY, getPos());} - } else if (jj_2_878(2)) { + } else if (jj_2_880(2)) { jj_consume_token(WITH); - if (jj_2_874(2)) { + if (jj_2_876(2)) { jj_consume_token(UNCONDITIONAL); } else { ; } - if (jj_2_875(2)) { + if (jj_2_877(2)) { jj_consume_token(ARRAY); } else { ; @@ -8414,7 +8445,7 @@ final public SqlCall JsonQueryFunctionCall() throws ParseException { commonSyntax = JsonApiCommonSyntax(); args[0] = commonSyntax.get(0); args[1] = commonSyntax.get(1); - if (jj_2_879(2)) { + if (jj_2_881(2)) { e = JsonQueryWrapperBehavior(); jj_consume_token(WRAPPER); args[2] = e; @@ -8423,7 +8454,7 @@ final public SqlCall JsonQueryFunctionCall() throws ParseException { } label_64: while (true) { - if (jj_2_880(2)) { + if (jj_2_882(2)) { ; } else { break label_64; @@ -8456,7 +8487,7 @@ final public List JsonNameAndValue() throws ParseException { final List list = new ArrayList(); final SqlNode e; boolean kvMode = false; - if (jj_2_881(2)) { + if (jj_2_883(2)) { jj_consume_token(KEY); kvMode = true; } else { @@ -8464,14 +8495,14 @@ final public List JsonNameAndValue() throws ParseException { } e = JsonName(); list.add(e); - if (jj_2_882(2)) { + if (jj_2_884(2)) { jj_consume_token(VALUE); - } else if (jj_2_883(2)) { + } else if (jj_2_885(2)) { jj_consume_token(COMMA); if (kvMode) { {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.illegalComma());} } - } else if (jj_2_884(2)) { + } else if (jj_2_886(2)) { jj_consume_token(COLON); if (kvMode) { {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.illegalColon());} @@ -8486,12 +8517,12 @@ final public List JsonNameAndValue() throws ParseException { } final public SqlNode JsonConstructorNullClause() throws ParseException { - if (jj_2_885(2)) { + if (jj_2_887(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_886(2)) { + } else if (jj_2_888(2)) { jj_consume_token(ABSENT); jj_consume_token(ON); jj_consume_token(NULL); @@ -8512,12 +8543,12 @@ final public SqlCall JsonObjectFunctionCall() throws ParseException { jj_consume_token(JSON_OBJECT); span = span(); jj_consume_token(LPAREN); - if (jj_2_888(2)) { + if (jj_2_890(2)) { list = JsonNameAndValue(); nvArgs.addAll(list); label_65: while (true) { - if (jj_2_887(2)) { + if (jj_2_889(2)) { ; } else { break label_65; @@ -8529,7 +8560,7 @@ final public SqlCall JsonObjectFunctionCall() throws ParseException { } else { ; } - if (jj_2_889(2)) { + if (jj_2_891(2)) { e = JsonConstructorNullClause(); otherArgs[0] = e; } else { @@ -8556,7 +8587,7 @@ final public SqlCall JsonObjectAggFunctionCall() throws ParseException { list = JsonNameAndValue(); args[0] = list.get(0); args[1] = list.get(1); - if (jj_2_890(2)) { + if (jj_2_892(2)) { e = JsonConstructorNullClause(); nullClause = (SqlJsonConstructorNullClause) ((SqlLiteral) e).getValue(); } else { @@ -8576,11 +8607,11 @@ final public SqlCall JsonArrayFunctionCall() throws ParseException { jj_consume_token(JSON_ARRAY); span = span(); jj_consume_token(LPAREN); - if (jj_2_892(2)) { + if (jj_2_894(2)) { AddExpression(elements, ExprContext.ACCEPT_NON_QUERY); label_66: while (true) { - if (jj_2_891(2)) { + if (jj_2_893(2)) { ; } else { break label_66; @@ -8591,7 +8622,7 @@ final public SqlCall JsonArrayFunctionCall() throws ParseException { } else { ; } - if (jj_2_893(2)) { + if (jj_2_895(2)) { e = JsonConstructorNullClause(); otherArgs[0] = e; } else { @@ -8624,12 +8655,12 @@ final public SqlCall JsonArrayAggFunctionCall() throws ParseException { jj_consume_token(LPAREN); e = Expression(ExprContext.ACCEPT_NON_QUERY); valueExpr = e; - if (jj_2_894(2)) { + if (jj_2_896(2)) { orderList = JsonArrayAggOrderByClause(); } else { orderList = null; } - if (jj_2_895(2)) { + if (jj_2_897(2)) { e = JsonConstructorNullClause(); nullClause = (SqlJsonConstructorNullClause) ((SqlLiteral) e).getValue(); } else { @@ -8638,7 +8669,7 @@ final public SqlCall JsonArrayAggFunctionCall() throws ParseException { jj_consume_token(RPAREN); aggCall = SqlStdOperatorTable.JSON_ARRAYAGG.with(nullClause) .createCall(span.end(this), valueExpr, orderList); - if (jj_2_896(2)) { + if (jj_2_898(2)) { e = withinGroup(aggCall); if (orderList != null) { {if (true) throw SqlUtil.newContextException(span.pos().plus(e.getParserPosition()), @@ -8671,9 +8702,9 @@ final public SqlCall ContainsSubstrFunctionCall() throws ParseException { AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); jj_consume_token(COMMA); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_897(2)) { + if (jj_2_899(2)) { jj_consume_token(RPAREN); - } else if (jj_2_898(2)) { + } else if (jj_2_900(2)) { jj_consume_token(COMMA); jj_consume_token(JSON_SCOPE); jj_consume_token(NAMED_ARGUMENT_ASSIGNMENT); @@ -8812,10 +8843,10 @@ final public SqlCall DateTruncFunctionCall() throws ParseException { jj_consume_token(LPAREN); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); jj_consume_token(COMMA); - if (jj_2_899(2)) { + if (jj_2_901(2)) { unit = TimeUnit(); args.add(unit); - } else if (jj_2_900(2)) { + } else if (jj_2_902(2)) { AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); } else { jj_consume_token(-1); @@ -8913,13 +8944,13 @@ final public SqlCall GroupByWindowingCall() throws ParseException { final Span s; final List args; final SqlOperator op; - if (jj_2_901(2)) { + if (jj_2_903(2)) { jj_consume_token(TUMBLE); op = SqlStdOperatorTable.TUMBLE_OLD; - } else if (jj_2_902(2)) { + } else if (jj_2_904(2)) { jj_consume_token(HOP); op = SqlStdOperatorTable.HOP_OLD; - } else if (jj_2_903(2)) { + } else if (jj_2_905(2)) { jj_consume_token(SESSION); op = SqlStdOperatorTable.SESSION_OLD; } else { @@ -8935,23 +8966,23 @@ final public SqlCall GroupByWindowingCall() throws ParseException { final public SqlCall MatchRecognizeFunctionCall() throws ParseException { final SqlCall func; final Span s; - if (jj_2_904(2)) { + if (jj_2_906(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_905(2)) { + } else if (jj_2_907(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_906(3)) { + } else if (jj_2_908(3)) { func = MatchRecognizeNavigationLogical(); - } else if (jj_2_907(2)) { + } else if (jj_2_909(2)) { func = MatchRecognizeNavigationPhysical(); - } else if (jj_2_908(2)) { + } else if (jj_2_910(2)) { func = MatchRecognizeCallWithModifier(); } else { jj_consume_token(-1); @@ -8965,10 +8996,10 @@ final public SqlCall MatchRecognizeCallWithModifier() throws ParseException { final Span s; final SqlOperator runningOp; final SqlNode func; - if (jj_2_909(2)) { + if (jj_2_911(2)) { jj_consume_token(RUNNING); runningOp = SqlStdOperatorTable.RUNNING; - } else if (jj_2_910(2)) { + } else if (jj_2_912(2)) { jj_consume_token(FINAL); runningOp = SqlStdOperatorTable.FINAL; } else { @@ -8988,19 +9019,19 @@ final public SqlCall MatchRecognizeNavigationLogical() throws ParseException { final SqlOperator runningOp; final List args = new ArrayList(); SqlNode e; - if (jj_2_911(2)) { + if (jj_2_913(2)) { jj_consume_token(RUNNING); runningOp = SqlStdOperatorTable.RUNNING; s.add(this); - } else if (jj_2_912(2)) { + } else if (jj_2_914(2)) { jj_consume_token(FINAL); runningOp = SqlStdOperatorTable.FINAL; s.add(this); } else { runningOp = null; } - if (jj_2_913(2)) { + if (jj_2_915(2)) { jj_consume_token(FIRST); funcOp = SqlStdOperatorTable.FIRST; - } else if (jj_2_914(2)) { + } else if (jj_2_916(2)) { jj_consume_token(LAST); funcOp = SqlStdOperatorTable.LAST; } else { @@ -9010,7 +9041,7 @@ final public SqlCall MatchRecognizeNavigationLogical() throws ParseException { s.add(this); jj_consume_token(LPAREN); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_915(2)) { + if (jj_2_917(2)) { jj_consume_token(COMMA); e = NumericLiteral(); args.add(e); @@ -9032,10 +9063,10 @@ final public SqlCall MatchRecognizeNavigationPhysical() throws ParseException { final SqlOperator funcOp; final List args = new ArrayList(); SqlNode e; - if (jj_2_916(2)) { + if (jj_2_918(2)) { jj_consume_token(PREV); funcOp = SqlStdOperatorTable.PREV; - } else if (jj_2_917(2)) { + } else if (jj_2_919(2)) { jj_consume_token(NEXT); funcOp = SqlStdOperatorTable.NEXT; } else { @@ -9045,7 +9076,7 @@ final public SqlCall MatchRecognizeNavigationPhysical() throws ParseException { s = span(); jj_consume_token(LPAREN); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_918(2)) { + if (jj_2_920(2)) { jj_consume_token(COMMA); e = NumericLiteral(); args.add(e); @@ -9087,12 +9118,12 @@ final public SqlCall withinGroup(SqlNode arg) throws ParseException { final public Pair NullTreatment() throws ParseException { final Span span; - if (jj_2_919(2)) { + if (jj_2_921(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_920(2)) { + } else if (jj_2_922(2)) { jj_consume_token(RESPECT); span = span(); jj_consume_token(NULLS); @@ -9132,7 +9163,7 @@ final public SqlNode NamedFunctionCall() throws ParseException { final SqlNode filter; final Span overSpan; final SqlNode over; - if (jj_2_921(2)) { + if (jj_2_923(2)) { call = StringAggFunctionCall(); } else { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { @@ -9142,7 +9173,7 @@ final public SqlNode NamedFunctionCall() throws ParseException { break; default: jj_la1[7] = jj_gen; - if (jj_2_922(2)) { + if (jj_2_924(2)) { call = NamedCall(); } else { jj_consume_token(-1); @@ -9150,23 +9181,23 @@ final public SqlNode NamedFunctionCall() throws ParseException { } } } - if (jj_2_923(2)) { + if (jj_2_925(2)) { call = nullTreatment(call); } else { ; } - if (jj_2_924(2)) { + if (jj_2_926(2)) { // decide between WITHIN DISTINCT and WITHIN GROUP call = withinDistinct(call); } else { ; } - if (jj_2_925(2)) { + if (jj_2_927(2)) { call = withinGroup(call); } else { ; } - if (jj_2_926(2)) { + if (jj_2_928(2)) { jj_consume_token(FILTER); filterSpan = span(); jj_consume_token(LPAREN); @@ -9178,12 +9209,12 @@ final public SqlNode NamedFunctionCall() throws ParseException { } else { ; } - if (jj_2_929(2)) { + if (jj_2_931(2)) { jj_consume_token(OVER); overSpan = span(); - if (jj_2_927(2)) { + if (jj_2_929(2)) { over = SimpleIdentifier(); - } else if (jj_2_928(2)) { + } else if (jj_2_930(2)) { over = WindowSpecification(); } else { jj_consume_token(-1); @@ -9203,7 +9234,7 @@ final public SqlCall NamedCall() throws ParseException { final Span s; final List args; SqlLiteral quantifier = null; - if (jj_2_930(2)) { + if (jj_2_932(2)) { jj_consume_token(SPECIFIC); funcType = SqlFunctionCategory.USER_DEFINED_SPECIFIC_FUNCTION; } else { @@ -9211,16 +9242,16 @@ final public SqlCall NamedCall() throws ParseException { } qualifiedName = FunctionName(); s = span(); - if (jj_2_931(2)) { + if (jj_2_933(2)) { jj_consume_token(LPAREN); jj_consume_token(STAR); args = ImmutableList.of(SqlIdentifier.star(getPos())); jj_consume_token(RPAREN); - } else if (jj_2_932(2)) { + } else if (jj_2_934(2)) { jj_consume_token(LPAREN); jj_consume_token(RPAREN); args = ImmutableList.of(); - } else if (jj_2_933(2)) { + } else if (jj_2_935(2)) { args = FunctionParameterList(ExprContext.ACCEPT_SUB_QUERY); quantifier = (SqlLiteral) args.get(0); args.remove(0); @@ -9243,7 +9274,7 @@ final public SqlNode StandardFloorCeilOptions(Span s, boolean floorFlag) throws final Span s1; jj_consume_token(LPAREN); AddExpression(args, ExprContext.ACCEPT_SUB_QUERY); - if (jj_2_934(2)) { + if (jj_2_936(2)) { jj_consume_token(TO); unit = TimeUnitOrName(); args.add(unit); @@ -9253,12 +9284,12 @@ final public SqlNode StandardFloorCeilOptions(Span s, boolean floorFlag) throws jj_consume_token(RPAREN); SqlOperator op = SqlStdOperatorTable.floorCeil(floorFlag, this.conformance); function = op.createCall(s.end(this), args); - if (jj_2_937(2)) { + if (jj_2_939(2)) { jj_consume_token(OVER); s1 = span(); - if (jj_2_935(2)) { + if (jj_2_937(2)) { e = SimpleIdentifier(); - } else if (jj_2_936(2)) { + } else if (jj_2_938(2)) { e = WindowSpecification(); } else { jj_consume_token(-1); @@ -9286,9 +9317,9 @@ final public String NonReservedJdbcFunctionName() throws ParseException { */ final public SqlIdentifier FunctionName() throws ParseException { SqlIdentifier qualifiedName; - if (jj_2_938(2)) { + if (jj_2_940(2)) { qualifiedName = CompoundIdentifier(); - } else if (jj_2_939(2)) { + } else if (jj_2_941(2)) { qualifiedName = ReservedFunctionName(); } else { jj_consume_token(-1); @@ -9302,135 +9333,135 @@ final public SqlIdentifier FunctionName() throws ParseException { * Parses a reserved word which is used as the name of a function. */ final public SqlIdentifier ReservedFunctionName() throws ParseException { - if (jj_2_940(2)) { + if (jj_2_942(2)) { jj_consume_token(ABS); - } else if (jj_2_941(2)) { + } else if (jj_2_943(2)) { jj_consume_token(AVG); - } else if (jj_2_942(2)) { + } else if (jj_2_944(2)) { jj_consume_token(CARDINALITY); - } else if (jj_2_943(2)) { + } else if (jj_2_945(2)) { jj_consume_token(CEILING); - } else if (jj_2_944(2)) { + } else if (jj_2_946(2)) { jj_consume_token(CHAR); - } else if (jj_2_945(2)) { + } else if (jj_2_947(2)) { jj_consume_token(CHAR_LENGTH); - } else if (jj_2_946(2)) { + } else if (jj_2_948(2)) { jj_consume_token(CHARACTER_LENGTH); - } else if (jj_2_947(2)) { + } else if (jj_2_949(2)) { jj_consume_token(COALESCE); - } else if (jj_2_948(2)) { + } else if (jj_2_950(2)) { jj_consume_token(COLLECT); - } else if (jj_2_949(2)) { + } else if (jj_2_951(2)) { jj_consume_token(COVAR_POP); - } else if (jj_2_950(2)) { + } else if (jj_2_952(2)) { jj_consume_token(COVAR_SAMP); - } else if (jj_2_951(2)) { + } else if (jj_2_953(2)) { jj_consume_token(CUME_DIST); - } else if (jj_2_952(2)) { + } else if (jj_2_954(2)) { jj_consume_token(COUNT); - } else if (jj_2_953(2)) { + } else if (jj_2_955(2)) { jj_consume_token(CURRENT_DATE); - } else if (jj_2_954(2)) { + } else if (jj_2_956(2)) { jj_consume_token(CURRENT_TIME); - } else if (jj_2_955(2)) { + } else if (jj_2_957(2)) { jj_consume_token(CURRENT_TIMESTAMP); - } else if (jj_2_956(2)) { + } else if (jj_2_958(2)) { jj_consume_token(DENSE_RANK); - } else if (jj_2_957(2)) { + } else if (jj_2_959(2)) { jj_consume_token(ELEMENT); - } else if (jj_2_958(2)) { + } else if (jj_2_960(2)) { jj_consume_token(EVERY); - } else if (jj_2_959(2)) { + } else if (jj_2_961(2)) { jj_consume_token(EXP); - } else if (jj_2_960(2)) { + } else if (jj_2_962(2)) { jj_consume_token(FIRST_VALUE); - } else if (jj_2_961(2)) { + } else if (jj_2_963(2)) { jj_consume_token(FLOOR); - } else if (jj_2_962(2)) { + } else if (jj_2_964(2)) { jj_consume_token(FUSION); - } else if (jj_2_963(2)) { + } else if (jj_2_965(2)) { jj_consume_token(INTERSECTION); - } else if (jj_2_964(2)) { + } else if (jj_2_966(2)) { jj_consume_token(GROUPING); - } else if (jj_2_965(2)) { + } else if (jj_2_967(2)) { jj_consume_token(HOUR); - } else if (jj_2_966(2)) { + } else if (jj_2_968(2)) { jj_consume_token(LAG); - } else if (jj_2_967(2)) { + } else if (jj_2_969(2)) { jj_consume_token(LEAD); - } else if (jj_2_968(2)) { + } else if (jj_2_970(2)) { jj_consume_token(LEFT); - } else if (jj_2_969(2)) { + } else if (jj_2_971(2)) { jj_consume_token(LAST_VALUE); - } else if (jj_2_970(2)) { + } else if (jj_2_972(2)) { jj_consume_token(LN); - } else if (jj_2_971(2)) { + } else if (jj_2_973(2)) { jj_consume_token(LOCALTIME); - } else if (jj_2_972(2)) { + } else if (jj_2_974(2)) { jj_consume_token(LOCALTIMESTAMP); - } else if (jj_2_973(2)) { + } else if (jj_2_975(2)) { jj_consume_token(LOWER); - } else if (jj_2_974(2)) { + } else if (jj_2_976(2)) { jj_consume_token(MAX); - } else if (jj_2_975(2)) { + } else if (jj_2_977(2)) { jj_consume_token(MIN); - } else if (jj_2_976(2)) { + } else if (jj_2_978(2)) { jj_consume_token(MINUTE); - } else if (jj_2_977(2)) { + } else if (jj_2_979(2)) { jj_consume_token(MOD); - } else if (jj_2_978(2)) { + } else if (jj_2_980(2)) { jj_consume_token(MONTH); - } else if (jj_2_979(2)) { + } else if (jj_2_981(2)) { jj_consume_token(NTH_VALUE); - } else if (jj_2_980(2)) { + } else if (jj_2_982(2)) { jj_consume_token(NTILE); - } else if (jj_2_981(2)) { + } else if (jj_2_983(2)) { jj_consume_token(NULLIF); - } else if (jj_2_982(2)) { + } else if (jj_2_984(2)) { jj_consume_token(OCTET_LENGTH); - } else if (jj_2_983(2)) { + } else if (jj_2_985(2)) { jj_consume_token(PERCENTILE_CONT); - } else if (jj_2_984(2)) { + } else if (jj_2_986(2)) { jj_consume_token(PERCENTILE_DISC); - } else if (jj_2_985(2)) { + } else if (jj_2_987(2)) { jj_consume_token(PERCENT_RANK); - } else if (jj_2_986(2)) { + } else if (jj_2_988(2)) { jj_consume_token(POWER); - } else if (jj_2_987(2)) { + } else if (jj_2_989(2)) { jj_consume_token(RANK); - } else if (jj_2_988(2)) { + } else if (jj_2_990(2)) { jj_consume_token(REGR_COUNT); - } else if (jj_2_989(2)) { + } else if (jj_2_991(2)) { jj_consume_token(REGR_SXX); - } else if (jj_2_990(2)) { + } else if (jj_2_992(2)) { jj_consume_token(REGR_SYY); - } else if (jj_2_991(2)) { + } else if (jj_2_993(2)) { jj_consume_token(RIGHT); - } else if (jj_2_992(2)) { + } else if (jj_2_994(2)) { jj_consume_token(ROW_NUMBER); - } else if (jj_2_993(2)) { + } else if (jj_2_995(2)) { jj_consume_token(SECOND); - } else if (jj_2_994(2)) { + } else if (jj_2_996(2)) { jj_consume_token(SOME); - } else if (jj_2_995(2)) { + } else if (jj_2_997(2)) { jj_consume_token(SQRT); - } else if (jj_2_996(2)) { + } else if (jj_2_998(2)) { jj_consume_token(STDDEV_POP); - } else if (jj_2_997(2)) { + } else if (jj_2_999(2)) { jj_consume_token(STDDEV_SAMP); - } else if (jj_2_998(2)) { + } else if (jj_2_1000(2)) { jj_consume_token(SUM); - } else if (jj_2_999(2)) { + } else if (jj_2_1001(2)) { jj_consume_token(UPPER); - } else if (jj_2_1000(2)) { + } else if (jj_2_1002(2)) { jj_consume_token(TRUNCATE); - } else if (jj_2_1001(2)) { + } else if (jj_2_1003(2)) { jj_consume_token(USER); - } else if (jj_2_1002(2)) { + } else if (jj_2_1004(2)) { jj_consume_token(VAR_POP); - } else if (jj_2_1003(2)) { + } else if (jj_2_1005(2)) { jj_consume_token(VAR_SAMP); - } else if (jj_2_1004(2)) { + } else if (jj_2_1006(2)) { jj_consume_token(YEAR); } else { jj_consume_token(-1); @@ -9441,33 +9472,33 @@ final public SqlIdentifier ReservedFunctionName() throws ParseException { } final public SqlIdentifier ContextVariable() throws ParseException { - if (jj_2_1005(2)) { + if (jj_2_1007(2)) { jj_consume_token(CURRENT_CATALOG); - } else if (jj_2_1006(2)) { + } else if (jj_2_1008(2)) { jj_consume_token(CURRENT_DATE); - } else if (jj_2_1007(2)) { + } else if (jj_2_1009(2)) { jj_consume_token(CURRENT_DEFAULT_TRANSFORM_GROUP); - } else if (jj_2_1008(2)) { + } else if (jj_2_1010(2)) { jj_consume_token(CURRENT_PATH); - } else if (jj_2_1009(2)) { + } else if (jj_2_1011(2)) { jj_consume_token(CURRENT_ROLE); - } else if (jj_2_1010(2)) { + } else if (jj_2_1012(2)) { jj_consume_token(CURRENT_SCHEMA); - } else if (jj_2_1011(2)) { + } else if (jj_2_1013(2)) { jj_consume_token(CURRENT_TIME); - } else if (jj_2_1012(2)) { + } else if (jj_2_1014(2)) { jj_consume_token(CURRENT_TIMESTAMP); - } else if (jj_2_1013(2)) { + } else if (jj_2_1015(2)) { jj_consume_token(CURRENT_USER); - } else if (jj_2_1014(2)) { + } else if (jj_2_1016(2)) { jj_consume_token(LOCALTIME); - } else if (jj_2_1015(2)) { + } else if (jj_2_1017(2)) { jj_consume_token(LOCALTIMESTAMP); - } else if (jj_2_1016(2)) { + } else if (jj_2_1018(2)) { jj_consume_token(SESSION_USER); - } else if (jj_2_1017(2)) { + } else if (jj_2_1019(2)) { jj_consume_token(SYSTEM_USER); - } else if (jj_2_1018(2)) { + } else if (jj_2_1020(2)) { jj_consume_token(USER); } else { jj_consume_token(-1); @@ -9538,11 +9569,11 @@ final public SqlNode JdbcFunctionCall() throws ParseException { break; default: jj_la1[9] = jj_gen; - if (jj_2_1029(3)) { + if (jj_2_1031(3)) { call = TimestampDiffFunctionCall(); name = call.getOperator().getName(); args = new SqlNodeList(call.getOperandList(), getPos()); - } else if (jj_2_1030(2)) { + } else if (jj_2_1032(2)) { jj_consume_token(CONVERT); name = unquotedIdentifier(); jj_consume_token(LPAREN); @@ -9553,19 +9584,19 @@ final public SqlNode JdbcFunctionCall() throws ParseException { tl = JdbcOdbcDataType(); args.add(tl); jj_consume_token(RPAREN); - } else if (jj_2_1031(2)) { + } else if (jj_2_1033(2)) { switch ((jj_ntk==-1)?jj_ntk():jj_ntk) { case INSERT: case LEFT: case RIGHT: case TRUNCATE: - if (jj_2_1019(2)) { + if (jj_2_1021(2)) { jj_consume_token(INSERT); - } else if (jj_2_1020(2)) { + } else if (jj_2_1022(2)) { jj_consume_token(LEFT); - } else if (jj_2_1021(2)) { + } else if (jj_2_1023(2)) { jj_consume_token(RIGHT); - } else if (jj_2_1022(2)) { + } else if (jj_2_1024(2)) { jj_consume_token(TRUNCATE); } else { jj_consume_token(-1); @@ -9575,32 +9606,32 @@ final public SqlNode JdbcFunctionCall() throws ParseException { break; default: jj_la1[8] = jj_gen; - if (jj_2_1023(2)) { + if (jj_2_1025(2)) { // For cases like {fn power(1,2)} and {fn lower('a')} id = ReservedFunctionName(); name = id.getSimple(); - } else if (jj_2_1024(2)) { + } else if (jj_2_1026(2)) { // For cases like {fn substring('foo', 1,2)} name = NonReservedJdbcFunctionName(); - } else if (jj_2_1025(2)) { + } else if (jj_2_1027(2)) { name = Identifier(); } else { jj_consume_token(-1); throw new ParseException(); } } - if (jj_2_1026(2)) { + if (jj_2_1028(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_1027(2)) { + } else if (jj_2_1029(2)) { jj_consume_token(LPAREN); jj_consume_token(RPAREN); args = SqlNodeList.EMPTY; - } else if (jj_2_1028(2)) { + } else if (jj_2_1030(2)) { args = ParenthesizedQueryOrCommaList(ExprContext.ACCEPT_SUB_QUERY); } else { jj_consume_token(-1); @@ -9621,32 +9652,32 @@ final public SqlNode JdbcFunctionCall() throws ParseException { * Parses a binary query operator like UNION. */ final public SqlBinaryOperator BinaryQueryOperator() throws ParseException { - if (jj_2_1040(2)) { + if (jj_2_1042(2)) { jj_consume_token(UNION); - if (jj_2_1032(2)) { + if (jj_2_1034(2)) { jj_consume_token(ALL); {if (true) return SqlStdOperatorTable.UNION_ALL;} - } else if (jj_2_1033(2)) { + } else if (jj_2_1035(2)) { jj_consume_token(DISTINCT); {if (true) return SqlStdOperatorTable.UNION;} } else { {if (true) return SqlStdOperatorTable.UNION;} } - } else if (jj_2_1041(2)) { + } else if (jj_2_1043(2)) { jj_consume_token(INTERSECT); - if (jj_2_1034(2)) { + if (jj_2_1036(2)) { jj_consume_token(ALL); {if (true) return SqlStdOperatorTable.INTERSECT_ALL;} - } else if (jj_2_1035(2)) { + } else if (jj_2_1037(2)) { jj_consume_token(DISTINCT); {if (true) return SqlStdOperatorTable.INTERSECT;} } else { {if (true) return SqlStdOperatorTable.INTERSECT;} } - } else if (jj_2_1042(2)) { - if (jj_2_1036(2)) { + } else if (jj_2_1044(2)) { + if (jj_2_1038(2)) { jj_consume_token(EXCEPT); - } else if (jj_2_1037(2)) { + } else if (jj_2_1039(2)) { jj_consume_token(SET_MINUS); if (!this.conformance.isMinusAllowed()) { {if (true) throw SqlUtil.newContextException(getPos(), RESOURCE.minusNotAllowed());} @@ -9655,10 +9686,10 @@ final public SqlBinaryOperator BinaryQueryOperator() throws ParseException { jj_consume_token(-1); throw new ParseException(); } - if (jj_2_1038(2)) { + if (jj_2_1040(2)) { jj_consume_token(ALL); {if (true) return SqlStdOperatorTable.EXCEPT_ALL;} - } else if (jj_2_1039(2)) { + } else if (jj_2_1041(2)) { jj_consume_token(DISTINCT); {if (true) return SqlStdOperatorTable.EXCEPT;} } else { @@ -9676,12 +9707,12 @@ final public SqlBinaryOperator BinaryQueryOperator() throws ParseException { */ final public SqlBinaryOperator BinaryMultisetOperator() throws ParseException { jj_consume_token(MULTISET); - if (jj_2_1052(2)) { + if (jj_2_1054(2)) { jj_consume_token(UNION); - if (jj_2_1045(2)) { - if (jj_2_1043(2)) { + if (jj_2_1047(2)) { + if (jj_2_1045(2)) { jj_consume_token(ALL); - } else if (jj_2_1044(2)) { + } else if (jj_2_1046(2)) { jj_consume_token(DISTINCT); {if (true) return SqlStdOperatorTable.MULTISET_UNION_DISTINCT;} } else { @@ -9692,12 +9723,12 @@ final public SqlBinaryOperator BinaryMultisetOperator() throws ParseException { ; } {if (true) return SqlStdOperatorTable.MULTISET_UNION;} - } else if (jj_2_1053(2)) { + } else if (jj_2_1055(2)) { jj_consume_token(INTERSECT); - if (jj_2_1048(2)) { - if (jj_2_1046(2)) { + if (jj_2_1050(2)) { + if (jj_2_1048(2)) { jj_consume_token(ALL); - } else if (jj_2_1047(2)) { + } else if (jj_2_1049(2)) { jj_consume_token(DISTINCT); {if (true) return SqlStdOperatorTable.MULTISET_INTERSECT_DISTINCT;} } else { @@ -9708,12 +9739,12 @@ final public SqlBinaryOperator BinaryMultisetOperator() throws ParseException { ; } {if (true) return SqlStdOperatorTable.MULTISET_INTERSECT;} - } else if (jj_2_1054(2)) { + } else if (jj_2_1056(2)) { jj_consume_token(EXCEPT); - if (jj_2_1051(2)) { - if (jj_2_1049(2)) { + if (jj_2_1053(2)) { + if (jj_2_1051(2)) { jj_consume_token(ALL); - } else if (jj_2_1050(2)) { + } else if (jj_2_1052(2)) { jj_consume_token(DISTINCT); {if (true) return SqlStdOperatorTable.MULTISET_EXCEPT_DISTINCT;} } else { @@ -9736,105 +9767,105 @@ final public SqlBinaryOperator BinaryMultisetOperator() throws ParseException { */ final public SqlBinaryOperator BinaryRowOperator() throws ParseException { SqlBinaryOperator op; - if (jj_2_1055(2)) { + if (jj_2_1057(2)) { jj_consume_token(EQ); {if (true) return SqlStdOperatorTable.EQUALS;} - } else if (jj_2_1056(2)) { + } else if (jj_2_1058(2)) { jj_consume_token(GT); {if (true) return SqlStdOperatorTable.GREATER_THAN;} - } else if (jj_2_1057(2)) { + } else if (jj_2_1059(2)) { jj_consume_token(LT); {if (true) return SqlStdOperatorTable.LESS_THAN;} - } else if (jj_2_1058(2)) { + } else if (jj_2_1060(2)) { jj_consume_token(LE); {if (true) return SqlStdOperatorTable.LESS_THAN_OR_EQUAL;} - } else if (jj_2_1059(2)) { + } else if (jj_2_1061(2)) { jj_consume_token(GE); {if (true) return SqlStdOperatorTable.GREATER_THAN_OR_EQUAL;} - } else if (jj_2_1060(2)) { + } else if (jj_2_1062(2)) { jj_consume_token(NE); {if (true) return SqlStdOperatorTable.NOT_EQUALS;} - } else if (jj_2_1061(2)) { + } else if (jj_2_1063(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_1062(2)) { + } else if (jj_2_1064(2)) { jj_consume_token(PLUS); {if (true) return SqlStdOperatorTable.PLUS;} - } else if (jj_2_1063(2)) { + } else if (jj_2_1065(2)) { jj_consume_token(MINUS); {if (true) return SqlStdOperatorTable.MINUS;} - } else if (jj_2_1064(2)) { + } else if (jj_2_1066(2)) { jj_consume_token(STAR); {if (true) return SqlStdOperatorTable.MULTIPLY;} - } else if (jj_2_1065(2)) { + } else if (jj_2_1067(2)) { jj_consume_token(SLASH); {if (true) return SqlStdOperatorTable.DIVIDE;} - } else if (jj_2_1066(2)) { + } else if (jj_2_1068(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_1067(2)) { + } else if (jj_2_1069(2)) { jj_consume_token(CONCAT); {if (true) return SqlStdOperatorTable.CONCAT;} - } else if (jj_2_1068(2)) { + } else if (jj_2_1070(2)) { jj_consume_token(AND); {if (true) return SqlStdOperatorTable.AND;} - } else if (jj_2_1069(2)) { + } else if (jj_2_1071(2)) { jj_consume_token(OR); {if (true) return SqlStdOperatorTable.OR;} - } else if (jj_2_1070(2)) { + } else if (jj_2_1072(2)) { jj_consume_token(IS); jj_consume_token(DISTINCT); jj_consume_token(FROM); {if (true) return SqlStdOperatorTable.IS_DISTINCT_FROM;} - } else if (jj_2_1071(2)) { + } else if (jj_2_1073(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_1072(2)) { + } else if (jj_2_1074(2)) { jj_consume_token(MEMBER); jj_consume_token(OF); {if (true) return SqlStdOperatorTable.MEMBER_OF;} - } else if (jj_2_1073(2)) { + } else if (jj_2_1075(2)) { jj_consume_token(SUBMULTISET); jj_consume_token(OF); {if (true) return SqlStdOperatorTable.SUBMULTISET_OF;} - } else if (jj_2_1074(2)) { + } else if (jj_2_1076(2)) { jj_consume_token(NOT); jj_consume_token(SUBMULTISET); jj_consume_token(OF); {if (true) return SqlStdOperatorTable.NOT_SUBMULTISET_OF;} - } else if (jj_2_1075(2)) { + } else if (jj_2_1077(2)) { jj_consume_token(CONTAINS); {if (true) return SqlStdOperatorTable.CONTAINS;} - } else if (jj_2_1076(2)) { + } else if (jj_2_1078(2)) { jj_consume_token(OVERLAPS); {if (true) return SqlStdOperatorTable.OVERLAPS;} - } else if (jj_2_1077(2)) { + } else if (jj_2_1079(2)) { jj_consume_token(EQUALS); {if (true) return SqlStdOperatorTable.PERIOD_EQUALS;} - } else if (jj_2_1078(2)) { + } else if (jj_2_1080(2)) { jj_consume_token(PRECEDES); {if (true) return SqlStdOperatorTable.PRECEDES;} - } else if (jj_2_1079(2)) { + } else if (jj_2_1081(2)) { jj_consume_token(SUCCEEDS); {if (true) return SqlStdOperatorTable.SUCCEEDS;} - } else if (jj_2_1080(2)) { + } else if (jj_2_1082(2)) { jj_consume_token(IMMEDIATELY); jj_consume_token(PRECEDES); {if (true) return SqlStdOperatorTable.IMMEDIATELY_PRECEDES;} - } else if (jj_2_1081(2)) { + } else if (jj_2_1083(2)) { jj_consume_token(IMMEDIATELY); jj_consume_token(SUCCEEDS); {if (true) return SqlStdOperatorTable.IMMEDIATELY_SUCCEEDS;} - } else if (jj_2_1082(2)) { + } else if (jj_2_1084(2)) { op = BinaryMultisetOperator(); {if (true) return op;} } else { @@ -9848,19 +9879,19 @@ final public SqlBinaryOperator BinaryRowOperator() throws ParseException { * Parses a prefix row operator like NOT. */ final public SqlPrefixOperator PrefixRowOperator() throws ParseException { - if (jj_2_1083(2)) { + if (jj_2_1085(2)) { jj_consume_token(PLUS); {if (true) return SqlStdOperatorTable.UNARY_PLUS;} - } else if (jj_2_1084(2)) { + } else if (jj_2_1086(2)) { jj_consume_token(MINUS); {if (true) return SqlStdOperatorTable.UNARY_MINUS;} - } else if (jj_2_1085(2)) { + } else if (jj_2_1087(2)) { jj_consume_token(NOT); {if (true) return SqlStdOperatorTable.NOT;} - } else if (jj_2_1086(2)) { + } else if (jj_2_1088(2)) { jj_consume_token(EXISTS); {if (true) return SqlStdOperatorTable.EXISTS;} - } else if (jj_2_1087(2)) { + } else if (jj_2_1089(2)) { jj_consume_token(UNIQUE); {if (true) return SqlStdOperatorTable.UNIQUE;} } else { @@ -9874,89 +9905,89 @@ final public SqlPrefixOperator PrefixRowOperator() throws ParseException { * Parses a postfix row operator like IS NOT NULL. */ final public SqlPostfixOperator PostfixRowOperator() throws ParseException { - if (jj_2_1112(2)) { + if (jj_2_1114(2)) { jj_consume_token(IS); - if (jj_2_1109(2)) { + if (jj_2_1111(2)) { jj_consume_token(A); jj_consume_token(SET); {if (true) return SqlStdOperatorTable.IS_A_SET;} - } else if (jj_2_1110(2)) { + } else if (jj_2_1112(2)) { jj_consume_token(NOT); - if (jj_2_1088(2)) { + if (jj_2_1090(2)) { jj_consume_token(NULL); {if (true) return SqlStdOperatorTable.IS_NOT_NULL;} - } else if (jj_2_1089(2)) { + } else if (jj_2_1091(2)) { jj_consume_token(TRUE); {if (true) return SqlStdOperatorTable.IS_NOT_TRUE;} - } else if (jj_2_1090(2)) { + } else if (jj_2_1092(2)) { jj_consume_token(FALSE); {if (true) return SqlStdOperatorTable.IS_NOT_FALSE;} - } else if (jj_2_1091(2)) { + } else if (jj_2_1093(2)) { jj_consume_token(UNKNOWN); {if (true) return SqlStdOperatorTable.IS_NOT_UNKNOWN;} - } else if (jj_2_1092(2)) { + } else if (jj_2_1094(2)) { jj_consume_token(A); jj_consume_token(SET); {if (true) return SqlStdOperatorTable.IS_NOT_A_SET;} - } else if (jj_2_1093(2)) { + } else if (jj_2_1095(2)) { jj_consume_token(EMPTY); {if (true) return SqlStdOperatorTable.IS_NOT_EMPTY;} - } else if (jj_2_1094(2)) { + } else if (jj_2_1096(2)) { jj_consume_token(JSON); jj_consume_token(VALUE); {if (true) return SqlStdOperatorTable.IS_NOT_JSON_VALUE;} - } else if (jj_2_1095(2)) { + } else if (jj_2_1097(2)) { jj_consume_token(JSON); jj_consume_token(OBJECT); {if (true) return SqlStdOperatorTable.IS_NOT_JSON_OBJECT;} - } else if (jj_2_1096(2)) { + } else if (jj_2_1098(2)) { jj_consume_token(JSON); jj_consume_token(ARRAY); {if (true) return SqlStdOperatorTable.IS_NOT_JSON_ARRAY;} - } else if (jj_2_1097(2)) { + } else if (jj_2_1099(2)) { jj_consume_token(JSON); jj_consume_token(SCALAR); {if (true) return SqlStdOperatorTable.IS_NOT_JSON_SCALAR;} - } else if (jj_2_1098(2)) { + } else if (jj_2_1100(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_1111(2)) { - if (jj_2_1099(2)) { + } else if (jj_2_1113(2)) { + if (jj_2_1101(2)) { jj_consume_token(NULL); {if (true) return SqlStdOperatorTable.IS_NULL;} - } else if (jj_2_1100(2)) { + } else if (jj_2_1102(2)) { jj_consume_token(TRUE); {if (true) return SqlStdOperatorTable.IS_TRUE;} - } else if (jj_2_1101(2)) { + } else if (jj_2_1103(2)) { jj_consume_token(FALSE); {if (true) return SqlStdOperatorTable.IS_FALSE;} - } else if (jj_2_1102(2)) { + } else if (jj_2_1104(2)) { jj_consume_token(UNKNOWN); {if (true) return SqlStdOperatorTable.IS_UNKNOWN;} - } else if (jj_2_1103(2)) { + } else if (jj_2_1105(2)) { jj_consume_token(EMPTY); {if (true) return SqlStdOperatorTable.IS_EMPTY;} - } else if (jj_2_1104(2)) { + } else if (jj_2_1106(2)) { jj_consume_token(JSON); jj_consume_token(VALUE); {if (true) return SqlStdOperatorTable.IS_JSON_VALUE;} - } else if (jj_2_1105(2)) { + } else if (jj_2_1107(2)) { jj_consume_token(JSON); jj_consume_token(OBJECT); {if (true) return SqlStdOperatorTable.IS_JSON_OBJECT;} - } else if (jj_2_1106(2)) { + } else if (jj_2_1108(2)) { jj_consume_token(JSON); jj_consume_token(ARRAY); {if (true) return SqlStdOperatorTable.IS_JSON_ARRAY;} - } else if (jj_2_1107(2)) { + } else if (jj_2_1109(2)) { jj_consume_token(JSON); jj_consume_token(SCALAR); {if (true) return SqlStdOperatorTable.IS_JSON_SCALAR;} - } else if (jj_2_1108(2)) { + } else if (jj_2_1110(2)) { jj_consume_token(JSON); {if (true) return SqlStdOperatorTable.IS_JSON_VALUE;} } else { @@ -9967,7 +9998,7 @@ final public SqlPostfixOperator PostfixRowOperator() throws ParseException { jj_consume_token(-1); throw new ParseException(); } - } else if (jj_2_1113(2)) { + } else if (jj_2_1115(2)) { jj_consume_token(FORMAT); JsonRepresentation(); {if (true) return SqlStdOperatorTable.JSON_VALUE_EXPRESSION;} @@ -9993,11 +10024,11 @@ final public SqlPostfixOperator PostfixRowOperator() throws ParseException { * @see Glossary#SQL2003 SQL:2003 Part 2 Section 5.2 */ final public String NonReservedKeyWord() throws ParseException { - if (jj_2_1114(2)) { + if (jj_2_1116(2)) { NonReservedKeyWord0of3(); - } else if (jj_2_1115(2)) { + } else if (jj_2_1117(2)) { NonReservedKeyWord1of3(); - } else if (jj_2_1116(2)) { + } else if (jj_2_1118(2)) { NonReservedKeyWord2of3(); } else { jj_consume_token(-1); @@ -10009,445 +10040,445 @@ final public String NonReservedKeyWord() throws ParseException { /** @see #NonReservedKeyWord */ final public void NonReservedKeyWord0of3() throws ParseException { - if (jj_2_1117(2)) { + if (jj_2_1119(2)) { jj_consume_token(A); - } else if (jj_2_1118(2)) { + } else if (jj_2_1120(2)) { jj_consume_token(ACTION); - } else if (jj_2_1119(2)) { + } else if (jj_2_1121(2)) { jj_consume_token(ADMIN); - } else if (jj_2_1120(2)) { + } else if (jj_2_1122(2)) { jj_consume_token(APPLY); - } else if (jj_2_1121(2)) { + } else if (jj_2_1123(2)) { jj_consume_token(ASC); - } else if (jj_2_1122(2)) { + } else if (jj_2_1124(2)) { jj_consume_token(ATTRIBUTE); - } else if (jj_2_1123(2)) { + } else if (jj_2_1125(2)) { jj_consume_token(BERNOULLI); - } else if (jj_2_1124(2)) { + } else if (jj_2_1126(2)) { jj_consume_token(CASCADE); - } else if (jj_2_1125(2)) { + } else if (jj_2_1127(2)) { jj_consume_token(CENTURY); - } else if (jj_2_1126(2)) { + } else if (jj_2_1128(2)) { jj_consume_token(CHARACTERS); - } else if (jj_2_1127(2)) { + } else if (jj_2_1129(2)) { jj_consume_token(CHARACTER_SET_SCHEMA); - } else if (jj_2_1128(2)) { + } else if (jj_2_1130(2)) { jj_consume_token(COLLATION); - } else if (jj_2_1129(2)) { + } else if (jj_2_1131(2)) { jj_consume_token(COLLATION_SCHEMA); - } else if (jj_2_1130(2)) { + } else if (jj_2_1132(2)) { jj_consume_token(COMMAND_FUNCTION_CODE); - } else if (jj_2_1131(2)) { + } else if (jj_2_1133(2)) { jj_consume_token(CONDITION_NUMBER); - } else if (jj_2_1132(2)) { + } else if (jj_2_1134(2)) { jj_consume_token(CONSTRAINT_CATALOG); - } else if (jj_2_1133(2)) { + } else if (jj_2_1135(2)) { jj_consume_token(CONSTRAINT_SCHEMA); - } else if (jj_2_1134(2)) { + } else if (jj_2_1136(2)) { jj_consume_token(CONTINUE); - } else if (jj_2_1135(2)) { + } else if (jj_2_1137(2)) { jj_consume_token(DATABASE); - } else if (jj_2_1136(2)) { + } else if (jj_2_1138(2)) { jj_consume_token(DATETIME_DIFF); - } else if (jj_2_1137(2)) { + } else if (jj_2_1139(2)) { jj_consume_token(DATETIME_TRUNC); - } else if (jj_2_1138(2)) { + } else if (jj_2_1140(2)) { jj_consume_token(DAYS); - } else if (jj_2_1139(2)) { + } else if (jj_2_1141(2)) { jj_consume_token(DEFERRABLE); - } else if (jj_2_1140(2)) { + } else if (jj_2_1142(2)) { jj_consume_token(DEFINER); - } else if (jj_2_1141(2)) { + } else if (jj_2_1143(2)) { jj_consume_token(DERIVED); - } else if (jj_2_1142(2)) { + } else if (jj_2_1144(2)) { jj_consume_token(DESCRIPTOR); - } else if (jj_2_1143(2)) { + } else if (jj_2_1145(2)) { jj_consume_token(DOMAIN); - } else if (jj_2_1144(2)) { + } else if (jj_2_1146(2)) { jj_consume_token(DOT_FORMAT); - } else if (jj_2_1145(2)) { + } else if (jj_2_1147(2)) { jj_consume_token(ENCODING); - } else if (jj_2_1146(2)) { + } else if (jj_2_1148(2)) { jj_consume_token(EXCEPTION); - } else if (jj_2_1147(2)) { + } else if (jj_2_1149(2)) { jj_consume_token(FINAL); - } else if (jj_2_1148(2)) { + } else if (jj_2_1150(2)) { jj_consume_token(FORMAT); - } else if (jj_2_1149(2)) { + } else if (jj_2_1151(2)) { jj_consume_token(FRAC_SECOND); - } else if (jj_2_1150(2)) { + } else if (jj_2_1152(2)) { jj_consume_token(GENERATED); - } else if (jj_2_1151(2)) { + } else if (jj_2_1153(2)) { jj_consume_token(GOTO); - } else if (jj_2_1152(2)) { + } else if (jj_2_1154(2)) { jj_consume_token(HIERARCHY); - } else if (jj_2_1153(2)) { + } else if (jj_2_1155(2)) { jj_consume_token(IGNORE); - } else if (jj_2_1154(2)) { + } else if (jj_2_1156(2)) { jj_consume_token(IMMEDIATELY); - } else if (jj_2_1155(2)) { + } else if (jj_2_1157(2)) { jj_consume_token(INCLUDING); - } else if (jj_2_1156(2)) { + } else if (jj_2_1158(2)) { jj_consume_token(INPUT); - } else if (jj_2_1157(2)) { + } else if (jj_2_1159(2)) { jj_consume_token(INVOKER); - } else if (jj_2_1158(2)) { + } else if (jj_2_1160(2)) { jj_consume_token(ISOYEAR); - } else if (jj_2_1159(2)) { + } else if (jj_2_1161(2)) { jj_consume_token(K); - } else if (jj_2_1160(2)) { + } else if (jj_2_1162(2)) { jj_consume_token(KEY_TYPE); - } else if (jj_2_1161(2)) { + } else if (jj_2_1163(2)) { jj_consume_token(LENGTH); - } else if (jj_2_1162(2)) { + } else if (jj_2_1164(2)) { jj_consume_token(LOCATOR); - } else if (jj_2_1163(2)) { + } else if (jj_2_1165(2)) { jj_consume_token(MATCHED); - } else if (jj_2_1164(2)) { + } else if (jj_2_1166(2)) { jj_consume_token(MESSAGE_OCTET_LENGTH); - } else if (jj_2_1165(2)) { + } else if (jj_2_1167(2)) { jj_consume_token(MILLENNIUM); - } else if (jj_2_1166(2)) { + } else if (jj_2_1168(2)) { jj_consume_token(MINVALUE); - } else if (jj_2_1167(2)) { + } else if (jj_2_1169(2)) { jj_consume_token(MUMPS); - } else if (jj_2_1168(2)) { + } else if (jj_2_1170(2)) { jj_consume_token(NANOSECOND); - } else if (jj_2_1169(2)) { + } else if (jj_2_1171(2)) { jj_consume_token(NULLABLE); - } else if (jj_2_1170(2)) { + } else if (jj_2_1172(2)) { jj_consume_token(OBJECT); - } else if (jj_2_1171(2)) { + } else if (jj_2_1173(2)) { jj_consume_token(OPTIONS); - } else if (jj_2_1172(2)) { + } else if (jj_2_1174(2)) { jj_consume_token(OTHERS); - } else if (jj_2_1173(2)) { + } else if (jj_2_1175(2)) { jj_consume_token(PAD); - } else if (jj_2_1174(2)) { + } else if (jj_2_1176(2)) { jj_consume_token(PARAMETER_ORDINAL_POSITION); - } else if (jj_2_1175(2)) { + } else if (jj_2_1177(2)) { jj_consume_token(PARAMETER_SPECIFIC_SCHEMA); - } else if (jj_2_1176(2)) { + } else if (jj_2_1178(2)) { jj_consume_token(PASSING); - } else if (jj_2_1177(2)) { + } else if (jj_2_1179(2)) { jj_consume_token(PATH); - } else if (jj_2_1178(2)) { + } else if (jj_2_1180(2)) { jj_consume_token(PLAN); - } else if (jj_2_1179(2)) { + } else if (jj_2_1181(2)) { jj_consume_token(PRESERVE); - } else if (jj_2_1180(2)) { + } else if (jj_2_1182(2)) { jj_consume_token(PUBLIC); - } else if (jj_2_1181(2)) { + } else if (jj_2_1183(2)) { jj_consume_token(READ); - } else if (jj_2_1182(2)) { + } else if (jj_2_1184(2)) { jj_consume_token(REPLACE); - } else if (jj_2_1183(2)) { + } else if (jj_2_1185(2)) { jj_consume_token(RESTRICT); - } else if (jj_2_1184(2)) { + } else if (jj_2_1186(2)) { jj_consume_token(RETURNED_OCTET_LENGTH); - } else if (jj_2_1185(2)) { + } else if (jj_2_1187(2)) { jj_consume_token(RLIKE); - } else if (jj_2_1186(2)) { + } else if (jj_2_1188(2)) { jj_consume_token(ROUTINE_CATALOG); - } else if (jj_2_1187(2)) { + } else if (jj_2_1189(2)) { jj_consume_token(ROW_COUNT); - } else if (jj_2_1188(2)) { + } else if (jj_2_1190(2)) { jj_consume_token(SCHEMA); - } else if (jj_2_1189(2)) { + } else if (jj_2_1191(2)) { jj_consume_token(SCOPE_NAME); - } else if (jj_2_1190(2)) { + } else if (jj_2_1192(2)) { jj_consume_token(SECTION); - } else if (jj_2_1191(2)) { + } else if (jj_2_1193(2)) { jj_consume_token(SEPARATOR); - } else if (jj_2_1192(2)) { + } else if (jj_2_1194(2)) { jj_consume_token(SERVER); - } else if (jj_2_1193(2)) { + } else if (jj_2_1195(2)) { jj_consume_token(SETS); - } else if (jj_2_1194(2)) { + } else if (jj_2_1196(2)) { jj_consume_token(SOURCE); - } else if (jj_2_1195(2)) { + } else if (jj_2_1197(2)) { jj_consume_token(SQL_BIGINT); - } else if (jj_2_1196(2)) { + } else if (jj_2_1198(2)) { jj_consume_token(SQL_BLOB); - } else if (jj_2_1197(2)) { + } else if (jj_2_1199(2)) { jj_consume_token(SQL_CLOB); - } else if (jj_2_1198(2)) { + } else if (jj_2_1200(2)) { jj_consume_token(SQL_DOUBLE); - } else if (jj_2_1199(2)) { + } else if (jj_2_1201(2)) { jj_consume_token(SQL_INTERVAL_DAY); - } else if (jj_2_1200(2)) { + } else if (jj_2_1202(2)) { jj_consume_token(SQL_INTERVAL_DAY_TO_SECOND); - } else if (jj_2_1201(2)) { + } else if (jj_2_1203(2)) { jj_consume_token(SQL_INTERVAL_HOUR_TO_SECOND); - } else if (jj_2_1202(2)) { + } else if (jj_2_1204(2)) { jj_consume_token(SQL_INTERVAL_MONTH); - } else if (jj_2_1203(2)) { + } else if (jj_2_1205(2)) { jj_consume_token(SQL_INTERVAL_YEAR_TO_MONTH); - } else if (jj_2_1204(2)) { + } else if (jj_2_1206(2)) { jj_consume_token(SQL_LONGVARNCHAR); - } else if (jj_2_1205(2)) { + } else if (jj_2_1207(2)) { jj_consume_token(SQL_NUMERIC); - } else if (jj_2_1206(2)) { + } else if (jj_2_1208(2)) { jj_consume_token(SQL_SMALLINT); - } else if (jj_2_1207(2)) { + } else if (jj_2_1209(2)) { jj_consume_token(SQL_TINYINT); - } else if (jj_2_1208(2)) { + } else if (jj_2_1210(2)) { jj_consume_token(SQL_TSI_HOUR); - } else if (jj_2_1209(2)) { + } else if (jj_2_1211(2)) { jj_consume_token(SQL_TSI_MONTH); - } else if (jj_2_1210(2)) { + } else if (jj_2_1212(2)) { jj_consume_token(SQL_TSI_WEEK); - } else if (jj_2_1211(2)) { + } else if (jj_2_1213(2)) { jj_consume_token(SQL_VARCHAR); - } else if (jj_2_1212(2)) { + } else if (jj_2_1214(2)) { jj_consume_token(STRING_AGG); - } else if (jj_2_1213(2)) { + } else if (jj_2_1215(2)) { jj_consume_token(SUBCLASS_ORIGIN); - } else if (jj_2_1214(2)) { + } else if (jj_2_1216(2)) { jj_consume_token(TEMPORARY); - } else if (jj_2_1215(2)) { + } else if (jj_2_1217(2)) { jj_consume_token(TIME_TRUNC); - } else if (jj_2_1216(2)) { + } else if (jj_2_1218(2)) { jj_consume_token(TIMESTAMP_DIFF); - } else if (jj_2_1217(2)) { + } else if (jj_2_1219(2)) { jj_consume_token(TRANSACTION); - } else if (jj_2_1218(2)) { + } else if (jj_2_1220(2)) { jj_consume_token(TRANSACTIONS_ROLLED_BACK); - } else if (jj_2_1219(2)) { + } else if (jj_2_1221(2)) { jj_consume_token(TRIGGER_CATALOG); - } else if (jj_2_1220(2)) { + } else if (jj_2_1222(2)) { jj_consume_token(TUMBLE); - } else if (jj_2_1221(2)) { + } else if (jj_2_1223(2)) { jj_consume_token(UNCOMMITTED); - } else if (jj_2_1222(2)) { + } else if (jj_2_1224(2)) { jj_consume_token(UNPIVOT); - } else if (jj_2_1223(2)) { + } else if (jj_2_1225(2)) { jj_consume_token(USER_DEFINED_TYPE_CATALOG); - } else if (jj_2_1224(2)) { + } else if (jj_2_1226(2)) { jj_consume_token(USER_DEFINED_TYPE_SCHEMA); - } else if (jj_2_1225(2)) { + } else if (jj_2_1227(2)) { jj_consume_token(UTF8); - } else if (jj_2_1226(2)) { + } else if (jj_2_1228(2)) { jj_consume_token(WEEK); - } else if (jj_2_1227(2)) { + } else if (jj_2_1229(2)) { jj_consume_token(WRAPPER); - } else if (jj_2_1228(2)) { + } else if (jj_2_1230(2)) { jj_consume_token(YEARS); - } else if (jj_2_1229(2)) { + } else if (jj_2_1231(2)) { jj_consume_token(BACKUPS); - } else if (jj_2_1230(2)) { + } else if (jj_2_1232(2)) { jj_consume_token(WRITE_SYNCHRONIZATION_MODE); - } else if (jj_2_1231(2)) { + } else if (jj_2_1233(2)) { jj_consume_token(DATA_REGION); - } else if (jj_2_1232(2)) { + } else if (jj_2_1234(2)) { jj_consume_token(PARALLEL); - } else if (jj_2_1233(2)) { + } else if (jj_2_1235(2)) { jj_consume_token(NOLOGGING); - } else if (jj_2_1234(2)) { + } else if (jj_2_1236(2)) { jj_consume_token(SCAN); - } else if (jj_2_1235(2)) { + } else if (jj_2_1237(2)) { jj_consume_token(COMPUTE); - } else if (jj_2_1236(2)) { + } else if (jj_2_1238(2)) { jj_consume_token(STATISTICS); - } else if (jj_2_1237(2)) { + } else if (jj_2_1239(2)) { jj_consume_token(MAX_CHANGED_PARTITION_ROWS_PERCENT); - } else if (jj_2_1238(2)) { + } else if (jj_2_1240(2)) { jj_consume_token(ALLOCATE); - } else if (jj_2_1239(2)) { + } else if (jj_2_1241(2)) { jj_consume_token(ARRAY_MAX_CARDINALITY); - } else if (jj_2_1240(2)) { + } else if (jj_2_1242(2)) { jj_consume_token(ATOMIC); - } else if (jj_2_1241(2)) { + } else if (jj_2_1243(2)) { jj_consume_token(BEGIN); - } else if (jj_2_1242(2)) { + } else if (jj_2_1244(2)) { jj_consume_token(BIGINT); - } else if (jj_2_1243(2)) { + } else if (jj_2_1245(2)) { jj_consume_token(BLOB); - } else if (jj_2_1244(2)) { + } else if (jj_2_1246(2)) { jj_consume_token(CALLED); - } else if (jj_2_1245(2)) { + } else if (jj_2_1247(2)) { jj_consume_token(CEIL); - } else if (jj_2_1246(2)) { + } else if (jj_2_1248(2)) { jj_consume_token(CHARACTER); - } else if (jj_2_1247(2)) { + } else if (jj_2_1249(2)) { jj_consume_token(CHECK); - } else if (jj_2_1248(2)) { + } else if (jj_2_1250(2)) { jj_consume_token(CLOSE); - } else if (jj_2_1249(2)) { + } else if (jj_2_1251(2)) { jj_consume_token(COLLECT); - } else if (jj_2_1250(2)) { + } else if (jj_2_1252(2)) { jj_consume_token(CONNECT); - } else if (jj_2_1251(2)) { + } else if (jj_2_1253(2)) { jj_consume_token(CORR); - } else if (jj_2_1252(2)) { + } else if (jj_2_1254(2)) { jj_consume_token(COVAR_POP); - } else if (jj_2_1253(2)) { + } else if (jj_2_1255(2)) { jj_consume_token(CUME_DIST); - } else if (jj_2_1254(2)) { + } else if (jj_2_1256(2)) { jj_consume_token(CURRENT_DEFAULT_TRANSFORM_GROUP); - } else if (jj_2_1255(2)) { + } else if (jj_2_1257(2)) { jj_consume_token(CURRENT_ROW); - } else if (jj_2_1256(2)) { + } else if (jj_2_1258(2)) { jj_consume_token(CYCLE); - } else if (jj_2_1257(2)) { + } else if (jj_2_1259(2)) { jj_consume_token(DAY); - } else if (jj_2_1258(2)) { + } else if (jj_2_1260(2)) { jj_consume_token(DECIMAL); - } else if (jj_2_1259(2)) { + } else if (jj_2_1261(2)) { jj_consume_token(DENSE_RANK); - } else if (jj_2_1260(2)) { + } else if (jj_2_1262(2)) { jj_consume_token(DETERMINISTIC); - } else if (jj_2_1261(2)) { + } else if (jj_2_1263(2)) { jj_consume_token(DOUBLE); - } else if (jj_2_1262(2)) { + } else if (jj_2_1264(2)) { jj_consume_token(ELEMENT); - } else if (jj_2_1263(2)) { + } else if (jj_2_1265(2)) { jj_consume_token(END_EXEC); - } else if (jj_2_1264(2)) { + } else if (jj_2_1266(2)) { jj_consume_token(EQUALS); - } else if (jj_2_1265(2)) { + } else if (jj_2_1267(2)) { jj_consume_token(EXEC); - } else if (jj_2_1266(2)) { + } else if (jj_2_1268(2)) { jj_consume_token(EXTEND); - } else if (jj_2_1267(2)) { + } else if (jj_2_1269(2)) { jj_consume_token(FILTER); - } else if (jj_2_1268(2)) { + } else if (jj_2_1270(2)) { jj_consume_token(FLOOR); - } else if (jj_2_1269(2)) { + } else if (jj_2_1271(2)) { jj_consume_token(FREE); - } else if (jj_2_1270(2)) { + } else if (jj_2_1272(2)) { jj_consume_token(GET); - } else if (jj_2_1271(2)) { + } else if (jj_2_1273(2)) { jj_consume_token(GROUPING); - } else if (jj_2_1272(2)) { + } else if (jj_2_1274(2)) { jj_consume_token(HOUR); - } else if (jj_2_1273(2)) { + } else if (jj_2_1275(2)) { jj_consume_token(INDICATOR); - } else if (jj_2_1274(2)) { + } else if (jj_2_1276(2)) { jj_consume_token(INSENSITIVE); - } else if (jj_2_1275(2)) { + } else if (jj_2_1277(2)) { jj_consume_token(INTERSECTION); - } else if (jj_2_1276(2)) { + } else if (jj_2_1278(2)) { jj_consume_token(JSON_EXISTS); - } else if (jj_2_1277(2)) { + } else if (jj_2_1279(2)) { jj_consume_token(JSON_QUERY); - } else if (jj_2_1278(2)) { + } else if (jj_2_1280(2)) { jj_consume_token(LAG); - } else if (jj_2_1279(2)) { + } else if (jj_2_1281(2)) { jj_consume_token(LAST_VALUE); - } else if (jj_2_1280(2)) { + } else if (jj_2_1282(2)) { jj_consume_token(LIKE_REGEX); - } else if (jj_2_1281(2)) { + } else if (jj_2_1283(2)) { jj_consume_token(LOWER); - } else if (jj_2_1282(2)) { + } else if (jj_2_1284(2)) { jj_consume_token(MATCH_NUMBER); - } else if (jj_2_1283(2)) { + } else if (jj_2_1285(2)) { jj_consume_token(MEASURES); - } else if (jj_2_1284(2)) { + } else if (jj_2_1286(2)) { jj_consume_token(MIN); - } else if (jj_2_1285(2)) { + } else if (jj_2_1287(2)) { jj_consume_token(MODIFIES); - } else if (jj_2_1286(2)) { + } else if (jj_2_1288(2)) { jj_consume_token(MULTISET); - } else if (jj_2_1287(2)) { + } else if (jj_2_1289(2)) { jj_consume_token(NCLOB); - } else if (jj_2_1288(2)) { + } else if (jj_2_1290(2)) { jj_consume_token(NO); - } else if (jj_2_1289(2)) { + } else if (jj_2_1291(2)) { jj_consume_token(NTH_VALUE); - } else if (jj_2_1290(2)) { + } else if (jj_2_1292(2)) { jj_consume_token(NUMERIC); - } else if (jj_2_1291(2)) { + } else if (jj_2_1293(2)) { jj_consume_token(OF); - } else if (jj_2_1292(2)) { + } else if (jj_2_1294(2)) { jj_consume_token(ONE); - } else if (jj_2_1293(2)) { + } else if (jj_2_1295(2)) { jj_consume_token(ORDINAL); - } else if (jj_2_1294(2)) { + } else if (jj_2_1296(2)) { jj_consume_token(OVERLAPS); - } else if (jj_2_1295(2)) { + } else if (jj_2_1297(2)) { jj_consume_token(PATTERN); - } else if (jj_2_1296(2)) { + } else if (jj_2_1298(2)) { jj_consume_token(PERCENTILE_CONT); - } else if (jj_2_1297(2)) { + } else if (jj_2_1299(2)) { jj_consume_token(PERIOD); - } else if (jj_2_1298(2)) { + } else if (jj_2_1300(2)) { jj_consume_token(POSITION); - } else if (jj_2_1299(2)) { + } else if (jj_2_1301(2)) { jj_consume_token(PRECEDES); - } else if (jj_2_1300(2)) { + } else if (jj_2_1302(2)) { jj_consume_token(PREV); - } else if (jj_2_1301(2)) { + } else if (jj_2_1303(2)) { jj_consume_token(RANGE); - } else if (jj_2_1302(2)) { + } else if (jj_2_1304(2)) { jj_consume_token(REAL); - } else if (jj_2_1303(2)) { + } else if (jj_2_1305(2)) { jj_consume_token(REFERENCES); - } else if (jj_2_1304(2)) { + } else if (jj_2_1306(2)) { jj_consume_token(REGR_AVGY); - } else if (jj_2_1305(2)) { + } else if (jj_2_1307(2)) { jj_consume_token(REGR_R2); - } else if (jj_2_1306(2)) { + } else if (jj_2_1308(2)) { jj_consume_token(REGR_SXY); - } else if (jj_2_1307(2)) { + } else if (jj_2_1309(2)) { jj_consume_token(RESET); - } else if (jj_2_1308(2)) { + } else if (jj_2_1310(2)) { jj_consume_token(RETURNS); - } else if (jj_2_1309(2)) { + } else if (jj_2_1311(2)) { jj_consume_token(ROLLUP); - } else if (jj_2_1310(2)) { + } else if (jj_2_1312(2)) { jj_consume_token(RUNNING); - } else if (jj_2_1311(2)) { + } else if (jj_2_1313(2)) { jj_consume_token(SAFE_ORDINAL); - } else if (jj_2_1312(2)) { + } else if (jj_2_1314(2)) { jj_consume_token(SCROLL); - } else if (jj_2_1313(2)) { + } else if (jj_2_1315(2)) { jj_consume_token(SEEK); - } else if (jj_2_1314(2)) { + } else if (jj_2_1316(2)) { jj_consume_token(SHOW); - } else if (jj_2_1315(2)) { + } else if (jj_2_1317(2)) { jj_consume_token(SMALLINT); - } else if (jj_2_1316(2)) { + } else if (jj_2_1318(2)) { jj_consume_token(SQL); - } else if (jj_2_1317(2)) { + } else if (jj_2_1319(2)) { jj_consume_token(SQLWARNING); - } else if (jj_2_1318(2)) { + } else if (jj_2_1320(2)) { jj_consume_token(STATIC); - } else if (jj_2_1319(2)) { + } else if (jj_2_1321(2)) { jj_consume_token(STREAM); - } else if (jj_2_1320(2)) { + } else if (jj_2_1322(2)) { jj_consume_token(SUBSTRING); - } else if (jj_2_1321(2)) { + } else if (jj_2_1323(2)) { jj_consume_token(SUM); - } else if (jj_2_1322(2)) { + } else if (jj_2_1324(2)) { jj_consume_token(SYSTEM_USER); - } else if (jj_2_1323(2)) { + } else if (jj_2_1325(2)) { jj_consume_token(TIMESTAMP); - } else if (jj_2_1324(2)) { + } else if (jj_2_1326(2)) { jj_consume_token(TINYINT); - } else if (jj_2_1325(2)) { + } else if (jj_2_1327(2)) { jj_consume_token(TRANSLATION); - } else if (jj_2_1326(2)) { + } else if (jj_2_1328(2)) { jj_consume_token(TRIM); - } else if (jj_2_1327(2)) { + } else if (jj_2_1329(2)) { jj_consume_token(TRY_CAST); - } else if (jj_2_1328(2)) { + } else if (jj_2_1330(2)) { jj_consume_token(UNKNOWN); - } else if (jj_2_1329(2)) { + } else if (jj_2_1331(2)) { jj_consume_token(UPSERT); - } else if (jj_2_1330(2)) { + } else if (jj_2_1332(2)) { jj_consume_token(VARBINARY); - } else if (jj_2_1331(2)) { + } else if (jj_2_1333(2)) { jj_consume_token(VAR_POP); - } else if (jj_2_1332(2)) { + } else if (jj_2_1334(2)) { jj_consume_token(WHENEVER); - } else if (jj_2_1333(2)) { + } else if (jj_2_1335(2)) { jj_consume_token(WITHIN); - } else if (jj_2_1334(2)) { + } else if (jj_2_1336(2)) { jj_consume_token(MONDAY); - } else if (jj_2_1335(2)) { + } else if (jj_2_1337(2)) { jj_consume_token(THURSDAY); - } else if (jj_2_1336(2)) { + } else if (jj_2_1338(2)) { jj_consume_token(SUNDAY); } else { jj_consume_token(-1); @@ -10457,443 +10488,443 @@ final public void NonReservedKeyWord0of3() throws ParseException { /** @see #NonReservedKeyWord */ final public void NonReservedKeyWord1of3() throws ParseException { - if (jj_2_1337(2)) { + if (jj_2_1339(2)) { jj_consume_token(ABSENT); - } else if (jj_2_1338(2)) { + } else if (jj_2_1340(2)) { jj_consume_token(ADA); - } else if (jj_2_1339(2)) { + } else if (jj_2_1341(2)) { jj_consume_token(AFTER); - } else if (jj_2_1340(2)) { + } else if (jj_2_1342(2)) { jj_consume_token(ARRAY_AGG); - } else if (jj_2_1341(2)) { + } else if (jj_2_1343(2)) { jj_consume_token(ASSERTION); - } else if (jj_2_1342(2)) { + } else if (jj_2_1344(2)) { jj_consume_token(ATTRIBUTES); - } else if (jj_2_1343(2)) { + } else if (jj_2_1345(2)) { jj_consume_token(BREADTH); - } else if (jj_2_1344(2)) { + } else if (jj_2_1346(2)) { jj_consume_token(CATALOG); - } else if (jj_2_1345(2)) { + } else if (jj_2_1347(2)) { jj_consume_token(CHAIN); - } else if (jj_2_1346(2)) { + } else if (jj_2_1348(2)) { jj_consume_token(CHARACTER_SET_CATALOG); - } else if (jj_2_1347(2)) { + } else if (jj_2_1349(2)) { jj_consume_token(CLASS_ORIGIN); - } else if (jj_2_1348(2)) { + } else if (jj_2_1350(2)) { jj_consume_token(COLLATION_CATALOG); - } else if (jj_2_1349(2)) { + } else if (jj_2_1351(2)) { jj_consume_token(COLUMN_NAME); - } else if (jj_2_1350(2)) { + } else if (jj_2_1352(2)) { jj_consume_token(COMMITTED); - } else if (jj_2_1351(2)) { + } else if (jj_2_1353(2)) { jj_consume_token(CONNECTION); - } else if (jj_2_1352(2)) { + } else if (jj_2_1354(2)) { jj_consume_token(CONSTRAINT_NAME); - } else if (jj_2_1353(2)) { + } else if (jj_2_1355(2)) { jj_consume_token(CONSTRUCTOR); - } else if (jj_2_1354(2)) { + } else if (jj_2_1356(2)) { jj_consume_token(CURSOR_NAME); - } else if (jj_2_1355(2)) { + } else if (jj_2_1357(2)) { jj_consume_token(DATE_DIFF); - } else if (jj_2_1356(2)) { + } else if (jj_2_1358(2)) { jj_consume_token(DATETIME_INTERVAL_CODE); - } else if (jj_2_1357(2)) { + } else if (jj_2_1359(2)) { jj_consume_token(DAYOFWEEK); - } else if (jj_2_1358(2)) { + } else if (jj_2_1360(2)) { jj_consume_token(DECADE); - } else if (jj_2_1359(2)) { + } else if (jj_2_1361(2)) { jj_consume_token(DEFERRED); - } else if (jj_2_1360(2)) { + } else if (jj_2_1362(2)) { jj_consume_token(DEGREE); - } else if (jj_2_1361(2)) { + } else if (jj_2_1363(2)) { jj_consume_token(DESC); - } else if (jj_2_1362(2)) { + } else if (jj_2_1364(2)) { jj_consume_token(DIAGNOSTICS); - } else if (jj_2_1363(2)) { + } else if (jj_2_1365(2)) { jj_consume_token(DOW); - } else if (jj_2_1364(2)) { + } else if (jj_2_1366(2)) { jj_consume_token(DYNAMIC_FUNCTION); - } else if (jj_2_1365(2)) { + } else if (jj_2_1367(2)) { jj_consume_token(EPOCH); - } else if (jj_2_1366(2)) { + } else if (jj_2_1368(2)) { jj_consume_token(EXCLUDE); - } else if (jj_2_1367(2)) { + } else if (jj_2_1369(2)) { jj_consume_token(FIRST); - } else if (jj_2_1368(2)) { + } else if (jj_2_1370(2)) { jj_consume_token(FORTRAN); - } else if (jj_2_1369(2)) { + } else if (jj_2_1371(2)) { jj_consume_token(G); - } else if (jj_2_1370(2)) { + } else if (jj_2_1372(2)) { jj_consume_token(GEOMETRY); - } else if (jj_2_1371(2)) { + } else if (jj_2_1373(2)) { jj_consume_token(GRANTED); - } else if (jj_2_1372(2)) { + } else if (jj_2_1374(2)) { jj_consume_token(HOP); - } else if (jj_2_1373(2)) { + } else if (jj_2_1375(2)) { jj_consume_token(ILIKE); - } else if (jj_2_1374(2)) { + } else if (jj_2_1376(2)) { jj_consume_token(IMPLEMENTATION); - } else if (jj_2_1375(2)) { + } else if (jj_2_1377(2)) { jj_consume_token(INCREMENT); - } else if (jj_2_1376(2)) { + } else if (jj_2_1378(2)) { jj_consume_token(INSTANCE); - } else if (jj_2_1377(2)) { + } else if (jj_2_1379(2)) { jj_consume_token(ISODOW); - } else if (jj_2_1378(2)) { + } else if (jj_2_1380(2)) { jj_consume_token(JAVA); - } else if (jj_2_1379(2)) { + } else if (jj_2_1381(2)) { jj_consume_token(KEY); - } else if (jj_2_1380(2)) { + } else if (jj_2_1382(2)) { jj_consume_token(LABEL); - } else if (jj_2_1381(2)) { + } else if (jj_2_1383(2)) { jj_consume_token(LEVEL); - } else if (jj_2_1382(2)) { + } else if (jj_2_1384(2)) { jj_consume_token(M); - } else if (jj_2_1383(2)) { + } else if (jj_2_1385(2)) { jj_consume_token(MAXVALUE); - } else if (jj_2_1384(2)) { + } else if (jj_2_1386(2)) { jj_consume_token(MESSAGE_TEXT); - } else if (jj_2_1385(2)) { + } else if (jj_2_1387(2)) { jj_consume_token(MILLISECOND); - } else if (jj_2_1386(2)) { + } else if (jj_2_1388(2)) { jj_consume_token(MONTHS); - } else if (jj_2_1387(2)) { + } else if (jj_2_1389(2)) { jj_consume_token(NAME); - } else if (jj_2_1388(2)) { + } else if (jj_2_1390(2)) { jj_consume_token(NESTING); - } else if (jj_2_1389(2)) { + } else if (jj_2_1391(2)) { jj_consume_token(NULLS); - } else if (jj_2_1390(2)) { + } else if (jj_2_1392(2)) { jj_consume_token(OCTETS); - } else if (jj_2_1391(2)) { + } else if (jj_2_1393(2)) { jj_consume_token(ORDERING); - } else if (jj_2_1392(2)) { + } else if (jj_2_1394(2)) { jj_consume_token(OUTPUT); - } else if (jj_2_1393(2)) { + } else if (jj_2_1395(2)) { jj_consume_token(PARAMETER_MODE); - } else if (jj_2_1394(2)) { + } else if (jj_2_1396(2)) { jj_consume_token(PARAMETER_SPECIFIC_CATALOG); - } else if (jj_2_1395(2)) { + } else if (jj_2_1397(2)) { jj_consume_token(PARTIAL); - } else if (jj_2_1396(2)) { + } else if (jj_2_1398(2)) { jj_consume_token(PASSTHROUGH); - } else if (jj_2_1397(2)) { + } else if (jj_2_1399(2)) { jj_consume_token(PIVOT); - } else if (jj_2_1398(2)) { + } else if (jj_2_1400(2)) { jj_consume_token(PLI); - } else if (jj_2_1399(2)) { + } else if (jj_2_1401(2)) { jj_consume_token(PRIOR); - } else if (jj_2_1400(2)) { + } else if (jj_2_1402(2)) { jj_consume_token(QUARTER); - } else if (jj_2_1401(2)) { + } else if (jj_2_1403(2)) { jj_consume_token(RELATIVE); - } else if (jj_2_1402(2)) { + } else if (jj_2_1404(2)) { jj_consume_token(RESPECT); - } else if (jj_2_1403(2)) { + } else if (jj_2_1405(2)) { jj_consume_token(RETURNED_CARDINALITY); - } else if (jj_2_1404(2)) { + } else if (jj_2_1406(2)) { jj_consume_token(RETURNED_SQLSTATE); - } else if (jj_2_1405(2)) { + } else if (jj_2_1407(2)) { jj_consume_token(ROLE); - } else if (jj_2_1406(2)) { + } else if (jj_2_1408(2)) { jj_consume_token(ROUTINE_NAME); - } else if (jj_2_1407(2)) { + } else if (jj_2_1409(2)) { jj_consume_token(SCALAR); - } else if (jj_2_1408(2)) { + } else if (jj_2_1410(2)) { jj_consume_token(SCHEMA_NAME); - } else if (jj_2_1409(2)) { + } else if (jj_2_1411(2)) { jj_consume_token(SCOPE_SCHEMA); - } else if (jj_2_1410(2)) { + } else if (jj_2_1412(2)) { jj_consume_token(SECURITY); - } else if (jj_2_1411(2)) { + } else if (jj_2_1413(2)) { jj_consume_token(SEQUENCE); - } else if (jj_2_1412(2)) { + } else if (jj_2_1414(2)) { jj_consume_token(SERVER_NAME); - } else if (jj_2_1413(2)) { + } else if (jj_2_1415(2)) { jj_consume_token(SIMPLE); - } else if (jj_2_1414(2)) { + } else if (jj_2_1416(2)) { jj_consume_token(SPACE); - } else if (jj_2_1415(2)) { + } else if (jj_2_1417(2)) { jj_consume_token(SQL_BINARY); - } else if (jj_2_1416(2)) { + } else if (jj_2_1418(2)) { jj_consume_token(SQL_BOOLEAN); - } else if (jj_2_1417(2)) { + } else if (jj_2_1419(2)) { jj_consume_token(SQL_DATE); - } else if (jj_2_1418(2)) { + } else if (jj_2_1420(2)) { jj_consume_token(SQL_FLOAT); - } else if (jj_2_1419(2)) { + } else if (jj_2_1421(2)) { jj_consume_token(SQL_INTERVAL_DAY_TO_HOUR); - } else if (jj_2_1420(2)) { + } else if (jj_2_1422(2)) { jj_consume_token(SQL_INTERVAL_HOUR); - } else if (jj_2_1421(2)) { + } else if (jj_2_1423(2)) { jj_consume_token(SQL_INTERVAL_MINUTE); - } else if (jj_2_1422(2)) { + } else if (jj_2_1424(2)) { jj_consume_token(SQL_INTERVAL_SECOND); - } else if (jj_2_1423(2)) { + } else if (jj_2_1425(2)) { jj_consume_token(SQL_LONGVARBINARY); - } else if (jj_2_1424(2)) { + } else if (jj_2_1426(2)) { jj_consume_token(SQL_NCHAR); - } else if (jj_2_1425(2)) { + } else if (jj_2_1427(2)) { jj_consume_token(SQL_NVARCHAR); - } else if (jj_2_1426(2)) { + } else if (jj_2_1428(2)) { jj_consume_token(SQL_TIME); - } else if (jj_2_1427(2)) { + } else if (jj_2_1429(2)) { jj_consume_token(SQL_TSI_DAY); - } else if (jj_2_1428(2)) { + } else if (jj_2_1430(2)) { jj_consume_token(SQL_TSI_MICROSECOND); - } else if (jj_2_1429(2)) { + } else if (jj_2_1431(2)) { jj_consume_token(SQL_TSI_QUARTER); - } else if (jj_2_1430(2)) { + } else if (jj_2_1432(2)) { jj_consume_token(SQL_TSI_YEAR); - } else if (jj_2_1431(2)) { + } else if (jj_2_1433(2)) { jj_consume_token(STATE); - } else if (jj_2_1432(2)) { + } else if (jj_2_1434(2)) { jj_consume_token(STRUCTURE); - } else if (jj_2_1433(2)) { + } else if (jj_2_1435(2)) { jj_consume_token(SUBSTITUTE); - } else if (jj_2_1434(2)) { + } else if (jj_2_1436(2)) { jj_consume_token(TIES); - } else if (jj_2_1435(2)) { + } else if (jj_2_1437(2)) { jj_consume_token(TIMESTAMPADD); - } else if (jj_2_1436(2)) { + } else if (jj_2_1438(2)) { jj_consume_token(TIMESTAMP_TRUNC); - } else if (jj_2_1437(2)) { + } else if (jj_2_1439(2)) { jj_consume_token(TRANSACTIONS_ACTIVE); - } else if (jj_2_1438(2)) { + } else if (jj_2_1440(2)) { jj_consume_token(TRANSFORM); - } else if (jj_2_1439(2)) { + } else if (jj_2_1441(2)) { jj_consume_token(TRIGGER_NAME); - } else if (jj_2_1440(2)) { + } else if (jj_2_1442(2)) { jj_consume_token(TYPE); - } else if (jj_2_1441(2)) { + } else if (jj_2_1443(2)) { jj_consume_token(UNCONDITIONAL); - } else if (jj_2_1442(2)) { + } else if (jj_2_1444(2)) { jj_consume_token(UNNAMED); - } else if (jj_2_1443(2)) { + } else if (jj_2_1445(2)) { jj_consume_token(USER_DEFINED_TYPE_CODE); - } else if (jj_2_1444(2)) { + } else if (jj_2_1446(2)) { jj_consume_token(UTF16); - } else if (jj_2_1445(2)) { + } else if (jj_2_1447(2)) { jj_consume_token(VERSION); - } else if (jj_2_1446(2)) { + } else if (jj_2_1448(2)) { jj_consume_token(WEEKS); - } else if (jj_2_1447(2)) { + } else if (jj_2_1449(2)) { jj_consume_token(WRITE); - } else if (jj_2_1448(2)) { + } else if (jj_2_1450(2)) { jj_consume_token(ZONE); - } else if (jj_2_1449(2)) { + } else if (jj_2_1451(2)) { jj_consume_token(AFFINITY_KEY); - } else if (jj_2_1450(2)) { + } else if (jj_2_1452(2)) { jj_consume_token(CACHE_GROUP); - } else if (jj_2_1451(2)) { + } else if (jj_2_1453(2)) { jj_consume_token(VALUE_TYPE); - } else if (jj_2_1452(2)) { + } else if (jj_2_1454(2)) { jj_consume_token(INLINE_SIZE); - } else if (jj_2_1453(2)) { + } else if (jj_2_1455(2)) { jj_consume_token(PASSWORD); - } else if (jj_2_1454(2)) { + } else if (jj_2_1456(2)) { jj_consume_token(CONTINUOUS); - } else if (jj_2_1455(2)) { + } else if (jj_2_1457(2)) { jj_consume_token(ASYNC); - } else if (jj_2_1456(2)) { + } else if (jj_2_1458(2)) { jj_consume_token(REFRESH); - } else if (jj_2_1457(2)) { + } else if (jj_2_1459(2)) { jj_consume_token(TOTAL); - } else if (jj_2_1458(2)) { + } else if (jj_2_1460(2)) { jj_consume_token(ALLOW); - } else if (jj_2_1459(2)) { + } else if (jj_2_1461(2)) { jj_consume_token(ASENSITIVE); - } else if (jj_2_1460(2)) { + } else if (jj_2_1462(2)) { jj_consume_token(AUTHORIZATION); - } else if (jj_2_1461(2)) { + } else if (jj_2_1463(2)) { jj_consume_token(BEGIN_FRAME); - } else if (jj_2_1462(2)) { + } else if (jj_2_1464(2)) { jj_consume_token(BINARY); - } else if (jj_2_1463(2)) { + } else if (jj_2_1465(2)) { jj_consume_token(BOOLEAN); - } else if (jj_2_1464(2)) { + } else if (jj_2_1466(2)) { jj_consume_token(CARDINALITY); - } else if (jj_2_1465(2)) { + } else if (jj_2_1467(2)) { jj_consume_token(CEILING); - } else if (jj_2_1466(2)) { + } else if (jj_2_1468(2)) { jj_consume_token(CHARACTER_LENGTH); - } else if (jj_2_1467(2)) { + } else if (jj_2_1469(2)) { jj_consume_token(CLASSIFIER); - } else if (jj_2_1468(2)) { + } else if (jj_2_1470(2)) { jj_consume_token(COALESCE); - } else if (jj_2_1469(2)) { + } else if (jj_2_1471(2)) { jj_consume_token(COMMIT); - } else if (jj_2_1470(2)) { + } else if (jj_2_1472(2)) { jj_consume_token(CONTAINS); - } else if (jj_2_1471(2)) { + } else if (jj_2_1473(2)) { jj_consume_token(CORRESPONDING); - } else if (jj_2_1472(2)) { + } else if (jj_2_1474(2)) { jj_consume_token(COVAR_SAMP); - } else if (jj_2_1473(2)) { + } else if (jj_2_1475(2)) { jj_consume_token(CURRENT); - } else if (jj_2_1474(2)) { + } else if (jj_2_1476(2)) { jj_consume_token(CURRENT_PATH); - } else if (jj_2_1475(2)) { + } else if (jj_2_1477(2)) { jj_consume_token(CURRENT_TRANSFORM_GROUP_FOR_TYPE); - } else if (jj_2_1476(2)) { + } else if (jj_2_1478(2)) { jj_consume_token(DATE); - } else if (jj_2_1477(2)) { + } else if (jj_2_1479(2)) { jj_consume_token(DEALLOCATE); - } else if (jj_2_1478(2)) { + } else if (jj_2_1480(2)) { jj_consume_token(DECLARE); - } else if (jj_2_1479(2)) { + } else if (jj_2_1481(2)) { jj_consume_token(DEREF); - } else if (jj_2_1480(2)) { + } else if (jj_2_1482(2)) { jj_consume_token(DISALLOW); - } else if (jj_2_1481(2)) { + } else if (jj_2_1483(2)) { jj_consume_token(DYNAMIC); - } else if (jj_2_1482(2)) { + } else if (jj_2_1484(2)) { jj_consume_token(EMPTY); - } else if (jj_2_1483(2)) { + } else if (jj_2_1485(2)) { jj_consume_token(END_FRAME); - } else if (jj_2_1484(2)) { + } else if (jj_2_1486(2)) { jj_consume_token(ESCAPE); - } else if (jj_2_1485(2)) { + } else if (jj_2_1487(2)) { jj_consume_token(EXECUTE); - } else if (jj_2_1486(2)) { + } else if (jj_2_1488(2)) { jj_consume_token(EXTERNAL); - } else if (jj_2_1487(2)) { + } else if (jj_2_1489(2)) { jj_consume_token(FIRST_VALUE); - } else if (jj_2_1488(2)) { + } else if (jj_2_1490(2)) { jj_consume_token(FOREIGN); - } else if (jj_2_1489(2)) { + } else if (jj_2_1491(2)) { jj_consume_token(FUNCTION); - } else if (jj_2_1490(2)) { + } else if (jj_2_1492(2)) { jj_consume_token(GLOBAL); - } else if (jj_2_1491(2)) { + } else if (jj_2_1493(2)) { jj_consume_token(GROUPS); - } else if (jj_2_1492(2)) { + } else if (jj_2_1494(2)) { jj_consume_token(IDENTITY); - } else if (jj_2_1493(2)) { + } else if (jj_2_1495(2)) { jj_consume_token(INITIAL); - } else if (jj_2_1494(2)) { + } else if (jj_2_1496(2)) { jj_consume_token(INT); - } else if (jj_2_1495(2)) { + } else if (jj_2_1497(2)) { jj_consume_token(JSON_ARRAY); - } else if (jj_2_1496(2)) { + } else if (jj_2_1498(2)) { jj_consume_token(JSON_OBJECT); - } else if (jj_2_1497(2)) { + } else if (jj_2_1499(2)) { jj_consume_token(JSON_SCOPE); - } else if (jj_2_1498(2)) { + } else if (jj_2_1500(2)) { jj_consume_token(LANGUAGE); - } else if (jj_2_1499(2)) { + } else if (jj_2_1501(2)) { jj_consume_token(LATERAL); - } else if (jj_2_1500(2)) { + } else if (jj_2_1502(2)) { jj_consume_token(LN); - } else if (jj_2_1501(2)) { + } else if (jj_2_1503(2)) { jj_consume_token(MATCH); - } else if (jj_2_1502(2)) { + } else if (jj_2_1504(2)) { jj_consume_token(MATCH_RECOGNIZE); - } else if (jj_2_1503(2)) { + } else if (jj_2_1505(2)) { jj_consume_token(MEMBER); - } else if (jj_2_1504(2)) { + } else if (jj_2_1506(2)) { jj_consume_token(MINUTE); - } else if (jj_2_1505(2)) { + } else if (jj_2_1507(2)) { jj_consume_token(MODULE); - } else if (jj_2_1506(2)) { + } else if (jj_2_1508(2)) { jj_consume_token(NATIONAL); - } else if (jj_2_1507(2)) { + } else if (jj_2_1509(2)) { jj_consume_token(NEW); - } else if (jj_2_1508(2)) { + } else if (jj_2_1510(2)) { jj_consume_token(NONE); - } else if (jj_2_1509(2)) { + } else if (jj_2_1511(2)) { jj_consume_token(NTILE); - } else if (jj_2_1510(2)) { + } else if (jj_2_1512(2)) { jj_consume_token(OCCURRENCES_REGEX); - } else if (jj_2_1511(2)) { + } else if (jj_2_1513(2)) { jj_consume_token(OLD); - } else if (jj_2_1512(2)) { + } else if (jj_2_1514(2)) { jj_consume_token(ONLY); - } else if (jj_2_1513(2)) { + } else if (jj_2_1515(2)) { jj_consume_token(OUT); - } else if (jj_2_1514(2)) { + } else if (jj_2_1516(2)) { jj_consume_token(OVERLAY); - } else if (jj_2_1515(2)) { + } else if (jj_2_1517(2)) { jj_consume_token(PER); - } else if (jj_2_1516(2)) { + } else if (jj_2_1518(2)) { jj_consume_token(PERCENTILE_DISC); - } else if (jj_2_1517(2)) { + } else if (jj_2_1519(2)) { jj_consume_token(PERMUTE); - } else if (jj_2_1518(2)) { + } else if (jj_2_1520(2)) { jj_consume_token(POSITION_REGEX); - } else if (jj_2_1519(2)) { + } else if (jj_2_1521(2)) { jj_consume_token(PRECISION); - } else if (jj_2_1520(2)) { + } else if (jj_2_1522(2)) { jj_consume_token(PROCEDURE); - } else if (jj_2_1521(2)) { + } else if (jj_2_1523(2)) { jj_consume_token(RANK); - } else if (jj_2_1522(2)) { + } else if (jj_2_1524(2)) { jj_consume_token(RECURSIVE); - } else if (jj_2_1523(2)) { + } else if (jj_2_1525(2)) { jj_consume_token(REFERENCING); - } else if (jj_2_1524(2)) { + } else if (jj_2_1526(2)) { jj_consume_token(REGR_COUNT); - } else if (jj_2_1525(2)) { + } else if (jj_2_1527(2)) { jj_consume_token(REGR_SLOPE); - } else if (jj_2_1526(2)) { + } else if (jj_2_1528(2)) { jj_consume_token(REGR_SYY); - } else if (jj_2_1527(2)) { + } else if (jj_2_1529(2)) { jj_consume_token(RESULT); - } else if (jj_2_1528(2)) { + } else if (jj_2_1530(2)) { jj_consume_token(REVOKE); - } else if (jj_2_1529(2)) { + } else if (jj_2_1531(2)) { jj_consume_token(ROWS); - } else if (jj_2_1530(2)) { + } else if (jj_2_1532(2)) { jj_consume_token(SAFE_CAST); - } else if (jj_2_1531(2)) { + } else if (jj_2_1533(2)) { jj_consume_token(SAVEPOINT); - } else if (jj_2_1532(2)) { + } else if (jj_2_1534(2)) { jj_consume_token(SEARCH); - } else if (jj_2_1533(2)) { + } else if (jj_2_1535(2)) { jj_consume_token(SENSITIVE); - } else if (jj_2_1534(2)) { + } else if (jj_2_1536(2)) { jj_consume_token(SIMILAR); - } else if (jj_2_1535(2)) { + } else if (jj_2_1537(2)) { jj_consume_token(SPECIFIC); - } else if (jj_2_1536(2)) { + } else if (jj_2_1538(2)) { jj_consume_token(SQLEXCEPTION); - } else if (jj_2_1537(2)) { + } else if (jj_2_1539(2)) { jj_consume_token(SQRT); - } else if (jj_2_1538(2)) { + } else if (jj_2_1540(2)) { jj_consume_token(STDDEV_POP); - } else if (jj_2_1539(2)) { + } else if (jj_2_1541(2)) { jj_consume_token(SUBMULTISET); - } else if (jj_2_1540(2)) { + } else if (jj_2_1542(2)) { jj_consume_token(SUBSTRING_REGEX); - } else if (jj_2_1541(2)) { + } else if (jj_2_1543(2)) { jj_consume_token(SYSTEM); - } else if (jj_2_1542(2)) { + } else if (jj_2_1544(2)) { jj_consume_token(TABLESAMPLE); - } else if (jj_2_1543(2)) { + } else if (jj_2_1545(2)) { jj_consume_token(TIMEZONE_HOUR); - } else if (jj_2_1544(2)) { + } else if (jj_2_1546(2)) { jj_consume_token(TRANSLATE); - } else if (jj_2_1545(2)) { + } else if (jj_2_1547(2)) { jj_consume_token(TREAT); - } else if (jj_2_1546(2)) { + } else if (jj_2_1548(2)) { jj_consume_token(TRIM_ARRAY); - } else if (jj_2_1547(2)) { + } else if (jj_2_1549(2)) { jj_consume_token(UESCAPE); - } else if (jj_2_1548(2)) { + } else if (jj_2_1550(2)) { jj_consume_token(UNNEST); - } else if (jj_2_1549(2)) { + } else if (jj_2_1551(2)) { jj_consume_token(VALUE); - } else if (jj_2_1550(2)) { + } else if (jj_2_1552(2)) { jj_consume_token(VARCHAR); - } else if (jj_2_1551(2)) { + } else if (jj_2_1553(2)) { jj_consume_token(VAR_SAMP); - } else if (jj_2_1552(2)) { + } else if (jj_2_1554(2)) { jj_consume_token(WIDTH_BUCKET); - } else if (jj_2_1553(2)) { + } else if (jj_2_1555(2)) { jj_consume_token(WITHOUT); - } else if (jj_2_1554(2)) { + } else if (jj_2_1556(2)) { jj_consume_token(TUESDAY); - } else if (jj_2_1555(2)) { + } else if (jj_2_1557(2)) { jj_consume_token(FRIDAY); } else { jj_consume_token(-1); @@ -10903,443 +10934,443 @@ final public void NonReservedKeyWord1of3() throws ParseException { /** @see #NonReservedKeyWord */ final public void NonReservedKeyWord2of3() throws ParseException { - if (jj_2_1556(2)) { + if (jj_2_1558(2)) { jj_consume_token(ABSOLUTE); - } else if (jj_2_1557(2)) { + } else if (jj_2_1559(2)) { jj_consume_token(ADD); - } else if (jj_2_1558(2)) { + } else if (jj_2_1560(2)) { jj_consume_token(ALWAYS); - } else if (jj_2_1559(2)) { + } else if (jj_2_1561(2)) { jj_consume_token(ARRAY_CONCAT_AGG); - } else if (jj_2_1560(2)) { + } else if (jj_2_1562(2)) { jj_consume_token(ASSIGNMENT); - } else if (jj_2_1561(2)) { + } else if (jj_2_1563(2)) { jj_consume_token(BEFORE); - } else if (jj_2_1562(2)) { + } else if (jj_2_1564(2)) { jj_consume_token(C); - } else if (jj_2_1563(2)) { + } else if (jj_2_1565(2)) { jj_consume_token(CATALOG_NAME); - } else if (jj_2_1564(2)) { + } else if (jj_2_1566(2)) { jj_consume_token(CHARACTERISTICS); - } else if (jj_2_1565(2)) { + } else if (jj_2_1567(2)) { jj_consume_token(CHARACTER_SET_NAME); - } else if (jj_2_1566(2)) { + } else if (jj_2_1568(2)) { jj_consume_token(COBOL); - } else if (jj_2_1567(2)) { + } else if (jj_2_1569(2)) { jj_consume_token(COLLATION_NAME); - } else if (jj_2_1568(2)) { + } else if (jj_2_1570(2)) { jj_consume_token(COMMAND_FUNCTION); - } else if (jj_2_1569(2)) { + } else if (jj_2_1571(2)) { jj_consume_token(CONDITIONAL); - } else if (jj_2_1570(2)) { + } else if (jj_2_1572(2)) { jj_consume_token(CONNECTION_NAME); - } else if (jj_2_1571(2)) { + } else if (jj_2_1573(2)) { jj_consume_token(CONSTRAINTS); - } else if (jj_2_1572(2)) { + } else if (jj_2_1574(2)) { jj_consume_token(CONTAINS_SUBSTR); - } else if (jj_2_1573(2)) { + } else if (jj_2_1575(2)) { jj_consume_token(DATA); - } else if (jj_2_1574(2)) { + } else if (jj_2_1576(2)) { jj_consume_token(DATE_TRUNC); - } else if (jj_2_1575(2)) { + } else if (jj_2_1577(2)) { jj_consume_token(DATETIME_INTERVAL_PRECISION); - } else if (jj_2_1576(2)) { + } else if (jj_2_1578(2)) { jj_consume_token(DAYOFYEAR); - } else if (jj_2_1577(2)) { + } else if (jj_2_1579(2)) { jj_consume_token(DEFAULTS); - } else if (jj_2_1578(2)) { + } else if (jj_2_1580(2)) { jj_consume_token(DEFINED); - } else if (jj_2_1579(2)) { + } else if (jj_2_1581(2)) { jj_consume_token(DEPTH); - } else if (jj_2_1580(2)) { + } else if (jj_2_1582(2)) { jj_consume_token(DESCRIPTION); - } else if (jj_2_1581(2)) { + } else if (jj_2_1583(2)) { jj_consume_token(DISPATCH); - } else if (jj_2_1582(2)) { + } else if (jj_2_1584(2)) { jj_consume_token(DOY); - } else if (jj_2_1583(2)) { + } else if (jj_2_1585(2)) { jj_consume_token(DYNAMIC_FUNCTION_CODE); - } else if (jj_2_1584(2)) { + } else if (jj_2_1586(2)) { jj_consume_token(ERROR); - } else if (jj_2_1585(2)) { + } else if (jj_2_1587(2)) { jj_consume_token(EXCLUDING); - } else if (jj_2_1586(2)) { + } else if (jj_2_1588(2)) { jj_consume_token(FOLLOWING); - } else if (jj_2_1587(2)) { + } else if (jj_2_1589(2)) { jj_consume_token(FOUND); - } else if (jj_2_1588(2)) { + } else if (jj_2_1590(2)) { jj_consume_token(GENERAL); - } else if (jj_2_1589(2)) { + } else if (jj_2_1591(2)) { jj_consume_token(GO); - } else if (jj_2_1590(2)) { + } else if (jj_2_1592(2)) { jj_consume_token(GROUP_CONCAT); - } else if (jj_2_1591(2)) { + } else if (jj_2_1593(2)) { jj_consume_token(HOURS); - } else if (jj_2_1592(2)) { + } else if (jj_2_1594(2)) { jj_consume_token(IMMEDIATE); - } else if (jj_2_1593(2)) { + } else if (jj_2_1595(2)) { jj_consume_token(INCLUDE); - } else if (jj_2_1594(2)) { + } else if (jj_2_1596(2)) { jj_consume_token(INITIALLY); - } else if (jj_2_1595(2)) { + } else if (jj_2_1597(2)) { jj_consume_token(INSTANTIABLE); - } else if (jj_2_1596(2)) { + } else if (jj_2_1598(2)) { jj_consume_token(ISOLATION); - } else if (jj_2_1597(2)) { + } else if (jj_2_1599(2)) { jj_consume_token(JSON); - } else if (jj_2_1598(2)) { + } else if (jj_2_1600(2)) { jj_consume_token(KEY_MEMBER); - } else if (jj_2_1599(2)) { + } else if (jj_2_1601(2)) { jj_consume_token(LAST); - } else if (jj_2_1600(2)) { + } else if (jj_2_1602(2)) { jj_consume_token(LIBRARY); - } else if (jj_2_1601(2)) { + } else if (jj_2_1603(2)) { jj_consume_token(MAP); - } else if (jj_2_1602(2)) { + } else if (jj_2_1604(2)) { jj_consume_token(MESSAGE_LENGTH); - } else if (jj_2_1603(2)) { + } else if (jj_2_1605(2)) { jj_consume_token(MICROSECOND); - } else if (jj_2_1604(2)) { + } else if (jj_2_1606(2)) { jj_consume_token(MINUTES); - } else if (jj_2_1605(2)) { + } else if (jj_2_1607(2)) { jj_consume_token(MORE_); - } else if (jj_2_1606(2)) { + } else if (jj_2_1608(2)) { jj_consume_token(NAMES); - } else if (jj_2_1607(2)) { + } else if (jj_2_1609(2)) { jj_consume_token(NORMALIZED); - } else if (jj_2_1608(2)) { + } else if (jj_2_1610(2)) { jj_consume_token(NUMBER); - } else if (jj_2_1609(2)) { + } else if (jj_2_1611(2)) { jj_consume_token(OPTION); - } else if (jj_2_1610(2)) { + } else if (jj_2_1612(2)) { jj_consume_token(ORDINALITY); - } else if (jj_2_1611(2)) { + } else if (jj_2_1613(2)) { jj_consume_token(OVERRIDING); - } else if (jj_2_1612(2)) { + } else if (jj_2_1614(2)) { jj_consume_token(PARAMETER_NAME); - } else if (jj_2_1613(2)) { + } else if (jj_2_1615(2)) { jj_consume_token(PARAMETER_SPECIFIC_NAME); - } else if (jj_2_1614(2)) { + } else if (jj_2_1616(2)) { jj_consume_token(PASCAL); - } else if (jj_2_1615(2)) { + } else if (jj_2_1617(2)) { jj_consume_token(PAST); - } else if (jj_2_1616(2)) { + } else if (jj_2_1618(2)) { jj_consume_token(PLACING); - } else if (jj_2_1617(2)) { + } else if (jj_2_1619(2)) { jj_consume_token(PRECEDING); - } else if (jj_2_1618(2)) { + } else if (jj_2_1620(2)) { jj_consume_token(PRIVILEGES); - } else if (jj_2_1619(2)) { + } else if (jj_2_1621(2)) { jj_consume_token(QUARTERS); - } else if (jj_2_1620(2)) { + } else if (jj_2_1622(2)) { jj_consume_token(REPEATABLE); - } else if (jj_2_1621(2)) { + } else if (jj_2_1623(2)) { jj_consume_token(RESTART); - } else if (jj_2_1622(2)) { + } else if (jj_2_1624(2)) { jj_consume_token(RETURNED_LENGTH); - } else if (jj_2_1623(2)) { + } else if (jj_2_1625(2)) { jj_consume_token(RETURNING); - } else if (jj_2_1624(2)) { + } else if (jj_2_1626(2)) { jj_consume_token(ROUTINE); - } else if (jj_2_1625(2)) { + } else if (jj_2_1627(2)) { jj_consume_token(ROUTINE_SCHEMA); - } else if (jj_2_1626(2)) { + } else if (jj_2_1628(2)) { jj_consume_token(SCALE); - } else if (jj_2_1627(2)) { + } else if (jj_2_1629(2)) { jj_consume_token(SCOPE_CATALOGS); - } else if (jj_2_1628(2)) { + } else if (jj_2_1630(2)) { jj_consume_token(SECONDS); - } else if (jj_2_1629(2)) { + } else if (jj_2_1631(2)) { jj_consume_token(SELF); - } else if (jj_2_1630(2)) { + } else if (jj_2_1632(2)) { jj_consume_token(SERIALIZABLE); - } else if (jj_2_1631(2)) { + } else if (jj_2_1633(2)) { jj_consume_token(SESSION); - } else if (jj_2_1632(2)) { + } else if (jj_2_1634(2)) { jj_consume_token(SIZE); - } else if (jj_2_1633(2)) { + } else if (jj_2_1635(2)) { jj_consume_token(SPECIFIC_NAME); - } else if (jj_2_1634(2)) { + } else if (jj_2_1636(2)) { jj_consume_token(SQL_BIT); - } else if (jj_2_1635(2)) { + } else if (jj_2_1637(2)) { jj_consume_token(SQL_CHAR); - } else if (jj_2_1636(2)) { + } else if (jj_2_1638(2)) { jj_consume_token(SQL_DECIMAL); - } else if (jj_2_1637(2)) { + } else if (jj_2_1639(2)) { jj_consume_token(SQL_INTEGER); - } else if (jj_2_1638(2)) { + } else if (jj_2_1640(2)) { jj_consume_token(SQL_INTERVAL_DAY_TO_MINUTE); - } else if (jj_2_1639(2)) { + } else if (jj_2_1641(2)) { jj_consume_token(SQL_INTERVAL_HOUR_TO_MINUTE); - } else if (jj_2_1640(2)) { + } else if (jj_2_1642(2)) { jj_consume_token(SQL_INTERVAL_MINUTE_TO_SECOND); - } else if (jj_2_1641(2)) { + } else if (jj_2_1643(2)) { jj_consume_token(SQL_INTERVAL_YEAR); - } else if (jj_2_1642(2)) { + } else if (jj_2_1644(2)) { jj_consume_token(SQL_LONGVARCHAR); - } else if (jj_2_1643(2)) { + } else if (jj_2_1645(2)) { jj_consume_token(SQL_NCLOB); - } else if (jj_2_1644(2)) { + } else if (jj_2_1646(2)) { jj_consume_token(SQL_REAL); - } else if (jj_2_1645(2)) { + } else if (jj_2_1647(2)) { jj_consume_token(SQL_TIMESTAMP); - } else if (jj_2_1646(2)) { + } else if (jj_2_1648(2)) { jj_consume_token(SQL_TSI_FRAC_SECOND); - } else if (jj_2_1647(2)) { + } else if (jj_2_1649(2)) { jj_consume_token(SQL_TSI_MINUTE); - } else if (jj_2_1648(2)) { + } else if (jj_2_1650(2)) { jj_consume_token(SQL_TSI_SECOND); - } else if (jj_2_1649(2)) { + } else if (jj_2_1651(2)) { jj_consume_token(SQL_VARBINARY); - } else if (jj_2_1650(2)) { + } else if (jj_2_1652(2)) { jj_consume_token(STATEMENT); - } else if (jj_2_1651(2)) { + } else if (jj_2_1653(2)) { jj_consume_token(STYLE); - } else if (jj_2_1652(2)) { + } else if (jj_2_1654(2)) { jj_consume_token(TABLE_NAME); - } else if (jj_2_1653(2)) { + } else if (jj_2_1655(2)) { jj_consume_token(TIME_DIFF); - } else if (jj_2_1654(2)) { + } else if (jj_2_1656(2)) { jj_consume_token(TIMESTAMPDIFF); - } else if (jj_2_1655(2)) { + } else if (jj_2_1657(2)) { jj_consume_token(TOP_LEVEL_COUNT); - } else if (jj_2_1656(2)) { + } else if (jj_2_1658(2)) { jj_consume_token(TRANSACTIONS_COMMITTED); - } else if (jj_2_1657(2)) { + } else if (jj_2_1659(2)) { jj_consume_token(TRANSFORMS); - } else if (jj_2_1658(2)) { + } else if (jj_2_1660(2)) { jj_consume_token(TRIGGER_SCHEMA); - } else if (jj_2_1659(2)) { + } else if (jj_2_1661(2)) { jj_consume_token(UNBOUNDED); - } else if (jj_2_1660(2)) { + } else if (jj_2_1662(2)) { jj_consume_token(UNDER); - } else if (jj_2_1661(2)) { + } else if (jj_2_1663(2)) { jj_consume_token(USAGE); - } else if (jj_2_1662(2)) { + } else if (jj_2_1664(2)) { jj_consume_token(USER_DEFINED_TYPE_NAME); - } else if (jj_2_1663(2)) { + } else if (jj_2_1665(2)) { jj_consume_token(UTF32); - } else if (jj_2_1664(2)) { + } else if (jj_2_1666(2)) { jj_consume_token(VIEW); - } else if (jj_2_1665(2)) { + } else if (jj_2_1667(2)) { jj_consume_token(WORK); - } else if (jj_2_1666(2)) { + } else if (jj_2_1668(2)) { jj_consume_token(XML); - } else if (jj_2_1667(2)) { + } else if (jj_2_1669(2)) { jj_consume_token(TEMPLATE); - } else if (jj_2_1668(2)) { + } else if (jj_2_1670(2)) { jj_consume_token(ATOMICITY); - } else if (jj_2_1669(2)) { + } else if (jj_2_1671(2)) { jj_consume_token(CACHE_NAME); - } else if (jj_2_1670(2)) { + } else if (jj_2_1672(2)) { jj_consume_token(ENCRYPTED); - } else if (jj_2_1671(2)) { + } else if (jj_2_1673(2)) { jj_consume_token(LOGGING); - } else if (jj_2_1672(2)) { + } else if (jj_2_1674(2)) { jj_consume_token(KILL); - } else if (jj_2_1673(2)) { + } else if (jj_2_1675(2)) { jj_consume_token(SERVICE); - } else if (jj_2_1674(2)) { + } else if (jj_2_1676(2)) { jj_consume_token(QUERY); - } else if (jj_2_1675(2)) { + } else if (jj_2_1677(2)) { jj_consume_token(ANALYZE); - } else if (jj_2_1676(2)) { + } else if (jj_2_1678(2)) { jj_consume_token(ABS); - } else if (jj_2_1677(2)) { + } else if (jj_2_1679(2)) { jj_consume_token(ARE); - } else if (jj_2_1678(2)) { + } else if (jj_2_1680(2)) { jj_consume_token(AT); - } else if (jj_2_1679(2)) { + } else if (jj_2_1681(2)) { jj_consume_token(AVG); - } else if (jj_2_1680(2)) { + } else if (jj_2_1682(2)) { jj_consume_token(BEGIN_PARTITION); - } else if (jj_2_1681(2)) { + } else if (jj_2_1683(2)) { jj_consume_token(BIT); - } else if (jj_2_1682(2)) { + } else if (jj_2_1684(2)) { jj_consume_token(CALL); - } else if (jj_2_1683(2)) { + } else if (jj_2_1685(2)) { jj_consume_token(CASCADED); - } else if (jj_2_1684(2)) { + } else if (jj_2_1686(2)) { jj_consume_token(CHAR); - } else if (jj_2_1685(2)) { + } else if (jj_2_1687(2)) { jj_consume_token(CHAR_LENGTH); - } else if (jj_2_1686(2)) { + } else if (jj_2_1688(2)) { jj_consume_token(CLOB); - } else if (jj_2_1687(2)) { + } else if (jj_2_1689(2)) { jj_consume_token(COLLATE); - } else if (jj_2_1688(2)) { + } else if (jj_2_1690(2)) { jj_consume_token(CONDITION); - } else if (jj_2_1689(2)) { + } else if (jj_2_1691(2)) { jj_consume_token(CONVERT); - } else if (jj_2_1690(2)) { + } else if (jj_2_1692(2)) { jj_consume_token(COUNT); - } else if (jj_2_1691(2)) { + } else if (jj_2_1693(2)) { jj_consume_token(CUBE); - } else if (jj_2_1692(2)) { + } else if (jj_2_1694(2)) { jj_consume_token(CURRENT_CATALOG); - } else if (jj_2_1693(2)) { + } else if (jj_2_1695(2)) { jj_consume_token(CURRENT_ROLE); - } else if (jj_2_1694(2)) { + } else if (jj_2_1696(2)) { jj_consume_token(CURSOR); - } else if (jj_2_1695(2)) { + } else if (jj_2_1697(2)) { jj_consume_token(DATETIME); - } else if (jj_2_1696(2)) { + } else if (jj_2_1698(2)) { jj_consume_token(DEC); - } else if (jj_2_1697(2)) { + } else if (jj_2_1699(2)) { jj_consume_token(DEFINE); - } else if (jj_2_1698(2)) { + } else if (jj_2_1700(2)) { jj_consume_token(DESCRIBE); - } else if (jj_2_1699(2)) { + } else if (jj_2_1701(2)) { jj_consume_token(DISCONNECT); - } else if (jj_2_1700(2)) { + } else if (jj_2_1702(2)) { jj_consume_token(EACH); - } else if (jj_2_1701(2)) { + } else if (jj_2_1703(2)) { jj_consume_token(END); - } else if (jj_2_1702(2)) { + } else if (jj_2_1704(2)) { jj_consume_token(END_PARTITION); - } else if (jj_2_1703(2)) { + } else if (jj_2_1705(2)) { jj_consume_token(EVERY); - } else if (jj_2_1704(2)) { + } else if (jj_2_1706(2)) { jj_consume_token(EXP); - } else if (jj_2_1705(2)) { + } else if (jj_2_1707(2)) { jj_consume_token(EXTRACT); - } else if (jj_2_1706(2)) { + } else if (jj_2_1708(2)) { jj_consume_token(FLOAT); - } else if (jj_2_1707(2)) { + } else if (jj_2_1709(2)) { jj_consume_token(FRAME_ROW); - } else if (jj_2_1708(2)) { + } else if (jj_2_1710(2)) { jj_consume_token(FUSION); - } else if (jj_2_1709(2)) { + } else if (jj_2_1711(2)) { jj_consume_token(GRANT); - } else if (jj_2_1710(2)) { + } else if (jj_2_1712(2)) { jj_consume_token(HOLD); - } else if (jj_2_1711(2)) { + } else if (jj_2_1713(2)) { jj_consume_token(IMPORT); - } else if (jj_2_1712(2)) { + } else if (jj_2_1714(2)) { jj_consume_token(INOUT); - } else if (jj_2_1713(2)) { + } else if (jj_2_1715(2)) { jj_consume_token(INTEGER); - } else if (jj_2_1714(2)) { + } else if (jj_2_1716(2)) { jj_consume_token(JSON_ARRAYAGG); - } else if (jj_2_1715(2)) { + } else if (jj_2_1717(2)) { jj_consume_token(JSON_OBJECTAGG); - } else if (jj_2_1716(2)) { + } else if (jj_2_1718(2)) { jj_consume_token(JSON_VALUE); - } else if (jj_2_1717(2)) { + } else if (jj_2_1719(2)) { jj_consume_token(LARGE); - } else if (jj_2_1718(2)) { + } else if (jj_2_1720(2)) { jj_consume_token(LEAD); - } else if (jj_2_1719(2)) { + } else if (jj_2_1721(2)) { jj_consume_token(LOCAL); - } else if (jj_2_1720(2)) { + } else if (jj_2_1722(2)) { jj_consume_token(MATCHES); - } else if (jj_2_1721(2)) { + } else if (jj_2_1723(2)) { jj_consume_token(MAX); - } else if (jj_2_1722(2)) { + } else if (jj_2_1724(2)) { jj_consume_token(METHOD); - } else if (jj_2_1723(2)) { + } else if (jj_2_1725(2)) { jj_consume_token(MOD); - } else if (jj_2_1724(2)) { + } else if (jj_2_1726(2)) { jj_consume_token(MONTH); - } else if (jj_2_1725(2)) { + } else if (jj_2_1727(2)) { jj_consume_token(NCHAR); - } else if (jj_2_1726(2)) { + } else if (jj_2_1728(2)) { jj_consume_token(NEXT); - } else if (jj_2_1727(2)) { + } else if (jj_2_1729(2)) { jj_consume_token(NORMALIZE); - } else if (jj_2_1728(2)) { + } else if (jj_2_1730(2)) { jj_consume_token(NULLIF); - } else if (jj_2_1729(2)) { + } else if (jj_2_1731(2)) { jj_consume_token(OCTET_LENGTH); - } else if (jj_2_1730(2)) { + } else if (jj_2_1732(2)) { jj_consume_token(OMIT); - } else if (jj_2_1731(2)) { + } else if (jj_2_1733(2)) { jj_consume_token(OPEN); - } else if (jj_2_1732(2)) { + } else if (jj_2_1734(2)) { jj_consume_token(OVER); - } else if (jj_2_1733(2)) { + } else if (jj_2_1735(2)) { jj_consume_token(PARAMETER); - } else if (jj_2_1734(2)) { + } else if (jj_2_1736(2)) { jj_consume_token(PERCENT); - } else if (jj_2_1735(2)) { + } else if (jj_2_1737(2)) { jj_consume_token(PERCENT_RANK); - } else if (jj_2_1736(2)) { + } else if (jj_2_1738(2)) { jj_consume_token(PORTION); - } else if (jj_2_1737(2)) { + } else if (jj_2_1739(2)) { jj_consume_token(POWER); - } else if (jj_2_1738(2)) { + } else if (jj_2_1740(2)) { jj_consume_token(PREPARE); - } else if (jj_2_1739(2)) { + } else if (jj_2_1741(2)) { jj_consume_token(QUALIFY); - } else if (jj_2_1740(2)) { + } else if (jj_2_1742(2)) { jj_consume_token(READS); - } else if (jj_2_1741(2)) { + } else if (jj_2_1743(2)) { jj_consume_token(REF); - } else if (jj_2_1742(2)) { + } else if (jj_2_1744(2)) { jj_consume_token(REGR_AVGX); - } else if (jj_2_1743(2)) { + } else if (jj_2_1745(2)) { jj_consume_token(REGR_INTERCEPT); - } else if (jj_2_1744(2)) { + } else if (jj_2_1746(2)) { jj_consume_token(REGR_SXX); - } else if (jj_2_1745(2)) { + } else if (jj_2_1747(2)) { jj_consume_token(RELEASE); - } else if (jj_2_1746(2)) { + } else if (jj_2_1748(2)) { jj_consume_token(RETURN); - } else if (jj_2_1747(2)) { + } else if (jj_2_1749(2)) { jj_consume_token(ROLLBACK); - } else if (jj_2_1748(2)) { + } else if (jj_2_1750(2)) { jj_consume_token(ROW_NUMBER); - } else if (jj_2_1749(2)) { + } else if (jj_2_1751(2)) { jj_consume_token(SAFE_OFFSET); - } else if (jj_2_1750(2)) { + } else if (jj_2_1752(2)) { jj_consume_token(SCOPE); - } else if (jj_2_1751(2)) { + } else if (jj_2_1753(2)) { jj_consume_token(SECOND); - } else if (jj_2_1752(2)) { + } else if (jj_2_1754(2)) { jj_consume_token(SESSION_USER); - } else if (jj_2_1753(2)) { + } else if (jj_2_1755(2)) { jj_consume_token(SKIP_); - } else if (jj_2_1754(2)) { + } else if (jj_2_1756(2)) { jj_consume_token(SPECIFICTYPE); - } else if (jj_2_1755(2)) { + } else if (jj_2_1757(2)) { jj_consume_token(SQLSTATE); - } else if (jj_2_1756(2)) { + } else if (jj_2_1758(2)) { jj_consume_token(START); - } else if (jj_2_1757(2)) { + } else if (jj_2_1759(2)) { jj_consume_token(STDDEV_SAMP); - } else if (jj_2_1758(2)) { + } else if (jj_2_1760(2)) { jj_consume_token(SUBSET); - } else if (jj_2_1759(2)) { + } else if (jj_2_1761(2)) { jj_consume_token(SUCCEEDS); - } else if (jj_2_1760(2)) { + } else if (jj_2_1762(2)) { jj_consume_token(SYSTEM_TIME); - } else if (jj_2_1761(2)) { + } else if (jj_2_1763(2)) { jj_consume_token(TIME); - } else if (jj_2_1762(2)) { + } else if (jj_2_1764(2)) { jj_consume_token(TIMEZONE_MINUTE); - } else if (jj_2_1763(2)) { + } else if (jj_2_1765(2)) { jj_consume_token(TRANSLATE_REGEX); - } else if (jj_2_1764(2)) { + } else if (jj_2_1766(2)) { jj_consume_token(TRIGGER); - } else if (jj_2_1765(2)) { + } else if (jj_2_1767(2)) { jj_consume_token(TRUNCATE); - } else if (jj_2_1766(2)) { + } else if (jj_2_1768(2)) { jj_consume_token(UNIQUE); - } else if (jj_2_1767(2)) { + } else if (jj_2_1769(2)) { jj_consume_token(UPPER); - } else if (jj_2_1768(2)) { + } else if (jj_2_1770(2)) { jj_consume_token(VALUE_OF); - } else if (jj_2_1769(2)) { + } else if (jj_2_1771(2)) { jj_consume_token(VARYING); - } else if (jj_2_1770(2)) { + } else if (jj_2_1772(2)) { jj_consume_token(VERSIONING); - } else if (jj_2_1771(2)) { + } else if (jj_2_1773(2)) { jj_consume_token(WINDOW); - } else if (jj_2_1772(2)) { + } else if (jj_2_1774(2)) { jj_consume_token(YEAR); - } else if (jj_2_1773(2)) { + } else if (jj_2_1775(2)) { jj_consume_token(WEDNESDAY); - } else if (jj_2_1774(2)) { + } else if (jj_2_1776(2)) { jj_consume_token(SATURDAY); } else { jj_consume_token(-1); @@ -23782,65 +23813,18 @@ final private boolean jj_2_1774(int xla) { finally { jj_save(1773, xla); } } - final private boolean jj_3_644() { - if (jj_scan_token(UESCAPE)) return true; - if (jj_scan_token(QUOTED_STRING)) return true; - return false; - } - - final private boolean jj_3_651() { - if (jj_scan_token(UNICODE_QUOTED_IDENTIFIER)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_644()) jj_scanpos = xsp; - return false; - } - - final private boolean jj_3_267() { - if (jj_scan_token(REPEATABLE)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - - final private boolean jj_3_650() { - if (jj_scan_token(BRACKET_QUOTED_IDENTIFIER)) return true; - return false; - } - - final private boolean jj_3_266() { - if (jj_scan_token(SYSTEM)) return true; - return false; - } - - final private boolean jj_3_265() { - if (jj_scan_token(BERNOULLI)) return true; - return false; - } - - final private boolean jj_3_649() { - if (jj_scan_token(BIG_QUERY_BACK_QUOTED_IDENTIFIER)) return true; - return false; - } - - final private boolean jj_3_269() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_265()) { - jj_scanpos = xsp; - if (jj_3_266()) return true; - } - if (jj_scan_token(LPAREN)) return true; - return false; - } - - final private boolean jj_3_648() { - if (jj_scan_token(BACK_QUOTED_IDENTIFIER)) return true; - return false; + final private boolean jj_2_1775(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_1775(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(1774, xla); } } - final private boolean jj_3_647() { - if (jj_scan_token(QUOTED_IDENTIFIER)) return true; - return false; + final private boolean jj_2_1776(int xla) { + jj_la = xla; jj_lastpos = jj_scanpos = token; + try { return !jj_3_1776(); } + catch(LookaheadSuccess ls) { return true; } + finally { jj_save(1775, xla); } } final private boolean jj_3_268() { @@ -23849,8 +23833,8 @@ final private boolean jj_3_268() { return false; } - final private boolean jj_3_646() { - if (jj_scan_token(HYPHENATED_IDENTIFIER)) return true; + final private boolean jj_3_647() { + if (jj_scan_token(IDENTIFIER)) return true; return false; } @@ -23865,18 +23849,9 @@ final private boolean jj_3R_177() { return false; } - final private boolean jj_3_645() { - if (jj_scan_token(IDENTIFIER)) return true; - return false; - } - - final private boolean jj_3R_271() { + final private boolean jj_3R_273() { Token xsp; xsp = jj_scanpos; - 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()) { @@ -23887,7 +23862,11 @@ final private boolean jj_3R_271() { jj_scanpos = xsp; if (jj_3_651()) { jj_scanpos = xsp; - if (jj_3_652()) return true; + if (jj_3_652()) { + jj_scanpos = xsp; + if (jj_3_653()) { + jj_scanpos = xsp; + if (jj_3_654()) return true; } } } @@ -23917,70 +23896,61 @@ final private boolean jj_3_262() { return false; } - final private boolean jj_3_261() { - if (jj_scan_token(AS)) return true; + final private boolean jj_3_645() { + if (jj_scan_token(SATURDAY)) return true; return false; } - final private boolean jj_3R_369() { + final private boolean jj_3_644() { + if (jj_scan_token(FRIDAY)) return true; return false; } - final private boolean jj_3_263() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_261()) jj_scanpos = xsp; - if (jj_3R_85()) return true; - xsp = jj_scanpos; - if (jj_3_262()) { - jj_scanpos = xsp; - if (jj_3R_176()) return true; - } + final private boolean jj_3_261() { + if (jj_scan_token(AS)) return true; return false; } final private boolean jj_3_643() { - if (jj_scan_token(SATURDAY)) return true; - return false; - } - - final private boolean jj_3_642() { - if (jj_scan_token(FRIDAY)) return true; + if (jj_scan_token(THURSDAY)) return true; return false; } - final private boolean jj_3_641() { - if (jj_scan_token(THURSDAY)) return true; + final private boolean jj_3R_371() { return false; } - final private boolean jj_3_640() { + final private boolean jj_3_642() { if (jj_scan_token(WEDNESDAY)) return true; return false; } - final private boolean jj_3_260() { - if (jj_3R_175()) return true; + final private boolean jj_3_263() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_261()) jj_scanpos = xsp; + if (jj_3R_85()) return true; + xsp = jj_scanpos; + if (jj_3_262()) { + jj_scanpos = xsp; + if (jj_3R_176()) return true; + } return false; } - final private boolean jj_3_639() { + final private boolean jj_3_641() { if (jj_scan_token(TUESDAY)) return true; return false; } - final private boolean jj_3_638() { + final private boolean jj_3_640() { if (jj_scan_token(MONDAY)) return true; return false; } - final private boolean jj_3R_268() { + final private boolean jj_3R_270() { 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()) { @@ -23989,7 +23959,11 @@ final private boolean jj_3R_268() { jj_scanpos = xsp; if (jj_3_642()) { jj_scanpos = xsp; - if (jj_3_643()) return true; + if (jj_3_643()) { + jj_scanpos = xsp; + if (jj_3_644()) { + jj_scanpos = xsp; + if (jj_3_645()) return true; } } } @@ -23999,13 +23973,28 @@ final private boolean jj_3R_268() { return false; } - final private boolean jj_3_637() { - if (jj_scan_token(SUNDAY)) return true; + final private boolean jj_3_639() { + if (jj_scan_token(SUNDAY)) return true; + return false; + } + + final private boolean jj_3_260() { + if (jj_3R_175()) return true; + return false; + } + + final private boolean jj_3_259() { + if (jj_3R_174()) return true; + return false; + } + + final private boolean jj_3_638() { + if (jj_scan_token(MILLENNIUM)) return true; return false; } - final private boolean jj_3_259() { - if (jj_3R_174()) return true; + final private boolean jj_3_637() { + if (jj_scan_token(CENTURY)) return true; return false; } @@ -24014,50 +24003,51 @@ final private boolean jj_3_258() { return false; } - final private boolean jj_3_253() { - if (jj_scan_token(LATERAL)) return true; + final private boolean jj_3_636() { + if (jj_scan_token(DECADE)) return true; return false; } - final private boolean jj_3_636() { - if (jj_scan_token(MILLENNIUM)) return true; + final private boolean jj_3_635() { + if (jj_scan_token(EPOCH)) return true; return false; } - final private boolean jj_3_635() { - if (jj_scan_token(CENTURY)) return true; + final private boolean jj_3R_271() { return false; } - final private boolean jj_3_257() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_253()) jj_scanpos = xsp; - if (jj_3R_172()) return true; + final private boolean jj_3_253() { + if (jj_scan_token(LATERAL)) return true; return false; } final private boolean jj_3_634() { - if (jj_scan_token(DECADE)) return true; + if (jj_scan_token(YEAR)) return true; return false; } final private boolean jj_3_633() { - if (jj_scan_token(EPOCH)) return true; + if (jj_scan_token(QUARTER)) return true; return false; } - final private boolean jj_3R_269() { + final private boolean jj_3_257() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_253()) jj_scanpos = xsp; + if (jj_3R_172()) return true; return false; } final private boolean jj_3_632() { - if (jj_scan_token(YEAR)) return true; + if (jj_scan_token(MONTH)) return true; return false; } - final private boolean jj_3_631() { - if (jj_scan_token(QUARTER)) return true; + final private boolean jj_3_617() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_270()) return true; return false; } @@ -24067,25 +24057,40 @@ final private boolean jj_3_252() { return false; } - final private boolean jj_3_630() { - if (jj_scan_token(MONTH)) return true; + final private boolean jj_3_251() { + if (jj_3R_166()) return true; return false; } - final private boolean jj_3_615() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_268()) return true; + final private boolean jj_3_256() { + if (jj_scan_token(UNNEST)) return true; + if (jj_3R_171()) return true; return false; } - final private boolean jj_3_251() { - if (jj_3R_166()) return true; + final private boolean jj_3_631() { + if (jj_scan_token(WEEK)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_617()) { + jj_scanpos = xsp; + if (jj_3R_271()) return true; + } return false; } - final private boolean jj_3_256() { - if (jj_scan_token(UNNEST)) return true; - if (jj_3R_171()) return true; + final private boolean jj_3_630() { + if (jj_scan_token(ISOYEAR)) return true; + return false; + } + + final private boolean jj_3_629() { + if (jj_scan_token(ISODOW)) return true; + return false; + } + + final private boolean jj_3_628() { + if (jj_scan_token(DOY)) return true; return false; } @@ -24099,14 +24104,8 @@ final private boolean jj_3_250() { return false; } - final private boolean jj_3_629() { - if (jj_scan_token(WEEK)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_615()) { - jj_scanpos = xsp; - if (jj_3R_269()) return true; - } + final private boolean jj_3_627() { + if (jj_scan_token(DOW)) return true; return false; } @@ -24115,13 +24114,13 @@ final private boolean jj_3_247() { return false; } - final private boolean jj_3_628() { - if (jj_scan_token(ISOYEAR)) return true; + final private boolean jj_3_626() { + if (jj_scan_token(DAYOFYEAR)) return true; return false; } - final private boolean jj_3_627() { - if (jj_scan_token(ISODOW)) return true; + final private boolean jj_3_625() { + if (jj_scan_token(DAYOFWEEK)) return true; return false; } @@ -24138,8 +24137,8 @@ final private boolean jj_3_255() { return false; } - final private boolean jj_3_626() { - if (jj_scan_token(DOY)) return true; + final private boolean jj_3_624() { + if (jj_scan_token(DAY)) return true; return false; } @@ -24148,13 +24147,13 @@ final private boolean jj_3_245() { return false; } - final private boolean jj_3_625() { - if (jj_scan_token(DOW)) return true; + final private boolean jj_3_623() { + if (jj_scan_token(HOUR)) return true; return false; } - final private boolean jj_3_624() { - if (jj_scan_token(DAYOFYEAR)) return true; + final private boolean jj_3_622() { + if (jj_scan_token(MINUTE)) return true; return false; } @@ -24163,11 +24162,11 @@ final private boolean jj_3R_169() { xsp = jj_scanpos; if (jj_3_245()) { jj_scanpos = xsp; - if (jj_3R_369()) return true; + if (jj_3R_371()) return true; } xsp = jj_scanpos; if (jj_3_246()) jj_scanpos = xsp; - if (jj_3R_370()) return true; + if (jj_3R_372()) return true; xsp = jj_scanpos; if (jj_3_247()) jj_scanpos = xsp; xsp = jj_scanpos; @@ -24175,53 +24174,24 @@ final private boolean jj_3R_169() { return false; } - final private boolean jj_3_623() { - if (jj_scan_token(DAYOFWEEK)) return true; - return false; - } - - final private boolean jj_3_622() { - if (jj_scan_token(DAY)) return true; - return false; - } - final private boolean jj_3_621() { - if (jj_scan_token(HOUR)) return true; - return false; - } - - final private boolean jj_3_249() { - if (jj_3R_167()) return true; - return false; - } - - final private boolean jj_3_620() { - if (jj_scan_token(MINUTE)) return true; - return false; - } - - final private boolean jj_3_619() { if (jj_scan_token(SECOND)) return true; return false; } - final private boolean jj_3_618() { + final private boolean jj_3_620() { if (jj_scan_token(MILLISECOND)) return true; return false; } - final private boolean jj_3_617() { + final private boolean jj_3_619() { if (jj_scan_token(MICROSECOND)) return true; return false; } - final private boolean jj_3R_267() { + final private boolean jj_3R_269() { Token xsp; xsp = jj_scanpos; - 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()) { @@ -24258,7 +24228,11 @@ final private boolean jj_3R_267() { jj_scanpos = xsp; if (jj_3_635()) { jj_scanpos = xsp; - if (jj_3_636()) return true; + if (jj_3_636()) { + jj_scanpos = xsp; + if (jj_3_637()) { + jj_scanpos = xsp; + if (jj_3_638()) return true; } } } @@ -24282,7 +24256,12 @@ final private boolean jj_3R_267() { return false; } - final private boolean jj_3_616() { + final private boolean jj_3_249() { + if (jj_3R_167()) return true; + return false; + } + + final private boolean jj_3_618() { if (jj_scan_token(NANOSECOND)) return true; return false; } @@ -24298,7 +24277,7 @@ final private boolean jj_3_254() { return false; } - final private boolean jj_3R_341() { + final private boolean jj_3R_343() { Token xsp; xsp = jj_scanpos; if (jj_3_254()) { @@ -24325,83 +24304,83 @@ final private boolean jj_3R_341() { return false; } - final private boolean jj_3_614() { + final private boolean jj_3_616() { if (jj_3R_85()) return true; return false; } - final private boolean jj_3R_328() { + final private boolean jj_3R_330() { Token xsp; xsp = jj_scanpos; - if (jj_3_613()) { + if (jj_3_615()) { jj_scanpos = xsp; - if (jj_3_614()) return true; + if (jj_3_616()) return true; } return false; } - final private boolean jj_3_613() { - if (jj_3R_267()) return true; + final private boolean jj_3_615() { + if (jj_3R_269()) return true; return false; } final private boolean jj_3R_70() { - if (jj_3R_341()) return true; + if (jj_3R_343()) return true; return false; } - final private boolean jj_3_609() { + final private boolean jj_3_611() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_257()) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3_610() { + final private boolean jj_3_612() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_257()) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3_612() { - if (jj_3R_255()) return true; + final private boolean jj_3_614() { + if (jj_3R_257()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_610()) jj_scanpos = xsp; + if (jj_3_612()) jj_scanpos = xsp; return false; } - final private boolean jj_3_608() { - if (jj_3R_254()) return true; + final private boolean jj_3_610() { + if (jj_3R_256()) return true; return false; } - final private boolean jj_3_607() { - if (jj_3R_253()) return true; + final private boolean jj_3_609() { + if (jj_3R_255()) return true; return false; } - final private boolean jj_3_606() { - if (jj_3R_262()) return true; + final private boolean jj_3_608() { + if (jj_3R_264()) return true; return false; } - final private boolean jj_3_605() { - if (jj_3R_261()) return true; + final private boolean jj_3_607() { + if (jj_3R_263()) return true; return false; } - final private boolean jj_3_604() { - if (jj_3R_252()) return true; + final private boolean jj_3_606() { + if (jj_3R_254()) return true; return false; } - final private boolean jj_3_603() { - if (jj_3R_260()) return true; + final private boolean jj_3_605() { + if (jj_3R_262()) return true; return false; } - final private boolean jj_3_602() { - if (jj_3R_258()) return true; + final private boolean jj_3_604() { + if (jj_3R_260()) return true; return false; } @@ -24411,13 +24390,9 @@ final private boolean jj_3_244() { return false; } - final private boolean jj_3_611() { + final private boolean jj_3_613() { Token xsp; xsp = jj_scanpos; - if (jj_3_602()) { - jj_scanpos = xsp; - if (jj_3_603()) { - jj_scanpos = xsp; if (jj_3_604()) { jj_scanpos = xsp; if (jj_3_605()) { @@ -24426,23 +24401,27 @@ final private boolean jj_3_611() { jj_scanpos = xsp; if (jj_3_607()) { jj_scanpos = xsp; - if (jj_3_608()) return true; + if (jj_3_608()) { + jj_scanpos = xsp; + if (jj_3_609()) { + jj_scanpos = xsp; + if (jj_3_610()) return true; } } } } } } - if (jj_3R_256()) return true; + if (jj_3R_258()) return true; return false; } - final private boolean jj_3R_251() { + final private boolean jj_3R_253() { Token xsp; xsp = jj_scanpos; - if (jj_3_611()) { + if (jj_3_613()) { jj_scanpos = xsp; - if (jj_3_612()) return true; + if (jj_3_614()) return true; } return false; } @@ -24453,136 +24432,136 @@ final private boolean jj_3_243() { return false; } - final private boolean jj_3R_266() { + final private boolean jj_3R_268() { return false; } - final private boolean jj_3_592() { + final private boolean jj_3_594() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_257()) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3_593() { + final private boolean jj_3_595() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_257()) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3_590() { + final private boolean jj_3_592() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_257()) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3R_265() { + final private boolean jj_3R_267() { return false; } - final private boolean jj_3_601() { - if (jj_3R_255()) return true; + final private boolean jj_3_603() { + if (jj_3R_257()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_593()) { + if (jj_3_595()) { jj_scanpos = xsp; - if (jj_3R_266()) return true; + if (jj_3R_268()) return true; } return false; } - final private boolean jj_3_591() { + final private boolean jj_3_593() { if (jj_scan_token(TO)) return true; - if (jj_3R_255()) return true; + if (jj_3R_257()) return true; return false; } - final private boolean jj_3_241() { - if (jj_scan_token(USING)) return true; - if (jj_3R_123()) return true; + final private boolean jj_3_588() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3_586() { - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_590() { if (jj_3R_257()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_588()) jj_scanpos = xsp; return false; } - final private boolean jj_3_588() { - if (jj_3R_255()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_586()) jj_scanpos = xsp; + final private boolean jj_3R_266() { return false; } - final private boolean jj_3R_264() { + final private boolean jj_3_241() { + if (jj_scan_token(USING)) return true; + if (jj_3R_123()) return true; return false; } - final private boolean jj_3_587() { - if (jj_3R_254()) return true; + final private boolean jj_3_589() { + if (jj_3R_256()) return true; return false; } - final private boolean jj_3_600() { - if (jj_3R_254()) return true; + final private boolean jj_3_602() { if (jj_3R_256()) return true; + if (jj_3R_258()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_591()) { + if (jj_3_593()) { jj_scanpos = xsp; - if (jj_3R_265()) return true; + if (jj_3R_267()) return true; } return false; } - final private boolean jj_3_240() { - if (jj_scan_token(ON)) return true; - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3_589() { + final private boolean jj_3_591() { if (jj_scan_token(TO)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_587()) { + if (jj_3_589()) { jj_scanpos = xsp; - if (jj_3_588()) return true; + if (jj_3_590()) return true; } return false; } - final private boolean jj_3_584() { - if (jj_3R_255()) return true; - if (jj_3R_256()) return true; + final private boolean jj_3_586() { + if (jj_3R_257()) return true; + if (jj_3R_258()) return true; return false; } - final private boolean jj_3R_263() { + final private boolean jj_3_240() { + if (jj_scan_token(ON)) return true; + if (jj_3R_82()) return true; return false; } - final private boolean jj_3_583() { - if (jj_3R_254()) return true; + final private boolean jj_3R_265() { return false; } - final private boolean jj_3_599() { - if (jj_3R_253()) return true; + final private boolean jj_3_585() { if (jj_3R_256()) return true; + return false; + } + + final private boolean jj_3_601() { + if (jj_3R_255()) return true; + if (jj_3R_258()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_589()) { + if (jj_3_591()) { jj_scanpos = xsp; - if (jj_3R_264()) return true; + if (jj_3R_266()) return true; } return false; } - final private boolean jj_3_582() { - if (jj_3R_253()) return true; + final private boolean jj_3_584() { + if (jj_3R_255()) return true; return false; } @@ -24606,89 +24585,80 @@ final private boolean jj_3_242() { return false; } - final private boolean jj_3_585() { + final private boolean jj_3_587() { if (jj_scan_token(TO)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_582()) { + if (jj_3_584()) { jj_scanpos = xsp; - if (jj_3_583()) { + if (jj_3_585()) { jj_scanpos = xsp; - if (jj_3_584()) return true; + if (jj_3_586()) return true; } } return false; } - final private boolean jj_3_598() { - if (jj_3R_262()) return true; - if (jj_3R_256()) return true; + final private boolean jj_3_600() { + if (jj_3R_264()) return true; + if (jj_3R_258()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_585()) { + if (jj_3_587()) { jj_scanpos = xsp; - if (jj_3R_263()) return true; + if (jj_3R_265()) return true; } return false; } - final private boolean jj_3_597() { - if (jj_3R_261()) return true; - if (jj_3R_256()) return true; + final private boolean jj_3_599() { + if (jj_3R_263()) return true; + if (jj_3R_258()) return true; return false; } - final private boolean jj_3_596() { - if (jj_3R_252()) return true; - if (jj_3R_256()) return true; + final private boolean jj_3_598() { + if (jj_3R_254()) return true; + if (jj_3R_258()) return true; return false; } - final private boolean jj_3R_259() { + final private boolean jj_3R_261() { return false; } - final private boolean jj_3_581() { + final private boolean jj_3_583() { if (jj_scan_token(TO)) return true; - if (jj_3R_252()) return true; - return false; - } - - final private boolean jj_3_595() { - if (jj_3R_260()) return true; - if (jj_3R_256()) return true; + if (jj_3R_254()) return true; return false; } - final private boolean jj_3_239() { - if (jj_3R_67()) return true; + final private boolean jj_3_597() { + if (jj_3R_262()) return true; + if (jj_3R_258()) return true; return false; } - final private boolean jj_3_594() { + final private boolean jj_3_596() { + if (jj_3R_260()) return true; if (jj_3R_258()) return true; - if (jj_3R_256()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_581()) { + if (jj_3_583()) { jj_scanpos = xsp; - if (jj_3R_259()) return true; + if (jj_3R_261()) return true; } return false; } - final private boolean jj_3R_362() { - if (jj_3R_70()) return true; + final private boolean jj_3_239() { + if (jj_3R_67()) return true; return false; } final private boolean jj_3R_214() { Token xsp; xsp = jj_scanpos; - if (jj_3_594()) { - jj_scanpos = xsp; - if (jj_3_595()) { - jj_scanpos = xsp; if (jj_3_596()) { jj_scanpos = xsp; if (jj_3_597()) { @@ -24699,7 +24669,11 @@ final private boolean jj_3R_214() { jj_scanpos = xsp; if (jj_3_600()) { jj_scanpos = xsp; - if (jj_3_601()) return true; + if (jj_3_601()) { + jj_scanpos = xsp; + if (jj_3_602()) { + jj_scanpos = xsp; + if (jj_3_603()) return true; } } } @@ -24710,12 +24684,37 @@ final private boolean jj_3R_214() { return false; } - final private boolean jj_3_580() { + final private boolean jj_3R_364() { + if (jj_3R_70()) return true; + return false; + } + + final private boolean jj_3_582() { if (jj_scan_token(SECONDS)) return true; return false; } - final private boolean jj_3R_255() { + final private boolean jj_3R_257() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_581()) { + jj_scanpos = xsp; + if (jj_3_582()) return true; + } + return false; + } + + final private boolean jj_3_581() { + if (jj_scan_token(SECOND)) return true; + return false; + } + + final private boolean jj_3_580() { + if (jj_scan_token(MINUTES)) return true; + return false; + } + + final private boolean jj_3R_256() { Token xsp; xsp = jj_scanpos; if (jj_3_579()) { @@ -24726,16 +24725,16 @@ final private boolean jj_3R_255() { } final private boolean jj_3_579() { - if (jj_scan_token(SECOND)) return true; + if (jj_scan_token(MINUTE)) return true; return false; } final private boolean jj_3_578() { - if (jj_scan_token(MINUTES)) return true; + if (jj_scan_token(HOURS)) return true; return false; } - final private boolean jj_3R_254() { + final private boolean jj_3R_255() { Token xsp; xsp = jj_scanpos; if (jj_3_577()) { @@ -24745,22 +24744,22 @@ final private boolean jj_3R_254() { return false; } - final private boolean jj_3_577() { - if (jj_scan_token(MINUTE)) return true; + final private boolean jj_3R_149() { + if (jj_3R_364()) return true; return false; } - final private boolean jj_3R_149() { - if (jj_3R_362()) return true; + final private boolean jj_3_577() { + if (jj_scan_token(HOUR)) return true; return false; } final private boolean jj_3_576() { - if (jj_scan_token(HOURS)) return true; + if (jj_scan_token(DAYS)) return true; return false; } - final private boolean jj_3R_253() { + final private boolean jj_3R_264() { Token xsp; xsp = jj_scanpos; if (jj_3_575()) { @@ -24770,27 +24769,38 @@ final private boolean jj_3R_253() { return false; } + final private boolean jj_3_232() { + if (jj_scan_token(OUTER)) return true; + return false; + } + final private boolean jj_3_575() { - if (jj_scan_token(HOUR)) return true; + if (jj_scan_token(DAY)) return true; return false; } - final private boolean jj_3_232() { + final private boolean jj_3_231() { if (jj_scan_token(OUTER)) return true; return false; } - final private boolean jj_3_231() { + final private boolean jj_3_230() { if (jj_scan_token(OUTER)) return true; return false; } + final private boolean jj_3_238() { + if (jj_scan_token(CROSS)) return true; + if (jj_scan_token(JOIN)) return true; + return false; + } + final private boolean jj_3_574() { - if (jj_scan_token(DAYS)) return true; + if (jj_scan_token(WEEKS)) return true; return false; } - final private boolean jj_3R_262() { + final private boolean jj_3R_263() { Token xsp; xsp = jj_scanpos; if (jj_3_573()) { @@ -24800,22 +24810,6 @@ final private boolean jj_3R_262() { return false; } - final private boolean jj_3_230() { - if (jj_scan_token(OUTER)) return true; - return false; - } - - final private boolean jj_3_573() { - if (jj_scan_token(DAY)) return true; - return false; - } - - final private boolean jj_3_238() { - if (jj_scan_token(CROSS)) return true; - if (jj_scan_token(JOIN)) return true; - return false; - } - final private boolean jj_3_237() { if (jj_scan_token(FULL)) return true; Token xsp; @@ -24825,6 +24819,11 @@ final private boolean jj_3_237() { return false; } + final private boolean jj_3_573() { + if (jj_scan_token(WEEK)) return true; + return false; + } + final private boolean jj_3_236() { if (jj_scan_token(RIGHT)) return true; Token xsp; @@ -24834,21 +24833,6 @@ final private boolean jj_3_236() { return false; } - final private boolean jj_3_572() { - if (jj_scan_token(WEEKS)) return true; - return false; - } - - final private boolean jj_3R_261() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_571()) { - jj_scanpos = xsp; - if (jj_3_572()) return true; - } - return false; - } - final private boolean jj_3_235() { if (jj_scan_token(LEFT)) return true; Token xsp; @@ -24858,37 +24842,37 @@ final private boolean jj_3_235() { return false; } - final private boolean jj_3_571() { - if (jj_scan_token(WEEK)) return true; - return false; - } - final private boolean jj_3_234() { if (jj_scan_token(INNER)) return true; if (jj_scan_token(JOIN)) return true; return false; } - final private boolean jj_3_233() { - if (jj_scan_token(JOIN)) return true; + final private boolean jj_3_572() { + if (jj_scan_token(MONTHS)) return true; return false; } - final private boolean jj_3_570() { - if (jj_scan_token(MONTHS)) return true; + final private boolean jj_3_233() { + if (jj_scan_token(JOIN)) return true; return false; } - final private boolean jj_3R_252() { + final private boolean jj_3R_254() { Token xsp; xsp = jj_scanpos; - if (jj_3_569()) { + if (jj_3_571()) { jj_scanpos = xsp; - if (jj_3_570()) return true; + if (jj_3_572()) return true; } return false; } + final private boolean jj_3_571() { + if (jj_scan_token(MONTH)) return true; + return false; + } + final private boolean jj_3R_164() { Token xsp; xsp = jj_scanpos; @@ -24911,41 +24895,36 @@ final private boolean jj_3R_164() { return false; } - final private boolean jj_3_569() { - if (jj_scan_token(MONTH)) return true; - return false; - } - - final private boolean jj_3_568() { + final private boolean jj_3_570() { if (jj_scan_token(QUARTERS)) return true; return false; } - final private boolean jj_3R_368() { - return false; - } - - final private boolean jj_3R_260() { + final private boolean jj_3R_262() { Token xsp; xsp = jj_scanpos; - if (jj_3_567()) { + if (jj_3_569()) { jj_scanpos = xsp; - if (jj_3_568()) return true; + if (jj_3_570()) return true; } return false; } - final private boolean jj_3_567() { + final private boolean jj_3_569() { if (jj_scan_token(QUARTER)) return true; return false; } + final private boolean jj_3R_370() { + return false; + } + final private boolean jj_3R_163() { Token xsp; xsp = jj_scanpos; if (jj_3_229()) { jj_scanpos = xsp; - if (jj_3R_368()) return true; + if (jj_3R_370()) return true; } return false; } @@ -24955,22 +24934,22 @@ final private boolean jj_3_229() { return false; } - final private boolean jj_3_566() { + final private boolean jj_3_568() { if (jj_scan_token(YEARS)) return true; return false; } - final private boolean jj_3R_258() { + final private boolean jj_3R_260() { Token xsp; xsp = jj_scanpos; - if (jj_3_565()) { + if (jj_3_567()) { jj_scanpos = xsp; - if (jj_3_566()) return true; + if (jj_3_568()) return true; } return false; } - final private boolean jj_3_565() { + final private boolean jj_3_567() { if (jj_scan_token(YEAR)) return true; return false; } @@ -24980,7 +24959,12 @@ final private boolean jj_3_228() { return false; } - final private boolean jj_3R_361() { + final private boolean jj_3_564() { + if (jj_3R_151()) return true; + return false; + } + + final private boolean jj_3R_363() { Token xsp; xsp = jj_scanpos; if (jj_3_227()) { @@ -24995,43 +24979,38 @@ final private boolean jj_3_227() { return false; } - final private boolean jj_3_562() { - if (jj_3R_151()) return true; - return false; - } - - final private boolean jj_3_561() { + final private boolean jj_3_563() { if (jj_3R_196()) return true; return false; } - final private boolean jj_3R_162() { - if (jj_3R_367()) return true; - return false; - } - - final private boolean jj_3_560() { + final private boolean jj_3_562() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_82()) return true; return false; } - final private boolean jj_3_225() { - if (jj_3R_85()) return true; + final private boolean jj_3R_162() { + if (jj_3R_369()) return true; return false; } - final private boolean jj_3_564() { + final private boolean jj_3_566() { Token xsp; xsp = jj_scanpos; - if (jj_3_560()) { + if (jj_3_562()) { jj_scanpos = xsp; - if (jj_3_561()) { + if (jj_3_563()) { jj_scanpos = xsp; - if (jj_3_562()) return true; + if (jj_3_564()) return true; } } - if (jj_3R_251()) return true; + if (jj_3R_253()) return true; + return false; + } + + final private boolean jj_3_225() { + if (jj_3R_85()) return true; return false; } @@ -25052,46 +25031,46 @@ final private boolean jj_3_226() { return false; } - final private boolean jj_3_563() { - if (jj_3R_244()) return true; + final private boolean jj_3_565() { + if (jj_3R_246()) return true; if (jj_3R_214()) return true; return false; } - final private boolean jj_3R_143() { - if (jj_3R_361()) return true; + final private boolean jj_3_560() { + if (jj_scan_token(PLUS)) return true; return false; } - final private boolean jj_3_558() { - if (jj_scan_token(PLUS)) return true; + final private boolean jj_3R_143() { + if (jj_3R_363()) return true; return false; } - final private boolean jj_3_559() { + final private boolean jj_3_561() { Token xsp; xsp = jj_scanpos; - if (jj_3_557()) { + if (jj_3_559()) { jj_scanpos = xsp; - if (jj_3_558()) return true; + if (jj_3_560()) return true; } return false; } - final private boolean jj_3_557() { + final private boolean jj_3_559() { if (jj_scan_token(MINUS)) return true; return false; } - final private boolean jj_3R_243() { + final private boolean jj_3R_245() { if (jj_scan_token(INTERVAL)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_559()) jj_scanpos = xsp; + if (jj_3_561()) jj_scanpos = xsp; xsp = jj_scanpos; - if (jj_3_563()) { + if (jj_3_565()) { jj_scanpos = xsp; - if (jj_3_564()) return true; + if (jj_3_566()) return true; } return false; } @@ -25108,37 +25087,37 @@ final private boolean jj_3_222() { return false; } - final private boolean jj_3_221() { - if (jj_3R_123()) return true; - return false; - } - - final private boolean jj_3_555() { + final private boolean jj_3_557() { if (jj_scan_token(PLUS)) return true; return false; } - final private boolean jj_3_556() { + final private boolean jj_3_558() { Token xsp; xsp = jj_scanpos; - if (jj_3_554()) { + if (jj_3_556()) { jj_scanpos = xsp; - if (jj_3_555()) return true; + if (jj_3_557()) return true; } return false; } - final private boolean jj_3_554() { + final private boolean jj_3_556() { if (jj_scan_token(MINUS)) return true; return false; } + final private boolean jj_3_221() { + if (jj_3R_123()) return true; + return false; + } + final private boolean jj_3R_191() { if (jj_scan_token(INTERVAL)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_556()) jj_scanpos = xsp; - if (jj_3R_244()) return true; + if (jj_3_558()) jj_scanpos = xsp; + if (jj_3R_246()) return true; return false; } @@ -25160,32 +25139,37 @@ final private boolean jj_3_220() { return false; } - final private boolean jj_3R_250() { + final private boolean jj_3R_252() { return false; } - final private boolean jj_3R_160() { - if (jj_scan_token(WHEN)) return true; - if (jj_scan_token(MATCHED)) return true; + final private boolean jj_3_553() { + if (jj_3R_233()) return true; return false; } - final private boolean jj_3_551() { - if (jj_3R_233()) return true; + final private boolean jj_3R_160() { + if (jj_scan_token(WHEN)) return true; + if (jj_scan_token(MATCHED)) return true; return false; } - final private boolean jj_3_553() { + final private boolean jj_3_555() { if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_551()) { + if (jj_3_553()) { jj_scanpos = xsp; - if (jj_3R_250()) return true; + if (jj_3R_252()) return true; } return false; } + final private boolean jj_3_552() { + if (jj_3R_171()) return true; + return false; + } + final private boolean jj_3_217() { if (jj_3R_159()) return true; return false; @@ -25196,8 +25180,9 @@ final private boolean jj_3_219() { return false; } - final private boolean jj_3_550() { - if (jj_3R_171()) return true; + final private boolean jj_3_551() { + if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(RPAREN)) return true; return false; } @@ -25206,9 +25191,13 @@ final private boolean jj_3_218() { return false; } - final private boolean jj_3_549() { - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(RPAREN)) return true; + final private boolean jj_3_554() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_551()) { + jj_scanpos = xsp; + if (jj_3_552()) return true; + } return false; } @@ -25230,100 +25219,95 @@ final private boolean jj_3_214() { return false; } - final private boolean jj_3_552() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_549()) { - jj_scanpos = xsp; - if (jj_3_550()) return true; - } - return false; - } - final private boolean jj_3_213() { if (jj_3R_156()) return true; return false; } - final private boolean jj_3R_115() { - if (jj_scan_token(MERGE)) return true; - if (jj_scan_token(INTO)) return true; - return false; - } - final private boolean jj_3R_226() { if (jj_scan_token(MAP)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_552()) { + if (jj_3_554()) { jj_scanpos = xsp; - if (jj_3_553()) return true; + if (jj_3_555()) return true; } return false; } - final private boolean jj_3R_395() { + final private boolean jj_3R_115() { + if (jj_scan_token(MERGE)) return true; + if (jj_scan_token(INTO)) return true; return false; } - final private boolean jj_3_546() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_249()) return true; + final private boolean jj_3R_397() { return false; } final private boolean jj_3_548() { - if (jj_3R_249()) return true; + if (jj_scan_token(COMMA)) return true; + if (jj_3R_251()) return true; return false; } - final private boolean jj_3_545() { + final private boolean jj_3_550() { + if (jj_3R_251()) return true; + return false; + } + + final private boolean jj_3_547() { if (jj_scan_token(COMMA)) return true; if (jj_3R_118()) return true; return false; } - final private boolean jj_3_547() { + final private boolean jj_3_549() { if (jj_3R_118()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_545()) { jj_scanpos = xsp; break; } + if (jj_3_547()) { jj_scanpos = xsp; break; } } return false; } - final private boolean jj_3_212() { - if (jj_3R_144()) return true; - return false; - } - - final private boolean jj_3R_249() { + final private boolean jj_3R_251() { if (jj_scan_token(LBRACE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_547()) { + if (jj_3_549()) { jj_scanpos = xsp; - if (jj_3_548()) { + if (jj_3_550()) { jj_scanpos = xsp; - if (jj_3R_395()) return true; + if (jj_3R_397()) return true; } } return false; } + final private boolean jj_3_212() { + if (jj_3R_144()) return true; + return false; + } + final private boolean jj_3_211() { if (jj_scan_token(COMMA)) return true; if (jj_3R_85()) return true; return false; } + final private boolean jj_3R_250() { + return false; + } + final private boolean jj_3_209() { if (jj_scan_token(AS)) return true; return false; } - final private boolean jj_3R_248() { + final private boolean jj_3_544() { + if (jj_3R_233()) return true; return false; } @@ -25345,18 +25329,13 @@ final private boolean jj_3_207() { return false; } - final private boolean jj_3_542() { - if (jj_3R_233()) return true; - return false; - } - - final private boolean jj_3_544() { + final private boolean jj_3_546() { if (jj_scan_token(LBRACKET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_542()) { + if (jj_3_544()) { jj_scanpos = xsp; - if (jj_3R_248()) return true; + if (jj_3R_250()) return true; } return false; } @@ -25367,23 +25346,34 @@ final private boolean jj_3R_114() { return false; } - final private boolean jj_3_541() { + final private boolean jj_3_543() { if (jj_3R_171()) return true; return false; } - final private boolean jj_3_540() { + final private boolean jj_3_542() { if (jj_scan_token(LPAREN)) return true; if (jj_scan_token(RPAREN)) return true; return false; } - final private boolean jj_3_543() { + final private boolean jj_3_545() { Token xsp; xsp = jj_scanpos; - if (jj_3_540()) { + if (jj_3_542()) { jj_scanpos = xsp; - if (jj_3_541()) return true; + if (jj_3_543()) return true; + } + return false; + } + + final private boolean jj_3R_225() { + if (jj_scan_token(ARRAY)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_545()) { + jj_scanpos = xsp; + if (jj_3_546()) return true; } return false; } @@ -25411,17 +25401,6 @@ final private boolean jj_3_203() { return false; } - final private boolean jj_3R_225() { - if (jj_scan_token(ARRAY)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_543()) { - jj_scanpos = xsp; - if (jj_3_544()) return true; - } - return false; - } - final private boolean jj_3_202() { if (jj_3R_156()) return true; return false; @@ -25433,30 +25412,30 @@ final private boolean jj_3R_113() { return false; } - final private boolean jj_3_537() { + final private boolean jj_3_539() { if (jj_scan_token(COMMA)) return true; if (jj_3R_79()) return true; return false; } - final private boolean jj_3_539() { + final private boolean jj_3_541() { if (jj_scan_token(LBRACKET)) return true; if (jj_3R_79()) return true; return false; } - final private boolean jj_3_536() { + final private boolean jj_3_538() { if (jj_scan_token(TIMESTAMP)) return true; return false; } - final private boolean jj_3_538() { + final private boolean jj_3_540() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_247()) return true; + if (jj_3R_249()) return true; return false; } - final private boolean jj_3_523() { + final private boolean jj_3_525() { if (jj_scan_token(LOCAL)) return true; return false; } @@ -25465,121 +25444,112 @@ final private boolean jj_3R_224() { if (jj_scan_token(MULTISET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_538()) { + if (jj_3_540()) { jj_scanpos = xsp; - if (jj_3_539()) return true; + if (jj_3_541()) return true; } return false; } - final private boolean jj_3_535() { + final private boolean jj_3_537() { if (jj_scan_token(DATETIME)) return true; return false; } - final private boolean jj_3_1108() { + final private boolean jj_3_1110() { if (jj_scan_token(JSON)) return true; return false; } - final private boolean jj_3_1107() { + final private boolean jj_3_1109() { if (jj_scan_token(JSON)) return true; if (jj_scan_token(SCALAR)) return true; return false; } - final private boolean jj_3_1106() { + final private boolean jj_3_1108() { if (jj_scan_token(JSON)) return true; if (jj_scan_token(ARRAY)) return true; return false; } - final private boolean jj_3_1105() { + final private boolean jj_3_1107() { if (jj_scan_token(JSON)) return true; if (jj_scan_token(OBJECT)) return true; return false; } - final private boolean jj_3_1104() { + final private boolean jj_3_1106() { if (jj_scan_token(JSON)) return true; if (jj_scan_token(VALUE)) return true; return false; } - final private boolean jj_3_1113() { + final private boolean jj_3_1115() { if (jj_scan_token(FORMAT)) return true; - if (jj_3R_309()) return true; + if (jj_3R_311()) return true; return false; } - final private boolean jj_3_522() { + final private boolean jj_3_524() { if (jj_scan_token(LOCAL)) return true; return false; } - final private boolean jj_3_1103() { + final private boolean jj_3_1105() { if (jj_scan_token(EMPTY)) return true; return false; } - final private boolean jj_3_201() { - if (jj_3R_158()) return true; - return false; - } - - final private boolean jj_3_534() { + final private boolean jj_3_536() { if (jj_scan_token(TIME)) return true; return false; } - final private boolean jj_3_1102() { + final private boolean jj_3_1104() { if (jj_scan_token(UNKNOWN)) return true; return false; } - final private boolean jj_3_1101() { + final private boolean jj_3_1103() { if (jj_scan_token(FALSE)) return true; return false; } - final private boolean jj_3_1100() { + final private boolean jj_3_1102() { if (jj_scan_token(TRUE)) return true; return false; } - final private boolean jj_3_1099() { + final private boolean jj_3_1101() { if (jj_scan_token(NULL)) return true; return false; } - final private boolean jj_3_200() { - if (jj_3R_157()) return true; + final private boolean jj_3_201() { + if (jj_3R_158()) return true; return false; } - final private boolean jj_3_199() { - if (jj_3R_156()) return true; + final private boolean jj_3_1100() { + if (jj_scan_token(JSON)) return true; return false; } - final private boolean jj_3_1098() { - if (jj_scan_token(JSON)) return true; + final private boolean jj_3_200() { + if (jj_3R_157()) return true; return false; } - final private boolean jj_3_1097() { + final private boolean jj_3_1099() { if (jj_scan_token(JSON)) return true; if (jj_scan_token(SCALAR)) return true; return false; } - final private boolean jj_3_1111() { + final private boolean jj_3_1113() { Token xsp; xsp = jj_scanpos; - 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()) { @@ -25594,7 +25564,11 @@ final private boolean jj_3_1111() { jj_scanpos = xsp; if (jj_3_1107()) { jj_scanpos = xsp; - if (jj_3_1108()) return true; + if (jj_3_1108()) { + jj_scanpos = xsp; + if (jj_3_1109()) { + jj_scanpos = xsp; + if (jj_3_1110()) return true; } } } @@ -25607,27 +25581,32 @@ final private boolean jj_3_1111() { return false; } - final private boolean jj_3_533() { + final private boolean jj_3_199() { + if (jj_3R_156()) return true; + return false; + } + + final private boolean jj_3_535() { if (jj_scan_token(DATE)) return true; return false; } - final private boolean jj_3_1096() { + final private boolean jj_3_1098() { if (jj_scan_token(JSON)) return true; if (jj_scan_token(ARRAY)) return true; return false; } - final private boolean jj_3R_289() { + final private boolean jj_3R_291() { Token xsp; xsp = jj_scanpos; - if (jj_3_533()) { + if (jj_3_535()) { jj_scanpos = xsp; - if (jj_3_534()) { + if (jj_3_536()) { jj_scanpos = xsp; - if (jj_3_535()) { + if (jj_3_537()) { jj_scanpos = xsp; - if (jj_3_536()) return true; + if (jj_3_538()) return true; } } } @@ -25635,54 +25614,59 @@ final private boolean jj_3R_289() { return false; } - final private boolean jj_3_198() { - if (jj_scan_token(UPSERT)) return true; - return false; - } - - final private boolean jj_3_1095() { + final private boolean jj_3_1097() { if (jj_scan_token(JSON)) return true; if (jj_scan_token(OBJECT)) return true; return false; } - final private boolean jj_3_1094() { + final private boolean jj_3_1096() { if (jj_scan_token(JSON)) return true; if (jj_scan_token(VALUE)) return true; return false; } - final private boolean jj_3_197() { - if (jj_scan_token(INSERT)) return true; - return false; - } - - final private boolean jj_3_1093() { + final private boolean jj_3_1095() { if (jj_scan_token(EMPTY)) return true; return false; } - final private boolean jj_3_1092() { + final private boolean jj_3_1094() { if (jj_scan_token(A)) return true; if (jj_scan_token(SET)) return true; return false; } - final private boolean jj_3_1091() { + final private boolean jj_3_198() { + if (jj_scan_token(UPSERT)) return true; + return false; + } + + final private boolean jj_3_1093() { if (jj_scan_token(UNKNOWN)) return true; return false; } - final private boolean jj_3_1090() { + final private boolean jj_3_1092() { if (jj_scan_token(FALSE)) return true; return false; } - final private boolean jj_3_1089() { + final private boolean jj_3_197() { + if (jj_scan_token(INSERT)) return true; + return false; + } + + final private boolean jj_3_1091() { if (jj_scan_token(TRUE)) return true; return false; } + final private boolean jj_3_1090() { + if (jj_scan_token(NULL)) return true; + return false; + } + final private boolean jj_3R_112() { Token xsp; xsp = jj_scanpos; @@ -25690,23 +25674,14 @@ final private boolean jj_3R_112() { jj_scanpos = xsp; if (jj_3_198()) return true; } - if (jj_3R_353()) return true; - return false; - } - - final private boolean jj_3_1088() { - if (jj_scan_token(NULL)) return true; + if (jj_3R_355()) return true; return false; } - final private boolean jj_3_1110() { + final private boolean jj_3_1112() { if (jj_scan_token(NOT)) return true; Token xsp; xsp = jj_scanpos; - 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()) { @@ -25723,7 +25698,11 @@ final private boolean jj_3_1110() { jj_scanpos = xsp; if (jj_3_1097()) { jj_scanpos = xsp; - if (jj_3_1098()) return true; + if (jj_3_1098()) { + jj_scanpos = xsp; + if (jj_3_1099()) { + jj_scanpos = xsp; + if (jj_3_1100()) return true; } } } @@ -25737,13 +25716,13 @@ final private boolean jj_3_1110() { return false; } - final private boolean jj_3_1109() { + final private boolean jj_3_1111() { if (jj_scan_token(A)) return true; if (jj_scan_token(SET)) return true; return false; } - final private boolean jj_3_532() { + final private boolean jj_3_534() { if (jj_scan_token(TIMESTAMP)) return true; if (jj_scan_token(WITH)) return true; return false; @@ -25752,77 +25731,77 @@ final private boolean jj_3_532() { final private boolean jj_3R_213() { Token xsp; xsp = jj_scanpos; - if (jj_3_1112()) { + if (jj_3_1114()) { jj_scanpos = xsp; - if (jj_3_1113()) return true; + if (jj_3_1115()) return true; } return false; } - final private boolean jj_3_1112() { + final private boolean jj_3_1114() { if (jj_scan_token(IS)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_1109()) { + if (jj_3_1111()) { jj_scanpos = xsp; - if (jj_3_1110()) { + if (jj_3_1112()) { jj_scanpos = xsp; - if (jj_3_1111()) return true; + if (jj_3_1113()) return true; } } return false; } - final private boolean jj_3_531() { + final private boolean jj_3_533() { if (jj_scan_token(TIME)) return true; if (jj_scan_token(WITH)) return true; return false; } - final private boolean jj_3_530() { + final private boolean jj_3_532() { if (jj_scan_token(TIMESTAMP)) return true; - if (jj_3R_244()) return true; + if (jj_3R_246()) return true; return false; } - final private boolean jj_3_1087() { + final private boolean jj_3_1089() { if (jj_scan_token(UNIQUE)) return true; return false; } - final private boolean jj_3_1086() { + final private boolean jj_3_1088() { if (jj_scan_token(EXISTS)) return true; return false; } - final private boolean jj_3_529() { + final private boolean jj_3_531() { if (jj_scan_token(TIME)) return true; - if (jj_3R_244()) return true; + if (jj_3R_246()) return true; return false; } - final private boolean jj_3_1085() { + final private boolean jj_3_1087() { if (jj_scan_token(NOT)) return true; return false; } - final private boolean jj_3_1084() { + final private boolean jj_3_1086() { if (jj_scan_token(MINUS)) return true; return false; } - final private boolean jj_3R_412() { + final private boolean jj_3R_414() { Token xsp; xsp = jj_scanpos; - 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()) return true; + if (jj_3_1087()) { + jj_scanpos = xsp; + if (jj_3_1088()) { + jj_scanpos = xsp; + if (jj_3_1089()) return true; } } } @@ -25830,149 +25809,139 @@ final private boolean jj_3R_412() { return false; } - final private boolean jj_3_1083() { + final private boolean jj_3_1085() { if (jj_scan_token(PLUS)) return true; return false; } - final private boolean jj_3_528() { + final private boolean jj_3_530() { if (jj_scan_token(DATETIME)) return true; - if (jj_3R_244()) return true; + if (jj_3R_246()) return true; return false; } - final private boolean jj_3_527() { + final private boolean jj_3_529() { if (jj_scan_token(DATE)) return true; - if (jj_3R_244()) return true; + if (jj_3R_246()) return true; return false; } - final private boolean jj_3_1082() { - if (jj_3R_336()) return true; + final private boolean jj_3_1084() { + if (jj_3R_338()) return true; return false; } - final private boolean jj_3_1081() { + final private boolean jj_3_1083() { if (jj_scan_token(IMMEDIATELY)) return true; if (jj_scan_token(SUCCEEDS)) return true; return false; } - final private boolean jj_3_1080() { + final private boolean jj_3_1082() { if (jj_scan_token(IMMEDIATELY)) return true; if (jj_scan_token(PRECEDES)) return true; return false; } - final private boolean jj_3_1079() { + final private boolean jj_3_1081() { if (jj_scan_token(SUCCEEDS)) return true; return false; } - final private boolean jj_3_196() { - if (jj_3R_155()) return true; - return false; - } - - final private boolean jj_3_526() { + final private boolean jj_3_528() { if (jj_scan_token(LBRACE_TS)) return true; if (jj_scan_token(QUOTED_STRING)) return true; return false; } - final private boolean jj_3_1078() { + final private boolean jj_3_1080() { if (jj_scan_token(PRECEDES)) return true; return false; } - final private boolean jj_3_1077() { + final private boolean jj_3_1079() { if (jj_scan_token(EQUALS)) return true; return false; } - final private boolean jj_3_1076() { + final private boolean jj_3_1078() { if (jj_scan_token(OVERLAPS)) return true; return false; } - final private boolean jj_3_1075() { + final private boolean jj_3_1077() { if (jj_scan_token(CONTAINS)) return true; return false; } - final private boolean jj_3_194() { - if (jj_scan_token(COMMA)) return true; + final private boolean jj_3_196() { if (jj_3R_155()) return true; return false; } - final private boolean jj_3_1074() { + final private boolean jj_3_1076() { 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_1073() { + final private boolean jj_3_1075() { if (jj_scan_token(SUBMULTISET)) return true; if (jj_scan_token(OF)) return true; return false; } - final private boolean jj_3_1072() { + final private boolean jj_3_1074() { if (jj_scan_token(MEMBER)) return true; if (jj_scan_token(OF)) return true; return false; } - final private boolean jj_3_525() { + final private boolean jj_3_527() { if (jj_scan_token(LBRACE_T)) return true; if (jj_scan_token(QUOTED_STRING)) return true; return false; } - final private boolean jj_3_1071() { + final private boolean jj_3_1073() { 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_1070() { + final private boolean jj_3_194() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_155()) return true; + return false; + } + + final private boolean jj_3_1072() { 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_1069() { + final private boolean jj_3_1071() { if (jj_scan_token(OR)) return true; return false; } - final private boolean jj_3_1068() { + final private boolean jj_3_1070() { if (jj_scan_token(AND)) return true; return false; } - final private boolean jj_3_195() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_155()) return true; - return false; - } - - final private boolean jj_3_1067() { + final private boolean jj_3_1069() { if (jj_scan_token(CONCAT)) return true; return false; } - final private boolean jj_3R_242() { + final private boolean jj_3R_244() { Token xsp; xsp = jj_scanpos; - if (jj_3_524()) { - jj_scanpos = xsp; - if (jj_3_525()) { - jj_scanpos = xsp; if (jj_3_526()) { jj_scanpos = xsp; if (jj_3_527()) { @@ -25985,7 +25954,11 @@ final private boolean jj_3R_242() { jj_scanpos = xsp; if (jj_3_531()) { jj_scanpos = xsp; - if (jj_3_532()) return true; + if (jj_3_532()) { + jj_scanpos = xsp; + if (jj_3_533()) { + jj_scanpos = xsp; + if (jj_3_534()) return true; } } } @@ -25997,93 +25970,93 @@ final private boolean jj_3R_242() { return false; } - final private boolean jj_3_524() { + final private boolean jj_3_526() { if (jj_scan_token(LBRACE_D)) return true; if (jj_scan_token(QUOTED_STRING)) return true; return false; } - final private boolean jj_3_1066() { - if (jj_scan_token(PERCENT_REMAINDER)) return true; + final private boolean jj_3_195() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_155()) return true; return false; } - final private boolean jj_3_1065() { - if (jj_scan_token(SLASH)) return true; + final private boolean jj_3_1068() { + if (jj_scan_token(PERCENT_REMAINDER)) return true; return false; } - final private boolean jj_3R_154() { - if (jj_scan_token(ORDER)) return true; - if (jj_scan_token(BY)) return true; + final private boolean jj_3_1067() { + if (jj_scan_token(SLASH)) return true; return false; } - final private boolean jj_3_1064() { + final private boolean jj_3_1066() { if (jj_scan_token(STAR)) return true; return false; } - final private boolean jj_3_1063() { + final private boolean jj_3_1065() { if (jj_scan_token(MINUS)) return true; return false; } - final private boolean jj_3_1062() { + final private boolean jj_3_1064() { if (jj_scan_token(PLUS)) return true; return false; } - final private boolean jj_3R_408() { + final private boolean jj_3R_154() { + if (jj_scan_token(ORDER)) return true; + if (jj_scan_token(BY)) return true; return false; } - final private boolean jj_3_193() { - if (jj_3R_154()) return true; + final private boolean jj_3_1063() { + if (jj_scan_token(NE2)) return true; return false; } - final private boolean jj_3_1061() { - if (jj_scan_token(NE2)) return true; + final private boolean jj_3R_410() { return false; } - final private boolean jj_3R_407() { + final private boolean jj_3_1062() { + if (jj_scan_token(NE)) return true; return false; } - final private boolean jj_3_1060() { - if (jj_scan_token(NE)) return true; + final private boolean jj_3_193() { + if (jj_3R_154()) return true; return false; } - final private boolean jj_3_521() { + final private boolean jj_3_523() { if (jj_scan_token(BIG_QUERY_DOUBLE_QUOTED_STRING)) return true; return false; } - final private boolean jj_3_1059() { + final private boolean jj_3_1061() { if (jj_scan_token(GE)) return true; return false; } - final private boolean jj_3_192() { - if (jj_scan_token(PARTITION)) return true; - if (jj_scan_token(BY)) return true; + final private boolean jj_3_1060() { + if (jj_scan_token(LE)) return true; return false; } - final private boolean jj_3_1058() { - if (jj_scan_token(LE)) return true; + final private boolean jj_3_1059() { + if (jj_scan_token(LT)) return true; return false; } - final private boolean jj_3_1057() { - if (jj_scan_token(LT)) return true; + final private boolean jj_3R_409() { return false; } - final private boolean jj_3_1056() { + final private boolean jj_3_1058() { if (jj_scan_token(GT)) return true; return false; } @@ -26091,10 +26064,6 @@ final private boolean jj_3_1056() { final private boolean jj_3R_211() { Token xsp; xsp = jj_scanpos; - 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()) { @@ -26145,7 +26114,11 @@ final private boolean jj_3R_211() { jj_scanpos = xsp; if (jj_3_1081()) { jj_scanpos = xsp; - if (jj_3_1082()) return true; + if (jj_3_1082()) { + jj_scanpos = xsp; + if (jj_3_1083()) { + jj_scanpos = xsp; + if (jj_3_1084()) return true; } } } @@ -26176,146 +26149,160 @@ final private boolean jj_3R_211() { return false; } - final private boolean jj_3_520() { + final private boolean jj_3_522() { if (jj_scan_token(BIG_QUERY_QUOTED_STRING)) return true; return false; } - final private boolean jj_3_1055() { + final private boolean jj_3_1057() { if (jj_scan_token(EQ)) return true; return false; } - final private boolean jj_3R_349() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_192()) { - jj_scanpos = xsp; - if (jj_3R_407()) return true; - } - xsp = jj_scanpos; - if (jj_3_193()) { - jj_scanpos = xsp; - if (jj_3R_408()) return true; - } + final private boolean jj_3_192() { + if (jj_scan_token(PARTITION)) return true; + if (jj_scan_token(BY)) return true; return false; } - final private boolean jj_3R_244() { + final private boolean jj_3R_246() { Token xsp; xsp = jj_scanpos; - if (jj_3_519()) { + if (jj_3_521()) { jj_scanpos = xsp; - if (jj_3_520()) { + if (jj_3_522()) { jj_scanpos = xsp; - if (jj_3_521()) return true; + if (jj_3_523()) return true; } } return false; } - final private boolean jj_3_519() { + final private boolean jj_3_521() { if (jj_scan_token(QUOTED_STRING)) return true; return false; } - final private boolean jj_3_1050() { + final private boolean jj_3R_351() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_192()) { + jj_scanpos = xsp; + if (jj_3R_409()) return true; + } + xsp = jj_scanpos; + if (jj_3_193()) { + jj_scanpos = xsp; + if (jj_3R_410()) return true; + } + return false; + } + + final private boolean jj_3_1052() { if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_1049() { + final private boolean jj_3_1051() { if (jj_scan_token(ALL)) return true; return false; } - final private boolean jj_3_1051() { + final private boolean jj_3_1053() { Token xsp; xsp = jj_scanpos; - if (jj_3_1049()) { + if (jj_3_1051()) { jj_scanpos = xsp; - if (jj_3_1050()) return true; + if (jj_3_1052()) return true; } return false; } - final private boolean jj_3_1047() { + final private boolean jj_3_1049() { if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_1054() { + final private boolean jj_3_1056() { if (jj_scan_token(EXCEPT)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_1051()) jj_scanpos = xsp; + if (jj_3_1053()) jj_scanpos = xsp; return false; } - final private boolean jj_3_1046() { + final private boolean jj_3_1048() { if (jj_scan_token(ALL)) return true; return false; } - final private boolean jj_3_1048() { + final private boolean jj_3_1050() { Token xsp; xsp = jj_scanpos; - if (jj_3_1046()) { + if (jj_3_1048()) { jj_scanpos = xsp; - if (jj_3_1047()) return true; + if (jj_3_1049()) return true; } return false; } final private boolean jj_3R_89() { if (jj_3R_80()) return true; - if (jj_3R_349()) return true; + if (jj_3R_351()) return true; return false; } - final private boolean jj_3_1044() { + final private boolean jj_3_1046() { if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_1053() { + final private boolean jj_3_1055() { if (jj_scan_token(INTERSECT)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_1048()) jj_scanpos = xsp; - return false; - } - - final private boolean jj_3R_348() { + if (jj_3_1050()) jj_scanpos = xsp; return false; } - final private boolean jj_3_1043() { + final private boolean jj_3_1045() { if (jj_scan_token(ALL)) return true; return false; } - final private boolean jj_3_1045() { + final private boolean jj_3_1047() { Token xsp; xsp = jj_scanpos; - if (jj_3_1043()) { + if (jj_3_1045()) { jj_scanpos = xsp; - if (jj_3_1044()) return true; + if (jj_3_1046()) return true; } return false; } + final private boolean jj_3_520() { + if (jj_scan_token(BIG_QUERY_QUOTED_STRING)) return true; + return false; + } + + final private boolean jj_3R_350() { + return false; + } + final private boolean jj_3_191() { if (jj_3R_154()) return true; return false; } - final private boolean jj_3_518() { - if (jj_scan_token(BIG_QUERY_QUOTED_STRING)) return true; + final private boolean jj_3_1054() { + if (jj_scan_token(UNION)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_1047()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_347() { + final private boolean jj_3R_349() { return false; } @@ -26325,116 +26312,112 @@ final private boolean jj_3_190() { return false; } - final private boolean jj_3_1052() { - if (jj_scan_token(UNION)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_1045()) jj_scanpos = xsp; - return false; - } - - final private boolean jj_3R_336() { + final private boolean jj_3R_338() { if (jj_scan_token(MULTISET)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_1052()) { + if (jj_3_1054()) { jj_scanpos = xsp; - if (jj_3_1053()) { + if (jj_3_1055()) { jj_scanpos = xsp; - if (jj_3_1054()) return true; + if (jj_3_1056()) return true; } } return false; } + final private boolean jj_3_519() { + if (jj_scan_token(BIG_QUERY_DOUBLE_QUOTED_STRING)) return true; + return false; + } + + final private boolean jj_3R_337() { + return false; + } + final private boolean jj_3R_88() { if (jj_3R_78()) return true; Token xsp; xsp = jj_scanpos; if (jj_3_190()) { jj_scanpos = xsp; - if (jj_3R_347()) return true; + if (jj_3R_349()) return true; } xsp = jj_scanpos; if (jj_3_191()) { jj_scanpos = xsp; - if (jj_3R_348()) return true; + if (jj_3R_350()) return true; } return false; } - final private boolean jj_3_517() { - if (jj_scan_token(BIG_QUERY_DOUBLE_QUOTED_STRING)) return true; - return false; - } - - final private boolean jj_3R_335() { - return false; - } - - final private boolean jj_3_1039() { + final private boolean jj_3_1041() { if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_1038() { + final private boolean jj_3_1040() { if (jj_scan_token(ALL)) return true; return false; } - final private boolean jj_3_516() { + final private boolean jj_3_518() { if (jj_scan_token(C_STYLE_ESCAPED_STRING_LITERAL)) return true; return false; } - final private boolean jj_3_1037() { + final private boolean jj_3_1039() { if (jj_scan_token(SET_MINUS)) return true; return false; } - final private boolean jj_3_1036() { + final private boolean jj_3_1038() { if (jj_scan_token(EXCEPT)) return true; return false; } - final private boolean jj_3_188() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_84()) return true; - return false; - } - - final private boolean jj_3R_334() { + final private boolean jj_3R_336() { return false; } - final private boolean jj_3_1035() { + final private boolean jj_3_1037() { if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_1042() { + final private boolean jj_3_1044() { Token xsp; xsp = jj_scanpos; - if (jj_3_1036()) { + if (jj_3_1038()) { jj_scanpos = xsp; - if (jj_3_1037()) return true; + if (jj_3_1039()) return true; } xsp = jj_scanpos; - if (jj_3_1038()) { + if (jj_3_1040()) { jj_scanpos = xsp; - if (jj_3_1039()) { + if (jj_3_1041()) { jj_scanpos = xsp; - if (jj_3R_335()) return true; + if (jj_3R_337()) return true; } } return false; } - final private boolean jj_3_1034() { + final private boolean jj_3_188() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_84()) return true; + return false; + } + + final private boolean jj_3_1036() { if (jj_scan_token(ALL)) return true; return false; } + final private boolean jj_3R_335() { + return false; + } + final private boolean jj_3_189() { if (jj_3R_153()) return true; Token xsp; @@ -26445,112 +26428,118 @@ final private boolean jj_3_189() { return false; } - final private boolean jj_3R_333() { - return false; - } - - final private boolean jj_3_1033() { + final private boolean jj_3_1035() { if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_1041() { + final private boolean jj_3_1043() { if (jj_scan_token(INTERSECT)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_1034()) { + if (jj_3_1036()) { jj_scanpos = xsp; - if (jj_3_1035()) { + if (jj_3_1037()) { jj_scanpos = xsp; - if (jj_3R_334()) return true; + if (jj_3R_336()) return true; } } return false; } - final private boolean jj_3_1032() { + final private boolean jj_3_1034() { if (jj_scan_token(ALL)) return true; return false; } - final private boolean jj_3R_354() { - if (jj_3R_151()) return true; - return false; - } - - final private boolean jj_3_1040() { + final private boolean jj_3_1042() { if (jj_scan_token(UNION)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_1032()) { + if (jj_3_1034()) { jj_scanpos = xsp; - if (jj_3_1033()) { + if (jj_3_1035()) { jj_scanpos = xsp; - if (jj_3R_333()) return true; + if (jj_3R_335()) return true; } } return false; } - final private boolean jj_3_1022() { + final private boolean jj_3_1024() { if (jj_scan_token(TRUNCATE)) return true; return false; } - final private boolean jj_3_513() { + final private boolean jj_3R_356() { + if (jj_3R_151()) return true; + return false; + } + + final private boolean jj_3_515() { if (jj_scan_token(UESCAPE)) return true; if (jj_scan_token(QUOTED_STRING)) return true; return false; } - final private boolean jj_3R_340() { + final private boolean jj_3R_342() { Token xsp; xsp = jj_scanpos; - if (jj_3_1040()) { + if (jj_3_1042()) { jj_scanpos = xsp; - if (jj_3_1041()) { + if (jj_3_1043()) { jj_scanpos = xsp; - if (jj_3_1042()) return true; + if (jj_3_1044()) return true; } } return false; } - final private boolean jj_3_1021() { + final private boolean jj_3_1023() { if (jj_scan_token(RIGHT)) return true; return false; } - final private boolean jj_3_1028() { + final private boolean jj_3_1030() { if (jj_3R_171()) return true; return false; } - final private boolean jj_3R_246() { + final private boolean jj_3R_248() { if (jj_scan_token(QUOTED_STRING)) return true; return false; } - final private boolean jj_3_1027() { + final private boolean jj_3_1029() { if (jj_scan_token(LPAREN)) return true; if (jj_scan_token(RPAREN)) return true; return false; } + final private boolean jj_3_1022() { + if (jj_scan_token(LEFT)) return true; + return false; + } + + final private boolean jj_3_1028() { + if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(STAR)) return true; + return false; + } + final private boolean jj_3R_116() { if (jj_scan_token(CALL)) return true; - if (jj_3R_354()) return true; + if (jj_3R_356()) return true; return false; } - final private boolean jj_3_1020() { - if (jj_scan_token(LEFT)) return true; + final private boolean jj_3_1027() { + if (jj_3R_333()) return true; return false; } final private boolean jj_3_1026() { - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(STAR)) return true; + if (jj_3R_332()) return true; return false; } @@ -26564,32 +26553,56 @@ final private boolean jj_3_182() { return false; } - final private boolean jj_3_1024() { - if (jj_3R_330()) return true; + final private boolean jj_3_1021() { + if (jj_scan_token(INSERT)) return true; return false; } - final private boolean jj_3_1023() { - if (jj_3R_329()) return true; + final private boolean jj_3R_334() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_1021()) { + jj_scanpos = xsp; + if (jj_3_1022()) { + jj_scanpos = xsp; + if (jj_3_1023()) { + jj_scanpos = xsp; + if (jj_3_1024()) return true; + } + } + } return false; } - final private boolean jj_3_1019() { - if (jj_scan_token(INSERT)) return true; + final private boolean jj_3_514() { + if (jj_scan_token(UNICODE_STRING_LITERAL)) return true; return false; } - final private boolean jj_3R_332() { + final private boolean jj_3_513() { + if (jj_scan_token(QUOTED_STRING)) return true; + return false; + } + + final private boolean jj_3_1033() { Token xsp; xsp = jj_scanpos; - if (jj_3_1019()) { + if (jj_3R_334()) { jj_scanpos = xsp; - if (jj_3_1020()) { + if (jj_3_1025()) { jj_scanpos = xsp; - if (jj_3_1021()) { + if (jj_3_1026()) { + jj_scanpos = xsp; + if (jj_3_1027()) return true; + } + } + } + xsp = jj_scanpos; + if (jj_3_1028()) { + jj_scanpos = xsp; + if (jj_3_1029()) { jj_scanpos = xsp; - if (jj_3_1022()) return true; - } + if (jj_3_1030()) return true; } } return false; @@ -26601,7 +26614,7 @@ final private boolean jj_3_181() { } final private boolean jj_3_512() { - if (jj_scan_token(UNICODE_STRING_LITERAL)) return true; + if (jj_scan_token(PREFIXED_STRING_LITERAL)) return true; return false; } @@ -26613,37 +26626,22 @@ final private boolean jj_3_187() { return false; } - final private boolean jj_3_511() { - if (jj_scan_token(QUOTED_STRING)) return true; - return false; - } - - final private boolean jj_3_1031() { + final private boolean jj_3_517() { Token xsp; xsp = jj_scanpos; - if (jj_3R_332()) { - jj_scanpos = xsp; - if (jj_3_1023()) { + if (jj_3_512()) { jj_scanpos = xsp; - if (jj_3_1024()) { + if (jj_3_513()) { jj_scanpos = xsp; - if (jj_3_1025()) return true; + if (jj_3_514()) return true; } } + while (true) { + xsp = jj_scanpos; + if (jj_3R_248()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3_1026()) { - jj_scanpos = xsp; - if (jj_3_1027()) { - jj_scanpos = xsp; - if (jj_3_1028()) return true; - } - } - return false; - } - - final private boolean jj_3_510() { - if (jj_scan_token(PREFIXED_STRING_LITERAL)) return true; + if (jj_3_515()) jj_scanpos = xsp; return false; } @@ -26677,42 +26675,28 @@ final private boolean jj_3_186() { return false; } - final private boolean jj_3_183() { - if (jj_scan_token(TABLE)) return true; + final private boolean jj_3_1032() { + if (jj_scan_token(CONVERT)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_515() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_510()) { - jj_scanpos = xsp; - if (jj_3_511()) { - jj_scanpos = xsp; - if (jj_3_512()) return true; - } - } - while (true) { - xsp = jj_scanpos; - if (jj_3R_246()) { jj_scanpos = xsp; break; } - } - xsp = jj_scanpos; - if (jj_3_513()) jj_scanpos = xsp; + final private boolean jj_3_183() { + if (jj_scan_token(TABLE)) return true; return false; } - final private boolean jj_3_1030() { - if (jj_scan_token(CONVERT)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_180() { + if (jj_scan_token(DATABASE)) return true; return false; } - final private boolean jj_3_180() { - if (jj_scan_token(DATABASE)) return true; + final private boolean jj_3_1031() { + if (jj_3R_297()) return true; return false; } - final private boolean jj_3R_352() { + final private boolean jj_3R_354() { Token xsp; xsp = jj_scanpos; if (jj_3_183()) jj_scanpos = xsp; @@ -26720,18 +26704,18 @@ final private boolean jj_3R_352() { return false; } - final private boolean jj_3_1029() { - if (jj_3R_295()) return true; + final private boolean jj_3R_394() { + if (jj_3R_300()) return true; return false; } - final private boolean jj_3R_392() { - if (jj_3R_298()) return true; + final private boolean jj_3R_247() { + if (jj_scan_token(QUOTED_STRING)) return true; return false; } - final private boolean jj_3R_245() { - if (jj_scan_token(QUOTED_STRING)) return true; + final private boolean jj_3R_393() { + if (jj_3R_298()) return true; return false; } @@ -26749,8 +26733,8 @@ final private boolean jj_3_185() { return false; } - final private boolean jj_3R_391() { - if (jj_3R_296()) return true; + final private boolean jj_3R_392() { + if (jj_3R_301()) return true; return false; } @@ -26760,7 +26744,7 @@ final private boolean jj_3R_111() { xsp = jj_scanpos; if (jj_3_185()) { jj_scanpos = xsp; - if (jj_3R_352()) { + if (jj_3R_354()) { jj_scanpos = xsp; if (jj_3_187()) return true; } @@ -26768,33 +26752,28 @@ final private boolean jj_3R_111() { return false; } - final private boolean jj_3R_390() { + final private boolean jj_3R_391() { if (jj_3R_299()) return true; return false; } - final private boolean jj_3R_389() { - if (jj_3R_297()) return true; - return false; - } - - final private boolean jj_3R_388() { - if (jj_3R_291()) return true; + final private boolean jj_3R_390() { + if (jj_3R_293()) return true; return false; } final private boolean jj_3R_137() { Token xsp; xsp = jj_scanpos; - if (jj_3_514()) { - jj_scanpos = xsp; - if (jj_3_515()) { - jj_scanpos = xsp; if (jj_3_516()) { jj_scanpos = xsp; if (jj_3_517()) { jj_scanpos = xsp; - if (jj_3_518()) return true; + if (jj_3_518()) { + jj_scanpos = xsp; + if (jj_3_519()) { + jj_scanpos = xsp; + if (jj_3_520()) return true; } } } @@ -26802,12 +26781,12 @@ final private boolean jj_3R_137() { return false; } - final private boolean jj_3_514() { + final private boolean jj_3_516() { if (jj_scan_token(BINARY_STRING_LITERAL)) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3R_245()) { jj_scanpos = xsp; break; } + if (jj_3R_247()) { jj_scanpos = xsp; break; } } return false; } @@ -26817,6 +26796,11 @@ final private boolean jj_3_177() { return false; } + final private boolean jj_3R_389() { + if (jj_3R_295()) return true; + return false; + } + final private boolean jj_3_179() { if (jj_scan_token(INCLUDING)) return true; Token xsp; @@ -26826,8 +26810,8 @@ final private boolean jj_3_179() { return false; } - final private boolean jj_3R_387() { - if (jj_3R_293()) return true; + final private boolean jj_3R_388() { + if (jj_3R_296()) return true; return false; } @@ -26837,8 +26821,8 @@ final private boolean jj_3_178() { return false; } - final private boolean jj_3R_386() { - if (jj_3R_294()) return true; + final private boolean jj_3R_387() { + if (jj_3R_292()) return true; return false; } @@ -26852,28 +26836,17 @@ final private boolean jj_3R_150() { return false; } - final private boolean jj_3R_385() { + final private boolean jj_3R_386() { if (jj_3R_290()) return true; return false; } - final private boolean jj_3R_384() { - if (jj_3R_288()) return true; - return false; - } - - final private boolean jj_3_509() { + final private boolean jj_3_511() { if (jj_scan_token(NULL)) return true; return false; } - final private boolean jj_3_176() { - if (jj_scan_token(WITHOUT)) return true; - if (jj_scan_token(IMPLEMENTATION)) return true; - return false; - } - - final private boolean jj_3_508() { + final private boolean jj_3_510() { if (jj_scan_token(UNKNOWN)) return true; return false; } @@ -26882,10 +26855,6 @@ final private boolean jj_3R_223() { if (jj_scan_token(LBRACE_FN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3R_384()) { - jj_scanpos = xsp; - if (jj_3R_385()) { - jj_scanpos = xsp; if (jj_3R_386()) { jj_scanpos = xsp; if (jj_3R_387()) { @@ -26900,11 +26869,15 @@ final private boolean jj_3R_223() { jj_scanpos = xsp; if (jj_3R_392()) { jj_scanpos = xsp; - if (jj_3_1029()) { + if (jj_3R_393()) { + jj_scanpos = xsp; + if (jj_3R_394()) { jj_scanpos = xsp; - if (jj_3_1030()) { + if (jj_3_1031()) { jj_scanpos = xsp; - if (jj_3_1031()) return true; + if (jj_3_1032()) { + jj_scanpos = xsp; + if (jj_3_1033()) return true; } } } @@ -26919,35 +26892,41 @@ final private boolean jj_3R_223() { return false; } - final private boolean jj_3_507() { + final private boolean jj_3_509() { if (jj_scan_token(FALSE)) return true; return false; } - final private boolean jj_3R_241() { + final private boolean jj_3_176() { + if (jj_scan_token(WITHOUT)) return true; + if (jj_scan_token(IMPLEMENTATION)) return true; + return false; + } + + final private boolean jj_3R_243() { Token xsp; xsp = jj_scanpos; - if (jj_3_506()) { + if (jj_3_508()) { jj_scanpos = xsp; - if (jj_3_507()) { + if (jj_3_509()) { jj_scanpos = xsp; - if (jj_3_508()) { + if (jj_3_510()) { jj_scanpos = xsp; - if (jj_3_509()) return true; + if (jj_3_511()) return true; } } } return false; } - final private boolean jj_3_175() { - if (jj_scan_token(WITH)) return true; - if (jj_scan_token(IMPLEMENTATION)) return true; + final private boolean jj_3_508() { + if (jj_scan_token(TRUE)) return true; return false; } - final private boolean jj_3_506() { - if (jj_scan_token(TRUE)) return true; + final private boolean jj_3_175() { + if (jj_scan_token(WITH)) return true; + if (jj_scan_token(IMPLEMENTATION)) return true; return false; } @@ -26957,33 +26936,33 @@ final private boolean jj_3_174() { return false; } - final private boolean jj_3_505() { + final private boolean jj_3_507() { if (jj_3R_196()) return true; return false; } - final private boolean jj_3_504() { + final private boolean jj_3_506() { if (jj_scan_token(MINUS)) return true; if (jj_3R_196()) return true; return false; } - final private boolean jj_3_1018() { + final private boolean jj_3_1020() { if (jj_scan_token(USER)) return true; return false; } - final private boolean jj_3_1017() { + final private boolean jj_3_1019() { if (jj_scan_token(SYSTEM_USER)) return true; return false; } - final private boolean jj_3_1016() { + final private boolean jj_3_1018() { if (jj_scan_token(SESSION_USER)) return true; return false; } - final private boolean jj_3_1015() { + final private boolean jj_3_1017() { if (jj_scan_token(LOCALTIMESTAMP)) return true; return false; } @@ -26991,109 +26970,105 @@ final private boolean jj_3_1015() { final private boolean jj_3R_138() { Token xsp; xsp = jj_scanpos; - if (jj_3_503()) { + if (jj_3_505()) { jj_scanpos = xsp; - if (jj_3_504()) { + if (jj_3_506()) { jj_scanpos = xsp; - if (jj_3_505()) return true; + if (jj_3_507()) return true; } } return false; } - final private boolean jj_3_503() { + final private boolean jj_3_505() { if (jj_scan_token(PLUS)) return true; if (jj_3R_196()) return true; return false; } - final private boolean jj_3_1014() { + final private boolean jj_3_1016() { if (jj_scan_token(LOCALTIME)) return true; return false; } - final private boolean jj_3_173() { - if (jj_3R_115()) return true; - return false; - } - - final private boolean jj_3_1013() { + final private boolean jj_3_1015() { if (jj_scan_token(CURRENT_USER)) return true; return false; } - final private boolean jj_3_1012() { + final private boolean jj_3_1014() { if (jj_scan_token(CURRENT_TIMESTAMP)) return true; return false; } - final private boolean jj_3_172() { - if (jj_3R_114()) return true; - return false; - } - - final private boolean jj_3_1011() { + final private boolean jj_3_1013() { if (jj_scan_token(CURRENT_TIME)) return true; return false; } - final private boolean jj_3_1010() { + final private boolean jj_3_1012() { if (jj_scan_token(CURRENT_SCHEMA)) return true; return false; } - final private boolean jj_3_171() { - if (jj_3R_113()) return true; + final private boolean jj_3_173() { + if (jj_3R_115()) return true; return false; } - final private boolean jj_3_1009() { + final private boolean jj_3_1011() { if (jj_scan_token(CURRENT_ROLE)) return true; return false; } - final private boolean jj_3_1008() { + final private boolean jj_3_1010() { if (jj_scan_token(CURRENT_PATH)) return true; return false; } - final private boolean jj_3_170() { - if (jj_3R_112()) return true; + final private boolean jj_3_172() { + if (jj_3R_114()) return true; return false; } - final private boolean jj_3_1007() { + final private boolean jj_3_1009() { if (jj_scan_token(CURRENT_DEFAULT_TRANSFORM_GROUP)) return true; return false; } - final private boolean jj_3_1006() { + final private boolean jj_3_1008() { if (jj_scan_token(CURRENT_DATE)) return true; return false; } - final private boolean jj_3_169() { - if (jj_3R_80()) return true; + final private boolean jj_3_171() { + if (jj_3R_113()) return true; return false; } - final private boolean jj_3_1005() { + final private boolean jj_3_1007() { if (jj_scan_token(CURRENT_CATALOG)) return true; return false; } - final private boolean jj_3_502() { + final private boolean jj_3_170() { + if (jj_3R_112()) return true; + return false; + } + + final private boolean jj_3_504() { if (jj_scan_token(APPROX_NUMERIC_LITERAL)) return true; return false; } + final private boolean jj_3_169() { + if (jj_3R_80()) return true; + return false; + } + final private boolean jj_3R_229() { Token xsp; xsp = jj_scanpos; - if (jj_3_1005()) { - jj_scanpos = xsp; - if (jj_3_1006()) { - jj_scanpos = xsp; if (jj_3_1007()) { jj_scanpos = xsp; if (jj_3_1008()) { @@ -27116,7 +27091,11 @@ final private boolean jj_3R_229() { jj_scanpos = xsp; if (jj_3_1017()) { jj_scanpos = xsp; - if (jj_3_1018()) return true; + if (jj_3_1018()) { + jj_scanpos = xsp; + if (jj_3_1019()) { + jj_scanpos = xsp; + if (jj_3_1020()) return true; } } } @@ -27133,6 +27112,12 @@ final private boolean jj_3R_229() { return false; } + final private boolean jj_3_503() { + if (jj_scan_token(DECIMAL)) return true; + if (jj_3R_246()) return true; + return false; + } + final private boolean jj_3R_152() { Token xsp; xsp = jj_scanpos; @@ -27152,33 +27137,27 @@ final private boolean jj_3R_152() { return false; } - final private boolean jj_3_501() { - if (jj_scan_token(DECIMAL)) return true; - if (jj_3R_244()) return true; - return false; - } - - final private boolean jj_3_500() { + final private boolean jj_3_502() { if (jj_scan_token(DECIMAL_NUMERIC_LITERAL)) return true; return false; } - final private boolean jj_3_1004() { + final private boolean jj_3_1006() { if (jj_scan_token(YEAR)) return true; return false; } - final private boolean jj_3_1003() { + final private boolean jj_3_1005() { if (jj_scan_token(VAR_SAMP)) return true; return false; } - final private boolean jj_3_1002() { + final private boolean jj_3_1004() { if (jj_scan_token(VAR_POP)) return true; return false; } - final private boolean jj_3_1001() { + final private boolean jj_3_1003() { if (jj_scan_token(USER)) return true; return false; } @@ -27186,118 +27165,112 @@ final private boolean jj_3_1001() { final private boolean jj_3R_196() { Token xsp; xsp = jj_scanpos; - if (jj_3_499()) { + if (jj_3_501()) { jj_scanpos = xsp; - if (jj_3_500()) { + if (jj_3_502()) { jj_scanpos = xsp; - if (jj_3_501()) { + if (jj_3_503()) { jj_scanpos = xsp; - if (jj_3_502()) return true; + if (jj_3_504()) return true; } } } return false; } - final private boolean jj_3_499() { + final private boolean jj_3_501() { if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3_1000() { + final private boolean jj_3_1002() { if (jj_scan_token(TRUNCATE)) return true; return false; } - final private boolean jj_3_999() { + final private boolean jj_3_1001() { if (jj_scan_token(UPPER)) return true; return false; } - final private boolean jj_3_998() { + final private boolean jj_3_1000() { if (jj_scan_token(SUM)) return true; return false; } - final private boolean jj_3_997() { + final private boolean jj_3_999() { if (jj_scan_token(STDDEV_SAMP)) return true; return false; } - final private boolean jj_3_996() { + final private boolean jj_3_998() { if (jj_scan_token(STDDEV_POP)) return true; return false; } - final private boolean jj_3_995() { + final private boolean jj_3_997() { if (jj_scan_token(SQRT)) return true; return false; } - final private boolean jj_3_168() { - if (jj_scan_token(AS)) return true; - if (jj_scan_token(DOT_FORMAT)) return true; - return false; - } - - final private boolean jj_3_994() { + final private boolean jj_3_996() { if (jj_scan_token(SOME)) return true; return false; } - final private boolean jj_3_498() { - if (jj_3R_240()) return true; + final private boolean jj_3_500() { + if (jj_3R_242()) return true; return false; } - final private boolean jj_3_993() { + final private boolean jj_3_995() { if (jj_scan_token(SECOND)) return true; return false; } - final private boolean jj_3_992() { + final private boolean jj_3_994() { if (jj_scan_token(ROW_NUMBER)) return true; return false; } - final private boolean jj_3_167() { - if (jj_scan_token(AS)) return true; - if (jj_scan_token(JSON)) return true; + final private boolean jj_3_499() { + if (jj_3R_245()) return true; return false; } - final private boolean jj_3_497() { - if (jj_3R_243()) return true; + final private boolean jj_3_993() { + if (jj_scan_token(RIGHT)) return true; return false; } - final private boolean jj_3_991() { - if (jj_scan_token(RIGHT)) return true; + final private boolean jj_3_168() { + if (jj_scan_token(AS)) return true; + if (jj_scan_token(DOT_FORMAT)) return true; return false; } - final private boolean jj_3_990() { + final private boolean jj_3_992() { if (jj_scan_token(REGR_SYY)) return true; return false; } - final private boolean jj_3_989() { + final private boolean jj_3_991() { if (jj_scan_token(REGR_SXX)) return true; return false; } - final private boolean jj_3_166() { - if (jj_scan_token(AS)) return true; - if (jj_scan_token(XML)) return true; + final private boolean jj_3_990() { + if (jj_scan_token(REGR_COUNT)) return true; return false; } - final private boolean jj_3_988() { - if (jj_scan_token(REGR_COUNT)) return true; + final private boolean jj_3_167() { + if (jj_scan_token(AS)) return true; + if (jj_scan_token(JSON)) return true; return false; } - final private boolean jj_3_987() { + final private boolean jj_3_989() { if (jj_scan_token(RANK)) return true; return false; } @@ -27305,272 +27278,267 @@ final private boolean jj_3_987() { final private boolean jj_3R_221() { Token xsp; xsp = jj_scanpos; - if (jj_3_497()) { + if (jj_3_499()) { jj_scanpos = xsp; - if (jj_3_498()) return true; + if (jj_3_500()) return true; } return false; } - final private boolean jj_3_986() { + final private boolean jj_3_988() { if (jj_scan_token(POWER)) return true; return false; } - final private boolean jj_3_985() { + final private boolean jj_3_987() { if (jj_scan_token(PERCENT_RANK)) return true; return false; } - final private boolean jj_3_984() { - if (jj_scan_token(PERCENTILE_DISC)) return true; + final private boolean jj_3_166() { + if (jj_scan_token(AS)) return true; + if (jj_scan_token(XML)) return true; return false; } - final private boolean jj_3_165() { - if (jj_3R_150()) return true; + final private boolean jj_3_986() { + if (jj_scan_token(PERCENTILE_DISC)) return true; return false; } - final private boolean jj_3_983() { + final private boolean jj_3_985() { if (jj_scan_token(PERCENTILE_CONT)) return true; return false; } - final private boolean jj_3_982() { + final private boolean jj_3_984() { if (jj_scan_token(OCTET_LENGTH)) return true; return false; } - final private boolean jj_3_981() { + final private boolean jj_3_983() { if (jj_scan_token(NULLIF)) return true; return false; } - final private boolean jj_3R_110() { - if (jj_scan_token(EXPLAIN)) return true; - if (jj_scan_token(PLAN)) return true; + final private boolean jj_3_982() { + if (jj_scan_token(NTILE)) return true; return false; } - final private boolean jj_3_980() { - if (jj_scan_token(NTILE)) return true; + final private boolean jj_3_165() { + if (jj_3R_150()) return true; return false; } - final private boolean jj_3_979() { + final private boolean jj_3_981() { if (jj_scan_token(NTH_VALUE)) return true; return false; } - final private boolean jj_3_978() { + final private boolean jj_3_980() { if (jj_scan_token(MONTH)) return true; return false; } - final private boolean jj_3_977() { + final private boolean jj_3_979() { if (jj_scan_token(MOD)) return true; return false; } - final private boolean jj_3_976() { + final private boolean jj_3R_110() { + if (jj_scan_token(EXPLAIN)) return true; + if (jj_scan_token(PLAN)) return true; + return false; + } + + final private boolean jj_3_978() { if (jj_scan_token(MINUTE)) return true; return false; } - final private boolean jj_3_975() { + final private boolean jj_3_977() { if (jj_scan_token(MIN)) return true; return false; } - final private boolean jj_3_974() { + final private boolean jj_3_976() { if (jj_scan_token(MAX)) return true; return false; } - final private boolean jj_3_973() { + final private boolean jj_3_975() { if (jj_scan_token(LOWER)) return true; return false; } - final private boolean jj_3_496() { - if (jj_3R_242()) return true; + final private boolean jj_3_498() { + if (jj_3R_244()) return true; return false; } - final private boolean jj_3_972() { + final private boolean jj_3_974() { if (jj_scan_token(LOCALTIMESTAMP)) return true; return false; } - final private boolean jj_3_971() { + final private boolean jj_3_973() { if (jj_scan_token(LOCALTIME)) return true; return false; } - final private boolean jj_3_495() { - if (jj_3R_241()) return true; + final private boolean jj_3_497() { + if (jj_3R_243()) return true; return false; } - final private boolean jj_3_970() { + final private boolean jj_3_972() { if (jj_scan_token(LN)) return true; return false; } - final private boolean jj_3_969() { + final private boolean jj_3_971() { if (jj_scan_token(LAST_VALUE)) return true; return false; } - final private boolean jj_3_494() { + final private boolean jj_3_496() { if (jj_3R_137()) return true; return false; } - final private boolean jj_3_968() { + final private boolean jj_3_970() { if (jj_scan_token(LEFT)) return true; return false; } - final private boolean jj_3_967() { + final private boolean jj_3_969() { if (jj_scan_token(LEAD)) return true; return false; } - final private boolean jj_3_493() { + final private boolean jj_3_495() { if (jj_3R_138()) return true; return false; } - final private boolean jj_3_966() { + final private boolean jj_3_968() { if (jj_scan_token(LAG)) return true; return false; } - final private boolean jj_3_965() { + final private boolean jj_3_967() { if (jj_scan_token(HOUR)) return true; return false; } - final private boolean jj_3_964() { + final private boolean jj_3_966() { if (jj_scan_token(GROUPING)) return true; return false; } - final private boolean jj_3_963() { + final private boolean jj_3_965() { if (jj_scan_token(INTERSECTION)) return true; return false; } - final private boolean jj_3_962() { + final private boolean jj_3_964() { if (jj_scan_token(FUSION)) return true; return false; } - final private boolean jj_3R_240() { + final private boolean jj_3R_242() { Token xsp; xsp = jj_scanpos; - if (jj_3_493()) { + if (jj_3_495()) { jj_scanpos = xsp; - if (jj_3_494()) { + if (jj_3_496()) { jj_scanpos = xsp; - if (jj_3_495()) { + if (jj_3_497()) { jj_scanpos = xsp; - if (jj_3_496()) return true; + if (jj_3_498()) return true; } } } return false; } - final private boolean jj_3_961() { + final private boolean jj_3_963() { if (jj_scan_token(FLOOR)) return true; return false; } - final private boolean jj_3_960() { + final private boolean jj_3_962() { if (jj_scan_token(FIRST_VALUE)) return true; return false; } - final private boolean jj_3_959() { + final private boolean jj_3_961() { if (jj_scan_token(EXP)) return true; return false; } - final private boolean jj_3_958() { + final private boolean jj_3_960() { if (jj_scan_token(EVERY)) return true; return false; } - final private boolean jj_3_957() { + final private boolean jj_3_959() { if (jj_scan_token(ELEMENT)) return true; return false; } - final private boolean jj_3_956() { + final private boolean jj_3_958() { if (jj_scan_token(DENSE_RANK)) return true; return false; } - final private boolean jj_3_955() { + final private boolean jj_3_957() { if (jj_scan_token(CURRENT_TIMESTAMP)) return true; return false; } - final private boolean jj_3_492() { + final private boolean jj_3_494() { if (jj_3R_191()) return true; return false; } - final private boolean jj_3_954() { + final private boolean jj_3_956() { if (jj_scan_token(CURRENT_TIME)) return true; return false; } - final private boolean jj_3_953() { + final private boolean jj_3_955() { if (jj_scan_token(CURRENT_DATE)) return true; return false; } - final private boolean jj_3_491() { - if (jj_3R_240()) return true; + final private boolean jj_3_493() { + if (jj_3R_242()) return true; return false; } - final private boolean jj_3_952() { + final private boolean jj_3_954() { if (jj_scan_token(COUNT)) return true; return false; } - final private boolean jj_3_154() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_142()) return true; - return false; - } - - final private boolean jj_3_951() { + final private boolean jj_3_953() { if (jj_scan_token(CUME_DIST)) return true; return false; } - final private boolean jj_3_950() { + final private boolean jj_3_952() { if (jj_scan_token(COVAR_SAMP)) return true; return false; } - final private boolean jj_3_949() { + final private boolean jj_3_951() { if (jj_scan_token(COVAR_POP)) return true; return false; } - final private boolean jj_3_163() { - if (jj_3R_148()) return true; - return false; - } - - final private boolean jj_3_948() { + final private boolean jj_3_950() { if (jj_scan_token(COLLECT)) return true; return false; } @@ -27578,92 +27546,93 @@ final private boolean jj_3_948() { final private boolean jj_3R_118() { Token xsp; xsp = jj_scanpos; - if (jj_3_491()) { + if (jj_3_493()) { jj_scanpos = xsp; - if (jj_3_492()) return true; + if (jj_3_494()) return true; } return false; } - final private boolean jj_3_162() { - if (jj_3R_147()) return true; + final private boolean jj_3_154() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_142()) return true; return false; } - final private boolean jj_3_947() { + final private boolean jj_3_949() { if (jj_scan_token(COALESCE)) return true; return false; } - final private boolean jj_3_161() { - if (jj_3R_146()) return true; + final private boolean jj_3_948() { + if (jj_scan_token(CHARACTER_LENGTH)) return true; return false; } - final private boolean jj_3_946() { - if (jj_scan_token(CHARACTER_LENGTH)) return true; + final private boolean jj_3_947() { + if (jj_scan_token(CHAR_LENGTH)) return true; return false; } - final private boolean jj_3_160() { - if (jj_3R_145()) return true; + final private boolean jj_3_163() { + if (jj_3R_148()) return true; return false; } - final private boolean jj_3_945() { - if (jj_scan_token(CHAR_LENGTH)) return true; + final private boolean jj_3_946() { + if (jj_scan_token(CHAR)) return true; return false; } - final private boolean jj_3_159() { - if (jj_3R_144()) return true; + final private boolean jj_3_162() { + if (jj_3R_147()) return true; return false; } - final private boolean jj_3_944() { - if (jj_scan_token(CHAR)) return true; + final private boolean jj_3_945() { + if (jj_scan_token(CEILING)) return true; return false; } - final private boolean jj_3_943() { - if (jj_scan_token(CEILING)) return true; + final private boolean jj_3_161() { + if (jj_3R_146()) return true; return false; } - final private boolean jj_3_942() { + final private boolean jj_3_944() { if (jj_scan_token(CARDINALITY)) return true; return false; } - final private boolean jj_3_164() { - if (jj_scan_token(FROM)) return true; - if (jj_3R_149()) return true; + final private boolean jj_3_160() { + if (jj_3R_145()) return true; return false; } - final private boolean jj_3_941() { + final private boolean jj_3_943() { if (jj_scan_token(AVG)) return true; return false; } - final private boolean jj_3_940() { + final private boolean jj_3_159() { + if (jj_3R_144()) return true; + return false; + } + + final private boolean jj_3_942() { if (jj_scan_token(ABS)) 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_164() { + if (jj_scan_token(FROM)) return true; + if (jj_3R_149()) return true; return false; } - final private boolean jj_3R_329() { + final private boolean jj_3R_331() { Token xsp; xsp = jj_scanpos; - if (jj_3_940()) { - jj_scanpos = xsp; - if (jj_3_941()) { - jj_scanpos = xsp; if (jj_3_942()) { jj_scanpos = xsp; if (jj_3_943()) { @@ -27788,7 +27757,11 @@ final private boolean jj_3R_329() { jj_scanpos = xsp; if (jj_3_1003()) { jj_scanpos = xsp; - if (jj_3_1004()) return true; + if (jj_3_1004()) { + jj_scanpos = xsp; + if (jj_3_1005()) { + jj_scanpos = xsp; + if (jj_3_1006()) return true; } } } @@ -27856,11 +27829,32 @@ final private boolean jj_3R_329() { return false; } + final private boolean jj_3_158() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_143()) return true; + return false; + } + final private boolean jj_3_157() { if (jj_3R_83()) return true; return false; } + final private boolean jj_3_492() { + if (jj_3R_241()) return true; + return false; + } + + final private boolean jj_3_491() { + if (jj_3R_240()) return true; + return false; + } + + final private boolean jj_3_941() { + if (jj_3R_331()) return true; + return false; + } + final private boolean jj_3_156() { if (jj_scan_token(STREAM)) return true; return false; @@ -27871,13 +27865,13 @@ final private boolean jj_3_490() { return false; } - final private boolean jj_3_489() { - if (jj_3R_238()) return true; + final private boolean jj_3_940() { + if (jj_3R_151()) return true; return false; } - final private boolean jj_3_939() { - if (jj_3R_329()) return true; + final private boolean jj_3_489() { + if (jj_3R_238()) return true; return false; } @@ -27887,13 +27881,13 @@ final private boolean jj_3_155() { return false; } - final private boolean jj_3_488() { - if (jj_3R_237()) return true; - return false; - } - - final private boolean jj_3_938() { - if (jj_3R_151()) return true; + final private boolean jj_3R_228() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_940()) { + jj_scanpos = xsp; + if (jj_3_941()) return true; + } return false; } @@ -27908,17 +27902,7 @@ final private boolean jj_3R_76() { Token xsp; xsp = jj_scanpos; if (jj_3_155()) jj_scanpos = xsp; - if (jj_3R_342()) return true; - return false; - } - - final private boolean jj_3R_228() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_938()) { - jj_scanpos = xsp; - if (jj_3_939()) return true; - } + if (jj_3R_344()) return true; return false; } @@ -27926,16 +27910,29 @@ final private boolean jj_3R_109() { if (jj_scan_token(DROP)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_488()) { - jj_scanpos = xsp; if (jj_3_489()) { jj_scanpos = xsp; - if (jj_3_490()) return true; + if (jj_3_490()) { + jj_scanpos = xsp; + if (jj_3_491()) { + jj_scanpos = xsp; + if (jj_3_492()) return true; + } } } return false; } + final private boolean jj_3_488() { + if (jj_3R_237()) return true; + return false; + } + + final private boolean jj_3R_332() { + if (jj_scan_token(SUBSTRING)) return true; + return false; + } + final private boolean jj_3_487() { if (jj_3R_236()) return true; return false; @@ -27946,13 +27943,13 @@ final private boolean jj_3_486() { return false; } - final private boolean jj_3R_330() { - if (jj_scan_token(SUBSTRING)) return true; + final private boolean jj_3_485() { + if (jj_3R_234()) return true; return false; } - final private boolean jj_3_485() { - if (jj_3R_234()) return true; + final private boolean jj_3_938() { + if (jj_3R_329()) return true; return false; } @@ -27968,12 +27965,7 @@ final private boolean jj_3_484() { return false; } - final private boolean jj_3_936() { - if (jj_3R_327()) return true; - return false; - } - - final private boolean jj_3_935() { + final private boolean jj_3_937() { if (jj_3R_85()) return true; return false; } @@ -27988,7 +27980,10 @@ final private boolean jj_3R_108() { jj_scanpos = xsp; if (jj_3_486()) { jj_scanpos = xsp; - if (jj_3_487()) return true; + if (jj_3_487()) { + jj_scanpos = xsp; + if (jj_3_488()) return true; + } } } return false; @@ -27999,13 +27994,13 @@ final private boolean jj_3_483() { return false; } - final private boolean jj_3_937() { + final private boolean jj_3_939() { if (jj_scan_token(OVER)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_935()) { + if (jj_3_937()) { jj_scanpos = xsp; - if (jj_3_936()) return true; + if (jj_3_938()) return true; } return false; } @@ -28016,12 +28011,18 @@ final private boolean jj_3_149() { return false; } + final private boolean jj_3_936() { + if (jj_scan_token(TO)) return true; + if (jj_3R_330()) return true; + return false; + } + final private boolean jj_3_482() { if (jj_scan_token(SYSTEM)) return true; return false; } - final private boolean jj_3R_351() { + final private boolean jj_3R_353() { Token xsp; xsp = jj_scanpos; if (jj_3_482()) { @@ -28031,9 +28032,8 @@ final private boolean jj_3R_351() { return false; } - final private boolean jj_3_934() { - if (jj_scan_token(TO)) return true; - if (jj_3R_328()) return true; + final private boolean jj_3R_400() { + if (jj_scan_token(LPAREN)) return true; return false; } @@ -28042,11 +28042,6 @@ final private boolean jj_3_152() { return false; } - final private boolean jj_3R_398() { - if (jj_scan_token(LPAREN)) return true; - return false; - } - final private boolean jj_3_151() { if (jj_3R_123()) return true; return false; @@ -28065,7 +28060,7 @@ final private boolean jj_3_150() { final private boolean jj_3R_107() { if (jj_scan_token(ALTER)) return true; - if (jj_3R_351()) return true; + if (jj_3R_353()) return true; return false; } @@ -28074,12 +28069,12 @@ final private boolean jj_3R_142() { return false; } - final private boolean jj_3_933() { + final private boolean jj_3_935() { if (jj_3R_219()) return true; return false; } - final private boolean jj_3_932() { + final private boolean jj_3_934() { if (jj_scan_token(LPAREN)) return true; if (jj_scan_token(RPAREN)) return true; return false; @@ -28090,14 +28085,14 @@ final private boolean jj_3_479() { return false; } - final private boolean jj_3_478() { - if (jj_3R_151()) return true; + final private boolean jj_3_933() { + if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(STAR)) return true; return false; } - final private boolean jj_3_931() { - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(STAR)) return true; + final private boolean jj_3_478() { + if (jj_3R_151()) return true; return false; } @@ -28113,7 +28108,7 @@ final private boolean jj_3R_141() { return false; } - final private boolean jj_3R_402() { + final private boolean jj_3R_404() { return false; } @@ -28128,13 +28123,24 @@ final private boolean jj_3_481() { return false; } + final private boolean jj_3_932() { + if (jj_scan_token(SPECIFIC)) return true; + return false; + } + final private boolean jj_3_147() { if (jj_3R_137()) return true; return false; } - final private boolean jj_3_930() { - if (jj_scan_token(SPECIFIC)) return true; + final private boolean jj_3R_326() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_932()) { + jj_scanpos = xsp; + if (jj_3R_404()) return true; + } + if (jj_3R_228()) return true; return false; } @@ -28153,17 +28159,6 @@ final private boolean jj_3_476() { return false; } - final private boolean jj_3R_324() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_930()) { - jj_scanpos = xsp; - if (jj_3R_402()) return true; - } - if (jj_3R_228()) return true; - return false; - } - final private boolean jj_3_475() { if (jj_3R_118()) return true; return false; @@ -28179,24 +28174,24 @@ final private boolean jj_3R_139() { return false; } - final private boolean jj_3_480() { - if (jj_scan_token(SET)) return true; - if (jj_3R_151()) return true; + final private boolean jj_3_930() { + if (jj_3R_329()) return true; return false; } - final private boolean jj_3_928() { - if (jj_3R_327()) return true; + final private boolean jj_3_929() { + if (jj_3R_85()) return true; return false; } - final private boolean jj_3_145() { - if (jj_3R_137()) return true; + final private boolean jj_3_480() { + if (jj_scan_token(SET)) return true; + if (jj_3R_151()) return true; return false; } - final private boolean jj_3_927() { - if (jj_3R_85()) return true; + final private boolean jj_3_145() { + if (jj_3R_137()) return true; return false; } @@ -28215,6 +28210,17 @@ final private boolean jj_3R_106() { return false; } + final private boolean jj_3_931() { + if (jj_scan_token(OVER)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_929()) { + jj_scanpos = xsp; + if (jj_3_930()) return true; + } + return false; + } + final private boolean jj_3R_136() { Token xsp; xsp = jj_scanpos; @@ -28227,25 +28233,19 @@ final private boolean jj_3R_136() { return false; } - final private boolean jj_3_929() { - if (jj_scan_token(OVER)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_927()) { - jj_scanpos = xsp; - if (jj_3_928()) return true; - } + final private boolean jj_3_928() { + if (jj_scan_token(FILTER)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_474() { - if (jj_scan_token(CURRENT)) return true; + final private boolean jj_3_927() { + if (jj_3R_321()) return true; return false; } - final private boolean jj_3_926() { - if (jj_scan_token(FILTER)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_474() { + if (jj_scan_token(CURRENT)) return true; return false; } @@ -28254,8 +28254,8 @@ final private boolean jj_3_473() { return false; } - final private boolean jj_3_925() { - if (jj_3R_319()) return true; + final private boolean jj_3_926() { + if (jj_3R_328()) return true; return false; } @@ -28265,6 +28265,11 @@ final private boolean jj_3_143() { return false; } + final private boolean jj_3_925() { + if (jj_3R_327()) return true; + return false; + } + final private boolean jj_3R_232() { Token xsp; xsp = jj_scanpos; @@ -28281,8 +28286,8 @@ final private boolean jj_3_924() { return false; } - final private boolean jj_3_923() { - if (jj_3R_325()) return true; + final private boolean jj_3R_413() { + if (jj_3R_416()) return true; return false; } @@ -28298,43 +28303,34 @@ final private boolean jj_3R_140() { return false; } - final private boolean jj_3_922() { - if (jj_3R_324()) return true; - return false; - } - - final private boolean jj_3R_411() { - if (jj_3R_414()) return true; - return false; - } - - final private boolean jj_3_921() { - if (jj_3R_323()) return true; - return false; - } - - final private boolean jj_3_472() { - if (jj_scan_token(ELSE)) return true; - if (jj_3R_82()) return true; + final private boolean jj_3_923() { + if (jj_3R_325()) return true; return false; } - final private boolean jj_3R_375() { + final private boolean jj_3R_377() { Token xsp; xsp = jj_scanpos; - if (jj_3_921()) { + if (jj_3_923()) { jj_scanpos = xsp; - if (jj_3R_411()) { + if (jj_3R_413()) { jj_scanpos = xsp; - if (jj_3_922()) return true; + if (jj_3_924()) return true; } } return false; } - final private boolean jj_3R_103() { - if (jj_scan_token(ANALYZE)) return true; - if (jj_3R_350()) return true; + final private boolean jj_3_472() { + if (jj_scan_token(ELSE)) return true; + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3R_241() { + if (jj_scan_token(VIEW)) return true; + if (jj_3R_132()) return true; + if (jj_3R_151()) return true; return false; } @@ -28344,18 +28340,18 @@ final private boolean jj_3_471() { return false; } - final private boolean jj_3R_393() { + final private boolean jj_3R_237() { + if (jj_scan_token(VIEW)) return true; + if (jj_3R_151()) return true; return false; } - final private boolean jj_3_470() { - if (jj_3R_82()) return true; + final private boolean jj_3R_395() { return false; } - final private boolean jj_3R_104() { - if (jj_scan_token(REFRESH)) return true; - if (jj_scan_token(STATISTICS)) return true; + final private boolean jj_3_470() { + if (jj_3R_82()) return true; return false; } @@ -28365,19 +28361,19 @@ final private boolean jj_3R_231() { xsp = jj_scanpos; if (jj_3_470()) { jj_scanpos = xsp; - if (jj_3R_393()) return true; + if (jj_3R_395()) return true; } return false; } - final private boolean jj_3R_325() { + final private boolean jj_3R_327() { if (jj_3R_220()) return true; return false; } - final private boolean jj_3R_105() { - if (jj_scan_token(DROP)) return true; - if (jj_scan_token(STATISTICS)) return true; + final private boolean jj_3R_103() { + if (jj_scan_token(ANALYZE)) return true; + if (jj_3R_352()) return true; return false; } @@ -28395,13 +28391,24 @@ final private boolean jj_3_464() { return false; } + final private boolean jj_3_922() { + if (jj_scan_token(RESPECT)) return true; + if (jj_scan_token(NULLS)) return true; + return false; + } + final private boolean jj_3_468() { if (jj_3R_231()) return true; return false; } - final private boolean jj_3_142() { - if (jj_3R_85()) return true; + final private boolean jj_3R_220() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_921()) { + jj_scanpos = xsp; + if (jj_3_922()) return true; + } return false; } @@ -28410,14 +28417,15 @@ final private boolean jj_3_467() { return false; } - final private boolean jj_3_920() { - if (jj_scan_token(RESPECT)) return true; + final private boolean jj_3_921() { + if (jj_scan_token(IGNORE)) return true; if (jj_scan_token(NULLS)) return true; return false; } - final private boolean jj_3_141() { - if (jj_3R_118()) return true; + final private boolean jj_3R_104() { + if (jj_scan_token(REFRESH)) return true; + if (jj_scan_token(STATISTICS)) return true; return false; } @@ -28426,40 +28434,30 @@ final private boolean jj_3_466() { return false; } - final private boolean jj_3R_220() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_919()) { - jj_scanpos = xsp; - if (jj_3_920()) return true; - } - return false; - } - final private boolean jj_3_465() { if (jj_3R_229()) return true; return false; } - final private boolean jj_3_919() { - if (jj_scan_token(IGNORE)) return true; - if (jj_scan_token(NULLS)) return true; + final private boolean jj_3R_384() { + if (jj_3R_377()) return true; return false; } - final private boolean jj_3R_382() { - if (jj_3R_375()) return true; + final private boolean jj_3_463() { + if (jj_3R_227()) return true; return false; } - final private boolean jj_3R_135() { - if (jj_3R_360()) return true; - if (jj_scan_token(EQ)) return true; + final private boolean jj_3R_321() { + if (jj_scan_token(WITHIN)) return true; + if (jj_scan_token(GROUP)) return true; return false; } - final private boolean jj_3_463() { - if (jj_3R_227()) return true; + final private boolean jj_3R_105() { + if (jj_scan_token(DROP)) return true; + if (jj_scan_token(STATISTICS)) return true; return false; } @@ -28473,34 +28471,18 @@ final private boolean jj_3_461() { return false; } - final private boolean jj_3R_319() { - if (jj_scan_token(WITHIN)) return true; - if (jj_scan_token(GROUP)) return true; - return false; - } - - final private boolean jj_3_140() { - if (jj_scan_token(MAX_CHANGED_PARTITION_ROWS_PERCENT)) return true; - return false; - } - final private boolean jj_3_460() { if (jj_3R_224()) return true; return false; } - final private boolean jj_3_139() { - if (jj_scan_token(NULLS)) return true; - return false; - } - final private boolean jj_3_459() { if (jj_3R_223()) return true; return false; } - final private boolean jj_3_138() { - if (jj_scan_token(SIZE)) return true; + final private boolean jj_3_142() { + if (jj_3R_85()) return true; return false; } @@ -28509,8 +28491,8 @@ final private boolean jj_3_458() { return false; } - final private boolean jj_3_137() { - if (jj_scan_token(TOTAL)) return true; + final private boolean jj_3_141() { + if (jj_3R_118()) return true; return false; } @@ -28519,32 +28501,20 @@ final private boolean jj_3_457() { return false; } - final private boolean jj_3R_360() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_136()) { - jj_scanpos = xsp; - if (jj_3_137()) { - jj_scanpos = xsp; - if (jj_3_138()) { - jj_scanpos = xsp; - if (jj_3_139()) { - jj_scanpos = xsp; - if (jj_3_140()) return true; - } - } - } - } + final private boolean jj_3_456() { + if (jj_3R_221()) return true; return false; } - final private boolean jj_3_136() { + final private boolean jj_3R_328() { + if (jj_scan_token(WITHIN)) return true; if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_456() { - if (jj_3R_221()) return true; + final private boolean jj_3R_135() { + if (jj_3R_362()) return true; + if (jj_scan_token(EQ)) return true; return false; } @@ -28567,7 +28537,7 @@ final private boolean jj_3R_215() { jj_scanpos = xsp; if (jj_3_463()) { jj_scanpos = xsp; - if (jj_3R_382()) { + if (jj_3R_384()) { jj_scanpos = xsp; if (jj_3_465()) { jj_scanpos = xsp; @@ -28594,80 +28564,101 @@ final private boolean jj_3R_215() { return false; } - final private boolean jj_3R_326() { - if (jj_scan_token(WITHIN)) return true; - if (jj_scan_token(DISTINCT)) return true; + final private boolean jj_3_140() { + if (jj_scan_token(MAX_CHANGED_PARTITION_ROWS_PERCENT)) return true; return false; } - final private boolean jj_3_134() { - if (jj_scan_token(QUOTED_IDENTIFIER)) return true; + final private boolean jj_3_920() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_138()) return true; return false; } - final private boolean jj_3_132() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_135()) return true; + final private boolean jj_3_139() { + if (jj_scan_token(NULLS)) return true; return false; } - final private boolean jj_3_133() { - if (jj_3R_135()) return true; + final private boolean jj_3_138() { + if (jj_scan_token(SIZE)) return true; return false; } - final private boolean jj_3_918() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_138()) return true; + final private boolean jj_3_137() { + if (jj_scan_token(TOTAL)) return true; return false; } - final private boolean jj_3_135() { - if (jj_scan_token(WITH)) return true; + final private boolean jj_3_919() { + if (jj_scan_token(NEXT)) return true; + return false; + } + + final private boolean jj_3R_362() { Token xsp; xsp = jj_scanpos; - if (jj_3_133()) { + if (jj_3_136()) { jj_scanpos = xsp; - if (jj_3_134()) return true; + if (jj_3_137()) { + jj_scanpos = xsp; + if (jj_3_138()) { + jj_scanpos = xsp; + if (jj_3_139()) { + jj_scanpos = xsp; + if (jj_3_140()) return true; + } + } + } } return false; } - final private boolean jj_3_917() { - if (jj_scan_token(NEXT)) return true; + final private boolean jj_3_136() { + if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_916() { + final private boolean jj_3_918() { if (jj_scan_token(PREV)) return true; return false; } - final private boolean jj_3_453() { - if (jj_3R_220()) return true; - return false; - } - - final private boolean jj_3R_321() { + final private boolean jj_3R_323() { Token xsp; xsp = jj_scanpos; - if (jj_3_916()) { + if (jj_3_918()) { jj_scanpos = xsp; - if (jj_3_917()) return true; + if (jj_3_919()) return true; } if (jj_scan_token(LPAREN)) return true; return false; } + final private boolean jj_3_453() { + if (jj_3R_220()) return true; + return false; + } + + final private boolean jj_3_134() { + if (jj_scan_token(QUOTED_IDENTIFIER)) return true; + return false; + } + + final private boolean jj_3_132() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_135()) return true; + return false; + } + final private boolean jj_3_455() { if (jj_scan_token(COMMA)) return true; if (jj_3R_138()) return true; return false; } - final private boolean jj_3_131() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_134()) return true; + final private boolean jj_3_133() { + if (jj_3R_135()) return true; return false; } @@ -28676,13 +28667,14 @@ final private boolean jj_3_454() { return false; } - final private boolean jj_3R_350() { - if (jj_3R_134()) return true; - return false; - } - - final private boolean jj_3_129() { - if (jj_scan_token(TRANSACTION)) return true; + final private boolean jj_3_135() { + if (jj_scan_token(WITH)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_133()) { + jj_scanpos = xsp; + if (jj_3_134()) return true; + } return false; } @@ -28696,13 +28688,13 @@ final private boolean jj_3_451() { return false; } - final private boolean jj_3_915() { + final private boolean jj_3_917() { if (jj_scan_token(COMMA)) return true; if (jj_3R_138()) return true; return false; } - final private boolean jj_3R_414() { + final private boolean jj_3R_416() { Token xsp; xsp = jj_scanpos; if (jj_3_451()) { @@ -28713,69 +28705,72 @@ final private boolean jj_3R_414() { return false; } - final private boolean jj_3_130() { - if (jj_3R_123()) return true; - return false; - } - - final private boolean jj_3_128() { - if (jj_scan_token(TRANSACTION)) return true; - return false; - } - - final private boolean jj_3_914() { + final private boolean jj_3_916() { if (jj_scan_token(LAST)) return true; return false; } - final private boolean jj_3_913() { + final private boolean jj_3_915() { if (jj_scan_token(FIRST)) return true; return false; } - final private boolean jj_3R_134() { - if (jj_3R_151()) return true; + final private boolean jj_3R_403() { return false; } - final private boolean jj_3R_401() { + final private boolean jj_3_914() { + if (jj_scan_token(FINAL)) return true; return false; } - final private boolean jj_3_912() { - if (jj_scan_token(FINAL)) return true; + final private boolean jj_3_131() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_134()) return true; return false; } - final private boolean jj_3_911() { + final private boolean jj_3_913() { if (jj_scan_token(RUNNING)) return true; return false; } - final private boolean jj_3R_320() { + final private boolean jj_3R_352() { + if (jj_3R_134()) return true; + return false; + } + + final private boolean jj_3R_322() { Token xsp; xsp = jj_scanpos; - if (jj_3_911()) { + if (jj_3_913()) { jj_scanpos = xsp; - if (jj_3_912()) { + if (jj_3_914()) { jj_scanpos = xsp; - if (jj_3R_401()) return true; + if (jj_3R_403()) return true; } } xsp = jj_scanpos; - if (jj_3_913()) { + if (jj_3_915()) { jj_scanpos = xsp; - if (jj_3_914()) return true; + if (jj_3_916()) return true; } if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3R_102() { - if (jj_scan_token(ROLLBACK)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_129()) jj_scanpos = xsp; + final private boolean jj_3_129() { + if (jj_scan_token(TRANSACTION)) return true; + return false; + } + + final private boolean jj_3_130() { + if (jj_3R_123()) return true; + return false; + } + + final private boolean jj_3_128() { + if (jj_scan_token(TRANSACTION)) return true; return false; } @@ -28785,16 +28780,18 @@ final private boolean jj_3_450() { return false; } - final private boolean jj_3R_101() { - if (jj_scan_token(COMMIT)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_128()) jj_scanpos = xsp; + final private boolean jj_3_912() { + if (jj_scan_token(FINAL)) return true; return false; } - final private boolean jj_3_910() { - if (jj_scan_token(FINAL)) return true; + final private boolean jj_3_911() { + if (jj_scan_token(RUNNING)) return true; + return false; + } + + final private boolean jj_3R_134() { + if (jj_3R_151()) return true; return false; } @@ -28803,8 +28800,14 @@ final private boolean jj_3_449() { return false; } - final private boolean jj_3_909() { - if (jj_scan_token(RUNNING)) return true; + final private boolean jj_3R_324() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_911()) { + jj_scanpos = xsp; + if (jj_3_912()) return true; + } + if (jj_3R_377()) return true; return false; } @@ -28813,14 +28816,16 @@ final private boolean jj_3_448() { return false; } - final private boolean jj_3R_322() { + final private boolean jj_3_910() { + if (jj_3R_324()) return true; + return false; + } + + final private boolean jj_3R_102() { + if (jj_scan_token(ROLLBACK)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_909()) { - jj_scanpos = xsp; - if (jj_3_910()) return true; - } - if (jj_3R_375()) return true; + if (jj_3_129()) jj_scanpos = xsp; return false; } @@ -28830,14 +28835,13 @@ final private boolean jj_3_447() { return false; } - final private boolean jj_3_908() { - if (jj_3R_322()) return true; + final private boolean jj_3_909() { + if (jj_3R_323()) return true; return false; } - final private boolean jj_3R_100() { - if (jj_scan_token(KILL)) return true; - if (jj_scan_token(QUERY)) return true; + final private boolean jj_3_908() { + if (jj_3R_322()) return true; return false; } @@ -28847,12 +28851,16 @@ final private boolean jj_3_446() { } final private boolean jj_3_907() { - if (jj_3R_321()) return true; + if (jj_scan_token(MATCH_NUMBER)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_906() { - if (jj_3R_320()) return true; + final private boolean jj_3R_101() { + if (jj_scan_token(COMMIT)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_128()) jj_scanpos = xsp; return false; } @@ -28876,24 +28884,13 @@ final private boolean jj_3_442() { return false; } - final private boolean jj_3_905() { - if (jj_scan_token(MATCH_NUMBER)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - - final private boolean jj_3_127() { - if (jj_scan_token(ASYNC)) return true; - return false; - } - - final private boolean jj_3_904() { + final private boolean jj_3_906() { if (jj_scan_token(CLASSIFIER)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3R_323() { + final private boolean jj_3R_325() { Token xsp; xsp = jj_scanpos; if (jj_3_442()) { @@ -28910,18 +28907,18 @@ final private boolean jj_3R_323() { return false; } - final private boolean jj_3R_300() { + final private boolean jj_3R_302() { Token xsp; xsp = jj_scanpos; - if (jj_3_904()) { - jj_scanpos = xsp; - if (jj_3_905()) { - jj_scanpos = xsp; if (jj_3_906()) { jj_scanpos = xsp; if (jj_3_907()) { jj_scanpos = xsp; - if (jj_3_908()) return true; + if (jj_3_908()) { + jj_scanpos = xsp; + if (jj_3_909()) { + jj_scanpos = xsp; + if (jj_3_910()) return true; } } } @@ -28929,49 +28926,48 @@ final private boolean jj_3R_300() { 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(COMPUTE)) return true; + if (jj_scan_token(QUERY)) return true; return false; } - final private boolean jj_3_903() { + final private boolean jj_3_905() { if (jj_scan_token(SESSION)) return true; return false; } - final private boolean jj_3_902() { + final private boolean jj_3_904() { if (jj_scan_token(HOP)) return true; return false; } - final private boolean jj_3_440() { - if (jj_3R_219()) return true; - return false; - } - - final private boolean jj_3_901() { + final private boolean jj_3_903() { if (jj_scan_token(TUMBLE)) return true; return false; } - final private boolean jj_3R_97() { - if (jj_scan_token(KILL)) return true; - if (jj_scan_token(SERVICE)) return true; + final private boolean jj_3_440() { + if (jj_3R_219()) return true; return false; } - final private boolean jj_3R_308() { + final private boolean jj_3R_310() { Token xsp; xsp = jj_scanpos; - if (jj_3_901()) { + if (jj_3_903()) { jj_scanpos = xsp; - if (jj_3_902()) { + if (jj_3_904()) { jj_scanpos = xsp; - if (jj_3_903()) return true; + if (jj_3_905()) return true; } } - if (jj_3R_399()) return true; + if (jj_3R_401()) return true; + return false; + } + + final private boolean jj_3_127() { + if (jj_scan_token(ASYNC)) return true; return false; } @@ -28986,15 +28982,21 @@ final private boolean jj_3_441() { return false; } + 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_438() { if (jj_scan_token(LPAREN)) return true; if (jj_scan_token(STAR)) return true; return false; } - final private boolean jj_3R_98() { - if (jj_scan_token(KILL)) return true; - if (jj_scan_token(TRANSACTION)) return true; + final private boolean jj_3R_301() { + if (jj_scan_token(TIME_TRUNC)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } @@ -29003,15 +29005,15 @@ final private boolean jj_3R_205() { return false; } - final private boolean jj_3R_299() { - if (jj_scan_token(TIME_TRUNC)) return true; - if (jj_scan_token(LPAREN)) return true; + 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_3R_96() { + final private boolean jj_3R_98() { if (jj_scan_token(KILL)) return true; - if (jj_scan_token(CONTINUOUS)) return true; + if (jj_scan_token(TRANSACTION)) return true; return false; } @@ -29025,9 +29027,9 @@ final private boolean jj_3_436() { return false; } - final private boolean jj_3R_95() { - if (jj_scan_token(KILL)) return true; - if (jj_scan_token(SCAN)) return true; + final private boolean jj_3R_294() { + if (jj_scan_token(DATETIME_TRUNC)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } @@ -29041,20 +29043,26 @@ final private boolean jj_3R_75() { return false; } - final private boolean jj_3R_292() { - if (jj_scan_token(DATETIME_TRUNC)) return true; + 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_300() { + if (jj_scan_token(TIME_DIFF)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_435() { - if (jj_scan_token(EQUALS)) return true; + 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_298() { - if (jj_scan_token(TIME_DIFF)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_435() { + if (jj_scan_token(EQUALS)) return true; return false; } @@ -29085,18 +29093,18 @@ final private boolean jj_3_430() { return false; } - final private boolean jj_3_429() { - if (jj_3R_133()) return true; + final private boolean jj_3R_299() { + if (jj_scan_token(TIMESTAMP_TRUNC)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3R_297() { - if (jj_scan_token(TIMESTAMP_TRUNC)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_429() { + if (jj_3R_133()) return true; return false; } - final private boolean jj_3R_413() { + final private boolean jj_3R_415() { Token xsp; xsp = jj_scanpos; if (jj_3_428()) { @@ -29112,59 +29120,65 @@ final private boolean jj_3_428() { return false; } - final private boolean jj_3_126() { - if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; + final private boolean jj_3_902() { + if (jj_3R_79()) return true; return false; } - final private boolean jj_3_125() { - if (jj_scan_token(MINUS)) return true; - if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; + final private boolean jj_3_901() { + if (jj_3R_269()) return true; return false; } - final private boolean jj_3_124() { - if (jj_scan_token(PLUS)) return true; - if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; + final private boolean jj_3R_408() { + if (jj_3R_415()) return true; + if (jj_scan_token(LAMBDA)) return true; return false; } - final private boolean jj_3_900() { - if (jj_3R_79()) return true; + final private boolean jj_3R_293() { + if (jj_scan_token(DATE_TRUNC)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_899() { - if (jj_3R_267()) return true; + final private boolean jj_3_126() { + if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3R_406() { - if (jj_3R_413()) return true; - if (jj_scan_token(LAMBDA)) return true; + final private boolean jj_3_125() { + if (jj_scan_token(MINUS)) return true; + if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3R_239() { - if (jj_scan_token(USER)) return true; - if (jj_3R_85()) return true; + final private boolean jj_3_124() { + if (jj_scan_token(PLUS)) return true; + if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3R_291() { - if (jj_scan_token(DATE_TRUNC)) return true; + final private boolean jj_3R_296() { + if (jj_scan_token(DATETIME_DIFF)) return true; if (jj_scan_token(LPAREN)) return true; return false; } + final private boolean jj_3R_240() { + if (jj_scan_token(USER)) return true; + if (jj_3R_85()) 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_3R_294() { - if (jj_scan_token(DATETIME_DIFF)) return true; + final private boolean jj_3R_298() { + if (jj_scan_token(TIMESTAMP_DIFF)) return true; if (jj_scan_token(LPAREN)) return true; return false; } @@ -29180,6 +29194,11 @@ final private boolean jj_3_119() { return false; } + final private boolean jj_3_423() { + if (jj_3R_214()) return true; + return false; + } + final private boolean jj_3_118() { if (jj_scan_token(COLUMN)) return true; return false; @@ -29195,6 +29214,10 @@ final private boolean jj_3_123() { return false; } + final private boolean jj_3R_217() { + return false; + } + final private boolean jj_3_122() { if (jj_scan_token(ADD)) return true; Token xsp; @@ -29205,6 +29228,11 @@ final private boolean jj_3_122() { return false; } + final private boolean jj_3_422() { + if (jj_scan_token(ROW)) return true; + return false; + } + final private boolean jj_3_121() { if (jj_scan_token(NOLOGGING)) return true; return false; @@ -29215,9 +29243,21 @@ final private boolean jj_3_120() { return false; } - final private boolean jj_3R_296() { - if (jj_scan_token(TIMESTAMP_DIFF)) return true; + final private boolean jj_3R_297() { + if (jj_scan_token(TIMESTAMPDIFF)) return true; if (jj_scan_token(LPAREN)) return true; + if (jj_3R_330()) return true; + return false; + } + + final private boolean jj_3_427() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_422()) { + jj_scanpos = xsp; + if (jj_3R_217()) return true; + } + if (jj_3R_171()) return true; return false; } @@ -29227,8 +29267,14 @@ final private boolean jj_3R_93() { return false; } - final private boolean jj_3_423() { - if (jj_3R_214()) return true; + final private boolean jj_3_426() { + if (jj_scan_token(ROW)) return true; + if (jj_3R_171()) return true; + return false; + } + + final private boolean jj_3_425() { + if (jj_3R_216()) return true; return false; } @@ -29252,59 +29298,9 @@ final private boolean jj_3_116() { return false; } - final private boolean jj_3R_217() { - return false; - } - - final private boolean jj_3_422() { - if (jj_scan_token(ROW)) return true; - return false; - } - - final private boolean jj_3_427() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_422()) { - jj_scanpos = xsp; - if (jj_3R_217()) return true; - } - if (jj_3R_171()) return true; - return false; - } - final private boolean jj_3R_295() { - if (jj_scan_token(TIMESTAMPDIFF)) return true; + if (jj_scan_token(TIMESTAMPADD)) return true; if (jj_scan_token(LPAREN)) return true; - if (jj_3R_328()) return true; - return false; - } - - final private boolean jj_3_115() { - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(NULL)) return true; - return false; - } - - final private boolean jj_3R_128() { - if (jj_3R_85()) return true; - if (jj_3R_121()) return true; - return false; - } - - final private boolean jj_3_426() { - if (jj_scan_token(ROW)) return true; - if (jj_3R_171()) return true; - return false; - } - - final private boolean jj_3_425() { - if (jj_3R_216()) return true; - return false; - } - - final private boolean jj_3_114() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_128()) return true; return false; } @@ -29329,26 +29325,26 @@ final private boolean jj_3_424() { return false; } - final private boolean jj_3R_293() { - if (jj_scan_token(TIMESTAMPADD)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_115() { + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(NULL)) return true; return false; } - final private boolean jj_3R_129() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_128()) return true; + final private boolean jj_3R_128() { + if (jj_3R_85()) return true; + if (jj_3R_121()) return true; return false; } - final private boolean jj_3_421() { - if (jj_scan_token(NE2)) return true; + final private boolean jj_3R_292() { + if (jj_scan_token(DATE_DIFF)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3R_210() { - if (jj_scan_token(INFIX_CAST)) return true; - if (jj_3R_121()) return true; + final private boolean jj_3_421() { + if (jj_scan_token(NE2)) return true; return false; } @@ -29357,9 +29353,9 @@ final private boolean jj_3_420() { return false; } - final private boolean jj_3R_290() { - if (jj_scan_token(DATE_DIFF)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_114() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_128()) return true; return false; } @@ -29383,10 +29379,9 @@ final private boolean jj_3_416() { return false; } - final private boolean jj_3R_238() { - if (jj_scan_token(INDEX)) return true; - if (jj_3R_132()) return true; - if (jj_3R_151()) return true; + final private boolean jj_3R_129() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_128()) return true; return false; } @@ -29420,30 +29415,29 @@ final private boolean jj_3_415() { return false; } - final private boolean jj_3_898() { + final private boolean jj_3_900() { if (jj_scan_token(COMMA)) return true; if (jj_scan_token(JSON_SCOPE)) return true; return false; } - final private boolean jj_3_897() { + final private boolean jj_3_899() { if (jj_scan_token(RPAREN)) return true; return false; } - final private boolean jj_3R_381() { + final private boolean jj_3R_383() { return false; } - final private boolean jj_3R_237() { - if (jj_scan_token(TABLE)) return true; - if (jj_3R_132()) return true; - if (jj_3R_151()) return true; + final private boolean jj_3_414() { + if (jj_scan_token(SAFE_ORDINAL)) return true; return false; } - final private boolean jj_3_414() { - if (jj_scan_token(SAFE_ORDINAL)) return true; + final private boolean jj_3R_290() { + if (jj_scan_token(CONTAINS_SUBSTR)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } @@ -29457,12 +29451,6 @@ final private boolean jj_3_412() { return false; } - final private boolean jj_3R_288() { - if (jj_scan_token(CONTAINS_SUBSTR)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - final private boolean jj_3R_212() { Token xsp; xsp = jj_scanpos; @@ -29474,7 +29462,7 @@ final private boolean jj_3R_212() { jj_scanpos = xsp; if (jj_3_414()) { jj_scanpos = xsp; - if (jj_3R_381()) return true; + if (jj_3R_383()) return true; } } } @@ -29487,27 +29475,20 @@ final private boolean jj_3_411() { return false; } - final private boolean jj_3R_359() { - return false; - } - - final private boolean jj_3R_132() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_113()) { - jj_scanpos = xsp; - if (jj_3R_359()) return true; - } + final private boolean jj_3R_210() { + if (jj_scan_token(INFIX_CAST)) return true; + if (jj_3R_121()) return true; return false; } - final private boolean jj_3_113() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(EXISTS)) return true; + final private boolean jj_3R_407() { return false; } - final private boolean jj_3R_405() { + final private boolean jj_3R_239() { + if (jj_scan_token(INDEX)) return true; + if (jj_3R_132()) return true; + if (jj_3R_151()) return true; return false; } @@ -29522,30 +29503,15 @@ final private boolean jj_3_401() { return false; } - final private boolean jj_3_112() { - if (jj_scan_token(INLINE_SIZE)) return true; - if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; - return false; - } - - final private boolean jj_3_111() { - if (jj_scan_token(PARALLEL)) return true; - if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; - return false; - } - - final private boolean jj_3_110() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_111()) { - jj_scanpos = xsp; - if (jj_3_112()) return true; - } + final private boolean jj_3_898() { + if (jj_3R_321()) return true; return false; } - final private boolean jj_3_896() { - if (jj_3R_319()) return true; + final private boolean jj_3R_238() { + if (jj_scan_token(TABLE)) return true; + if (jj_3R_132()) return true; + if (jj_3R_151()) return true; return false; } @@ -29555,18 +29521,28 @@ final private boolean jj_3_407() { return false; } - final private boolean jj_3_109() { - if (jj_3R_85()) return true; + final private boolean jj_3R_361() { + return false; + } + + final private boolean jj_3_897() { + if (jj_3R_319()) return true; return false; } - final private boolean jj_3R_235() { - if (jj_scan_token(INDEX)) return true; - if (jj_3R_130()) return true; + final private boolean jj_3R_132() { Token xsp; xsp = jj_scanpos; - if (jj_3_109()) jj_scanpos = xsp; - if (jj_scan_token(ON)) return true; + if (jj_3_113()) { + jj_scanpos = xsp; + if (jj_3R_361()) return true; + } + return false; + } + + final private boolean jj_3_113() { + if (jj_scan_token(IF)) return true; + if (jj_scan_token(EXISTS)) return true; return false; } @@ -29576,8 +29552,8 @@ final private boolean jj_3_406() { return false; } - final private boolean jj_3_895() { - if (jj_3R_317()) return true; + final private boolean jj_3_896() { + if (jj_3R_320()) return true; return false; } @@ -29586,8 +29562,9 @@ final private boolean jj_3_405() { return false; } - final private boolean jj_3_894() { - if (jj_3R_318()) return true; + final private boolean jj_3R_309() { + if (jj_scan_token(JSON_ARRAYAGG)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } @@ -29597,20 +29574,30 @@ final private boolean jj_3_400() { return false; } - final private boolean jj_3R_307() { - if (jj_scan_token(JSON_ARRAYAGG)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_112() { + if (jj_scan_token(INLINE_SIZE)) return true; + if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3_108() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_127()) return true; + final private boolean jj_3_396() { + if (jj_scan_token(STAR)) return true; return false; } - final private boolean jj_3_396() { - if (jj_scan_token(STAR)) return true; + final private boolean jj_3_111() { + if (jj_scan_token(PARALLEL)) return true; + if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; + return false; + } + + final private boolean jj_3_110() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_111()) { + jj_scanpos = xsp; + if (jj_3_112()) return true; + } return false; } @@ -29639,6 +29626,11 @@ final private boolean jj_3_398() { return false; } + final private boolean jj_3R_320() { + if (jj_3R_71()) return true; + return false; + } + final private boolean jj_3_393() { if (jj_scan_token(RLIKE)) return true; return false; @@ -29649,14 +29641,14 @@ final private boolean jj_3_392() { return false; } - final private boolean jj_3_389() { - if (jj_scan_token(SIMILAR)) return true; - if (jj_scan_token(TO)) return true; + final private boolean jj_3_109() { + if (jj_3R_85()) return true; return false; } - final private boolean jj_3R_318() { - if (jj_3R_71()) return true; + final private boolean jj_3_389() { + if (jj_scan_token(SIMILAR)) return true; + if (jj_scan_token(TO)) return true; return false; } @@ -29680,23 +29672,24 @@ final private boolean jj_3_386() { return false; } - final private boolean jj_3_106() { - if (jj_scan_token(DESC)) return true; + final private boolean jj_3R_235() { + if (jj_scan_token(INDEX)) return true; + if (jj_3R_130()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_109()) jj_scanpos = xsp; + if (jj_scan_token(ON)) return true; return false; } - final private boolean jj_3_107() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_105()) { - jj_scanpos = xsp; - if (jj_3_106()) return true; - } + final private boolean jj_3_895() { + if (jj_3R_319()) return true; return false; } - final private boolean jj_3_105() { - if (jj_scan_token(ASC)) return true; + final private boolean jj_3_893() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_79()) return true; return false; } @@ -29717,19 +29710,13 @@ final private boolean jj_3_390() { return false; } - final private boolean jj_3_893() { - if (jj_3R_317()) return true; - return false; - } - - final private boolean jj_3R_127() { - if (jj_3R_85()) return true; - return false; - } - - final private boolean jj_3_891() { - if (jj_scan_token(COMMA)) return true; + final private boolean jj_3_894() { if (jj_3R_79()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_893()) { jj_scanpos = xsp; break; } + } return false; } @@ -29752,28 +29739,15 @@ final private boolean jj_3_397() { return false; } - final private boolean jj_3_892() { - if (jj_3R_79()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_891()) { jj_scanpos = xsp; break; } - } - return false; - } - - final private boolean jj_3R_125() { - return false; - } - - final private boolean jj_3R_306() { + final private boolean jj_3R_308() { if (jj_scan_token(JSON_ARRAY)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_102() { - if (jj_3R_123()) return true; + final private boolean jj_3_108() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_127()) return true; return false; } @@ -29811,21 +29785,8 @@ final private boolean jj_3_381() { return false; } - final private boolean jj_3_104() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_102()) { - jj_scanpos = xsp; - if (jj_3R_125()) return true; - } - if (jj_3R_126()) return true; - if (jj_scan_token(AS)) return true; - if (jj_3R_80()) return true; - return false; - } - - final private boolean jj_3_103() { - if (jj_3R_124()) return true; + final private boolean jj_3_892() { + if (jj_3R_319()) return true; return false; } @@ -29842,11 +29803,6 @@ final private boolean jj_3_385() { return false; } - final private boolean jj_3_890() { - if (jj_3R_317()) return true; - return false; - } - final private boolean jj_3_380() { Token xsp; xsp = jj_scanpos; @@ -29862,28 +29818,44 @@ final private boolean jj_3_378() { return false; } - final private boolean jj_3R_234() { - if (jj_scan_token(TABLE)) return true; - if (jj_3R_130()) return true; - if (jj_3R_151()) return true; + final private boolean jj_3_106() { + if (jj_scan_token(DESC)) return true; return false; } - final private boolean jj_3R_305() { + final private boolean jj_3_107() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_105()) { + jj_scanpos = xsp; + if (jj_3_106()) return true; + } + return false; + } + + final private boolean jj_3_105() { + if (jj_scan_token(ASC)) return true; + return false; + } + + final private boolean jj_3R_307() { if (jj_scan_token(JSON_OBJECTAGG)) return true; if (jj_scan_token(LPAREN)) return true; return false; } + final private boolean jj_3R_127() { + if (jj_3R_85()) return true; + return false; + } + final private boolean jj_3_384() { if (jj_scan_token(NOT)) return true; if (jj_scan_token(BETWEEN)) return true; return false; } - final private boolean jj_3_101() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_122()) return true; + final private boolean jj_3R_125() { return false; } @@ -29898,36 +29870,47 @@ final private boolean jj_3_403() { return false; } - final private boolean jj_3R_124() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_122()) return true; + final private boolean jj_3_102() { + if (jj_3R_123()) return true; return false; } - final private boolean jj_3_889() { - if (jj_3R_317()) return true; + final private boolean jj_3_104() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_102()) { + jj_scanpos = xsp; + if (jj_3R_125()) return true; + } + if (jj_3R_126()) return true; + if (jj_scan_token(AS)) return true; + if (jj_3R_80()) return true; return false; } - final private boolean jj_3_374() { - if (jj_scan_token(ALL)) return true; + final private boolean jj_3_891() { + if (jj_3R_319()) return true; return false; } - final private boolean jj_3_887() { + final private boolean jj_3_889() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_316()) return true; + if (jj_3R_318()) return true; return false; } - final private boolean jj_3_373() { - if (jj_scan_token(ANY)) return true; + final private boolean jj_3_103() { + if (jj_3R_124()) return true; return false; } - final private boolean jj_3_98() { - if (jj_scan_token(CONSTRAINT)) return true; - if (jj_3R_85()) return true; + final private boolean jj_3_374() { + if (jj_scan_token(ALL)) return true; + return false; + } + + final private boolean jj_3_373() { + if (jj_scan_token(ANY)) return true; return false; } @@ -29936,17 +29919,21 @@ final private boolean jj_3_372() { return false; } - final private boolean jj_3_100() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_98()) jj_scanpos = xsp; - if (jj_scan_token(PRIMARY)) return true; - if (jj_scan_token(KEY)) return true; + final private boolean jj_3_890() { + if (jj_3R_318()) return true; return false; } - final private boolean jj_3_888() { - if (jj_3R_316()) return true; + final private boolean jj_3R_306() { + if (jj_scan_token(JSON_OBJECT)) return true; + if (jj_scan_token(LPAREN)) return true; + return false; + } + + final private boolean jj_3R_234() { + if (jj_scan_token(TABLE)) return true; + if (jj_3R_130()) return true; + if (jj_3R_151()) return true; return false; } @@ -29964,32 +29951,20 @@ final private boolean jj_3_377() { return false; } - final private boolean jj_3_97() { - if (jj_scan_token(PRIMARY)) return true; - if (jj_scan_token(KEY)) return true; - return false; - } - final private boolean jj_3_376() { if (jj_scan_token(IN)) return true; return false; } - final private boolean jj_3R_304() { - if (jj_scan_token(JSON_OBJECT)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - final private boolean jj_3_375() { if (jj_scan_token(NOT)) return true; if (jj_scan_token(IN)) return true; return false; } - final private boolean jj_3_96() { - if (jj_scan_token(DEFAULT_)) return true; - if (jj_3R_118()) return true; + final private boolean jj_3_101() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_122()) return true; return false; } @@ -30007,25 +29982,31 @@ final private boolean jj_3_402() { return false; } - final private boolean jj_3R_122() { + final private boolean jj_3_888() { + if (jj_scan_token(ABSENT)) return true; + if (jj_scan_token(ON)) return true; + return false; + } + + final private boolean jj_3R_319() { Token xsp; xsp = jj_scanpos; - if (jj_3_99()) { + if (jj_3_887()) { jj_scanpos = xsp; - if (jj_3_100()) return true; + if (jj_3_888()) return true; } return false; } - final private boolean jj_3_99() { - if (jj_3R_85()) return true; - if (jj_3R_121()) return true; + final private boolean jj_3_887() { + if (jj_scan_token(NULL)) return true; + if (jj_scan_token(ON)) return true; return false; } - final private boolean jj_3_886() { - if (jj_scan_token(ABSENT)) return true; - if (jj_scan_token(ON)) return true; + final private boolean jj_3R_124() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_122()) return true; return false; } @@ -30054,72 +30035,170 @@ final private boolean jj_3_409() { return false; } - final private boolean jj_3R_317() { + final private boolean jj_3_410() { + Token xsp; + if (jj_3_409()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3_409()) { jj_scanpos = xsp; break; } + } + return false; + } + + final private boolean jj_3_98() { + if (jj_scan_token(CONSTRAINT)) return true; + if (jj_3R_85()) return true; + return false; + } + + final private boolean jj_3_886() { + if (jj_scan_token(COLON)) return true; + return false; + } + + final private boolean jj_3R_209() { + if (jj_3R_208()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_885()) { + if (jj_3_410()) { jj_scanpos = xsp; - if (jj_3_886()) return true; + if (jj_3R_407()) return true; } return false; } + final private boolean jj_3_100() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_98()) jj_scanpos = xsp; + if (jj_scan_token(PRIMARY)) return true; + if (jj_scan_token(KEY)) return true; + return false; + } + + final private boolean jj_3_883() { + if (jj_scan_token(KEY)) return true; + if (jj_3R_317()) return true; + return false; + } + final private boolean jj_3_885() { - if (jj_scan_token(NULL)) return true; - if (jj_scan_token(ON)) return true; + if (jj_scan_token(COMMA)) return true; return false; } - final private boolean jj_3_410() { + final private boolean jj_3_884() { + if (jj_scan_token(VALUE)) return true; + return false; + } + + final private boolean jj_3_97() { + if (jj_scan_token(PRIMARY)) return true; + if (jj_scan_token(KEY)) return true; + return false; + } + + final private boolean jj_3R_402() { + if (jj_scan_token(KEY)) return true; + return false; + } + + final private boolean jj_3R_318() { Token xsp; - if (jj_3_409()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3_409()) { jj_scanpos = xsp; break; } + xsp = jj_scanpos; + if (jj_3R_402()) jj_scanpos = xsp; + if (jj_3R_317()) return true; + xsp = jj_scanpos; + if (jj_3_884()) { + jj_scanpos = xsp; + if (jj_3_885()) { + jj_scanpos = xsp; + if (jj_3_886()) return true; + } } return false; } - final private boolean jj_3R_209() { - if (jj_3R_208()) return true; + final private boolean jj_3_96() { + if (jj_scan_token(DEFAULT_)) return true; + if (jj_3R_118()) return true; + return false; + } + + final private boolean jj_3R_122() { Token xsp; xsp = jj_scanpos; - if (jj_3_410()) { + if (jj_3_99()) { jj_scanpos = xsp; - if (jj_3R_405()) return true; + if (jj_3_100()) return true; } return false; } + final private boolean jj_3_99() { + if (jj_3R_85()) return true; + if (jj_3R_121()) return true; + return false; + } + + final private boolean jj_3R_317() { + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3R_412() { + return false; + } + + final private boolean jj_3_371() { + if (jj_scan_token(DOT)) return true; + if (jj_3R_205()) return true; + return false; + } + final private boolean jj_3R_120() { if (jj_scan_token(INTERVAL)) return true; if (jj_3R_214()) return true; return false; } - final private boolean jj_3_884() { - if (jj_scan_token(COLON)) return true; + final private boolean jj_3R_382() { + if (jj_3R_414()) return true; return false; } - final private boolean jj_3_881() { - if (jj_scan_token(KEY)) return true; - if (jj_3R_315()) return true; + final private boolean jj_3R_374() { + 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; return false; } - final private boolean jj_3_883() { - if (jj_scan_token(COMMA)) return true; + final private boolean jj_3R_208() { + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3R_382()) { jj_scanpos = xsp; break; } + } + if (jj_3R_207()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3_371()) { jj_scanpos = xsp; break; } + } return false; } - final private boolean jj_3_882() { - if (jj_scan_token(VALUE)) return true; + final private boolean jj_3_95() { + if (jj_3R_120()) return true; return false; } - final private boolean jj_3_95() { - if (jj_3R_120()) return true; + final private boolean jj_3_882() { + if (jj_3R_316()) return true; return false; } @@ -30128,8 +30207,14 @@ final private boolean jj_3_94() { return false; } - final private boolean jj_3R_400() { - if (jj_scan_token(KEY)) return true; + final private boolean jj_3_877() { + if (jj_scan_token(ARRAY)) return true; + return false; + } + + final private boolean jj_3_881() { + if (jj_3R_315()) return true; + if (jj_scan_token(WRAPPER)) return true; return false; } @@ -30143,19 +30228,13 @@ final private boolean jj_3R_121() { return false; } - final private boolean jj_3R_316() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_400()) jj_scanpos = xsp; - if (jj_3R_315()) return true; - xsp = jj_scanpos; - if (jj_3_882()) { - jj_scanpos = xsp; - if (jj_3_883()) { - jj_scanpos = xsp; - if (jj_3_884()) return true; - } - } + final private boolean jj_3R_82() { + if (jj_3R_209()) return true; + return false; + } + + final private boolean jj_3_875() { + if (jj_scan_token(ARRAY)) return true; return false; } @@ -30164,34 +30243,65 @@ final private boolean jj_3_93() { return false; } + final private boolean jj_3R_305() { + if (jj_scan_token(JSON_QUERY)) return true; + if (jj_scan_token(LPAREN)) return true; + return false; + } + final private boolean jj_3_92() { if (jj_3R_118()) return true; return false; } - final private boolean jj_3R_315() { + final private boolean jj_3R_79() { if (jj_3R_82()) return true; return false; } - final private boolean jj_3_371() { - if (jj_scan_token(DOT)) return true; - if (jj_3R_205()) return true; + final private boolean jj_3_876() { + if (jj_scan_token(UNCONDITIONAL)) return true; return false; } final private boolean jj_3R_117() { - if (jj_3R_355()) return true; + if (jj_3R_357()) return true; if (jj_scan_token(EQ)) return true; return false; } - final private boolean jj_3R_410() { + final private boolean jj_3_874() { + if (jj_scan_token(ARRAY)) return true; return false; } - final private boolean jj_3R_380() { - if (jj_3R_412()) return true; + final private boolean jj_3_370() { + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3_880() { + if (jj_scan_token(WITH)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_876()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3_877()) jj_scanpos = xsp; + return false; + } + + final private boolean jj_3R_249() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_369()) { + jj_scanpos = xsp; + if (jj_3_370()) return true; + } + return false; + } + + final private boolean jj_3_369() { + if (jj_3R_204()) return true; return false; } @@ -30200,22 +30310,14 @@ final private boolean jj_3_91() { return false; } - final private boolean jj_3_90() { - if (jj_scan_token(VALUE_TYPE)) return true; + final private boolean jj_3_879() { + if (jj_scan_token(WITH)) return true; + if (jj_scan_token(CONDITIONAL)) return true; return false; } - final private boolean jj_3R_208() { - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3R_380()) { jj_scanpos = xsp; break; } - } - if (jj_3R_207()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3_371()) { jj_scanpos = xsp; break; } - } + final private boolean jj_3_90() { + if (jj_scan_token(VALUE_TYPE)) return true; return false; } @@ -30224,14 +30326,24 @@ final private boolean jj_3_89() { return false; } - final private boolean jj_3R_372() { + final private boolean jj_3R_315() { Token xsp; xsp = jj_scanpos; - lookingAhead = true; - jj_semLA = false; - lookingAhead = false; - if (!jj_semLA || jj_3R_410()) return true; - if (jj_scan_token(ZONE)) return true; + if (jj_3_878()) { + jj_scanpos = xsp; + if (jj_3_879()) { + jj_scanpos = xsp; + if (jj_3_880()) return true; + } + } + return false; + } + + final private boolean jj_3_878() { + if (jj_scan_token(WITHOUT)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_874()) jj_scanpos = xsp; return false; } @@ -30245,13 +30357,13 @@ final private boolean jj_3_87() { return false; } - final private boolean jj_3_880() { - if (jj_3R_314()) return true; + final private boolean jj_3_86() { + if (jj_scan_token(CACHE_GROUP)) return true; return false; } - final private boolean jj_3_86() { - if (jj_scan_token(CACHE_GROUP)) return true; + final private boolean jj_3_368() { + if (jj_3R_123()) return true; return false; } @@ -30260,13 +30372,13 @@ final private boolean jj_3_85() { return false; } - final private boolean jj_3_875() { - if (jj_scan_token(ARRAY)) return true; + final private boolean jj_3_873() { + if (jj_scan_token(ERROR)) return true; return false; } - final private boolean jj_3R_82() { - if (jj_3R_209()) return true; + final private boolean jj_3R_203() { + if (jj_3R_85()) return true; return false; } @@ -30275,14 +30387,13 @@ final private boolean jj_3_84() { return false; } - final private boolean jj_3_879() { - if (jj_3R_313()) return true; - if (jj_scan_token(WRAPPER)) return true; + final private boolean jj_3_83() { + if (jj_scan_token(AFFINITY_KEY)) return true; return false; } - final private boolean jj_3_83() { - if (jj_scan_token(AFFINITY_KEY)) return true; + final private boolean jj_3_872() { + if (jj_scan_token(EMPTY)) return true; return false; } @@ -30291,7 +30402,12 @@ final private boolean jj_3_82() { return false; } - final private boolean jj_3R_355() { + final private boolean jj_3_366() { + if (jj_scan_token(RECURSIVE)) return true; + return false; + } + + final private boolean jj_3R_357() { Token xsp; xsp = jj_scanpos; if (jj_3_81()) { @@ -30333,75 +30449,73 @@ final private boolean jj_3_81() { return false; } - final private boolean jj_3_873() { - if (jj_scan_token(ARRAY)) return true; - return false; - } - final private boolean jj_3_77() { if (jj_scan_token(COMMA)) return true; if (jj_3R_117()) return true; return false; } - final private boolean jj_3R_303() { - if (jj_scan_token(JSON_QUERY)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - - final private boolean jj_3R_79() { - if (jj_3R_82()) return true; + final private boolean jj_3_871() { + if (jj_scan_token(EMPTY)) return true; + if (jj_scan_token(OBJECT)) return true; return false; } - final private boolean jj_3_79() { - if (jj_3R_117()) return true; + final private boolean jj_3_367() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_203()) return true; return false; } - final private boolean jj_3_874() { - if (jj_scan_token(UNCONDITIONAL)) return true; + final private boolean jj_3R_202() { + if (jj_scan_token(WITH)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_366()) jj_scanpos = xsp; + if (jj_3R_203()) return true; return false; } - final private boolean jj_3_370() { - if (jj_3R_82()) return true; + final private boolean jj_3_870() { + if (jj_scan_token(EMPTY)) return true; + if (jj_scan_token(ARRAY)) return true; return false; } - final private boolean jj_3R_247() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_369()) { - jj_scanpos = xsp; - if (jj_3_370()) return true; - } + final private boolean jj_3_79() { + if (jj_3R_117()) return true; return false; } - final private boolean jj_3_78() { - if (jj_scan_token(QUOTED_IDENTIFIER)) return true; + final private boolean jj_3_869() { + if (jj_scan_token(NULL)) return true; return false; } - final private boolean jj_3_369() { - if (jj_3R_204()) return true; + final private boolean jj_3_868() { + if (jj_scan_token(ERROR)) return true; return false; } - final private boolean jj_3_872() { - if (jj_scan_token(ARRAY)) return true; + final private boolean jj_3_78() { + if (jj_scan_token(QUOTED_IDENTIFIER)) return true; return false; } - final private boolean jj_3_878() { - if (jj_scan_token(WITH)) return true; + final private boolean jj_3R_316() { Token xsp; xsp = jj_scanpos; - if (jj_3_874()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3_875()) jj_scanpos = xsp; + if (jj_3_868()) { + jj_scanpos = xsp; + if (jj_3_869()) { + jj_scanpos = xsp; + if (jj_3_870()) { + jj_scanpos = xsp; + if (jj_3_871()) return true; + } + } + } + if (jj_scan_token(ON)) return true; return false; } @@ -30416,25 +30530,6 @@ final private boolean jj_3_80() { return false; } - final private boolean jj_3_877() { - if (jj_scan_token(WITH)) return true; - if (jj_scan_token(CONDITIONAL)) return true; - return false; - } - - final private boolean jj_3R_313() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_876()) { - jj_scanpos = xsp; - if (jj_3_877()) { - jj_scanpos = xsp; - if (jj_3_878()) return true; - } - } - return false; - } - final private boolean jj_3R_126() { Token xsp; xsp = jj_scanpos; @@ -30442,35 +30537,22 @@ final private boolean jj_3R_126() { return false; } - final private boolean jj_3_876() { - if (jj_scan_token(WITHOUT)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_872()) jj_scanpos = xsp; - return false; - } - - final private boolean jj_3_368() { - if (jj_3R_123()) return true; - return false; - } - - final private boolean jj_3R_203() { - if (jj_3R_85()) return true; + final private boolean jj_3_867() { + if (jj_3R_314()) return true; return false; } - final private boolean jj_3_871() { - if (jj_scan_token(ERROR)) return true; + final private boolean jj_3R_68() { + if (jj_3R_342()) return true; return false; } - final private boolean jj_3R_358() { + final private boolean jj_3R_360() { return false; } - final private boolean jj_3_366() { - if (jj_scan_token(RECURSIVE)) return true; + final private boolean jj_3_866() { + if (jj_3R_313()) return true; return false; } @@ -30479,7 +30561,7 @@ final private boolean jj_3R_130() { xsp = jj_scanpos; if (jj_3_76()) { jj_scanpos = xsp; - if (jj_3R_358()) return true; + if (jj_3R_360()) return true; } return false; } @@ -30490,44 +30572,13 @@ final private boolean jj_3_76() { return false; } - final private boolean jj_3_870() { - if (jj_scan_token(EMPTY)) return true; - return false; - } - - final private boolean jj_3_367() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_203()) return true; - return false; - } - - final private boolean jj_3_869() { - if (jj_scan_token(EMPTY)) return true; - if (jj_scan_token(OBJECT)) return true; - return false; - } - - final private boolean jj_3R_202() { - if (jj_scan_token(WITH)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_366()) jj_scanpos = xsp; - if (jj_3R_203()) return true; - return false; - } - - final private boolean jj_3_868() { - if (jj_scan_token(EMPTY)) return true; - if (jj_scan_token(ARRAY)) return true; - return false; - } - - final private boolean jj_3_867() { - if (jj_scan_token(NULL)) return true; + final private boolean jj_3R_304() { + if (jj_scan_token(JSON_VALUE)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_866() { + final private boolean jj_3_865() { if (jj_scan_token(ERROR)) return true; return false; } @@ -30537,20 +30588,8 @@ final private boolean jj_3_75() { return false; } - final private boolean jj_3R_314() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_866()) { - jj_scanpos = xsp; - if (jj_3_867()) { - jj_scanpos = xsp; - if (jj_3_868()) { - jj_scanpos = xsp; - if (jj_3_869()) return true; - } - } - } - if (jj_scan_token(ON)) return true; + final private boolean jj_3_864() { + if (jj_scan_token(EMPTY)) return true; return false; } @@ -30574,13 +30613,14 @@ final private boolean jj_3_71() { return false; } - final private boolean jj_3_70() { - if (jj_3R_111()) return true; + final private boolean jj_3_863() { + if (jj_scan_token(DEFAULT_)) return true; + if (jj_3R_79()) return true; return false; } - final private boolean jj_3R_68() { - if (jj_3R_340()) return true; + final private boolean jj_3_70() { + if (jj_3R_111()) return true; return false; } @@ -30589,8 +30629,8 @@ final private boolean jj_3_69() { return false; } - final private boolean jj_3_865() { - if (jj_3R_312()) return true; + final private boolean jj_3_862() { + if (jj_scan_token(NULL)) return true; return false; } @@ -30604,13 +30644,13 @@ final private boolean jj_3_67() { return false; } - final private boolean jj_3_66() { - if (jj_3R_108()) return true; + final private boolean jj_3_861() { + if (jj_scan_token(ERROR)) return true; return false; } - final private boolean jj_3_864() { - if (jj_3R_311()) return true; + final private boolean jj_3_66() { + if (jj_3R_108()) return true; return false; } @@ -30619,11 +30659,43 @@ final private boolean jj_3_65() { return false; } + final private boolean jj_3_365() { + if (jj_3R_68()) return true; + return false; + } + + final private boolean jj_3R_314() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_861()) { + jj_scanpos = xsp; + if (jj_3_862()) { + jj_scanpos = xsp; + if (jj_3_863()) return true; + } + } + if (jj_scan_token(ON)) return true; + return false; + } + final private boolean jj_3_64() { if (jj_3R_106()) return true; return false; } + final private boolean jj_3_364() { + if (jj_3R_202()) return true; + return false; + } + + final private boolean jj_3R_69() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_364()) jj_scanpos = xsp; + if (jj_3R_204()) return true; + return false; + } + final private boolean jj_3_63() { if (jj_3R_105()) return true; return false; @@ -30634,12 +30706,6 @@ final private boolean jj_3_62() { return false; } - final private boolean jj_3R_302() { - if (jj_scan_token(JSON_VALUE)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - final private boolean jj_3_61() { if (jj_3R_103()) return true; return false; @@ -30650,28 +30716,57 @@ final private boolean jj_3_60() { return false; } + final private boolean jj_3_860() { + if (jj_3R_312()) return true; + if (jj_scan_token(ON)) return true; + return false; + } + final private boolean jj_3_59() { if (jj_3R_101()) return true; return false; } + final private boolean jj_3_363() { + if (jj_3R_68()) return true; + return false; + } + final private boolean jj_3_58() { if (jj_3R_100()) return true; return false; } + final private boolean jj_3_362() { + if (jj_3R_202()) return true; + return false; + } + final private boolean jj_3_57() { if (jj_3R_99()) return true; return false; } + final private boolean jj_3R_345() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_362()) jj_scanpos = xsp; + if (jj_3R_249()) return true; + while (true) { + xsp = jj_scanpos; + if (jj_3_363()) { jj_scanpos = xsp; break; } + } + return false; + } + final private boolean jj_3_56() { if (jj_3R_98()) return true; return false; } - final private boolean jj_3_863() { - if (jj_scan_token(ERROR)) return true; + final private boolean jj_3R_303() { + if (jj_scan_token(JSON_EXISTS)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } @@ -30685,11 +30780,6 @@ final private boolean jj_3_54() { return false; } - final private boolean jj_3_862() { - if (jj_scan_token(EMPTY)) return true; - return false; - } - final private boolean jj_3_53() { if (jj_3R_95()) return true; return false; @@ -30705,9 +30795,13 @@ final private boolean jj_3_51() { return false; } - final private boolean jj_3_861() { - if (jj_scan_token(DEFAULT_)) return true; - if (jj_3R_79()) return true; + final private boolean jj_3_859() { + if (jj_scan_token(ERROR)) return true; + return false; + } + + final private boolean jj_3_858() { + if (jj_scan_token(UNKNOWN)) return true; return false; } @@ -30790,92 +30884,54 @@ final private boolean jj_3R_92() { return false; } - final private boolean jj_3_860() { - if (jj_scan_token(NULL)) return true; - return false; - } - - final private boolean jj_3_365() { - if (jj_3R_68()) return true; - return false; - } - - final private boolean jj_3_859() { - if (jj_scan_token(ERROR)) return true; - return false; - } - - final private boolean jj_3_364() { - if (jj_3R_202()) return true; - return false; - } - - final private boolean jj_3R_69() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_364()) jj_scanpos = xsp; - if (jj_3R_204()) return true; + final private boolean jj_3_857() { + if (jj_scan_token(FALSE)) return true; return false; } final private boolean jj_3R_312() { Token xsp; xsp = jj_scanpos; - if (jj_3_859()) { + if (jj_3_856()) { jj_scanpos = xsp; - if (jj_3_860()) { + if (jj_3_857()) { jj_scanpos = xsp; - if (jj_3_861()) return true; + if (jj_3_858()) { + jj_scanpos = xsp; + if (jj_3_859()) return true; + } } } - if (jj_scan_token(ON)) return true; - return false; - } - - final private boolean jj_3_50() { - if (jj_3R_92()) return true; - return false; - } - - final private boolean jj_3_49() { - if (jj_scan_token(SEMICOLON)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_50()) jj_scanpos = xsp; return false; } - final private boolean jj_3_363() { - if (jj_3R_68()) return true; + final private boolean jj_3_856() { + if (jj_scan_token(TRUE)) return true; return false; } - final private boolean jj_3_858() { - if (jj_3R_310()) return true; - if (jj_scan_token(ON)) return true; + final private boolean jj_3_50() { + if (jj_3R_92()) return true; return false; } - final private boolean jj_3_362() { - if (jj_3R_202()) return true; + final private boolean jj_3_854() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_82()) return true; return false; } - final private boolean jj_3R_343() { + final private boolean jj_3_49() { + if (jj_scan_token(SEMICOLON)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_362()) jj_scanpos = xsp; - if (jj_3R_247()) return true; - while (true) { - xsp = jj_scanpos; - if (jj_3_363()) { jj_scanpos = xsp; break; } - } + if (jj_3_50()) jj_scanpos = xsp; return false; } - final private boolean jj_3R_301() { - if (jj_scan_token(JSON_EXISTS)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_855() { + if (jj_scan_token(PASSING)) return true; + if (jj_3R_82()) return true; return false; } @@ -30885,39 +30941,20 @@ final private boolean jj_3R_91() { return false; } - final private boolean jj_3_857() { - if (jj_scan_token(ERROR)) return true; - return false; - } - - final private boolean jj_3_856() { - if (jj_scan_token(UNKNOWN)) return true; - return false; - } - - final private boolean jj_3_855() { - if (jj_scan_token(FALSE)) return true; + final private boolean jj_3R_201() { + if (jj_3R_85()) return true; return false; } - final private boolean jj_3R_310() { - Token xsp; - xsp = jj_scanpos; - 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()) return true; - } - } - } + final private boolean jj_3_361() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_201()) return true; return false; } - final private boolean jj_3_854() { - if (jj_scan_token(TRUE)) return true; + final private boolean jj_3_853() { + if (jj_scan_token(FORMAT)) return true; + if (jj_3R_311()) return true; return false; } @@ -30926,12 +30963,6 @@ final private boolean jj_3R_81() { return false; } - final private boolean jj_3_852() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_82()) return true; - return false; - } - final private boolean jj_3R_90() { if (jj_3R_133()) return true; return false; @@ -30954,226 +30985,157 @@ final private boolean jj_3R_87() { return false; } - final private boolean jj_3_48() { - if (jj_3R_88()) return true; - return false; - } - - final private boolean jj_3_47() { - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3_853() { - if (jj_scan_token(PASSING)) return true; - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3R_346() { - if (jj_3R_406()) return true; - return false; - } - - final private boolean jj_3_45() { - if (jj_3R_81()) return true; - return false; - } - - final private boolean jj_3R_345() { - return false; - } - - final private boolean jj_3R_201() { - if (jj_3R_85()) return true; - return false; - } - - 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_3R_84() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_44()) { - jj_scanpos = xsp; - if (jj_3R_345()) return true; - } - xsp = jj_scanpos; - if (jj_3_45()) { - jj_scanpos = xsp; - if (jj_3R_346()) { - jj_scanpos = xsp; - if (jj_3_47()) { - jj_scanpos = xsp; - if (jj_3_48()) return true; - } - } - } - return false; - } - - final private boolean jj_3_361() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_201()) return true; - return false; - } - - final private boolean jj_3R_86() { - if (jj_3R_133()) return true; - return false; - } - - 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_43() { - if (jj_3R_89()) return true; + final private boolean jj_3_48() { + if (jj_3R_88()) return true; return false; } - final private boolean jj_3_851() { - if (jj_scan_token(FORMAT)) return true; - if (jj_3R_309()) return true; + final private boolean jj_3_47() { + if (jj_3R_82()) return true; return false; } - final private boolean jj_3_42() { - if (jj_3R_88()) return true; + final private boolean jj_3R_313() { + if (jj_scan_token(RETURNING)) return true; + if (jj_3R_119()) return true; return false; } - final private boolean jj_3R_364() { - if (jj_3R_406()) return true; + final private boolean jj_3R_348() { + if (jj_3R_408()) return true; return false; } - final private boolean jj_3_40() { + final private boolean jj_3_45() { if (jj_3R_81()) return true; return false; } - final private boolean jj_3R_363() { + final private boolean jj_3R_200() { + if (jj_3R_85()) return true; return false; } - final private boolean jj_3_39() { + final private boolean jj_3R_347() { + return false; + } + + 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_3R_311() { - if (jj_scan_token(RETURNING)) return true; - if (jj_3R_119()) return true; + final private boolean jj_3_851() { + if (jj_scan_token(UTF32)) return true; return false; } - final private boolean jj_3R_153() { + final private boolean jj_3R_84() { Token xsp; xsp = jj_scanpos; - if (jj_3_39()) { + if (jj_3_44()) { jj_scanpos = xsp; - if (jj_3R_363()) return true; + if (jj_3R_347()) return true; } xsp = jj_scanpos; - if (jj_3_40()) { + if (jj_3_45()) { jj_scanpos = xsp; - if (jj_3R_364()) { + if (jj_3R_348()) { jj_scanpos = xsp; - if (jj_3_42()) { + if (jj_3_47()) { jj_scanpos = xsp; - if (jj_3_43()) return true; + if (jj_3_48()) return true; } } } return false; } - final private boolean jj_3R_200() { - if (jj_3R_85()) return true; - return false; - } - final private boolean jj_3_360() { if (jj_scan_token(COMMA)) return true; if (jj_3R_200()) return true; return false; } - final private boolean jj_3_849() { - if (jj_scan_token(UTF32)) return true; + final private boolean jj_3_850() { + if (jj_scan_token(UTF16)) return true; return false; } - final private boolean jj_3R_192() { - if (jj_3R_200()) return true; + final private boolean jj_3_849() { + if (jj_scan_token(UTF8)) return true; return false; } - final private boolean jj_3_848() { - if (jj_scan_token(UTF16)) return true; + final private boolean jj_3R_192() { + if (jj_3R_200()) return true; return false; } - final private boolean jj_3_847() { - if (jj_scan_token(UTF8)) return true; + final private boolean jj_3R_86() { + if (jj_3R_133()) return true; return false; } - final private boolean jj_3_355() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_199()) return true; + 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_850() { + final private boolean jj_3_852() { if (jj_scan_token(ENCODING)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_847()) { + if (jj_3_849()) { jj_scanpos = xsp; - if (jj_3_848()) { + if (jj_3_850()) { jj_scanpos = xsp; - if (jj_3_849()) return true; + if (jj_3_851()) return true; } } return false; } - final private boolean jj_3_38() { - if (jj_scan_token(ALL)) return true; + final private boolean jj_3_355() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_199()) return true; return false; } - final private boolean jj_3R_83() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_37()) { - jj_scanpos = xsp; - if (jj_3_38()) return true; - } + final private boolean jj_3_43() { + if (jj_3R_89()) return true; return false; } - final private boolean jj_3_37() { - if (jj_scan_token(DISTINCT)) return true; + final private boolean jj_3R_311() { + if (jj_scan_token(JSON)) return true; return false; } - final private boolean jj_3R_309() { - if (jj_scan_token(JSON)) return true; + final private boolean jj_3_42() { + if (jj_3R_88()) return true; + return false; + } + + final private boolean jj_3R_366() { + if (jj_3R_408()) return true; + return false; + } + + final private boolean jj_3_848() { + if (jj_3R_310()) return true; + return false; + } + + final private boolean jj_3_40() { + if (jj_3R_81()) return true; return false; } @@ -31183,11 +31145,26 @@ final private boolean jj_3_359() { return false; } + final private boolean jj_3_847() { + if (jj_3R_309()) return true; + return false; + } + + final private boolean jj_3R_365() { + return false; + } + final private boolean jj_3_846() { if (jj_3R_308()) return true; return false; } + 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_845() { if (jj_3R_307()) return true; return false; @@ -31210,12 +31187,33 @@ final private boolean jj_3_357() { return false; } + final private boolean jj_3R_153() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_39()) { + jj_scanpos = xsp; + if (jj_3R_365()) return true; + } + xsp = jj_scanpos; + if (jj_3_40()) { + jj_scanpos = xsp; + if (jj_3R_366()) { + jj_scanpos = xsp; + if (jj_3_42()) { + jj_scanpos = xsp; + if (jj_3_43()) return true; + } + } + } + return false; + } + final private boolean jj_3_843() { if (jj_3R_305()) return true; return false; } - final private boolean jj_3R_377() { + final private boolean jj_3R_379() { Token xsp; xsp = jj_scanpos; if (jj_3_356()) { @@ -31231,12 +31229,6 @@ final private boolean jj_3R_377() { 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_3_356() { if (jj_3R_85()) return true; return false; @@ -31252,20 +31244,11 @@ final private boolean jj_3_841() { return false; } - final private boolean jj_3R_383() { - return false; - } - final private boolean jj_3_840() { if (jj_3R_302()) return true; return false; } - final private boolean jj_3_35() { - if (jj_3R_83()) return true; - return false; - } - final private boolean jj_3_839() { if (jj_3R_301()) return true; return false; @@ -31276,7 +31259,7 @@ final private boolean jj_3_838() { return false; } - final private boolean jj_3R_379() { + final private boolean jj_3R_381() { return false; } @@ -31285,17 +31268,6 @@ final private boolean jj_3_837() { return false; } - final private boolean jj_3R_219() { - if (jj_scan_token(LPAREN)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_35()) { - jj_scanpos = xsp; - if (jj_3R_383()) return true; - } - return false; - } - final private boolean jj_3_836() { if (jj_3R_298()) return true; return false; @@ -31337,6 +31309,11 @@ final private boolean jj_3_831() { return false; } + final private boolean jj_3_38() { + if (jj_scan_token(ALL)) return true; + return false; + } + final private boolean jj_3R_198() { return false; } @@ -31350,6 +31327,21 @@ final private boolean jj_3_830() { return false; } + final private boolean jj_3R_83() { + 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_37() { + if (jj_scan_token(DISTINCT)) return true; + return false; + } + final private boolean jj_3_348() { if (jj_scan_token(COMMA)) return true; if (jj_3R_196()) return true; @@ -31366,21 +31358,11 @@ final private boolean jj_3_829() { return false; } - final private boolean jj_3R_399() { - if (jj_3R_219()) return true; - return false; - } - final private boolean jj_3_828() { if (jj_3R_290()) return true; return false; } - final private boolean jj_3_827() { - if (jj_3R_289()) return true; - return false; - } - final private boolean jj_3_346() { if (jj_scan_token(COMMA)) return true; Token xsp; @@ -31392,13 +31374,9 @@ final private boolean jj_3_346() { return false; } - final private boolean jj_3_826() { - if (jj_3R_288()) return true; - return false; - } - - final private boolean jj_3_34() { - if (jj_3R_81()) return true; + final private boolean jj_3_36() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_84()) return true; return false; } @@ -31414,8 +31392,12 @@ final private boolean jj_3_347() { return false; } - final private boolean jj_3_33() { - if (jj_3R_82()) return true; + final private boolean jj_3R_385() { + return false; + } + + final private boolean jj_3_35() { + if (jj_3R_83()) return true; return false; } @@ -31433,13 +31415,18 @@ final private boolean jj_3_353() { return false; } - final private boolean jj_3_32() { - if (jj_scan_token(COMMA)) return true; + final private boolean jj_3_816() { + if (jj_scan_token(RPAREN)) return true; + return false; + } + + final private boolean jj_3R_219() { + if (jj_scan_token(LPAREN)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_33()) { + if (jj_3_35()) { jj_scanpos = xsp; - if (jj_3_34()) return true; + if (jj_3R_385()) return true; } return false; } @@ -31449,18 +31436,8 @@ final private boolean jj_3_352() { return false; } - final private boolean jj_3_814() { - if (jj_scan_token(RPAREN)) return true; - return false; - } - - final private boolean jj_3_31() { - if (jj_3R_81()) return true; - return false; - } - - final private boolean jj_3_30() { - if (jj_3R_80()) return true; + final private boolean jj_3_815() { + if (jj_scan_token(FROM)) return true; return false; } @@ -31469,8 +31446,8 @@ final private boolean jj_3_351() { return false; } - final private boolean jj_3_813() { - if (jj_scan_token(FROM)) return true; + final private boolean jj_3_814() { + if (jj_3R_82()) return true; return false; } @@ -31480,16 +31457,16 @@ final private boolean jj_3_350() { } final private boolean jj_3_812() { - if (jj_3R_82()) return true; + if (jj_scan_token(LEADING)) return true; return false; } - final private boolean jj_3_810() { - if (jj_scan_token(LEADING)) return true; + final private boolean jj_3R_401() { + if (jj_3R_219()) return true; return false; } - final private boolean jj_3R_378() { + final private boolean jj_3R_380() { Token xsp; xsp = jj_scanpos; if (jj_3_350()) { @@ -31505,62 +31482,66 @@ final private boolean jj_3R_378() { return false; } - final private boolean jj_3_809() { + final private boolean jj_3_811() { if (jj_scan_token(TRAILING)) return true; return false; } - final private boolean jj_3R_195() { - if (jj_3R_377()) return true; + final private boolean jj_3_810() { + if (jj_scan_token(BOTH)) return true; + return false; + } + + final private boolean jj_3_813() { Token xsp; xsp = jj_scanpos; - if (jj_3R_378()) { + if (jj_3_810()) { jj_scanpos = xsp; - if (jj_3R_379()) return true; + if (jj_3_811()) { + jj_scanpos = xsp; + if (jj_3_812()) return true; + } } return false; } - final private boolean jj_3R_181() { - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3R_195() { + if (jj_3R_379()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_30()) { + if (jj_3R_380()) { jj_scanpos = xsp; - if (jj_3_31()) return true; + if (jj_3R_381()) return true; } return false; } - final private boolean jj_3_808() { - if (jj_scan_token(BOTH)) return true; + final private boolean jj_3_34() { + if (jj_3R_81()) return true; return false; } - final private boolean jj_3_811() { + final private boolean jj_3_817() { Token xsp; xsp = jj_scanpos; - if (jj_3_808()) { - jj_scanpos = xsp; - if (jj_3_809()) { + if (jj_3_813()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3_814()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3_815()) { jj_scanpos = xsp; - if (jj_3_810()) return true; - } + if (jj_3_816()) return true; } return false; } - final private boolean jj_3_815() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_811()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3_812()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3_813()) { - jj_scanpos = xsp; - if (jj_3_814()) return true; - } + final private boolean jj_3_33() { + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3_808() { + if (jj_scan_token(COMMA)) return true; return false; } @@ -31569,853 +31550,862 @@ final private boolean jj_3_344() { return false; } - final private boolean jj_3_806() { + 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_3_804() { + final private boolean jj_3_806() { if (jj_scan_token(COMMA)) return true; return false; } - final private boolean jj_3_825() { + final private boolean jj_3_827() { if (jj_scan_token(TRIM)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3R_194() { - if (jj_3R_195()) return true; - return false; - } - - final private boolean jj_3_29() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_79()) return true; + final private boolean jj_3_31() { + if (jj_3R_81()) return true; return false; } - final private boolean jj_3_805() { + final private boolean jj_3_807() { if (jj_scan_token(FOR)) return true; return false; } - final private boolean jj_3_1774() { + final private boolean jj_3_1776() { if (jj_scan_token(SATURDAY)) return true; return false; } - final private boolean jj_3_807() { + final private boolean jj_3_809() { Token xsp; xsp = jj_scanpos; - if (jj_3_805()) { + if (jj_3_807()) { jj_scanpos = xsp; - if (jj_3_806()) return true; + if (jj_3_808()) return true; } if (jj_3R_79()) return true; return false; } - final private boolean jj_3_1773() { + final private boolean jj_3R_194() { + if (jj_3R_195()) return true; + return false; + } + + final private boolean jj_3_1775() { if (jj_scan_token(WEDNESDAY)) return true; return false; } - final private boolean jj_3_1772() { + final private boolean jj_3_30() { + if (jj_3R_80()) return true; + return false; + } + + final private boolean jj_3_1774() { if (jj_scan_token(YEAR)) return true; return false; } - final private boolean jj_3_1771() { + final private boolean jj_3_1773() { if (jj_scan_token(WINDOW)) return true; return false; } - final private boolean jj_3_1770() { + final private boolean jj_3_1772() { if (jj_scan_token(VERSIONING)) return true; return false; } - final private boolean jj_3_802() { + final private boolean jj_3_804() { if (jj_scan_token(CEILING)) return true; return false; } - final private boolean jj_3_1769() { + final private boolean jj_3_1771() { if (jj_scan_token(VARYING)) return true; return false; } - final private boolean jj_3_803() { + final private boolean jj_3_805() { if (jj_scan_token(FROM)) return true; return false; } - final private boolean jj_3_1768() { + final private boolean jj_3_1770() { if (jj_scan_token(VALUE_OF)) return true; return false; } - final private boolean jj_3_1767() { + final private boolean jj_3_1769() { if (jj_scan_token(UPPER)) return true; return false; } - final private boolean jj_3_1766() { + final private boolean jj_3_1768() { if (jj_scan_token(UNIQUE)) return true; return false; } - final private boolean jj_3_1765() { + final private boolean jj_3_1767() { if (jj_scan_token(TRUNCATE)) return true; return false; } - final private boolean jj_3_1764() { + final private boolean jj_3_1766() { if (jj_scan_token(TRIGGER)) return true; return false; } - final private boolean jj_3_343() { - if (jj_scan_token(VERTICAL_BAR)) return true; - if (jj_3R_194()) return true; - return false; - } - - final private boolean jj_3_824() { + final private boolean jj_3_826() { if (jj_scan_token(SUBSTRING)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_1763() { + final private boolean jj_3_1765() { if (jj_scan_token(TRANSLATE_REGEX)) return true; return false; } - final private boolean jj_3_1762() { + final private boolean jj_3_1764() { if (jj_scan_token(TIMEZONE_MINUTE)) return true; return false; } - final private boolean jj_3_1761() { + final private boolean jj_3_1763() { if (jj_scan_token(TIME)) return true; return false; } - final private boolean jj_3_801() { + final private boolean jj_3_803() { if (jj_scan_token(CEIL)) return true; return false; } - final private boolean jj_3_1760() { + final private boolean jj_3_1762() { if (jj_scan_token(SYSTEM_TIME)) return true; return false; } - final private boolean jj_3_1759() { + final private boolean jj_3_343() { + if (jj_scan_token(VERTICAL_BAR)) return true; + if (jj_3R_194()) return true; + return false; + } + + final private boolean jj_3_1761() { if (jj_scan_token(SUCCEEDS)) return true; return false; } - final private boolean jj_3_823() { + final private boolean jj_3_825() { Token xsp; xsp = jj_scanpos; - if (jj_3_801()) { + if (jj_3_803()) { jj_scanpos = xsp; - if (jj_3_802()) return true; + if (jj_3_804()) return true; } - if (jj_3R_287()) return true; - return false; - } - - final private boolean jj_3R_199() { - if (jj_3R_194()) return true; + if (jj_3R_289()) return true; return false; } - final private boolean jj_3_1758() { + final private boolean jj_3_1760() { if (jj_scan_token(SUBSET)) return true; return false; } - final private boolean jj_3_1757() { + final private boolean jj_3_1759() { if (jj_scan_token(STDDEV_SAMP)) return true; return false; } - final private boolean jj_3_1756() { + final private boolean jj_3_1758() { if (jj_scan_token(START)) return true; return false; } - final private boolean jj_3R_171() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_80()) return true; + final private boolean jj_3_1757() { + if (jj_scan_token(SQLSTATE)) return true; return false; } - final private boolean jj_3_1755() { - if (jj_scan_token(SQLSTATE)) return true; + final private boolean jj_3R_199() { + if (jj_3R_194()) return true; return false; } - final private boolean jj_3_1754() { + final private boolean jj_3R_181() { + 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_1756() { if (jj_scan_token(SPECIFICTYPE)) return true; return false; } - final private boolean jj_3_822() { + final private boolean jj_3_824() { if (jj_scan_token(FLOOR)) return true; - if (jj_3R_287()) return true; + if (jj_3R_289()) return true; return false; } - final private boolean jj_3_1753() { + final private boolean jj_3_1755() { if (jj_scan_token(SKIP_)) return true; return false; } - final private boolean jj_3_1752() { + final private boolean jj_3_1754() { if (jj_scan_token(SESSION_USER)) return true; return false; } - final private boolean jj_3_1751() { + final private boolean jj_3_1753() { if (jj_scan_token(SECOND)) return true; return false; } - final private boolean jj_3_800() { + final private boolean jj_3_802() { if (jj_scan_token(FOR)) return true; if (jj_3R_79()) return true; return false; } - final private boolean jj_3_1750() { + final private boolean jj_3_1752() { if (jj_scan_token(SCOPE)) return true; return false; } - final private boolean jj_3_1749() { + final private boolean jj_3_1751() { if (jj_scan_token(SAFE_OFFSET)) return true; return false; } - final private boolean jj_3_1748() { + final private boolean jj_3_1750() { if (jj_scan_token(ROW_NUMBER)) return true; return false; } - final private boolean jj_3_1747() { + final private boolean jj_3_1749() { if (jj_scan_token(ROLLBACK)) return true; return false; } - final private boolean jj_3_1746() { + final private boolean jj_3_1748() { if (jj_scan_token(RETURN)) return true; return false; } - final private boolean jj_3R_193() { - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3_1745() { + final private boolean jj_3_1747() { if (jj_scan_token(RELEASE)) return true; return false; } - final private boolean jj_3_821() { + final private boolean jj_3_823() { if (jj_scan_token(OVERLAY)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_1744() { + final private boolean jj_3_1746() { if (jj_scan_token(REGR_SXX)) return true; return false; } - final private boolean jj_3_797() { + final private boolean jj_3_799() { if (jj_scan_token(COMMA)) return true; if (jj_3R_79()) return true; return false; } - final private boolean jj_3_1743() { + final private boolean jj_3_1745() { if (jj_scan_token(REGR_INTERCEPT)) return true; return false; } - final private boolean jj_3_1742() { + final private boolean jj_3_1744() { if (jj_scan_token(REGR_AVGX)) return true; return false; } - final private boolean jj_3_799() { + final private boolean jj_3_801() { Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_797()) { jj_scanpos = xsp; break; } + if (jj_3_799()) { jj_scanpos = xsp; break; } } if (jj_scan_token(RPAREN)) return true; return false; } - final private boolean jj_3_1741() { + final private boolean jj_3R_193() { + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3_1743() { if (jj_scan_token(REF)) return true; return false; } - final private boolean jj_3_1740() { + final private boolean jj_3_1742() { if (jj_scan_token(READS)) return true; return false; } - final private boolean jj_3_1739() { + final private boolean jj_3_1741() { if (jj_scan_token(QUALIFY)) return true; return false; } - final private boolean jj_3_1738() { + final private boolean jj_3_1740() { if (jj_scan_token(PREPARE)) return true; return false; } - final private boolean jj_3_1737() { + final private boolean jj_3_1739() { if (jj_scan_token(POWER)) return true; return false; } - final private boolean jj_3_342() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_193()) return true; - return false; - } - - final private boolean jj_3_1736() { + final private boolean jj_3_1738() { if (jj_scan_token(PORTION)) return true; return false; } - final private boolean jj_3_798() { + final private boolean jj_3_800() { 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(PERCENT_RANK)) return true; + return false; + } + + final private boolean jj_3_1736() { + if (jj_scan_token(PERCENT)) return true; + return false; + } + final private boolean jj_3_1735() { - if (jj_scan_token(PERCENT_RANK)) return true; - return false; - } - - final private boolean jj_3R_189() { - if (jj_3R_193()) return true; + if (jj_scan_token(PARAMETER)) return true; return false; } - final private boolean jj_3_1734() { - if (jj_scan_token(PERCENT)) return true; + 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_1733() { - if (jj_scan_token(PARAMETER)) return true; + final private boolean jj_3_342() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_193()) return true; return false; } - final private boolean jj_3_1732() { + final private boolean jj_3_1734() { if (jj_scan_token(OVER)) return true; return false; } - final private boolean jj_3_793() { + final private boolean jj_3_795() { if (jj_scan_token(NULL)) return true; return false; } - final private boolean jj_3_1731() { + final private boolean jj_3_1733() { if (jj_scan_token(OPEN)) return true; return false; } - final private boolean jj_3_1730() { + final private boolean jj_3R_189() { + if (jj_3R_193()) return true; + return false; + } + + final private boolean jj_3_1732() { if (jj_scan_token(OMIT)) return true; return false; } - final private boolean jj_3_792() { + final private boolean jj_3_794() { if (jj_3R_196()) return true; return false; } - final private boolean jj_3_1729() { + final private boolean jj_3_1731() { if (jj_scan_token(OCTET_LENGTH)) return true; return false; } - final private boolean jj_3_1728() { + final private boolean jj_3_1730() { if (jj_scan_token(NULLIF)) return true; return false; } - final private boolean jj_3_820() { + final private boolean jj_3_822() { if (jj_scan_token(TRANSLATE)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_1727() { + final private boolean jj_3_1729() { if (jj_scan_token(NORMALIZE)) return true; return false; } - final private boolean jj_3_1726() { + final private boolean jj_3_1728() { if (jj_scan_token(NEXT)) return true; return false; } - final private boolean jj_3_1725() { + final private boolean jj_3_1727() { if (jj_scan_token(NCHAR)) return true; return false; } - final private boolean jj_3_1724() { + final private boolean jj_3_1726() { if (jj_scan_token(MONTH)) return true; return false; } - final private boolean jj_3_794() { + final private boolean jj_3_796() { if (jj_scan_token(COMMA)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_792()) { + if (jj_3_794()) { jj_scanpos = xsp; - if (jj_3_793()) return true; + if (jj_3_795()) return true; } return false; } - final private boolean jj_3_1723() { + final private boolean jj_3_1725() { if (jj_scan_token(MOD)) return true; return false; } - final private boolean jj_3_1722() { + final private boolean jj_3_1724() { if (jj_scan_token(METHOD)) return true; return false; } - final private boolean jj_3_1721() { + final private boolean jj_3_1723() { if (jj_scan_token(MAX)) return true; return false; } - final private boolean jj_3_341() { - if (jj_scan_token(SUBSET)) return true; - if (jj_3R_192()) return true; - return false; - } - - final private boolean jj_3_1720() { + final private boolean jj_3_1722() { if (jj_scan_token(MATCHES)) return true; return false; } - final private boolean jj_3_1719() { + final private boolean jj_3_1721() { if (jj_scan_token(LOCAL)) return true; return false; } - final private boolean jj_3_791() { + final private boolean jj_3_793() { if (jj_scan_token(INTERVAL)) return true; if (jj_3R_214()) return true; return false; } - final private boolean jj_3_1718() { + final private boolean jj_3_1720() { if (jj_scan_token(LEAD)) return true; return false; } - final private boolean jj_3_1717() { + final private boolean jj_3_1719() { if (jj_scan_token(LARGE)) return true; return false; } - final private boolean jj_3_340() { - if (jj_scan_token(WITHIN)) return true; - if (jj_3R_191()) return true; + final private boolean jj_3_341() { + if (jj_scan_token(SUBSET)) return true; + if (jj_3R_192()) return true; return false; } - final private boolean jj_3_790() { + final private boolean jj_3_792() { if (jj_3R_119()) return true; return false; } - final private boolean jj_3_1716() { + final private boolean jj_3_1718() { if (jj_scan_token(JSON_VALUE)) return true; return false; } - final private boolean jj_3_1715() { + final private boolean jj_3_1717() { if (jj_scan_token(JSON_OBJECTAGG)) return true; return false; } - final private boolean jj_3_1714() { + final private boolean jj_3_1716() { if (jj_scan_token(JSON_ARRAYAGG)) return true; return false; } - final private boolean jj_3_332() { - if (jj_scan_token(LAST)) return true; - if (jj_3R_85()) return true; + final private boolean jj_3R_171() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_80()) return true; return false; } - final private boolean jj_3_1713() { + final private boolean jj_3_1715() { if (jj_scan_token(INTEGER)) return true; return false; } - final private boolean jj_3_1712() { - if (jj_scan_token(INOUT)) return true; + final private boolean jj_3_340() { + if (jj_scan_token(WITHIN)) return true; + if (jj_3R_191()) return true; return false; } - final private boolean jj_3_339() { - if (jj_scan_token(DOLLAR)) return true; + final private boolean jj_3_1714() { + if (jj_scan_token(INOUT)) return true; return false; } - final private boolean jj_3_796() { + final private boolean jj_3_798() { Token xsp; xsp = jj_scanpos; - if (jj_3_790()) { + if (jj_3_792()) { jj_scanpos = xsp; - if (jj_3_791()) return true; + if (jj_3_793()) return true; } if (jj_scan_token(COMMA)) return true; return false; } - final private boolean jj_3_1711() { + final private boolean jj_3_1713() { if (jj_scan_token(IMPORT)) return true; return false; } - final private boolean jj_3_1710() { + final private boolean jj_3_1712() { if (jj_scan_token(HOLD)) return true; return false; } - final private boolean jj_3_1709() { + final private boolean jj_3_332() { + if (jj_scan_token(LAST)) return true; + if (jj_3R_85()) return true; + return false; + } + + final private boolean jj_3_1711() { if (jj_scan_token(GRANT)) return true; return false; } - final private boolean jj_3_1708() { + final private boolean jj_3_1710() { if (jj_scan_token(FUSION)) return true; return false; } - final private boolean jj_3_789() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_85()) return true; + final private boolean jj_3_339() { + if (jj_scan_token(DOLLAR)) return true; return false; } - final private boolean jj_3_1707() { - if (jj_scan_token(FRAME_ROW)) return true; + final private boolean jj_3_791() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_85()) return true; return false; } - final private boolean jj_3_338() { - if (jj_scan_token(CARET)) return true; + final private boolean jj_3_1709() { + if (jj_scan_token(FRAME_ROW)) return true; return false; } - final private boolean jj_3_1706() { + final private boolean jj_3_1708() { if (jj_scan_token(FLOAT)) return true; return false; } - final private boolean jj_3_1705() { + final private boolean jj_3_1707() { if (jj_scan_token(EXTRACT)) return true; return false; } - final private boolean jj_3_1704() { + final private boolean jj_3_1706() { if (jj_scan_token(EXP)) return true; return false; } - final private boolean jj_3_1703() { + final private boolean jj_3_1705() { if (jj_scan_token(EVERY)) return true; return false; } - final private boolean jj_3_788() { - if (jj_scan_token(USING)) return true; - if (jj_3R_85()) return true; + final private boolean jj_3_338() { + if (jj_scan_token(CARET)) return true; return false; } - final private boolean jj_3_1702() { - if (jj_scan_token(END_PARTITION)) return true; + final private boolean jj_3_790() { + if (jj_scan_token(USING)) return true; + if (jj_3R_85()) return true; return false; } - final private boolean jj_3R_170() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_371()) return true; + final private boolean jj_3_1704() { + if (jj_scan_token(END_PARTITION)) return true; return false; } - final private boolean jj_3_1701() { + final private boolean jj_3_1703() { if (jj_scan_token(END)) return true; return false; } - final private boolean jj_3_336() { - if (jj_scan_token(PAST)) return true; - if (jj_scan_token(LAST)) return true; - return false; - } - - final private boolean jj_3_1700() { + final private boolean jj_3_1702() { if (jj_scan_token(EACH)) return true; return false; } - final private boolean jj_3_1699() { + final private boolean jj_3_1701() { if (jj_scan_token(DISCONNECT)) return true; return false; } - final private boolean jj_3R_190() { - Token xsp; - xsp = jj_scanpos; - if (jj_scan_token(303)) jj_scanpos = xsp; - if (jj_3R_85()) return true; + final private boolean jj_3_1700() { + if (jj_scan_token(DESCRIBE)) return true; return false; } - final private boolean jj_3_1698() { - if (jj_scan_token(DESCRIBE)) return true; + final private boolean jj_3_1699() { + if (jj_scan_token(DEFINE)) return true; return false; } - final private boolean jj_3_1697() { - if (jj_scan_token(DEFINE)) return true; + final private boolean jj_3_336() { + if (jj_scan_token(PAST)) return true; + if (jj_scan_token(LAST)) return true; return false; } - final private boolean jj_3_1696() { + final private boolean jj_3_1698() { if (jj_scan_token(DEC)) return true; return false; } - final private boolean jj_3_795() { + final private boolean jj_3_797() { if (jj_3R_79()) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_788()) { + if (jj_3_790()) { jj_scanpos = xsp; - if (jj_3_789()) return true; + if (jj_3_791()) return true; } return false; } - final private boolean jj_3_1695() { + final private boolean jj_3_1697() { if (jj_scan_token(DATETIME)) return true; return false; } - final private boolean jj_3_1694() { + final private boolean jj_3R_190() { + Token xsp; + xsp = jj_scanpos; + if (jj_scan_token(303)) jj_scanpos = xsp; + if (jj_3R_85()) return true; + return false; + } + + final private boolean jj_3_1696() { if (jj_scan_token(CURSOR)) return true; return false; } - final private boolean jj_3_1693() { + final private boolean jj_3_1695() { if (jj_scan_token(CURRENT_ROLE)) return true; return false; } - final private boolean jj_3_1692() { + final private boolean jj_3_1694() { if (jj_scan_token(CURRENT_CATALOG)) return true; return false; } - final private boolean jj_3_1691() { + final private boolean jj_3_1693() { if (jj_scan_token(CUBE)) return true; return false; } - final private boolean jj_3_1690() { + final private boolean jj_3_1692() { if (jj_scan_token(COUNT)) return true; return false; } - final private boolean jj_3_1689() { + final private boolean jj_3_1691() { if (jj_scan_token(CONVERT)) return true; return false; } - final private boolean jj_3_28() { - if (jj_3R_78()) return true; - return false; - } - - final private boolean jj_3_1688() { + final private boolean jj_3_1690() { if (jj_scan_token(CONDITION)) return true; return false; } - final private boolean jj_3_1687() { + final private boolean jj_3_1689() { if (jj_scan_token(COLLATE)) return true; return false; } - final private boolean jj_3_27() { - if (jj_3R_77()) return true; - return false; - } - - final private boolean jj_3_1686() { + final private boolean jj_3_1688() { if (jj_scan_token(CLOB)) return true; return false; } - final private boolean jj_3_1685() { + final private boolean jj_3_1687() { if (jj_scan_token(CHAR_LENGTH)) return true; return false; } - final private boolean jj_3_1684() { + final private boolean jj_3_1686() { if (jj_scan_token(CHAR)) return true; return false; } - final private boolean jj_3_819() { + final private boolean jj_3_821() { if (jj_scan_token(CONVERT)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_1683() { + final private boolean jj_3_1685() { if (jj_scan_token(CASCADED)) return true; return false; } - final private boolean jj_3_334() { - if (jj_scan_token(FIRST)) return true; - if (jj_3R_85()) return true; + final private boolean jj_3_1684() { + if (jj_scan_token(CALL)) return true; return false; } - final private boolean jj_3_1682() { - if (jj_scan_token(CALL)) return true; + final private boolean jj_3_1683() { + if (jj_scan_token(BIT)) return true; return false; } - final private boolean jj_3R_204() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_26()) { - jj_scanpos = xsp; - if (jj_3_27()) { - jj_scanpos = xsp; - if (jj_3_28()) return true; - } - } + final private boolean jj_3_789() { + if (jj_scan_token(FROM)) return true; + if (jj_3R_79()) return true; return false; } - final private boolean jj_3_1681() { - if (jj_scan_token(BIT)) return true; + final private boolean jj_3_1682() { + if (jj_scan_token(BEGIN_PARTITION)) return true; return false; } - final private boolean jj_3_26() { - if (jj_3R_76()) return true; + final private boolean jj_3_1681() { + if (jj_scan_token(AVG)) return true; return false; } - final private boolean jj_3_787() { - if (jj_scan_token(FROM)) return true; - if (jj_3R_79()) return true; + final private boolean jj_3_334() { + if (jj_scan_token(FIRST)) return true; + if (jj_3R_85()) return true; return false; } final private boolean jj_3_1680() { - if (jj_scan_token(BEGIN_PARTITION)) return true; + if (jj_scan_token(AT)) return true; return false; } final private boolean jj_3_1679() { - if (jj_scan_token(AVG)) return true; + if (jj_scan_token(ARE)) return true; return false; } final private boolean jj_3_1678() { - if (jj_scan_token(AT)) return true; + if (jj_scan_token(ABS)) return true; return false; } final private boolean jj_3_1677() { - if (jj_scan_token(ARE)) return true; + if (jj_scan_token(ANALYZE)) return true; return false; } - final private boolean jj_3_333() { - if (jj_scan_token(NEXT)) return true; - if (jj_scan_token(ROW)) return true; + final private boolean jj_3_1676() { + if (jj_scan_token(QUERY)) return true; return false; } - final private boolean jj_3_1676() { - if (jj_scan_token(ABS)) return true; + final private boolean jj_3_1675() { + if (jj_scan_token(SERVICE)) return true; return false; } - final private boolean jj_3_1675() { - if (jj_scan_token(ANALYZE)) return true; + final private boolean jj_3_333() { + if (jj_scan_token(NEXT)) return true; + if (jj_scan_token(ROW)) return true; return false; } final private boolean jj_3_1674() { - if (jj_scan_token(QUERY)) return true; + if (jj_scan_token(KILL)) return true; return false; } final private boolean jj_3_1673() { - if (jj_scan_token(SERVICE)) return true; + if (jj_scan_token(LOGGING)) return true; return false; } - final private boolean jj_3_25() { - if (jj_scan_token(ALL)) return true; + final private boolean jj_3_820() { + if (jj_scan_token(POSITION)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } final private boolean jj_3_1672() { - if (jj_scan_token(KILL)) return true; + if (jj_scan_token(ENCRYPTED)) return true; return false; } final private boolean jj_3_1671() { - if (jj_scan_token(LOGGING)) return true; + if (jj_scan_token(CACHE_NAME)) return true; return false; } - final private boolean jj_3_24() { - if (jj_3R_75()) return true; + final private boolean jj_3_1670() { + if (jj_scan_token(ATOMICITY)) return true; + return false; + } + + final private boolean jj_3_1669() { + if (jj_scan_token(TEMPLATE)) return true; return false; } @@ -32436,300 +32426,241 @@ final private boolean jj_3_335() { return false; } - final private boolean jj_3_818() { - if (jj_scan_token(POSITION)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - - final private boolean jj_3_1670() { - if (jj_scan_token(ENCRYPTED)) return true; - return false; - } - - final private boolean jj_3_1669() { - if (jj_scan_token(CACHE_NAME)) return true; - return false; - } - final private boolean jj_3_1668() { - if (jj_scan_token(ATOMICITY)) return true; - return false; - } - - final private boolean jj_3_1667() { - if (jj_scan_token(TEMPLATE)) return true; - return false; - } - - final private boolean jj_3_1666() { if (jj_scan_token(XML)) return true; return false; } - final private boolean jj_3_1665() { + final private boolean jj_3_1667() { if (jj_scan_token(WORK)) return true; return false; } - final private boolean jj_3_22() { - if (jj_scan_token(ALL)) return true; - return false; - } - - final private boolean jj_3_337() { - if (jj_scan_token(AFTER)) return true; - if (jj_scan_token(MATCH)) return true; - return false; - } - - final private boolean jj_3_1664() { + final private boolean jj_3_1666() { if (jj_scan_token(VIEW)) return true; return false; } - final private boolean jj_3_1663() { + final private boolean jj_3_1665() { if (jj_scan_token(UTF32)) return true; return false; } - final private boolean jj_3_1662() { + final private boolean jj_3_1664() { if (jj_scan_token(USER_DEFINED_TYPE_NAME)) return true; return false; } - final private boolean jj_3_1661() { + final private boolean jj_3_1663() { if (jj_scan_token(USAGE)) return true; return false; } - final private boolean jj_3_21() { - if (jj_3R_75()) return true; + final private boolean jj_3_337() { + if (jj_scan_token(AFTER)) return true; + if (jj_scan_token(MATCH)) return true; return false; } - final private boolean jj_3_817() { + final private boolean jj_3_819() { if (jj_scan_token(EXTRACT)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_1660() { + final private boolean jj_3_1662() { if (jj_scan_token(UNDER)) return true; return false; } - final private boolean jj_3_1659() { - if (jj_scan_token(UNBOUNDED)) return true; + final private boolean jj_3R_170() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_373()) return true; return false; } - final private boolean jj_3_331() { - if (jj_scan_token(ALL)) return true; - if (jj_scan_token(ROWS)) return true; + final private boolean jj_3_1661() { + if (jj_scan_token(UNBOUNDED)) return true; return false; } - final private boolean jj_3_1658() { + final private boolean jj_3_1660() { if (jj_scan_token(TRIGGER_SCHEMA)) return true; return false; } - final private boolean jj_3_785() { + final private boolean jj_3_787() { if (jj_scan_token(INTERVAL)) return true; if (jj_3R_214()) return true; return false; } - final private boolean jj_3_786() { + final private boolean jj_3_788() { if (jj_scan_token(FORMAT)) return true; if (jj_3R_137()) return true; return false; } - final private boolean jj_3_1657() { + final private boolean jj_3_1659() { if (jj_scan_token(TRANSFORMS)) return true; return false; } - final private boolean jj_3_1656() { + final private boolean jj_3_1658() { if (jj_scan_token(TRANSACTIONS_COMMITTED)) return true; return false; } - final private boolean jj_3_784() { + final private boolean jj_3_786() { if (jj_3R_119()) return true; return false; } - final private boolean jj_3_1655() { + final private boolean jj_3_1657() { if (jj_scan_token(TOP_LEVEL_COUNT)) return true; return false; } - final private boolean jj_3_330() { - if (jj_scan_token(ONE)) return true; - if (jj_scan_token(ROW)) return true; + final private boolean jj_3_331() { + if (jj_scan_token(ALL)) return true; + if (jj_scan_token(ROWS)) return true; return false; } - final private boolean jj_3_1654() { + final private boolean jj_3_1656() { if (jj_scan_token(TIMESTAMPDIFF)) return true; return false; } - final private boolean jj_3_1653() { + final private boolean jj_3_1655() { if (jj_scan_token(TIME_DIFF)) return true; return false; } - final private boolean jj_3_23() { - if (jj_3R_75()) return true; - if (jj_scan_token(COMMA)) return true; - return false; - } - - final private boolean jj_3_18() { - if (jj_scan_token(NEXT)) return true; - return false; - } - - final private boolean jj_3_1652() { + final private boolean jj_3_1654() { if (jj_scan_token(TABLE_NAME)) return true; return false; } - final private boolean jj_3_1651() { + final private boolean jj_3_1653() { if (jj_scan_token(STYLE)) return true; return false; } - final private boolean jj_3_1650() { - if (jj_scan_token(STATEMENT)) return true; + final private boolean jj_3_330() { + if (jj_scan_token(ONE)) return true; + if (jj_scan_token(ROW)) return true; return false; } - final private boolean jj_3_1649() { - if (jj_scan_token(SQL_VARBINARY)) return true; + final private boolean jj_3_1652() { + if (jj_scan_token(STATEMENT)) return true; return false; } - final private boolean jj_3_329() { - if (jj_scan_token(MEASURES)) return true; - if (jj_3R_189()) return true; + final private boolean jj_3_1651() { + if (jj_scan_token(SQL_VARBINARY)) return true; return false; } - final private boolean jj_3_1648() { + final private boolean jj_3_1650() { if (jj_scan_token(SQL_TSI_SECOND)) return true; return false; } - final private boolean jj_3_783() { + final private boolean jj_3_785() { if (jj_scan_token(TRY_CAST)) return true; return false; } - final private boolean jj_3_1647() { + final private boolean jj_3_1649() { if (jj_scan_token(SQL_TSI_MINUTE)) return true; return false; } - final private boolean jj_3_781() { - if (jj_scan_token(CAST)) return true; + final private boolean jj_3_28() { + if (jj_3R_78()) return true; return false; } - final private boolean jj_3_782() { - if (jj_scan_token(SAFE_CAST)) return true; + final private boolean jj_3_783() { + if (jj_scan_token(CAST)) return true; return false; } - final private boolean jj_3R_73() { - 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; - } - } + final private boolean jj_3_784() { + if (jj_scan_token(SAFE_CAST)) return true; return false; } - final private boolean jj_3_1646() { + final private boolean jj_3_1648() { if (jj_scan_token(SQL_TSI_FRAC_SECOND)) return true; return false; } - final private boolean jj_3_1645() { + final private boolean jj_3_1647() { if (jj_scan_token(SQL_TIMESTAMP)) return true; return false; } - final private boolean jj_3_1644() { - if (jj_scan_token(SQL_REAL)) return true; + final private boolean jj_3_27() { + if (jj_3R_77()) return true; return false; } - final private boolean jj_3_20() { - if (jj_scan_token(ROWS)) return true; + final private boolean jj_3_329() { + if (jj_scan_token(MEASURES)) return true; + if (jj_3R_189()) return true; return false; } - final private boolean jj_3_328() { - if (jj_3R_71()) return true; + final private boolean jj_3_1646() { + if (jj_scan_token(SQL_REAL)) return true; return false; } - final private boolean jj_3_816() { + final private boolean jj_3_818() { Token xsp; xsp = jj_scanpos; - if (jj_3_781()) { + if (jj_3_783()) { jj_scanpos = xsp; - if (jj_3_782()) { + if (jj_3_784()) { jj_scanpos = xsp; - if (jj_3_783()) return true; + if (jj_3_785()) return true; } } if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_1643() { + final private boolean jj_3_1645() { if (jj_scan_token(SQL_NCLOB)) return true; return false; } - final private boolean jj_3_17() { - if (jj_scan_token(FIRST)) return true; - return false; - } - - final private boolean jj_3_1642() { + final private boolean jj_3_1644() { if (jj_scan_token(SQL_LONGVARCHAR)) return true; return false; } - final private boolean jj_3_1641() { + final private boolean jj_3_1643() { if (jj_scan_token(SQL_INTERVAL_YEAR)) return true; return false; } - final private boolean jj_3_1640() { + final private boolean jj_3_1642() { if (jj_scan_token(SQL_INTERVAL_MINUTE_TO_SECOND)) return true; return false; } + final private boolean jj_3_328() { + if (jj_3R_71()) return true; + return false; + } + final private boolean jj_3R_222() { Token xsp; xsp = jj_scanpos; - if (jj_3_816()) { - jj_scanpos = xsp; - if (jj_3_817()) { - jj_scanpos = xsp; if (jj_3_818()) { jj_scanpos = xsp; if (jj_3_819()) { @@ -32786,7 +32717,13 @@ final private boolean jj_3R_222() { jj_scanpos = xsp; if (jj_3_845()) { jj_scanpos = xsp; - if (jj_3_846()) return true; + if (jj_3_846()) { + jj_scanpos = xsp; + if (jj_3_847()) { + jj_scanpos = xsp; + if (jj_3_848()) return true; + } + } } } } @@ -32815,222 +32752,221 @@ final private boolean jj_3R_222() { } } } + return false; + } + + final private boolean jj_3R_204() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_26()) { + jj_scanpos = xsp; + if (jj_3_27()) { + jj_scanpos = xsp; + if (jj_3_28()) return true; } } return false; } - final private boolean jj_3_1639() { + final private boolean jj_3_1641() { if (jj_scan_token(SQL_INTERVAL_HOUR_TO_MINUTE)) return true; return false; } - final private boolean jj_3_1638() { - if (jj_scan_token(SQL_INTERVAL_DAY_TO_MINUTE)) return true; + final private boolean jj_3_26() { + if (jj_3R_76()) return true; return false; } - final private boolean jj_3_327() { - if (jj_scan_token(PARTITION)) return true; - if (jj_scan_token(BY)) return true; + final private boolean jj_3_1640() { + if (jj_scan_token(SQL_INTERVAL_DAY_TO_MINUTE)) return true; return false; } - final private boolean jj_3_1637() { + final private boolean jj_3_1639() { if (jj_scan_token(SQL_INTEGER)) return true; return false; } - final private boolean jj_3_1636() { + final private boolean jj_3_1638() { if (jj_scan_token(SQL_DECIMAL)) return true; return false; } - final private boolean jj_3_19() { - if (jj_scan_token(ROW)) return true; - return false; - } - - final private boolean jj_3_1635() { + final private boolean jj_3_1637() { if (jj_scan_token(SQL_CHAR)) return true; return false; } - final private boolean jj_3_1634() { + final private boolean jj_3_1636() { if (jj_scan_token(SQL_BIT)) 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; - } + final private boolean jj_3_327() { + if (jj_scan_token(PARTITION)) return true; + if (jj_scan_token(BY)) return true; return false; } - final private boolean jj_3_1633() { + final private boolean jj_3_1635() { if (jj_scan_token(SPECIFIC_NAME)) return true; return false; } - final private boolean jj_3R_166() { - if (jj_scan_token(MATCH_RECOGNIZE)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - - final private boolean jj_3_1632() { + final private boolean jj_3_1634() { if (jj_scan_token(SIZE)) return true; return false; } - final private boolean jj_3_1631() { + final private boolean jj_3_1633() { if (jj_scan_token(SESSION)) return true; return false; } - final private boolean jj_3_15() { - if (jj_scan_token(ROWS)) return true; + final private boolean jj_3_25() { + if (jj_scan_token(ALL)) return true; return false; } - final private boolean jj_3_1630() { + final private boolean jj_3_1632() { if (jj_scan_token(SERIALIZABLE)) return true; return false; } - final private boolean jj_3_1629() { + final private boolean jj_3_1631() { if (jj_scan_token(SELF)) return true; return false; } - final private boolean jj_3_1628() { + final private boolean jj_3_24() { + if (jj_3R_75()) return true; + return false; + } + + final private boolean jj_3R_166() { + if (jj_scan_token(MATCH_RECOGNIZE)) return true; + if (jj_scan_token(LPAREN)) return true; + return false; + } + + final private boolean jj_3_1630() { if (jj_scan_token(SECONDS)) return true; return false; } - final private boolean jj_3_1627() { + final private boolean jj_3_1629() { if (jj_scan_token(SCOPE_CATALOGS)) return true; return false; } - final private boolean jj_3_1626() { + final private boolean jj_3_1628() { if (jj_scan_token(SCALE)) return true; return false; } - final private boolean jj_3_1625() { + final private boolean jj_3_1627() { if (jj_scan_token(ROUTINE_SCHEMA)) return true; return false; } - final private boolean jj_3_1624() { + final private boolean jj_3_1626() { if (jj_scan_token(ROUTINE)) return true; return false; } - final private boolean jj_3_1623() { + final private boolean jj_3_1625() { if (jj_scan_token(RETURNING)) 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; - } + final private boolean jj_3_22() { + if (jj_scan_token(ALL)) return true; return false; } - final private boolean jj_3_1622() { + final private boolean jj_3_1624() { if (jj_scan_token(RETURNED_LENGTH)) return true; return false; } - final private boolean jj_3_1621() { + final private boolean jj_3_1623() { if (jj_scan_token(RESTART)) return true; return false; } - final private boolean jj_3_1620() { + final private boolean jj_3_1622() { if (jj_scan_token(REPEATABLE)) return true; return false; } - final private boolean jj_3R_72() { - if (jj_scan_token(OFFSET)) return true; - if (jj_3R_75()) return true; + final private boolean jj_3_1621() { + if (jj_scan_token(QUARTERS)) return true; return false; } - final private boolean jj_3_1619() { - if (jj_scan_token(QUARTERS)) return true; + final private boolean jj_3_21() { + if (jj_3R_75()) return true; return false; } - final private boolean jj_3_1618() { + final private boolean jj_3_1620() { if (jj_scan_token(PRIVILEGES)) return true; return false; } - final private boolean jj_3_1617() { + final private boolean jj_3_1619() { if (jj_scan_token(PRECEDING)) return true; return false; } - final private boolean jj_3_1616() { + final private boolean jj_3_1618() { if (jj_scan_token(PLACING)) return true; return false; } - final private boolean jj_3_1615() { + final private boolean jj_3_1617() { if (jj_scan_token(PAST)) return true; return false; } - final private boolean jj_3_1614() { + final private boolean jj_3_1616() { if (jj_scan_token(PASCAL)) return true; return false; } - final private boolean jj_3_1613() { + final private boolean jj_3_1615() { if (jj_scan_token(PARAMETER_SPECIFIC_NAME)) return true; return false; } - final private boolean jj_3_1612() { + final private boolean jj_3_1614() { if (jj_scan_token(PARAMETER_NAME)) return true; return false; } - final private boolean jj_3_1611() { + final private boolean jj_3_1613() { if (jj_scan_token(OVERRIDING)) return true; return false; } - final private boolean jj_3_1610() { - if (jj_scan_token(ORDINALITY)) return true; + final private boolean jj_3_23() { + if (jj_3R_75()) return true; + if (jj_scan_token(COMMA)) return true; return false; } - final private boolean jj_3_325() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_188()) return true; + final private boolean jj_3_18() { + if (jj_scan_token(NEXT)) return true; return false; } - final private boolean jj_3_1609() { + final private boolean jj_3_1612() { + if (jj_scan_token(ORDINALITY)) return true; + return false; + } + + final private boolean jj_3_1611() { if (jj_scan_token(OPTION)) return true; return false; } @@ -33041,482 +32977,487 @@ final private boolean jj_3R_216() { return false; } - final private boolean jj_3_1608() { + final private boolean jj_3_1610() { if (jj_scan_token(NUMBER)) return true; return false; } - final private boolean jj_3_1607() { + final private boolean jj_3_1609() { if (jj_scan_token(NORMALIZED)) return true; return false; } - final private boolean jj_3_1606() { + final private boolean jj_3_1608() { if (jj_scan_token(NAMES)) return true; return false; } - final private boolean jj_3_1605() { + final private boolean jj_3_325() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_188()) return true; + return false; + } + + final private boolean jj_3_1607() { if (jj_scan_token(MORE_)) return true; return false; } - final private boolean jj_3_326() { - if (jj_scan_token(AS)) return true; - if (jj_3R_161()) return true; + final private boolean jj_3R_73() { + 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_1604() { + final private boolean jj_3_1606() { if (jj_scan_token(MINUTES)) return true; return false; } - final private boolean jj_3_1603() { + final private boolean jj_3_1605() { if (jj_scan_token(MICROSECOND)) return true; return false; } - final private boolean jj_3_8() { - if (jj_3R_74()) return true; + final private boolean jj_3_1604() { + if (jj_scan_token(MESSAGE_LENGTH)) return true; return false; } - final private boolean jj_3_1602() { - if (jj_scan_token(MESSAGE_LENGTH)) return true; + final private boolean jj_3_20() { + if (jj_scan_token(ROWS)) return true; return false; } - final private boolean jj_3_12() { - if (jj_3R_74()) return true; + final private boolean jj_3_1603() { + if (jj_scan_token(MAP)) return true; return false; } - final private boolean jj_3_1601() { - if (jj_scan_token(MAP)) return true; + final private boolean jj_3_17() { + if (jj_scan_token(FIRST)) return true; return false; } - final private boolean jj_3_1600() { - if (jj_scan_token(LIBRARY)) return true; + final private boolean jj_3_326() { + if (jj_scan_token(AS)) return true; + if (jj_3R_161()) return true; return false; } - final private boolean jj_3R_188() { - if (jj_3R_133()) return true; + final private boolean jj_3_1602() { + if (jj_scan_token(LIBRARY)) return true; return false; } - final private boolean jj_3_1599() { + final private boolean jj_3_1601() { if (jj_scan_token(LAST)) return true; return false; } - final private boolean jj_3_778() { + final private boolean jj_3_780() { if (jj_scan_token(LOCAL)) return true; return false; } - final private boolean jj_3_1598() { + final private boolean jj_3_1600() { if (jj_scan_token(KEY_MEMBER)) return true; return false; } - final private boolean jj_3_1597() { + final private boolean jj_3_1599() { if (jj_scan_token(JSON)) return true; return false; } - final private boolean jj_3_1596() { + final private boolean jj_3_1598() { if (jj_scan_token(ISOLATION)) return true; return false; } - final private boolean jj_3_7() { - if (jj_3R_73()) 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; - } + final private boolean jj_3R_188() { + if (jj_3R_133()) return true; return false; } - final private boolean jj_3_1595() { + final private boolean jj_3_1597() { if (jj_scan_token(INSTANTIABLE)) return true; return false; } - final private boolean jj_3R_397() { + final private boolean jj_3R_399() { return false; } - final private boolean jj_3_1594() { + final private boolean jj_3_1596() { if (jj_scan_token(INITIALLY)) return true; return false; } - final private boolean jj_3_1593() { - if (jj_scan_token(INCLUDE)) return true; + final private boolean jj_3_19() { + if (jj_scan_token(ROW)) return true; return false; } - final private boolean jj_3_1592() { - if (jj_scan_token(IMMEDIATE)) return true; + final private boolean jj_3_1595() { + if (jj_scan_token(INCLUDE)) return true; return false; } - final private boolean jj_3_1591() { - if (jj_scan_token(HOURS)) return true; + final private boolean jj_3_1594() { + if (jj_scan_token(IMMEDIATE)) return true; return false; } - final private boolean jj_3_1590() { - if (jj_scan_token(GROUP_CONCAT)) return true; + 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_6() { - if (jj_3R_72()) return true; + final private boolean jj_3_1593() { + if (jj_scan_token(HOURS)) return true; return false; } - final private boolean jj_3_11() { - if (jj_3R_72()) return true; + final private boolean jj_3_1592() { + if (jj_scan_token(GROUP_CONCAT)) return true; return false; } - final private boolean jj_3_780() { + final private boolean jj_3_782() { if (jj_scan_token(WITH)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_778()) jj_scanpos = xsp; + if (jj_3_780()) jj_scanpos = xsp; if (jj_scan_token(TIME)) return true; return false; } - final private boolean jj_3_1589() { + final private boolean jj_3_1591() { if (jj_scan_token(GO)) return true; return false; } - final private boolean jj_3_1588() { + final private boolean jj_3_15() { + if (jj_scan_token(ROWS)) return true; + return false; + } + + final private boolean jj_3_1590() { if (jj_scan_token(GENERAL)) return true; return false; } - final private boolean jj_3R_286() { + final private boolean jj_3R_288() { Token xsp; xsp = jj_scanpos; - if (jj_3_779()) { + if (jj_3_781()) { jj_scanpos = xsp; - if (jj_3_780()) { + if (jj_3_782()) { jj_scanpos = xsp; - if (jj_3R_397()) return true; + if (jj_3R_399()) return true; } } return false; } - final private boolean jj_3_1587() { + final private boolean jj_3_1589() { if (jj_scan_token(FOUND)) 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_779() { + final private boolean jj_3_781() { 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_1586() { + final private boolean jj_3_1588() { if (jj_scan_token(FOLLOWING)) return true; return false; } - final private boolean jj_3_1585() { + final private boolean jj_3_1587() { if (jj_scan_token(EXCLUDING)) return true; return false; } - final private boolean jj_3R_404() { - return false; - } - - final private boolean jj_3_1584() { + final private boolean jj_3_1586() { if (jj_scan_token(ERROR)) return true; return false; } - final private boolean jj_3_1583() { + final private boolean jj_3_1585() { if (jj_scan_token(DYNAMIC_FUNCTION_CODE)) return true; return false; } - final private boolean jj_3_5() { - if (jj_3R_71()) return true; + final private boolean jj_3_1584() { + if (jj_scan_token(DOY)) return true; return false; } - final private boolean jj_3_1582() { - if (jj_scan_token(DOY)) return true; + final private boolean jj_3_1583() { + if (jj_scan_token(DISPATCH)) return true; return false; } - final private boolean jj_3R_373() { + final private boolean jj_3_14() { + if (jj_scan_token(ROW)) return true; return false; } - final private boolean jj_3_1581() { - if (jj_scan_token(DISPATCH)) 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_1580() { + final private boolean jj_3_1582() { if (jj_scan_token(DESCRIPTION)) return true; return false; } - final private boolean jj_3_324() { - if (jj_scan_token(EXCLUDE)) return true; - if (jj_scan_token(NULLS)) return true; + final private boolean jj_3_1581() { + if (jj_scan_token(DEPTH)) return true; return false; } - final private boolean jj_3_1579() { - if (jj_scan_token(DEPTH)) return true; + final private boolean jj_3_1580() { + if (jj_scan_token(DEFINED)) return true; return false; } - final private boolean jj_3_323() { - if (jj_scan_token(INCLUDE)) return true; - if (jj_scan_token(NULLS)) return true; + final private boolean jj_3R_375() { return false; } - final private boolean jj_3_1578() { - if (jj_scan_token(DEFINED)) return true; + 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_1577() { + final private boolean jj_3_1579() { if (jj_scan_token(DEFAULTS)) return true; return false; } - final private boolean jj_3R_344() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_5()) { - jj_scanpos = xsp; - if (jj_3R_404()) return true; - } - xsp = jj_scanpos; - if (jj_3_13()) jj_scanpos = xsp; + final private boolean jj_3_1578() { + if (jj_scan_token(DAYOFYEAR)) return true; return false; } - final private boolean jj_3_1576() { - if (jj_scan_token(DAYOFYEAR)) return true; + final private boolean jj_3_324() { + if (jj_scan_token(EXCLUDE)) return true; + if (jj_scan_token(NULLS)) return true; return false; } - final private boolean jj_3_1575() { + final private boolean jj_3_1577() { if (jj_scan_token(DATETIME_INTERVAL_PRECISION)) return true; return false; } - final private boolean jj_3R_396() { + final private boolean jj_3_323() { + if (jj_scan_token(INCLUDE)) return true; + if (jj_scan_token(NULLS)) return true; return false; } - final private boolean jj_3_1574() { - if (jj_scan_token(DATE_TRUNC)) return true; + final private boolean jj_3R_398() { return false; } - final private boolean jj_3R_175() { - if (jj_scan_token(UNPIVOT)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_323()) { - jj_scanpos = xsp; - if (jj_3_324()) { - jj_scanpos = xsp; - if (jj_3R_373()) return true; - } - } - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_1576() { + if (jj_scan_token(DATE_TRUNC)) return true; return false; } - final private boolean jj_3_1573() { + final private boolean jj_3_1575() { if (jj_scan_token(DATA)) return true; return false; } - final private boolean jj_3_1572() { + final private boolean jj_3_1574() { if (jj_scan_token(CONTAINS_SUBSTR)) return true; return false; } - final private boolean jj_3_1571() { + final private boolean jj_3_1573() { if (jj_scan_token(CONSTRAINTS)) return true; return false; } - final private boolean jj_3_1570() { + final private boolean jj_3_1572() { if (jj_scan_token(CONNECTION_NAME)) return true; return false; } - final private boolean jj_3R_256() { + final private boolean jj_3R_258() { Token xsp; xsp = jj_scanpos; - if (jj_3_777()) { + if (jj_3_779()) { jj_scanpos = xsp; - if (jj_3R_396()) return true; + if (jj_3R_398()) return true; } return false; } - final private boolean jj_3_1569() { + final private boolean jj_3R_175() { + if (jj_scan_token(UNPIVOT)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_323()) { + jj_scanpos = xsp; + if (jj_3_324()) { + jj_scanpos = xsp; + if (jj_3R_375()) return true; + } + } + if (jj_scan_token(LPAREN)) return true; + return false; + } + + final private boolean jj_3_1571() { if (jj_scan_token(CONDITIONAL)) return true; return false; } - final private boolean jj_3_777() { + final private boolean jj_3_779() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_257()) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3_1568() { + final private boolean jj_3_1570() { if (jj_scan_token(COMMAND_FUNCTION)) return true; return false; } - final private boolean jj_3_1567() { + final private boolean jj_3_1569() { if (jj_scan_token(COLLATION_NAME)) return true; return false; } - final private boolean jj_3_1566() { + final private boolean jj_3_1568() { if (jj_scan_token(COBOL)) return true; return false; } - final private boolean jj_3_1565() { + final private boolean jj_3_1567() { if (jj_scan_token(CHARACTER_SET_NAME)) return true; return false; } - final private boolean jj_3_1564() { + final private boolean jj_3_1566() { if (jj_scan_token(CHARACTERISTICS)) return true; return false; } - final private boolean jj_3_1563() { + final private boolean jj_3_1565() { if (jj_scan_token(CATALOG_NAME)) return true; return false; } - final private boolean jj_3_1562() { + final private boolean jj_3_1564() { if (jj_scan_token(C)) return true; return false; } - final private boolean jj_3R_376() { + final private boolean jj_3_1563() { + if (jj_scan_token(BEFORE)) return true; return false; } - final private boolean jj_3_1561() { - if (jj_scan_token(BEFORE)) return true; + final private boolean jj_3_8() { + if (jj_3R_74()) return true; return false; } - final private boolean jj_3R_80() { - if (jj_3R_343()) return true; - if (jj_3R_344()) return true; + final private boolean jj_3_1562() { + if (jj_scan_token(ASSIGNMENT)) return true; return false; } - final private boolean jj_3_1560() { - if (jj_scan_token(ASSIGNMENT)) return true; + final private boolean jj_3_12() { + if (jj_3R_74()) return true; return false; } - final private boolean jj_3_1559() { + final private boolean jj_3_1561() { if (jj_scan_token(ARRAY_CONCAT_AGG)) return true; return false; } - final private boolean jj_3_1558() { + final private boolean jj_3_1560() { if (jj_scan_token(ALWAYS)) return true; return false; } - final private boolean jj_3_1557() { - if (jj_scan_token(ADD)) return true; + final private boolean jj_3R_378() { return false; } - final private boolean jj_3_321() { - if (jj_scan_token(AS)) return true; + final private boolean jj_3_1559() { + if (jj_scan_token(ADD)) return true; return false; } - final private boolean jj_3_1556() { + final private boolean jj_3_1558() { if (jj_scan_token(ABSOLUTE)) return true; return false; } - final private boolean jj_3_322() { + final private boolean jj_3_778() { + if (jj_scan_token(TIMESTAMP)) return true; + if (jj_3R_258()) return true; + if (jj_3R_288()) return true; + return false; + } + + final private boolean jj_3_7() { + if (jj_3R_73()) return true; + return false; + } + + final private boolean jj_3_9() { Token xsp; xsp = jj_scanpos; - if (jj_3_321()) jj_scanpos = xsp; - if (jj_3R_85()) return true; + if (jj_3_7()) { + jj_scanpos = xsp; + if (jj_3_8()) return true; + } return false; } - final private boolean jj_3_776() { - if (jj_scan_token(TIMESTAMP)) return true; - if (jj_3R_256()) return true; - if (jj_3R_286()) return true; + final private boolean jj_3_321() { + if (jj_scan_token(AS)) return true; return false; } - final private boolean jj_3R_339() { + final private boolean jj_3R_341() { Token xsp; xsp = jj_scanpos; - if (jj_3_1556()) { - jj_scanpos = xsp; - if (jj_3_1557()) { - jj_scanpos = xsp; if (jj_3_1558()) { jj_scanpos = xsp; if (jj_3_1559()) { @@ -33949,7 +33890,11 @@ final private boolean jj_3R_339() { jj_scanpos = xsp; if (jj_3_1773()) { jj_scanpos = xsp; - if (jj_3_1774()) return true; + if (jj_3_1774()) { + jj_scanpos = xsp; + if (jj_3_1775()) { + jj_scanpos = xsp; + if (jj_3_1776()) return true; } } } @@ -34171,837 +34116,920 @@ final private boolean jj_3R_339() { return false; } + final private boolean jj_3_322() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_321()) jj_scanpos = xsp; + if (jj_3R_85()) 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_777() { + if (jj_scan_token(TIME)) return true; + if (jj_3R_258()) return true; + if (jj_3R_288()) return true; + return false; + } + + final private boolean jj_3_1557() { + if (jj_scan_token(FRIDAY)) return true; + return false; + } + final private boolean jj_3R_187() { if (jj_3R_161()) return true; Token xsp; xsp = jj_scanpos; if (jj_3_322()) { jj_scanpos = xsp; - if (jj_3R_376()) return true; + if (jj_3R_378()) return true; } return false; } - final private boolean jj_3_775() { - if (jj_scan_token(TIME)) return true; - if (jj_3R_256()) return true; - if (jj_3R_286()) return true; + final private boolean jj_3_1556() { + if (jj_scan_token(TUESDAY)) return true; return false; } - final private boolean jj_3_1555() { - if (jj_scan_token(FRIDAY)) return true; + final private boolean jj_3_10() { + if (jj_3R_73()) return true; return false; } - final private boolean jj_3_1554() { - if (jj_scan_token(TUESDAY)) return true; + 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_1553() { + final private boolean jj_3_1555() { if (jj_scan_token(WITHOUT)) return true; return false; } - final private boolean jj_3_1552() { + final private boolean jj_3_1554() { if (jj_scan_token(WIDTH_BUCKET)) return true; return false; } - final private boolean jj_3R_282() { + final private boolean jj_3R_406() { + return false; + } + + final private boolean jj_3R_284() { Token xsp; xsp = jj_scanpos; - if (jj_3_774()) { + if (jj_3_776()) { jj_scanpos = xsp; - if (jj_3_775()) { + if (jj_3_777()) { jj_scanpos = xsp; - if (jj_3_776()) return true; + if (jj_3_778()) return true; } } return false; } - final private boolean jj_3_1551() { + final private boolean jj_3_1553() { if (jj_scan_token(VAR_SAMP)) return true; return false; } - final private boolean jj_3_774() { + final private boolean jj_3_776() { if (jj_scan_token(DATE)) return true; return false; } - final private boolean jj_3_1550() { + final private boolean jj_3_1552() { if (jj_scan_token(VARCHAR)) return true; return false; } - final private boolean jj_3_1549() { + final private boolean jj_3_5() { + if (jj_3R_71()) return true; + return false; + } + + final private boolean jj_3_1551() { if (jj_scan_token(VALUE)) return true; return false; } - final private boolean jj_3_1548() { + final private boolean jj_3_1550() { if (jj_scan_token(UNNEST)) return true; return false; } - final private boolean jj_3_318() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_187()) return true; + final private boolean jj_3_1549() { + if (jj_scan_token(UESCAPE)) return true; return false; } - final private boolean jj_3_1547() { - if (jj_scan_token(UESCAPE)) return true; + final private boolean jj_3_1548() { + if (jj_scan_token(TRIM_ARRAY)) return true; return false; } - final private boolean jj_3_320() { - if (jj_scan_token(AS)) return true; + final private boolean jj_3_1547() { + if (jj_scan_token(TREAT)) return true; return false; } final private boolean jj_3_1546() { - if (jj_scan_token(TRIM_ARRAY)) return true; + if (jj_scan_token(TRANSLATE)) return true; return false; } - final private boolean jj_3_1545() { - if (jj_scan_token(TREAT)) return true; + final private boolean jj_3_318() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_187()) return true; return false; } - final private boolean jj_3_1544() { - if (jj_scan_token(TRANSLATE)) return true; + final private boolean jj_3R_346() { + 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_1543() { + final private boolean jj_3_1545() { if (jj_scan_token(TIMEZONE_HOUR)) return true; return false; } - final private boolean jj_3_1542() { + final private boolean jj_3_320() { + if (jj_scan_token(AS)) return true; + return false; + } + + final private boolean jj_3_1544() { if (jj_scan_token(TABLESAMPLE)) return true; return false; } - final private boolean jj_3_1541() { + final private boolean jj_3_1543() { if (jj_scan_token(SYSTEM)) return true; return false; } - final private boolean jj_3_769() { + final private boolean jj_3_771() { if (jj_scan_token(CHAR)) return true; return false; } - final private boolean jj_3_1540() { + final private boolean jj_3_1542() { if (jj_scan_token(SUBSTRING_REGEX)) return true; return false; } - final private boolean jj_3_1539() { + final private boolean jj_3_1541() { if (jj_scan_token(SUBMULTISET)) return true; return false; } - final private boolean jj_3_317() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_186()) return true; - return false; - } - - final private boolean jj_3_1538() { + final private boolean jj_3_1540() { if (jj_scan_token(STDDEV_POP)) return true; return false; } - final private boolean jj_3R_186() { - if (jj_3R_375()) return true; - return false; - } - - final private boolean jj_3_1537() { + final private boolean jj_3_1539() { if (jj_scan_token(SQRT)) return true; return false; } - final private boolean jj_3_773() { + final private boolean jj_3_775() { if (jj_scan_token(CHARACTER)) return true; if (jj_scan_token(SET)) return true; return false; } - final private boolean jj_3_1536() { + final private boolean jj_3_1538() { if (jj_scan_token(SQLEXCEPTION)) return true; return false; } - final private boolean jj_3_1535() { + final private boolean jj_3_1537() { if (jj_scan_token(SPECIFIC)) return true; return false; } - final private boolean jj_3R_285() { + final private boolean jj_3_317() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_186()) return true; return false; } - final private boolean jj_3_1534() { + final private boolean jj_3R_287() { + return false; + } + + final private boolean jj_3_1536() { if (jj_scan_token(SIMILAR)) return true; return false; } - final private boolean jj_3_2() { - if (jj_3R_68()) return true; + final private boolean jj_3R_186() { + if (jj_3R_377()) return true; return false; } - final private boolean jj_3_1533() { + final private boolean jj_3_1535() { if (jj_scan_token(SENSITIVE)) return true; return false; } - final private boolean jj_3_772() { + final private boolean jj_3_774() { if (jj_scan_token(VARCHAR)) return true; return false; } - final private boolean jj_3_1532() { + final private boolean jj_3_1534() { if (jj_scan_token(SEARCH)) return true; return false; } - final private boolean jj_3_1() { - if (jj_3R_67()) return true; - return false; - } - - final private boolean jj_3_770() { + final private boolean jj_3_772() { if (jj_scan_token(VARYING)) return true; return false; } - final private boolean jj_3_1531() { + final private boolean jj_3_1533() { if (jj_scan_token(SAVEPOINT)) return true; return false; } - final private boolean jj_3_1530() { + final private boolean jj_3_1532() { if (jj_scan_token(SAFE_CAST)) return true; return false; } - final private boolean jj_3_1529() { + final private boolean jj_3_1531() { if (jj_scan_token(ROWS)) 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; } - } + final private boolean jj_3_1530() { + if (jj_scan_token(REVOKE)) return true; return false; } - final private boolean jj_3_1528() { - if (jj_scan_token(REVOKE)) return true; + final private boolean jj_3R_80() { + if (jj_3R_345()) return true; + if (jj_3R_346()) return true; return false; } - final private boolean jj_3_1527() { + final private boolean jj_3_1529() { if (jj_scan_token(RESULT)) return true; return false; } - final private boolean jj_3_768() { + final private boolean jj_3_770() { if (jj_scan_token(CHARACTER)) return true; return false; } - final private boolean jj_3_1526() { + final private boolean jj_3_1528() { if (jj_scan_token(REGR_SYY)) return true; return false; } - final private boolean jj_3_771() { + final private boolean jj_3_773() { Token xsp; xsp = jj_scanpos; - if (jj_3_768()) { + if (jj_3_770()) { jj_scanpos = xsp; - if (jj_3_769()) return true; + if (jj_3_771()) return true; } xsp = jj_scanpos; - if (jj_3_770()) { + if (jj_3_772()) { jj_scanpos = xsp; - if (jj_3R_285()) return true; + if (jj_3R_287()) return true; } return false; } - final private boolean jj_3_1525() { + final private boolean jj_3_1527() { if (jj_scan_token(REGR_SLOPE)) return true; return false; } - final private boolean jj_3_1524() { + final private boolean jj_3_1526() { if (jj_scan_token(REGR_COUNT)) return true; return false; } - final private boolean jj_3_3() { - if (jj_3R_69()) return true; - return false; - } - - final private boolean jj_3_1523() { + final private boolean jj_3_1525() { if (jj_scan_token(REFERENCING)) return true; return false; } - final private boolean jj_3_1522() { + final private boolean jj_3_1524() { if (jj_scan_token(RECURSIVE)) return true; return false; } - final private boolean jj_3R_281() { + final private boolean jj_3R_283() { Token xsp; xsp = jj_scanpos; - if (jj_3_771()) { + if (jj_3_773()) { jj_scanpos = xsp; - if (jj_3_772()) return true; + if (jj_3_774()) return true; } - if (jj_3R_256()) return true; + if (jj_3R_258()) return true; xsp = jj_scanpos; - if (jj_3_773()) jj_scanpos = xsp; + if (jj_3_775()) jj_scanpos = xsp; return false; } - final private boolean jj_3_1521() { + final private boolean jj_3_1523() { if (jj_scan_token(RANK)) return true; return false; } - final private boolean jj_3_319() { - if (jj_3R_187()) return true; - return false; - } - - final private boolean jj_3_1520() { + final private boolean jj_3_1522() { if (jj_scan_token(PROCEDURE)) return true; return false; } - final private boolean jj_3R_371() { - 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_1519() { + final private boolean jj_3_1521() { if (jj_scan_token(PRECISION)) return true; return false; } - final private boolean jj_3_1518() { + final private boolean jj_3_1520() { if (jj_scan_token(POSITION_REGEX)) return true; return false; } - final private boolean jj_3_1517() { + final private boolean jj_3_1519() { if (jj_scan_token(PERMUTE)) return true; return false; } - final private boolean jj_3_1516() { - if (jj_scan_token(PERCENTILE_DISC)) return true; + final private boolean jj_3_319() { + if (jj_3R_187()) return true; return false; } - final private boolean jj_3_1515() { - if (jj_scan_token(PER)) return true; + final private boolean jj_3_1518() { + if (jj_scan_token(PERCENTILE_DISC)) return true; return false; } - final private boolean jj_3R_174() { - if (jj_scan_token(PIVOT)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_1517() { + if (jj_scan_token(PER)) return true; return false; } - final private boolean jj_3_1514() { + final private boolean jj_3_1516() { if (jj_scan_token(OVERLAY)) return true; return false; } - final private boolean jj_3_1513() { + final private boolean jj_3_1515() { if (jj_scan_token(OUT)) return true; return false; } - final private boolean jj_3_1512() { + final private boolean jj_3_1514() { if (jj_scan_token(ONLY)) return true; return false; } - final private boolean jj_3_1511() { - if (jj_scan_token(OLD)) return true; + final private boolean jj_3_1513() { + if (jj_scan_token(OLD)) return true; + return false; + } + + final private boolean jj_3R_174() { + if (jj_scan_token(PIVOT)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_1510() { + final private boolean jj_3_1512() { if (jj_scan_token(OCCURRENCES_REGEX)) return true; return false; } - final private boolean jj_3_1509() { + final private boolean jj_3_1511() { if (jj_scan_token(NTILE)) return true; return false; } - final private boolean jj_3_1508() { + final private boolean jj_3_1510() { if (jj_scan_token(NONE)) return true; return false; } - final private boolean jj_3_1507() { + final private boolean jj_3_1509() { if (jj_scan_token(NEW)) return true; return false; } - final private boolean jj_3_1506() { + final private boolean jj_3_1508() { if (jj_scan_token(NATIONAL)) return true; return false; } - final private boolean jj_3_1505() { + final private boolean jj_3_1507() { if (jj_scan_token(MODULE)) return true; return false; } - final private boolean jj_3_1504() { + final private boolean jj_3_1506() { if (jj_scan_token(MINUTE)) return true; return false; } - final private boolean jj_3_1503() { + final private boolean jj_3_1505() { if (jj_scan_token(MEMBER)) return true; return false; } - final private boolean jj_3_1502() { + final private boolean jj_3_1504() { if (jj_scan_token(MATCH_RECOGNIZE)) return true; return false; } - final private boolean jj_3_1501() { + final private boolean jj_3_1503() { if (jj_scan_token(MATCH)) return true; return false; } - final private boolean jj_3R_277() { + final private boolean jj_3R_279() { if (jj_scan_token(MAP)) return true; if (jj_scan_token(LT)) return true; if (jj_3R_119()) return true; return false; } - final private boolean jj_3_1500() { + final private boolean jj_3_1502() { if (jj_scan_token(LN)) return true; return false; } - final private boolean jj_3_1499() { + final private boolean jj_3_1501() { if (jj_scan_token(LATERAL)) return true; return false; } - final private boolean jj_3_1498() { + final private boolean jj_3_1500() { if (jj_scan_token(LANGUAGE)) return true; return false; } - final private boolean jj_3_1497() { + final private boolean jj_3_1499() { if (jj_scan_token(JSON_SCOPE)) return true; return false; } - final private boolean jj_3_1496() { + final private boolean jj_3_1498() { if (jj_scan_token(JSON_OBJECT)) return true; return false; } - final private boolean jj_3_1495() { + final private boolean jj_3_1497() { if (jj_scan_token(JSON_ARRAY)) return true; return false; } - final private boolean jj_3_1494() { + final private boolean jj_3_1496() { if (jj_scan_token(INT)) return true; return false; } - final private boolean jj_3_1493() { + final private boolean jj_3_1495() { if (jj_scan_token(INITIAL)) return true; return false; } - final private boolean jj_3_1492() { + final private boolean jj_3_1494() { if (jj_scan_token(IDENTITY)) return true; return false; } - final private boolean jj_3_1491() { + final private boolean jj_3_2() { + if (jj_3R_68()) return true; + return false; + } + + final private boolean jj_3_1493() { if (jj_scan_token(GROUPS)) return true; return false; } - final private boolean jj_3_1490() { + final private boolean jj_3_1492() { if (jj_scan_token(GLOBAL)) return true; return false; } - final private boolean jj_3_1489() { - if (jj_scan_token(FUNCTION)) return true; + final private boolean jj_3_1() { + if (jj_3R_67()) return true; return false; } - final private boolean jj_3R_165() { - if (jj_scan_token(FOR)) return true; - if (jj_scan_token(SYSTEM_TIME)) return true; + final private boolean jj_3_1491() { + if (jj_scan_token(FUNCTION)) return true; return false; } - final private boolean jj_3_1488() { + final private boolean jj_3_1490() { if (jj_scan_token(FOREIGN)) return true; return false; } - final private boolean jj_3R_276() { + final private boolean jj_3R_278() { if (jj_scan_token(ROW)) return true; if (jj_scan_token(LPAREN)) return true; - if (jj_3R_415()) return true; + if (jj_3R_417()) return true; return false; } - final private boolean jj_3_1487() { + final private boolean jj_3_1489() { if (jj_scan_token(FIRST_VALUE)) return true; return false; } - final private boolean jj_3_1486() { + 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_1488() { if (jj_scan_token(EXTERNAL)) return true; return false; } - final private boolean jj_3_1485() { + final private boolean jj_3_1487() { if (jj_scan_token(EXECUTE)) return true; return false; } - final private boolean jj_3_1484() { + final private boolean jj_3R_165() { + if (jj_scan_token(FOR)) return true; + if (jj_scan_token(SYSTEM_TIME)) return true; + return false; + } + + final private boolean jj_3_1486() { if (jj_scan_token(ESCAPE)) return true; return false; } - final private boolean jj_3_1483() { + final private boolean jj_3_1485() { if (jj_scan_token(END_FRAME)) return true; return false; } - final private boolean jj_3_1482() { + final private boolean jj_3_1484() { if (jj_scan_token(EMPTY)) return true; return false; } - final private boolean jj_3_1481() { + final private boolean jj_3_3() { + if (jj_3R_69()) return true; + return false; + } + + final private boolean jj_3_1483() { if (jj_scan_token(DYNAMIC)) return true; return false; } - final private boolean jj_3_1480() { + final private boolean jj_3_1482() { if (jj_scan_token(DISALLOW)) return true; return false; } - final private boolean jj_3_1479() { + final private boolean jj_3_1481() { if (jj_scan_token(DEREF)) return true; return false; } - final private boolean jj_3_1478() { + final private boolean jj_3_1480() { if (jj_scan_token(DECLARE)) return true; return false; } - final private boolean jj_3_1477() { + final private boolean jj_3R_373() { + 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_1479() { if (jj_scan_token(DEALLOCATE)) return true; return false; } - final private boolean jj_3_1476() { + final private boolean jj_3_1478() { if (jj_scan_token(DATE)) return true; return false; } - final private boolean jj_3_1475() { + final private boolean jj_3_1477() { if (jj_scan_token(CURRENT_TRANSFORM_GROUP_FOR_TYPE)) return true; return false; } - final private boolean jj_3_1474() { + final private boolean jj_3_1476() { if (jj_scan_token(CURRENT_PATH)) return true; return false; } - final private boolean jj_3_1473() { + final private boolean jj_3_1475() { if (jj_scan_token(CURRENT)) return true; return false; } - final private boolean jj_3_1472() { + final private boolean jj_3_1474() { if (jj_scan_token(COVAR_SAMP)) return true; return false; } - final private boolean jj_3_1471() { + final private boolean jj_3_1473() { if (jj_scan_token(CORRESPONDING)) return true; return false; } - final private boolean jj_3_1470() { + final private boolean jj_3_1472() { if (jj_scan_token(CONTAINS)) return true; return false; } - final private boolean jj_3_1469() { + final private boolean jj_3_1471() { if (jj_scan_token(COMMIT)) return true; return false; } - final private boolean jj_3_1468() { + final private boolean jj_3_1470() { if (jj_scan_token(COALESCE)) return true; return false; } - final private boolean jj_3R_284() { + final private boolean jj_3R_286() { if (jj_3R_85()) return true; return false; } - final private boolean jj_3_1467() { + final private boolean jj_3_1469() { if (jj_scan_token(CLASSIFIER)) return true; return false; } - final private boolean jj_3_1466() { + final private boolean jj_3_1468() { if (jj_scan_token(CHARACTER_LENGTH)) return true; return false; } - final private boolean jj_3_1465() { + final private boolean jj_3_1467() { if (jj_scan_token(CEILING)) return true; return false; } - final private boolean jj_3_1464() { + final private boolean jj_3_1466() { if (jj_scan_token(CARDINALITY)) return true; return false; } - final private boolean jj_3_1463() { + final private boolean jj_3_1465() { if (jj_scan_token(BOOLEAN)) return true; return false; } - final private boolean jj_3_1462() { + final private boolean jj_3_1464() { if (jj_scan_token(BINARY)) return true; return false; } - final private boolean jj_3R_370() { - if (jj_3R_409()) return true; - return false; - } - - final private boolean jj_3_1461() { + final private boolean jj_3_1463() { if (jj_scan_token(BEGIN_FRAME)) return true; return false; } - final private boolean jj_3_1460() { + final private boolean jj_3_1462() { if (jj_scan_token(AUTHORIZATION)) return true; return false; } - final private boolean jj_3_1459() { + final private boolean jj_3_1461() { if (jj_scan_token(ASENSITIVE)) return true; return false; } - final private boolean jj_3_1458() { + final private boolean jj_3_1460() { if (jj_scan_token(ALLOW)) return true; return false; } - final private boolean jj_3_767() { + final private boolean jj_3_769() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_284()) return true; + if (jj_3R_286()) return true; return false; } - final private boolean jj_3_1457() { + final private boolean jj_3R_372() { + if (jj_3R_411()) return true; + return false; + } + + final private boolean jj_3_1459() { if (jj_scan_token(TOTAL)) return true; return false; } - final private boolean jj_3_1456() { + final private boolean jj_3_1458() { if (jj_scan_token(REFRESH)) return true; return false; } - final private boolean jj_3R_415() { - if (jj_3R_284()) return true; + final private boolean jj_3R_417() { + if (jj_3R_286()) return true; return false; } - final private boolean jj_3_1455() { + final private boolean jj_3_1457() { if (jj_scan_token(ASYNC)) return true; return false; } - final private boolean jj_3_1454() { + final private boolean jj_3_1456() { if (jj_scan_token(CONTINUOUS)) return true; return false; } - final private boolean jj_3_1453() { + final private boolean jj_3_1455() { if (jj_scan_token(PASSWORD)) return true; return false; } - final private boolean jj_3_1452() { + final private boolean jj_3_1454() { if (jj_scan_token(INLINE_SIZE)) return true; return false; } - final private boolean jj_3_1451() { + final private boolean jj_3_1453() { if (jj_scan_token(VALUE_TYPE)) return true; return false; } - final private boolean jj_3_1450() { + final private boolean jj_3_1452() { if (jj_scan_token(CACHE_GROUP)) return true; return false; } - final private boolean jj_3_1449() { + final private boolean jj_3_1451() { if (jj_scan_token(AFFINITY_KEY)) return true; return false; } - final private boolean jj_3_315() { - if (jj_scan_token(NULLS)) return true; - if (jj_scan_token(LAST)) return true; + final private boolean jj_3_1450() { + if (jj_scan_token(ZONE)) return true; + return false; + } + + final private boolean jj_3_1449() { + if (jj_scan_token(WRITE)) return true; return false; } final private boolean jj_3_1448() { - if (jj_scan_token(ZONE)) return true; + if (jj_scan_token(WEEKS)) return true; return false; } final private boolean jj_3_1447() { - if (jj_scan_token(WRITE)) return true; + if (jj_scan_token(VERSION)) return true; + return false; + } + + final private boolean jj_3_315() { + if (jj_scan_token(NULLS)) return true; + if (jj_scan_token(LAST)) return true; return false; } final private boolean jj_3_1446() { - if (jj_scan_token(WEEKS)) return true; + if (jj_scan_token(UTF16)) return true; + return false; + } + + final private boolean jj_3R_376() { return false; } final private boolean jj_3_1445() { - if (jj_scan_token(VERSION)) return true; + if (jj_scan_token(USER_DEFINED_TYPE_CODE)) return true; return false; } final private boolean jj_3_1444() { - if (jj_scan_token(UTF16)) return true; + if (jj_scan_token(UNNAMED)) return true; return false; } - final private boolean jj_3_316() { + final private boolean jj_3R_179() { Token xsp; xsp = jj_scanpos; - if (jj_3_314()) { + if (jj_3_768()) { jj_scanpos = xsp; - if (jj_3_315()) return true; + if (jj_3R_376()) return true; } return false; } - final private boolean jj_3_314() { - if (jj_scan_token(NULLS)) return true; - if (jj_scan_token(FIRST)) return true; - return false; - } - - final private boolean jj_3R_374() { + final private boolean jj_3_1443() { + if (jj_scan_token(UNCONDITIONAL)) return true; return false; } - final private boolean jj_3_1443() { - if (jj_scan_token(USER_DEFINED_TYPE_CODE)) return true; + final private boolean jj_3_768() { + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(NULL)) return true; return false; } final private boolean jj_3_1442() { - if (jj_scan_token(UNNAMED)) return true; + if (jj_scan_token(TYPE)) return true; return false; } - final private boolean jj_3R_179() { + final private boolean jj_3_316() { Token xsp; xsp = jj_scanpos; - if (jj_3_766()) { + if (jj_3_314()) { jj_scanpos = xsp; - if (jj_3R_374()) return true; + if (jj_3_315()) return true; } return false; } - final private boolean jj_3_1441() { - if (jj_scan_token(UNCONDITIONAL)) return true; + final private boolean jj_3_314() { + if (jj_scan_token(NULLS)) return true; + if (jj_scan_token(FIRST)) return true; return false; } - final private boolean jj_3_766() { - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(NULL)) return true; + final private boolean jj_3_1441() { + if (jj_scan_token(TRIGGER_NAME)) return true; return false; } final private boolean jj_3_1440() { - if (jj_scan_token(TYPE)) return true; + if (jj_scan_token(TRANSFORM)) return true; return false; } final private boolean jj_3_1439() { - if (jj_scan_token(TRIGGER_NAME)) return true; + if (jj_scan_token(TRANSACTIONS_ACTIVE)) return true; + return false; + } + + final private boolean jj_3_1438() { + if (jj_scan_token(TIMESTAMP_TRUNC)) return true; + return false; + } + + final private boolean jj_3_1437() { + if (jj_scan_token(TIMESTAMPADD)) return true; return false; } @@ -35010,8 +35038,8 @@ final private boolean jj_3_312() { return false; } - final private boolean jj_3_1438() { - if (jj_scan_token(TRANSFORM)) return true; + final private boolean jj_3_1436() { + if (jj_scan_token(TIES)) return true; return false; } @@ -35030,1087 +35058,1058 @@ final private boolean jj_3_311() { return false; } - final private boolean jj_3_1437() { - if (jj_scan_token(TRANSACTIONS_ACTIVE)) return true; - return false; - } - - final private boolean jj_3_1436() { - if (jj_scan_token(TIMESTAMP_TRUNC)) return true; - return false; - } - final private boolean jj_3_1435() { - if (jj_scan_token(TIMESTAMPADD)) return true; + if (jj_scan_token(SUBSTITUTE)) return true; return false; } final private boolean jj_3_1434() { - if (jj_scan_token(TIES)) return true; + if (jj_scan_token(STRUCTURE)) return true; return false; } final private boolean jj_3_1433() { - if (jj_scan_token(SUBSTITUTE)) return true; + if (jj_scan_token(STATE)) return true; return false; } - final private boolean jj_3R_155() { - if (jj_3R_82()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_313()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3_316()) jj_scanpos = xsp; + final private boolean jj_3_767() { + 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(STRUCTURE)) return true; + if (jj_scan_token(SQL_TSI_YEAR)) return true; return false; } final private boolean jj_3_1431() { - if (jj_scan_token(STATE)) return true; + if (jj_scan_token(SQL_TSI_QUARTER)) return true; return false; } - final private boolean jj_3_765() { - if (jj_scan_token(NOT)) return true; + final private boolean jj_3_766() { if (jj_scan_token(NULL)) return true; return false; } - final private boolean jj_3_1430() { - if (jj_scan_token(SQL_TSI_YEAR)) return true; + final private boolean jj_3R_155() { + if (jj_3R_82()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_313()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3_316()) jj_scanpos = xsp; return false; } - final private boolean jj_3_1429() { - if (jj_scan_token(SQL_TSI_QUARTER)) return true; + final private boolean jj_3_1430() { + if (jj_scan_token(SQL_TSI_MICROSECOND)) return true; return false; } - final private boolean jj_3_764() { - if (jj_scan_token(NULL)) return true; + final private boolean jj_3_1429() { + if (jj_scan_token(SQL_TSI_DAY)) return true; return false; } final private boolean jj_3_1428() { - if (jj_scan_token(SQL_TSI_MICROSECOND)) return true; + if (jj_scan_token(SQL_TIME)) return true; return false; } final private boolean jj_3_1427() { - if (jj_scan_token(SQL_TSI_DAY)) return true; + if (jj_scan_token(SQL_NVARCHAR)) return true; return false; } final private boolean jj_3_1426() { - if (jj_scan_token(SQL_TIME)) return true; + if (jj_scan_token(SQL_NCHAR)) return true; return false; } final private boolean jj_3_1425() { - if (jj_scan_token(SQL_NVARCHAR)) return true; + if (jj_scan_token(SQL_LONGVARBINARY)) return true; return false; } final private boolean jj_3_1424() { - if (jj_scan_token(SQL_NCHAR)) return true; + if (jj_scan_token(SQL_INTERVAL_SECOND)) return true; return false; } final private boolean jj_3_1423() { - if (jj_scan_token(SQL_LONGVARBINARY)) return true; + if (jj_scan_token(SQL_INTERVAL_MINUTE)) return true; return false; } final private boolean jj_3_1422() { - if (jj_scan_token(SQL_INTERVAL_SECOND)) return true; + if (jj_scan_token(SQL_INTERVAL_HOUR)) return true; return false; } final private boolean jj_3_1421() { - if (jj_scan_token(SQL_INTERVAL_MINUTE)) return true; - return false; - } - - final private boolean jj_3_310() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_155()) return true; + if (jj_scan_token(SQL_INTERVAL_DAY_TO_HOUR)) return true; return false; } final private boolean jj_3_1420() { - if (jj_scan_token(SQL_INTERVAL_HOUR)) return true; + if (jj_scan_token(SQL_FLOAT)) return true; return false; } final private boolean jj_3_1419() { - if (jj_scan_token(SQL_INTERVAL_DAY_TO_HOUR)) return true; - return false; - } - - final private boolean jj_3_1418() { - if (jj_scan_token(SQL_FLOAT)) return true; + if (jj_scan_token(SQL_DATE)) return true; return false; } - final private boolean jj_3_1417() { - if (jj_scan_token(SQL_DATE)) return true; + final private boolean jj_3_310() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_155()) return true; return false; } - final private boolean jj_3_763() { + final private boolean jj_3_765() { if (jj_scan_token(NOT)) return true; if (jj_scan_token(NULL)) return true; return false; } - final private boolean jj_3_1416() { + final private boolean jj_3_1418() { if (jj_scan_token(SQL_BOOLEAN)) return true; return false; } - final private boolean jj_3_1415() { + final private boolean jj_3_1417() { if (jj_scan_token(SQL_BINARY)) return true; return false; } - final private boolean jj_3_762() { + final private boolean jj_3_764() { if (jj_scan_token(NULL)) return true; return false; } - final private boolean jj_3_1414() { + final private boolean jj_3_1416() { if (jj_scan_token(SPACE)) return true; return false; } - final private boolean jj_3_1413() { + final private boolean jj_3_1415() { if (jj_scan_token(SIMPLE)) return true; return false; } - final private boolean jj_3_1412() { + final private boolean jj_3_1414() { if (jj_scan_token(SERVER_NAME)) return true; return false; } - final private boolean jj_3_1411() { + final private boolean jj_3_1413() { if (jj_scan_token(SEQUENCE)) return true; return false; } - final private boolean jj_3_1410() { + final private boolean jj_3_1412() { if (jj_scan_token(SECURITY)) return true; return false; } - final private boolean jj_3_1409() { + final private boolean jj_3_1411() { if (jj_scan_token(SCOPE_SCHEMA)) return true; return false; } - final private boolean jj_3_1408() { + final private boolean jj_3_1410() { if (jj_scan_token(SCHEMA_NAME)) return true; return false; } - final private boolean jj_3_1407() { + final private boolean jj_3_1409() { if (jj_scan_token(SCALAR)) return true; return false; } - final private boolean jj_3_1406() { + final private boolean jj_3_1408() { if (jj_scan_token(ROUTINE_NAME)) return true; return false; } - final private boolean jj_3_1405() { + final private boolean jj_3_1407() { if (jj_scan_token(ROLE)) 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_1404() { + final private boolean jj_3_1406() { if (jj_scan_token(RETURNED_SQLSTATE)) return true; return false; } - final private boolean jj_3_761() { + final private boolean jj_3_763() { if (jj_scan_token(ARRAY)) return true; return false; } - final private boolean jj_3_1403() { + final private boolean jj_3_1405() { if (jj_scan_token(RETURNED_CARDINALITY)) return true; return false; } - final private boolean jj_3_1402() { + final private boolean jj_3_1404() { if (jj_scan_token(RESPECT)) return true; return false; } - final private boolean jj_3_760() { + final private boolean jj_3_762() { if (jj_scan_token(MULTISET)) return true; return false; } - final private boolean jj_3_1401() { + final private boolean jj_3_1403() { if (jj_scan_token(RELATIVE)) return true; return false; } - final private boolean jj_3_1400() { + 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_1402() { if (jj_scan_token(QUARTER)) return true; return false; } - final private boolean jj_3_1399() { + final private boolean jj_3_1401() { if (jj_scan_token(PRIOR)) return true; return false; } - final private boolean jj_3_1398() { + final private boolean jj_3_1400() { if (jj_scan_token(PLI)) return true; return false; } - final private boolean jj_3R_274() { + final private boolean jj_3R_276() { Token xsp; xsp = jj_scanpos; - if (jj_3_760()) { + if (jj_3_762()) { jj_scanpos = xsp; - if (jj_3_761()) return true; + if (jj_3_763()) return true; } return false; } - final private boolean jj_3_1397() { + final private boolean jj_3_1399() { if (jj_scan_token(PIVOT)) return true; return false; } - final private boolean jj_3_1396() { + final private boolean jj_3_1398() { if (jj_scan_token(PASSTHROUGH)) return true; return false; } - final private boolean jj_3_1395() { + final private boolean jj_3_1397() { if (jj_scan_token(PARTIAL)) return true; return false; } - final private boolean jj_3_1394() { + final private boolean jj_3_1396() { if (jj_scan_token(PARAMETER_SPECIFIC_CATALOG)) return true; return false; } - final private boolean jj_3_1393() { + final private boolean jj_3_1395() { if (jj_scan_token(PARAMETER_MODE)) return true; return false; } - final private boolean jj_3R_148() { - if (jj_scan_token(QUALIFY)) return true; - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3_1392() { + final private boolean jj_3_1394() { if (jj_scan_token(OUTPUT)) return true; return false; } - final private boolean jj_3_1391() { + final private boolean jj_3_1393() { if (jj_scan_token(ORDERING)) return true; return false; } - final private boolean jj_3_1390() { + final private boolean jj_3_1392() { if (jj_scan_token(OCTETS)) return true; return false; } - final private boolean jj_3_1389() { + final private boolean jj_3_1391() { if (jj_scan_token(NULLS)) return true; return false; } - final private boolean jj_3_1388() { + final private boolean jj_3R_148() { + if (jj_scan_token(QUALIFY)) return true; + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3_1390() { if (jj_scan_token(NESTING)) return true; return false; } - final private boolean jj_3_1387() { + final private boolean jj_3_1389() { if (jj_scan_token(NAME)) return true; return false; } - final private boolean jj_3_1386() { + final private boolean jj_3_1388() { if (jj_scan_token(MONTHS)) return true; return false; } - final private boolean jj_3_1385() { + final private boolean jj_3_1387() { if (jj_scan_token(MILLISECOND)) return true; return false; } - final private boolean jj_3_1384() { + final private boolean jj_3_1386() { if (jj_scan_token(MESSAGE_TEXT)) return true; return false; } - final private boolean jj_3_306() { - if (jj_scan_token(FOLLOWING)) return true; - return false; - } - - final private boolean jj_3_1383() { + final private boolean jj_3_1385() { if (jj_scan_token(MAXVALUE)) return true; return false; } - final private boolean jj_3_1382() { + final private boolean jj_3_1384() { if (jj_scan_token(M)) return true; return false; } - final private boolean jj_3_1381() { + final private boolean jj_3_1383() { if (jj_scan_token(LEVEL)) return true; return false; } - final private boolean jj_3_1380() { + final private boolean jj_3_1382() { if (jj_scan_token(LABEL)) return true; return false; } - final private boolean jj_3_305() { - if (jj_scan_token(PRECEDING)) return true; + final private boolean jj_3_306() { + if (jj_scan_token(FOLLOWING)) return true; return false; } - final private boolean jj_3_1379() { + final private boolean jj_3_1381() { if (jj_scan_token(KEY)) return true; return false; } - final private boolean jj_3_1378() { + final private boolean jj_3_1380() { if (jj_scan_token(JAVA)) return true; return false; } - final private boolean jj_3_1377() { + final private boolean jj_3_1379() { if (jj_scan_token(ISODOW)) return true; return false; } - final private boolean jj_3_727() { + final private boolean jj_3_729() { if (jj_scan_token(DOUBLE)) return true; return false; } - final private boolean jj_3_729() { + final private boolean jj_3_731() { if (jj_scan_token(FLOAT)) return true; return false; } - final private boolean jj_3_1376() { + final private boolean jj_3_1378() { if (jj_scan_token(INSTANCE)) return true; return false; } - final private boolean jj_3_721() { + final private boolean jj_3_305() { + if (jj_scan_token(PRECEDING)) return true; + return false; + } + + final private boolean jj_3_723() { if (jj_scan_token(SMALLINT)) return true; return false; } - final private boolean jj_3_1375() { + final private boolean jj_3_1377() { if (jj_scan_token(INCREMENT)) return true; return false; } - final private boolean jj_3_717() { + final private boolean jj_3_719() { if (jj_scan_token(VARBINARY)) return true; return false; } - final private boolean jj_3_723() { + final private boolean jj_3_725() { if (jj_scan_token(BIGINT)) return true; return false; } - final private boolean jj_3_759() { + final private boolean jj_3_761() { if (jj_scan_token(SQL_INTERVAL_SECOND)) return true; return false; } - final private boolean jj_3_1374() { + final private boolean jj_3_1376() { if (jj_scan_token(IMPLEMENTATION)) return true; return false; } - final private boolean jj_3_309() { - if (jj_3R_82()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_305()) { - jj_scanpos = xsp; - if (jj_3_306()) return true; - } - return false; - } - - final private boolean jj_3_719() { + final private boolean jj_3_721() { if (jj_scan_token(TINYINT)) return true; return false; } - final private boolean jj_3_758() { + final private boolean jj_3_760() { if (jj_scan_token(SQL_INTERVAL_MINUTE_TO_SECOND)) return true; return false; } - final private boolean jj_3_1373() { + final private boolean jj_3_1375() { if (jj_scan_token(ILIKE)) return true; return false; } - final private boolean jj_3_304() { - if (jj_scan_token(FOLLOWING)) return true; - return false; - } - - final private boolean jj_3_725() { + final private boolean jj_3_727() { if (jj_scan_token(REAL)) return true; return false; } - final private boolean jj_3_757() { + final private boolean jj_3_759() { if (jj_scan_token(SQL_INTERVAL_MINUTE)) return true; return false; } - final private boolean jj_3_1372() { + final private boolean jj_3_1374() { if (jj_scan_token(HOP)) return true; return false; } - final private boolean jj_3_756() { + final private boolean jj_3_758() { if (jj_scan_token(SQL_INTERVAL_HOUR_TO_SECOND)) return true; return false; } - final private boolean jj_3_1371() { + final private boolean jj_3_1373() { if (jj_scan_token(GRANTED)) return true; return false; } - final private boolean jj_3_713() { + final private boolean jj_3_715() { if (jj_scan_token(INTEGER)) return true; return false; } - final private boolean jj_3_715() { + final private boolean jj_3_717() { if (jj_scan_token(BINARY)) return true; return false; } - final private boolean jj_3_755() { + final private boolean jj_3_757() { if (jj_scan_token(SQL_INTERVAL_HOUR_TO_MINUTE)) return true; return false; } - final private boolean jj_3_1370() { + final private boolean jj_3_1372() { if (jj_scan_token(GEOMETRY)) return true; return false; } - final private boolean jj_3_711() { + final private boolean jj_3_309() { + if (jj_3R_82()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_305()) { + jj_scanpos = xsp; + if (jj_3_306()) return true; + } + return false; + } + + final private boolean jj_3_713() { if (jj_scan_token(BOOLEAN)) return true; return false; } - final private boolean jj_3_754() { + final private boolean jj_3_756() { if (jj_scan_token(SQL_INTERVAL_HOUR)) return true; return false; } - final private boolean jj_3_1369() { + final private boolean jj_3_1371() { if (jj_scan_token(G)) return true; return false; } - final private boolean jj_3_303() { - if (jj_scan_token(PRECEDING)) return true; + final private boolean jj_3_304() { + if (jj_scan_token(FOLLOWING)) return true; return false; } - final private boolean jj_3_705() { + final private boolean jj_3_707() { if (jj_scan_token(TIMESTAMP)) return true; return false; } - final private boolean jj_3_709() { + final private boolean jj_3_711() { if (jj_scan_token(NUMERIC)) return true; return false; } - final private boolean jj_3_753() { + final private boolean jj_3_755() { if (jj_scan_token(SQL_INTERVAL_DAY_TO_SECOND)) return true; return false; } - final private boolean jj_3_1368() { + final private boolean jj_3_1370() { if (jj_scan_token(FORTRAN)) return true; return false; } - final private boolean jj_3_707() { + final private boolean jj_3_709() { if (jj_scan_token(DECIMAL)) return true; return false; } - final private boolean jj_3_752() { + final private boolean jj_3_754() { if (jj_scan_token(SQL_INTERVAL_DAY_TO_MINUTE)) return true; return false; } - final private boolean jj_3_1367() { + final private boolean jj_3_1369() { if (jj_scan_token(FIRST)) return true; return false; } - final private boolean jj_3_751() { + final private boolean jj_3_753() { if (jj_scan_token(SQL_INTERVAL_DAY_TO_HOUR)) return true; return false; } - final private boolean jj_3_1366() { + final private boolean jj_3_1368() { if (jj_scan_token(EXCLUDE)) return true; return false; } - final private boolean jj_3_750() { + final private boolean jj_3_752() { if (jj_scan_token(SQL_INTERVAL_DAY)) return true; return false; } - final private boolean jj_3_1365() { + final private boolean jj_3_1367() { if (jj_scan_token(EPOCH)) return true; return false; } - final private boolean jj_3_749() { + final private boolean jj_3_303() { + if (jj_scan_token(PRECEDING)) return true; + return false; + } + + final private boolean jj_3_751() { if (jj_scan_token(SQL_INTERVAL_MONTH)) return true; return false; } - final private boolean jj_3_1364() { + final private boolean jj_3_1366() { if (jj_scan_token(DYNAMIC_FUNCTION)) return true; return false; } - final private boolean jj_3_699() { + final private boolean jj_3_701() { if (jj_scan_token(VARCHAR)) return true; return false; } - final private boolean jj_3_748() { + final private boolean jj_3_750() { if (jj_scan_token(SQL_INTERVAL_YEAR_TO_MONTH)) return true; return false; } - final private boolean jj_3_1363() { + final private boolean jj_3_1365() { if (jj_scan_token(DOW)) return true; return false; } - final private boolean jj_3_703() { + final private boolean jj_3_705() { if (jj_scan_token(TIME)) return true; return false; } - final private boolean jj_3_728() { + final private boolean jj_3_730() { if (jj_scan_token(SQL_FLOAT)) return true; return false; } - final private boolean jj_3_747() { + final private boolean jj_3_749() { if (jj_scan_token(SQL_INTERVAL_YEAR)) return true; return false; } - final private boolean jj_3_1362() { + final private boolean jj_3_1364() { if (jj_scan_token(DIAGNOSTICS)) return true; return false; } - final private boolean jj_3_308() { - if (jj_scan_token(UNBOUNDED)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_303()) { - jj_scanpos = xsp; - if (jj_3_304()) return true; - } - return false; - } - - final private boolean jj_3_701() { + final private boolean jj_3_703() { if (jj_scan_token(DATE)) return true; return false; } - final private boolean jj_3_726() { + final private boolean jj_3_728() { if (jj_scan_token(SQL_DOUBLE)) return true; return false; } - final private boolean jj_3_746() { + final private boolean jj_3_748() { Token xsp; xsp = jj_scanpos; - if (jj_3_728()) { + if (jj_3_730()) { jj_scanpos = xsp; - if (jj_3_729()) return true; + if (jj_3_731()) return true; } return false; } - final private boolean jj_3_1361() { + final private boolean jj_3_1363() { if (jj_scan_token(DESC)) return true; return false; } - final private boolean jj_3_724() { + final private boolean jj_3_726() { if (jj_scan_token(SQL_REAL)) return true; return false; } - final private boolean jj_3_745() { + final private boolean jj_3_747() { Token xsp; xsp = jj_scanpos; - if (jj_3_726()) { + if (jj_3_728()) { jj_scanpos = xsp; - if (jj_3_727()) return true; + if (jj_3_729()) return true; } return false; } - final private boolean jj_3_1360() { + final private boolean jj_3_1362() { if (jj_scan_token(DEGREE)) return true; return false; } - final private boolean jj_3_697() { + final private boolean jj_3_699() { if (jj_scan_token(CHAR)) return true; return false; } - final private boolean jj_3_722() { + final private boolean jj_3_724() { if (jj_scan_token(SQL_BIGINT)) return true; return false; } - final private boolean jj_3_744() { + final private boolean jj_3_746() { Token xsp; xsp = jj_scanpos; - if (jj_3_724()) { + if (jj_3_726()) { jj_scanpos = xsp; - if (jj_3_725()) return true; + if (jj_3_727()) return true; } return false; } - final private boolean jj_3_1359() { + final private boolean jj_3_1361() { if (jj_scan_token(DEFERRED)) return true; return false; } - final private boolean jj_3_720() { + final private boolean jj_3_722() { if (jj_scan_token(SQL_SMALLINT)) return true; return false; } - final private boolean jj_3_743() { + final private boolean jj_3_745() { Token xsp; xsp = jj_scanpos; - if (jj_3_722()) { + if (jj_3_724()) { jj_scanpos = xsp; - if (jj_3_723()) return true; + if (jj_3_725()) return true; } return false; } - final private boolean jj_3_1358() { + final private boolean jj_3_1360() { if (jj_scan_token(DECADE)) return true; return false; } - final private boolean jj_3_718() { - if (jj_scan_token(SQL_TINYINT)) return true; - return false; - } - - final private boolean jj_3_742() { + final private boolean jj_3_308() { + if (jj_scan_token(UNBOUNDED)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_720()) { + if (jj_3_303()) { jj_scanpos = xsp; - if (jj_3_721()) return true; + if (jj_3_304()) return true; } return false; } - final private boolean jj_3R_185() { + final private boolean jj_3_720() { + if (jj_scan_token(SQL_TINYINT)) return true; + return false; + } + + final private boolean jj_3_744() { Token xsp; xsp = jj_scanpos; - if (jj_3_307()) { - jj_scanpos = xsp; - if (jj_3_308()) { + if (jj_3_722()) { jj_scanpos = xsp; - if (jj_3_309()) return true; - } + if (jj_3_723()) return true; } return false; } - final private boolean jj_3_1357() { + final private boolean jj_3_1359() { if (jj_scan_token(DAYOFWEEK)) return true; return false; } - final private boolean jj_3_307() { - if (jj_scan_token(CURRENT)) return true; - if (jj_scan_token(ROW)) return true; - return false; - } - - final private boolean jj_3_716() { + final private boolean jj_3_718() { if (jj_scan_token(SQL_VARBINARY)) return true; return false; } - final private boolean jj_3_741() { + final private boolean jj_3_743() { Token xsp; xsp = jj_scanpos; - if (jj_3_718()) { + if (jj_3_720()) { jj_scanpos = xsp; - if (jj_3_719()) return true; + if (jj_3_721()) return true; } return false; } - final private boolean jj_3_1356() { + final private boolean jj_3_1358() { if (jj_scan_token(DATETIME_INTERVAL_CODE)) return true; return false; } - final private boolean jj_3_714() { + final private boolean jj_3_716() { if (jj_scan_token(SQL_BINARY)) return true; return false; } - final private boolean jj_3_740() { + final private boolean jj_3_742() { Token xsp; xsp = jj_scanpos; - if (jj_3_716()) { + if (jj_3_718()) { jj_scanpos = xsp; - if (jj_3_717()) return true; + if (jj_3_719()) return true; } return false; } - final private boolean jj_3_1355() { + final private boolean jj_3_1357() { if (jj_scan_token(DATE_DIFF)) return true; return false; } - final private boolean jj_3_712() { + final private boolean jj_3_714() { if (jj_scan_token(SQL_INTEGER)) return true; return false; } - final private boolean jj_3_739() { + final private boolean jj_3_741() { Token xsp; xsp = jj_scanpos; - if (jj_3_714()) { + if (jj_3_716()) { jj_scanpos = xsp; - if (jj_3_715()) return true; + if (jj_3_717()) return true; } return false; } - final private boolean jj_3_1354() { + final private boolean jj_3_1356() { if (jj_scan_token(CURSOR_NAME)) return true; return false; } - final private boolean jj_3_710() { + final private boolean jj_3_712() { if (jj_scan_token(SQL_BOOLEAN)) return true; return false; } - final private boolean jj_3_738() { + final private boolean jj_3_740() { Token xsp; xsp = jj_scanpos; - if (jj_3_712()) { + if (jj_3_714()) { jj_scanpos = xsp; - if (jj_3_713()) return true; + if (jj_3_715()) return true; } return false; } - final private boolean jj_3_1353() { + final private boolean jj_3R_185() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_307()) { + jj_scanpos = xsp; + if (jj_3_308()) { + jj_scanpos = xsp; + if (jj_3_309()) return true; + } + } + return false; + } + + final private boolean jj_3_1355() { if (jj_scan_token(CONSTRUCTOR)) return true; return false; } - final private boolean jj_3_708() { + final private boolean jj_3_307() { + if (jj_scan_token(CURRENT)) return true; + if (jj_scan_token(ROW)) return true; + return false; + } + + final private boolean jj_3_710() { if (jj_scan_token(SQL_NUMERIC)) return true; return false; } - final private boolean jj_3_737() { + final private boolean jj_3_739() { Token xsp; xsp = jj_scanpos; - if (jj_3_710()) { + if (jj_3_712()) { jj_scanpos = xsp; - if (jj_3_711()) return true; + if (jj_3_713()) return true; } return false; } - final private boolean jj_3_1352() { + final private boolean jj_3_1354() { if (jj_scan_token(CONSTRAINT_NAME)) return true; return false; } - final private boolean jj_3_706() { + final private boolean jj_3_708() { if (jj_scan_token(SQL_DECIMAL)) return true; return false; } - final private boolean jj_3_736() { + final private boolean jj_3_738() { Token xsp; xsp = jj_scanpos; - if (jj_3_708()) { + if (jj_3_710()) { jj_scanpos = xsp; - if (jj_3_709()) return true; + if (jj_3_711()) return true; } return false; } - final private boolean jj_3_1351() { + final private boolean jj_3_1353() { if (jj_scan_token(CONNECTION)) return true; return false; } - final private boolean jj_3_704() { + final private boolean jj_3_706() { if (jj_scan_token(SQL_TIMESTAMP)) return true; return false; } - final private boolean jj_3_735() { + final private boolean jj_3_737() { Token xsp; xsp = jj_scanpos; - if (jj_3_706()) { + if (jj_3_708()) { jj_scanpos = xsp; - if (jj_3_707()) return true; + if (jj_3_709()) return true; } return false; } - final private boolean jj_3_1350() { + final private boolean jj_3_1352() { if (jj_scan_token(COMMITTED)) return true; return false; } - final private boolean jj_3_702() { + final private boolean jj_3_704() { if (jj_scan_token(SQL_TIME)) return true; return false; } - final private boolean jj_3_734() { + final private boolean jj_3_736() { Token xsp; xsp = jj_scanpos; - if (jj_3_704()) { + if (jj_3_706()) { jj_scanpos = xsp; - if (jj_3_705()) return true; + if (jj_3_707()) return true; } return false; } - final private boolean jj_3_1349() { + final private boolean jj_3_1351() { if (jj_scan_token(COLUMN_NAME)) return true; return false; } - final private boolean jj_3_700() { + final private boolean jj_3_702() { if (jj_scan_token(SQL_DATE)) return true; return false; } - final private boolean jj_3_733() { + final private boolean jj_3_735() { Token xsp; xsp = jj_scanpos; - if (jj_3_702()) { + if (jj_3_704()) { jj_scanpos = xsp; - if (jj_3_703()) return true; + if (jj_3_705()) return true; } return false; } - final private boolean jj_3_1348() { + final private boolean jj_3_1350() { if (jj_scan_token(COLLATION_CATALOG)) return true; return false; } - final private boolean jj_3_691() { + final private boolean jj_3_693() { if (jj_scan_token(NUMERIC)) return true; return false; } - final private boolean jj_3_698() { + final private boolean jj_3_700() { if (jj_scan_token(SQL_VARCHAR)) return true; return false; } - final private boolean jj_3_732() { + final private boolean jj_3_734() { Token xsp; xsp = jj_scanpos; - if (jj_3_700()) { + if (jj_3_702()) { jj_scanpos = xsp; - if (jj_3_701()) return true; + if (jj_3_703()) return true; } return false; } - final private boolean jj_3_1347() { + final private boolean jj_3_1349() { if (jj_scan_token(CLASS_ORIGIN)) return true; return false; } - final private boolean jj_3_696() { + final private boolean jj_3_698() { if (jj_scan_token(SQL_CHAR)) return true; return false; } - final private boolean jj_3_731() { + final private boolean jj_3_733() { Token xsp; xsp = jj_scanpos; - if (jj_3_698()) { + if (jj_3_700()) { jj_scanpos = xsp; - if (jj_3_699()) return true; + if (jj_3_701()) return true; } return false; } - final private boolean jj_3_1346() { + final private boolean jj_3_1348() { if (jj_scan_token(CHARACTER_SET_CATALOG)) return true; return false; } - final private boolean jj_3_730() { + final private boolean jj_3_732() { Token xsp; xsp = jj_scanpos; - if (jj_3_696()) { + if (jj_3_698()) { jj_scanpos = xsp; - if (jj_3_697()) return true; + if (jj_3_699()) return true; } return false; } - final private boolean jj_3_1345() { + final private boolean jj_3_1347() { if (jj_scan_token(CHAIN)) return true; return false; } - final private boolean jj_3_1344() { + final private boolean jj_3_1346() { if (jj_scan_token(CATALOG)) return true; return false; } - final private boolean jj_3_1343() { + final private boolean jj_3_1345() { if (jj_scan_token(BREADTH)) return true; return false; } - final private boolean jj_3_302() { - if (jj_scan_token(DISALLOW)) return true; - if (jj_scan_token(PARTIAL)) return true; - return false; - } - - final private boolean jj_3_1342() { + final private boolean jj_3_1344() { if (jj_scan_token(ATTRIBUTES)) return true; return false; } - final private boolean jj_3_1341() { + final private boolean jj_3_1343() { if (jj_scan_token(ASSERTION)) return true; return false; } - final private boolean jj_3_1340() { + final private boolean jj_3_1342() { if (jj_scan_token(ARRAY_AGG)) return true; return false; } - final private boolean jj_3_690() { + final private boolean jj_3_692() { if (jj_scan_token(DEC)) return true; return false; } - final private boolean jj_3_1339() { + final private boolean jj_3_1341() { if (jj_scan_token(AFTER)) return true; return false; } - final private boolean jj_3_301() { - if (jj_scan_token(ALLOW)) return true; + final private boolean jj_3_302() { + if (jj_scan_token(DISALLOW)) return true; if (jj_scan_token(PARTIAL)) return true; return false; } - final private boolean jj_3_694() { + final private boolean jj_3_696() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_257()) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3_1338() { + final private boolean jj_3_1340() { if (jj_scan_token(ADA)) return true; return false; } - final private boolean jj_3_1337() { + final private boolean jj_3_1339() { if (jj_scan_token(ABSENT)) return true; return false; } - final private boolean jj_3_299() { - if (jj_3R_185()) return true; + final private boolean jj_3_301() { + if (jj_scan_token(ALLOW)) return true; + if (jj_scan_token(PARTIAL)) return true; return false; } - final private boolean jj_3R_338() { + final private boolean jj_3R_340() { Token xsp; xsp = jj_scanpos; - if (jj_3_1337()) { - jj_scanpos = xsp; - if (jj_3_1338()) { - jj_scanpos = xsp; if (jj_3_1339()) { jj_scanpos = xsp; if (jj_3_1340()) { @@ -36543,7 +36542,11 @@ final private boolean jj_3R_338() { jj_scanpos = xsp; if (jj_3_1554()) { jj_scanpos = xsp; - if (jj_3_1555()) return true; + if (jj_3_1555()) { + jj_scanpos = xsp; + if (jj_3_1556()) { + jj_scanpos = xsp; + if (jj_3_1557()) return true; } } } @@ -36765,572 +36768,567 @@ final private boolean jj_3R_338() { return false; } - final private boolean jj_3_695() { + final private boolean jj_3_697() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_257()) return true; + if (jj_3R_259()) return true; return false; } - final private boolean jj_3_298() { - if (jj_scan_token(BETWEEN)) return true; + final private boolean jj_3_299() { if (jj_3R_185()) return true; return false; } - final private boolean jj_3_693() { + final private boolean jj_3_695() { if (jj_scan_token(ANY)) return true; return false; } - final private boolean jj_3_689() { + final private boolean jj_3_691() { if (jj_scan_token(DECIMAL)) return true; return false; } - final private boolean jj_3_1336() { + final private boolean jj_3_1338() { if (jj_scan_token(SUNDAY)) return true; return false; } - final private boolean jj_3_297() { - if (jj_scan_token(RANGE)) return true; - return false; - } - - final private boolean jj_3_692() { + final private boolean jj_3_694() { Token xsp; xsp = jj_scanpos; - if (jj_3_689()) { + if (jj_3_691()) { jj_scanpos = xsp; - if (jj_3_690()) { + if (jj_3_692()) { jj_scanpos = xsp; - if (jj_3_691()) return true; + if (jj_3_693()) return true; } } return false; } - final private boolean jj_3_1335() { + final private boolean jj_3_1337() { if (jj_scan_token(THURSDAY)) return true; return false; } - final private boolean jj_3_1334() { - if (jj_scan_token(MONDAY)) return true; + final private boolean jj_3_298() { + if (jj_scan_token(BETWEEN)) return true; + if (jj_3R_185()) return true; return false; } - final private boolean jj_3_296() { - if (jj_scan_token(ROWS)) return true; + final private boolean jj_3_1336() { + if (jj_scan_token(MONDAY)) return true; return false; } - final private boolean jj_3_1333() { + final private boolean jj_3_1335() { if (jj_scan_token(WITHIN)) return true; return false; } - final private boolean jj_3_1332() { + final private boolean jj_3_1334() { if (jj_scan_token(WHENEVER)) return true; return false; } - final private boolean jj_3R_280() { + final private boolean jj_3_297() { + if (jj_scan_token(RANGE)) return true; + return false; + } + + final private boolean jj_3R_282() { Token xsp; xsp = jj_scanpos; - if (jj_3_692()) { + if (jj_3_694()) { jj_scanpos = xsp; - if (jj_3_693()) return true; + if (jj_3_695()) return true; } xsp = jj_scanpos; - if (jj_3_695()) jj_scanpos = xsp; + if (jj_3_697()) jj_scanpos = xsp; return false; } - final private boolean jj_3_1331() { + final private boolean jj_3_1333() { if (jj_scan_token(VAR_POP)) return true; return false; } - final private boolean jj_3_1330() { + final private boolean jj_3_1332() { if (jj_scan_token(VARBINARY)) return true; return false; } - final private boolean jj_3_1329() { - if (jj_scan_token(UPSERT)) return true; + final private boolean jj_3_296() { + if (jj_scan_token(ROWS)) return true; return false; } - final private boolean jj_3_300() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_296()) { - jj_scanpos = xsp; - if (jj_3_297()) return true; - } - xsp = jj_scanpos; - if (jj_3_298()) { - jj_scanpos = xsp; - if (jj_3_299()) return true; - } + final private boolean jj_3_1331() { + if (jj_scan_token(UPSERT)) return true; return false; } - final private boolean jj_3_1328() { + final private boolean jj_3_1330() { if (jj_scan_token(UNKNOWN)) return true; return false; } - final private boolean jj_3_1327() { + final private boolean jj_3_1329() { if (jj_scan_token(TRY_CAST)) return true; return false; } - final private boolean jj_3_1326() { + final private boolean jj_3_1328() { if (jj_scan_token(TRIM)) return true; return false; } - final private boolean jj_3_1325() { + final private boolean jj_3_1327() { if (jj_scan_token(TRANSLATION)) return true; return false; } - final private boolean jj_3_295() { - if (jj_3R_71()) return true; + final private boolean jj_3_300() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_296()) { + jj_scanpos = xsp; + if (jj_3_297()) return true; + } + xsp = jj_scanpos; + if (jj_3_298()) { + jj_scanpos = xsp; + if (jj_3_299()) return true; + } return false; } - final private boolean jj_3_1324() { + final private boolean jj_3_1326() { if (jj_scan_token(TINYINT)) return true; return false; } - final private boolean jj_3_1323() { + final private boolean jj_3_1325() { if (jj_scan_token(TIMESTAMP)) return true; return false; } - final private boolean jj_3_1322() { + final private boolean jj_3_1324() { if (jj_scan_token(SYSTEM_USER)) return true; return false; } - final private boolean jj_3_1321() { + final private boolean jj_3_1323() { if (jj_scan_token(SUM)) return true; return false; } - final private boolean jj_3R_283() { + final private boolean jj_3_295() { + if (jj_3R_71()) return true; return false; } - final private boolean jj_3_1320() { - if (jj_scan_token(SUBSTRING)) return true; + final private boolean jj_3R_285() { return false; } - final private boolean jj_3_1319() { - if (jj_scan_token(STREAM)) return true; + final private boolean jj_3_1322() { + if (jj_scan_token(SUBSTRING)) return true; return false; } - final private boolean jj_3_294() { - if (jj_scan_token(PARTITION)) return true; - if (jj_scan_token(BY)) return true; + final private boolean jj_3_1321() { + if (jj_scan_token(STREAM)) return true; return false; } - final private boolean jj_3_688() { + final private boolean jj_3_690() { if (jj_scan_token(VARBINARY)) return true; return false; } - final private boolean jj_3_1318() { + final private boolean jj_3_1320() { if (jj_scan_token(STATIC)) return true; return false; } - final private boolean jj_3_686() { + final private boolean jj_3_688() { if (jj_scan_token(VARYING)) return true; return false; } - final private boolean jj_3_1317() { + final private boolean jj_3_1319() { if (jj_scan_token(SQLWARNING)) return true; return false; } - final private boolean jj_3R_403() { + final private boolean jj_3_1318() { + if (jj_scan_token(SQL)) return true; return false; } - final private boolean jj_3_1316() { - if (jj_scan_token(SQL)) return true; + final private boolean jj_3_1317() { + if (jj_scan_token(SMALLINT)) return true; return false; } - final private boolean jj_3_1315() { - if (jj_scan_token(SMALLINT)) return true; + final private boolean jj_3_294() { + if (jj_scan_token(PARTITION)) return true; + if (jj_scan_token(BY)) return true; return false; } - final private boolean jj_3_293() { - if (jj_3R_85()) return true; + final private boolean jj_3_1316() { + if (jj_scan_token(SHOW)) return true; return false; } - final private boolean jj_3_1314() { - if (jj_scan_token(SHOW)) return true; + final private boolean jj_3_1315() { + if (jj_scan_token(SEEK)) return true; return false; } - final private boolean jj_3_1313() { - if (jj_scan_token(SEEK)) return true; + final private boolean jj_3R_405() { return false; } - final private boolean jj_3_1312() { + final private boolean jj_3_1314() { if (jj_scan_token(SCROLL)) return true; return false; } - final private boolean jj_3_687() { + final private boolean jj_3_689() { if (jj_scan_token(BINARY)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_686()) { + if (jj_3_688()) { jj_scanpos = xsp; - if (jj_3R_283()) return true; + if (jj_3R_285()) return true; } return false; } - final private boolean jj_3_1311() { + final private boolean jj_3_1313() { if (jj_scan_token(SAFE_ORDINAL)) return true; return false; } - final private boolean jj_3_1310() { - if (jj_scan_token(RUNNING)) return true; + final private boolean jj_3_293() { + if (jj_3R_85()) return true; return false; } - final private boolean jj_3R_327() { - if (jj_scan_token(LPAREN)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_293()) { - jj_scanpos = xsp; - if (jj_3R_403()) return true; - } + final private boolean jj_3_1312() { + if (jj_scan_token(RUNNING)) return true; return false; } - final private boolean jj_3_1309() { + final private boolean jj_3_1311() { if (jj_scan_token(ROLLUP)) return true; return false; } - final private boolean jj_3_1308() { + final private boolean jj_3_1310() { if (jj_scan_token(RETURNS)) return true; return false; } - final private boolean jj_3R_279() { + final private boolean jj_3R_281() { Token xsp; xsp = jj_scanpos; - if (jj_3_687()) { + if (jj_3_689()) { jj_scanpos = xsp; - if (jj_3_688()) return true; + if (jj_3_690()) return true; } - if (jj_3R_256()) return true; + if (jj_3R_258()) return true; return false; } - final private boolean jj_3_1307() { + final private boolean jj_3_1309() { if (jj_scan_token(RESET)) return true; return false; } - final private boolean jj_3_1306() { + final private boolean jj_3_1308() { if (jj_scan_token(REGR_SXY)) return true; return false; } - final private boolean jj_3_1305() { + final private boolean jj_3R_329() { + if (jj_scan_token(LPAREN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_293()) { + jj_scanpos = xsp; + if (jj_3R_405()) return true; + } + return false; + } + + final private boolean jj_3_1307() { if (jj_scan_token(REGR_R2)) return true; return false; } - final private boolean jj_3_1304() { + final private boolean jj_3_1306() { if (jj_scan_token(REGR_AVGY)) return true; return false; } - final private boolean jj_3_1303() { + final private boolean jj_3_1305() { if (jj_scan_token(REFERENCES)) return true; return false; } - final private boolean jj_3_1302() { + final private boolean jj_3_1304() { if (jj_scan_token(REAL)) return true; return false; } - final private boolean jj_3_1301() { + final private boolean jj_3_1303() { if (jj_scan_token(RANGE)) return true; return false; } - final private boolean jj_3_1300() { + final private boolean jj_3_1302() { if (jj_scan_token(PREV)) return true; return false; } - final private boolean jj_3_1299() { + final private boolean jj_3_1301() { if (jj_scan_token(PRECEDES)) return true; return false; } - final private boolean jj_3_1298() { + final private boolean jj_3_1300() { if (jj_scan_token(POSITION)) return true; return false; } - final private boolean jj_3_675() { + final private boolean jj_3_677() { if (jj_scan_token(INT)) return true; return false; } - final private boolean jj_3_1297() { + final private boolean jj_3_1299() { if (jj_scan_token(PERIOD)) return true; return false; } - final private boolean jj_3_676() { + final private boolean jj_3_678() { if (jj_scan_token(PRECISION)) return true; return false; } - final private boolean jj_3_685() { + final private boolean jj_3_687() { if (jj_scan_token(FLOAT)) return true; return false; } - final private boolean jj_3_1296() { + final private boolean jj_3_1298() { if (jj_scan_token(PERCENTILE_CONT)) return true; return false; } - final private boolean jj_3_1295() { + final private boolean jj_3_1297() { if (jj_scan_token(PATTERN)) return true; return false; } - final private boolean jj_3_1294() { + final private boolean jj_3_1296() { if (jj_scan_token(OVERLAPS)) return true; return false; } - final private boolean jj_3_684() { + final private boolean jj_3_686() { if (jj_scan_token(DOUBLE)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_676()) jj_scanpos = xsp; + if (jj_3_678()) jj_scanpos = xsp; return false; } - final private boolean jj_3_1293() { + final private boolean jj_3_1295() { if (jj_scan_token(ORDINAL)) return true; return false; } - final private boolean jj_3_1292() { + final private boolean jj_3_1294() { if (jj_scan_token(ONE)) return true; return false; } - final private boolean jj_3_683() { + final private boolean jj_3_685() { if (jj_scan_token(REAL)) return true; return false; } - final private boolean jj_3_1291() { + final private boolean jj_3_1293() { if (jj_scan_token(OF)) return true; return false; } - final private boolean jj_3_1290() { + final private boolean jj_3_1292() { if (jj_scan_token(NUMERIC)) return true; return false; } - final private boolean jj_3_682() { + final private boolean jj_3_684() { if (jj_scan_token(BIGINT)) return true; return false; } - final private boolean jj_3R_184() { - if (jj_3R_85()) return true; - return false; - } - - final private boolean jj_3_1289() { + final private boolean jj_3_1291() { if (jj_scan_token(NTH_VALUE)) return true; return false; } - final private boolean jj_3_1288() { + final private boolean jj_3_1290() { if (jj_scan_token(NO)) return true; return false; } - final private boolean jj_3_681() { + final private boolean jj_3_683() { if (jj_scan_token(SMALLINT)) return true; return false; } - final private boolean jj_3_1287() { + final private boolean jj_3_1289() { if (jj_scan_token(NCLOB)) return true; return false; } - final private boolean jj_3_1286() { + final private boolean jj_3_1288() { if (jj_scan_token(MULTISET)) return true; return false; } - final private boolean jj_3_674() { + final private boolean jj_3_676() { if (jj_scan_token(INTEGER)) return true; return false; } - final private boolean jj_3_680() { + final private boolean jj_3_682() { if (jj_scan_token(TINYINT)) return true; return false; } - final private boolean jj_3_1285() { + final private boolean jj_3R_184() { + if (jj_3R_85()) return true; + return false; + } + + final private boolean jj_3_1287() { if (jj_scan_token(MODIFIES)) return true; return false; } - final private boolean jj_3_1284() { + final private boolean jj_3_1286() { if (jj_scan_token(MIN)) return true; return false; } - final private boolean jj_3_679() { + final private boolean jj_3_681() { Token xsp; xsp = jj_scanpos; - if (jj_3_674()) { + if (jj_3_676()) { jj_scanpos = xsp; - if (jj_3_675()) return true; + if (jj_3_677()) return true; } return false; } - final private boolean jj_3_1283() { + final private boolean jj_3_1285() { if (jj_scan_token(MEASURES)) return true; return false; } - final private boolean jj_3_1282() { + final private boolean jj_3_1284() { if (jj_scan_token(MATCH_NUMBER)) return true; return false; } - final private boolean jj_3_678() { + final private boolean jj_3_680() { if (jj_scan_token(BOOLEAN)) return true; return false; } - final private boolean jj_3_1281() { + final private boolean jj_3_1283() { if (jj_scan_token(LOWER)) return true; return false; } - final private boolean jj_3_1280() { + final private boolean jj_3_1282() { if (jj_scan_token(LIKE_REGEX)) return true; return false; } - final private boolean jj_3_1279() { + final private boolean jj_3_1281() { if (jj_scan_token(LAST_VALUE)) return true; return false; } - final private boolean jj_3_292() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_184()) return true; - return false; - } - - final private boolean jj_3_1278() { + final private boolean jj_3_1280() { if (jj_scan_token(LAG)) return true; return false; } - final private boolean jj_3_1277() { + final private boolean jj_3_1279() { if (jj_scan_token(JSON_QUERY)) return true; return false; } - final private boolean jj_3_1276() { + final private boolean jj_3_1278() { if (jj_scan_token(JSON_EXISTS)) return true; return false; } - final private boolean jj_3_1275() { + final private boolean jj_3_1277() { if (jj_scan_token(INTERSECTION)) return true; return false; } - final private boolean jj_3_1274() { - if (jj_scan_token(INSENSITIVE)) return true; + final private boolean jj_3_292() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_184()) return true; return false; } - final private boolean jj_3_677() { - if (jj_scan_token(GEOMETRY)) return true; + final private boolean jj_3_1276() { + if (jj_scan_token(INSENSITIVE)) return true; return false; } - final private boolean jj_3_1273() { - if (jj_scan_token(INDICATOR)) return true; + final private boolean jj_3_679() { + if (jj_scan_token(GEOMETRY)) return true; return false; } - final private boolean jj_3R_147() { - if (jj_scan_token(WINDOW)) return true; - if (jj_3R_184()) return true; + final private boolean jj_3_1275() { + if (jj_scan_token(INDICATOR)) return true; return false; } - final private boolean jj_3_1272() { + final private boolean jj_3_1274() { if (jj_scan_token(HOUR)) return true; return false; } - final private boolean jj_3_1271() { + final private boolean jj_3_1273() { if (jj_scan_token(GROUPING)) return true; return false; } - final private boolean jj_3_1270() { + final private boolean jj_3_1272() { if (jj_scan_token(GET)) return true; return false; } - final private boolean jj_3R_278() { + final private boolean jj_3R_280() { Token xsp; xsp = jj_scanpos; - if (jj_3_677()) { - jj_scanpos = xsp; - if (jj_3_678()) { - jj_scanpos = xsp; if (jj_3_679()) { jj_scanpos = xsp; if (jj_3_680()) { @@ -37343,7 +37341,11 @@ final private boolean jj_3R_278() { jj_scanpos = xsp; if (jj_3_684()) { jj_scanpos = xsp; - if (jj_3_685()) return true; + if (jj_3_685()) { + jj_scanpos = xsp; + if (jj_3_686()) { + jj_scanpos = xsp; + if (jj_3_687()) return true; } } } @@ -37355,180 +37357,176 @@ final private boolean jj_3R_278() { return false; } - final private boolean jj_3_1269() { + final private boolean jj_3_1271() { if (jj_scan_token(FREE)) return true; return false; } - final private boolean jj_3_1268() { + final private boolean jj_3R_147() { + if (jj_scan_token(WINDOW)) return true; + if (jj_3R_184()) return true; + return false; + } + + final private boolean jj_3_1270() { if (jj_scan_token(FLOOR)) return true; return false; } - final private boolean jj_3_1267() { + final private boolean jj_3_1269() { if (jj_scan_token(FILTER)) return true; return false; } - final private boolean jj_3_1266() { + final private boolean jj_3_1268() { if (jj_scan_token(EXTEND)) return true; return false; } - final private boolean jj_3_1265() { + final private boolean jj_3_1267() { if (jj_scan_token(EXEC)) return true; return false; } - final private boolean jj_3_1264() { + final private boolean jj_3_1266() { if (jj_scan_token(EQUALS)) return true; return false; } - final private boolean jj_3_1263() { + final private boolean jj_3_1265() { if (jj_scan_token(END_EXEC)) return true; return false; } - final private boolean jj_3R_146() { - if (jj_scan_token(HAVING)) return true; - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3_1262() { + final private boolean jj_3_1264() { if (jj_scan_token(ELEMENT)) return true; return false; } - final private boolean jj_3_1261() { + final private boolean jj_3_1263() { if (jj_scan_token(DOUBLE)) return true; return false; } - final private boolean jj_3_1260() { + final private boolean jj_3_1262() { if (jj_scan_token(DETERMINISTIC)) return true; return false; } - final private boolean jj_3_1259() { + final private boolean jj_3_1261() { if (jj_scan_token(DENSE_RANK)) return true; return false; } - final private boolean jj_3_673() { - if (jj_3R_282()) return true; + final private boolean jj_3_675() { + if (jj_3R_284()) return true; return false; } - final private boolean jj_3_1258() { + final private boolean jj_3R_146() { + if (jj_scan_token(HAVING)) return true; + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3_1260() { if (jj_scan_token(DECIMAL)) return true; return false; } - final private boolean jj_3_1257() { + final private boolean jj_3_1259() { if (jj_scan_token(DAY)) return true; return false; } - final private boolean jj_3_672() { - if (jj_3R_281()) return true; + final private boolean jj_3_674() { + if (jj_3R_283()) return true; return false; } - final private boolean jj_3_1256() { + final private boolean jj_3_1258() { if (jj_scan_token(CYCLE)) return true; return false; } - final private boolean jj_3_1255() { + final private boolean jj_3_1257() { if (jj_scan_token(CURRENT_ROW)) return true; return false; } - final private boolean jj_3_291() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_79()) return true; - return false; - } - - final private boolean jj_3_671() { - if (jj_3R_280()) return true; + final private boolean jj_3_673() { + if (jj_3R_282()) return true; return false; } - final private boolean jj_3_1254() { + final private boolean jj_3_1256() { if (jj_scan_token(CURRENT_DEFAULT_TRANSFORM_GROUP)) return true; return false; } - final private boolean jj_3_1253() { + final private boolean jj_3_1255() { if (jj_scan_token(CUME_DIST)) return true; return false; } - final private boolean jj_3_670() { - if (jj_3R_279()) return true; + final private boolean jj_3_672() { + if (jj_3R_281()) return true; return false; } - final private boolean jj_3_1252() { + final private boolean jj_3_1254() { if (jj_scan_token(COVAR_POP)) return true; return false; } - final private boolean jj_3_1251() { + final private boolean jj_3_1253() { if (jj_scan_token(CORR)) return true; return false; } - final private boolean jj_3_669() { - if (jj_3R_278()) return true; + final private boolean jj_3_291() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_79()) return true; return false; } - final private boolean jj_3_1250() { - if (jj_scan_token(CONNECT)) return true; + final private boolean jj_3_671() { + if (jj_3R_280()) return true; return false; } - final private boolean jj_3_1249() { - if (jj_scan_token(COLLECT)) return true; + final private boolean jj_3_1252() { + if (jj_scan_token(CONNECT)) return true; return false; } - final private boolean jj_3_1248() { - if (jj_scan_token(CLOSE)) return true; + final private boolean jj_3_1251() { + if (jj_scan_token(COLLECT)) return true; return false; } - final private boolean jj_3R_394() { - if (jj_3R_79()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_291()) { jj_scanpos = xsp; break; } - } + final private boolean jj_3_1250() { + if (jj_scan_token(CLOSE)) return true; return false; } - final private boolean jj_3_1247() { + final private boolean jj_3_1249() { if (jj_scan_token(CHECK)) return true; return false; } - final private boolean jj_3R_275() { + final private boolean jj_3R_277() { Token xsp; xsp = jj_scanpos; - 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()) { jj_scanpos = xsp; - if (jj_3_673()) return true; + if (jj_3_673()) { + jj_scanpos = xsp; + if (jj_3_674()) { + jj_scanpos = xsp; + if (jj_3_675()) return true; } } } @@ -37536,339 +37534,355 @@ final private boolean jj_3R_275() { return false; } - final private boolean jj_3_1246() { + final private boolean jj_3_1248() { if (jj_scan_token(CHARACTER)) return true; return false; } - final private boolean jj_3_1245() { + final private boolean jj_3_1247() { if (jj_scan_token(CEIL)) return true; return false; } - final private boolean jj_3_1244() { + final private boolean jj_3_1246() { if (jj_scan_token(CALLED)) return true; return false; } - final private boolean jj_3R_287() { - if (jj_3R_398()) return true; + final private boolean jj_3R_396() { + if (jj_3R_79()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_291()) { jj_scanpos = xsp; break; } + } return false; } - final private boolean jj_3_1243() { + final private boolean jj_3_1245() { if (jj_scan_token(BLOB)) return true; return false; } - final private boolean jj_3_1242() { + final private boolean jj_3_1244() { if (jj_scan_token(BIGINT)) return true; return false; } - final private boolean jj_3_1241() { + final private boolean jj_3_1243() { if (jj_scan_token(BEGIN)) return true; return false; } - final private boolean jj_3_1240() { + final private boolean jj_3_1242() { if (jj_scan_token(ATOMIC)) return true; return false; } - final private boolean jj_3_1239() { + final private boolean jj_3_1241() { if (jj_scan_token(ARRAY_MAX_CARDINALITY)) return true; return false; } - final private boolean jj_3_1238() { + final private boolean jj_3_1240() { if (jj_scan_token(ALLOCATE)) return true; return false; } - final private boolean jj_3_1237() { + final private boolean jj_3_1239() { if (jj_scan_token(MAX_CHANGED_PARTITION_ROWS_PERCENT)) return true; return false; } - final private boolean jj_3_1236() { + final private boolean jj_3_1238() { if (jj_scan_token(STATISTICS)) return true; return false; } - final private boolean jj_3_1235() { + final private boolean jj_3_1237() { if (jj_scan_token(COMPUTE)) return true; return false; } - final private boolean jj_3_668() { + final private boolean jj_3_670() { if (jj_3R_151()) return true; return false; } - final private boolean jj_3R_233() { - if (jj_3R_394()) return true; - return false; - } - - final private boolean jj_3_1234() { + final private boolean jj_3_1236() { if (jj_scan_token(SCAN)) return true; return false; } - final private boolean jj_3_1233() { + final private boolean jj_3_1235() { if (jj_scan_token(NOLOGGING)) return true; return false; } - final private boolean jj_3R_353() { - if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} + final private boolean jj_3_1234() { + if (jj_scan_token(PARALLEL)) return true; return false; } - final private boolean jj_3_1232() { - if (jj_scan_token(PARALLEL)) return true; + final private boolean jj_3_669() { + if (jj_3R_279()) return true; return false; } - final private boolean jj_3_667() { - if (jj_3R_277()) return true; + final private boolean jj_3_1233() { + if (jj_scan_token(DATA_REGION)) return true; return false; } - final private boolean jj_3_1231() { - if (jj_scan_token(DATA_REGION)) return true; + final private boolean jj_3R_233() { + if (jj_3R_396()) return true; return false; } - final private boolean jj_3_1230() { + final private boolean jj_3_1232() { if (jj_scan_token(WRITE_SYNCHRONIZATION_MODE)) return true; return false; } - final private boolean jj_3_666() { - if (jj_3R_276()) return true; + final private boolean jj_3_668() { + if (jj_3R_278()) return true; return false; } - final private boolean jj_3_1229() { + final private boolean jj_3_1231() { if (jj_scan_token(BACKUPS)) return true; return false; } - final private boolean jj_3_1228() { + final private boolean jj_3_1230() { if (jj_scan_token(YEARS)) return true; return false; } - final private boolean jj_3_1227() { + final private boolean jj_3_1229() { if (jj_scan_token(WRAPPER)) return true; return false; } - final private boolean jj_3_665() { - if (jj_3R_275()) return true; + final private boolean jj_3_667() { + if (jj_3R_277()) return true; return false; } - final private boolean jj_3_1226() { + final private boolean jj_3_1228() { if (jj_scan_token(WEEK)) return true; return false; } - final private boolean jj_3_1225() { + final private boolean jj_3_1227() { if (jj_scan_token(UTF8)) return true; return false; } - final private boolean jj_3_1224() { + final private boolean jj_3_1226() { if (jj_scan_token(USER_DEFINED_TYPE_SCHEMA)) return true; return false; } - final private boolean jj_3R_342() { - if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} - return false; - } - - final private boolean jj_3_1223() { + final private boolean jj_3_1225() { if (jj_scan_token(USER_DEFINED_TYPE_CATALOG)) return true; return false; } - final private boolean jj_3R_356() { + final private boolean jj_3R_358() { Token xsp; xsp = jj_scanpos; - if (jj_3_665()) { + if (jj_3_667()) { jj_scanpos = xsp; - if (jj_3_666()) { + if (jj_3_668()) { jj_scanpos = xsp; - if (jj_3_667()) { + if (jj_3_669()) { jj_scanpos = xsp; - if (jj_3_668()) return true; + if (jj_3_670()) return true; } } } return false; } - final private boolean jj_3_1222() { + final private boolean jj_3_1224() { if (jj_scan_token(UNPIVOT)) return true; return false; } - final private boolean jj_3_1221() { + final private boolean jj_3_1223() { if (jj_scan_token(UNCOMMITTED)) return true; return false; } - final private boolean jj_3_290() { - if (jj_3R_79()) return true; - return false; - } - - final private boolean jj_3_1220() { + final private boolean jj_3_1222() { if (jj_scan_token(TUMBLE)) return true; return false; } - final private boolean jj_3_1219() { + final private boolean jj_3_1221() { if (jj_scan_token(TRIGGER_CATALOG)) return true; return false; } - final private boolean jj_3_1218() { + final private boolean jj_3_1220() { if (jj_scan_token(TRANSACTIONS_ROLLED_BACK)) return true; return false; } - final private boolean jj_3_1217() { + final private boolean jj_3_1219() { if (jj_scan_token(TRANSACTION)) return true; return false; } - final private boolean jj_3_289() { - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(RPAREN)) return true; + final private boolean jj_3_290() { + if (jj_3R_79()) return true; return false; } - final private boolean jj_3_1216() { + final private boolean jj_3_1218() { if (jj_scan_token(TIMESTAMP_DIFF)) return true; return false; } - final private boolean jj_3_1215() { + final private boolean jj_3_1217() { if (jj_scan_token(TIME_TRUNC)) return true; return false; } - final private boolean jj_3_1214() { + final private boolean jj_3_1216() { if (jj_scan_token(TEMPORARY)) return true; return false; } - final private boolean jj_3_1213() { + final private boolean jj_3_1215() { if (jj_scan_token(SUBCLASS_ORIGIN)) return true; return false; } - final private boolean jj_3R_409() { + final private boolean jj_3_289() { + if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(RPAREN)) return true; return false; } - final private boolean jj_3_1212() { + final private boolean jj_3_1214() { if (jj_scan_token(STRING_AGG)) return true; return false; } - final private boolean jj_3_1211() { + final private boolean jj_3_1213() { if (jj_scan_token(SQL_VARCHAR)) return true; return false; } - final private boolean jj_3_288() { - if (jj_scan_token(CUBE)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - - final private boolean jj_3_1210() { + final private boolean jj_3_1212() { if (jj_scan_token(SQL_TSI_WEEK)) return true; return false; } - final private boolean jj_3_664() { - if (jj_3R_274()) return true; + final private boolean jj_3_666() { + if (jj_3R_276()) return true; return false; } - final private boolean jj_3_1209() { + final private boolean jj_3_1211() { if (jj_scan_token(SQL_TSI_MONTH)) return true; return false; } - final private boolean jj_3_1208() { + final private boolean jj_3_1210() { if (jj_scan_token(SQL_TSI_HOUR)) return true; return false; } - final private boolean jj_3_1207() { + final private boolean jj_3_1209() { if (jj_scan_token(SQL_TINYINT)) return true; return false; } - final private boolean jj_3_1206() { - if (jj_scan_token(SQL_SMALLINT)) return true; + final private boolean jj_3_288() { + if (jj_scan_token(CUBE)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_1205() { - if (jj_scan_token(SQL_NUMERIC)) return true; + final private boolean jj_3_1208() { + if (jj_scan_token(SQL_SMALLINT)) return true; return false; } - final private boolean jj_3_287() { - if (jj_scan_token(ROLLUP)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3_1207() { + if (jj_scan_token(SQL_NUMERIC)) return true; return false; } - final private boolean jj_3_1204() { + final private boolean jj_3_1206() { if (jj_scan_token(SQL_LONGVARNCHAR)) return true; return false; } - final private boolean jj_3_1203() { + final private boolean jj_3_1205() { if (jj_scan_token(SQL_INTERVAL_YEAR_TO_MONTH)) return true; return false; } final private boolean jj_3R_119() { - if (jj_3R_356()) return true; + if (jj_3R_358()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_664()) { jj_scanpos = xsp; break; } + if (jj_3_666()) { jj_scanpos = xsp; break; } } return false; } - final private boolean jj_3_1202() { + final private boolean jj_3_1204() { if (jj_scan_token(SQL_INTERVAL_MONTH)) return true; return false; } - final private boolean jj_3_1201() { + final private boolean jj_3R_289() { + if (jj_3R_400()) return true; + return false; + } + + final private boolean jj_3_1203() { if (jj_scan_token(SQL_INTERVAL_HOUR_TO_SECOND)) return true; return false; } - final private boolean jj_3_1200() { + final private boolean jj_3_287() { + if (jj_scan_token(ROLLUP)) return true; + if (jj_scan_token(LPAREN)) return true; + return false; + } + + final private boolean jj_3_1202() { if (jj_scan_token(SQL_INTERVAL_DAY_TO_SECOND)) return true; return false; } + final private boolean jj_3_1201() { + if (jj_scan_token(SQL_INTERVAL_DAY)) return true; + return false; + } + + final private boolean jj_3_1200() { + if (jj_scan_token(SQL_DOUBLE)) return true; + return false; + } + + final private boolean jj_3_1199() { + if (jj_scan_token(SQL_CLOB)) return true; + return false; + } + + final private boolean jj_3_1198() { + if (jj_scan_token(SQL_BLOB)) return true; + return false; + } + final private boolean jj_3R_183() { Token xsp; xsp = jj_scanpos; @@ -37888,8 +37902,8 @@ final private boolean jj_3R_183() { return false; } - final private boolean jj_3_1199() { - if (jj_scan_token(SQL_INTERVAL_DAY)) return true; + final private boolean jj_3_1197() { + if (jj_scan_token(SQL_BIGINT)) return true; return false; } @@ -37899,532 +37913,515 @@ final private boolean jj_3_286() { return false; } - final private boolean jj_3R_173() { - if (jj_3R_372()) return true; - return false; - } - - final private boolean jj_3_1198() { - if (jj_scan_token(SQL_DOUBLE)) return true; - return false; - } - - final private boolean jj_3_1197() { - if (jj_scan_token(SQL_CLOB)) return true; - return false; - } - final private boolean jj_3_1196() { - if (jj_scan_token(SQL_BLOB)) return true; - return false; - } - - final private boolean jj_3_1195() { - if (jj_scan_token(SQL_BIGINT)) return true; - return false; - } - - final private boolean jj_3_1194() { if (jj_scan_token(SOURCE)) return true; return false; } - final private boolean jj_3_1193() { + final private boolean jj_3_1195() { if (jj_scan_token(SETS)) return true; return false; } - final private boolean jj_3_1192() { + final private boolean jj_3_1194() { if (jj_scan_token(SERVER)) return true; return false; } - final private boolean jj_3_1191() { + final private boolean jj_3_1193() { if (jj_scan_token(SEPARATOR)) return true; return false; } - final private boolean jj_3_1190() { - if (jj_scan_token(SECTION)) return true; + final private boolean jj_3R_355() { + if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} return false; } - final private boolean jj_3_285() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_183()) return true; + final private boolean jj_3_1192() { + if (jj_scan_token(SECTION)) return true; return false; } - final private boolean jj_3_1189() { + final private boolean jj_3_1191() { if (jj_scan_token(SCOPE_NAME)) return true; return false; } - final private boolean jj_3_1188() { + final private boolean jj_3_1190() { if (jj_scan_token(SCHEMA)) return true; return false; } - final private boolean jj_3_1187() { + final private boolean jj_3_1189() { if (jj_scan_token(ROW_COUNT)) return true; return false; } - final private boolean jj_3_1186() { + final private boolean jj_3_1188() { if (jj_scan_token(ROUTINE_CATALOG)) return true; return false; } - final private boolean jj_3_1185() { + final private boolean jj_3_285() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_183()) return true; + return false; + } + + final private boolean jj_3_1187() { if (jj_scan_token(RLIKE)) return true; return false; } - final private boolean jj_3_663() { + final private boolean jj_3_665() { if (jj_scan_token(MINUS)) return true; if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3_1184() { + final private boolean jj_3_1186() { if (jj_scan_token(RETURNED_OCTET_LENGTH)) return true; return false; } - final private boolean jj_3_1183() { + final private boolean jj_3_1185() { if (jj_scan_token(RESTRICT)) return true; return false; } - final private boolean jj_3_1182() { + final private boolean jj_3_1184() { if (jj_scan_token(REPLACE)) return true; return false; } - final private boolean jj_3_1181() { + final private boolean jj_3R_344() { + if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} + return false; + } + + final private boolean jj_3_1183() { if (jj_scan_token(READ)) return true; return false; } - final private boolean jj_3_1180() { + final private boolean jj_3_1182() { if (jj_scan_token(PUBLIC)) return true; return false; } - final private boolean jj_3_1179() { + final private boolean jj_3_1181() { if (jj_scan_token(PRESERVE)) return true; return false; } - final private boolean jj_3_1178() { + final private boolean jj_3_1180() { if (jj_scan_token(PLAN)) return true; return false; } - final private boolean jj_3_661() { + final private boolean jj_3_663() { if (jj_scan_token(PLUS)) return true; if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3_1177() { + final private boolean jj_3_1179() { if (jj_scan_token(PATH)) return true; return false; } - final private boolean jj_3_1176() { + final private boolean jj_3_1178() { if (jj_scan_token(PASSING)) return true; return false; } - final private boolean jj_3_660() { + final private boolean jj_3_662() { if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3_1175() { + final private boolean jj_3_1177() { if (jj_scan_token(PARAMETER_SPECIFIC_SCHEMA)) return true; return false; } - final private boolean jj_3_1174() { + final private boolean jj_3_1176() { if (jj_scan_token(PARAMETER_ORDINAL_POSITION)) return true; return false; } - final private boolean jj_3_1173() { + final private boolean jj_3_1175() { if (jj_scan_token(PAD)) return true; return false; } - final private boolean jj_3_284() { - if (jj_scan_token(ALL)) return true; - return false; - } - - final private boolean jj_3_1172() { + final private boolean jj_3_1174() { if (jj_scan_token(OTHERS)) return true; return false; } - final private boolean jj_3_283() { - if (jj_scan_token(DISTINCT)) return true; - return false; - } - - final private boolean jj_3_1171() { + final private boolean jj_3_1173() { if (jj_scan_token(OPTIONS)) return true; return false; } - final private boolean jj_3_662() { + final private boolean jj_3_664() { Token xsp; xsp = jj_scanpos; - if (jj_3_660()) { + if (jj_3_662()) { jj_scanpos = xsp; - if (jj_3_661()) return true; + if (jj_3_663()) return true; } return false; } - final private boolean jj_3_1170() { + final private boolean jj_3R_411() { + return false; + } + + final private boolean jj_3_1172() { if (jj_scan_token(OBJECT)) return true; return false; } - final private boolean jj_3_1169() { + final private boolean jj_3_1171() { if (jj_scan_token(NULLABLE)) return true; return false; } - final private boolean jj_3_1168() { + final private boolean jj_3_284() { + if (jj_scan_token(ALL)) return true; + return false; + } + + final private boolean jj_3_1170() { if (jj_scan_token(NANOSECOND)) return true; return false; } - final private boolean jj_3_1167() { - if (jj_scan_token(MUMPS)) return true; + final private boolean jj_3_283() { + if (jj_scan_token(DISTINCT)) return true; return false; } - final private boolean jj_3_1166() { - if (jj_scan_token(MINVALUE)) return true; + final private boolean jj_3_1169() { + if (jj_scan_token(MUMPS)) return true; return false; } - final private boolean jj_3R_145() { - if (jj_scan_token(GROUP)) return true; - if (jj_scan_token(BY)) return true; + final private boolean jj_3_1168() { + if (jj_scan_token(MINVALUE)) return true; return false; } - final private boolean jj_3_1165() { + final private boolean jj_3_1167() { if (jj_scan_token(MILLENNIUM)) return true; return false; } - final private boolean jj_3_1164() { + final private boolean jj_3_1166() { if (jj_scan_token(MESSAGE_OCTET_LENGTH)) return true; return false; } - final private boolean jj_3_1163() { + final private boolean jj_3_1165() { if (jj_scan_token(MATCHED)) return true; return false; } - final private boolean jj_3_1162() { + final private boolean jj_3_1164() { if (jj_scan_token(LOCATOR)) return true; return false; } - final private boolean jj_3_1161() { + final private boolean jj_3R_145() { + if (jj_scan_token(GROUP)) return true; + if (jj_scan_token(BY)) return true; + return false; + } + + final private boolean jj_3_1163() { if (jj_scan_token(LENGTH)) return true; return false; } - final private boolean jj_3_1160() { + final private boolean jj_3_1162() { if (jj_scan_token(KEY_TYPE)) return true; return false; } - final private boolean jj_3_1159() { + final private boolean jj_3_1161() { if (jj_scan_token(K)) return true; return false; } - final private boolean jj_3_1158() { + final private boolean jj_3_1160() { if (jj_scan_token(ISOYEAR)) return true; return false; } - final private boolean jj_3_1157() { + final private boolean jj_3_1159() { if (jj_scan_token(INVOKER)) return true; return false; } - final private boolean jj_3_1156() { + final private boolean jj_3R_173() { + if (jj_3R_374()) return true; + return false; + } + + final private boolean jj_3_1158() { if (jj_scan_token(INPUT)) return true; return false; } - final private boolean jj_3R_257() { + final private boolean jj_3R_259() { if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } - final private boolean jj_3_1155() { + final private boolean jj_3_1157() { if (jj_scan_token(INCLUDING)) return true; return false; } - final private boolean jj_3_1154() { + final private boolean jj_3_1156() { if (jj_scan_token(IMMEDIATELY)) return true; return false; } - final private boolean jj_3_1153() { + final private boolean jj_3_1155() { if (jj_scan_token(IGNORE)) return true; return false; } - final private boolean jj_3R_144() { - if (jj_scan_token(WHERE)) return true; - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3_1152() { + final private boolean jj_3_1154() { if (jj_scan_token(HIERARCHY)) return true; return false; } - final private boolean jj_3_1151() { + final private boolean jj_3_1153() { if (jj_scan_token(GOTO)) return true; return false; } - final private boolean jj_3_1150() { + final private boolean jj_3_1152() { if (jj_scan_token(GENERATED)) return true; return false; } - final private boolean jj_3_1149() { + final private boolean jj_3_1151() { if (jj_scan_token(FRAC_SECOND)) return true; return false; } - final private boolean jj_3_1148() { + final private boolean jj_3R_144() { + if (jj_scan_token(WHERE)) return true; + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3_1150() { if (jj_scan_token(FORMAT)) return true; return false; } - final private boolean jj_3_1147() { + final private boolean jj_3_1149() { if (jj_scan_token(FINAL)) return true; return false; } - final private boolean jj_3_1146() { + final private boolean jj_3_1148() { if (jj_scan_token(EXCEPTION)) return true; return false; } - final private boolean jj_3_1145() { + final private boolean jj_3_1147() { if (jj_scan_token(ENCODING)) return true; return false; } - final private boolean jj_3_1144() { + final private boolean jj_3_1146() { if (jj_scan_token(DOT_FORMAT)) return true; return false; } - final private boolean jj_3_1143() { + final private boolean jj_3_1145() { if (jj_scan_token(DOMAIN)) return true; return false; } - final private boolean jj_3_1142() { + final private boolean jj_3_1144() { if (jj_scan_token(DESCRIPTOR)) return true; return false; } final private boolean jj_3R_230() { if (jj_scan_token(NEW)) return true; - if (jj_3R_354()) return true; + if (jj_3R_356()) return true; return false; } - final private boolean jj_3_1141() { + final private boolean jj_3_1143() { if (jj_scan_token(DERIVED)) return true; return false; } - final private boolean jj_3_1140() { + final private boolean jj_3_1142() { if (jj_scan_token(DEFINER)) return true; return false; } - final private boolean jj_3_1139() { + final private boolean jj_3_1141() { if (jj_scan_token(DEFERRABLE)) return true; return false; } - final private boolean jj_3_1138() { + final private boolean jj_3_1140() { if (jj_scan_token(DAYS)) return true; return false; } - final private boolean jj_3_1137() { + final private boolean jj_3_1139() { if (jj_scan_token(DATETIME_TRUNC)) return true; return false; } - final private boolean jj_3_1136() { + final private boolean jj_3_1138() { if (jj_scan_token(DATETIME_DIFF)) return true; return false; } - final private boolean jj_3_1135() { + final private boolean jj_3_1137() { if (jj_scan_token(DATABASE)) return true; return false; } - final private boolean jj_3_1134() { + final private boolean jj_3_1136() { if (jj_scan_token(CONTINUE)) return true; return false; } - final private boolean jj_3_1133() { + final private boolean jj_3_1135() { if (jj_scan_token(CONSTRAINT_SCHEMA)) return true; return false; } - final private boolean jj_3_1132() { + final private boolean jj_3_1134() { if (jj_scan_token(CONSTRAINT_CATALOG)) return true; return false; } - final private boolean jj_3_1131() { + final private boolean jj_3_1133() { if (jj_scan_token(CONDITION_NUMBER)) return true; return false; } - final private boolean jj_3_1130() { + final private boolean jj_3_1132() { if (jj_scan_token(COMMAND_FUNCTION_CODE)) return true; return false; } - final private boolean jj_3_1129() { + final private boolean jj_3_1131() { if (jj_scan_token(COLLATION_SCHEMA)) return true; return false; } - final private boolean jj_3R_182() { + final private boolean jj_3_1130() { + if (jj_scan_token(COLLATION)) return true; return false; } - final private boolean jj_3_282() { - if (jj_3R_82()) return true; + final private boolean jj_3_1129() { + if (jj_scan_token(CHARACTER_SET_SCHEMA)) return true; return false; } final private boolean jj_3_1128() { - if (jj_scan_token(COLLATION)) return true; - return false; - } - - final private boolean jj_3_1127() { - if (jj_scan_token(CHARACTER_SET_SCHEMA)) return true; + if (jj_scan_token(CHARACTERS)) return true; return false; } - final private boolean jj_3_279() { - if (jj_scan_token(ROW)) return true; + final private boolean jj_3R_158() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_368()) return true; return false; } - final private boolean jj_3_1126() { - if (jj_scan_token(CHARACTERS)) return true; + final private boolean jj_3_1127() { + if (jj_scan_token(CENTURY)) return true; return false; } - final private boolean jj_3R_158() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_366()) return true; + final private boolean jj_3R_182() { return false; } - final private boolean jj_3_1125() { - if (jj_scan_token(CENTURY)) return true; + final private boolean jj_3_282() { + if (jj_3R_82()) return true; return false; } - final private boolean jj_3_1124() { + final private boolean jj_3_1126() { if (jj_scan_token(CASCADE)) return true; return false; } - final private boolean jj_3_1123() { + final private boolean jj_3_1125() { if (jj_scan_token(BERNOULLI)) return true; return false; } - final private boolean jj_3_1122() { - if (jj_scan_token(ATTRIBUTE)) return true; + final private boolean jj_3_279() { + if (jj_scan_token(ROW)) return true; return false; } - final private boolean jj_3_1121() { - if (jj_scan_token(ASC)) return true; + final private boolean jj_3_1124() { + if (jj_scan_token(ATTRIBUTE)) return true; return false; } - final private boolean jj_3_281() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_279()) { - jj_scanpos = xsp; - if (jj_3R_182()) return true; - } - if (jj_3R_181()) return true; + final private boolean jj_3_1123() { + if (jj_scan_token(ASC)) return true; return false; } - final private boolean jj_3_1120() { + final private boolean jj_3_1122() { if (jj_scan_token(APPLY)) return true; return false; } - final private boolean jj_3_1119() { + final private boolean jj_3_1121() { if (jj_scan_token(ADMIN)) return true; return false; } - final private boolean jj_3_1118() { + final private boolean jj_3_1120() { if (jj_scan_token(ACTION)) return true; return false; } - final private boolean jj_3_1117() { + final private boolean jj_3_1119() { if (jj_scan_token(A)) return true; return false; } - final private boolean jj_3_280() { - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(ROW)) return true; + final private boolean jj_3_281() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_279()) { + jj_scanpos = xsp; + if (jj_3R_182()) return true; + } if (jj_3R_181()) return true; return false; } - final private boolean jj_3R_337() { + final private boolean jj_3R_339() { Token xsp; xsp = jj_scanpos; - if (jj_3_1117()) { - jj_scanpos = xsp; - if (jj_3_1118()) { - jj_scanpos = xsp; if (jj_3_1119()) { jj_scanpos = xsp; if (jj_3_1120()) { @@ -38859,7 +38856,11 @@ final private boolean jj_3R_337() { jj_scanpos = xsp; if (jj_3_1335()) { jj_scanpos = xsp; - if (jj_3_1336()) return true; + if (jj_3_1336()) { + jj_scanpos = xsp; + if (jj_3_1337()) { + jj_scanpos = xsp; + if (jj_3_1338()) return true; } } } @@ -39082,14 +39083,31 @@ final private boolean jj_3R_337() { return false; } - final private boolean jj_3_659() { + final private boolean jj_3_661() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_273()) return true; + if (jj_3R_275()) return true; return false; } - final private boolean jj_3R_366() { - if (jj_3R_273()) return true; + final private boolean jj_3R_368() { + if (jj_3R_275()) return true; + return false; + } + + final private boolean jj_3_280() { + if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(ROW)) return true; + if (jj_3R_181()) return true; + return false; + } + + final private boolean jj_3_1118() { + if (jj_3R_341()) return true; + return false; + } + + final private boolean jj_3_1117() { + if (jj_3R_340()) return true; return false; } @@ -39111,56 +39129,52 @@ final private boolean jj_3_1116() { return false; } - final private boolean jj_3_1115() { - if (jj_3R_338()) return true; - return false; - } - - final private boolean jj_3_1114() { - if (jj_3R_337()) return true; - return false; - } - - final private boolean jj_3R_270() { + final private boolean jj_3R_272() { Token xsp; xsp = jj_scanpos; - if (jj_3_1114()) { + if (jj_3_1116()) { jj_scanpos = xsp; - if (jj_3_1115()) { + if (jj_3_1117()) { jj_scanpos = xsp; - if (jj_3_1116()) return true; + if (jj_3_1118()) return true; } } return false; } - final private boolean jj_3_658() { + final private boolean jj_3_660() { if (jj_scan_token(DOT)) return true; - if (jj_3R_272()) return true; - return false; - } - - final private boolean jj_3R_180() { - if (jj_3R_161()) return true; + if (jj_3R_274()) return true; return false; } final private boolean jj_3R_168() { - if (jj_3R_272()) return true; + if (jj_3R_274()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_658()) { jj_scanpos = xsp; break; } + if (jj_3_660()) { jj_scanpos = xsp; break; } } return false; } + final private boolean jj_3R_180() { + if (jj_3R_161()) return true; + return false; + } + final private boolean jj_3_278() { if (jj_scan_token(COMMA)) return true; if (jj_3R_180()) return true; return false; } + final private boolean jj_3_659() { + if (jj_scan_token(DOT)) return true; + if (jj_scan_token(STAR)) return true; + return false; + } + final private boolean jj_3_277() { if (jj_scan_token(VALUE)) return true; return false; @@ -39171,9 +39185,9 @@ final private boolean jj_3_276() { return false; } - final private boolean jj_3_657() { + final private boolean jj_3_658() { if (jj_scan_token(DOT)) return true; - if (jj_scan_token(STAR)) return true; + if (jj_3R_273()) return true; return false; } @@ -39188,21 +39202,15 @@ final private boolean jj_3R_77() { return false; } - final private boolean jj_3_656() { - if (jj_scan_token(DOT)) return true; - if (jj_3R_271()) return true; - return false; - } - final private boolean jj_3R_151() { - if (jj_3R_271()) return true; + if (jj_3R_273()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_656()) { jj_scanpos = xsp; break; } + if (jj_3_658()) { jj_scanpos = xsp; break; } } xsp = jj_scanpos; - if (jj_3_657()) jj_scanpos = xsp; + if (jj_3_659()) jj_scanpos = xsp; return false; } @@ -39212,7 +39220,7 @@ final private boolean jj_3R_78() { return false; } - final private boolean jj_3_655() { + final private boolean jj_3_657() { if (jj_3R_123()) return true; return false; } @@ -39220,21 +39228,21 @@ final private boolean jj_3_655() { final private boolean jj_3R_133() { Token xsp; xsp = jj_scanpos; - if (jj_3_654()) { + if (jj_3_656()) { jj_scanpos = xsp; - if (jj_3_655()) return true; + if (jj_3_657()) return true; } return false; } - final private boolean jj_3_654() { + final private boolean jj_3_656() { if (jj_3R_85()) return true; return false; } final private boolean jj_3R_123() { if (jj_scan_token(LPAREN)) return true; - if (jj_3R_357()) return true; + if (jj_3R_359()) return true; if (jj_scan_token(RPAREN)) return true; return false; } @@ -39250,18 +39258,18 @@ final private boolean jj_3R_172() { return false; } - final private boolean jj_3_653() { + final private boolean jj_3_655() { if (jj_scan_token(COMMA)) return true; if (jj_3R_85()) return true; return false; } - final private boolean jj_3R_357() { + final private boolean jj_3R_359() { if (jj_3R_85()) return true; Token xsp; while (true) { xsp = jj_scanpos; - if (jj_3_653()) { jj_scanpos = xsp; break; } + if (jj_3_655()) { jj_scanpos = xsp; break; } } return false; } @@ -39272,6 +39280,11 @@ final private boolean jj_3_273() { return false; } + final private boolean jj_3R_369() { + if (jj_scan_token(QUOTED_STRING)) return true; + return false; + } + final private boolean jj_3_274() { if (jj_3R_153()) return true; Token xsp; @@ -39282,11 +39295,6 @@ final private boolean jj_3_274() { return false; } - final private boolean jj_3R_367() { - if (jj_scan_token(QUOTED_STRING)) return true; - return false; - } - final private boolean jj_3R_167() { if (jj_scan_token(LPAREN)) return true; Token xsp; @@ -39297,7 +39305,12 @@ final private boolean jj_3R_167() { } final private boolean jj_3R_85() { - if (jj_3R_271()) return true; + if (jj_3R_273()) return true; + return false; + } + + final private boolean jj_3R_333() { + if (jj_3R_273()) return true; return false; } @@ -39307,13 +39320,13 @@ final private boolean jj_3_272() { return false; } - final private boolean jj_3R_331() { - if (jj_3R_271()) return true; + final private boolean jj_3R_275() { + if (jj_3R_151()) return true; return false; } - final private boolean jj_3R_273() { - if (jj_3R_151()) return true; + final private boolean jj_3R_274() { + if (jj_3R_273()) return true; return false; } @@ -39324,18 +39337,13 @@ final private boolean jj_3R_178() { return false; } - final private boolean jj_3R_272() { - if (jj_3R_271()) return true; - return false; - } - final private boolean jj_3_271() { if (jj_scan_token(COMMA)) return true; if (jj_3R_178()) return true; return false; } - final private boolean jj_3R_365() { + final private boolean jj_3R_367() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_178()) return true; Token xsp; @@ -39347,8 +39355,8 @@ final private boolean jj_3R_365() { return false; } - final private boolean jj_3_652() { - if (jj_3R_270()) return true; + final private boolean jj_3_654() { + if (jj_3R_272()) return true; return false; } @@ -39357,11 +39365,77 @@ final private boolean jj_3_270() { return false; } + final private boolean jj_3_646() { + if (jj_scan_token(UESCAPE)) return true; + if (jj_scan_token(QUOTED_STRING)) return true; + return false; + } + final private boolean jj_3R_157() { Token xsp; xsp = jj_scanpos; if (jj_3_270()) jj_scanpos = xsp; - if (jj_3R_365()) return true; + if (jj_3R_367()) return true; + return false; + } + + final private boolean jj_3_653() { + if (jj_scan_token(UNICODE_QUOTED_IDENTIFIER)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_646()) jj_scanpos = xsp; + return false; + } + + final private boolean jj_3_652() { + if (jj_scan_token(BRACKET_QUOTED_IDENTIFIER)) return true; + return false; + } + + final private boolean jj_3_267() { + if (jj_scan_token(REPEATABLE)) return true; + if (jj_scan_token(LPAREN)) return true; + return false; + } + + final private boolean jj_3_651() { + if (jj_scan_token(BIG_QUERY_BACK_QUOTED_IDENTIFIER)) return true; + return false; + } + + final private boolean jj_3_266() { + if (jj_scan_token(SYSTEM)) return true; + return false; + } + + final private boolean jj_3_265() { + if (jj_scan_token(BERNOULLI)) return true; + return false; + } + + final private boolean jj_3_650() { + if (jj_scan_token(BACK_QUOTED_IDENTIFIER)) return true; + return false; + } + + final private boolean jj_3_269() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_265()) { + jj_scanpos = xsp; + if (jj_3_266()) return true; + } + if (jj_scan_token(LPAREN)) return true; + return false; + } + + final private boolean jj_3_649() { + if (jj_scan_token(QUOTED_IDENTIFIER)) return true; + return false; + } + + final private boolean jj_3_648() { + if (jj_scan_token(HYPHENATED_IDENTIFIER)) return true; return false; } @@ -39507,7 +39581,7 @@ private static void jj_la1_24() { private static void jj_la1_25() { jj_la1_25 = new int[] {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,}; } - final private JJCalls[] jj_2_rtns = new JJCalls[1774]; + final private JJCalls[] jj_2_rtns = new JJCalls[1776]; private boolean jj_rescan = false; private int jj_gc = 0; @@ -39799,7 +39873,7 @@ final public void disable_tracing() { final private void jj_rescan_token() { jj_rescan = true; - for (int i = 0; i < 1774; i++) { + for (int i = 0; i < 1776; i++) { try { JJCalls p = jj_2_rtns[i]; do { @@ -41580,6 +41654,8 @@ final private void jj_rescan_token() { case 1771: jj_3_1772(); break; case 1772: jj_3_1773(); break; case 1773: jj_3_1774(); break; + case 1774: jj_3_1775(); break; + case 1775: jj_3_1776(); break; } } p = p.next; diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteResource.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteResource.java index fb71451894fbe..e443ead638103 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteResource.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/IgniteResource.java @@ -72,4 +72,8 @@ public interface IgniteResource { /** */ @Resources.BaseMessage("Modify operation is not supported for table ''{0}''") Resources.ExInst modifyTableNotSupported(String table); + + /** */ + @Resources.BaseMessage("Unsupported clause ''{0}''") + Resources.ExInst unsupportedClause(String value); } diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/TypeUtils.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/TypeUtils.java index af7035281a280..811f6c692d138 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/TypeUtils.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/util/TypeUtils.java @@ -71,6 +71,7 @@ import org.apache.ignite.internal.processors.query.calcite.exec.RowHandler; import org.apache.ignite.internal.processors.query.calcite.schema.ColumnDescriptor; import org.apache.ignite.internal.processors.query.calcite.schema.TableDescriptor; +import org.apache.ignite.internal.processors.query.calcite.schema.ViewTableImpl; import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeFactory; import org.apache.ignite.internal.processors.query.calcite.type.IgniteTypeSystem; import org.apache.ignite.internal.util.typedef.F; @@ -236,20 +237,41 @@ public static RelDataType getResultType(IgniteTypeFactory typeFactory, RelOptSch * @param origin Column origin. * @return Result type. */ - private static Type getResultClass(IgniteTypeFactory typeFactory, RelOptSchema schema, RelDataType type, - @Nullable List origin) { - if (F.isEmpty(origin)) - return typeFactory.getResultClass(type); + private static Type getResultClass( + IgniteTypeFactory typeFactory, + RelOptSchema schema, + RelDataType type, + @Nullable List origin + ) { + int maxViewDepth = 100; + + int cnt = 0; // Counter to protect from infinite recursion. + + while (true) { + if (F.isEmpty(origin)) + return typeFactory.getResultClass(type); + + if (cnt++ >= maxViewDepth) + throw new UnsupportedOperationException("To many inner views: " + maxViewDepth); - RelOptTable table = schema.getTableForMember(origin.subList(0, 2)); + RelOptTable table = schema.getTableForMember(origin.subList(0, 2)); - assert table != null; + assert table != null; - ColumnDescriptor fldDesc = table.unwrap(TableDescriptor.class).columnDescriptor(origin.get(2)); + ViewTableImpl viewTable = table.unwrap(ViewTableImpl.class); - assert fldDesc != null; + if (viewTable != null) { + origin = viewTable.fieldOrigin(origin.get(2)); - return fldDesc.storageType(); + continue; + } + + ColumnDescriptor fldDesc = table.unwrap(TableDescriptor.class).columnDescriptor(origin.get(2)); + + assert fldDesc != null; + + return fldDesc.storageType(); + } } /** diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractBasicIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractBasicIntegrationTest.java index eed1ae56e8516..aa0f15b1b78d1 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractBasicIntegrationTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AbstractBasicIntegrationTest.java @@ -137,23 +137,20 @@ protected QueryChecker assertQuery(String qry) { } /** */ - protected QueryChecker assertQuery(IgniteEx ignite, String qry) { + protected QueryChecker assertQuery(Ignite ignite, String qry) { return new QueryChecker(qry) { @Override protected QueryEngine getEngine() { - return Commons.lookupComponent(ignite.context(), QueryEngine.class); + return Commons.lookupComponent(((IgniteEx)ignite).context(), QueryEngine.class); } }; } - /** */ + /** + * @deprecated Use {@link #sql(String, Object...)} instead. + */ + @Deprecated protected List> executeSql(String sql, Object... args) { - CalciteQueryProcessor qryProc = Commons.lookupComponent(client.context(), CalciteQueryProcessor.class); - - List>> cur = qryProc.query(queryContext(), "PUBLIC", sql, args); - - try (QueryCursor> srvCursor = cur.get(0)) { - return srvCursor.getAll(); - } + return sql(sql, args); } /** */ @@ -169,7 +166,7 @@ protected QueryContext queryContext() { * @param msg Error message. */ protected void assertThrows(String sql, Class cls, String msg, Object... args) { - assertThrowsAnyCause(log, () -> executeSql(sql, args), cls, msg); + assertThrowsAnyCause(log, () -> sql(sql, args), cls, msg); } /** */ diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AuthorizationIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AuthorizationIntegrationTest.java index 56edba4475c7d..ee0586d69f8a5 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AuthorizationIntegrationTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/AuthorizationIntegrationTest.java @@ -21,6 +21,7 @@ import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; +import java.util.Arrays; import java.util.UUID; import java.util.concurrent.atomic.AtomicInteger; import org.apache.ignite.IgniteCheckedException; @@ -36,6 +37,7 @@ import org.apache.ignite.configuration.SqlConfiguration; import org.apache.ignite.events.CacheEvent; import org.apache.ignite.internal.IgniteEx; +import org.apache.ignite.internal.processors.query.QueryUtils; import org.apache.ignite.internal.processors.security.AbstractSecurityTest; import org.apache.ignite.internal.processors.security.impl.TestSecurityData; import org.apache.ignite.internal.processors.security.impl.TestSecurityPluginProvider; @@ -45,16 +47,23 @@ import org.apache.ignite.plugin.security.SecurityPermissionSetBuilder; import org.apache.ignite.testframework.GridTestUtils; import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT; import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED; +import static org.apache.ignite.plugin.security.SecurityPermission.CACHE_CREATE; +import static org.apache.ignite.plugin.security.SecurityPermission.CACHE_DESTROY; import static org.apache.ignite.plugin.security.SecurityPermission.CACHE_PUT; import static org.apache.ignite.plugin.security.SecurityPermission.CACHE_READ; import static org.apache.ignite.plugin.security.SecurityPermission.CACHE_REMOVE; +import static org.apache.ignite.plugin.security.SecurityPermission.SQL_VIEW_CREATE; +import static org.apache.ignite.plugin.security.SecurityPermission.SQL_VIEW_DROP; /** * Test authorization of different operations. */ +@RunWith(Parameterized.class) public class AuthorizationIntegrationTest extends AbstractSecurityTest { /** */ private static final String LOGIN = "client"; @@ -78,13 +87,16 @@ public class AuthorizationIntegrationTest extends AbstractSecurityTest { private static final AtomicInteger removeCnt = new AtomicInteger(); /** */ - private final SecurityPermissionSet clientPermissions = SecurityPermissionSetBuilder.create() - .defaultAllowAll(false) - .appendCachePermissions(ALLOWED_CACHE, CACHE_PUT, CACHE_READ, CACHE_REMOVE) - .appendCachePermissions(ALLOWED_READ_CACHE, CACHE_READ) - .appendCachePermissions(FORBIDDEN_CACHE, EMPTY_PERMS).build(); + @Parameterized.Parameter + public boolean allowDdl; /** */ + @Parameterized.Parameters(name = "allowDdl = {0}") + public static Iterable parameters() { + return Arrays.asList(false, true); + } + + /** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { return super.getConfiguration(igniteInstanceName) .setIncludeEventTypes(EVT_CACHE_OBJECT_PUT, EVT_CACHE_OBJECT_REMOVED) @@ -95,12 +107,14 @@ public class AuthorizationIntegrationTest extends AbstractSecurityTest { /** {@inheritDoc} */ @Override protected TestSecurityData[] securityData() { return new TestSecurityData[] { - new TestSecurityData(LOGIN, PWD, clientPermissions, null) + new TestSecurityData(LOGIN, PWD, clientPermissions(), null) }; } /** {@inheritDoc} */ - @Override protected void beforeTestsStarted() throws Exception { + @Override protected void beforeTest() throws Exception { + super.beforeTest(); + IgniteEx grid0 = startGridAllowAll("srv1"); IgniteEx grid1 = startGridAllowAll("srv2"); @@ -132,24 +146,24 @@ public class AuthorizationIntegrationTest extends AbstractSecurityTest { grid1.events().localListen(lsnrRemove, EVT_CACHE_OBJECT_REMOVED); } - /** */ - @Override protected void beforeTest() throws Exception { - super.beforeTest(); + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + super.afterTest(); - grid("srv1").cache(ALLOWED_CACHE).clear(); - grid("srv1").cache(ALLOWED_READ_CACHE).clear(); - grid("srv1").cache(FORBIDDEN_CACHE).clear(); + stopAllGrids(); + + cleanPersistenceDir(); } /** */ @Test public void testClientNode() throws Exception { try (IgniteEx clientNode = startGrid(getConfiguration("client", - new TestSecurityPluginProvider(LOGIN, PWD, clientPermissions, null, + new TestSecurityPluginProvider(LOGIN, PWD, clientPermissions(), null, globalAuth, securityData())).setClientMode(true)) ) { check( - sql -> clientNode.cache(ALLOWED_CACHE).query(new SqlFieldsQuery(sql)).getAll(), + sql -> clientNode.cache(ALLOWED_CACHE).query(sqlFieldsQuery(sql)).getAll(), SecurityException.class, "Authorization failed" ); @@ -163,7 +177,7 @@ public void testThinClient() throws Exception { new ClientConfiguration().setAddresses(Config.SERVER).setUserName(LOGIN).setUserPassword(PWD)) ) { check( - sql -> client.cache(ALLOWED_CACHE).query(new SqlFieldsQuery(sql)).getAll(), + sql -> client.cache(ALLOWED_CACHE).query(sqlFieldsQuery(sql)).getAll(), ClientAuthorizationException.class, "User is not authorized" ); @@ -182,6 +196,20 @@ public void testJdbc() throws Exception { } } + /** */ + private SecurityPermissionSet clientPermissions() { + SecurityPermissionSetBuilder permBuilder = SecurityPermissionSetBuilder.create() + .defaultAllowAll(false) + .appendCachePermissions(ALLOWED_CACHE, CACHE_PUT, CACHE_READ, CACHE_REMOVE) + .appendCachePermissions(ALLOWED_READ_CACHE, CACHE_READ) + .appendCachePermissions(FORBIDDEN_CACHE, EMPTY_PERMS); + + if (allowDdl) + permBuilder.appendSystemPermissions(SQL_VIEW_CREATE, SQL_VIEW_DROP, CACHE_CREATE, CACHE_DESTROY); + + return permBuilder.build(); + } + /** */ private void check(SqlExecutor sqlExecutor, Class errCls, String errMsg) throws Exception { putCnt.set(0); @@ -209,7 +237,32 @@ private void check(SqlExecutor sqlExecutor, Class errCls, S sqlExecutor.execute(selectSql(ALLOWED_READ_CACHE)); assertThrows(sqlExecutor, deleteSql(ALLOWED_READ_CACHE), errCls, errMsg); - assertThrows(sqlExecutor, "CREATE TABLE test(id INT, val VARCHAR)", errCls, errMsg); + if (allowDdl) { + sqlExecutor.execute("CREATE TABLE test(id INT, val VARCHAR)"); + sqlExecutor.execute("CREATE VIEW test_view AS SELECT * FROM test"); + sqlExecutor.execute("DROP VIEW test_view"); + sqlExecutor.execute("DROP TABLE test"); + } + else { + assertThrows(sqlExecutor, "CREATE TABLE test(id INT, val VARCHAR)", errCls, errMsg); + assertThrows(sqlExecutor, "CREATE VIEW test_view AS SELECT * FROM test", errCls, errMsg); + + executeOnServer("CREATE TABLE test(id INT, val VARCHAR)"); + executeOnServer("CREATE VIEW test_view AS SELECT * FROM test"); + + assertThrows(sqlExecutor, "DROP VIEW test_view", errCls, errMsg); + assertThrows(sqlExecutor, "DROP TABLE test", errCls, errMsg); + } + } + + /** */ + private void executeOnServer(String sql) { + grid("srv1").cache(ALLOWED_CACHE).query(sqlFieldsQuery(sql)).getAll(); + } + + /** */ + private SqlFieldsQuery sqlFieldsQuery(String sql) { + return new SqlFieldsQuery(sql).setSchema(QueryUtils.DFLT_SCHEMA); } /** Ensure security context subject relates to client. */ diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ViewsIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ViewsIntegrationTest.java new file mode 100644 index 0000000000000..87f66394e8eac --- /dev/null +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/ViewsIntegrationTest.java @@ -0,0 +1,433 @@ +/* + * 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.util.Arrays; +import java.util.List; +import org.apache.ignite.Ignite; +import org.apache.ignite.IgniteCache; +import org.apache.ignite.cache.query.SqlFieldsQuery; +import org.apache.ignite.calcite.CalciteQueryEngineConfiguration; +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.configuration.SqlConfiguration; +import org.apache.ignite.indexing.IndexingQueryEngineConfiguration; +import org.apache.ignite.internal.IgniteEx; +import org.apache.ignite.internal.processors.query.IgniteSQLException; +import org.apache.ignite.internal.util.typedef.G; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; + +/** */ +@RunWith(Parameterized.class) +public class ViewsIntegrationTest extends AbstractBasicIntegrationTest { + /** */ + private boolean persistenceEnabled; + + /** */ + private String[] predefinedSchemas; + + /** */ + @Parameterized.Parameter + public String engine; + + /** */ + @Parameterized.Parameters(name = "Query engine={0}") + public static Iterable params() { + return Arrays.asList(CalciteQueryEngineConfiguration.ENGINE_NAME, IndexingQueryEngineConfiguration.ENGINE_NAME); + } + + /** {@inheritDoc} */ + @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { + return super.getConfiguration(igniteInstanceName) + .setSqlConfiguration(new SqlConfiguration() + .setSqlSchemas(predefinedSchemas) + .setQueryEnginesConfiguration(engine.equals(CalciteQueryEngineConfiguration.ENGINE_NAME) ? + new CalciteQueryEngineConfiguration() : new IndexingQueryEngineConfiguration())) + .setDataStorageConfiguration(new DataStorageConfiguration() + .setDefaultDataRegionConfiguration(new DataRegionConfiguration() + .setPersistenceEnabled(persistenceEnabled))); + } + + /** {@inheritDoc} */ + @Override protected void beforeTestsStarted() throws Exception { + // No-op. + } + + /** {@inheritDoc} */ + @Override protected void afterTest() throws Exception { + super.afterTest(); + + stopAllGrids(); + + cleanPersistenceDir(); + } + + /** + * Tests create and drop view. + */ + @Test + public void testCreateDrop() throws Exception { + initGrids(3); + initTable(3); + + sql("create or replace view my_view as select * from my_table"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + + assertRowsCount(3, "select * from my_view"); + assertRowsCount(3, "select t.id, val_int, * from my_view t"); + + sql("drop view my_view"); + + assertViewsCount("PUBLIC", "MY_VIEW", 0); + } + + /** + * Tests views on different schemas. + */ + @Test + public void testDifferentSchemas() throws Exception { + initGrids(3); + initTable(5); + + IgniteCache cache1 = client.getOrCreateCache(new CacheConfiguration<>("CACHE1") + .setIndexedTypes(Integer.class, Integer.class)); + + IgniteCache cache2 = client.getOrCreateCache(new CacheConfiguration<>("CACHE2") + .setIndexedTypes(Integer.class, Integer.class)); + + IgniteCache cache3 = client.getOrCreateCache(new CacheConfiguration<>("CACHE3") + .setIndexedTypes(Integer.class, Integer.class) + .setSqlSchema("MY_SCHEMA") + ); + + IgniteCache cache4 = client.getOrCreateCache(new CacheConfiguration<>("CACHE4") + .setIndexedTypes(Integer.class, String.class) + .setSqlSchema("MY_SCHEMA") + ); + + sql("create or replace view my_view as select * from my_table"); + sql("create or replace view cache1.my_view as select * from public.my_table where id < 4"); + sql("create or replace view cache2.my_view as select * from cache1.my_view where id < 3"); + sql("create or replace view my_schema.my_view1 as select * from public.my_table where id < 2"); + sql("create or replace view my_schema.my_view2 as select * from my_view1 where id < 1"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + assertViewsCount("CACHE1", "MY_VIEW", 1); + assertViewsCount("CACHE2", "MY_VIEW", 1); + assertViewsCount("MY_SCHEMA", "MY_VIEW1", 1); + assertViewsCount("MY_SCHEMA", "MY_VIEW2", 1); + + assertRowsCount(5, "select * from my_view"); + assertRowsCount(4, "select * from cache1.my_view"); + assertRowsCount(3, "select * from cache2.my_view"); + assertRowsCount(2, "select * from my_schema.my_view1"); + assertRowsCount(1, "select * from my_schema.my_view2"); + + // PUBLIC.MY_VIEW + assertEquals(5, cache1.query(new SqlFieldsQuery("select * from public.my_view")).getAll().size()); + assertEquals(5, cache1.query(new SqlFieldsQuery("select * from my_view").setSchema("PUBLIC")).getAll().size()); + // CACHE1.MY_VIEW + assertEquals(4, cache1.query(new SqlFieldsQuery("select * from my_view")).getAll().size()); + assertEquals(4, cache2.query(new SqlFieldsQuery("select * from cache1.my_view")).getAll().size()); + // CACHE2.MY_VIEW + assertEquals(3, cache2.query(new SqlFieldsQuery("select * from my_view")).getAll().size()); + assertEquals(3, cache1.query(new SqlFieldsQuery("select * from my_view").setSchema("CACHE2")).getAll().size()); + // MY_SCHEMA.MY_VIEW1 + assertEquals(2, cache3.query(new SqlFieldsQuery("select * from my_view1")).getAll().size()); + assertEquals(2, cache4.query(new SqlFieldsQuery("select * from my_view1")).getAll().size()); + // MY_SCHEMA.MY_VIEW2 + assertEquals(1, cache3.query(new SqlFieldsQuery("select * from my_view2")).getAll().size()); + assertEquals(1, cache4.query(new SqlFieldsQuery("select * from my_view2")).getAll().size()); + } + + /** + * Tests views drop on schema drop. + */ + @Test + public void testSchemaCleaning() throws Exception { + initGrids(3); + initTable(5); + + client.getOrCreateCache(new CacheConfiguration<>("CACHE1") + .setIndexedTypes(Integer.class, Integer.class)); + + client.getOrCreateCache(new CacheConfiguration<>("CACHE2") + .setIndexedTypes(Integer.class, Integer.class) + .setSqlSchema("PUBLIC") + ); + + client.getOrCreateCache(new CacheConfiguration<>("CACHE3") + .setIndexedTypes(Integer.class, Integer.class) + .setSqlSchema("MY_SCHEMA") + ); + + client.getOrCreateCache(new CacheConfiguration<>("CACHE4") + .setIndexedTypes(Integer.class, String.class) + .setSqlSchema("MY_SCHEMA") + ); + + sql("create or replace view my_view as select * from my_table"); + sql("create or replace view cache1.my_view as select * from public.my_table"); + sql("create or replace view my_schema.my_view as select * from public.my_table"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + assertViewsCount("CACHE1", "MY_VIEW", 1); + assertViewsCount("MY_SCHEMA", "MY_VIEW", 1); + + client.destroyCache("CACHE1"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + assertViewsCount("CACHE1", "MY_VIEW", 0); + assertViewsCount("MY_SCHEMA", "MY_VIEW", 1); + + client.destroyCache("CACHE2"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + assertViewsCount("CACHE1", "MY_VIEW", 0); + assertViewsCount("MY_SCHEMA", "MY_VIEW", 1); + + client.destroyCache("CACHE3"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + assertViewsCount("CACHE1", "MY_VIEW", 0); + assertViewsCount("MY_SCHEMA", "MY_VIEW", 1); + + client.destroyCache("CACHE4"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + assertViewsCount("CACHE1", "MY_VIEW", 0); + assertViewsCount("MY_SCHEMA", "MY_VIEW", 0); + + client.getOrCreateCache(new CacheConfiguration<>("CACHE1") + .setIndexedTypes(Integer.class, Integer.class)); + + client.getOrCreateCache(new CacheConfiguration<>("CACHE3") + .setIndexedTypes(Integer.class, Integer.class) + .setSqlSchema("MY_SCHEMA") + ); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + assertViewsCount("CACHE1", "MY_VIEW", 0); + assertViewsCount("MY_SCHEMA", "MY_VIEW", 0); + } + + /** + * Tests views on not existing schema. + */ + @Test + public void testNotExistingSchema() throws Exception { + initGrids(3); + initTable(3); + + assertThrows("CREATE VIEW my_schema.my_view AS SELECT * FROM public.my_table", IgniteSQLException.class, + "MY_SCHEMA"); + } + + /** + * Tests view after in-memory grid restart. + */ + @Test + public void testInMemory() throws Exception { + initGrids(3); + initTable(3); + + sql("create or replace view my_view as select * from my_table"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + + stopAllGrids(); + + initGrids(3); + + assertViewsCount("PUBLIC", "MY_VIEW", 0); + } + + /** + * Tests view after persistent grid restart. + */ + @Test + public void testPersistance() throws Exception { + persistenceEnabled = true; + + initGrids(3); + initTable(3); + + sql("create or replace view my_view as select * from my_table"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + + stopAllGrids(); + + initGrids(3); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + } + + /** + * Tests views information distribution on node join. + */ + @Test + public void testNodeJoin() throws Exception { + initGrids(2); + initTable(3); + + sql("create or replace view my_view as select * from my_table"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + + startGrid(2); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + + stopGrid(1); + + sql("create or replace view my_view1 as select * from my_table"); + + startGrid(1); + + assertViewsCount("PUBLIC", "MY_VIEW1", 1); + } + + /** + * Tests node join with outdated information. + */ + @Test + public void testNodeJoinWithDroppedView() throws Exception { + persistenceEnabled = true; + + initGrids(3); + initTable(3); + + sql("create or replace view my_view as select * from my_table"); + + assertViewsCount("PUBLIC", "MY_VIEW", 1); + + stopGrid(2); + + sql("drop view my_view"); + + assertViewsCount("PUBLIC", "MY_VIEW", 0); + + startGrid(2); + + assertViewsCount("PUBLIC", "MY_VIEW", 0); + } + + /** + * Tests quoted view and schema names. + */ + @Test + public void testQuotedNames() throws Exception { + String[] quotedNames = new String[] {"\"test\"", "\"test.\"", "\"test.test\"", "\".test\""}; + + predefinedSchemas = quotedNames; + + initGrids(3); + initTable(quotedNames.length * quotedNames.length); + + int cnt = 0; + + for (String schema : quotedNames) { + for (String view : quotedNames) { + cnt++; + String unqoutedSchema = schema.substring(1, schema.length() - 1); + String unqoutedView = view.substring(1, view.length() - 1); + + sql(String.format("create or replace view %s.%s as select * from public.my_table where id < %d", + schema, view, cnt)); + + assertViewsCount(unqoutedSchema, unqoutedView, 1); + + assertRowsCount(cnt, String.format("select * from %s.%s", schema, view)); + } + } + + for (String schema : quotedNames) { + for (String view : quotedNames) { + String unqoutedSchema = schema.substring(1, schema.length() - 1); + String unqoutedView = view.substring(1, view.length() - 1); + + assertViewsCount(unqoutedSchema, unqoutedView, 1); + + sql(String.format("drop view %s.%s", schema, view)); + + assertViewsCount(unqoutedSchema, unqoutedView, 0); + } + } + } + + /** + * Tests create and drop view on SYS schema. + */ + @Test + public void testSysSchema() throws Exception { + String msg = "DDL statements are not supported on SYS schema"; + + initGrids(1); + + assertThrows("CREATE OR REPLACE VIEW sys.views AS SELECT * FROM sys.tables", IgniteSQLException.class, msg); + assertThrows("DROP VIEW IF EXISTS sys.views", IgniteSQLException.class, msg); + } + + /** */ + private void initGrids(int cnt) throws Exception { + startGrids(cnt); + + client = startClientGrid(); + + client.cluster().state(ClusterState.ACTIVE); + } + + /** */ + private void initTable(int rows) { + sql("create table my_table(id int primary key, val_int int, val_str varchar)"); + + for (int i = 0; i < rows; i++) + sql("insert into my_table values (?, ?, ?)", i, i, Integer.toString(i)); + } + + /** */ + @Override protected List> sql(IgniteEx ignite, String sql, Object... params) { + return ignite.context().query().querySqlFields(new SqlFieldsQuery(sql).setArgs(params), true) + .getAll(); + } + + /** */ + private void assertRowsCount(int cnt, String sql, Object... params) { + assertEquals(cnt, sql(sql, params).size()); + } + + /** */ + private void assertViewsCount(String schemaName, String viewName, int cnt) { + for (Ignite ignite : G.allGrids()) { + try { + assertEquals(cnt, sql((IgniteEx)ignite, "SELECT * FROM sys.views WHERE schema = ? AND name = ?", + schemaName, viewName).size()); + } + catch (Throwable e) { + throw new AssertionError("Unexpected views count [grid=" + ignite.name() + ", schemaName=" + + schemaName + ", viewName=" + viewName + ']', e); + } + } + } +} diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java index 51855a0a192cd..5b959edc3e558 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/jdbc/JdbcCrossEngineTest.java @@ -129,6 +129,43 @@ public void testInsertDefaultValue() { checkInsertDefaultValue("UUID", '\'' + uuid.toString() + '\'', uuid); } + /** */ + @Test + public void testSqlViews() { + crossCheck( + engineIdx -> { + Statement stmt = stmts[engineIdx]; + + execute(stmt, "CREATE TABLE test_tbl (id INT PRIMARY KEY, val VARCHAR)"); + execute(stmt, "INSERT INTO test_tbl VALUES (1, 'val1'), (2, 'val2'), (3, 'val3')"); + execute(stmt, "CREATE VIEW test_view1 AS SELECT id, val as val1 FROM test_tbl WHERE id < 3"); + }, + engineIdx -> { + Statement stmt = stmts[engineIdx]; + + try { + List> res = executeQuery(stmt, "SELECT val1 FROM test_view1 ORDER BY id"); + + assertEquals(2, res.size()); + assertEquals("val1", res.get(0).get(0)); + assertEquals("val2", res.get(1).get(0)); + + execute(stmt, "CREATE VIEW test_view2 AS SELECT id, val1 as val2 FROM test_view1 WHERE id > 1"); + + res = executeQuery(stmt, "SELECT val2 FROM test_view2"); + + assertEquals(1, res.size()); + assertEquals("val2", res.get(0).get(0)); + } + finally { + execute(stmt, "DROP TABLE IF EXISTS test_tbl"); + execute(stmt, "DROP VIEW IF EXISTS test_view1"); + execute(stmt, "DROP VIEW IF EXISTS test_view2"); + } + } + ); + } + /** */ private void checkInsertDefaultValue(String sqlType, String sqlVal, Object expectedVal) { crossCheck( diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AbstractPlannerTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AbstractPlannerTest.java index 6f5c351810c8b..56c23704a510b 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AbstractPlannerTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/AbstractPlannerTest.java @@ -682,7 +682,7 @@ protected BaseQueryContext baseQueryContext(Collection schemas) { SchemaPlus dfltSchema = null; for (IgniteSchema igniteSchema : schemas) { - SchemaPlus schema = rootSchema.add(igniteSchema.getName(), igniteSchema); + SchemaPlus schema = igniteSchema.register(rootSchema); if (dfltSchema == null || DEFAULT_SCHEMA.equals(schema.getName())) dfltSchema = schema; diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/UserDefinedViewsPlannerTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/UserDefinedViewsPlannerTest.java new file mode 100644 index 0000000000000..9976074e86c64 --- /dev/null +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/planner/UserDefinedViewsPlannerTest.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.processors.query.calcite.planner; + +import org.apache.calcite.rel.core.Join; +import org.apache.calcite.util.ImmutableBitSet; +import org.apache.ignite.internal.processors.query.IgniteSQLException; +import org.apache.ignite.internal.processors.query.calcite.schema.IgniteSchema; +import org.apache.ignite.internal.processors.query.calcite.trait.IgniteDistributions; +import org.apache.ignite.testframework.GridTestUtils; +import org.junit.Test; + +import static org.apache.calcite.sql.type.SqlTypeName.INTEGER; + +/** + * User defined views test. + */ +public class UserDefinedViewsPlannerTest extends AbstractPlannerTest { + /** + * @throws Exception If failed. + */ + @Test + public void testSimpleView() throws Exception { + IgniteSchema schema = createSchema( + createTable("T1", IgniteDistributions.single(), "C1", INTEGER, "C2", INTEGER, "C3", INTEGER), + createTable("T2", IgniteDistributions.single(), "C1", INTEGER, "C2", INTEGER, "C3", INTEGER) + ); + + String viewSql = "SELECT T1.C1 AS C1_1, T1.C2 AS C1_2, T2.C1 AS C2_1, T2.C2 AS C2_2 FROM T1 JOIN T2 ON (T1.C3 = T2.C3)"; + + schema.addView("V1", viewSql); + + String sql = "select * from v1 where c1_1 = 1 AND c2_2 = 2"; + + assertPlan(sql, schema, hasChildThat(isInstanceOf(Join.class) + .and(hasChildThat(isTableScan("T1") + .and(t -> "=($t0, 1)".equals(t.condition().toString())))) + .and(hasChildThat(isTableScan("T2") + .and(t -> "=($t1, 2)".equals(t.condition().toString())))) + )); + } + + /** + * @throws Exception If failed. + */ + @Test + public void testViewOnView() throws Exception { + IgniteSchema schema = createSchema( + createTable("T1", IgniteDistributions.single(), "C1", INTEGER, "C2", INTEGER, "C3", INTEGER) + ); + + schema.addView("V1", "SELECT C1, C2 FROM T1"); + schema.addView("V2", "SELECT C1 FROM V1"); + + assertPlan("select * from v2", schema, isTableScan("T1") + .and(t -> t.requiredColumns().equals(ImmutableBitSet.of(0)))); + } + + /** + * @throws Exception If failed. + */ + @Test + public void testViewHint() throws Exception { + IgniteSchema schema = createSchema( + createTable("T1", IgniteDistributions.single(), "C1", INTEGER, "C2", INTEGER, "C3", INTEGER) + .addIndex("IDX_1", 0) + .addIndex("IDX_2", 1) + ); + + schema.addView("V1", "SELECT /*+ FORCE_INDEX(IDX_1) */ C1, C2 FROM T1"); + schema.addView("V2", "SELECT /*+ FORCE_INDEX(IDX_2) */ C1, C2 FROM T1"); + + assertPlan("SELECT * FROM v1 WHERE c1 = ? AND c2 = ?", schema, isIndexScan("T1", "IDX_1")); + assertPlan("SELECT * FROM v2 WHERE c1 = ? AND c2 = ?", schema, isIndexScan("T1", "IDX_2")); + } + + /** */ + @Test + public void testRecursiveView() { + IgniteSchema schema = createSchema(); + + schema.addView("V1", "SELECT * FROM V1"); + + GridTestUtils.assertThrowsAnyCause(log, () -> physicalPlan("select * from v1", schema), IgniteSQLException.class, + "Recursive views are not supported"); + + schema.addView("V2", "SELECT * FROM V3"); + schema.addView("V3", "SELECT * FROM V2"); + + GridTestUtils.assertThrowsAnyCause(log, () -> physicalPlan("select * from v2", schema), IgniteSQLException.class, + "Recursive views are not supported"); + } +} diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/sql/SqlCustomParserTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/sql/SqlCustomParserTest.java index 5720eb600b8be..6136504ab44cb 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/sql/SqlCustomParserTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/sql/SqlCustomParserTest.java @@ -16,6 +16,7 @@ */ package org.apache.ignite.internal.processors.query.calcite.sql; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Objects; @@ -26,12 +27,16 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import org.apache.calcite.sql.SqlCall; +import org.apache.calcite.sql.SqlHint; import org.apache.calcite.sql.SqlIdentifier; import org.apache.calcite.sql.SqlKind; import org.apache.calcite.sql.SqlLiteral; import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlNumericLiteral; +import org.apache.calcite.sql.SqlSelect; import org.apache.calcite.sql.ddl.SqlColumnDeclaration; +import org.apache.calcite.sql.ddl.SqlCreateView; +import org.apache.calcite.sql.ddl.SqlDropView; import org.apache.calcite.sql.ddl.SqlKeyConstraint; import org.apache.calcite.sql.parser.SqlParseException; import org.apache.calcite.sql.parser.SqlParser; @@ -687,6 +692,93 @@ public void dropUser() throws Exception { assertParserThrows("drop user test with password 'asd'", SqlParseException.class); } + /** + * Tests that CREATE OR REPLACE is not allowed for CREATE TABLE/INDEX/USER. + */ + @Test + public void invalidCreateOrReplace() { + assertParserThrows("create or replace table my_table(id int, val varchar)", SqlParseException.class, + "Unsupported clause 'REPLACE'"); + + assertParserThrows("create or replace index my_index on my_table(id)", SqlParseException.class, + "Unsupported clause 'REPLACE'"); + + assertParserThrows("create or replace user test with password 'asd'", SqlParseException.class, + "Unsupported clause 'REPLACE'"); + } + + /** + * Create view. + */ + @Test + public void createView() throws SqlParseException { + SqlCreateView createView = parse("create view my_view as select * from my_table"); + + assertThat(createView.name.names, is(ImmutableList.of("MY_VIEW"))); + assertThat(createView.getReplace(), is(false)); + assertThat(createView.query, instanceOf(SqlSelect.class)); + assertThat(((SqlSelect)createView.query).getFrom().toString(), is("MY_TABLE")); + assertThat(((SqlSelect)createView.query).getSelectList().toString(), is("*")); + + createView = parse("create or replace view my_view as select * from my_table"); + + assertThat(createView.name.names, is(ImmutableList.of("MY_VIEW"))); + assertThat(createView.getReplace(), is(true)); + + createView = parse("create view my_schema.my_view as select * from my_table"); + + assertThat(createView.name.names, is(ImmutableList.of("MY_SCHEMA", "MY_VIEW"))); + assertThat(createView.getReplace(), is(false)); + + assertParserThrows("create view my_view as unexpected", SqlParseException.class); + assertParserThrows("create view my_view(id, name) as select * from my_table", SqlParseException.class); + assertParserThrows("create view as select * from my_table", SqlParseException.class); + + createView = parse("create view \"my.schema\".\"my.view\" as select * from my_table"); + + assertThat(createView.name.names, is(ImmutableList.of("my.schema", "my.view"))); + + createView = parse("create view my_view as select /*+ FORCE_INDEX(my_idx) */ * from my_table"); + + assertThat(createView.name.names, is(ImmutableList.of("MY_VIEW"))); + assertThat(createView.query, instanceOf(SqlSelect.class)); + + SqlSelect select = (SqlSelect)createView.query; + + assertThat(select.getHints().size(), is(1)); + assertThat(select.getHints().get(0), instanceOf(SqlHint.class)); + + SqlHint hint = (SqlHint)select.getHints().get(0); + + assertThat(hint.getName(), is("FORCE_INDEX")); + assertThat(hint.getOptionList(), is(Collections.singletonList("MY_IDX"))); + } + + /** + * Drop view. + */ + @Test + public void dropView() throws SqlParseException { + SqlDropView dropView = parse("drop view my_view"); + + assertThat(dropView.name.names, is(ImmutableList.of("MY_VIEW"))); + assertThat(dropView.ifExists, is(false)); + + dropView = parse("drop view my_schema.my_view"); + + assertThat(dropView.name.names, is(ImmutableList.of("MY_SCHEMA", "MY_VIEW"))); + assertThat(dropView.ifExists, is(false)); + + dropView = parse("drop view if exists my_view"); + + assertThat(dropView.name.names, is(ImmutableList.of("MY_VIEW"))); + assertThat(dropView.ifExists, is(true)); + + dropView = parse("drop view \"my.schema\".\"my.view\""); + + assertThat(dropView.name.names, is(ImmutableList.of("my.schema", "my.view"))); + } + /** * Test kill scan query parsing. */ 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 84dcc6fdb6133..15c302e337ee1 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 @@ -67,6 +67,7 @@ import org.apache.ignite.internal.processors.query.calcite.integration.TimeoutIntegrationTest; import org.apache.ignite.internal.processors.query.calcite.integration.UserDdlIntegrationTest; import org.apache.ignite.internal.processors.query.calcite.integration.UserDefinedFunctionsIntegrationTest; +import org.apache.ignite.internal.processors.query.calcite.integration.ViewsIntegrationTest; import org.apache.ignite.internal.processors.query.calcite.jdbc.JdbcCrossEngineTest; import org.apache.ignite.internal.processors.query.calcite.jdbc.JdbcQueryTest; import org.apache.ignite.internal.processors.query.calcite.rules.JoinCommuteRulesTest; @@ -137,6 +138,7 @@ AuthorizationIntegrationTest.class, DdlTransactionCalciteSelfTest.class, MultiLineQueryTest.class, + ViewsIntegrationTest.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 6f9a452e70973..372583f89f316 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 @@ -43,6 +43,7 @@ import org.apache.ignite.internal.processors.query.calcite.planner.TableFunctionPlannerTest; import org.apache.ignite.internal.processors.query.calcite.planner.TableSpoolPlannerTest; 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.hints.HintsTestSuite; import org.junit.runner.RunWith; import org.junit.runners.Suite; @@ -77,6 +78,7 @@ PlannerTimeoutTest.class, IndexSearchBoundsPlannerTest.class, InlineIndexScanPlannerTest.class, + UserDefinedViewsPlannerTest.class, HintsTestSuite.class, SerializationPlannerTest.class, diff --git a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java index 82b4fc533e090..672c5eebd41aa 100644 --- a/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java +++ b/modules/clients/src/test/java/org/apache/ignite/jdbc/thin/JdbcThinMetadataSelfTest.java @@ -970,9 +970,10 @@ public void testGetAllColumns() throws Exception { "SYS.TRANSACTIONS.CACHE_IDS.null", "SYS.SCHEMAS.SCHEMA_NAME.null", "SYS.SCHEMAS.PREDEFINED.null", + "SYS.VIEWS.SCHEMA.null", "SYS.VIEWS.NAME.null", + "SYS.VIEWS.SQL.null", "SYS.VIEWS.DESCRIPTION.null", - "SYS.VIEWS.SCHEMA.null", "SYS.TABLE_COLUMNS.AFFINITY_COLUMN.null", "SYS.TABLE_COLUMNS.COLUMN_NAME.null", "SYS.TABLE_COLUMNS.SCALE.null", 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 17aba103540d1..95a8e79a84fcc 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 @@ -502,7 +502,7 @@ public void testViews() { List> sqlViewsView = systemView(ignite0, SQL_VIEWS_VIEW); - sqlViewsView.forEach(row -> viewNames.add(row.get(0))); // name + sqlViewsView.forEach(row -> viewNames.add(row.get(1))); // name assertEquals(expViewNames, viewNames); } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/systemview/walker/SqlViewViewWalker.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/systemview/walker/SqlViewViewWalker.java index bc3f49f67e3be..060e6cc4e2a17 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/managers/systemview/walker/SqlViewViewWalker.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/systemview/walker/SqlViewViewWalker.java @@ -29,20 +29,22 @@ public class SqlViewViewWalker implements SystemViewRowAttributeWalker { /** {@inheritDoc} */ @Override public void visitAll(AttributeVisitor v) { - v.accept(0, "name", String.class); - v.accept(1, "schema", String.class); - v.accept(2, "description", String.class); + v.accept(0, "schema", String.class); + v.accept(1, "name", String.class); + v.accept(2, "sql", String.class); + v.accept(3, "description", String.class); } /** {@inheritDoc} */ @Override public void visitAll(SqlViewView row, AttributeWithValueVisitor v) { - v.accept(0, "name", String.class, row.name()); - v.accept(1, "schema", String.class, row.schema()); - v.accept(2, "description", String.class, row.description()); + v.accept(0, "schema", String.class, row.schema()); + v.accept(1, "name", String.class, row.name()); + v.accept(2, "sql", String.class, row.sql()); + v.accept(3, "description", String.class, row.description()); } /** {@inheritDoc} */ @Override public int count() { - return 3; + return 4; } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/IgniteQueryErrorCode.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/IgniteQueryErrorCode.java index 5fb132ac8fb15..9558b733b815f 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/IgniteQueryErrorCode.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/query/IgniteQueryErrorCode.java @@ -89,6 +89,12 @@ public final class IgniteQueryErrorCode { /** Database is closed by some reasons. */ public static final int DB_UNRECOVERABLE_ERROR = 3016; + /** View already exists. */ + public static final int VIEW_ALREADY_EXISTS = 3017; + + /** View does not exist. */ + public static final int VIEW_NOT_FOUND = 3018; + /* 4xxx - cache related runtime errors */ /** Attempt to INSERT a key that is already in cache. */ 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 9e8897f2ef010..f0b1e90f6e3aa 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 @@ -110,6 +110,7 @@ import org.apache.ignite.internal.processors.query.schema.SchemaOperationException; import org.apache.ignite.internal.processors.query.schema.SchemaOperationManager; 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.SchemaAbstractDiscoveryMessage; import org.apache.ignite.internal.processors.query.schema.message.SchemaFinishDiscoveryMessage; @@ -296,9 +297,12 @@ public class GridQueryProcessor extends GridProcessorAdapter { /** Running query manager. */ private RunningQueryManager runningQryMgr; - /** Schema manager. */ + /** Local schema manager. */ private final SchemaManager schemaMgr; + /** Global schema SQL views manager. */ + private final SchemaSqlViewManager schemaSqlViewMgr; + /** * Constructor. * @@ -317,6 +321,8 @@ public GridQueryProcessor(GridKernalContext ctx) throws IgniteCheckedException { schemaMgr = new SchemaManager(ctx); + schemaSqlViewMgr = new SchemaSqlViewManager(ctx); + idxProc = ctx.indexProcessor(); idxQryPrc = new IndexQueryProcessor(idxProc); @@ -357,6 +363,8 @@ public GridQueryProcessor(GridKernalContext ctx) throws IgniteCheckedException { schemaMgr.start(ctx.config().getSqlConfiguration().getSqlSchemas()); + schemaSqlViewMgr.start(); + ctx.io().addMessageListener(TOPIC_SCHEMA, ioLsnr); // Schedule queries detail metrics eviction. @@ -2428,7 +2436,7 @@ public void onCacheStop0(GridCacheContextInfo cacheInfo, boolean destroy, boolea try { ctx.indexProcessor().unregisterCache(cacheInfo); - schemaMgr.onCacheDestroyed(cacheName, destroy, clearIdx); + schemaMgr.onCacheStopped(cacheName, destroy, clearIdx); // Notify indexing. if (idx != null) @@ -4350,6 +4358,13 @@ public SchemaManager schemaManager() { return schemaMgr; } + /** + * @return Schema SQL view manager. + */ + public SchemaSqlViewManager sqlViewManager() { + return schemaSqlViewMgr; + } + /** @return Statistics manager. */ public IgniteStatisticsManager statsManager() { return statsMgr; 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 e4efdd3b38b7b..d7fb49fc9008f 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 @@ -1688,6 +1688,21 @@ public static IgniteSQLException convert(SchemaOperationException e) { break; + case SchemaOperationException.CODE_VIEW_NOT_FOUND: + sqlCode = IgniteQueryErrorCode.VIEW_NOT_FOUND; + + break; + + case SchemaOperationException.CODE_VIEW_EXISTS: + sqlCode = IgniteQueryErrorCode.VIEW_ALREADY_EXISTS; + + break; + + case SchemaOperationException.CODE_SCHEMA_NOT_FOUND: + sqlCode = IgniteQueryErrorCode.SCHEMA_NOT_FOUND; + + break; + default: sqlCode = IgniteQueryErrorCode.UNKNOWN; } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/AbstractSchemaChangeListener.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/AbstractSchemaChangeListener.java index 9e3f8674fa134..ede1e036c2f7d 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/AbstractSchemaChangeListener.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/AbstractSchemaChangeListener.java @@ -111,4 +111,14 @@ public abstract class AbstractSchemaChangeListener implements SchemaChangeListen @Override public void onSystemViewCreated(String schemaName, SystemView sysView) { // No-op. } + + /** {@inheritDoc} */ + @Override public void onViewCreated(String schemaName, String viewName, String viewSql) { + // No-op. + } + + /** {@inheritDoc} */ + @Override public void onViewDropped(String schemaName, String viewName) { + // No-op. + } } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaChangeListener.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaChangeListener.java index d95fbf7104f9a..2e88a0ee495d2 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaChangeListener.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaChangeListener.java @@ -141,10 +141,27 @@ public void onColumnsDropped( public void onFunctionCreated(String schemaName, String name, boolean deterministic, Method method); /** - * Callback method. + * Callback on system view creation. * * @param schemaName Schema name. * @param sysView System view. */ public void onSystemViewCreated(String schemaName, SystemView sysView); + + /** + * Callback on user defined view creation. + * + * @param schemaName Schema name. + * @param viewName View name. + * @param viewSql View SQL. + */ + public void onViewCreated(String schemaName, String viewName, String viewSql); + + /** + * Callback on user defined view dropped. + * + * @param schemaName Schema name. + * @param viewName View name. + */ + public void onViewDropped(String schemaName, String viewName); } diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaOperationException.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaOperationException.java index d4e169383024c..bb6eb883dc5c0 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaOperationException.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaOperationException.java @@ -54,6 +54,15 @@ public class SchemaOperationException extends IgniteCheckedException { /** Code: cache already indexed. */ public static final int CODE_CACHE_ALREADY_INDEXED = 8; + /** Code: view not found. */ + public static final int CODE_VIEW_NOT_FOUND = 9; + + /** Code: view already exists. */ + public static final int CODE_VIEW_EXISTS = 10; + + /** Code: schema not found. */ + public static final int CODE_SCHEMA_NOT_FOUND = 11; + /** Error code. */ private final int code; @@ -135,6 +144,15 @@ private static String message(int code, String objName) { case CODE_CACHE_ALREADY_INDEXED: return "Cache is already indexed: " + objName; + case CODE_VIEW_NOT_FOUND: + return "View doesn't exist: " + objName; + + case CODE_VIEW_EXISTS: + return "View already exists: " + objName; + + case CODE_SCHEMA_NOT_FOUND: + return "Schema doesn't exist: " + objName; + default: assert false; diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaSqlViewManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaSqlViewManager.java new file mode 100644 index 0000000000000..5c1d42cc7b885 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/SchemaSqlViewManager.java @@ -0,0 +1,222 @@ +/* + * 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; + +import java.io.Serializable; +import java.util.Objects; +import org.apache.ignite.IgniteCheckedException; +import org.apache.ignite.IgniteLogger; +import org.apache.ignite.internal.GridKernalContext; +import org.apache.ignite.internal.processors.cluster.IgniteChangeGlobalStateSupport; +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.util.typedef.internal.S; +import org.apache.ignite.internal.util.typedef.internal.U; +import org.apache.ignite.plugin.security.SecurityPermission; +import org.jetbrains.annotations.Nullable; + +/** + * Global schema SQL view manager. + */ +public class SchemaSqlViewManager implements IgniteChangeGlobalStateSupport { + /** Distributed metastorage key prefix. */ + private static final String SQL_VIEW_KEY_PREFIX = DistributedMetaStorage.IGNITE_INTERNAL_KEY_PREFIX + "sql.view."; + + /** Kernal context. */ + private final GridKernalContext ctx; + + /** */ + private volatile DistributedMetaStorage metastorage; + + /** Logger. */ + private final IgniteLogger log; + + /** + * Constructor. + * + * @param ctx Kernal context. + */ + public SchemaSqlViewManager(GridKernalContext ctx) { + this.ctx = ctx; + + log = ctx.log(SchemaSqlViewManager.class); + } + + /** */ + public void start() { + ctx.internalSubscriptionProcessor().registerDistributedMetastorageListener(new DistributedMetastorageLifecycleListener() { + @Override public void onReadyForRead(ReadableDistributedMetaStorage metastorage) { + metastorage.listen(key -> key.startsWith(SQL_VIEW_KEY_PREFIX), + SchemaSqlViewManager.this::processMetastorageUpdate); + } + + @Override public void onReadyForWrite(DistributedMetaStorage metastorage) { + SchemaSqlViewManager.this.metastorage = metastorage; + } + }); + + ctx.internalSubscriptionProcessor().registerGlobalStateListener(this); + } + + /** */ + public void createView(String schemaName, String viewName, String viewSql, boolean replace) throws IgniteCheckedException { + ctx.security().authorize(SecurityPermission.SQL_VIEW_CREATE); + + if (!ctx.query().schemaManager().schemaNames().contains(schemaName)) + throw new SchemaOperationException(SchemaOperationException.CODE_SCHEMA_NOT_FOUND, schemaName); + + String key = makeKey(schemaName, viewName); + + Serializable oldVal; + Serializable newVal = new SqlView(schemaName, viewName, viewSql); + + do { + oldVal = metastorage.read(key); + + if (oldVal != null && !replace) + throw new SchemaOperationException(SchemaOperationException.CODE_VIEW_EXISTS, viewName); + } + while (!metastorage.compareAndSet(key, oldVal, newVal)); + } + + /** */ + public void dropView(String schemaName, String viewName, boolean ifExists) throws IgniteCheckedException { + ctx.security().authorize(SecurityPermission.SQL_VIEW_DROP); + + String key = makeKey(schemaName, viewName); + + Serializable oldVal; + + do { + oldVal = metastorage.read(key); + + if (oldVal == null) { + if (!ifExists) + throw new SchemaOperationException(SchemaOperationException.CODE_VIEW_NOT_FOUND, viewName); + else + return; + } + } + while (!metastorage.compareAndRemove(key, oldVal)); + } + + /** */ + public void clearSchemaViews(String schemaName) { + if (!U.isLocalNodeCoordinator(ctx.discovery())) + return; + + try { + metastorage.iterate(makeKey(schemaName, null), (k, v) -> { + try { + metastorage.removeAsync(k); + } + catch (IgniteCheckedException e) { + log.warning("Failed to remove SQL views from metastorage [key=" + k + ']', e); + } + }); + } + catch (IgniteCheckedException e) { + log.warning("Failed to get views list from metastorage", e); + } + } + + /** {@inheritDoc} */ + @Override public void onActivate(GridKernalContext kctx) throws IgniteCheckedException { + metastorage.iterate(SQL_VIEW_KEY_PREFIX, (k, v) -> processMetastorageUpdate(k, null, v)); + } + + /** {@inheritDoc} */ + @Override public void onDeActivate(GridKernalContext kctx) { + // No-op. + } + + /** */ + private void processMetastorageUpdate(String key, @Nullable Serializable oldVal, @Nullable Serializable newVal) { + assert key.startsWith(SQL_VIEW_KEY_PREFIX) : "Invalid key: " + key; + assert oldVal == null || oldVal instanceof SqlView : "Invalid old value: " + oldVal; + assert newVal == null || newVal instanceof SqlView : "Invalid new value: " + newVal; + assert oldVal != null || newVal != null; + + String schemaName = newVal == null ? ((SqlView)oldVal).schemaName : ((SqlView)newVal).schemaName; + String viewName = newVal == null ? ((SqlView)oldVal).viewName : ((SqlView)newVal).viewName; + + // Register in local manager. + if (newVal == null) + ctx.query().schemaManager().dropView(schemaName, viewName); + else + ctx.query().schemaManager().createView(schemaName, viewName, ((SqlView)newVal).viewSql); + } + + /** */ + private static String makeKey(String schemaName, @Nullable String viewName) { + return SQL_VIEW_KEY_PREFIX + escape(schemaName) + '.' + (viewName == null ? "" : escape(viewName)); + } + + /** */ + private static String escape(String name) { + return name.replace("\\", "\\\\").replace(".", "\\."); + } + + /** */ + private static class SqlView implements Serializable { + /** */ + private static final long serialVersionUID = 0L; + + /** */ + private final String schemaName; + + /** */ + private final String viewName; + + /** */ + private final String viewSql; + + /** */ + private SqlView(String schemaName, String viewName, String viewSql) { + this.schemaName = schemaName; + this.viewName = viewName; + this.viewSql = viewSql; + } + + /** {@inheritDoc} */ + @Override public boolean equals(Object o) { + if (this == o) + return true; + + if (!(o instanceof SqlView)) + return false; + + SqlView view = (SqlView)o; + + return Objects.equals(schemaName, view.schemaName) && + Objects.equals(viewName, view.viewName) && + Objects.equals(viewSql, view.viewSql); + } + + /** {@inheritDoc} */ + @Override public int hashCode() { + return Objects.hash(schemaName, viewName, viewSql); + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(SqlView.class, this); + } + } +} diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaDescriptor.java index 792e78aba5a0a..b2ae024b9d001 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaDescriptor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaDescriptor.java @@ -32,6 +32,9 @@ public class SchemaDescriptor { /** */ private final ConcurrentMap tbls = new ConcurrentHashMap<>(); + /** */ + private final ConcurrentMap views = new ConcurrentHashMap<>(); + /** */ private final ConcurrentMap typeToTbl = new ConcurrentHashMap<>(); @@ -121,6 +124,37 @@ public void drop(TableDescriptor tbl) { typeToTbl.remove(new QueryTypeNameKey(tbl.cacheInfo().name(), tbl.type().name())); } + /** + * @return View descriptors. + */ + public Collection views() { + return views.values(); + } + + /** + * @param viewName View name. + * @return View descriptor. + */ + public ViewDescriptor viewByName(String viewName) { + return views.get(viewName); + } + + /** + * @param view View descriptor. + */ + public void add(ViewDescriptor view) { + views.put(view.name(), view); + } + + /** + * Drop view. + * + * @param view View to be removed. + */ + public void drop(ViewDescriptor view) { + views.remove(view.name()); + } + /** * @return {@code True} if schema is predefined. */ diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaManager.java index 659f3f1a4a624..1e32b7ffae5aa 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/SchemaManager.java @@ -88,7 +88,7 @@ import static org.apache.ignite.internal.processors.query.QueryUtils.matches; /** - * Schema manager. Responsible for all manipulations on schema objects. + * Local schema manager. Responsible for all manipulations on schema objects. */ public class SchemaManager { /** */ @@ -203,9 +203,10 @@ public void start(String[] schemaNames) throws IgniteCheckedException { id2tbl.values(), SqlTableView::new); - ctx.systemView().registerView(SQL_VIEWS_VIEW, SQL_VIEWS_VIEW_DESC, + ctx.systemView().registerInnerCollectionView(SQL_VIEWS_VIEW, SQL_VIEWS_VIEW_DESC, new SqlViewViewWalker(), - sysViews, + schemas.values(), + SchemaDescriptor::views, SqlViewView::new); ctx.systemView().registerInnerCollectionView(SQL_IDXS_VIEW, SQL_IDXS_VIEW_DESC, @@ -285,6 +286,8 @@ public void createSystemView(String schema, SystemView view) { try { createSchema(schema, true); + schema(schema).add(new ViewDescriptor(MetricUtils.toSqlName(view.name()), null, view.description())); + sysViews.add(view); lsnr.onSystemViewCreated(schema, view); @@ -413,13 +416,13 @@ private static void validateTypeDescriptor(GridQueryTypeDescriptor type) throws } /** - * Handle cache destroy. + * Handle cache stop. * * @param cacheName Cache name. - * @param rmvIdx Whether to remove indexes. + * @param destroy Destroy cache. * @param clearIdx Whether to clear the index. */ - public void onCacheDestroyed(String cacheName, boolean rmvIdx, boolean clearIdx) { + public void onCacheStopped(String cacheName, boolean destroy, boolean clearIdx) { lock.writeLock().lock(); try { @@ -439,7 +442,7 @@ public void onCacheDestroyed(String cacheName, boolean rmvIdx, boolean clearIdx) dropIndex(tbl, idx.name(), !clearIdx); } - lsnr.onSqlTypeDropped(schemaName, tbl.type(), rmvIdx); + lsnr.onSqlTypeDropped(schemaName, tbl.type(), destroy); schema.drop(tbl); @@ -451,6 +454,9 @@ public void onCacheDestroyed(String cacheName, boolean rmvIdx, boolean clearIdx) if (schema.decrementUsageCount()) { schemas.remove(schemaName); + if (destroy) + ctx.query().sqlViewManager().clearSchemaViews(schemaName); + lsnr.onSchemaDropped(schemaName); } } @@ -883,6 +889,64 @@ public void dropColumn( } } + /** + * Create view. + * + * @param schemaName Schema name. + * @param viewName View name. + * @param viewSql View SQL. + */ + public void createView(String schemaName, String viewName, String viewSql) { + lock.writeLock().lock(); + + try { + SchemaDescriptor schema = schema(schemaName); + + if (schema == null) { + log.warning("Schema for view not found in schema manager [schemaName=" + schemaName + + ", viewName=" + viewName + ']'); + + return; + } + + schema.add(new ViewDescriptor(viewName, viewSql, null)); + + lsnr.onViewCreated(schemaName, viewName, viewSql); + } + finally { + lock.writeLock().unlock(); + } + } + + /** + * Drop view. + * + * @param schemaName Schema name. + * @param viewName View name. + */ + public void dropView(String schemaName, String viewName) { + lock.writeLock().lock(); + + try { + SchemaDescriptor schema = schema(schemaName); + + if (schema == null) + return; + + ViewDescriptor viewDesc = schema.viewByName(viewName); + + if (viewDesc == null) + return; + + schema(schemaName).drop(viewDesc); + + lsnr.onViewDropped(schemaName, viewName); + } + finally { + lock.writeLock().unlock(); + } + } + /** * Initialize table's cache context created for not started cache. * @@ -1141,11 +1205,13 @@ public Collection tablesInformation( .forEach(infos::add); } - if ((allTypes || types.contains(JdbcUtils.TYPE_VIEW)) && matches(QueryUtils.SCHEMA_SYS, schemaNamePtrn)) { - sysViews.stream() - .filter(t -> matches(MetricUtils.toSqlName(t.name()), tblNamePtrn)) - .map(v -> new TableInformation(QueryUtils.SCHEMA_SYS, MetricUtils.toSqlName(v.name()), JdbcUtils.TYPE_VIEW)) - .forEach(infos::add); + if ((allTypes || types.contains(JdbcUtils.TYPE_VIEW))) { + schemas.values().stream() + .filter(s -> matches(s.schemaName(), schemaNamePtrn)) + .forEach(s -> s.views().stream() + .filter(v -> matches(v.name(), tblNamePtrn)) + .map(v -> new TableInformation(s.schemaName(), v.name(), JdbcUtils.TYPE_VIEW)) + .forEach(infos::add)); } return infos; @@ -1354,6 +1420,16 @@ private CompoundSchemaChangeListener(GridKernalContext ctx, List executeSafe(() -> lsnr.onSystemViewCreated(schemaName, sysView))); } + /** {@inheritDoc} */ + @Override public void onViewCreated(String schemaName, String viewName, String viewSql) { + lsnrs.forEach(lsnr -> executeSafe(() -> lsnr.onViewCreated(schemaName, viewName, viewSql))); + } + + /** {@inheritDoc} */ + @Override public void onViewDropped(String schemaName, String viewName) { + lsnrs.forEach(lsnr -> executeSafe(() -> lsnr.onViewDropped(schemaName, viewName))); + } + /** */ private void executeSafe(Runnable r) { try { diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/ViewDescriptor.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/ViewDescriptor.java new file mode 100644 index 0000000000000..ef83aa3910834 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/schema/management/ViewDescriptor.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.query.schema.management; + +/** + * Local database view object. + */ +public class ViewDescriptor { + /** View name. */ + private final String name; + + /** View SQL. */ + private final String sql; + + /** View description. */ + private final String desc; + + /** + * @param name View name. + * @param sql View SQL. + * @param desc View description. + */ + ViewDescriptor(String name, String sql, String desc) { + this.name = name; + this.sql = sql; + this.desc = desc; + } + + /** */ + public String name() { + return name; + } + + /** */ + public String sql() { + return sql; + } + + /** */ + public String description() { + return desc; + } +} diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/IgniteStatisticsConfigurationManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/IgniteStatisticsConfigurationManager.java index feaf82ee49512..d5099b729088a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/IgniteStatisticsConfigurationManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/query/stat/IgniteStatisticsConfigurationManager.java @@ -165,11 +165,13 @@ public class IgniteStatisticsConfigurationManager { assert !F.isEmpty(cols); // Drop statistics after columns dropped. - dropStatistics( - Collections.singletonList( - new StatisticsTarget(schemaName, typeDesc.tableName(), cols.toArray(EMPTY_STRINGS)) - ), - false + mgmtBusyExecutor.execute(() -> + dropStatistics( + Collections.singletonList( + new StatisticsTarget(schemaName, typeDesc.tableName(), cols.toArray(EMPTY_STRINGS)) + ), + false + ) ); } @@ -185,18 +187,22 @@ public class IgniteStatisticsConfigurationManager { assert !F.isEmpty(schemaName) && !F.isEmpty(name) : schemaName + ":" + name; - StatisticsKey key = new StatisticsKey(schemaName, name); + // Drop statistics asynchronously to avoid possible deadlock between schema manager lock and distributed + // metastorage lock. + mgmtBusyExecutor.execute(() -> { + StatisticsKey key = new StatisticsKey(schemaName, name); - try { - StatisticsObjectConfiguration cfg = config(key); + try { + StatisticsObjectConfiguration cfg = config(key); - if (cfg != null && !F.isEmpty(cfg.columns())) - dropStatistics(Collections.singletonList(new StatisticsTarget(schemaName, name)), false); - } - catch (Throwable e) { - if (!X.hasCause(e, NodeStoppingException.class)) - throw new IgniteSQLException("Error on drop statistics for dropped table [key=" + key + ']', e); - } + if (cfg != null && !F.isEmpty(cfg.columns())) + dropStatistics(Collections.singletonList(new StatisticsTarget(schemaName, name)), false); + } + catch (Throwable e) { + if (!X.hasCause(e, NodeStoppingException.class)) + throw new IgniteSQLException("Error on drop statistics for dropped table [key=" + key + ']', e); + } + }); } }; diff --git a/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlCommandProcessor.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlCommandProcessor.java index 7eb95e51033f5..8375fd41c4104 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlCommandProcessor.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlCommandProcessor.java @@ -49,9 +49,11 @@ import org.apache.ignite.internal.sql.command.SqlCommand; import org.apache.ignite.internal.sql.command.SqlCreateIndexCommand; import org.apache.ignite.internal.sql.command.SqlCreateUserCommand; +import org.apache.ignite.internal.sql.command.SqlCreateViewCommand; import org.apache.ignite.internal.sql.command.SqlDropIndexCommand; import org.apache.ignite.internal.sql.command.SqlDropStatisticsCommand; import org.apache.ignite.internal.sql.command.SqlDropUserCommand; +import org.apache.ignite.internal.sql.command.SqlDropViewCommand; import org.apache.ignite.internal.sql.command.SqlIndexColumn; import org.apache.ignite.internal.sql.command.SqlKillClientCommand; import org.apache.ignite.internal.sql.command.SqlKillComputeTaskCommand; @@ -145,7 +147,9 @@ public boolean isCommandSupported(SqlCommand cmd) { || cmd instanceof SqlKillScanQueryCommand || cmd instanceof SqlKillContinuousQueryCommand || cmd instanceof SqlKillQueryCommand - || cmd instanceof SqlStatisticsCommands; + || cmd instanceof SqlStatisticsCommands + || cmd instanceof SqlCreateViewCommand + || cmd instanceof SqlDropViewCommand; } /** @@ -158,7 +162,9 @@ private static boolean isDdl(SqlCommand cmd) { || cmd instanceof SqlAlterTableCommand || cmd instanceof SqlCreateUserCommand || cmd instanceof SqlAlterUserCommand - || cmd instanceof SqlDropUserCommand; + || cmd instanceof SqlDropUserCommand + || cmd instanceof SqlCreateViewCommand + || cmd instanceof SqlDropViewCommand; } /** @@ -409,6 +415,16 @@ else if (cmd instanceof SqlDropUserCommand) { ctx.security().dropUser(dropCmd.userName()); } + else if (cmd instanceof SqlCreateViewCommand) { + SqlCreateViewCommand cmd0 = (SqlCreateViewCommand)cmd; + + ctx.query().sqlViewManager().createView(cmd0.schemaName(), cmd0.viewName(), cmd0.viewSql(), cmd0.replace()); + } + else if (cmd instanceof SqlDropViewCommand) { + SqlDropViewCommand cmd0 = (SqlDropViewCommand)cmd; + + ctx.query().sqlViewManager().dropView(cmd0.schemaName(), cmd0.viewName(), cmd0.ifExists()); + } else throw new IgniteSQLException("Unsupported DDL operation: " + cmd, IgniteQueryErrorCode.UNSUPPORTED_OPERATION); diff --git a/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlKeyword.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlKeyword.java index 54f52535baef3..03c070a1c7f3a 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlKeyword.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlKeyword.java @@ -53,6 +53,9 @@ public class SqlKeyword { /** Keyword: ALLOW_OVERWRITE */ public static final String ALLOW_OVERWRITE = "ALLOW_OVERWRITE"; + /** Keyword: AS. */ + public static final String AS = "AS"; + /** Keyword: ASC. */ public static final String ASC = "ASC"; @@ -332,6 +335,18 @@ public class SqlKeyword { /** Keyword: REFRESH. */ public static final String REFRESH = "REFRESH"; + /** Keyword: OR. */ + public static final String OR = "OR"; + + /** Keyword: REPLACE. */ + public static final String REPLACE = "REPLACE"; + + /** Keyword: VIEW. */ + public static final String VIEW = "VIEW"; + + /** Keyword: SELECT. */ + public static final String SELECT = "SELECT"; + /** All keywords. */ private static final HashSet KEYWORDS; diff --git a/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlParser.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlParser.java index 35717a813ee31..95dfe9d22d31e 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlParser.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/SqlParser.java @@ -25,9 +25,11 @@ import org.apache.ignite.internal.sql.command.SqlCommand; import org.apache.ignite.internal.sql.command.SqlCreateIndexCommand; import org.apache.ignite.internal.sql.command.SqlCreateUserCommand; +import org.apache.ignite.internal.sql.command.SqlCreateViewCommand; import org.apache.ignite.internal.sql.command.SqlDropIndexCommand; import org.apache.ignite.internal.sql.command.SqlDropStatisticsCommand; import org.apache.ignite.internal.sql.command.SqlDropUserCommand; +import org.apache.ignite.internal.sql.command.SqlDropViewCommand; import org.apache.ignite.internal.sql.command.SqlKillClientCommand; import org.apache.ignite.internal.sql.command.SqlKillComputeTaskCommand; import org.apache.ignite.internal.sql.command.SqlKillContinuousQueryCommand; @@ -54,9 +56,11 @@ import static org.apache.ignite.internal.sql.SqlKeyword.HELP; import static org.apache.ignite.internal.sql.SqlKeyword.INDEX; import static org.apache.ignite.internal.sql.SqlKeyword.KILL; +import static org.apache.ignite.internal.sql.SqlKeyword.OR; import static org.apache.ignite.internal.sql.SqlKeyword.PRIMARY; import static org.apache.ignite.internal.sql.SqlKeyword.QUERY; import static org.apache.ignite.internal.sql.SqlKeyword.REFRESH; +import static org.apache.ignite.internal.sql.SqlKeyword.REPLACE; import static org.apache.ignite.internal.sql.SqlKeyword.REVOKE; import static org.apache.ignite.internal.sql.SqlKeyword.ROLLBACK; import static org.apache.ignite.internal.sql.SqlKeyword.SCAN; @@ -70,6 +74,7 @@ import static org.apache.ignite.internal.sql.SqlKeyword.TRANSACTION; import static org.apache.ignite.internal.sql.SqlKeyword.UNIQUE; import static org.apache.ignite.internal.sql.SqlKeyword.USER; +import static org.apache.ignite.internal.sql.SqlKeyword.VIEW; import static org.apache.ignite.internal.sql.SqlKeyword.WORK; import static org.apache.ignite.internal.sql.SqlParserUtils.errorUnexpectedToken; import static org.apache.ignite.internal.sql.SqlParserUtils.errorUnsupportedIfMatchesKeyword; @@ -378,6 +383,22 @@ private SqlCommand processCreate() { break; + case OR: + if (lex.shift() && matchesKeyword(lex, REPLACE)) { + if (lex.shift() && matchesKeyword(lex, VIEW)) + cmd = new SqlCreateViewCommand().replace(true); + else + throw errorUnexpectedToken(lex, VIEW); + } + else + throw errorUnexpectedToken(lex, REPLACE); + + break; + + case VIEW: + cmd = new SqlCreateViewCommand(); + + break; } if (cmd != null) @@ -386,7 +407,7 @@ private SqlCommand processCreate() { errorUnsupportedIfMatchesKeyword(lex, HASH, PRIMARY, UNIQUE); } - throw errorUnexpectedToken(lex, INDEX, SPATIAL, USER); + throw errorUnexpectedToken(lex, INDEX, SPATIAL, USER, OR, VIEW); } /** @@ -412,6 +433,11 @@ private SqlCommand processDrop() { case STATISTICS: cmd = new SqlDropStatisticsCommand(); + break; + + case VIEW: + cmd = new SqlDropViewCommand(); + break; } @@ -419,7 +445,7 @@ private SqlCommand processDrop() { return cmd.parse(lex); } - throw errorUnexpectedToken(lex, INDEX, USER); + throw errorUnexpectedToken(lex, INDEX, USER, STATISTICS, VIEW); } /** diff --git a/modules/core/src/main/java/org/apache/ignite/internal/sql/command/SqlCreateViewCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/command/SqlCreateViewCommand.java new file mode 100644 index 0000000000000..ed7ef7e908b1b --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/command/SqlCreateViewCommand.java @@ -0,0 +1,129 @@ +/* + * 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.sql.command; + +import org.apache.ignite.internal.sql.SqlLexer; +import org.apache.ignite.internal.sql.SqlLexerTokenType; +import org.apache.ignite.internal.util.typedef.internal.S; + +import static org.apache.ignite.internal.sql.SqlKeyword.AS; +import static org.apache.ignite.internal.sql.SqlKeyword.SELECT; +import static org.apache.ignite.internal.sql.SqlParserUtils.parseQualifiedIdentifier; +import static org.apache.ignite.internal.sql.SqlParserUtils.skipIfMatchesKeyword; + +/** + * CREATE VIEW command. + */ +public class SqlCreateViewCommand implements SqlCommand { + /** Schema name. */ + private String schemaName; + + /** View name. */ + private String viewName; + + /** View SQL. */ + private String viewSql; + + /** REPLACE flag. */ + private boolean replace; + + /** + * Default constructor. + */ + public SqlCreateViewCommand() { + // No-op. + } + + /** + * @param schemaName Schema name. + * @param viewName View name. + * @param viewSql View SQL. + * @param replace Replace flag. + */ + public SqlCreateViewCommand(String schemaName, String viewName, String viewSql, boolean replace) { + this.schemaName = schemaName; + this.viewName = viewName; + this.viewSql = viewSql; + this.replace = replace; + } + + /** + * @return View name. + */ + public String viewName() { + return viewName; + } + + /** + * @return View SQL. + */ + public String viewSql() { + return viewSql; + } + + /** + * @return REPLACE flag. + */ + public boolean replace() { + return replace; + } + + /** + * Sets REPLACE flag. + */ + public SqlCreateViewCommand replace(boolean replace) { + this.replace = replace; + + return this; + } + + /** {@inheritDoc} */ + @Override public String schemaName() { + return schemaName; + } + + /** {@inheritDoc} */ + @Override public void schemaName(String schemaName) { + this.schemaName = schemaName; + } + + /** {@inheritDoc} */ + @Override public SqlCommand parse(SqlLexer lex) { + SqlQualifiedName viewQName = parseQualifiedIdentifier(lex); + + schemaName = viewQName.schemaName(); + viewName = viewQName.name(); + + skipIfMatchesKeyword(lex, AS); + + skipIfMatchesKeyword(lex, SELECT); + + int viewSqlPos = lex.tokenPosition(); + + while (lex.shift() && lex.lookAhead().tokenType() != SqlLexerTokenType.SEMICOLON) /* No-op. */; + + viewSql = lex.eod() ? lex.sql().substring(viewSqlPos) : lex.sql().substring(viewSqlPos, lex.position()); + + return this; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(SqlCreateViewCommand.class, this); + } +} diff --git a/modules/core/src/main/java/org/apache/ignite/internal/sql/command/SqlDropViewCommand.java b/modules/core/src/main/java/org/apache/ignite/internal/sql/command/SqlDropViewCommand.java new file mode 100644 index 0000000000000..ff95071d8fb83 --- /dev/null +++ b/modules/core/src/main/java/org/apache/ignite/internal/sql/command/SqlDropViewCommand.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.internal.sql.command; + +import org.apache.ignite.internal.sql.SqlLexer; +import org.apache.ignite.internal.util.typedef.internal.S; + +import static org.apache.ignite.internal.sql.SqlKeyword.IF; +import static org.apache.ignite.internal.sql.SqlParserUtils.parseIfExists; +import static org.apache.ignite.internal.sql.SqlParserUtils.parseQualifiedIdentifier; + +/** + * DROP VIEW command. + */ +public class SqlDropViewCommand implements SqlCommand { + /** Schema name. */ + private String schemaName; + + /** View name. */ + private String viewName; + + /** IF EXISTS flag. */ + private boolean ifExists; + + /** + * Default constructor. + */ + public SqlDropViewCommand() { + // No-op. + } + + /** + * @param schemaName Schema name. + * @param viewName VIew name. + * @param ifExists If exists clause. + */ + public SqlDropViewCommand(String schemaName, String viewName, boolean ifExists) { + this.schemaName = schemaName; + this.viewName = viewName; + this.ifExists = ifExists; + } + + /** {@inheritDoc} */ + @Override public String schemaName() { + return schemaName; + } + + /** {@inheritDoc} */ + @Override public void schemaName(String schemaName) { + this.schemaName = schemaName; + } + + /** + * @return Index name. + */ + public String viewName() { + return viewName; + } + + /** + * @return IF EXISTS flag. + */ + public boolean ifExists() { + return ifExists; + } + + /** {@inheritDoc} */ + @Override public SqlCommand parse(SqlLexer lex) { + ifExists = parseIfExists(lex); + + SqlQualifiedName viewQName = ifExists ? parseQualifiedIdentifier(lex) : parseQualifiedIdentifier(lex, IF); + + schemaName = viewQName.schemaName(); + viewName = viewQName.name(); + + return this; + } + + /** {@inheritDoc} */ + @Override public String toString() { + return S.toString(SqlDropViewCommand.class, this); + } +} diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermission.java b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermission.java index 5deb365d0bbca..e631dbd6634ec 100644 --- a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermission.java +++ b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermission.java @@ -111,7 +111,13 @@ public enum SecurityPermission { REFRESH_STATISTICS, /** Permission to execute ANALYZE and DROP STATISTICS command. */ - CHANGE_STATISTICS; + CHANGE_STATISTICS, + + /** Permission to execute CREATE VIEW command. */ + SQL_VIEW_CREATE, + + /** Permission to execute DROP VIEW command. */ + SQL_VIEW_DROP; /** Enumerated values. */ private static final SecurityPermission[] VALS = values(); diff --git a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSetBuilder.java b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSetBuilder.java index 736c98810d4c5..49fcf236bcef8 100644 --- a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSetBuilder.java +++ b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityPermissionSetBuilder.java @@ -147,7 +147,7 @@ public SecurityPermissionSetBuilder appendCachePermissions(String name, Security */ public SecurityPermissionSetBuilder appendSystemPermissions(SecurityPermission... perms) { validate(toCollection("EVENTS_", "ADMIN_", "CACHE_CREATE", "CACHE_DESTROY", "JOIN_AS_SERVER", - "CHANGE_STATISTICS", "REFRESH_STATISTICS"), perms); + "CHANGE_STATISTICS", "REFRESH_STATISTICS", "SQL_VIEW_CREATE", "SQL_VIEW_DROP"), perms); sysPerms.addAll(toCollection(perms)); diff --git a/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/sql/SqlViewView.java b/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/sql/SqlViewView.java index 46f0efdc9479f..d660982dcbd7a 100644 --- a/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/sql/SqlViewView.java +++ b/modules/core/src/main/java/org/apache/ignite/spi/systemview/view/sql/SqlViewView.java @@ -18,37 +18,49 @@ package org.apache.ignite.spi.systemview.view.sql; import org.apache.ignite.internal.managers.systemview.walker.Order; -import org.apache.ignite.internal.processors.metric.impl.MetricUtils; -import org.apache.ignite.internal.processors.query.QueryUtils; -import org.apache.ignite.spi.systemview.view.SystemView; +import org.apache.ignite.internal.processors.query.schema.management.SchemaDescriptor; +import org.apache.ignite.internal.processors.query.schema.management.ViewDescriptor; /** - * Sql view representation for a {@link SystemView}. + * Sql view representation for a {@link ViewDescriptor}. */ public class SqlViewView { - /** System view. */ - private final SystemView view; + /** Schema descriptor. */ + private final SchemaDescriptor schema; - /** @param view System view. */ - public SqlViewView(SystemView view) { + /** View descriptor. */ + private final ViewDescriptor view; + + /** + * @param schema Schema descriptor. + * @param view View descriptor. + */ + public SqlViewView(SchemaDescriptor schema, ViewDescriptor view) { + this.schema = schema; this.view = view; } - /** @return View name. */ + /** @return View schema. */ @Order + public String schema() { + return schema.schemaName(); + } + + /** @return View name. */ + @Order(1) public String name() { - return MetricUtils.toSqlName(view.name()); + return view.name(); } - /** @return View description. */ + /** @return View SQL. */ @Order(2) - public String description() { - return view.description(); + public String sql() { + return view.sql(); } - /** @return View schema. */ - @Order(1) - public String schema() { - return QueryUtils.SCHEMA_SYS; + /** @return View description. */ + @Order(3) + public String description() { + return view.description(); } } diff --git a/modules/core/src/test/java/org/apache/ignite/internal/sql/SqlParserViewSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/sql/SqlParserViewSelfTest.java new file mode 100644 index 0000000000000..7b013bbaebe84 --- /dev/null +++ b/modules/core/src/test/java/org/apache/ignite/internal/sql/SqlParserViewSelfTest.java @@ -0,0 +1,129 @@ +/* + * 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.sql; + +import org.apache.ignite.internal.sql.command.SqlCreateViewCommand; +import org.apache.ignite.internal.sql.command.SqlDropViewCommand; +import org.junit.Test; + +/** + * Tests for SQL parser: CREATE VIEW. + */ +public class SqlParserViewSelfTest extends SqlParserAbstractSelfTest { + /** + * Test for CREATE VIEW command. + */ + @Test + public void testCreateView() { + parseValidateCreate("CREATE VIEW test AS SELECT * FROM test2", + null, "TEST", "SELECT * FROM test2", false); + + parseValidateCreate("CREATE OR REPLACE VIEW test AS SELECT * FROM test2", + null, "TEST", "SELECT * FROM test2", true); + + parseValidateCreate("CREATE VIEW test.test AS SELECT * FROM test2", + "TEST", "TEST", "SELECT * FROM test2", false); + + parseValidateCreate("CREATE VIEW \"test\" AS SELECT * FROM test2", + null, "test", "SELECT * FROM test2", false); + + parseValidateCreate("CREATE VIEW \"test\".\"test\" AS SELECT * FROM test2", + "test", "test", "SELECT * FROM test2", false); + + parseValidateCreate("CREATE VIEW \"te.st\".\"te.st\" AS SELECT * FROM test2", + "te.st", "te.st", "SELECT * FROM test2", false); + + parseValidateCreate("CREATE VIEW test.\"test\" AS SELECT * FROM test2", + "TEST", "test", "SELECT * FROM test2", false); + + parseValidateCreate("CREATE VIEW test AS SELECT * FROM test2;", + null, "TEST", "SELECT * FROM test2", false); + + parseValidateCreate("CREATE VIEW test AS SELECT * FROM test2 ;", + null, "TEST", "SELECT * FROM test2", false); + + parseValidateCreate("CREATE VIEW test AS SELECT * FROM test2; SELECT * FROM test", + null, "TEST", "SELECT * FROM test2", false); + + assertParseError(null, "CREATE VIEW test.test.test AS SELECT * FROM test2", + "Unexpected token: \".\" (expected: \"AS\")"); + + assertParseError(null, "CREATE VIEW test AS UNEXPECTED", + "Unexpected token: \"UNEXPECTED\" (expected: \"SELECT\")"); + + assertParseError(null, "CREATE VIEW test AS \"SELECT * FROM test2\"", + "Unexpected token: \"SELECT * FROM test2\" (expected: \"SELECT\")"); + + assertParseError(null, "CREATE OR REPLACE INDEX test", + "Unexpected token: \"INDEX\" (expected: \"VIEW\")"); + + assertParseError(null, "CREATE OR DROP VIEW test AS SELECT * FROM test2", + "Unexpected token: \"DROP\" (expected: \"REPLACE\")"); + } + + /** + * Test for DROP VIEW command. + */ + @Test + public void testDropView() { + parseValidateDrop("DROP VIEW test", null, "TEST", false); + parseValidateDrop("DROP VIEW test.test", "TEST", "TEST", false); + parseValidateDrop("DROP VIEW test.\"test\"", "TEST", "test", false); + parseValidateDrop("DROP VIEW \"test\".test", "test", "TEST", false); + parseValidateDrop("DROP VIEW \"te.st\".\"te.st\"", "te.st", "te.st", false); + parseValidateDrop("DROP VIEW IF EXISTS test", null, "TEST", true); + + assertParseError(null, "DROP VIEW test.test.test", + "Unexpected token: \".\""); + + assertParseError(null, "DROP VIEW 'test'", + "Unexpected token: \"test\" (expected: \"[qualified identifier]\", \"IF\")"); + + assertParseError(null, "DROP VIEW IF EXISTS 'test'", + "Unexpected token: \"test\" (expected: \"[qualified identifier]\")"); + } + + /** + * Parse and validate CREATE VIEW command. + */ + private static void parseValidateCreate( + String sql, + String schemaName, + String viewName, + String viewSql, + boolean replace + ) { + SqlCreateViewCommand cmd = (SqlCreateViewCommand)new SqlParser(null, sql).nextCommand(); + + assertEquals(schemaName, cmd.schemaName()); + assertEquals(viewName, cmd.viewName()); + assertEquals(viewSql, cmd.viewSql()); + assertEquals(replace, cmd.replace()); + } + + /** + * Parse and validate DROP VIEW command. + */ + private static void parseValidateDrop(String sql, String schemaName, String viewName, boolean ifExists) { + SqlDropViewCommand cmd = (SqlDropViewCommand)new SqlParser(null, sql).nextCommand(); + + assertEquals(schemaName, cmd.schemaName()); + assertEquals(viewName, cmd.viewName()); + assertEquals(ifExists, cmd.ifExists()); + } +} diff --git a/modules/core/src/test/java/org/apache/ignite/plugin/security/SecurityPermissionSetBuilderTest.java b/modules/core/src/test/java/org/apache/ignite/plugin/security/SecurityPermissionSetBuilderTest.java index ceecc47b176da..71a63938daf2a 100644 --- a/modules/core/src/test/java/org/apache/ignite/plugin/security/SecurityPermissionSetBuilderTest.java +++ b/modules/core/src/test/java/org/apache/ignite/plugin/security/SecurityPermissionSetBuilderTest.java @@ -99,7 +99,8 @@ public void testPermissionBuilder() { } }, IgniteException.class, "you can assign permission only start with [EVENTS_, ADMIN_, CACHE_CREATE, CACHE_DESTROY, " + - "JOIN_AS_SERVER, CHANGE_STATISTICS, REFRESH_STATISTICS], but you try TASK_EXECUTE" + "JOIN_AS_SERVER, CHANGE_STATISTICS, REFRESH_STATISTICS, SQL_VIEW_CREATE, SQL_VIEW_DROP], " + + "but you try TASK_EXECUTE" ); assertThrows(log, new Callable() { @@ -109,7 +110,8 @@ public void testPermissionBuilder() { } }, IgniteException.class, "you can assign permission only start with [EVENTS_, ADMIN_, CACHE_CREATE, CACHE_DESTROY, " + - "JOIN_AS_SERVER, CHANGE_STATISTICS, REFRESH_STATISTICS], but you try SERVICE_INVOKE" + "JOIN_AS_SERVER, CHANGE_STATISTICS, REFRESH_STATISTICS, SQL_VIEW_CREATE, SQL_VIEW_DROP], " + + "but you try SERVICE_INVOKE" ); permsBuilder diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2SchemaManager.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2SchemaManager.java index b93d6ce21f4a0..e5e45f7299423 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2SchemaManager.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/H2SchemaManager.java @@ -383,6 +383,30 @@ private static boolean isSystemIndex(Index idx) { tbl.markRebuildFromHashInProgress(false); } + /** {@inheritDoc} */ + @Override public void onViewCreated(String schemaName, String viewName, String viewSql) { + try (H2PooledConnection conn = connMgr.connection(schemaName)) { + try (Statement s = conn.connection().createStatement()) { + s.execute("CREATE OR REPLACE VIEW \"" + viewName + "\" AS " + viewSql); + } + } + catch (SQLException e) { + throw new IgniteException("Failed to create view: " + viewName, e); + } + } + + /** {@inheritDoc} */ + @Override public void onViewDropped(String schemaName, String viewName) { + try (H2PooledConnection conn = connMgr.connection(schemaName)) { + try (Statement s = conn.connection().createStatement()) { + s.execute("DROP VIEW IF EXISTS \"" + viewName + "\""); + } + } + catch (SQLException e) { + throw new IgniteException("Failed to drop view: " + viewName, e); + } + } + /** * Get table descriptor. * diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/QueryParser.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/QueryParser.java index 3452ca2fcf7ad..534564384a38a 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/QueryParser.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/QueryParser.java @@ -73,8 +73,9 @@ public class QueryParser { /** A pattern for commands having internal implementation in Ignite. */ private static final Pattern INTERNAL_CMD_RE = Pattern.compile( - "^(create|drop)\\s+index|^analyze\\s|^refresh\\sstatistics|^drop\\sstatistics|^alter\\s+table|^copy" + + "^(create|drop)\\s+index|^analyze\\s|^refresh\\s+statistics|^drop\\s+statistics|^alter\\s+table|^copy" + "|^set|^begin|^start|^commit|^rollback|^(create|alter|drop)\\s+user" + + "|^(create|create\\s+or\\s+replace|drop)\\s+view" + "|^kill\\s+(query|scan|continuous|compute|service|transaction|client)|show|help|grant|revoke", Pattern.CASE_INSENSITIVE); diff --git a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java index fd0d76e216bce..d22f7b2a572bc 100644 --- a/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java +++ b/modules/indexing/src/main/java/org/apache/ignite/internal/processors/query/h2/sql/GridSqlQueryParser.java @@ -651,7 +651,7 @@ private GridSqlElement parseTableFilter(TableFilter filter) { if (res instanceof GridSqlTable && filter.getIndexHints() != null) ((GridSqlTable)res).useIndexes(new ArrayList<>(filter.getIndexHints().getAllowedIndexes())); - String alias = ALIAS.get(filter); + String alias = filter.getTable().isView() ? filter.getTableAlias() : ALIAS.get(filter); if (alias != null) res = new GridSqlAlias(alias, res, false); 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 d462f491cb892..f0d0e22646799 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 @@ -465,7 +465,7 @@ public void testViews() { Set actViews = new TreeSet<>(); - List> res = execute(ignite0, "SELECT * FROM SYS.VIEWS"); + List> res = execute(ignite0, "SELECT name FROM SYS.VIEWS"); for (List row : res) actViews.add(row.get(0).toString()); diff --git a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/SqlUnsupportedSelfTest.java b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/SqlUnsupportedSelfTest.java index cf891a054ddce..f8f03323e5fff 100644 --- a/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/SqlUnsupportedSelfTest.java +++ b/modules/indexing/src/test/java/org/apache/ignite/internal/processors/query/h2/sql/SqlUnsupportedSelfTest.java @@ -204,9 +204,6 @@ public void testUnsupportedSqlStatements() { assertSqlUnsupported("ALTER INDEX idx0 RENAME TO idx1"); - assertSqlUnsupported("CREATE VIEW test_view AS SELECT * FROM test WHERE id < 100"); - assertSqlUnsupported("DROP VIEW test_view"); - assertSqlUnsupported("CREATE SEQUENCE SEQ_0"); assertSqlUnsupported("ALTER SEQUENCE SEQ_ID RESTART WITH 1000"); assertSqlUnsupported("DROP SEQUENCE SEQ_0"); 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 0c84f0ed9415a..e5d4ef15244f2 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 @@ -152,6 +152,7 @@ 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; @@ -187,6 +188,7 @@ SqlParserSetStreamingSelfTest.class, SqlParserKillQuerySelfTest.class, SqlParserMultiStatementSelfTest.class, + SqlParserViewSelfTest.class, SqlConnectorConfigurationValidationSelfTest.class, ClientConnectorConfigurationValidationSelfTest.class, From 62ab53728c9c30d2a4f79a541a09b052a3570580 Mon Sep 17 00:00:00 2001 From: Aleksandr Nikolaev <56360298+nao-it@users.noreply.github.com> Date: Thu, 26 Sep 2024 12:17:26 +0300 Subject: [PATCH 10/11] IGNITE-23249 Update janino dependency to 3.1.12 version (#11551) --- modules/calcite/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/calcite/pom.xml b/modules/calcite/pom.xml index 7b09999076c10..d80b33b8258d3 100644 --- a/modules/calcite/pom.xml +++ b/modules/calcite/pom.xml @@ -40,7 +40,7 @@ 3.10.0 1.0.1 2.8.2 - 3.1.8 + 3.1.12 2.4 2.9.0 0.10.2 From 03bbc2dce83cba0bdf5910532e64a2f6660fadab Mon Sep 17 00:00:00 2001 From: Aleksandr Nikolaev <56360298+nao-it@users.noreply.github.com> Date: Thu, 26 Sep 2024 12:59:27 +0300 Subject: [PATCH 11/11] IGNITE-23265 Update jtidy in ignite-urideploy module (#11556) Co-authored-by: Aleksandr Nikolaev --- modules/urideploy/pom.xml | 2 +- parent/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/urideploy/pom.xml b/modules/urideploy/pom.xml index 360a549829038..2d3af25d13671 100644 --- a/modules/urideploy/pom.xml +++ b/modules/urideploy/pom.xml @@ -77,7 +77,7 @@ - net.sf.jtidy + com.github.jtidy jtidy ${jtidy.version} diff --git a/parent/pom.xml b/parent/pom.xml index ae30cf139a74d..395df17f16d64 100644 --- a/parent/pom.xml +++ b/parent/pom.xml @@ -89,7 +89,7 @@ 4.5.2 3.1.15 2.3.1-M1 - r938 + 1.0.5 2.22.0 7.4.0_1 8.11.2