diff --git a/modules/calcite/pom.xml b/modules/calcite/pom.xml
index fb42c00c24094..a2d331c801367 100644
--- a/modules/calcite/pom.xml
+++ b/modules/calcite/pom.xml
@@ -341,6 +341,10 @@
outputRoot="${project.build.directory}/generated-sources/fmpp"
data="tdd(${project.build.directory}/codegen/config.fmpp), default: tdd(${project.build.directory}/codegen/default_config.fmpp)"
/>
+
diff --git a/modules/calcite/src/main/codegen/includes/parserImpls.ftl b/modules/calcite/src/main/codegen/includes/parserImpls.ftl
index 8c5c964b609dd..855527f8fd499 100644
--- a/modules/calcite/src/main/codegen/includes/parserImpls.ftl
+++ b/modules/calcite/src/main/codegen/includes/parserImpls.ftl
@@ -816,3 +816,17 @@ SqlDrop SqlDropView(Span s, boolean replace) :
return SqlDdlNodes.dropView(s.end(this), ifExists, id);
}
}
+
+JAVACODE
+SqlNode FetchCount() {
+ SqlNode e;
+ if (getToken(1).kind == LPAREN) {
+ jj_consume_token(LPAREN);
+ e = Expression(ExprContext.ACCEPT_NON_QUERY);
+ jj_consume_token(RPAREN);
+ }
+ else
+ e = UnsignedNumericLiteralOrParam();
+
+ return e;
+}
diff --git a/modules/calcite/src/main/codegen/patches/select-fetch-expression.patch b/modules/calcite/src/main/codegen/patches/select-fetch-expression.patch
new file mode 100644
index 0000000000000..70b024b00f8f3
--- /dev/null
+++ b/modules/calcite/src/main/codegen/patches/select-fetch-expression.patch
@@ -0,0 +1,26 @@
+#
+# 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.
+#
+--- javacc/Parser.jj
++++ javacc/Parser.jj
+@@ -754,7 +754,7 @@
+ {
+ // SQL:2008-style syntax. "OFFSET ... FETCH ...".
+ // If you specify both LIMIT and FETCH, FETCH wins.
+- ( | ) offsetFetch[1] = UnsignedNumericLiteralOrParam()
++ ( | ) offsetFetch[1] = FetchCount()
+ ( | )
+ }
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 3ff4bc544504c..cd4af5de10e1a 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
@@ -626,8 +626,8 @@ private boolean hasExchange(RelNode rel) {
/** {@inheritDoc} */
@Override public Node visit(IgniteLimit rel) {
- Supplier offset = (rel.offset() == null) ? null : expressionFactory.execute(rel.offset());
- Supplier fetch = (rel.fetch() == null) ? null : expressionFactory.execute(rel.fetch());
+ Supplier offset = (rel.offset() == null) ? null : expressionFactory.execute(rel.offset());
+ Supplier fetch = (rel.fetch() == null) ? null : expressionFactory.execute(rel.fetch());
LimitNode node = new LimitNode<>(ctx, rel.getRowType(), offset, fetch);
@@ -642,8 +642,8 @@ private boolean hasExchange(RelNode rel) {
@Override public Node visit(IgniteSort rel) {
RelCollation collation = rel.getCollation();
- Supplier offset = (rel.offset == null) ? null : expressionFactory.execute(rel.offset);
- Supplier fetch = (rel.fetch == null) ? null : expressionFactory.execute(rel.fetch);
+ Supplier offset = (rel.offset == null) ? null : expressionFactory.execute(rel.offset);
+ Supplier fetch = (rel.fetch == null) ? null : expressionFactory.execute(rel.fetch);
SortNode node = new SortNode<>(ctx, rel.getRowType(), expressionFactory.comparator(collation), offset,
fetch);
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/LimitNode.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/LimitNode.java
index 9fa9d14090cd8..993fbc5970f4a 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/LimitNode.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/LimitNode.java
@@ -35,7 +35,7 @@ public class LimitNode extends AbstractNode implements SingleNode
private int rowsProcessed;
/** Fetch can be unset, in this case we need all rows. */
- private @Nullable Supplier fetchNode;
+ private final @Nullable Supplier fetchNode;
/** Waiting results counter. */
private int waiting;
@@ -49,13 +49,13 @@ public class LimitNode extends AbstractNode implements SingleNode
public LimitNode(
ExecutionContext ctx,
RelDataType rowType,
- Supplier offsetNode,
- Supplier fetchNode
+ @Nullable Supplier offsetNode,
+ @Nullable Supplier fetchNode
) {
super(ctx, rowType);
- offset = offsetNode == null ? 0 : offsetNode.get();
- fetch = fetchNode == null ? 0 : fetchNode.get();
+ offset = RelNodeUtils.limitValueWithCheck(offsetNode, "OFFSET");
+ fetch = RelNodeUtils.limitValueWithCheck(fetchNode, "FETCH");
this.fetchNode = fetchNode;
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/RelNodeUtils.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/RelNodeUtils.java
new file mode 100644
index 0000000000000..3c455cdee9190
--- /dev/null
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/RelNodeUtils.java
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to you under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.query.calcite.exec.rel;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.function.Supplier;
+import org.apache.ignite.internal.processors.query.IgniteSQLException;
+import org.jetbrains.annotations.Nullable;
+
+/** Utility class for rel nodes containing useful methods and constants. */
+class RelNodeUtils {
+ /** Decimal of Integer.MAX_VALUE for fetch/offset bounding. */
+ private static final BigDecimal DEC_INT_MAX = BigDecimal.valueOf(Integer.MAX_VALUE);
+
+ /** */
+ static int limitValueWithCheck(@Nullable Supplier s, String name) {
+ if (s == null)
+ return 0;
+
+ Number n = s.get();
+
+ if (n == null)
+ throw new IgniteSQLException(name + " must not be null");
+ else if (n instanceof Double || n instanceof Float) {
+ double v = n.doubleValue();
+
+ if (!Double.isFinite(v))
+ throw new IgniteSQLException(name + " must be an finite number");
+ }
+
+ BigDecimal v = new BigDecimal(n.toString()).setScale(0, RoundingMode.DOWN);
+
+ if (v.compareTo(BigDecimal.ZERO) < 0)
+ throw new IgniteSQLException(name + " must not be negative");
+ else if (v.compareTo(DEC_INT_MAX) > 0)
+ throw new IgniteSQLException(name + " must not be greater than " + DEC_INT_MAX);
+
+ return v.intValue();
+ }
+}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/SortNode.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/SortNode.java
index 09376b210f601..9706fa124de81 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/SortNode.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/exec/rel/SortNode.java
@@ -58,15 +58,13 @@ public class SortNode extends MemoryTrackingNode implements SingleNode
public SortNode(
ExecutionContext ctx, RelDataType rowType,
Comparator comp,
- @Nullable Supplier offset,
- @Nullable Supplier fetch
+ @Nullable Supplier offset,
+ @Nullable Supplier fetch
) {
super(ctx, rowType);
- assert fetch == null || fetch.get() >= 0;
- assert offset == null || offset.get() >= 0;
-
- limit = fetch == null ? -1 : fetch.get() + (offset == null ? 0 : offset.get());
+ limit = fetch == null ?
+ -1 : RelNodeUtils.limitValueWithCheck(fetch, "FETCH") + RelNodeUtils.limitValueWithCheck(offset, "OFFSET");
if (limit < 0)
rows = new PriorityQueue<>(comp);
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlToRelConvertor.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlToRelConvertor.java
index fa8b31d7eee69..d6cb129c10b5c 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlToRelConvertor.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlToRelConvertor.java
@@ -19,22 +19,30 @@
import java.util.ArrayDeque;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Deque;
import java.util.List;
+import java.util.Set;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.plan.RelOptTable;
import org.apache.calcite.prepare.Prepare;
+import org.apache.calcite.rel.RelCollation;
+import org.apache.calcite.rel.RelFieldCollation;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.RelRoot;
import org.apache.calcite.rel.core.JoinRelType;
+import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.logical.LogicalJoin;
import org.apache.calcite.rel.logical.LogicalProject;
import org.apache.calcite.rel.logical.LogicalTableModify;
import org.apache.calcite.rel.logical.LogicalValues;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeField;
+import org.apache.calcite.rex.RexDynamicParam;
import org.apache.calcite.rex.RexInputRef;
+import org.apache.calcite.rex.RexLiteral;
import org.apache.calcite.rex.RexNode;
+import org.apache.calcite.rex.RexUtil;
import org.apache.calcite.sql.SqlCall;
import org.apache.calcite.sql.SqlIdentifier;
import org.apache.calcite.sql.SqlInsert;
@@ -46,11 +54,15 @@
import org.apache.calcite.sql.validate.SqlValidator;
import org.apache.calcite.sql.validate.SqlValidatorScope;
import org.apache.calcite.sql.validate.SqlValidatorUtil;
+import org.apache.calcite.sql2rel.RelFieldTrimmer;
import org.apache.calcite.sql2rel.SqlRexConvertletTable;
import org.apache.calcite.sql2rel.SqlToRelConverter;
import org.apache.calcite.tools.RelBuilder;
import org.apache.calcite.util.ControlFlowException;
+import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Pair;
+import org.apache.calcite.util.mapping.Mapping;
+import org.apache.calcite.util.mapping.Mappings;
import org.apache.ignite.internal.processors.query.calcite.schema.IgniteTable;
import org.jetbrains.annotations.Nullable;
@@ -87,6 +99,11 @@ public IgniteSqlToRelConvertor(
return super.convertQueryRecursive(qry, top, targetRowType);
}
+ /** {@inheritDoc} */
+ @Override protected RelFieldTrimmer newFieldTrimmer() {
+ return new IgniteRelFieldTrimmer(validator, relBuilder);
+ }
+
/** {@inheritDoc} */
@Override protected RelNode convertInsert(SqlInsert call) {
datasetStack.push(call);
@@ -199,6 +216,58 @@ private boolean hasDefaults(SqlCall call) {
}
}
+ /** Field trimmer that preserves expression-based OFFSET/FETCH nodes. */
+ public static class IgniteRelFieldTrimmer extends RelFieldTrimmer {
+ /** */
+ private IgniteRelFieldTrimmer(@Nullable SqlValidator validator, RelBuilder relBuilder) {
+ super(validator, relBuilder);
+ }
+
+ /** {@inheritDoc} */
+ @Override public TrimResult trimFields(
+ Sort sort,
+ ImmutableBitSet fieldsUsed,
+ Set extraFields
+ ) {
+ if (supportedByRelBuilder(sort.offset) && supportedByRelBuilder(sort.fetch))
+ return super.trimFields(sort, fieldsUsed, extraFields);
+
+ RelCollation collation = sort.getCollation();
+ RelNode input = sort.getInput();
+ int fieldCnt = sort.getRowType().getFieldCount();
+
+ ImmutableBitSet.Builder inputFieldsUsed = fieldsUsed.rebuild();
+
+ for (RelFieldCollation field : collation.getFieldCollations())
+ inputFieldsUsed.set(field.getFieldIndex());
+
+ TrimResult trimRes = trimChild(sort, input, inputFieldsUsed.build(), Collections.emptySet());
+ RelNode newInput = trimRes.left;
+ Mapping inputMapping = trimRes.right;
+
+ if (newInput == input && inputMapping.isIdentity() && fieldsUsed.cardinality() == fieldCnt)
+ return result(sort, Mappings.createIdentity(fieldCnt));
+
+ RelNode newSort = sort.copy(
+ sort.getTraitSet(),
+ newInput,
+ RexUtil.apply(inputMapping, collation),
+ sort.offset,
+ sort.fetch
+ );
+
+ return result(newSort, inputMapping, sort);
+ }
+
+ /**
+ * @param node Rex node.
+ * @return {@code true} if Calcite RelBuilder accepts the node for OFFSET/FETCH.
+ */
+ private static boolean supportedByRelBuilder(@Nullable RexNode node) {
+ return node == null || node instanceof RexLiteral || node instanceof RexDynamicParam;
+ }
+ }
+
/**
* This method was copy-pasted from super-method except this changes:
* - For updateCall we require all columns in the project and should not skip anything.
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
index 8d25cf1c249a0..63d4a008404eb 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteSqlValidator.java
@@ -18,9 +18,11 @@
package org.apache.ignite.internal.processors.query.calcite.prepare;
import java.math.BigDecimal;
+import java.math.RoundingMode;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumSet;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -65,7 +67,6 @@
import org.apache.calcite.sql.validate.SqlValidatorScope;
import org.apache.calcite.sql.validate.SqlValidatorTable;
import org.apache.calcite.sql.validate.SqlValidatorUtil;
-import org.apache.calcite.util.Static;
import org.apache.ignite.internal.processors.query.QueryUtils;
import org.apache.ignite.internal.processors.query.calcite.schema.CacheTableDescriptor;
import org.apache.ignite.internal.processors.query.calcite.schema.IgniteCacheTable;
@@ -112,6 +113,9 @@ public class IgniteSqlValidator extends SqlValidatorImpl {
/** */
private final RelDataType nullType;
+ /** Dynamic parameter types by parameter index. */
+ private final Map dynamicParamTypeByIdx = new HashMap<>();
+
/**
* Creates a validator.
*
@@ -173,7 +177,7 @@ private void validateTableModify(SqlNode table) {
final SqlValidatorTable targetTable = getCatalogReader().getTable(((SqlIdentifier)table).names);
if (targetTable == null)
- throw newValidationError(table, Static.RESOURCE.objectNotFound(table.toString()));
+ throw newValidationError(table, RESOURCE.objectNotFound(table.toString()));
if (!targetTable.unwrap(IgniteTable.class).isModifiable())
throw newValidationError(table, IgniteResource.INSTANCE.modifyTableNotSupported(table.toString()));
@@ -192,7 +196,7 @@ private void validateTableModify(SqlNode table) {
final SqlValidatorTable table = getCatalogReader().getTable(targetTable.names);
if (table == null)
- throw newValidationError(call, Static.RESOURCE.objectNotFound(targetTable.toString()));
+ throw newValidationError(call, RESOURCE.objectNotFound(targetTable.toString()));
SqlIdentifier alias = call.getAlias() != null ? call.getAlias() :
new SqlIdentifier(deriveAlias(targetTable, 0), SqlParserPos.ZERO);
@@ -265,26 +269,76 @@ private void validateTableModify(SqlNode table) {
* @param nodeName Node name.
*/
private void checkIntegerLimit(SqlNode n, String nodeName) {
- if (n instanceof SqlLiteral) {
- BigDecimal offFetchLimit = ((SqlLiteral)n).bigDecimalValue();
+ if (n == null)
+ return;
+
+ deriveDynamicParameterTypes(n);
+
+ BigDecimal offFetchLimit = limitValue(n, nodeName);
+
+ if (offFetchLimit != null) {
+ offFetchLimit = offFetchLimit.setScale(0, RoundingMode.DOWN);
if (offFetchLimit.compareTo(DEC_INT_MAX) > 0 || offFetchLimit.compareTo(BigDecimal.ZERO) < 0)
throw newValidationError(n, IgniteResource.INSTANCE.correctIntegerLimit(nodeName));
}
- else if (n instanceof SqlDynamicParam) {
- // will fail in params check.
+ }
+
+ /**
+ * @param n Limit node.
+ * @param nodeName Node name.
+ * @return Limit value, or {@code null} if the node is not an atomic value.
+ */
+ private @Nullable BigDecimal limitValue(SqlNode n, String nodeName) {
+ if (n instanceof SqlLiteral) {
+ if (((SqlLiteral)n).getTypeName().getFamily() != SqlTypeFamily.NUMERIC)
+ throw newValidationError(n, IgniteResource.INSTANCE.correctIntegerLimit(nodeName));
+
+ return ((SqlLiteral)n).bigDecimalValue();
+ }
+
+ if (n instanceof SqlDynamicParam) {
+ // Will fail in params check.
if (F.isEmpty(parameters))
- return;
+ return null;
int idx = ((SqlDynamicParam)n).getIndex();
- if (idx < parameters.length) {
- Object param = parameters[idx];
- if (parameters[idx] instanceof Integer) {
- if ((Integer)param < 0)
- throw newValidationError(n, IgniteResource.INSTANCE.correctIntegerLimit(nodeName));
- }
+ if (idx >= parameters.length)
+ return null;
+
+ Object param = parameters[idx];
+
+ if (!(param instanceof Number))
+ return null;
+ else if (param instanceof Double || param instanceof Float) {
+ if (!Double.isFinite(((Number)param).doubleValue()))
+ throw newValidationError(n, IgniteResource.INSTANCE.correctIntegerLimit(nodeName));
}
+
+ return new BigDecimal(param.toString());
+ }
+
+ return null;
+ }
+
+ /**
+ * @param n Node to check.
+ */
+ private void deriveDynamicParameterTypes(SqlNode n) {
+ if (n instanceof SqlDynamicParam) {
+ RelDataType dataType = typeFactory().createTypeWithNullability(
+ typeFactory().createSqlType(SqlTypeName.DECIMAL), true);
+ SqlDynamicParam paramNode = (SqlDynamicParam)n;
+
+ if (deriveDynamicParameterType(paramNode, dataType) == null) {
+ setValidatedNodeType(paramNode, dataType);
+ dynamicParamTypeByIdx.put(paramNode.getIndex(), dataType);
+ }
+ }
+ else if (n instanceof SqlCall) {
+ for (SqlNode operand : ((SqlCall)n).getOperandList())
+ deriveDynamicParameterTypes(operand);
}
}
@@ -569,9 +623,28 @@ private boolean isSystemFieldName(String alias) {
return super.deriveType(scope, expr);
}
+ /** {@inheritDoc} */
+ @Override public @Nullable RelDataType getValidatedNodeTypeIfKnown(SqlNode node) {
+ RelDataType type = super.getValidatedNodeTypeIfKnown(node);
+
+ if (type == null && node instanceof SqlDynamicParam) {
+ SqlDynamicParam param = (SqlDynamicParam)node;
+
+ type = dynamicParamTypeByIdx.get(param.getIndex());
+
+ if (type == null)
+ type = dynamicParameterType(param, nullType);
+ }
+
+ return type;
+ }
+
/** @return A derived type or {@code null} if unable to determine. */
@Nullable private RelDataType deriveDynamicParameterType(SqlDynamicParam node, RelDataType nullValType) {
- RelDataType type = getValidatedNodeTypeIfKnown(node);
+ RelDataType type = super.getValidatedNodeTypeIfKnown(node);
+
+ if (type == null)
+ type = dynamicParamTypeByIdx.get(node.getIndex());
// Do not clarify the widest type for any value.
if (type instanceof OtherType)
@@ -585,11 +658,28 @@ private boolean isSystemFieldName(String alias) {
if (val == null && type != null)
return type;
- type = val == null
+ type = dynamicParameterType(node, nullValType);
+
+ if (type == null)
+ return null;
+
+ setValidatedNodeType(node, type);
+
+ return type;
+ }
+
+ /** @return Dynamic parameter type derived from parameter value, or {@code null} if unable to determine. */
+ @Nullable private RelDataType dynamicParameterType(SqlDynamicParam node, RelDataType nullValType) {
+ if (parameters == null || node.getIndex() >= parameters.length)
+ return null;
+
+ Object val = parameters[node.getIndex()];
+
+ RelDataType type = val == null
? typeFactory().createTypeWithNullability(nullValType, true)
: typeFactory().createTypeWithNullability(typeFactory().toSql(typeFactory().createType(val.getClass())), true);
- setValidatedNodeType(node, type);
+ dynamicParamTypeByIdx.put(node.getIndex(), type);
return type;
}
diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerPhase.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerPhase.java
index b8333a541663f..d731697c41fae 100644
--- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerPhase.java
+++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/PlannerPhase.java
@@ -43,6 +43,7 @@
import org.apache.calcite.rel.rules.PruneEmptyRules;
import org.apache.calcite.rel.rules.SetOpToFilterRule;
import org.apache.calcite.rel.rules.SortRemoveRule;
+import org.apache.calcite.rex.RexLiteral;
import org.apache.calcite.tools.Program;
import org.apache.calcite.tools.RuleSet;
import org.apache.calcite.tools.RuleSets;
@@ -259,7 +260,9 @@ public enum PlannerPhase {
((RelRule>)PruneEmptyRules.SORT_FETCH_ZERO_INSTANCE).config
.withOperandSupplier(b ->
- b.operand(LogicalSort.class).anyInputs())
+ b.operand(LogicalSort.class)
+ .predicate(sort -> sort.fetch instanceof RexLiteral)
+ .anyInputs())
.toRule(),
ExposeIndexRule.INSTANCE,
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 05d733e02329c..f7e2f6a90932c 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
@@ -675,7 +675,7 @@ final public void FetchClause(SqlNode[] offsetFetch) throws ParseException {
jj_consume_token(-1);
throw new ParseException();
}
- offsetFetch[1] = UnsignedNumericLiteralOrParam();
+ offsetFetch[1] = FetchCount();
if (jj_2_19(2)) {
jj_consume_token(ROW);
} else if (jj_2_20(2)) {
@@ -2023,6 +2023,19 @@ final public SqlDrop SqlDropView(Span s, boolean replace) throws ParseException
throw new Error("Missing return statement in function");
}
+ SqlNode FetchCount() throws ParseException {
+ SqlNode e;
+ if (getToken(1).kind == LPAREN) {
+ jj_consume_token(LPAREN);
+ e = Expression(ExprContext.ACCEPT_NON_QUERY);
+ jj_consume_token(RPAREN);
+ }
+ else
+ e = UnsignedNumericLiteralOrParam();
+
+ return e;
+ }
+
final public SqlNodeList ParenthesizedKeyValueOptionCommaList() throws ParseException {
final Span s;
final List list = new ArrayList();
@@ -24191,128 +24204,6 @@ final private boolean jj_2_1805(int xla) {
finally { jj_save(1804, xla); }
}
- final private boolean jj_3_642() {
- if (jj_scan_token(HOUR)) return true;
- return false;
- }
-
- final private boolean jj_3_641() {
- if (jj_scan_token(MINUTE)) return true;
- return false;
- }
-
- final private boolean jj_3_264() {
- if (jj_scan_token(WITH)) return true;
- if (jj_scan_token(ORDINALITY)) return true;
- return false;
- }
-
- final private boolean jj_3_640() {
- if (jj_scan_token(SECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_639() {
- if (jj_scan_token(MILLISECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_638() {
- if (jj_scan_token(MICROSECOND)) return true;
- return false;
- }
-
- final private boolean jj_3R_270() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_637()) {
- jj_scanpos = xsp;
- if (jj_3_638()) {
- jj_scanpos = xsp;
- if (jj_3_639()) {
- jj_scanpos = xsp;
- if (jj_3_640()) {
- jj_scanpos = xsp;
- if (jj_3_641()) {
- jj_scanpos = xsp;
- if (jj_3_642()) {
- jj_scanpos = xsp;
- if (jj_3_643()) {
- jj_scanpos = xsp;
- if (jj_3_644()) {
- jj_scanpos = xsp;
- if (jj_3_645()) {
- jj_scanpos = xsp;
- if (jj_3_646()) {
- jj_scanpos = xsp;
- if (jj_3_647()) {
- jj_scanpos = xsp;
- if (jj_3_648()) {
- jj_scanpos = xsp;
- if (jj_3_649()) {
- jj_scanpos = xsp;
- if (jj_3_650()) {
- jj_scanpos = xsp;
- if (jj_3_651()) {
- jj_scanpos = xsp;
- if (jj_3_652()) {
- jj_scanpos = xsp;
- if (jj_3_653()) {
- jj_scanpos = xsp;
- if (jj_3_654()) {
- jj_scanpos = xsp;
- if (jj_3_655()) {
- jj_scanpos = xsp;
- if (jj_3_656()) {
- jj_scanpos = xsp;
- if (jj_3_657()) return true;
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- final private boolean jj_3_637() {
- if (jj_scan_token(NANOSECOND)) return true;
- return false;
- }
-
- final private boolean jj_3_263() {
- if (jj_scan_token(LATERAL)) return true;
- return false;
- }
-
- final private boolean jj_3_262() {
- if (jj_3R_168()) return true;
- return false;
- }
-
- final private boolean jj_3_268() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_263()) jj_scanpos = xsp;
- if (jj_scan_token(UNNEST)) return true;
- if (jj_3R_173()) return true;
- return false;
- }
-
final private boolean jj_3_259() {
if (jj_3R_168()) return true;
return false;
@@ -28570,13 +28461,6 @@ final private boolean jj_3_485() {
return false;
}
- final private boolean jj_3R_242() {
- if (jj_scan_token(VIEW)) return true;
- if (jj_3R_133()) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
final private boolean jj_3_484() {
if (jj_3R_152()) return true;
return false;
@@ -28603,8 +28487,9 @@ final private boolean jj_3_481() {
return false;
}
- final private boolean jj_3R_238() {
+ final private boolean jj_3R_242() {
if (jj_scan_token(VIEW)) return true;
+ if (jj_3R_133()) return true;
if (jj_3R_152()) return true;
return false;
}
@@ -28645,9 +28530,9 @@ final private boolean jj_3_475() {
return false;
}
- final private boolean jj_3R_104() {
- if (jj_scan_token(ANALYZE)) return true;
- if (jj_3R_354()) return true;
+ final private boolean jj_3R_238() {
+ if (jj_scan_token(VIEW)) return true;
+ if (jj_3R_152()) return true;
return false;
}
@@ -28718,9 +28603,9 @@ final private boolean jj_3_941() {
return false;
}
- final private boolean jj_3R_105() {
- if (jj_scan_token(REFRESH)) return true;
- if (jj_scan_token(STATISTICS)) return true;
+ final private boolean jj_3R_104() {
+ if (jj_scan_token(ANALYZE)) return true;
+ if (jj_3R_354()) return true;
return false;
}
@@ -28735,8 +28620,8 @@ final private boolean jj_3R_325() {
return false;
}
- final private boolean jj_3R_106() {
- if (jj_scan_token(DROP)) return true;
+ final private boolean jj_3R_105() {
+ if (jj_scan_token(REFRESH)) return true;
if (jj_scan_token(STATISTICS)) return true;
return false;
}
@@ -28746,11 +28631,6 @@ final private boolean jj_3_471() {
return false;
}
- final private boolean jj_3_147() {
- if (jj_3R_84()) return true;
- return false;
- }
-
final private boolean jj_3_473() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_139()) return true;
@@ -28763,24 +28643,19 @@ final private boolean jj_3_940() {
return false;
}
- final private boolean jj_3_146() {
- if (jj_3R_119()) return true;
- return false;
- }
-
final private boolean jj_3_472() {
if (jj_scan_token(RPAREN)) return true;
return false;
}
- final private boolean jj_3_939() {
- if (jj_scan_token(LAST)) return true;
+ final private boolean jj_3R_106() {
+ if (jj_scan_token(DROP)) return true;
+ if (jj_scan_token(STATISTICS)) return true;
return false;
}
- final private boolean jj_3R_136() {
- if (jj_3R_364()) return true;
- if (jj_scan_token(EQ)) return true;
+ final private boolean jj_3_939() {
+ if (jj_scan_token(LAST)) return true;
return false;
}
@@ -28808,6 +28683,11 @@ final private boolean jj_3_937() {
return false;
}
+ final private boolean jj_3_147() {
+ if (jj_3R_84()) return true;
+ return false;
+ }
+
final private boolean jj_3_936() {
if (jj_scan_token(RUNNING)) return true;
return false;
@@ -28824,8 +28704,8 @@ final private boolean jj_3R_416() {
return false;
}
- final private boolean jj_3_145() {
- if (jj_scan_token(MAX_CHANGED_PARTITION_ROWS_PERCENT)) return true;
+ final private boolean jj_3_146() {
+ if (jj_3R_119()) return true;
return false;
}
@@ -28848,11 +28728,32 @@ final private boolean jj_3R_324() {
return false;
}
+ final private boolean jj_3R_136() {
+ if (jj_3R_364()) return true;
+ if (jj_scan_token(EQ)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_145() {
+ if (jj_scan_token(MAX_CHANGED_PARTITION_ROWS_PERCENT)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_935() {
+ if (jj_scan_token(FINAL)) return true;
+ return false;
+ }
+
final private boolean jj_3_144() {
if (jj_scan_token(NULLS)) return true;
return false;
}
+ final private boolean jj_3_934() {
+ if (jj_scan_token(RUNNING)) return true;
+ return false;
+ }
+
final private boolean jj_3_143() {
if (jj_scan_token(SIZE)) return true;
return false;
@@ -28882,32 +28783,6 @@ final private boolean jj_3R_364() {
return false;
}
- final private boolean jj_3_141() {
- if (jj_scan_token(DISTINCT)) return true;
- return false;
- }
-
- final private boolean jj_3_935() {
- if (jj_scan_token(FINAL)) return true;
- return false;
- }
-
- final private boolean jj_3_139() {
- if (jj_scan_token(QUOTED_IDENTIFIER)) return true;
- return false;
- }
-
- final private boolean jj_3_934() {
- if (jj_scan_token(RUNNING)) return true;
- return false;
- }
-
- final private boolean jj_3_137() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_136()) return true;
- return false;
- }
-
final private boolean jj_3R_326() {
Token xsp;
xsp = jj_scanpos;
@@ -28919,8 +28794,8 @@ final private boolean jj_3R_326() {
return false;
}
- final private boolean jj_3_138() {
- if (jj_3R_136()) return true;
+ final private boolean jj_3_141() {
+ if (jj_scan_token(DISTINCT)) return true;
return false;
}
@@ -28930,14 +28805,8 @@ final private boolean jj_3_468() {
return false;
}
- final private boolean jj_3_140() {
- if (jj_scan_token(WITH)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_138()) {
- jj_scanpos = xsp;
- if (jj_3_139()) return true;
- }
+ final private boolean jj_3_139() {
+ if (jj_scan_token(QUOTED_IDENTIFIER)) return true;
return false;
}
@@ -28951,6 +28820,12 @@ final private boolean jj_3_933() {
return false;
}
+ final private boolean jj_3_137() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_136()) return true;
+ return false;
+ }
+
final private boolean jj_3_932() {
if (jj_3R_325()) return true;
return false;
@@ -28966,6 +28841,11 @@ final private boolean jj_3_931() {
return false;
}
+ final private boolean jj_3_138() {
+ if (jj_3R_136()) return true;
+ return false;
+ }
+
final private boolean jj_3_930() {
if (jj_scan_token(MATCH_NUMBER)) return true;
if (jj_scan_token(LPAREN)) return true;
@@ -28978,9 +28858,14 @@ final private boolean jj_3_465() {
return false;
}
- final private boolean jj_3_136() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_135()) return true;
+ final private boolean jj_3_140() {
+ if (jj_scan_token(WITH)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_138()) {
+ jj_scanpos = xsp;
+ if (jj_3_139()) return true;
+ }
return false;
}
@@ -29014,11 +28899,6 @@ final private boolean jj_3R_304() {
return false;
}
- final private boolean jj_3R_354() {
- if (jj_3R_135()) return true;
- return false;
- }
-
final private boolean jj_3_463() {
if (jj_scan_token(STRING_AGG)) return true;
return false;
@@ -29039,6 +28919,12 @@ final private boolean jj_3_460() {
return false;
}
+ final private boolean jj_3_136() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_135()) return true;
+ return false;
+ }
+
final private boolean jj_3R_327() {
Token xsp;
xsp = jj_scanpos;
@@ -29066,13 +28952,13 @@ final private boolean jj_3_927() {
return false;
}
- final private boolean jj_3_135() {
- if (jj_3R_124()) return true;
+ final private boolean jj_3_926() {
+ if (jj_scan_token(TUMBLE)) return true;
return false;
}
- final private boolean jj_3_926() {
- if (jj_scan_token(TUMBLE)) return true;
+ final private boolean jj_3R_354() {
+ if (jj_3R_135()) return true;
return false;
}
@@ -29090,13 +28976,8 @@ final private boolean jj_3R_312() {
return false;
}
- final private boolean jj_3R_135() {
- if (jj_3R_152()) return true;
- return false;
- }
-
- final private boolean jj_3_134() {
- if (jj_scan_token(TRANSACTION)) return true;
+ final private boolean jj_3_135() {
+ if (jj_3R_124()) return true;
return false;
}
@@ -29105,9 +28986,8 @@ final private boolean jj_3_458() {
return false;
}
- final private boolean jj_3R_101() {
- if (jj_scan_token(ROLLBACK)) return true;
- if (jj_scan_token(TO)) return true;
+ final private boolean jj_3R_135() {
+ if (jj_3R_152()) return true;
return false;
}
@@ -29122,7 +29002,7 @@ final private boolean jj_3_459() {
return false;
}
- final private boolean jj_3_133() {
+ final private boolean jj_3_134() {
if (jj_scan_token(TRANSACTION)) return true;
return false;
}
@@ -29139,9 +29019,9 @@ final private boolean jj_3R_303() {
return false;
}
- final private boolean jj_3R_100() {
- if (jj_scan_token(SAVEPOINT)) return true;
- if (jj_3R_84()) return true;
+ final private boolean jj_3R_101() {
+ if (jj_scan_token(ROLLBACK)) return true;
+ if (jj_scan_token(TO)) return true;
return false;
}
@@ -29150,11 +29030,14 @@ final private boolean jj_3R_207() {
return false;
}
- final private boolean jj_3R_103() {
- if (jj_scan_token(ROLLBACK)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_134()) jj_scanpos = xsp;
+ final private boolean jj_3_133() {
+ if (jj_scan_token(TRANSACTION)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_100() {
+ if (jj_scan_token(SAVEPOINT)) return true;
+ if (jj_3R_84()) return true;
return false;
}
@@ -29164,16 +29047,16 @@ final private boolean jj_3R_296() {
return false;
}
- final private boolean jj_3R_102() {
- if (jj_scan_token(COMMIT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_133()) jj_scanpos = xsp;
+ final private boolean jj_3_455() {
+ if (jj_3R_219()) return true;
return false;
}
- final private boolean jj_3_455() {
- if (jj_3R_219()) return true;
+ final private boolean jj_3R_103() {
+ if (jj_scan_token(ROLLBACK)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_134()) jj_scanpos = xsp;
return false;
}
@@ -29192,9 +29075,11 @@ final private boolean jj_3R_74() {
return false;
}
- final private boolean jj_3R_99() {
- if (jj_scan_token(KILL)) return true;
- if (jj_scan_token(QUERY)) return true;
+ final private boolean jj_3R_102() {
+ if (jj_scan_token(COMMIT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_133()) jj_scanpos = xsp;
return false;
}
@@ -29204,8 +29089,9 @@ final private boolean jj_3R_302() {
return false;
}
- final private boolean jj_3_132() {
- if (jj_scan_token(ASYNC)) return true;
+ final private boolean jj_3R_99() {
+ if (jj_scan_token(KILL)) return true;
+ if (jj_scan_token(QUERY)) return true;
return false;
}
@@ -29219,12 +29105,6 @@ final private boolean jj_3_452() {
return false;
}
- final private boolean jj_3R_98() {
- if (jj_scan_token(KILL)) return true;
- if (jj_scan_token(COMPUTE)) return true;
- return false;
- }
-
final private boolean jj_3_451() {
if (jj_scan_token(IMMEDIATELY)) return true;
if (jj_scan_token(SUCCEEDS)) return true;
@@ -29242,6 +29122,11 @@ final private boolean jj_3R_301() {
return false;
}
+ final private boolean jj_3_132() {
+ if (jj_scan_token(ASYNC)) return true;
+ return false;
+ }
+
final private boolean jj_3_449() {
if (jj_scan_token(IMMEDIATELY)) return true;
if (jj_scan_token(PRECEDES)) return true;
@@ -29253,9 +29138,9 @@ final private boolean jj_3_448() {
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(SERVICE)) return true;
+ if (jj_scan_token(COMPUTE)) return true;
return false;
}
@@ -29290,9 +29175,9 @@ final private boolean jj_3_924() {
return false;
}
- final private boolean jj_3R_97() {
+ final private boolean jj_3R_96() {
if (jj_scan_token(KILL)) return true;
- if (jj_scan_token(TRANSACTION)) return true;
+ if (jj_scan_token(SERVICE)) return true;
return false;
}
@@ -29302,15 +29187,21 @@ final private boolean jj_3R_295() {
return false;
}
- final private boolean jj_3R_95() {
+ 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_3R_97() {
if (jj_scan_token(KILL)) return true;
- if (jj_scan_token(CONTINUOUS)) return true;
+ if (jj_scan_token(TRANSACTION)) return true;
return false;
}
- final private boolean jj_3R_408() {
- if (jj_3R_415()) return true;
- if (jj_scan_token(LAMBDA)) return true;
+ final private boolean jj_3R_95() {
+ if (jj_scan_token(KILL)) return true;
+ if (jj_scan_token(CONTINUOUS)) return true;
return false;
}
@@ -29344,32 +29235,15 @@ final private boolean jj_3R_299() {
return false;
}
- final private boolean jj_3_131() {
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
final private boolean jj_3R_218() {
return false;
}
- final private boolean jj_3_130() {
- if (jj_scan_token(MINUS)) return true;
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
final private boolean jj_3_440() {
if (jj_scan_token(ROW)) return true;
return false;
}
- final private boolean jj_3_129() {
- if (jj_scan_token(PLUS)) return true;
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
- return false;
- }
-
final private boolean jj_3_445() {
Token xsp;
xsp = jj_scanpos;
@@ -29381,15 +29255,26 @@ final private boolean jj_3_445() {
return false;
}
+ final private boolean jj_3_131() {
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_130() {
+ if (jj_scan_token(MINUS)) return true;
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
final private boolean jj_3R_297() {
if (jj_scan_token(TIMESTAMPADD)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3R_241() {
- if (jj_scan_token(USER)) return true;
- if (jj_3R_84()) return true;
+ final private boolean jj_3_129() {
+ if (jj_scan_token(PLUS)) return true;
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
return false;
}
@@ -29425,9 +29310,9 @@ final private boolean jj_3_442() {
return false;
}
- final private boolean jj_3R_93() {
- if (jj_scan_token(ALTER)) return true;
+ final private boolean jj_3R_241() {
if (jj_scan_token(USER)) return true;
+ if (jj_3R_84()) return true;
return false;
}
@@ -29437,14 +29322,9 @@ final private boolean jj_3R_294() {
return false;
}
- final private boolean jj_3R_237() {
+ final private boolean jj_3R_93() {
+ if (jj_scan_token(ALTER)) return true;
if (jj_scan_token(USER)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_124() {
- if (jj_scan_token(COLUMN)) return true;
return false;
}
@@ -29464,11 +29344,6 @@ final private boolean jj_3_923() {
return false;
}
- final private boolean jj_3_123() {
- if (jj_scan_token(COLUMN)) return true;
- return false;
- }
-
final private boolean jj_3_437() {
if (jj_scan_token(EQ)) return true;
return false;
@@ -29479,16 +29354,6 @@ final private boolean jj_3_922() {
return false;
}
- final private boolean jj_3_128() {
- if (jj_scan_token(DROP)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_124()) jj_scanpos = xsp;
- if (jj_3R_133()) return true;
- if (jj_3R_134()) return true;
- return false;
- }
-
final private boolean jj_3_436() {
if (jj_scan_token(GE)) return true;
return false;
@@ -29499,18 +29364,14 @@ final private boolean jj_3_435() {
return false;
}
- final private boolean jj_3_127() {
- if (jj_scan_token(ADD)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_123()) jj_scanpos = xsp;
- if (jj_3R_131()) return true;
- if (jj_3R_132()) return true;
+ final private boolean jj_3_434() {
+ if (jj_scan_token(LE)) return true;
return false;
}
- final private boolean jj_3_434() {
- if (jj_scan_token(LE)) return true;
+ final private boolean jj_3R_237() {
+ if (jj_scan_token(USER)) return true;
+ if (jj_3R_84()) return true;
return false;
}
@@ -29539,8 +29400,8 @@ final private boolean jj_3R_208() {
return false;
}
- final private boolean jj_3_126() {
- if (jj_scan_token(NOLOGGING)) return true;
+ final private boolean jj_3_124() {
+ if (jj_scan_token(COLUMN)) return true;
return false;
}
@@ -29555,8 +29416,8 @@ final private boolean jj_3R_292() {
return false;
}
- final private boolean jj_3_125() {
- if (jj_scan_token(LOGGING)) return true;
+ final private boolean jj_3_123() {
+ if (jj_scan_token(COLUMN)) return true;
return false;
}
@@ -29564,9 +29425,13 @@ final private boolean jj_3R_407() {
return false;
}
- final private boolean jj_3R_92() {
- if (jj_scan_token(ALTER)) return true;
- if (jj_scan_token(TABLE)) return true;
+ final private boolean jj_3_128() {
+ if (jj_scan_token(DROP)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_124()) jj_scanpos = xsp;
+ if (jj_3R_133()) return true;
+ if (jj_3R_134()) return true;
return false;
}
@@ -29575,29 +29440,35 @@ final private boolean jj_3_430() {
return false;
}
- final private boolean jj_3_423() {
- if (jj_scan_token(DOT)) return true;
- if (jj_3R_84()) return true;
+ final private boolean jj_3_127() {
+ if (jj_scan_token(ADD)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_123()) jj_scanpos = xsp;
+ if (jj_3R_131()) return true;
+ if (jj_3R_132()) return true;
return false;
}
- final private boolean jj_3_122() {
- if (jj_3R_130()) return true;
+ final private boolean jj_3_126() {
+ if (jj_scan_token(NOLOGGING)) return true;
return false;
}
- final private boolean jj_3R_132() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_121()) {
- jj_scanpos = xsp;
- if (jj_3_122()) return true;
- }
+ final private boolean jj_3_125() {
+ if (jj_scan_token(LOGGING)) return true;
return false;
}
- final private boolean jj_3_121() {
- if (jj_3R_129()) return true;
+ final private boolean jj_3_423() {
+ if (jj_scan_token(DOT)) return true;
+ if (jj_3R_84()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_92() {
+ if (jj_scan_token(ALTER)) return true;
+ if (jj_scan_token(TABLE)) return true;
return false;
}
@@ -29655,9 +29526,23 @@ final private boolean jj_3_429() {
return false;
}
- final private boolean jj_3_120() {
- if (jj_scan_token(NOT)) return true;
- if (jj_scan_token(NULL)) return true;
+ final private boolean jj_3_122() {
+ if (jj_3R_130()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_132() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_121()) {
+ jj_scanpos = xsp;
+ if (jj_3_122()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_121() {
+ if (jj_3R_129()) return true;
return false;
}
@@ -29672,12 +29557,6 @@ final private boolean jj_3_428() {
return false;
}
- final private boolean jj_3R_129() {
- if (jj_3R_84()) return true;
- if (jj_3R_122()) return true;
- return false;
- }
-
final private boolean jj_3_427() {
if (jj_3R_212()) return true;
return false;
@@ -29700,9 +29579,9 @@ final private boolean jj_3_417() {
return false;
}
- final private boolean jj_3_119() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_129()) return true;
+ final private boolean jj_3_120() {
+ if (jj_scan_token(NOT)) return true;
+ if (jj_scan_token(NULL)) return true;
return false;
}
@@ -29711,6 +29590,12 @@ final private boolean jj_3_413() {
return false;
}
+ final private boolean jj_3R_129() {
+ if (jj_3R_84()) return true;
+ if (jj_3R_122()) return true;
+ return false;
+ }
+
final private boolean jj_3_416() {
if (jj_scan_token(TILDE)) return true;
Token xsp;
@@ -29736,12 +29621,6 @@ final private boolean jj_3_415() {
return false;
}
- final private boolean jj_3R_130() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_129()) return true;
- return false;
- }
-
final private boolean jj_3_410() {
if (jj_scan_token(RLIKE)) return true;
return false;
@@ -29773,6 +29652,12 @@ final private boolean jj_3_405() {
return false;
}
+ final private boolean jj_3_119() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_129()) return true;
+ return false;
+ }
+
final private boolean jj_3_404() {
if (jj_scan_token(ILIKE)) return true;
return false;
@@ -29783,6 +29668,12 @@ final private boolean jj_3_403() {
return false;
}
+ final private boolean jj_3R_130() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_129()) return true;
+ return false;
+ }
+
final private boolean jj_3_407() {
if (jj_scan_token(NOT)) return true;
Token xsp;
@@ -29811,12 +29702,6 @@ final private boolean jj_3_916() {
return false;
}
- final private boolean jj_3R_212() {
- if (jj_scan_token(INFIX_CAST)) return true;
- if (jj_3R_122()) return true;
- return false;
- }
-
final private boolean jj_3_414() {
Token xsp;
xsp = jj_scanpos;
@@ -29852,13 +29737,6 @@ final private boolean jj_3R_310() {
return false;
}
- final private boolean jj_3R_240() {
- if (jj_scan_token(INDEX)) return true;
- if (jj_3R_133()) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
final private boolean jj_3_426() {
Token xsp;
xsp = jj_scanpos;
@@ -29878,6 +29756,12 @@ final private boolean jj_3_399() {
return false;
}
+ final private boolean jj_3R_212() {
+ if (jj_scan_token(INFIX_CAST)) return true;
+ if (jj_3R_122()) return true;
+ return false;
+ }
+
final private boolean jj_3_400() {
Token xsp;
xsp = jj_scanpos;
@@ -29893,13 +29777,6 @@ final private boolean jj_3_398() {
return false;
}
- final private boolean jj_3R_239() {
- if (jj_scan_token(TABLE)) return true;
- if (jj_3R_133()) return true;
- if (jj_3R_152()) return true;
- return false;
- }
-
final private boolean jj_3_915() {
if (jj_3R_321()) return true;
return false;
@@ -29910,6 +29787,13 @@ final private boolean jj_3_396() {
return false;
}
+ final private boolean jj_3R_240() {
+ if (jj_scan_token(INDEX)) return true;
+ if (jj_3R_133()) return true;
+ if (jj_3R_152()) return true;
+ return false;
+ }
+
final private boolean jj_3_402() {
if (jj_scan_token(BETWEEN)) return true;
Token xsp;
@@ -29933,38 +29817,25 @@ final private boolean jj_3_395() {
return false;
}
- final private boolean jj_3R_363() {
- return false;
- }
-
final private boolean jj_3R_309() {
if (jj_scan_token(JSON_OBJECTAGG)) return true;
if (jj_scan_token(LPAREN)) return true;
return false;
}
- final private boolean jj_3R_133() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_118()) {
- jj_scanpos = xsp;
- if (jj_3R_363()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_118() {
- if (jj_scan_token(IF)) return true;
- if (jj_scan_token(EXISTS)) return true;
- return false;
- }
-
final private boolean jj_3_401() {
if (jj_scan_token(NOT)) return true;
if (jj_scan_token(BETWEEN)) return true;
return false;
}
+ final private boolean jj_3R_239() {
+ if (jj_scan_token(TABLE)) return true;
+ if (jj_3R_133()) return true;
+ if (jj_3R_152()) return true;
+ return false;
+ }
+
final private boolean jj_3_425() {
Token xsp;
xsp = jj_scanpos;
@@ -29976,30 +29847,28 @@ final private boolean jj_3_425() {
return false;
}
- final private boolean jj_3_117() {
- if (jj_scan_token(INLINE_SIZE)) return true;
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ final private boolean jj_3R_363() {
return false;
}
- final private boolean jj_3_914() {
- if (jj_3R_321()) return true;
+ final private boolean jj_3R_133() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_118()) {
+ jj_scanpos = xsp;
+ if (jj_3R_363()) return true;
+ }
return false;
}
- final private boolean jj_3_116() {
- if (jj_scan_token(PARALLEL)) return true;
- if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ final private boolean jj_3_118() {
+ if (jj_scan_token(IF)) return true;
+ if (jj_scan_token(EXISTS)) return true;
return false;
}
- final private boolean jj_3_115() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_116()) {
- jj_scanpos = xsp;
- if (jj_3_117()) return true;
- }
+ final private boolean jj_3_914() {
+ if (jj_3R_321()) return true;
return false;
}
@@ -30019,8 +29888,9 @@ final private boolean jj_3_390() {
return false;
}
- final private boolean jj_3_114() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3_117() {
+ if (jj_scan_token(INLINE_SIZE)) return true;
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
return false;
}
@@ -30034,6 +29904,22 @@ final private boolean jj_3_913() {
return false;
}
+ final private boolean jj_3_116() {
+ if (jj_scan_token(PARALLEL)) return true;
+ if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_115() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_116()) {
+ jj_scanpos = xsp;
+ if (jj_3_117()) return true;
+ }
+ return false;
+ }
+
final private boolean jj_3_394() {
if (jj_3R_208()) return true;
Token xsp;
@@ -30048,16 +29934,6 @@ final private boolean jj_3_394() {
return false;
}
- final private boolean jj_3R_236() {
- if (jj_scan_token(INDEX)) return true;
- if (jj_3R_131()) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_114()) jj_scanpos = xsp;
- if (jj_scan_token(ON)) return true;
- return false;
- }
-
final private boolean jj_3R_308() {
if (jj_scan_token(JSON_OBJECT)) return true;
if (jj_scan_token(LPAREN)) return true;
@@ -30075,6 +29951,11 @@ final private boolean jj_3_392() {
return false;
}
+ final private boolean jj_3_114() {
+ if (jj_3R_84()) return true;
+ return false;
+ }
+
final private boolean jj_3_424() {
Token xsp;
xsp = jj_scanpos;
@@ -30089,9 +29970,13 @@ final private boolean jj_3_424() {
return false;
}
- final private boolean jj_3_113() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_128()) return true;
+ final private boolean jj_3R_236() {
+ if (jj_scan_token(INDEX)) return true;
+ if (jj_3R_131()) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_114()) jj_scanpos = xsp;
+ if (jj_scan_token(ON)) return true;
return false;
}
@@ -30152,6 +30037,12 @@ final private boolean jj_3_432() {
return false;
}
+ final private boolean jj_3_113() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_128()) return true;
+ return false;
+ }
+
final private boolean jj_3R_211() {
if (jj_3R_210()) return true;
Token xsp;
@@ -30168,26 +30059,6 @@ final private boolean jj_3_909() {
return false;
}
- final private boolean jj_3_111() {
- if (jj_scan_token(DESC)) return true;
- return false;
- }
-
- final private boolean jj_3_112() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_110()) {
- jj_scanpos = xsp;
- if (jj_3_111()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_110() {
- if (jj_scan_token(ASC)) return true;
- return false;
- }
-
final private boolean jj_3_906() {
if (jj_scan_token(KEY)) return true;
if (jj_3R_319()) return true;
@@ -30199,11 +30070,6 @@ final private boolean jj_3_908() {
return false;
}
- final private boolean jj_3R_128() {
- if (jj_3R_84()) return true;
- return false;
- }
-
final private boolean jj_3_907() {
if (jj_scan_token(VALUE)) return true;
return false;
@@ -30214,12 +30080,23 @@ final private boolean jj_3R_402() {
return false;
}
- final private boolean jj_3R_126() {
+ final private boolean jj_3_111() {
+ if (jj_scan_token(DESC)) return true;
return false;
}
- final private boolean jj_3_107() {
- if (jj_3R_124()) return true;
+ final private boolean jj_3_112() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_110()) {
+ jj_scanpos = xsp;
+ if (jj_3_111()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_110() {
+ if (jj_scan_token(ASC)) return true;
return false;
}
@@ -30243,21 +30120,12 @@ final private boolean jj_3R_320() {
return false;
}
- final private boolean jj_3_109() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_107()) {
- jj_scanpos = xsp;
- if (jj_3R_126()) return true;
- }
- if (jj_3R_127()) return true;
- if (jj_scan_token(AS)) return true;
- if (jj_3R_79()) return true;
+ final private boolean jj_3R_128() {
+ if (jj_3R_84()) return true;
return false;
}
- final private boolean jj_3_108() {
- if (jj_3R_125()) return true;
+ final private boolean jj_3R_126() {
return false;
}
@@ -30266,6 +30134,11 @@ final private boolean jj_3R_319() {
return false;
}
+ final private boolean jj_3_107() {
+ if (jj_3R_124()) return true;
+ return false;
+ }
+
final private boolean jj_3_388() {
if (jj_scan_token(DOT)) return true;
if (jj_3R_207()) return true;
@@ -30283,10 +30156,21 @@ final private boolean jj_3R_375() {
return false;
}
- final private boolean jj_3R_235() {
- if (jj_scan_token(TABLE)) return true;
- if (jj_3R_131()) return true;
- if (jj_3R_152()) return true;
+ final private boolean jj_3_109() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_107()) {
+ jj_scanpos = xsp;
+ if (jj_3R_126()) return true;
+ }
+ if (jj_3R_127()) return true;
+ if (jj_scan_token(AS)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_108() {
+ if (jj_3R_125()) return true;
return false;
}
@@ -30314,9 +30198,10 @@ final private boolean jj_3_905() {
return false;
}
- final private boolean jj_3_106() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_123()) return true;
+ final private boolean jj_3R_235() {
+ if (jj_scan_token(TABLE)) return true;
+ if (jj_3R_131()) return true;
+ if (jj_3R_152()) return true;
return false;
}
@@ -30336,14 +30221,14 @@ final private boolean jj_3_899() {
return false;
}
- final private boolean jj_3R_125() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_123()) return true;
+ final private boolean jj_3_903() {
+ if (jj_3R_315()) return true;
return false;
}
- final private boolean jj_3_903() {
- if (jj_3R_315()) return true;
+ final private boolean jj_3_106() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_123()) return true;
return false;
}
@@ -30363,18 +30248,9 @@ final private boolean jj_3R_307() {
return false;
}
- final private boolean jj_3_103() {
- if (jj_scan_token(CONSTRAINT)) return true;
- if (jj_3R_84()) return true;
- return false;
- }
-
- final private boolean jj_3_105() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_103()) jj_scanpos = xsp;
- if (jj_scan_token(PRIMARY)) return true;
- if (jj_scan_token(KEY)) return true;
+ final private boolean jj_3R_125() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_123()) return true;
return false;
}
@@ -30398,12 +30274,6 @@ final private boolean jj_3R_250() {
return false;
}
- final private boolean jj_3_102() {
- if (jj_scan_token(PRIMARY)) return true;
- if (jj_scan_token(KEY)) return true;
- return false;
- }
-
final private boolean jj_3_386() {
if (jj_3R_206()) return true;
return false;
@@ -30414,6 +30284,12 @@ final private boolean jj_3_896() {
return false;
}
+ final private boolean jj_3_103() {
+ if (jj_scan_token(CONSTRAINT)) return true;
+ if (jj_3R_84()) return true;
+ return false;
+ }
+
final private boolean jj_3_902() {
if (jj_scan_token(WITH)) return true;
Token xsp;
@@ -30424,15 +30300,18 @@ final private boolean jj_3_902() {
return false;
}
- final private boolean jj_3_901() {
- if (jj_scan_token(WITH)) return true;
- if (jj_scan_token(CONDITIONAL)) return true;
+ final private boolean jj_3_105() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_103()) jj_scanpos = xsp;
+ if (jj_scan_token(PRIMARY)) return true;
+ if (jj_scan_token(KEY)) return true;
return false;
}
- final private boolean jj_3_101() {
- if (jj_scan_token(DEFAULT_)) return true;
- if (jj_3R_119()) return true;
+ final private boolean jj_3_901() {
+ if (jj_scan_token(WITH)) return true;
+ if (jj_scan_token(CONDITIONAL)) return true;
return false;
}
@@ -30454,6 +30333,12 @@ final private boolean jj_3R_317() {
return false;
}
+ final private boolean jj_3_102() {
+ if (jj_scan_token(PRIMARY)) return true;
+ if (jj_scan_token(KEY)) return true;
+ return false;
+ }
+
final private boolean jj_3_900() {
if (jj_scan_token(WITHOUT)) return true;
Token xsp;
@@ -30467,22 +30352,6 @@ final private boolean jj_3R_205() {
return false;
}
- final private boolean jj_3R_123() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_104()) {
- jj_scanpos = xsp;
- if (jj_3_105()) return true;
- }
- return false;
- }
-
- final private boolean jj_3_104() {
- if (jj_3R_84()) return true;
- if (jj_3R_122()) return true;
- return false;
- }
-
final private boolean jj_3_383() {
if (jj_scan_token(RECURSIVE)) return true;
return false;
@@ -30493,6 +30362,12 @@ final private boolean jj_3_895() {
return false;
}
+ final private boolean jj_3_101() {
+ if (jj_scan_token(DEFAULT_)) return true;
+ if (jj_3R_119()) return true;
+ return false;
+ }
+
final private boolean jj_3_384() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_205()) return true;
@@ -30513,15 +30388,25 @@ final private boolean jj_3R_204() {
return false;
}
- final private boolean jj_3_893() {
- if (jj_scan_token(EMPTY)) return true;
- if (jj_scan_token(OBJECT)) return true;
+ final private boolean jj_3R_123() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_104()) {
+ jj_scanpos = xsp;
+ if (jj_3_105()) return true;
+ }
return false;
}
- final private boolean jj_3R_121() {
- if (jj_scan_token(INTERVAL)) return true;
- if (jj_3R_215()) return true;
+ final private boolean jj_3_104() {
+ if (jj_3R_84()) return true;
+ if (jj_3R_122()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_893() {
+ if (jj_scan_token(EMPTY)) return true;
+ if (jj_scan_token(OBJECT)) return true;
return false;
}
@@ -30536,18 +30421,14 @@ final private boolean jj_3_891() {
return false;
}
- final private boolean jj_3_100() {
- if (jj_3R_121()) return true;
- return false;
- }
-
- final private boolean jj_3_99() {
- if (jj_3R_120()) return true;
+ final private boolean jj_3_890() {
+ if (jj_scan_token(ERROR)) return true;
return false;
}
- final private boolean jj_3_890() {
- if (jj_scan_token(ERROR)) return true;
+ final private boolean jj_3R_121() {
+ if (jj_scan_token(INTERVAL)) return true;
+ if (jj_3R_215()) return true;
return false;
}
@@ -30568,6 +30449,26 @@ final private boolean jj_3R_318() {
return false;
}
+ final private boolean jj_3R_67() {
+ if (jj_3R_344()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_100() {
+ if (jj_3R_121()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_99() {
+ if (jj_3R_120()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_889() {
+ if (jj_3R_316()) return true;
+ return false;
+ }
+
final private boolean jj_3R_122() {
Token xsp;
xsp = jj_scanpos;
@@ -30578,8 +30479,8 @@ final private boolean jj_3R_122() {
return false;
}
- final private boolean jj_3R_67() {
- if (jj_3R_344()) return true;
+ final private boolean jj_3_888() {
+ if (jj_3R_315()) return true;
return false;
}
@@ -30593,8 +30494,9 @@ final private boolean jj_3_97() {
return false;
}
- final private boolean jj_3_889() {
- if (jj_3R_316()) return true;
+ final private boolean jj_3R_306() {
+ if (jj_scan_token(JSON_VALUE)) return true;
+ if (jj_scan_token(LPAREN)) return true;
return false;
}
@@ -30604,19 +30506,18 @@ final private boolean jj_3R_118() {
return false;
}
- final private boolean jj_3_888() {
- if (jj_3R_315()) return true;
+ final private boolean jj_3_887() {
+ if (jj_scan_token(ERROR)) return true;
return false;
}
- final private boolean jj_3R_306() {
- if (jj_scan_token(JSON_VALUE)) return true;
- if (jj_scan_token(LPAREN)) return true;
+ final private boolean jj_3_96() {
+ if (jj_scan_token(WRAP_VALUE)) return true;
return false;
}
- final private boolean jj_3_96() {
- if (jj_scan_token(WRAP_VALUE)) return true;
+ final private boolean jj_3_886() {
+ if (jj_scan_token(EMPTY)) return true;
return false;
}
@@ -30640,13 +30541,14 @@ final private boolean jj_3_92() {
return false;
}
- final private boolean jj_3_91() {
- if (jj_scan_token(DATA_REGION)) return true;
+ final private boolean jj_3_885() {
+ if (jj_scan_token(DEFAULT_)) return true;
+ if (jj_3R_78()) return true;
return false;
}
- final private boolean jj_3_887() {
- if (jj_scan_token(ERROR)) return true;
+ final private boolean jj_3_91() {
+ if (jj_scan_token(DATA_REGION)) return true;
return false;
}
@@ -30655,13 +30557,23 @@ final private boolean jj_3_90() {
return false;
}
+ final private boolean jj_3_884() {
+ if (jj_scan_token(NULL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_382() {
+ if (jj_3R_67()) return true;
+ return false;
+ }
+
final private boolean jj_3_89() {
if (jj_scan_token(CACHE_GROUP)) return true;
return false;
}
- final private boolean jj_3_886() {
- if (jj_scan_token(EMPTY)) return true;
+ final private boolean jj_3_381() {
+ if (jj_3R_204()) return true;
return false;
}
@@ -30670,6 +30582,19 @@ final private boolean jj_3_88() {
return false;
}
+ final private boolean jj_3_883() {
+ if (jj_scan_token(ERROR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_68() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_381()) jj_scanpos = xsp;
+ if (jj_3R_206()) return true;
+ return false;
+ }
+
final private boolean jj_3_87() {
if (jj_scan_token(ATOMICITY)) return true;
return false;
@@ -30680,14 +30605,22 @@ final private boolean jj_3_86() {
return false;
}
- final private boolean jj_3_85() {
- if (jj_scan_token(BACKUPS)) return true;
+ final private boolean jj_3R_316() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_883()) {
+ jj_scanpos = xsp;
+ if (jj_3_884()) {
+ jj_scanpos = xsp;
+ if (jj_3_885()) return true;
+ }
+ }
+ if (jj_scan_token(ON)) return true;
return false;
}
- final private boolean jj_3_885() {
- if (jj_scan_token(DEFAULT_)) return true;
- if (jj_3R_78()) return true;
+ final private boolean jj_3_85() {
+ if (jj_scan_token(BACKUPS)) return true;
return false;
}
@@ -30745,58 +30678,6 @@ final private boolean jj_3_80() {
return false;
}
- final private boolean jj_3_884() {
- if (jj_scan_token(NULL)) return true;
- return false;
- }
-
- final private boolean jj_3_382() {
- if (jj_3R_67()) return true;
- return false;
- }
-
- final private boolean jj_3_381() {
- if (jj_3R_204()) return true;
- return false;
- }
-
- final private boolean jj_3_883() {
- if (jj_scan_token(ERROR)) return true;
- return false;
- }
-
- final private boolean jj_3R_68() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_381()) jj_scanpos = xsp;
- if (jj_3R_206()) return true;
- return false;
- }
-
- final private boolean jj_3_82() {
- if (jj_3R_118()) return true;
- return false;
- }
-
- final private boolean jj_3R_316() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_883()) {
- jj_scanpos = xsp;
- if (jj_3_884()) {
- jj_scanpos = xsp;
- if (jj_3_885()) return true;
- }
- }
- if (jj_scan_token(ON)) return true;
- return false;
- }
-
- final private boolean jj_3_81() {
- if (jj_scan_token(QUOTED_IDENTIFIER)) return true;
- return false;
- }
-
final private boolean jj_3_380() {
if (jj_3R_67()) return true;
return false;
@@ -30825,21 +30706,8 @@ final private boolean jj_3_882() {
return false;
}
- final private boolean jj_3_83() {
- if (jj_scan_token(WITH)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_81()) {
- jj_scanpos = xsp;
- if (jj_3_82()) return true;
- }
- return false;
- }
-
- final private boolean jj_3R_127() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_83()) jj_scanpos = xsp;
+ final private boolean jj_3_82() {
+ if (jj_3R_118()) return true;
return false;
}
@@ -30849,28 +30717,31 @@ final private boolean jj_3R_305() {
return false;
}
- final private boolean jj_3R_362() {
+ final private boolean jj_3_81() {
+ if (jj_scan_token(QUOTED_IDENTIFIER)) return true;
return false;
}
- final private boolean jj_3R_131() {
+ final private boolean jj_3_83() {
+ if (jj_scan_token(WITH)) return true;
Token xsp;
xsp = jj_scanpos;
- if (jj_3_79()) {
+ if (jj_3_81()) {
jj_scanpos = xsp;
- if (jj_3R_362()) return true;
+ if (jj_3_82()) return true;
}
return false;
}
- final private boolean jj_3_79() {
- if (jj_scan_token(IF)) return true;
- if (jj_scan_token(NOT)) return true;
+ final private boolean jj_3_881() {
+ if (jj_scan_token(ERROR)) return true;
return false;
}
- final private boolean jj_3_881() {
- if (jj_scan_token(ERROR)) return true;
+ final private boolean jj_3R_127() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_83()) jj_scanpos = xsp;
return false;
}
@@ -30905,12 +30776,43 @@ final private boolean jj_3_878() {
return false;
}
+ final private boolean jj_3R_362() {
+ return false;
+ }
+
+ final private boolean jj_3R_131() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_79()) {
+ jj_scanpos = xsp;
+ if (jj_3R_362()) return true;
+ }
+ return false;
+ }
+
+ final private boolean jj_3_79() {
+ if (jj_scan_token(IF)) return true;
+ if (jj_scan_token(NOT)) return true;
+ return false;
+ }
+
final private boolean jj_3_876() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_81()) return true;
return false;
}
+ final private boolean jj_3_877() {
+ if (jj_scan_token(PASSING)) return true;
+ if (jj_3R_81()) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_203() {
+ if (jj_3R_84()) return true;
+ return false;
+ }
+
final private boolean jj_3_78() {
if (jj_3R_117()) return true;
return false;
@@ -30936,19 +30838,14 @@ final private boolean jj_3_74() {
return false;
}
- final private boolean jj_3_877() {
- if (jj_scan_token(PASSING)) return true;
- if (jj_3R_81()) return true;
- return false;
- }
-
final private boolean jj_3_73() {
if (jj_3R_112()) return true;
return false;
}
- final private boolean jj_3R_203() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3_378() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_203()) return true;
return false;
}
@@ -30982,14 +30879,14 @@ final private boolean jj_3_67() {
return false;
}
- final private boolean jj_3_66() {
- if (jj_3R_106()) return true;
+ final private boolean jj_3_875() {
+ if (jj_scan_token(FORMAT)) return true;
+ if (jj_3R_313()) return true;
return false;
}
- final private boolean jj_3_378() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_203()) return true;
+ final private boolean jj_3_66() {
+ if (jj_3R_106()) return true;
return false;
}
@@ -31018,14 +30915,19 @@ final private boolean jj_3_61() {
return false;
}
- final private boolean jj_3_60() {
- if (jj_3R_100()) return true;
+ final private boolean jj_3R_202() {
+ if (jj_3R_84()) return true;
return false;
}
- final private boolean jj_3_875() {
- if (jj_scan_token(FORMAT)) return true;
- if (jj_3R_313()) return true;
+ final private boolean jj_3R_315() {
+ if (jj_scan_token(RETURNING)) return true;
+ if (jj_3R_120()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_60() {
+ if (jj_3R_100()) return true;
return false;
}
@@ -31044,11 +30946,22 @@ final private boolean jj_3_57() {
return false;
}
+ final private boolean jj_3_377() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_202()) return true;
+ return false;
+ }
+
final private boolean jj_3_56() {
if (jj_3R_96()) return true;
return false;
}
+ final private boolean jj_3R_194() {
+ if (jj_3R_202()) return true;
+ return false;
+ }
+
final private boolean jj_3_55() {
if (jj_3R_95()) return true;
return false;
@@ -31059,19 +30972,18 @@ final private boolean jj_3_54() {
return false;
}
- final private boolean jj_3R_202() {
- if (jj_3R_84()) return true;
+ final private boolean jj_3_873() {
+ if (jj_scan_token(UTF32)) return true;
return false;
}
- final private boolean jj_3R_315() {
- if (jj_scan_token(RETURNING)) return true;
- if (jj_3R_120()) return true;
+ final private boolean jj_3_53() {
+ if (jj_3R_93()) return true;
return false;
}
- final private boolean jj_3_53() {
- if (jj_3R_93()) return true;
+ final private boolean jj_3_872() {
+ if (jj_scan_token(UTF16)) return true;
return false;
}
@@ -31080,6 +30992,17 @@ final private boolean jj_3_52() {
return false;
}
+ final private boolean jj_3_871() {
+ if (jj_scan_token(UTF8)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_372() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_201()) return true;
+ return false;
+ }
+
final private boolean jj_3R_91() {
Token xsp;
xsp = jj_scanpos;
@@ -31165,51 +31088,6 @@ final private boolean jj_3R_91() {
return false;
}
- final private boolean jj_3_377() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_202()) return true;
- return false;
- }
-
- final private boolean jj_3R_194() {
- if (jj_3R_202()) return true;
- return false;
- }
-
- final private boolean jj_3_873() {
- if (jj_scan_token(UTF32)) return true;
- return false;
- }
-
- final private boolean jj_3_872() {
- if (jj_scan_token(UTF16)) return true;
- return false;
- }
-
- final private boolean jj_3_50() {
- if (jj_3R_91()) return true;
- return false;
- }
-
- final private boolean jj_3_871() {
- if (jj_scan_token(UTF8)) return true;
- return false;
- }
-
- final private boolean jj_3_372() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_201()) 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_874() {
if (jj_scan_token(ENCODING)) return true;
Token xsp;
@@ -31235,13 +31113,8 @@ final private boolean jj_3R_313() {
return false;
}
- final private boolean jj_3_51() {
+ final private boolean jj_3_50() {
if (jj_3R_91()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_49()) { jj_scanpos = xsp; break; }
- }
return false;
}
@@ -31256,6 +31129,14 @@ final private boolean jj_3_870() {
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_374() {
if (jj_scan_token(LPAREN)) return true;
if (jj_3R_201()) return true;
@@ -31298,14 +31179,18 @@ final private boolean jj_3_867() {
return false;
}
- final private boolean jj_3R_90() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
+ final private boolean jj_3_866() {
+ if (jj_3R_308()) return true;
return false;
}
- final private boolean jj_3_866() {
- if (jj_3R_308()) return true;
+ final private boolean jj_3_51() {
+ if (jj_3R_91()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_49()) { jj_scanpos = xsp; break; }
+ }
return false;
}
@@ -31348,6 +31233,12 @@ final private boolean jj_3_860() {
return false;
}
+ final private boolean jj_3R_90() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
+ return false;
+ }
+
final private boolean jj_3_859() {
if (jj_3R_301()) return true;
return false;
@@ -31393,11 +31284,6 @@ final private boolean jj_3_855() {
return false;
}
- final private boolean jj_3R_80() {
- if (jj_scan_token(DEFAULT_)) return true;
- return false;
- }
-
final private boolean jj_3_362() {
if (jj_3R_198()) return true;
return false;
@@ -31408,38 +31294,16 @@ final private boolean jj_3_854() {
return false;
}
- final private boolean jj_3R_89() {
- if (jj_3R_134()) return true;
- return false;
- }
-
final private boolean jj_3_853() {
if (jj_3R_295()) return true;
return false;
}
- final private boolean jj_3_46() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_89()) {
- jj_scanpos = xsp;
- if (jj_3R_90()) return true;
- }
- if (jj_scan_token(LAMBDA)) return true;
- return false;
- }
-
final private boolean jj_3_852() {
if (jj_3R_294()) return true;
return false;
}
- final private boolean jj_3R_86() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_scan_token(RPAREN)) return true;
- return false;
- }
-
final private boolean jj_3_363() {
if (jj_scan_token(COMMA)) return true;
Token xsp;
@@ -31456,21 +31320,11 @@ final private boolean jj_3_851() {
return false;
}
- final private boolean jj_3_48() {
- if (jj_3R_87()) return true;
- return false;
- }
-
final private boolean jj_3_850() {
if (jj_3R_292()) return true;
return false;
}
- final private boolean jj_3_47() {
- if (jj_3R_81()) return true;
- return false;
- }
-
final private boolean jj_3_364() {
if (jj_3R_198()) return true;
Token xsp;
@@ -31489,13 +31343,24 @@ final private boolean jj_3_837() {
return false;
}
- final private boolean jj_3R_350() {
- if (jj_3R_408()) return true;
+ final private boolean jj_3R_80() {
+ if (jj_scan_token(DEFAULT_)) return true;
return false;
}
- final private boolean jj_3_45() {
- if (jj_3R_80()) return true;
+ final private boolean jj_3R_89() {
+ if (jj_3R_134()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_46() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_89()) {
+ jj_scanpos = xsp;
+ if (jj_3R_90()) return true;
+ }
+ if (jj_scan_token(LAMBDA)) return true;
return false;
}
@@ -31513,13 +31378,14 @@ final private boolean jj_3_370() {
return false;
}
- final private boolean jj_3R_349() {
+ final private boolean jj_3R_86() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_scan_token(RPAREN)) return true;
return false;
}
- final private boolean jj_3_44() {
- if (jj_3R_84()) return true;
- if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true;
+ final private boolean jj_3_48() {
+ if (jj_3R_87()) return true;
return false;
}
@@ -31541,24 +31407,8 @@ final private boolean jj_3_839() {
return false;
}
- final private boolean jj_3R_83() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_44()) {
- jj_scanpos = xsp;
- if (jj_3R_349()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_45()) {
- jj_scanpos = xsp;
- if (jj_3R_350()) {
- jj_scanpos = xsp;
- if (jj_3_47()) {
- jj_scanpos = xsp;
- if (jj_3_48()) return true;
- }
- }
- }
+ final private boolean jj_3_47() {
+ if (jj_3R_81()) return true;
return false;
}
@@ -31567,18 +31417,27 @@ final private boolean jj_3_835() {
return false;
}
+ final private boolean jj_3R_350() {
+ if (jj_3R_408()) return true;
+ return false;
+ }
+
final private boolean jj_3_368() {
if (jj_scan_token(PLUS)) return true;
return false;
}
+ final private boolean jj_3_45() {
+ if (jj_3R_80()) return true;
+ return false;
+ }
+
final private boolean jj_3_834() {
if (jj_scan_token(TRAILING)) return true;
return false;
}
- final private boolean jj_3R_85() {
- if (jj_3R_134()) return true;
+ final private boolean jj_3R_349() {
return false;
}
@@ -31587,14 +31446,9 @@ final private boolean jj_3_367() {
return false;
}
- final private boolean jj_3_41() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3R_85()) {
- jj_scanpos = xsp;
- if (jj_3R_86()) return true;
- }
- if (jj_scan_token(LAMBDA)) return true;
+ final private boolean jj_3_44() {
+ if (jj_3R_84()) return true;
+ if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true;
return false;
}
@@ -31603,11 +31457,6 @@ final private boolean jj_3_833() {
return false;
}
- final private boolean jj_3_43() {
- if (jj_3R_88()) return true;
- return false;
- }
-
final private boolean jj_3R_381() {
Token xsp;
xsp = jj_scanpos;
@@ -31624,13 +31473,24 @@ final private boolean jj_3R_381() {
return false;
}
- final private boolean jj_3_42() {
- if (jj_3R_87()) return true;
- return false;
- }
-
- final private boolean jj_3R_367() {
- if (jj_3R_408()) return true;
+ final private boolean jj_3R_83() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_44()) {
+ jj_scanpos = xsp;
+ if (jj_3R_349()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_45()) {
+ jj_scanpos = xsp;
+ if (jj_3R_350()) {
+ jj_scanpos = xsp;
+ if (jj_3_47()) {
+ jj_scanpos = xsp;
+ if (jj_3_48()) return true;
+ }
+ }
+ }
return false;
}
@@ -31645,11 +31505,6 @@ final private boolean jj_3R_197() {
return false;
}
- final private boolean jj_3_40() {
- if (jj_3R_80()) return true;
- return false;
- }
-
final private boolean jj_3_838() {
Token xsp;
xsp = jj_scanpos;
@@ -31666,13 +31521,24 @@ final private boolean jj_3_838() {
return false;
}
- final private boolean jj_3R_366() {
+ final private boolean jj_3R_85() {
+ if (jj_3R_134()) return true;
return false;
}
- final private boolean jj_3_39() {
- if (jj_3R_84()) return true;
- if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true;
+ final private boolean jj_3_41() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3R_85()) {
+ jj_scanpos = xsp;
+ if (jj_3R_86()) return true;
+ }
+ if (jj_scan_token(LAMBDA)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_43() {
+ if (jj_3R_88()) return true;
return false;
}
@@ -31686,29 +31552,13 @@ final private boolean jj_3_1805() {
return false;
}
- final private boolean jj_3R_154() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_39()) {
- jj_scanpos = xsp;
- if (jj_3R_366()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_40()) {
- jj_scanpos = xsp;
- if (jj_3R_367()) {
- jj_scanpos = xsp;
- if (jj_3_42()) {
- jj_scanpos = xsp;
- if (jj_3_43()) return true;
- }
- }
- }
+ final private boolean jj_3_1804() {
+ if (jj_scan_token(WEDNESDAY)) return true;
return false;
}
- final private boolean jj_3_1804() {
- if (jj_scan_token(WEDNESDAY)) return true;
+ final private boolean jj_3_42() {
+ if (jj_3R_87()) return true;
return false;
}
@@ -31722,6 +31572,11 @@ final private boolean jj_3_1802() {
return false;
}
+ final private boolean jj_3R_367() {
+ if (jj_3R_408()) return true;
+ return false;
+ }
+
final private boolean jj_3_1801() {
if (jj_scan_token(VERSIONING)) return true;
return false;
@@ -31748,6 +31603,11 @@ final private boolean jj_3_1799() {
return false;
}
+ final private boolean jj_3_40() {
+ if (jj_3R_80()) return true;
+ return false;
+ }
+
final private boolean jj_3_361() {
if (jj_3R_197()) return true;
return false;
@@ -31779,6 +31639,10 @@ final private boolean jj_3_832() {
return false;
}
+ final private boolean jj_3R_366() {
+ return false;
+ }
+
final private boolean jj_3_1796() {
if (jj_scan_token(TRY_CAST)) return true;
return false;
@@ -31789,6 +31653,12 @@ final private boolean jj_3_1795() {
return false;
}
+ final private boolean jj_3_39() {
+ if (jj_3R_84()) return true;
+ if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true;
+ return false;
+ }
+
final private boolean jj_3_1794() {
if (jj_scan_token(TRANSLATION)) return true;
return false;
@@ -31824,6 +31694,27 @@ final private boolean jj_3_1791() {
return false;
}
+ final private boolean jj_3R_154() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_39()) {
+ jj_scanpos = xsp;
+ if (jj_3R_366()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_40()) {
+ jj_scanpos = xsp;
+ if (jj_3R_367()) {
+ jj_scanpos = xsp;
+ if (jj_3_42()) {
+ jj_scanpos = xsp;
+ if (jj_3_43()) return true;
+ }
+ }
+ }
+ return false;
+ }
+
final private boolean jj_3_1790() {
if (jj_scan_token(SUM)) return true;
return false;
@@ -31912,36 +31803,16 @@ final private boolean jj_3_1779() {
return false;
}
- final private boolean jj_3_38() {
- if (jj_scan_token(ALL)) return true;
- return false;
- }
-
final private boolean jj_3_1778() {
if (jj_scan_token(ROLLUP)) return true;
return false;
}
- final private boolean jj_3R_82() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_37()) {
- jj_scanpos = xsp;
- if (jj_3_38()) return true;
- }
- return false;
- }
-
final private boolean jj_3_1777() {
if (jj_scan_token(RETURNS)) return true;
return false;
}
- final private boolean jj_3_37() {
- if (jj_scan_token(DISTINCT)) return true;
- return false;
- }
-
final private boolean jj_3_846() {
if (jj_scan_token(FLOOR)) return true;
if (jj_3R_291()) return true;
@@ -32031,9 +31902,8 @@ final private boolean jj_3_1765() {
return false;
}
- final private boolean jj_3_36() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_83()) return true;
+ final private boolean jj_3_38() {
+ if (jj_scan_token(ALL)) return true;
return false;
}
@@ -32052,17 +31922,28 @@ final private boolean jj_3_1764() {
return false;
}
+ final private boolean jj_3R_82() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_37()) {
+ jj_scanpos = xsp;
+ if (jj_3_38()) return true;
+ }
+ return false;
+ }
+
final private boolean jj_3_1763() {
if (jj_scan_token(OVERLAPS)) return true;
return false;
}
- final private boolean jj_3_1762() {
- if (jj_scan_token(ORDINAL)) return true;
+ final private boolean jj_3_37() {
+ if (jj_scan_token(DISTINCT)) return true;
return false;
}
- final private boolean jj_3R_385() {
+ final private boolean jj_3_1762() {
+ if (jj_scan_token(ORDINAL)) return true;
return false;
}
@@ -32086,11 +31967,6 @@ final private boolean jj_3_1759() {
return false;
}
- final private boolean jj_3_35() {
- if (jj_3R_82()) return true;
- return false;
- }
-
final private boolean jj_3_823() {
if (jj_scan_token(USING)) return true;
if (jj_3R_84()) return true;
@@ -32127,17 +32003,6 @@ final private boolean jj_3_1754() {
return false;
}
- final private boolean jj_3R_220() {
- if (jj_scan_token(LPAREN)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_35()) {
- jj_scanpos = xsp;
- if (jj_3R_385()) return true;
- }
- return false;
- }
-
final private boolean jj_3_1753() {
if (jj_scan_token(MIN)) return true;
return false;
@@ -32164,6 +32029,12 @@ final private boolean jj_3_1751() {
return false;
}
+ final private boolean jj_3_36() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_83()) return true;
+ return false;
+ }
+
final private boolean jj_3_844() {
if (jj_scan_token(TRANSLATE)) return true;
if (jj_scan_token(LPAREN)) return true;
@@ -32190,6 +32061,10 @@ final private boolean jj_3_1748() {
return false;
}
+ final private boolean jj_3R_385() {
+ return false;
+ }
+
final private boolean jj_3_1747() {
if (jj_scan_token(LARGE)) return true;
return false;
@@ -32216,6 +32091,11 @@ final private boolean jj_3_1745() {
return false;
}
+ final private boolean jj_3_35() {
+ if (jj_3R_82()) return true;
+ return false;
+ }
+
final private boolean jj_3_1744() {
if (jj_scan_token(JSON_ARRAYAGG)) return true;
return false;
@@ -32252,6 +32132,17 @@ final private boolean jj_3_815() {
return false;
}
+ final private boolean jj_3R_220() {
+ if (jj_scan_token(LPAREN)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_35()) {
+ jj_scanpos = xsp;
+ if (jj_3R_385()) return true;
+ }
+ return false;
+ }
+
final private boolean jj_3_1739() {
if (jj_scan_token(GRANT)) return true;
return false;
@@ -32262,11 +32153,6 @@ final private boolean jj_3_1738() {
return false;
}
- final private boolean jj_3R_401() {
- if (jj_3R_220()) return true;
- return false;
- }
-
final private boolean jj_3_1737() {
if (jj_scan_token(FRAME_ROW)) return true;
return false;
@@ -32367,11 +32253,6 @@ final private boolean jj_3_1727() {
return false;
}
- final private boolean jj_3_34() {
- if (jj_3R_80()) return true;
- return false;
- }
-
final private boolean jj_3_1726() {
if (jj_scan_token(DEC)) return true;
return false;
@@ -32382,11 +32263,6 @@ final private boolean jj_3_1725() {
return false;
}
- final private boolean jj_3_33() {
- if (jj_3R_81()) return true;
- return false;
- }
-
final private boolean jj_3_1724() {
if (jj_scan_token(CURSOR)) return true;
return false;
@@ -32398,6 +32274,11 @@ final private boolean jj_3_814() {
return false;
}
+ final private boolean jj_3R_401() {
+ if (jj_3R_220()) return true;
+ return false;
+ }
+
final private boolean jj_3_1723() {
if (jj_scan_token(CURRENT_ROLE)) return true;
return false;
@@ -32460,17 +32341,6 @@ final private boolean jj_3_1715() {
return false;
}
- final private boolean jj_3_32() {
- if (jj_scan_token(COMMA)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_33()) {
- jj_scanpos = xsp;
- if (jj_3_34()) return true;
- }
- return false;
- }
-
final private boolean jj_3R_192() {
Token xsp;
xsp = jj_scanpos;
@@ -32489,13 +32359,13 @@ final private boolean jj_3_1713() {
return false;
}
- final private boolean jj_3_1712() {
- if (jj_scan_token(CALL)) return true;
+ final private boolean jj_3_34() {
+ if (jj_3R_80()) return true;
return false;
}
- final private boolean jj_3_31() {
- if (jj_3R_80()) return true;
+ final private boolean jj_3_1712() {
+ if (jj_scan_token(CALL)) return true;
return false;
}
@@ -32515,13 +32385,13 @@ final private boolean jj_3_1711() {
return false;
}
- final private boolean jj_3_1710() {
- if (jj_scan_token(BEGIN_PARTITION)) return true;
+ final private boolean jj_3_33() {
+ if (jj_3R_81()) return true;
return false;
}
- final private boolean jj_3_30() {
- if (jj_3R_79()) return true;
+ final private boolean jj_3_1710() {
+ if (jj_scan_token(BEGIN_PARTITION)) return true;
return false;
}
@@ -32570,6 +32440,17 @@ final private boolean jj_3_1701() {
return false;
}
+ final private boolean jj_3_32() {
+ if (jj_scan_token(COMMA)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_33()) {
+ jj_scanpos = xsp;
+ if (jj_3_34()) return true;
+ }
+ return false;
+ }
+
final private boolean jj_3_1700() {
if (jj_scan_token(PARALLEL)) return true;
return false;
@@ -32597,6 +32478,11 @@ final private boolean jj_3_1698() {
return false;
}
+ final private boolean jj_3_31() {
+ if (jj_3R_80()) return true;
+ return false;
+ }
+
final private boolean jj_3_1697() {
if (jj_scan_token(ATOMICITY)) return true;
return false;
@@ -32613,6 +32499,11 @@ final private boolean jj_3_1696() {
return false;
}
+ final private boolean jj_3_30() {
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
final private boolean jj_3_1695() {
if (jj_scan_token(XML)) return true;
return false;
@@ -32639,17 +32530,6 @@ final private boolean jj_3_1692() {
return false;
}
- final private boolean jj_3R_183() {
- if (jj_scan_token(LPAREN)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_30()) {
- jj_scanpos = xsp;
- if (jj_3_31()) return true;
- }
- return false;
- }
-
final private boolean jj_3_1691() {
if (jj_scan_token(USER_DEFINED_TYPE_NAME)) return true;
return false;
@@ -32749,6 +32629,17 @@ final private boolean jj_3_1678() {
return false;
}
+ final private boolean jj_3R_183() {
+ if (jj_scan_token(LPAREN)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_30()) {
+ jj_scanpos = xsp;
+ if (jj_3_31()) return true;
+ }
+ return false;
+ }
+
final private boolean jj_3_1677() {
if (jj_scan_token(SQL_TSI_SECOND)) return true;
return false;
@@ -32824,12 +32715,6 @@ final private boolean jj_3_1670() {
return false;
}
- final private boolean jj_3_29() {
- if (jj_scan_token(COMMA)) return true;
- if (jj_3R_78()) return true;
- return false;
- }
-
final private boolean jj_3_1669() {
if (jj_scan_token(SQL_INTERVAL_MINUTE_TO_SECOND)) return true;
return false;
@@ -32940,6 +32825,12 @@ final private boolean jj_3_1656() {
return false;
}
+ final private boolean jj_3_29() {
+ if (jj_scan_token(COMMA)) return true;
+ if (jj_3R_78()) return true;
+ return false;
+ }
+
final private boolean jj_3R_223() {
Token xsp;
xsp = jj_scanpos;
@@ -33068,12 +32959,6 @@ final private boolean jj_3_1651() {
return false;
}
- final private boolean jj_3R_173() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_79()) return true;
- return false;
- }
-
final private boolean jj_3_1650() {
if (jj_scan_token(RESTART)) return true;
return false;
@@ -33150,6 +33035,12 @@ final private boolean jj_3_1637() {
return false;
}
+ final private boolean jj_3R_173() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_79()) return true;
+ return false;
+ }
+
final private boolean jj_3_1636() {
if (jj_scan_token(NORMALIZED)) return true;
return false;
@@ -33415,12 +33306,6 @@ final private boolean jj_3_1597() {
return false;
}
- final private boolean jj_3R_172() {
- if (jj_scan_token(LPAREN)) return true;
- if (jj_3R_374()) return true;
- return false;
- }
-
final private boolean jj_3_1596() {
if (jj_scan_token(COLLATION_NAME)) return true;
return false;
@@ -33528,13 +33413,9 @@ final private boolean jj_3_800() {
return false;
}
- final private boolean jj_3_28() {
- if (jj_3R_77()) return true;
- return false;
- }
-
- final private boolean jj_3_27() {
- if (jj_3R_76()) return true;
+ final private boolean jj_3R_172() {
+ if (jj_scan_token(LPAREN)) return true;
+ if (jj_3R_374()) return true;
return false;
}
@@ -34209,24 +34090,6 @@ final private boolean jj_3R_379() {
return false;
}
- final private boolean jj_3R_206() {
- 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_26() {
- if (jj_3R_75()) return true;
- return false;
- }
-
final private boolean jj_3_1584() {
if (jj_scan_token(FRIDAY)) return true;
return false;
@@ -34277,6 +34140,11 @@ final private boolean jj_3_1579() {
return false;
}
+ final private boolean jj_3_28() {
+ if (jj_3R_77()) return true;
+ return false;
+ }
+
final private boolean jj_3_1578() {
if (jj_scan_token(VALUE_OF)) return true;
return false;
@@ -34287,8 +34155,8 @@ final private boolean jj_3_1577() {
return false;
}
- final private boolean jj_3_25() {
- if (jj_scan_token(ALL)) return true;
+ final private boolean jj_3_27() {
+ if (jj_3R_76()) return true;
return false;
}
@@ -34302,11 +34170,6 @@ final private boolean jj_3_1575() {
return false;
}
- final private boolean jj_3_24() {
- if (jj_3R_74()) return true;
- return false;
- }
-
final private boolean jj_3R_189() {
if (jj_3R_162()) return true;
Token xsp;
@@ -34340,11 +34203,29 @@ final private boolean jj_3_798() {
return false;
}
+ final private boolean jj_3R_206() {
+ 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_1571() {
if (jj_scan_token(TIME)) return true;
return false;
}
+ final private boolean jj_3_26() {
+ if (jj_3R_75()) return true;
+ return false;
+ }
+
final private boolean jj_3_1570() {
if (jj_scan_token(SYSTEM_TIME)) return true;
return false;
@@ -34355,11 +34236,6 @@ final private boolean jj_3_1569() {
return false;
}
- final private boolean jj_3_22() {
- if (jj_scan_token(ALL)) return true;
- return false;
- }
-
final private boolean jj_3_1568() {
if (jj_scan_token(SUBSET)) return true;
return false;
@@ -34398,11 +34274,6 @@ final private boolean jj_3_1565() {
return false;
}
- final private boolean jj_3_21() {
- if (jj_3R_74()) return true;
- return false;
- }
-
final private boolean jj_3_1564() {
if (jj_scan_token(SPECIFICTYPE)) return true;
return false;
@@ -34419,6 +34290,11 @@ final private boolean jj_3_1563() {
return false;
}
+ final private boolean jj_3_25() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
final private boolean jj_3_337() {
if (jj_scan_token(AS)) return true;
return false;
@@ -34434,6 +34310,11 @@ final private boolean jj_3_1561() {
return false;
}
+ final private boolean jj_3_24() {
+ if (jj_3R_74()) return true;
+ return false;
+ }
+
final private boolean jj_3_1560() {
if (jj_scan_token(SCOPE)) return true;
return false;
@@ -34454,17 +34335,6 @@ final private boolean jj_3_1557() {
return false;
}
- final private boolean jj_3_23() {
- if (jj_3R_74()) 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_792() {
if (jj_scan_token(CHAR)) return true;
return false;
@@ -34480,6 +34350,11 @@ final private boolean jj_3_1555() {
return false;
}
+ final private boolean jj_3_22() {
+ if (jj_scan_token(ALL)) return true;
+ return false;
+ }
+
final private boolean jj_3_334() {
if (jj_scan_token(COMMA)) return true;
if (jj_3R_188()) return true;
@@ -34517,21 +34392,12 @@ final private boolean jj_3_1551() {
return false;
}
- final private boolean jj_3R_289() {
+ final private boolean jj_3_21() {
+ if (jj_3R_74()) return true;
return false;
}
- final private boolean jj_3R_72() {
- if (jj_scan_token(LIMIT)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_23()) {
- jj_scanpos = xsp;
- if (jj_3_24()) {
- jj_scanpos = xsp;
- if (jj_3_25()) return true;
- }
- }
+ final private boolean jj_3R_289() {
return false;
}
@@ -34555,11 +34421,6 @@ final private boolean jj_3_1548() {
return false;
}
- final private boolean jj_3_20() {
- if (jj_scan_token(ROWS)) return true;
- return false;
- }
-
final private boolean jj_3_793() {
if (jj_scan_token(VARYING)) return true;
return false;
@@ -34570,11 +34431,6 @@ final private boolean jj_3_1547() {
return false;
}
- final private boolean jj_3_17() {
- if (jj_scan_token(FIRST)) return true;
- return false;
- }
-
final private boolean jj_3_1546() {
if (jj_scan_token(PORTION)) return true;
return false;
@@ -34595,6 +34451,17 @@ final private boolean jj_3_1543() {
return false;
}
+ final private boolean jj_3_23() {
+ if (jj_3R_74()) 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_791() {
if (jj_scan_token(CHARACTER)) return true;
return false;
@@ -34630,11 +34497,6 @@ final private boolean jj_3_1540() {
return false;
}
- final private boolean jj_3_19() {
- if (jj_scan_token(ROW)) return true;
- return false;
- }
-
final private boolean jj_3_1539() {
if (jj_scan_token(OCTET_LENGTH)) return true;
return false;
@@ -34658,17 +34520,6 @@ final private boolean jj_3R_284() {
return false;
}
- final private boolean jj_3R_73() {
- if (jj_scan_token(FETCH)) return true;
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_17()) {
- jj_scanpos = xsp;
- if (jj_3_18()) return true;
- }
- return false;
- }
-
final private boolean jj_3_1537() {
if (jj_scan_token(NORMALIZE)) return true;
return false;
@@ -34679,6 +34530,20 @@ final private boolean jj_3_336() {
return false;
}
+ final private boolean jj_3R_72() {
+ if (jj_scan_token(LIMIT)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_23()) {
+ jj_scanpos = xsp;
+ if (jj_3_24()) {
+ jj_scanpos = xsp;
+ if (jj_3_25()) return true;
+ }
+ }
+ return false;
+ }
+
final private boolean jj_3_1536() {
if (jj_scan_token(NEXT)) return true;
return false;
@@ -34689,13 +34554,13 @@ final private boolean jj_3_1535() {
return false;
}
- final private boolean jj_3_15() {
- if (jj_scan_token(ROWS)) return true;
+ final private boolean jj_3_1534() {
+ if (jj_scan_token(MONTH)) return true;
return false;
}
- final private boolean jj_3_1534() {
- if (jj_scan_token(MONTH)) return true;
+ final private boolean jj_3_20() {
+ if (jj_scan_token(ROWS)) return true;
return false;
}
@@ -34704,6 +34569,11 @@ final private boolean jj_3_1533() {
return false;
}
+ final private boolean jj_3_17() {
+ if (jj_scan_token(FIRST)) return true;
+ return false;
+ }
+
final private boolean jj_3_1532() {
if (jj_scan_token(METHOD)) return true;
return false;
@@ -34740,23 +34610,13 @@ final private boolean jj_3_1527() {
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_1526() {
+ if (jj_scan_token(LANGUAGE)) return true;
return false;
}
- final private boolean jj_3_1526() {
- if (jj_scan_token(LANGUAGE)) return true;
+ final private boolean jj_3_19() {
+ if (jj_scan_token(ROW)) return true;
return false;
}
@@ -34770,9 +34630,14 @@ final private boolean jj_3_1524() {
return false;
}
- final private boolean jj_3R_71() {
- if (jj_scan_token(OFFSET)) return true;
- if (jj_3R_74()) return true;
+ final private boolean jj_3R_73() {
+ if (jj_scan_token(FETCH)) return true;
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_17()) {
+ jj_scanpos = xsp;
+ if (jj_3_18()) return true;
+ }
return false;
}
@@ -34791,6 +34656,11 @@ final private boolean jj_3_1521() {
return false;
}
+ final private boolean jj_3_15() {
+ if (jj_scan_token(ROWS)) return true;
+ return false;
+ }
+
final private boolean jj_3_1520() {
if (jj_scan_token(IDENTITY)) return true;
return false;
@@ -34838,6 +34708,21 @@ final private boolean jj_3_1513() {
return false;
}
+ final private boolean jj_3_14() {
+ if (jj_scan_token(ROW)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_16() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_14()) {
+ jj_scanpos = xsp;
+ if (jj_3_15()) return true;
+ }
+ return false;
+ }
+
final private boolean jj_3_1512() {
if (jj_scan_token(ESCAPE)) return true;
return false;
@@ -34853,6 +34738,12 @@ final private boolean jj_3_1510() {
return false;
}
+ final private boolean jj_3R_71() {
+ if (jj_scan_token(OFFSET)) return true;
+ if (jj_3R_74()) return true;
+ return false;
+ }
+
final private boolean jj_3_1509() {
if (jj_scan_token(DYNAMIC)) return true;
return false;
@@ -34868,21 +34759,11 @@ final private boolean jj_3_1507() {
return false;
}
- final private boolean jj_3_8() {
- if (jj_3R_73()) return true;
- return false;
- }
-
final private boolean jj_3_1506() {
if (jj_scan_token(DECLARE)) return true;
return false;
}
- final private boolean jj_3_12() {
- if (jj_3R_73()) return true;
- return false;
- }
-
final private boolean jj_3_1505() {
if (jj_scan_token(DEALLOCATE)) return true;
return false;
@@ -34926,21 +34807,6 @@ final private boolean jj_3_1500() {
return false;
}
- final private boolean jj_3_7() {
- if (jj_3R_72()) return true;
- return false;
- }
-
- final private boolean jj_3_9() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_7()) {
- jj_scanpos = xsp;
- if (jj_3_8()) return true;
- }
- return false;
- }
-
final private boolean jj_3_1499() {
if (jj_scan_token(CORRESPONDING)) return true;
return false;
@@ -34971,46 +34837,28 @@ final private boolean jj_3_1494() {
return false;
}
- final private boolean jj_3_6() {
- if (jj_3R_71()) return true;
- return false;
- }
-
- final private boolean jj_3_11() {
- if (jj_3R_71()) return true;
- return false;
- }
-
final private boolean jj_3_1493() {
if (jj_scan_token(CEILING)) return true;
return false;
}
- final private boolean jj_3_1492() {
- if (jj_scan_token(CARDINALITY)) return true;
+ final private boolean jj_3_8() {
+ if (jj_3R_73()) return true;
return false;
}
- final private boolean jj_3_1491() {
- if (jj_scan_token(BOOLEAN)) return true;
+ final private boolean jj_3_1492() {
+ if (jj_scan_token(CARDINALITY)) return true;
return false;
}
- final private boolean jj_3_10() {
- if (jj_3R_72()) return true;
+ final private boolean jj_3_12() {
+ 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;
- }
- }
+ final private boolean jj_3_1491() {
+ if (jj_scan_token(BOOLEAN)) return true;
return false;
}
@@ -35024,10 +34872,6 @@ final private boolean jj_3_1489() {
return false;
}
- final private boolean jj_3R_406() {
- return false;
- }
-
final private boolean jj_3_1488() {
if (jj_scan_token(AUTHORIZATION)) return true;
return false;
@@ -35038,13 +34882,23 @@ final private boolean jj_3_1487() {
return false;
}
- final private boolean jj_3_5() {
- if (jj_3R_70()) return true;
+ final private boolean jj_3_1486() {
+ if (jj_scan_token(ARE)) return true;
return false;
}
- final private boolean jj_3_1486() {
- if (jj_scan_token(ARE)) return true;
+ final private boolean jj_3_7() {
+ if (jj_3R_72()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_9() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_7()) {
+ jj_scanpos = xsp;
+ if (jj_3_8()) return true;
+ }
return false;
}
@@ -35078,20 +34932,18 @@ final private boolean jj_3_1481() {
return false;
}
- final private boolean jj_3R_348() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_5()) {
- jj_scanpos = xsp;
- if (jj_3R_406()) return true;
- }
- xsp = jj_scanpos;
- if (jj_3_13()) jj_scanpos = xsp;
+ final private boolean jj_3_1480() {
+ if (jj_scan_token(LOGGING)) return true;
return false;
}
- final private boolean jj_3_1480() {
- if (jj_scan_token(LOGGING)) return true;
+ final private boolean jj_3_6() {
+ if (jj_3R_71()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_11() {
+ if (jj_3R_71()) return true;
return false;
}
@@ -35115,6 +34967,24 @@ final private boolean jj_3_1477() {
return false;
}
+ final private boolean jj_3_10() {
+ if (jj_3R_72()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_13() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_10()) {
+ jj_scanpos = xsp;
+ if (jj_3_11()) {
+ jj_scanpos = xsp;
+ if (jj_3_12()) return true;
+ }
+ }
+ return false;
+ }
+
final private boolean jj_3_1476() {
if (jj_scan_token(AFFINITY_KEY)) return true;
return false;
@@ -35125,6 +34995,10 @@ final private boolean jj_3_1475() {
return false;
}
+ final private boolean jj_3R_406() {
+ return false;
+ }
+
final private boolean jj_3_1474() {
if (jj_scan_token(WRITE)) return true;
return false;
@@ -35141,6 +35015,11 @@ final private boolean jj_3_1473() {
return false;
}
+ final private boolean jj_3_5() {
+ if (jj_3R_70()) return true;
+ return false;
+ }
+
final private boolean jj_3_1472() {
if (jj_scan_token(VERSION)) return true;
return false;
@@ -35176,6 +35055,18 @@ final private boolean jj_3_1467() {
return false;
}
+ final private boolean jj_3R_348() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_5()) {
+ jj_scanpos = xsp;
+ if (jj_3R_406()) return true;
+ }
+ xsp = jj_scanpos;
+ if (jj_3_13()) jj_scanpos = xsp;
+ return false;
+ }
+
final private boolean jj_3_1466() {
if (jj_scan_token(TRIGGER_NAME)) return true;
return false;
@@ -35192,12 +35083,6 @@ final private boolean jj_3_332() {
return false;
}
- final private boolean jj_3R_79() {
- if (jj_3R_347()) return true;
- if (jj_3R_348()) return true;
- return false;
- }
-
final private boolean jj_3_1464() {
if (jj_scan_token(TRANSACTIONS_ACTIVE)) return true;
return false;
@@ -35324,6 +35209,12 @@ final private boolean jj_3_1451() {
return false;
}
+ final private boolean jj_3R_79() {
+ if (jj_3R_347()) return true;
+ if (jj_3R_348()) return true;
+ return false;
+ }
+
final private boolean jj_3_1450() {
if (jj_scan_token(SQL_LONGVARBINARY)) return true;
return false;
@@ -35472,11 +35363,6 @@ final private boolean jj_3_1429() {
return false;
}
- final private boolean jj_3_2() {
- if (jj_3R_67()) return true;
- return false;
- }
-
final private boolean jj_3_1428() {
if (jj_scan_token(RELATIVE)) return true;
return false;
@@ -35487,11 +35373,6 @@ final private boolean jj_3_1427() {
return false;
}
- final private boolean jj_3_1() {
- if (jj_3R_66()) return true;
- return false;
- }
-
final private boolean jj_3_1426() {
if (jj_scan_token(PRIOR)) return true;
return false;
@@ -35507,20 +35388,6 @@ final private boolean jj_3_1424() {
return false;
}
- final private boolean jj_3_4() {
- if (jj_3R_69()) return true;
- Token xsp;
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_1()) { jj_scanpos = xsp; break; }
- }
- while (true) {
- xsp = jj_scanpos;
- if (jj_3_2()) { jj_scanpos = xsp; break; }
- }
- return false;
- }
-
final private boolean jj_3_1423() {
if (jj_scan_token(PASSTHROUGH)) return true;
return false;
@@ -35557,11 +35424,6 @@ final private boolean jj_3_1419() {
return false;
}
- final private boolean jj_3_3() {
- if (jj_3R_68()) return true;
- return false;
- }
-
final private boolean jj_3_1418() {
if (jj_scan_token(ORDERING)) return true;
return false;
@@ -35587,13 +35449,8 @@ final private boolean jj_3_1415() {
return false;
}
- final private boolean jj_3R_374() {
- Token xsp;
- xsp = jj_scanpos;
- if (jj_3_3()) {
- jj_scanpos = xsp;
- if (jj_3_4()) return true;
- }
+ final private boolean jj_3_2() {
+ if (jj_3R_67()) return true;
return false;
}
@@ -35617,6 +35474,11 @@ final private boolean jj_3_1413() {
return false;
}
+ final private boolean jj_3_1() {
+ if (jj_3R_66()) return true;
+ return false;
+ }
+
final private boolean jj_3_1412() {
if (jj_scan_token(MILLISECOND)) return true;
return false;
@@ -35632,6 +35494,20 @@ final private boolean jj_3_1410() {
return false;
}
+ final private boolean jj_3_4() {
+ if (jj_3R_69()) return true;
+ Token xsp;
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_1()) { jj_scanpos = xsp; break; }
+ }
+ while (true) {
+ xsp = jj_scanpos;
+ if (jj_3_2()) { jj_scanpos = xsp; break; }
+ }
+ return false;
+ }
+
final private boolean jj_3_1409() {
if (jj_scan_token(M)) return true;
return false;
@@ -35663,6 +35539,11 @@ final private boolean jj_3_1405() {
return false;
}
+ final private boolean jj_3_3() {
+ if (jj_3R_68()) return true;
+ return false;
+ }
+
final private boolean jj_3_1404() {
if (jj_scan_token(ISODOW)) return true;
return false;
@@ -35693,6 +35574,16 @@ final private boolean jj_3_324() {
return false;
}
+ final private boolean jj_3R_374() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_3()) {
+ jj_scanpos = xsp;
+ if (jj_3_4()) return true;
+ }
+ return false;
+ }
+
final private boolean jj_3_1400() {
if (jj_scan_token(ILIKE)) return true;
return false;
@@ -38700,11 +38591,6 @@ final private boolean jj_3_1142() {
return false;
}
- final private boolean jj_3R_291() {
- if (jj_3R_400()) return true;
- return false;
- }
-
final private boolean jj_3R_341() {
Token xsp;
xsp = jj_scanpos;
@@ -39391,13 +39277,13 @@ final private boolean jj_3_1140() {
return false;
}
- final private boolean jj_3R_357() {
- if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+ final private boolean jj_3_1139() {
+ if (jj_3R_341()) return true;
return false;
}
- final private boolean jj_3_1139() {
- if (jj_3R_341()) return true;
+ final private boolean jj_3R_291() {
+ if (jj_3R_400()) return true;
return false;
}
@@ -39434,13 +39320,13 @@ final private boolean jj_3_294() {
return false;
}
- final private boolean jj_3R_346() {
- if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+ final private boolean jj_3_291() {
+ if (jj_scan_token(ROW)) return true;
return false;
}
- final private boolean jj_3_291() {
- if (jj_scan_token(ROW)) return true;
+ final private boolean jj_3R_357() {
+ if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
return false;
}
@@ -39461,10 +39347,6 @@ final private boolean jj_3_679() {
return false;
}
- final private boolean jj_3R_411() {
- return false;
- }
-
final private boolean jj_3_292() {
if (jj_scan_token(LPAREN)) return true;
if (jj_scan_token(ROW)) return true;
@@ -39472,6 +39354,11 @@ final private boolean jj_3_292() {
return false;
}
+ final private boolean jj_3R_346() {
+ if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;}
+ return false;
+ }
+
final private boolean jj_3R_170() {
if (jj_3R_275()) return true;
Token xsp;
@@ -39495,8 +39382,7 @@ final private boolean jj_3R_162() {
return false;
}
- final private boolean jj_3R_175() {
- if (jj_3R_375()) return true;
+ final private boolean jj_3R_411() {
return false;
}
@@ -39511,6 +39397,11 @@ final private boolean jj_3_678() {
return false;
}
+ final private boolean jj_3R_175() {
+ if (jj_3R_375()) return true;
+ return false;
+ }
+
final private boolean jj_3_677() {
if (jj_scan_token(DOT)) return true;
if (jj_3R_274()) return true;
@@ -40051,6 +39942,128 @@ final private boolean jj_3_643() {
return false;
}
+ final private boolean jj_3_642() {
+ if (jj_scan_token(HOUR)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_264() {
+ if (jj_scan_token(WITH)) return true;
+ if (jj_scan_token(ORDINALITY)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_641() {
+ if (jj_scan_token(MINUTE)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_640() {
+ if (jj_scan_token(SECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_639() {
+ if (jj_scan_token(MILLISECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_638() {
+ if (jj_scan_token(MICROSECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3R_270() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_637()) {
+ jj_scanpos = xsp;
+ if (jj_3_638()) {
+ jj_scanpos = xsp;
+ if (jj_3_639()) {
+ jj_scanpos = xsp;
+ if (jj_3_640()) {
+ jj_scanpos = xsp;
+ if (jj_3_641()) {
+ jj_scanpos = xsp;
+ if (jj_3_642()) {
+ jj_scanpos = xsp;
+ if (jj_3_643()) {
+ jj_scanpos = xsp;
+ if (jj_3_644()) {
+ jj_scanpos = xsp;
+ if (jj_3_645()) {
+ jj_scanpos = xsp;
+ if (jj_3_646()) {
+ jj_scanpos = xsp;
+ if (jj_3_647()) {
+ jj_scanpos = xsp;
+ if (jj_3_648()) {
+ jj_scanpos = xsp;
+ if (jj_3_649()) {
+ jj_scanpos = xsp;
+ if (jj_3_650()) {
+ jj_scanpos = xsp;
+ if (jj_3_651()) {
+ jj_scanpos = xsp;
+ if (jj_3_652()) {
+ jj_scanpos = xsp;
+ if (jj_3_653()) {
+ jj_scanpos = xsp;
+ if (jj_3_654()) {
+ jj_scanpos = xsp;
+ if (jj_3_655()) {
+ jj_scanpos = xsp;
+ if (jj_3_656()) {
+ jj_scanpos = xsp;
+ if (jj_3_657()) return true;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ final private boolean jj_3_637() {
+ if (jj_scan_token(NANOSECOND)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_263() {
+ if (jj_scan_token(LATERAL)) return true;
+ return false;
+ }
+
+ final private boolean jj_3_262() {
+ if (jj_3R_168()) return true;
+ return false;
+ }
+
+ final private boolean jj_3_268() {
+ Token xsp;
+ xsp = jj_scanpos;
+ if (jj_3_263()) jj_scanpos = xsp;
+ if (jj_scan_token(UNNEST)) return true;
+ if (jj_3R_173()) return true;
+ return false;
+ }
+
public IgniteSqlParserImplTokenManager token_source;
SimpleCharStream jj_input_stream;
public Token token, jj_nt;
diff --git a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/LimitOffsetIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/LimitOffsetIntegrationTest.java
index 428d4d273d9e2..14a971a179471 100644
--- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/LimitOffsetIntegrationTest.java
+++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/LimitOffsetIntegrationTest.java
@@ -93,26 +93,21 @@ public class LimitOffsetIntegrationTest extends AbstractBasicIntegrationTransact
/** */
@Test
- public void testNestedLimitOffsetWithUnion() {
- sql("INSERT into TEST_REPL VALUES (1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')");
+ public void testNestedLimitOffsetWithUnion() throws Exception {
+ fillCache(cacheRepl, 4);
assertQuery("(SELECT id FROM TEST_REPL WHERE id = 2) UNION ALL " +
"SELECT id FROM (select id from (SELECT id FROM TEST_REPL OFFSET 2) order by id OFFSET 1)"
- ).returns(2).returns(4).check();
+ ).returns(2).returns(3).check();
}
/** Tests correctness of fetch / offset params. */
@Test
public void testInvalidLimitOffset() {
- String bigInt = BigDecimal.valueOf(10000000000L).toString();
-
- assertThrows("SELECT * FROM TEST_REPL OFFSET " + bigInt + " ROWS",
+ assertThrows("SELECT * FROM TEST_REPL OFFSET " + bigInt() + " ROWS",
SqlValidatorException.class, "Illegal value of offset");
- assertThrows("SELECT * FROM TEST_REPL FETCH FIRST " + bigInt + " ROWS ONLY",
- SqlValidatorException.class, "Illegal value of fetch / limit");
-
- assertThrows("SELECT * FROM TEST_REPL LIMIT " + bigInt,
+ assertThrows("SELECT * FROM TEST_REPL LIMIT " + bigInt(),
SqlValidatorException.class, "Illegal value of fetch / limit");
assertThrows("SELECT * FROM TEST_REPL OFFSET -1 ROWS FETCH FIRST -1 ROWS ONLY",
@@ -130,9 +125,6 @@ public void testInvalidLimitOffset() {
assertThrows("SELECT * FROM TEST_REPL OFFSET ? ROWS",
SqlValidatorException.class, "Illegal value of offset", -1);
-
- assertThrows("SELECT * FROM TEST_REPL FETCH FIRST ? ROWS ONLY",
- SqlValidatorException.class, "Illegal value of fetch / limit", -1);
}
/**
@@ -186,6 +178,347 @@ public void testOffsetOutOfRange() throws Exception {
assertQuery("SELECT (SELECT id FROM TEST_PART ORDER BY id LIMIT 1 OFFSET 10)").returns(NULL_RESULT).check();
}
+ /** */
+ @Test
+ public void testInvalidFetch() {
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST " + bigInt() + " ROWS ONLY",
+ SqlValidatorException.class, "Illegal value of fetch / limit");
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST -1 ROWS ONLY",
+ IgniteSQLException.class, null);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (-2) ROWS ONLY",
+ SqlValidatorException.class, "Illegal value of fetch / limit");
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (2 - 3) ROWS ONLY",
+ IgniteSQLException.class, null);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (1 + 2 - 4) ROWS ONLY",
+ IgniteSQLException.class, null);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (10 - (50 - 20)) ROWS ONLY",
+ IgniteSQLException.class, null);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST ('abc') ROWS ONLY",
+ SqlValidatorException.class, "Illegal value of fetch / limit");
+
+ // Check with parameters.
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST ? ROWS ONLY",
+ SqlValidatorException.class, "Illegal value of fetch / limit", bigInt());
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST ? ROWS ONLY",
+ SqlValidatorException.class, "Illegal value of fetch / limit", -4);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (?) ROWS ONLY",
+ SqlValidatorException.class, "Illegal value of fetch / limit", -5);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (?) ROWS ONLY",
+ IgniteSQLException.class, null, NULL_RESULT);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (?) ROWS ONLY",
+ IgniteSQLException.class, null, "abc");
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (?) ROWS ONLY",
+ SqlValidatorException.class, "Illegal value of fetch / limit", Double.NaN);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (?) ROWS ONLY",
+ SqlValidatorException.class, "Illegal value of fetch / limit", Double.POSITIVE_INFINITY);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (1 + ? - 4) ROWS ONLY",
+ IgniteSQLException.class, null, 1);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (? - (50 - 20)) ROWS ONLY",
+ IgniteSQLException.class, null, 2);
+ }
+
+ /** */
+ @Test
+ public void testInvalidFetchWithScalarFunctionExpression() {
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST SQRT(4) ROWS ONLY",
+ IgniteSQLException.class, null);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (SQRT(?) + 1 + 0) ROWS ONLY",
+ IgniteSQLException.class, null, NULL_RESULT);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (SQRT(?) + 1 + 0) ROWS ONLY",
+ IgniteSQLException.class, null, Double.NaN);
+
+ assertThrows("SELECT * FROM TEST_REPL FETCH FIRST (SQRT(?) + 1 + 0) ROWS ONLY",
+ IgniteSQLException.class, null, Double.NEGATIVE_INFINITY);
+ }
+
+ /** */
+ @Test
+ public void testFetchExpression() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1) ROWS ONLY")
+ .returns(0)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1 + 2) ROWS ONLY")
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1 + 5 - 2) ROWS ONLY")
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .returns(3)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1 + (2 - 1) + 1) ROWS ONLY")
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1 + (2 - 1) + 1) ROWS ONLY")
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ // With parameters.
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (?) ROWS ONLY")
+ .withParams(1)
+ .returns(0)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (?) ROWS ONLY")
+ .withParams(2)
+ .returns(0)
+ .returns(1)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1 + ?) ROWS ONLY")
+ .withParams(1)
+ .returns(0)
+ .returns(1)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (? + 1) ROWS ONLY")
+ .withParams(1)
+ .returns(0)
+ .returns(1)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (? + 1) ROWS ONLY")
+ .withParams(3)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .returns(3)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (? + (3 - 1)) ROWS ONLY")
+ .withParams(2)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .returns(3)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1 + (2 - ?) + 1) ROWS ONLY")
+ .withParams(1)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testFetchExpressionAnotherSortOrder() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id DESC FETCH FIRST (1 + (2 - 1) + 1) ROWS ONLY")
+ .returns(4)
+ .returns(3)
+ .returns(2)
+ .check();
+
+ // With parameters.
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id DESC FETCH FIRST (1 + (2 - 1) + ?) ROWS ONLY")
+ .withParams(2)
+ .returns(4)
+ .returns(3)
+ .returns(2)
+ .returns(1)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testFetchExpressionWithoutSortOrder() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (1 + (2 - 1) + 1) ROWS ONLY")
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ // With parameters.
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (1 + (2 - 1) + ?) ROWS ONLY")
+ .withParams(2)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .returns(3)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testFetchExpressionCachedQuery() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (? + 1) ROWS ONLY")
+ .withParams(1)
+ .returns(0)
+ .returns(1)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (? + 1) ROWS ONLY")
+ .withParams(2)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ // Check negative param.
+ assertThrows("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (? + 1) ROWS ONLY",
+ IgniteSQLException.class, "FETCH must not be negative", -2);
+ }
+
+ /** */
+ @Test
+ public void testFetchExpressionCachedQueryAndAnotherSortOrder() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id DESC FETCH FIRST (? + 1) ROWS ONLY")
+ .withParams(1)
+ .returns(4)
+ .returns(3)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id DESC FETCH FIRST (? + 1) ROWS ONLY")
+ .withParams(2)
+ .returns(4)
+ .returns(3)
+ .returns(2)
+ .check();
+
+ // Check negative param.
+ assertThrows("SELECT id FROM TEST_REPL ORDER BY id DESC FETCH FIRST (? + 1) ROWS ONLY",
+ IgniteSQLException.class, "FETCH must not be negative", -2);
+ }
+
+ /** */
+ @Test
+ public void testFetchExpressionCachedQueryAndWithoutSortOrder() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (? + 1) ROWS ONLY")
+ .withParams(1)
+ .returns(0)
+ .returns(1)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (? + 1) ROWS ONLY")
+ .withParams(2)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ // Check negative param.
+ assertThrows("SELECT id FROM TEST_REPL FETCH FIRST (? + 1) ROWS ONLY",
+ IgniteSQLException.class, "FETCH must not be negative", -2);
+ }
+
+ /** */
+ @Test
+ public void testFetchExpressionNested() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM (SELECT id from TEST_REPL FETCH FIRST (? + 3) ROWS ONLY) " +
+ "FETCH NEXT (1 + ?) ROWS ONLY")
+ .withParams(2, 1)
+ .returns(0)
+ .returns(1)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testFetchScalarFunctionExpression() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (1 + ABS(?)) ROWS ONLY")
+ .withParams(-2)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (1 + ABS(?)) ROWS ONLY")
+ .withParams(1)
+ .returns(0)
+ .returns(1)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (SQRT(?) + 1 + 0) ROWS ONLY")
+ .withParams(4)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (SQRT(?) + 1 + 0) ROWS ONLY")
+ .withParams(5)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (SQRT(?) + 1 + 0) ROWS ONLY")
+ .withParams(5)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL ORDER BY id DESC FETCH FIRST (SQRT(?) + 1 + 0) ROWS ONLY")
+ .withParams(5)
+ .returns(4)
+ .returns(3)
+ .returns(2)
+ .check();
+ }
+
+ /** */
+ @Test
+ public void testFetchExpressionWithRewrite() throws Exception {
+ fillCache(cacheRepl, 5);
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (1 + NVL(?, 10000)) ROWS ONLY")
+ .withParams(1)
+ .returns(0)
+ .returns(1)
+ .check();
+
+ assertQuery("SELECT id FROM TEST_REPL FETCH FIRST (1 + NVL(?, 10000)) ROWS ONLY")
+ .withParams(2)
+ .returns(0)
+ .returns(1)
+ .returns(2)
+ .check();
+ }
+
/**
* @param c Cache.
* @param rows Rows count.
@@ -270,4 +603,9 @@ private String createSql(int lim, int off, boolean param, boolean sorted) {
return sb.toString();
}
+
+ /** */
+ private static BigDecimal bigInt() {
+ return BigDecimal.valueOf(Integer.MAX_VALUE).add(BigDecimal.ONE);
+ }
}