This is an automated email from the ASF dual-hosted git repository. tkalkirill pushed a commit to branch ignite-28739-new in repository https://gitbox.apache.org/repos/asf/ignite.git
commit 3353e3d107d023f0e9247728cbdd15b01ee79b2a Author: Kirill Tkalenko <[email protected]> AuthorDate: Tue Aug 11 13:41:24 2026 +0300 IGNITE-28739 Wip --- modules/calcite/pom.xml | 7 + .../src/main/codegen/includes/parserImpls.ftl | 16 + .../codegen/patches/select-fetch-expression.patch | 26 + .../query/calcite/prepare/IgnitePlanner.java | 9 +- .../calcite/prepare/IgniteRelFieldTrimmer.java | 92 + .../calcite/prepare/IgniteSqlToRelConvertor.java | 6 + .../query/calcite/prepare/IgniteSqlValidator.java | 97 +- .../query/calcite/prepare/PlannerPhase.java | 5 +- .../calcite/sql/generated/IgniteSqlParserImpl.java | 2525 ++++++++++---------- .../DynamicParametersIntegrationTest.java | 138 ++ .../integration/LimitOffsetIntegrationTest.java | 127 +- 11 files changed, 1772 insertions(+), 1276 deletions(-) diff --git a/modules/calcite/pom.xml b/modules/calcite/pom.xml index f527c6bee09..7bfedc5caa8 100644 --- a/modules/calcite/pom.xml +++ b/modules/calcite/pom.xml @@ -351,6 +351,13 @@ outputRoot="${project.build.directory}/generated-sources/fmpp" data="tdd(${project.build.directory}/codegen/config.fmpp), default: tdd(${project.build.directory}/codegen/default_config.fmpp)" /> + <!-- TODO: https://issues.apache.org/jira/browse/CALCITE-7592 + Remove this workaround and select-fetch-expression.patch after upgrading to Calcite 1.43. --> + <patch + dir="${project.build.directory}/generated-sources/fmpp" + patchfile="${project.build.directory}/codegen/patches/select-fetch-expression.patch" + strip="1" + /> </target> </configuration> </execution> diff --git a/modules/calcite/src/main/codegen/includes/parserImpls.ftl b/modules/calcite/src/main/codegen/includes/parserImpls.ftl index 8c5c964b609..c2cf7559328 100644 --- a/modules/calcite/src/main/codegen/includes/parserImpls.ftl +++ b/modules/calcite/src/main/codegen/includes/parserImpls.ftl @@ -816,3 +816,19 @@ SqlDrop SqlDropView(Span s, boolean replace) : return SqlDdlNodes.dropView(s.end(this), ifExists, id); } } + +// TODO: https://issues.apache.org/jira/browse/CALCITE-7592 +// Remove this method and select-fetch-expression.patch after upgrading to Calcite 1.43. +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 00000000000..60ec72ffb85 --- /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. +# +--- a/javacc/Parser.jj ++++ b/javacc/Parser.jj +@@ -765,7 +765,7 @@ + { + // SQL:2008-style syntax. "OFFSET ... FETCH ...". + // If you specify both LIMIT and FETCH, FETCH wins. +- <FETCH> ( <FIRST> | <NEXT> ) offsetFetch[1] = UnsignedNumericLiteralOrParam() ++ <FETCH> ( <FIRST> | <NEXT> ) offsetFetch[1] = FetchCount() + ( <ROW> | <ROWS> ) <ONLY> + } diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java index 553ca3ba89a..a29571d4195 100644 --- a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgnitePlanner.java @@ -343,7 +343,14 @@ public class IgnitePlanner implements Planner, RelOptTable.ViewExpander { /** {@inheritDoc} */ @Override public RelRoot rel(SqlNode sql) { - SqlToRelConverter sqlToRelConverter = sqlToRelConverter(validator(), catalogReader, sqlToRelConverterCfg); + // TODO: https://issues.apache.org/jira/browse/CALCITE-7592 + // Restore the original implementation after upgrading to Calcite 1.43: use validator() directly and remove + // deriveLimitDynamicParameterTypes(). + IgniteSqlValidator validator = (IgniteSqlValidator)validator(); + + validator.deriveLimitDynamicParameterTypes(sql); + + SqlToRelConverter sqlToRelConverter = sqlToRelConverter(validator, catalogReader, sqlToRelConverterCfg); return sqlToRelConverter.convertQuery(sql, false, true); } diff --git a/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteRelFieldTrimmer.java b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteRelFieldTrimmer.java new file mode 100644 index 00000000000..b1b4f97e866 --- /dev/null +++ b/modules/calcite/src/main/java/org/apache/ignite/internal/processors/query/calcite/prepare/IgniteRelFieldTrimmer.java @@ -0,0 +1,92 @@ +/* + * 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.prepare; + +import java.util.Set; +import org.apache.calcite.rel.RelCollation; +import org.apache.calcite.rel.RelFieldCollation; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.core.Sort; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.rex.RexDynamicParam; +import org.apache.calcite.rex.RexLiteral; +import org.apache.calcite.rex.RexNode; +import org.apache.calcite.rex.RexUtil; +import org.apache.calcite.sql.validate.SqlValidator; +import org.apache.calcite.sql2rel.RelFieldTrimmer; +import org.apache.calcite.tools.RelBuilder; +import org.apache.calcite.util.ImmutableBitSet; +import org.apache.calcite.util.mapping.Mapping; +import org.apache.calcite.util.mapping.Mappings; +import org.jetbrains.annotations.Nullable; + +import static java.util.Collections.emptySet; + +/** Field trimmer that preserves expression-based FETCH nodes. */ +// TODO: https://issues.apache.org/jira/browse/CALCITE-7592 +// Remove this class and IgniteSqlToRelConvertor.newFieldTrimmer() after upgrading to Calcite 1.43. +public class IgniteRelFieldTrimmer extends RelFieldTrimmer { + /** */ + IgniteRelFieldTrimmer(@Nullable SqlValidator validator, RelBuilder relBuilder) { + super(validator, relBuilder); + } + + /** {@inheritDoc} */ + @Override public TrimResult trimFields( + Sort sort, + ImmutableBitSet fieldsUsed, + Set<RelDataTypeField> extraFields + ) { + if (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(), 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 FETCH. + */ + private static boolean supportedByRelBuilder(@Nullable RexNode node) { + return node == null || node instanceof RexLiteral || node instanceof RexDynamicParam; + } +} 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 fa8b31d7eee..61ea5ba35bf 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 @@ -46,6 +46,7 @@ import org.apache.calcite.sql.util.SqlShuttle; 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; @@ -87,6 +88,11 @@ public class IgniteSqlToRelConvertor extends SqlToRelConverter { 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); 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 22d9be1f083..6386f346369 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 @@ -48,6 +48,7 @@ import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlNodeList; import org.apache.calcite.sql.SqlNumericLiteral; import org.apache.calcite.sql.SqlOperatorTable; +import org.apache.calcite.sql.SqlOrderBy; import org.apache.calcite.sql.SqlSelect; import org.apache.calcite.sql.SqlUpdate; import org.apache.calcite.sql.SqlUtil; @@ -243,10 +244,49 @@ public class IgniteSqlValidator extends SqlValidatorImpl { @Override protected void validateSelect(SqlSelect select, RelDataType targetRowType) { super.validateSelect(select, targetRowType); - validateFetchOffset(select.getFetch(), "fetch / limit"); + validateFetch(select, "fetch / limit"); validateFetchOffset(select.getOffset(), "offset"); } + /** Validate fetch expression. */ + // TODO: https://issues.apache.org/jira/browse/CALCITE-7592 + // Remove this method after upgrading to Calcite 1.43. + private void validateFetch(SqlSelect select, String clauseName) { + SqlNode fetch = select.getFetch(); + + if (fetch == null) + return; + + validateFetchExpression(fetch, clauseName); + deriveDynamicParameterTypes(fetch); + + RelDataType type = deriveType(getWhereScope(select), fetch); + + if (type.getSqlTypeName().getFamily() != SqlTypeFamily.NUMERIC) + throw newValidationError(fetch, IgniteResource.INSTANCE.illegalFetchLimit(clauseName)); + + validateFetchOffset(fetch, clauseName); + } + + /** Reject column references in a fetch expression. */ + // TODO: https://issues.apache.org/jira/browse/CALCITE-7592 + // Remove this method after upgrading to Calcite 1.43. + private void validateFetchExpression(SqlNode node, String clauseName) { + if (node instanceof SqlIdentifier) + throw newValidationError(node, IgniteResource.INSTANCE.illegalFetchLimit(clauseName)); + + if (node instanceof SqlNodeList) { + for (SqlNode child : (SqlNodeList)node) + validateFetchExpression(child, clauseName); + } + else if (node instanceof SqlCall) { + for (SqlNode child : ((SqlCall)node).getOperandList()) { + if (child != null) + validateFetchExpression(child, clauseName); + } + } + } + /** * Validate fetch/offset params restrictions. * @@ -258,7 +298,12 @@ public class IgniteSqlValidator extends SqlValidatorImpl { return; if (n instanceof SqlLiteral) { - BigDecimal offsetFetchLimit = ((SqlLiteral)n).bigDecimalValue(); + SqlLiteral literal = (SqlLiteral)n; + + if (literal.getTypeName().getFamily() != SqlTypeFamily.NUMERIC) + throw newValidationError(n, IgniteResource.INSTANCE.illegalFetchLimit(clauseName)); + + BigDecimal offsetFetchLimit = literal.bigDecimalValue(); checkLimitOffset(offsetFetchLimit, n, clauseName); } @@ -723,6 +768,54 @@ public class IgniteSqlValidator extends SqlValidatorImpl { super.validateUnnest(call, scope, targetRowType); } + /** Derive types of dynamic parameters in a fetch expression. */ + // TODO: https://issues.apache.org/jira/browse/CALCITE-7592 + // Remove this method after upgrading to Calcite 1.43. + private void deriveDynamicParameterTypes(SqlNode n) { + if (n instanceof SqlDynamicParam) { + SqlDynamicParam paramNode = (SqlDynamicParam)n; + + RelDataType type = typeFactory().createSqlType(SqlTypeName.DECIMAL); + RelDataType dataType = typeFactory().createTypeWithNullability(type, true); + + type = deriveDynamicParameterType(paramNode, dataType); + + if (type == null) + setValidatedNodeType(paramNode, dataType); + } + else if (n instanceof SqlNodeList) { + for (SqlNode node : (SqlNodeList)n) + deriveDynamicParameterTypes(node); + } + else if (n instanceof SqlCall) { + for (SqlNode operand : ((SqlCall)n).getOperandList()) + deriveDynamicParameterTypes(operand); + } + } + + /** Derive types of dynamic parameters in all fetch expressions. */ + // TODO: https://issues.apache.org/jira/browse/CALCITE-7592 + // Remove this method after upgrading to Calcite 1.43. + public void deriveLimitDynamicParameterTypes(SqlNode n) { + if (n instanceof SqlSelect) { + SqlSelect select = (SqlSelect)n; + + deriveDynamicParameterTypes(select.getFetch()); + } + else if (n instanceof SqlOrderBy) { + SqlOrderBy orderBy = (SqlOrderBy)n; + + deriveDynamicParameterTypes(orderBy.fetch); + } + + if (n instanceof SqlCall) { + for (SqlNode operand : ((SqlCall)n).getOperandList()) { + if (operand != null) + deriveLimitDynamicParameterTypes(operand); + } + } + } + /** * Interface to define extension to the configuration for a IgniteSqlValidator. */ 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 1ac34eab526..e7f790625ec 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.ProjectRemoveRule; 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; @@ -281,7 +282,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 43055c6234e..24fa792bcb9 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 @@ -698,7 +698,7 @@ public class IgniteSqlParserImpl extends SqlAbstractParserImpl implements Ignite 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)) { @@ -2046,6 +2046,19 @@ public class IgniteSqlParserImpl extends SqlAbstractParserImpl implements Ignite 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<SqlNode> list = new ArrayList<SqlNode>(); @@ -24595,68 +24608,6 @@ final String p; finally { jj_save(1828, xla); } } - final private boolean jj_3R_262() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_615()) { - jj_scanpos = xsp; - if (jj_3_616()) return true; - } - return false; - } - - final private boolean jj_3_615() { - if (jj_scan_token(SECOND)) return true; - return false; - } - - final private boolean jj_3R_349() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_268()) { - jj_scanpos = xsp; - if (jj_3_269()) { - jj_scanpos = xsp; - if (jj_3_270()) { - jj_scanpos = xsp; - if (jj_3_271()) { - jj_scanpos = xsp; - if (jj_3_272()) return true; - } - } - } - } - xsp = jj_scanpos; - if (jj_3_273()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3_274()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3_277()) jj_scanpos = xsp; - xsp = jj_scanpos; - if (jj_3_278()) jj_scanpos = xsp; - return false; - } - - final private boolean jj_3_614() { - if (jj_scan_token(MINUTES)) return true; - return false; - } - - final private boolean jj_3R_261() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_613()) { - jj_scanpos = xsp; - if (jj_3_614()) return true; - } - return false; - } - - final private boolean jj_3_613() { - if (jj_scan_token(MINUTE)) return true; - return false; - } - final private boolean jj_3_612() { if (jj_scan_token(HOURS)) return true; return false; @@ -28896,21 +28847,15 @@ final String p; return false; } - final private boolean jj_3R_246() { - if (jj_scan_token(VIEW)) return true; - if (jj_3R_134()) return true; - if (jj_3R_153()) return true; - return false; - } - final private boolean jj_3R_300() { if (jj_scan_token(DATETIME_TRUNC)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3R_242() { + final private boolean jj_3R_246() { if (jj_scan_token(VIEW)) return true; + if (jj_3R_134()) return true; if (jj_3R_153()) return true; return false; } @@ -28937,9 +28882,9 @@ final String p; return false; } - final private boolean jj_3R_105() { - if (jj_scan_token(ANALYZE)) return true; - if (jj_3R_358()) return true; + final private boolean jj_3R_242() { + if (jj_scan_token(VIEW)) return true; + if (jj_3R_153()) return true; return false; } @@ -28954,9 +28899,9 @@ final String p; return false; } - final private boolean jj_3R_106() { - if (jj_scan_token(REFRESH)) return true; - if (jj_scan_token(STATISTICS)) return true; + final private boolean jj_3R_105() { + if (jj_scan_token(ANALYZE)) return true; + if (jj_3R_358()) return true; return false; } @@ -28966,14 +28911,14 @@ final String p; return false; } - final private boolean jj_3R_107() { - if (jj_scan_token(DROP)) return true; - if (jj_scan_token(STATISTICS)) return true; + final private boolean jj_3_470() { + if (jj_3R_223()) return true; return false; } - final private boolean jj_3_470() { - if (jj_3R_223()) return true; + final private boolean jj_3R_106() { + if (jj_scan_token(REFRESH)) return true; + if (jj_scan_token(STATISTICS)) return true; return false; } @@ -28997,13 +28942,25 @@ final String p; return false; } - final private boolean jj_3_147() { - if (jj_3R_85()) return true; + final private boolean jj_3_944() { + if (jj_3R_274()) return true; return false; } - final private boolean jj_3_944() { - if (jj_3R_274()) return true; + final private boolean jj_3R_107() { + if (jj_scan_token(DROP)) return true; + if (jj_scan_token(STATISTICS)) return true; + return false; + } + + final private boolean jj_3R_299() { + if (jj_scan_token(DATE_TRUNC)) return true; + if (jj_scan_token(LPAREN)) return true; + return false; + } + + final private boolean jj_3_147() { + if (jj_3R_85()) return true; return false; } @@ -29012,14 +28969,41 @@ final String p; return false; } + final private boolean jj_3_468() { + if (jj_scan_token(EQUALS)) return true; + return false; + } + final private boolean jj_3R_137() { if (jj_3R_368()) return true; if (jj_scan_token(EQ)) return true; return false; } - final private boolean jj_3R_299() { - if (jj_scan_token(DATE_TRUNC)) return true; + final private boolean jj_3_467() { + if (jj_scan_token(SUCCEEDS)) return true; + return false; + } + + final private boolean jj_3_466() { + if (jj_scan_token(IMMEDIATELY)) return true; + if (jj_scan_token(SUCCEEDS)) return true; + return false; + } + + final private boolean jj_3_465() { + if (jj_scan_token(PRECEDES)) return true; + return false; + } + + final private boolean jj_3_464() { + if (jj_scan_token(IMMEDIATELY)) return true; + if (jj_scan_token(PRECEDES)) return true; + return false; + } + + final private boolean jj_3R_302() { + if (jj_scan_token(DATETIME_DIFF)) return true; if (jj_scan_token(LPAREN)) return true; return false; } @@ -29029,6 +29013,11 @@ final String p; return false; } + final private boolean jj_3_463() { + if (jj_scan_token(OVERLAPS)) return true; + return false; + } + final private boolean jj_3_144() { if (jj_scan_token(NULLS)) return true; return false; @@ -29039,21 +29028,11 @@ final String p; return false; } - final private boolean jj_3_468() { - if (jj_scan_token(EQUALS)) return true; - return false; - } - final private boolean jj_3_142() { if (jj_scan_token(TOTAL)) return true; return false; } - final private boolean jj_3_467() { - if (jj_scan_token(SUCCEEDS)) return true; - return false; - } - final private boolean jj_3R_368() { Token xsp; xsp = jj_scanpos; @@ -29078,26 +29057,24 @@ final String p; return false; } - final private boolean jj_3_466() { - if (jj_scan_token(IMMEDIATELY)) return true; - if (jj_scan_token(SUCCEEDS)) return true; - return false; - } - - final private boolean jj_3_465() { - if (jj_scan_token(PRECEDES)) return true; + final private boolean jj_3_462() { + if (jj_3R_135()) return true; return false; } - final private boolean jj_3_464() { - if (jj_scan_token(IMMEDIATELY)) return true; - if (jj_scan_token(PRECEDES)) return true; + final private boolean jj_3R_428() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_461()) { + jj_scanpos = xsp; + if (jj_3_462()) return true; + } return false; } - final private boolean jj_3R_302() { - if (jj_scan_token(DATETIME_DIFF)) return true; + final private boolean jj_3_461() { if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(RPAREN)) return true; return false; } @@ -29106,40 +29083,20 @@ final String p; return false; } - final private boolean jj_3_463() { - if (jj_scan_token(OVERLAPS)) return true; - return false; - } - final private boolean jj_3_137() { if (jj_scan_token(COMMA)) return true; if (jj_3R_137()) return true; return false; } - final private boolean jj_3_138() { - if (jj_3R_137()) return true; - return false; - } - - final private boolean jj_3_462() { - if (jj_3R_135()) return true; - return false; - } - - final private boolean jj_3R_428() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_461()) { - jj_scanpos = xsp; - if (jj_3_462()) return true; - } + final private boolean jj_3R_304() { + if (jj_scan_token(TIMESTAMP_DIFF)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_461() { - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(RPAREN)) return true; + final private boolean jj_3_138() { + if (jj_3R_137()) return true; return false; } @@ -29154,9 +29111,9 @@ final String p; return false; } - final private boolean jj_3R_304() { - if (jj_scan_token(TIMESTAMP_DIFF)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3R_420() { + if (jj_3R_428()) return true; + if (jj_scan_token(LAMBDA)) return true; return false; } @@ -29166,9 +29123,10 @@ final String p; return false; } - final private boolean jj_3R_420() { - if (jj_3R_428()) return true; - if (jj_scan_token(LAMBDA)) return true; + final private boolean jj_3R_303() { + if (jj_scan_token(TIMESTAMPDIFF)) return true; + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_336()) return true; return false; } @@ -29182,15 +29140,14 @@ final String p; return false; } - final private boolean jj_3R_303() { - if (jj_scan_token(TIMESTAMPDIFF)) return true; - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_336()) return true; + final private boolean jj_3R_136() { + if (jj_3R_153()) return true; return false; } - final private boolean jj_3R_136() { - if (jj_3R_153()) return true; + final private boolean jj_3R_301() { + if (jj_scan_token(TIMESTAMPADD)) return true; + if (jj_scan_token(LPAREN)) return true; return false; } @@ -29210,26 +29167,12 @@ final String p; return false; } - final private boolean jj_3R_301() { - if (jj_scan_token(TIMESTAMPADD)) return true; - if (jj_scan_token(LPAREN)) return true; - return false; - } - final private boolean jj_3R_101() { if (jj_scan_token(SAVEPOINT)) return true; if (jj_3R_85()) return true; return false; } - final private boolean jj_3R_104() { - if (jj_scan_token(ROLLBACK)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_134()) jj_scanpos = xsp; - return false; - } - final private boolean jj_3_456() { if (jj_3R_219()) return true; return false; @@ -29241,11 +29184,11 @@ final String p; return false; } - final private boolean jj_3R_103() { - if (jj_scan_token(COMMIT)) return true; + final private boolean jj_3R_104() { + if (jj_scan_token(ROLLBACK)) return true; Token xsp; xsp = jj_scanpos; - if (jj_3_133()) jj_scanpos = xsp; + if (jj_3_134()) jj_scanpos = xsp; return false; } @@ -29269,6 +29212,14 @@ final String p; return false; } + final private boolean jj_3R_103() { + if (jj_scan_token(COMMIT)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_133()) jj_scanpos = xsp; + return false; + } + final private boolean jj_3_460() { Token xsp; xsp = jj_scanpos; @@ -29280,26 +29231,15 @@ final String p; return false; } - final private boolean jj_3R_100() { - if (jj_scan_token(KILL)) return true; - if (jj_scan_token(QUERY)) return true; - return false; - } - final private boolean jj_3R_296() { if (jj_scan_token(CONTAINS_SUBSTR)) return true; if (jj_scan_token(LPAREN)) return true; return false; } - final private boolean jj_3_132() { - if (jj_scan_token(ASYNC)) return true; - return false; - } - - final private boolean jj_3R_99() { + final private boolean jj_3R_100() { if (jj_scan_token(KILL)) return true; - if (jj_scan_token(COMPUTE)) return true; + if (jj_scan_token(QUERY)) return true; return false; } @@ -29314,6 +29254,11 @@ final String p; return false; } + final private boolean jj_3_132() { + if (jj_scan_token(ASYNC)) return true; + return false; + } + final private boolean jj_3R_213() { Token xsp; xsp = jj_scanpos; @@ -29340,9 +29285,9 @@ final String p; return false; } - final private boolean jj_3R_97() { + final private boolean jj_3R_99() { if (jj_scan_token(KILL)) return true; - if (jj_scan_token(SERVICE)) return true; + if (jj_scan_token(COMPUTE)) return true; return false; } @@ -29351,14 +29296,14 @@ final String p; return false; } - final private boolean jj_3R_98() { - if (jj_scan_token(KILL)) return true; - if (jj_scan_token(TRANSACTION)) return true; + final private boolean jj_3_939() { + if (jj_3R_326()) return true; return false; } - final private boolean jj_3_939() { - if (jj_3R_326()) return true; + final private boolean jj_3R_97() { + if (jj_scan_token(KILL)) return true; + if (jj_scan_token(SERVICE)) return true; return false; } @@ -29388,12 +29333,6 @@ final String p; return false; } - final private boolean jj_3R_96() { - if (jj_scan_token(KILL)) return true; - if (jj_scan_token(CONTINUOUS)) return true; - return false; - } - final private boolean jj_3_450() { if (jj_scan_token(GT)) return true; return false; @@ -29404,6 +29343,12 @@ final String p; return false; } + final private boolean jj_3R_98() { + if (jj_scan_token(KILL)) return true; + if (jj_scan_token(TRANSACTION)) return true; + return false; + } + final private boolean jj_3R_212() { Token xsp; xsp = jj_scanpos; @@ -29448,9 +29393,9 @@ final String p; return false; } - final private boolean jj_3R_95() { + final private boolean jj_3R_96() { if (jj_scan_token(KILL)) return true; - if (jj_scan_token(SCAN)) return true; + if (jj_scan_token(CONTINUOUS)) return true; return false; } @@ -29492,6 +29437,12 @@ final String p; return false; } + final private boolean jj_3R_95() { + if (jj_scan_token(KILL)) return true; + if (jj_scan_token(SCAN)) return true; + return false; + } + final private boolean jj_3_436() { if (jj_scan_token(SAFE_ORDINAL)) return true; if (jj_scan_token(LPAREN)) return true; @@ -29599,11 +29550,6 @@ final String p; return false; } - final private boolean jj_3_131() { - if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; - return false; - } - final private boolean jj_3_424() { if (jj_scan_token(ILIKE)) return true; return false; @@ -29620,12 +29566,6 @@ final String p; return false; } - final private boolean jj_3_130() { - if (jj_scan_token(MINUS)) return true; - if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; - return false; - } - final private boolean jj_3_420() { if (jj_scan_token(RLIKE)) return true; return false; @@ -29636,12 +29576,6 @@ final String p; return false; } - final private boolean jj_3_129() { - if (jj_scan_token(PLUS)) return true; - if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; - return false; - } - final private boolean jj_3_418() { if (jj_scan_token(LIKE)) return true; return false; @@ -29675,6 +29609,11 @@ final String p; return false; } + final private boolean jj_3_131() { + if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; + return false; + } + final private boolean jj_3_429() { Token xsp; xsp = jj_scanpos; @@ -29694,14 +29633,20 @@ final String p; 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_933() { if (jj_3R_324()) return true; return false; } - final private boolean jj_3R_245() { - if (jj_scan_token(USER)) return true; - if (jj_3R_85()) return true; + final private boolean jj_3_129() { + if (jj_scan_token(PLUS)) return true; + if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; } @@ -29745,9 +29690,9 @@ final String p; return false; } - final private boolean jj_3R_94() { - if (jj_scan_token(ALTER)) return true; + final private boolean jj_3R_245() { if (jj_scan_token(USER)) return true; + if (jj_3R_85()) return true; return false; } @@ -29801,20 +29746,15 @@ final String p; return false; } - final private boolean jj_3_416() { - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(BETWEEN)) return true; - return false; - } - - final private boolean jj_3R_241() { + final private boolean jj_3R_94() { + if (jj_scan_token(ALTER)) return true; if (jj_scan_token(USER)) return true; - if (jj_3R_85()) return true; return false; } - final private boolean jj_3_124() { - if (jj_scan_token(COLUMN)) return true; + final private boolean jj_3_416() { + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(BETWEEN)) return true; return false; } @@ -29823,11 +29763,6 @@ final String p; return false; } - final private boolean jj_3_123() { - if (jj_scan_token(COLUMN)) return true; - return false; - } - final private boolean jj_3_926() { if (jj_scan_token(KEY)) return true; if (jj_3R_323()) return true; @@ -29845,16 +29780,6 @@ final String p; return false; } - final private boolean jj_3_128() { - if (jj_scan_token(DROP)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_124()) jj_scanpos = xsp; - if (jj_3R_134()) return true; - if (jj_3R_135()) return true; - return false; - } - final private boolean jj_3_928() { if (jj_scan_token(COMMA)) return true; return false; @@ -29865,27 +29790,18 @@ final String p; return false; } - final private boolean jj_3_127() { - if (jj_scan_token(ADD)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_123()) jj_scanpos = xsp; - if (jj_3R_132()) return true; - if (jj_3R_133()) return true; - return false; - } - - final private boolean jj_3_126() { - if (jj_scan_token(NOLOGGING)) return true; + final private boolean jj_3R_424() { return false; } - final private boolean jj_3R_424() { + final private boolean jj_3R_241() { + if (jj_scan_token(USER)) return true; + if (jj_3R_85()) return true; return false; } - final private boolean jj_3_125() { - if (jj_scan_token(LOGGING)) return true; + final private boolean jj_3_124() { + if (jj_scan_token(COLUMN)) return true; return false; } @@ -29899,6 +29815,11 @@ final String p; return false; } + final private boolean jj_3_123() { + if (jj_scan_token(COLUMN)) return true; + return false; + } + final private boolean jj_3_405() { if (jj_scan_token(ANY)) return true; return false; @@ -29920,14 +29841,33 @@ final String p; return false; } - final private boolean jj_3R_93() { - if (jj_scan_token(ALTER)) return true; - if (jj_scan_token(TABLE)) return true; + final private boolean jj_3_404() { + if (jj_scan_token(SOME)) return true; return false; } - final private boolean jj_3_404() { - if (jj_scan_token(SOME)) 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_134()) return true; + if (jj_3R_135()) return true; + return false; + } + + final private boolean jj_3_127() { + if (jj_scan_token(ADD)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_123()) jj_scanpos = xsp; + if (jj_3R_132()) return true; + if (jj_3R_133()) return true; + return false; + } + + final private boolean jj_3_126() { + if (jj_scan_token(NOLOGGING)) return true; return false; } @@ -29956,6 +29896,11 @@ final String p; return false; } + final private boolean jj_3_125() { + if (jj_scan_token(LOGGING)) return true; + return false; + } + final private boolean jj_3_408() { if (jj_scan_token(IN)) return true; return false; @@ -29972,23 +29917,9 @@ final String p; return false; } - final private boolean jj_3_122() { - if (jj_3R_131()) return true; - return false; - } - - final private boolean jj_3R_133() { - 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_130()) return true; + final private boolean jj_3R_93() { + if (jj_scan_token(ALTER)) return true; + if (jj_scan_token(TABLE)) return true; return false; } @@ -30006,12 +29937,6 @@ final String p; return false; } - final private boolean jj_3_120() { - if (jj_scan_token(NOT)) return true; - if (jj_scan_token(NULL)) return true; - return false; - } - final private boolean jj_3_446() { Token xsp; xsp = jj_scanpos; @@ -30037,14 +29962,28 @@ final String p; return false; } - final private boolean jj_3_925() { - if (jj_3R_322()) return true; + final private boolean jj_3_122() { + if (jj_3R_131()) return true; return false; } - final private boolean jj_3R_130() { - if (jj_3R_85()) return true; - if (jj_3R_123()) return true; + final private boolean jj_3R_133() { + 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_130()) return true; + return false; + } + + final private boolean jj_3_925() { + if (jj_3R_322()) return true; return false; } @@ -30085,9 +30024,9 @@ final String p; return false; } - final private boolean jj_3_119() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_130()) return true; + final private boolean jj_3_120() { + if (jj_scan_token(NOT)) return true; + if (jj_scan_token(NULL)) return true; return false; } @@ -30096,15 +30035,15 @@ final String p; return false; } - final private boolean jj_3R_311() { - if (jj_scan_token(JSON_QUERY)) return true; - if (jj_scan_token(LPAREN)) return true; + final private boolean jj_3R_130() { + if (jj_3R_85()) return true; + if (jj_3R_123()) return true; return false; } - final private boolean jj_3R_131() { + final private boolean jj_3R_311() { + if (jj_scan_token(JSON_QUERY)) return true; if (jj_scan_token(LPAREN)) return true; - if (jj_3R_130()) return true; return false; } @@ -30113,6 +30052,12 @@ final String p; return false; } + final private boolean jj_3_119() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_130()) return true; + return false; + } + final private boolean jj_3_916() { if (jj_scan_token(ARRAY)) return true; return false; @@ -30128,9 +30073,9 @@ final String p; return false; } - final private boolean jj_3R_216() { - if (jj_scan_token(INFIX_CAST)) return true; - if (jj_3R_123()) return true; + final private boolean jj_3R_131() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_130()) return true; return false; } @@ -30167,13 +30112,6 @@ final String p; return false; } - final private boolean jj_3R_244() { - if (jj_scan_token(INDEX)) return true; - if (jj_3R_134()) return true; - if (jj_3R_153()) return true; - return false; - } - final private boolean jj_3_915() { if (jj_scan_token(ERROR)) return true; return false; @@ -30184,6 +30122,12 @@ final String p; return false; } + final private boolean jj_3R_216() { + if (jj_scan_token(INFIX_CAST)) return true; + if (jj_3R_123()) return true; + return false; + } + final private boolean jj_3_914() { if (jj_scan_token(EMPTY)) return true; return false; @@ -30204,13 +30148,6 @@ final String p; return false; } - final private boolean jj_3R_243() { - if (jj_scan_token(TABLE)) return true; - if (jj_3R_134()) return true; - if (jj_3R_153()) return true; - return false; - } - final private boolean jj_3_913() { if (jj_scan_token(EMPTY)) return true; if (jj_scan_token(OBJECT)) return true; @@ -30223,13 +30160,16 @@ final String p; return false; } - final private boolean jj_3_912() { - if (jj_scan_token(EMPTY)) return true; - if (jj_scan_token(ARRAY)) return true; + final private boolean jj_3R_244() { + if (jj_scan_token(INDEX)) return true; + if (jj_3R_134()) return true; + if (jj_3R_153()) return true; return false; } - final private boolean jj_3R_367() { + final private boolean jj_3_912() { + if (jj_scan_token(EMPTY)) return true; + if (jj_scan_token(ARRAY)) return true; return false; } @@ -30238,22 +30178,6 @@ final String p; return false; } - final private boolean jj_3R_134() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_118()) { - jj_scanpos = xsp; - if (jj_3R_367()) 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_3R_392() { if (jj_3R_85()) return true; return false; @@ -30264,6 +30188,13 @@ final String p; return false; } + final private boolean jj_3R_243() { + if (jj_scan_token(TABLE)) return true; + if (jj_3R_134()) return true; + if (jj_3R_153()) return true; + return false; + } + final private boolean jj_3_401() { if (jj_scan_token(UNSIGNED_INTEGER_LITERAL)) return true; return false; @@ -30291,12 +30222,6 @@ final String p; 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; - return false; - } - final private boolean jj_3R_209() { if (jj_scan_token(LBRACKET)) return true; Token xsp; @@ -30311,27 +30236,31 @@ final String p; return false; } - final private boolean jj_3_909() { - if (jj_3R_320()) 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_3R_367() { return false; } - final private boolean jj_3_115() { + final private boolean jj_3R_134() { Token xsp; xsp = jj_scanpos; - if (jj_3_116()) { + if (jj_3_118()) { jj_scanpos = xsp; - if (jj_3_117()) return true; + if (jj_3R_367()) 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_909() { + if (jj_3R_320()) return true; + return false; + } + final private boolean jj_3_398() { if (jj_3R_209()) return true; return false; @@ -30342,8 +30271,9 @@ final String p; return false; } - final private boolean jj_3_114() { - if (jj_3R_85()) 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; } @@ -30379,13 +30309,19 @@ final String p; return false; } - final private boolean jj_3R_240() { - if (jj_scan_token(INDEX)) return true; - if (jj_3R_132()) return true; + 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_114()) jj_scanpos = xsp; - if (jj_scan_token(ON)) return true; + if (jj_3_116()) { + jj_scanpos = xsp; + if (jj_3_117()) return true; + } return false; } @@ -30405,14 +30341,13 @@ final String p; return false; } - final private boolean jj_3_907() { - if (jj_scan_token(ERROR)) return true; + final private boolean jj_3_114() { + if (jj_3R_85()) return true; return false; } - final private boolean jj_3_113() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_129()) return true; + final private boolean jj_3_907() { + if (jj_scan_token(ERROR)) return true; return false; } @@ -30421,6 +30356,16 @@ final String p; return false; } + final private boolean jj_3R_240() { + if (jj_scan_token(INDEX)) return true; + if (jj_3R_132()) 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_427() { if (jj_scan_token(COLON)) return true; return false; @@ -30444,28 +30389,14 @@ final String p; return false; } - final private boolean jj_3_903() { - if (jj_scan_token(ERROR)) return true; - return false; - } - - final private boolean jj_3_111() { - if (jj_scan_token(DESC)) return true; - return false; - } - - final private boolean jj_3_112() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_110()) { - jj_scanpos = xsp; - if (jj_3_111()) return true; - } + final private boolean jj_3_113() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_129()) return true; return false; } - final private boolean jj_3_110() { - if (jj_scan_token(ASC)) return true; + final private boolean jj_3_903() { + if (jj_scan_token(ERROR)) return true; return false; } @@ -30483,11 +30414,6 @@ final String p; return false; } - final private boolean jj_3R_129() { - if (jj_3R_85()) return true; - return false; - } - final private boolean jj_3R_82() { if (jj_3R_215()) return true; return false; @@ -30499,12 +30425,23 @@ final String p; return false; } - final private boolean jj_3R_127() { + final private boolean jj_3_111() { + if (jj_scan_token(DESC)) return true; return false; } - final private boolean jj_3_107() { - if (jj_3R_125()) 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; } @@ -30519,21 +30456,8 @@ final String p; return false; } - final private boolean jj_3_109() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_107()) { - jj_scanpos = xsp; - if (jj_3R_127()) return true; - } - if (jj_3R_128()) return true; - if (jj_scan_token(AS)) return true; - if (jj_3R_80()) return true; - return false; - } - - final private boolean jj_3_108() { - if (jj_3R_126()) return true; + final private boolean jj_3R_129() { + if (jj_3R_85()) return true; return false; } @@ -30557,11 +30481,20 @@ final String p; return false; } + final private boolean jj_3R_127() { + return false; + } + final private boolean jj_3_901() { if (jj_scan_token(ERROR)) return true; return false; } + final private boolean jj_3_107() { + if (jj_3R_125()) return true; + return false; + } + final private boolean jj_3_900() { if (jj_scan_token(UNKNOWN)) return true; return false; @@ -30593,10 +30526,16 @@ final String p; return false; } - final private boolean jj_3R_239() { - if (jj_scan_token(TABLE)) return true; - if (jj_3R_132()) return true; - if (jj_3R_153()) return true; + final private boolean jj_3_109() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_107()) { + jj_scanpos = xsp; + if (jj_3R_127()) return true; + } + if (jj_3R_128()) return true; + if (jj_scan_token(AS)) return true; + if (jj_3R_80()) return true; return false; } @@ -30605,6 +30544,11 @@ final String p; return false; } + final private boolean jj_3_108() { + if (jj_3R_126()) return true; + return false; + } + final private boolean jj_3R_208() { if (jj_3R_85()) return true; return false; @@ -30621,15 +30565,16 @@ final String p; return false; } - final private boolean jj_3_106() { + final private boolean jj_3_390() { if (jj_scan_token(COMMA)) return true; - if (jj_3R_124()) return true; + if (jj_3R_208()) return true; return false; } - final private boolean jj_3_390() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_208()) return true; + final private boolean jj_3R_239() { + if (jj_scan_token(TABLE)) return true; + if (jj_3R_132()) return true; + if (jj_3R_153()) return true; return false; } @@ -30642,15 +30587,26 @@ final String p; return false; } + final private boolean jj_3_897() { + if (jj_scan_token(PASSING)) return true; + if (jj_3R_82()) return true; + return false; + } + + final private boolean jj_3_106() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_124()) return true; + return false; + } + final private boolean jj_3R_126() { if (jj_scan_token(LPAREN)) return true; if (jj_3R_124()) return true; return false; } - final private boolean jj_3_897() { - if (jj_scan_token(PASSING)) return true; - if (jj_3R_82()) return true; + final private boolean jj_3R_68() { + if (jj_3R_348()) return true; return false; } @@ -30660,6 +30616,12 @@ final String p; return false; } + final private boolean jj_3_895() { + if (jj_scan_token(FORMAT)) return true; + if (jj_3R_317()) return true; + return false; + } + final private boolean jj_3_105() { Token xsp; xsp = jj_scanpos; @@ -30675,14 +30637,9 @@ final String p; return false; } - final private boolean jj_3R_68() { - if (jj_3R_348()) return true; - return false; - } - - final private boolean jj_3_895() { - if (jj_scan_token(FORMAT)) return true; - if (jj_3R_317()) return true; + final private boolean jj_3R_319() { + if (jj_scan_token(RETURNING)) return true; + if (jj_3R_121()) return true; return false; } @@ -30708,18 +30665,6 @@ final String p; return false; } - final private boolean jj_3R_319() { - if (jj_scan_token(RETURNING)) return true; - if (jj_3R_121()) return true; - return false; - } - - final private boolean jj_3R_122() { - if (jj_scan_token(INTERVAL)) return true; - if (jj_3R_219()) return true; - return false; - } - final private boolean jj_3_893() { if (jj_scan_token(UTF32)) return true; return false; @@ -30735,16 +30680,6 @@ final String p; return false; } - final private boolean jj_3_100() { - if (jj_3R_122()) return true; - return false; - } - - final private boolean jj_3_99() { - if (jj_3R_121()) return true; - return false; - } - final private boolean jj_3_894() { if (jj_scan_token(ENCODING)) return true; Token xsp; @@ -30759,13 +30694,9 @@ final String p; return false; } - final private boolean jj_3R_123() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_99()) { - jj_scanpos = xsp; - if (jj_3_100()) return true; - } + final private boolean jj_3R_122() { + if (jj_scan_token(INTERVAL)) return true; + if (jj_3R_219()) return true; return false; } @@ -30794,18 +30725,13 @@ final String p; return false; } - final private boolean jj_3_98() { - if (jj_3R_85()) return true; - return false; - } - final private boolean jj_3_889() { if (jj_3R_315()) return true; return false; } - final private boolean jj_3_97() { - if (jj_3R_120()) return true; + final private boolean jj_3_100() { + if (jj_3R_122()) return true; return false; } @@ -30824,6 +30750,11 @@ final String p; return false; } + final private boolean jj_3_99() { + if (jj_3R_121()) return true; + return false; + } + final private boolean jj_3_887() { if (jj_3R_313()) return true; return false; @@ -30834,9 +30765,13 @@ final String p; return false; } - final private boolean jj_3R_119() { - if (jj_3R_363()) return true; - if (jj_scan_token(EQ)) return true; + final private boolean jj_3R_123() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_99()) { + jj_scanpos = xsp; + if (jj_3_100()) return true; + } return false; } @@ -30870,6 +30805,11 @@ final String p; return false; } + final private boolean jj_3_98() { + if (jj_3R_85()) return true; + return false; + } + final private boolean jj_3R_351() { Token xsp; xsp = jj_scanpos; @@ -30887,8 +30827,8 @@ final String p; return false; } - final private boolean jj_3_96() { - if (jj_scan_token(WRAP_VALUE)) return true; + final private boolean jj_3_97() { + if (jj_3R_120()) return true; return false; } @@ -30897,13 +30837,64 @@ final String p; return false; } + final private boolean jj_3_879() { + if (jj_3R_305()) return true; + return false; + } + + final private boolean jj_3_878() { + if (jj_3R_304()) return true; + return false; + } + + final private boolean jj_3R_119() { + if (jj_3R_363()) return true; + if (jj_scan_token(EQ)) return true; + return false; + } + + final private boolean jj_3_877() { + if (jj_3R_303()) return true; + return false; + } + + final private boolean jj_3_876() { + if (jj_3R_302()) return true; + return false; + } + + final private boolean jj_3_875() { + if (jj_3R_301()) return true; + return false; + } + + final private boolean jj_3_874() { + if (jj_3R_300()) return true; + return false; + } + + final private boolean jj_3_873() { + if (jj_3R_299()) return true; + return false; + } + + final private boolean jj_3_96() { + if (jj_scan_token(WRAP_VALUE)) return true; + return false; + } + + final private boolean jj_3_872() { + if (jj_3R_298()) return true; + return false; + } + final private boolean jj_3_95() { if (jj_scan_token(WRAP_KEY)) return true; return false; } - final private boolean jj_3_879() { - if (jj_3R_305()) return true; + final private boolean jj_3_871() { + if (jj_3R_297()) return true; return false; } @@ -30912,8 +30903,8 @@ final String p; return false; } - final private boolean jj_3_878() { - if (jj_3R_304()) return true; + final private boolean jj_3_870() { + if (jj_3R_296()) return true; return false; } @@ -30922,18 +30913,14 @@ final String p; return false; } - final private boolean jj_3_877() { - if (jj_3R_303()) return true; - return false; - } - final private boolean jj_3_92() { if (jj_scan_token(KEY_TYPE)) return true; return false; } - final private boolean jj_3_876() { - if (jj_3R_302()) return true; + final private boolean jj_3_857() { + if (jj_scan_token(FROM)) return true; + if (jj_3R_82()) return true; return false; } @@ -30942,48 +30929,36 @@ final String p; return false; } - final private boolean jj_3_875() { - if (jj_3R_301()) return true; - return false; - } - final private boolean jj_3_90() { if (jj_scan_token(CACHE_NAME)) return true; return false; } - final private boolean jj_3_874() { - if (jj_3R_300()) return true; - return false; - } - final private boolean jj_3_89() { if (jj_scan_token(CACHE_GROUP)) return true; return false; } - final private boolean jj_3_873() { - if (jj_3R_299()) return true; - return false; - } - final private boolean jj_3_88() { if (jj_scan_token(WRITE_SYNCHRONIZATION_MODE)) return true; return false; } - final private boolean jj_3_872() { - if (jj_3R_298()) return true; + final private boolean jj_3_87() { + if (jj_scan_token(ATOMICITY)) return true; return false; } - final private boolean jj_3_87() { - if (jj_scan_token(ATOMICITY)) return true; + final private boolean jj_3_856() { + if (jj_3R_82()) return true; return false; } - final private boolean jj_3_871() { - if (jj_3R_297()) return true; + final private boolean jj_3_859() { + if (jj_3R_82()) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_857()) jj_scanpos = xsp; return false; } @@ -30992,8 +30967,8 @@ final String p; return false; } - final private boolean jj_3_870() { - if (jj_3R_296()) return true; + final private boolean jj_3_855() { + if (jj_scan_token(LEADING)) return true; return false; } @@ -31050,64 +31025,24 @@ final String p; return false; } - final private boolean jj_3_857() { - if (jj_scan_token(FROM)) return true; - if (jj_3R_82()) return true; - return false; - } - final private boolean jj_3_80() { if (jj_scan_token(COMMA)) return true; if (jj_3R_119()) return true; return false; } - final private boolean jj_3_82() { - if (jj_3R_119()) return true; - return false; - } - - final private boolean jj_3_856() { - if (jj_3R_82()) return true; - return false; - } - - final private boolean jj_3_859() { - if (jj_3R_82()) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_857()) jj_scanpos = xsp; - return false; - } - - final private boolean jj_3_855() { - if (jj_scan_token(LEADING)) 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_854() { if (jj_scan_token(TRAILING)) return true; 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; - } + final private boolean jj_3_853() { + if (jj_scan_token(BOTH)) return true; return false; } - final private boolean jj_3_853() { - if (jj_scan_token(BOTH)) return true; + final private boolean jj_3_82() { + if (jj_3R_119()) return true; return false; } @@ -31116,10 +31051,8 @@ final String p; return false; } - final private boolean jj_3R_128() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_83()) jj_scanpos = xsp; + final private boolean jj_3_81() { + if (jj_scan_token(QUOTED_IDENTIFIER)) return true; return false; } @@ -31139,10 +31072,6 @@ final String p; return false; } - final private boolean jj_3R_366() { - return false; - } - final private boolean jj_3_1829() { if (jj_scan_token(FRIDAY)) return true; return false; @@ -31153,24 +31082,19 @@ final String p; return false; } - final private boolean jj_3R_132() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_79()) { - jj_scanpos = xsp; - if (jj_3R_366()) return true; - } - return false; - } - final private boolean jj_3_1827() { if (jj_scan_token(WITHOUT)) return true; return false; } - final private boolean jj_3_79() { - if (jj_scan_token(IF)) return true; - if (jj_scan_token(NOT)) return true; + 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; } @@ -31205,6 +31129,13 @@ final String p; return false; } + final private boolean jj_3R_128() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_83()) jj_scanpos = xsp; + return false; + } + final private boolean jj_3_1822() { if (jj_scan_token(UPSERT)) return true; return false; @@ -31277,6 +31208,10 @@ final String p; return false; } + final private boolean jj_3R_366() { + return false; + } + final private boolean jj_3_1813() { if (jj_scan_token(SUBSTRING)) return true; return false; @@ -31292,11 +31227,27 @@ final String p; return false; } + final private boolean jj_3R_132() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_79()) { + jj_scanpos = xsp; + if (jj_3R_366()) return true; + } + return false; + } + final private boolean jj_3_1811() { if (jj_scan_token(STATIC)) 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_848() { if (jj_scan_token(FROM)) return true; return false; @@ -31338,11 +31289,6 @@ final String p; return false; } - final private boolean jj_3_78() { - if (jj_3R_118()) return true; - return false; - } - final private boolean jj_3_1804() { if (jj_scan_token(SAFE_ORDINAL)) return true; return false; @@ -31353,11 +31299,6 @@ final String p; return false; } - final private boolean jj_3_77() { - if (jj_3R_117()) return true; - return false; - } - final private boolean jj_3_846() { if (jj_scan_token(CEIL)) return true; return false; @@ -31378,11 +31319,6 @@ final String p; return false; } - final private boolean jj_3_76() { - if (jj_3R_116()) return true; - return false; - } - final private boolean jj_3_867() { Token xsp; xsp = jj_scanpos; @@ -31404,11 +31340,6 @@ final String p; return false; } - final private boolean jj_3_75() { - if (jj_3R_115()) return true; - return false; - } - final private boolean jj_3_1798() { if (jj_scan_token(REGR_R2)) return true; return false; @@ -31419,11 +31350,6 @@ final String p; return false; } - final private boolean jj_3_74() { - if (jj_3R_114()) return true; - return false; - } - final private boolean jj_3_1796() { if (jj_scan_token(REFERENCES)) return true; return false; @@ -31440,11 +31366,6 @@ final String p; return false; } - final private boolean jj_3_73() { - if (jj_3R_113()) return true; - return false; - } - final private boolean jj_3_1794() { if (jj_scan_token(RANGE)) return true; return false; @@ -31461,11 +31382,6 @@ final String p; return false; } - final private boolean jj_3_72() { - if (jj_3R_112()) return true; - return false; - } - final private boolean jj_3_845() { if (jj_scan_token(FOR)) return true; if (jj_3R_79()) return true; @@ -31487,11 +31403,6 @@ final String p; return false; } - final private boolean jj_3_71() { - if (jj_3R_80()) return true; - return false; - } - final private boolean jj_3_1790() { if (jj_scan_token(PERIOD)) return true; return false; @@ -31502,8 +31413,8 @@ final String p; return false; } - final private boolean jj_3_70() { - if (jj_3R_111()) return true; + final private boolean jj_3_78() { + if (jj_3R_118()) return true; return false; } @@ -31517,8 +31428,8 @@ final String p; return false; } - final private boolean jj_3_69() { - if (jj_3R_110()) return true; + final private boolean jj_3_77() { + if (jj_3R_117()) return true; return false; } @@ -31544,8 +31455,8 @@ final String p; return false; } - final private boolean jj_3_68() { - if (jj_3R_109()) return true; + final private boolean jj_3_76() { + if (jj_3R_116()) return true; return false; } @@ -31575,8 +31486,8 @@ final String p; return false; } - final private boolean jj_3_67() { - if (jj_3R_108()) return true; + final private boolean jj_3_75() { + if (jj_3R_115()) return true; return false; } @@ -31590,8 +31501,8 @@ final String p; return false; } - final private boolean jj_3_66() { - if (jj_3R_107()) return true; + final private boolean jj_3_74() { + if (jj_3R_114()) return true; return false; } @@ -31605,8 +31516,8 @@ final String p; return false; } - final private boolean jj_3_65() { - if (jj_3R_106()) return true; + final private boolean jj_3_73() { + if (jj_3R_113()) return true; return false; } @@ -31626,8 +31537,8 @@ final String p; return false; } - final private boolean jj_3_64() { - if (jj_3R_105()) return true; + final private boolean jj_3_72() { + if (jj_3R_112()) return true; return false; } @@ -31641,8 +31552,8 @@ final String p; return false; } - final private boolean jj_3_63() { - if (jj_3R_104()) return true; + final private boolean jj_3_71() { + if (jj_3R_80()) return true; return false; } @@ -31667,8 +31578,8 @@ final String p; return false; } - final private boolean jj_3_62() { - if (jj_3R_103()) return true; + final private boolean jj_3_70() { + if (jj_3R_111()) return true; return false; } @@ -31687,8 +31598,8 @@ final String p; return false; } - final private boolean jj_3_61() { - if (jj_3R_102()) return true; + final private boolean jj_3_69() { + if (jj_3R_110()) return true; return false; } @@ -31708,8 +31619,8 @@ final String p; return false; } - final private boolean jj_3_60() { - if (jj_3R_101()) return true; + final private boolean jj_3_68() { + if (jj_3R_109()) return true; return false; } @@ -31729,8 +31640,8 @@ final String p; return false; } - final private boolean jj_3_59() { - if (jj_3R_100()) return true; + final private boolean jj_3_67() { + if (jj_3R_108()) return true; return false; } @@ -31761,8 +31672,8 @@ final String p; return false; } - final private boolean jj_3_58() { - if (jj_3R_99()) return true; + final private boolean jj_3_66() { + if (jj_3R_107()) return true; return false; } @@ -31797,8 +31708,8 @@ final String p; return false; } - final private boolean jj_3_57() { - if (jj_3R_98()) return true; + final private boolean jj_3_65() { + if (jj_3R_106()) return true; return false; } @@ -31812,8 +31723,8 @@ final String p; return false; } - final private boolean jj_3_56() { - if (jj_3R_97()) return true; + final private boolean jj_3_64() { + if (jj_3R_105()) return true; return false; } @@ -31833,8 +31744,8 @@ final String p; return false; } - final private boolean jj_3_55() { - if (jj_3R_96()) return true; + final private boolean jj_3_63() { + if (jj_3R_104()) return true; return false; } @@ -31853,8 +31764,8 @@ final String p; return false; } - final private boolean jj_3_54() { - if (jj_3R_95()) return true; + final private boolean jj_3_62() { + if (jj_3R_103()) return true; return false; } @@ -31868,8 +31779,8 @@ final String p; return false; } - final private boolean jj_3_53() { - if (jj_3R_94()) return true; + final private boolean jj_3_61() { + if (jj_3R_102()) return true; return false; } @@ -31903,8 +31814,8 @@ final String p; return false; } - final private boolean jj_3_52() { - if (jj_3R_93()) return true; + final private boolean jj_3_60() { + if (jj_3R_101()) return true; return false; } @@ -31918,6 +31829,11 @@ final String p; return false; } + final private boolean jj_3_59() { + if (jj_3R_100()) return true; + return false; + } + final private boolean jj_3_1750() { if (jj_scan_token(DEC)) return true; return false; @@ -31928,12 +31844,169 @@ final String p; return false; } + final private boolean jj_3_58() { + if (jj_3R_99()) return true; + return false; + } + final private boolean jj_3_831() { if (jj_scan_token(COMMA)) return true; if (jj_3R_85()) return true; return false; } + final private boolean jj_3_1748() { + if (jj_scan_token(CURSOR)) return true; + return false; + } + + final private boolean jj_3_376() { + if (jj_scan_token(HOOK)) return true; + return false; + } + + final private boolean jj_3_1747() { + if (jj_scan_token(CURRENT_ROLE)) return true; + return false; + } + + final private boolean jj_3_57() { + if (jj_3R_98()) return true; + return false; + } + + final private boolean jj_3_1746() { + if (jj_scan_token(CURRENT_CATALOG)) return true; + return false; + } + + final private boolean jj_3_1745() { + if (jj_scan_token(CUBE)) return true; + return false; + } + + final private boolean jj_3_56() { + if (jj_3R_97()) return true; + return false; + } + + final private boolean jj_3_1744() { + if (jj_scan_token(COUNT)) return true; + return false; + } + + final private boolean jj_3_1743() { + if (jj_scan_token(CONVERT)) return true; + return false; + } + + final private boolean jj_3_55() { + if (jj_3R_96()) return true; + return false; + } + + final private boolean jj_3_371() { + if (jj_scan_token(MINUS)) return true; + if (jj_3R_203()) return true; + return false; + } + + final private boolean jj_3_834() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_85()) return true; + return false; + } + + final private boolean jj_3_1742() { + if (jj_scan_token(CONDITION)) return true; + return false; + } + + final private boolean jj_3_1741() { + if (jj_scan_token(COLLATE)) return true; + return false; + } + + final private boolean jj_3_54() { + if (jj_3R_95()) return true; + return false; + } + + final private boolean jj_3_1740() { + if (jj_scan_token(CLOB)) return true; + return false; + } + + final private boolean jj_3R_202() { + return false; + } + + final private boolean jj_3R_201() { + return false; + } + + final private boolean jj_3_1739() { + if (jj_scan_token(CHAR_LENGTH)) return true; + return false; + } + + final private boolean jj_3_53() { + if (jj_3R_94()) return true; + return false; + } + + final private boolean jj_3_1738() { + if (jj_scan_token(CHAR)) return true; + return false; + } + + final private boolean jj_3_370() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_200()) return true; + return false; + } + + final private boolean jj_3_833() { + if (jj_scan_token(USING)) return true; + if (jj_3R_85()) return true; + return false; + } + + final private boolean jj_3_1737() { + if (jj_scan_token(CASCADED)) return true; + return false; + } + + final private boolean jj_3_52() { + if (jj_3R_93()) return true; + return false; + } + + final private boolean jj_3_367() { + if (jj_3R_200()) return true; + return false; + } + + final private boolean jj_3_1736() { + if (jj_scan_token(CALL)) return true; + return false; + } + + final private boolean jj_3_1735() { + if (jj_scan_token(BIT)) return true; + return false; + } + + final private boolean jj_3_1734() { + if (jj_scan_token(BEGIN_PARTITION)) return true; + return false; + } + + final private boolean jj_3_1733() { + if (jj_scan_token(AVG)) return true; + return false; + } + final private boolean jj_3R_92() { Token xsp; xsp = jj_scanpos; @@ -32019,141 +32092,6 @@ final String p; return false; } - final private boolean jj_3_1748() { - if (jj_scan_token(CURSOR)) return true; - return false; - } - - final private boolean jj_3_376() { - if (jj_scan_token(HOOK)) return true; - return false; - } - - final private boolean jj_3_1747() { - if (jj_scan_token(CURRENT_ROLE)) return true; - return false; - } - - final private boolean jj_3_1746() { - if (jj_scan_token(CURRENT_CATALOG)) return true; - return false; - } - - final private boolean jj_3_1745() { - if (jj_scan_token(CUBE)) return true; - return false; - } - - final private boolean jj_3_1744() { - if (jj_scan_token(COUNT)) return true; - return false; - } - - final private boolean jj_3_1743() { - if (jj_scan_token(CONVERT)) return true; - return false; - } - - final private boolean jj_3_371() { - if (jj_scan_token(MINUS)) return true; - if (jj_3R_203()) return true; - return false; - } - - final private boolean jj_3_834() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_85()) return true; - return false; - } - - final private boolean jj_3_1742() { - if (jj_scan_token(CONDITION)) return true; - return false; - } - - final private boolean jj_3_1741() { - if (jj_scan_token(COLLATE)) return true; - return false; - } - - final private boolean jj_3_1740() { - if (jj_scan_token(CLOB)) return true; - return false; - } - - final private boolean jj_3_50() { - if (jj_3R_92()) return true; - return false; - } - - final private boolean jj_3R_202() { - return false; - } - - final private boolean jj_3R_201() { - return false; - } - - final private boolean jj_3_1739() { - if (jj_scan_token(CHAR_LENGTH)) return true; - return false; - } - - final private boolean jj_3_1738() { - if (jj_scan_token(CHAR)) return true; - return false; - } - - final private boolean jj_3_370() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_200()) return true; - return false; - } - - final private boolean jj_3_833() { - if (jj_scan_token(USING)) return true; - if (jj_3R_85()) return true; - return false; - } - - final private boolean jj_3_1737() { - if (jj_scan_token(CASCADED)) return true; - return false; - } - - final private boolean jj_3_367() { - if (jj_3R_200()) return true; - return false; - } - - final private boolean jj_3_1736() { - if (jj_scan_token(CALL)) return true; - return false; - } - - final private boolean jj_3_1735() { - if (jj_scan_token(BIT)) return true; - return false; - } - - final private boolean jj_3_1734() { - if (jj_scan_token(BEGIN_PARTITION)) return true; - return false; - } - - 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_1733() { - if (jj_scan_token(AVG)) return true; - return false; - } - final private boolean jj_3_1732() { if (jj_scan_token(AT)) return true; return false; @@ -32211,16 +32149,6 @@ final String p; return false; } - final private boolean jj_3_51() { - if (jj_3R_92()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_49()) { jj_scanpos = xsp; break; } - } - return false; - } - final private boolean jj_3_1725() { if (jj_scan_token(NOLOGGING)) return true; return false; @@ -32243,6 +32171,11 @@ final String p; return false; } + final private boolean jj_3_50() { + if (jj_3R_92()) return true; + return false; + } + final private boolean jj_3_1723() { if (jj_scan_token(WRAP_KEY)) return true; return false; @@ -32293,6 +32226,14 @@ final String p; 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_1717() { if (jj_scan_token(VIEW)) return true; return false; @@ -32309,12 +32250,6 @@ final String p; return false; } - final private boolean jj_3R_91() { - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - final private boolean jj_3_1715() { if (jj_scan_token(USER_DEFINED_TYPE_NAME)) return true; return false; @@ -32350,6 +32285,16 @@ final String p; return false; } + final private boolean jj_3_51() { + if (jj_3R_92()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_49()) { jj_scanpos = xsp; break; } + } + return false; + } + final private boolean jj_3_1709() { if (jj_scan_token(TRANSACTIONS_COMMITTED)) return true; return false; @@ -32416,6 +32361,12 @@ final String p; return false; } + final private boolean jj_3R_91() { + if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(RPAREN)) return true; + return false; + } + final private boolean jj_3_1699() { if (jj_scan_token(SQL_TSI_FRAC_SECOND)) return true; return false; @@ -32501,11 +32452,6 @@ final String p; return false; } - final private boolean jj_3R_81() { - if (jj_scan_token(DEFAULT_)) return true; - return false; - } - final private boolean jj_3_1691() { if (jj_scan_token(SQL_INTERVAL_DAY_TO_MINUTE)) return true; return false; @@ -32526,11 +32472,6 @@ final String p; return false; } - final private boolean jj_3R_90() { - if (jj_3R_135()) return true; - return false; - } - final private boolean jj_3_1688() { if (jj_scan_token(SQL_CHAR)) return true; return false; @@ -32541,28 +32482,11 @@ final String p; return false; } - final private boolean jj_3_46() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_90()) { - jj_scanpos = xsp; - if (jj_3R_91()) return true; - } - if (jj_scan_token(LAMBDA)) return true; - return false; - } - final private boolean jj_3_1686() { if (jj_scan_token(SPECIFIC_NAME)) return true; return false; } - final private boolean jj_3R_87() { - if (jj_scan_token(LPAREN)) return true; - if (jj_scan_token(RPAREN)) return true; - return false; - } - final private boolean jj_3_1685() { if (jj_scan_token(SIZE)) return true; return false; @@ -32583,11 +32507,6 @@ final String p; return false; } - final private boolean jj_3_48() { - if (jj_3R_88()) return true; - return false; - } - final private boolean jj_3_826() { if (jj_scan_token(TRY_CAST)) return true; return false; @@ -32613,11 +32532,6 @@ final String p; return false; } - final private boolean jj_3_47() { - if (jj_3R_82()) return true; - return false; - } - final private boolean jj_3_1679() { if (jj_scan_token(SCALE)) return true; return false; @@ -32642,11 +32556,6 @@ final String p; return false; } - final private boolean jj_3R_354() { - if (jj_3R_420()) return true; - return false; - } - final private boolean jj_3_1677() { if (jj_scan_token(ROUTINE)) return true; return false; @@ -32662,13 +32571,13 @@ final String p; return false; } - final private boolean jj_3_1675() { - if (jj_scan_token(RETURNED_LENGTH)) return true; + final private boolean jj_3R_81() { + if (jj_scan_token(DEFAULT_)) return true; return false; } - final private boolean jj_3_45() { - if (jj_3R_81()) return true; + final private boolean jj_3_1675() { + if (jj_scan_token(RETURNED_LENGTH)) return true; return false; } @@ -32779,7 +32688,8 @@ final String p; return false; } - final private boolean jj_3R_353() { + final private boolean jj_3R_90() { + if (jj_3R_135()) return true; return false; } @@ -32798,9 +32708,14 @@ final String p; return false; } - final private boolean jj_3_44() { - if (jj_3R_85()) return true; - if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true; + final private boolean jj_3_46() { + Token xsp; + xsp = jj_scanpos; + if (jj_3R_90()) { + jj_scanpos = xsp; + if (jj_3R_91()) return true; + } + if (jj_scan_token(LAMBDA)) return true; return false; } @@ -32809,6 +32724,12 @@ final String p; return false; } + final private boolean jj_3R_87() { + if (jj_scan_token(LPAREN)) return true; + if (jj_scan_token(RPAREN)) return true; + return false; + } + final private boolean jj_3_1669() { if (jj_scan_token(PLACING)) return true; return false; @@ -32824,29 +32745,13 @@ final String p; return false; } - final private boolean jj_3R_84() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_44()) { - jj_scanpos = xsp; - if (jj_3R_353()) return true; - } - xsp = jj_scanpos; - if (jj_3_45()) { - jj_scanpos = xsp; - if (jj_3R_354()) { - jj_scanpos = xsp; - if (jj_3_47()) { - jj_scanpos = xsp; - if (jj_3_48()) return true; - } - } - } + final private boolean jj_3_1666() { + if (jj_scan_token(PARAMETER_SPECIFIC_NAME)) return true; return false; } - final private boolean jj_3_1666() { - if (jj_scan_token(PARAMETER_SPECIFIC_NAME)) return true; + final private boolean jj_3_48() { + if (jj_3R_88()) return true; return false; } @@ -32860,6 +32765,11 @@ final String p; return false; } + final private boolean jj_3_47() { + if (jj_3R_82()) return true; + return false; + } + final private boolean jj_3_1663() { if (jj_scan_token(ORDINALITY)) return true; return false; @@ -32870,6 +32780,11 @@ final String p; return false; } + final private boolean jj_3R_354() { + if (jj_3R_420()) return true; + return false; + } + final private boolean jj_3_1661() { if (jj_scan_token(NUMBER)) return true; return false; @@ -32885,8 +32800,8 @@ final String p; return false; } - final private boolean jj_3R_86() { - if (jj_3R_135()) return true; + final private boolean jj_3_45() { + if (jj_3R_81()) return true; return false; } @@ -32906,14 +32821,7 @@ final String p; return false; } - final private boolean jj_3_41() { - Token xsp; - xsp = jj_scanpos; - if (jj_3R_86()) { - jj_scanpos = xsp; - if (jj_3R_87()) return true; - } - if (jj_scan_token(LAMBDA)) return true; + final private boolean jj_3R_353() { return false; } @@ -32927,6 +32835,12 @@ final String p; return false; } + final private boolean jj_3_44() { + if (jj_3R_85()) return true; + if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true; + return false; + } + final private boolean jj_3_1654() { if (jj_scan_token(MAP)) return true; return false; @@ -32937,11 +32851,6 @@ final String p; return false; } - final private boolean jj_3_43() { - if (jj_3R_89()) return true; - return false; - } - final private boolean jj_3R_203() { if (jj_3R_198()) return true; return false; @@ -32957,13 +32866,29 @@ final String p; return false; } - final private boolean jj_3_1650() { - if (jj_scan_token(JSON)) return true; + final private boolean jj_3R_84() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_44()) { + jj_scanpos = xsp; + if (jj_3R_353()) return true; + } + xsp = jj_scanpos; + if (jj_3_45()) { + jj_scanpos = xsp; + if (jj_3R_354()) { + jj_scanpos = xsp; + if (jj_3_47()) { + jj_scanpos = xsp; + if (jj_3_48()) return true; + } + } + } return false; } - final private boolean jj_3_42() { - if (jj_3R_88()) return true; + final private boolean jj_3_1650() { + if (jj_scan_token(JSON)) return true; return false; } @@ -32977,11 +32902,6 @@ final String p; return false; } - final private boolean jj_3R_371() { - if (jj_3R_420()) return true; - return false; - } - final private boolean jj_3_1647() { if (jj_scan_token(INITIALLY)) return true; return false; @@ -32997,11 +32917,6 @@ final String p; return false; } - final private boolean jj_3_40() { - if (jj_3R_81()) return true; - return false; - } - final private boolean jj_3_1644() { if (jj_scan_token(HOURS)) return true; return false; @@ -33012,16 +32927,17 @@ final String p; return false; } - final private boolean jj_3R_370() { - return false; - } - final private boolean jj_3R_221() { if (jj_scan_token(CURSOR)) return true; if (jj_3R_82()) return true; return false; } + final private boolean jj_3R_86() { + if (jj_3R_135()) return true; + return false; + } + final private boolean jj_3_1642() { if (jj_scan_token(GO)) return true; return false; @@ -33032,9 +32948,14 @@ final String p; return false; } - final private boolean jj_3_39() { - if (jj_3R_85()) 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_86()) { + jj_scanpos = xsp; + if (jj_3R_87()) return true; + } + if (jj_scan_token(LAMBDA)) return true; return false; } @@ -33063,24 +32984,8 @@ final String p; return false; } - final private boolean jj_3R_155() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_39()) { - jj_scanpos = xsp; - if (jj_3R_370()) return true; - } - xsp = jj_scanpos; - if (jj_3_40()) { - jj_scanpos = xsp; - if (jj_3R_371()) { - jj_scanpos = xsp; - if (jj_3_42()) { - jj_scanpos = xsp; - if (jj_3_43()) return true; - } - } - } + final private boolean jj_3_43() { + if (jj_3R_89()) return true; return false; } @@ -33099,6 +33004,11 @@ final String p; return false; } + final private boolean jj_3_42() { + if (jj_3R_88()) return true; + return false; + } + final private boolean jj_3_1633() { if (jj_scan_token(DESCRIPTION)) return true; return false; @@ -33114,6 +33024,11 @@ final String p; return false; } + final private boolean jj_3R_371() { + if (jj_3R_420()) return true; + return false; + } + final private boolean jj_3_1631() { if (jj_scan_token(DEFINED)) return true; return false; @@ -33135,6 +33050,11 @@ final String p; return false; } + final private boolean jj_3_40() { + if (jj_3R_81()) return true; + return false; + } + final private boolean jj_3R_411() { return false; } @@ -33154,6 +33074,10 @@ final String p; return false; } + final private boolean jj_3R_370() { + return false; + } + final private boolean jj_3_1626() { if (jj_scan_token(DATA)) return true; return false; @@ -33164,6 +33088,12 @@ final String p; return false; } + final private boolean jj_3_39() { + if (jj_3R_85()) return true; + if (jj_scan_token(NAMED_ARGUMENT_ASSIGNMENT)) return true; + return false; + } + final private boolean jj_3_1624() { if (jj_scan_token(CONSTRAINTS)) return true; return false; @@ -33213,6 +33143,27 @@ final String p; return false; } + final private boolean jj_3R_155() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_39()) { + jj_scanpos = xsp; + if (jj_3R_370()) return true; + } + xsp = jj_scanpos; + if (jj_3_40()) { + jj_scanpos = xsp; + if (jj_3R_371()) { + jj_scanpos = xsp; + if (jj_3_42()) { + jj_scanpos = xsp; + if (jj_3_43()) return true; + } + } + } + return false; + } + final private boolean jj_3_1620() { if (jj_scan_token(COLLATION_NAME)) return true; return false; @@ -33269,11 +33220,6 @@ final String p; return false; } - final private boolean jj_3_38() { - if (jj_scan_token(ALL)) return true; - return false; - } - final private boolean jj_3_362() { if (jj_scan_token(WITHIN)) return true; if (jj_3R_195()) return true; @@ -33285,26 +33231,11 @@ final String p; return false; } - final private boolean jj_3R_83() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_37()) { - jj_scanpos = xsp; - if (jj_3_38()) return true; - } - return false; - } - final private boolean jj_3_1609() { if (jj_scan_token(ABSOLUTE)) return true; return false; } - final private boolean jj_3_37() { - if (jj_scan_token(DISTINCT)) return true; - return false; - } - final private boolean jj_3R_410() { return false; } @@ -34023,12 +33954,6 @@ final String p; return false; } - final private boolean jj_3_36() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_84()) return true; - return false; - } - final private boolean jj_3R_380() { return false; } @@ -34043,6 +33968,11 @@ final String p; return false; } + final private boolean jj_3_38() { + if (jj_scan_token(ALL)) return true; + return false; + } + final private boolean jj_3_358() { if (jj_scan_token(PAST)) return true; if (jj_scan_token(LAST)) return true; @@ -34054,7 +33984,13 @@ final String p; return false; } - final private boolean jj_3R_397() { + final private boolean jj_3R_83() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_37()) { + jj_scanpos = xsp; + if (jj_3_38()) return true; + } return false; } @@ -34063,6 +33999,11 @@ final String p; return false; } + final private boolean jj_3_37() { + if (jj_scan_token(DISTINCT)) return true; + return false; + } + final private boolean jj_3R_194() { Token xsp; xsp = jj_scanpos; @@ -34081,11 +34022,6 @@ final String p; return false; } - final private boolean jj_3_35() { - if (jj_3R_83()) return true; - return false; - } - final private boolean jj_3_1599() { if (jj_scan_token(UNIQUE)) return true; return false; @@ -34118,17 +34054,6 @@ final String p; return false; } - final private boolean jj_3R_224() { - if (jj_scan_token(LPAREN)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_35()) { - jj_scanpos = xsp; - if (jj_3R_397()) return true; - } - return false; - } - final private boolean jj_3_1594() { if (jj_scan_token(TIME)) return true; return false; @@ -34154,6 +34079,12 @@ final String p; return false; } + final private boolean jj_3_36() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_84()) return true; + return false; + } + final private boolean jj_3_818() { if (jj_scan_token(TIME)) return true; if (jj_3R_263()) return true; @@ -34176,6 +34107,10 @@ final String p; return false; } + final private boolean jj_3R_397() { + return false; + } + final private boolean jj_3_1586() { if (jj_scan_token(SKIP_)) return true; return false; @@ -34215,6 +34150,11 @@ final String p; return false; } + final private boolean jj_3_35() { + if (jj_3R_83()) return true; + return false; + } + final private boolean jj_3_1583() { if (jj_scan_token(SCOPE)) return true; return false; @@ -34246,8 +34186,14 @@ final String p; return false; } - final private boolean jj_3R_413() { - if (jj_3R_224()) return true; + final private boolean jj_3R_224() { + if (jj_scan_token(LPAREN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_35()) { + jj_scanpos = xsp; + if (jj_3R_397()) return true; + } return false; } @@ -34338,11 +34284,6 @@ final String p; return false; } - final private boolean jj_3_34() { - if (jj_3R_81()) return true; - return false; - } - final private boolean jj_3_359() { if (jj_scan_token(AFTER)) return true; if (jj_scan_token(MATCH)) return true; @@ -34364,11 +34305,6 @@ final String p; return false; } - final private boolean jj_3_33() { - if (jj_3R_82()) return true; - return false; - } - final private boolean jj_3_813() { if (jj_scan_token(VARYING)) return true; return false; @@ -34393,6 +34329,11 @@ final String p; return false; } + final private boolean jj_3R_413() { + if (jj_3R_224()) return true; + return false; + } + final private boolean jj_3_1562() { if (jj_scan_token(OCTET_LENGTH)) return true; return false; @@ -34460,17 +34401,6 @@ final String p; return false; } - final private boolean jj_3_32() { - if (jj_scan_token(COMMA)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_33()) { - jj_scanpos = xsp; - if (jj_3_34()) return true; - } - return false; - } - final private boolean jj_3R_378() { return false; } @@ -34503,13 +34433,13 @@ final String p; return false; } - final private boolean jj_3_31() { - if (jj_3R_81()) return true; + final private boolean jj_3_1552() { + if (jj_scan_token(MATCH)) return true; return false; } - final private boolean jj_3_1552() { - if (jj_scan_token(MATCH)) return true; + final private boolean jj_3_34() { + if (jj_3R_81()) return true; return false; } @@ -34524,13 +34454,13 @@ final String p; return false; } - final private boolean jj_3_30() { - if (jj_3R_80()) return true; + final private boolean jj_3_1550() { + if (jj_scan_token(LATERAL)) return true; return false; } - final private boolean jj_3_1550() { - if (jj_scan_token(LATERAL)) return true; + final private boolean jj_3_33() { + if (jj_3R_82()) return true; return false; } @@ -34603,6 +34533,17 @@ final String p; 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_1539() { if (jj_scan_token(FOREIGN)) return true; return false; @@ -34618,6 +34559,11 @@ final String p; return false; } + final private boolean jj_3_31() { + if (jj_3R_81()) return true; + return false; + } + final private boolean jj_3_1536() { if (jj_scan_token(EXECUTE)) return true; return false; @@ -34628,6 +34574,11 @@ final String p; return false; } + final private boolean jj_3_30() { + if (jj_3R_80()) return true; + return false; + } + final private boolean jj_3R_284() { if (jj_scan_token(MAP)) return true; if (jj_scan_token(LT)) return true; @@ -34645,17 +34596,6 @@ final String p; return false; } - final private boolean jj_3R_184() { - if (jj_scan_token(LPAREN)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_30()) { - jj_scanpos = xsp; - if (jj_3_31()) return true; - } - return false; - } - final private boolean jj_3_1532() { if (jj_scan_token(DYNAMIC)) return true; return false; @@ -34787,6 +34727,17 @@ final String p; return false; } + final private boolean jj_3R_184() { + if (jj_scan_token(LPAREN)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_30()) { + jj_scanpos = xsp; + if (jj_3_31()) return true; + } + return false; + } + final private boolean jj_3_1516() { if (jj_scan_token(CEILING)) return true; return false; @@ -34817,12 +34768,6 @@ final String p; return false; } - final private boolean jj_3_29() { - if (jj_scan_token(COMMA)) return true; - if (jj_3R_79()) return true; - return false; - } - final private boolean jj_3_1510() { if (jj_scan_token(ASOF)) return true; return false; @@ -34925,6 +34870,12 @@ final String p; return false; } + final private boolean jj_3_29() { + if (jj_scan_token(COMMA)) return true; + if (jj_3R_79()) return true; + return false; + } + final private boolean jj_3_1494() { if (jj_scan_token(UTF16)) return true; return false; @@ -34946,12 +34897,6 @@ final String p; return false; } - final private boolean jj_3R_174() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_80()) return true; - return false; - } - final private boolean jj_3_1491() { if (jj_scan_token(UNCONDITIONAL)) return true; return false; @@ -35061,6 +35006,12 @@ final String p; return false; } + final private boolean jj_3R_174() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_80()) return true; + return false; + } + final private boolean jj_3_1475() { if (jj_scan_token(SQL_NVARCHAR)) return true; return false; @@ -35333,12 +35284,6 @@ final String p; return false; } - final private boolean jj_3R_173() { - if (jj_scan_token(LPAREN)) return true; - if (jj_3R_383()) return true; - return false; - } - final private boolean jj_3_1437() { if (jj_scan_token(NAME)) return true; return false; @@ -35436,11 +35381,6 @@ final String p; return false; } - final private boolean jj_3_28() { - if (jj_3R_78()) return true; - return false; - } - final private boolean jj_3R_190() { if (jj_3R_387()) return true; return false; @@ -35456,13 +35396,14 @@ final String p; return false; } - final private boolean jj_3_27() { - if (jj_3R_77()) return true; + final private boolean jj_3_1422() { + if (jj_scan_token(HOP)) return true; return false; } - final private boolean jj_3_1422() { - if (jj_scan_token(HOP)) return true; + final private boolean jj_3R_173() { + if (jj_scan_token(LPAREN)) return true; + if (jj_3R_383()) return true; return false; } @@ -35486,29 +35427,11 @@ final String p; return false; } - final private boolean jj_3R_207() { - 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_1417() { if (jj_scan_token(FIRST)) return true; return false; } - final private boolean jj_3_26() { - if (jj_3R_76()) return true; - return false; - } - final private boolean jj_3_1416() { if (jj_scan_token(EXCLUDE)) return true; return false; @@ -35564,8 +35487,8 @@ final String p; return false; } - final private boolean jj_3_25() { - if (jj_scan_token(ALL)) return true; + final private boolean jj_3_28() { + if (jj_3R_78()) return true; return false; } @@ -35609,8 +35532,8 @@ final String p; return false; } - final private boolean jj_3_24() { - if (jj_3R_75()) return true; + final private boolean jj_3_27() { + if (jj_3R_77()) return true; return false; } @@ -35704,6 +35627,19 @@ final String p; return false; } + final private boolean jj_3R_207() { + 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_3R_177() { if (jj_scan_token(PIVOT)) return true; if (jj_scan_token(LPAREN)) return true; @@ -35715,8 +35651,8 @@ final String p; return false; } - final private boolean jj_3_22() { - if (jj_scan_token(ALL)) return true; + final private boolean jj_3_26() { + if (jj_3R_76()) return true; return false; } @@ -35765,11 +35701,6 @@ final String p; return false; } - final private boolean jj_3_21() { - if (jj_3R_75()) return true; - return false; - } - final private boolean jj_3_746() { if (jj_scan_token(TIME)) return true; return false; @@ -35860,6 +35791,11 @@ final String p; return false; } + final private boolean jj_3_25() { + if (jj_scan_token(ALL)) return true; + return false; + } + final private boolean jj_3_763() { if (jj_scan_token(SQL_SMALLINT)) return true; return false; @@ -35900,6 +35836,11 @@ final String p; return false; } + final private boolean jj_3_24() { + if (jj_3R_75()) return true; + return false; + } + final private boolean jj_3_759() { if (jj_scan_token(SQL_VARBINARY)) return true; return false; @@ -35940,17 +35881,6 @@ final String p; return false; } - final private boolean jj_3_23() { - if (jj_3R_75()) return true; - if (jj_scan_token(COMMA)) return true; - return false; - } - - final private boolean jj_3_18() { - if (jj_scan_token(NEXT)) return true; - return false; - } - final private boolean jj_3_755() { if (jj_scan_token(SQL_INTEGER)) return true; return false; @@ -36021,6 +35951,11 @@ final String p; return false; } + final private boolean jj_3_22() { + if (jj_scan_token(ALL)) return true; + return false; + } + final private boolean jj_3_747() { if (jj_scan_token(SQL_TIMESTAMP)) return true; return false; @@ -36736,20 +36671,6 @@ final String p; return false; } - final private boolean jj_3R_73() { - if (jj_scan_token(LIMIT)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_23()) { - jj_scanpos = xsp; - if (jj_3_24()) { - jj_scanpos = xsp; - if (jj_3_25()) return true; - } - } - return false; - } - final private boolean jj_3_734() { if (jj_scan_token(NUMERIC)) return true; return false; @@ -36770,6 +36691,11 @@ final String p; return false; } + final private boolean jj_3_21() { + if (jj_3R_75()) return true; + return false; + } + final private boolean jj_3_739() { if (jj_scan_token(SQL_CHAR)) return true; return false; @@ -36785,11 +36711,6 @@ final String p; return false; } - final private boolean jj_3_20() { - if (jj_scan_token(ROWS)) return true; - return false; - } - final private boolean jj_3_773() { Token xsp; xsp = jj_scanpos; @@ -36800,11 +36721,6 @@ final String p; return false; } - final private boolean jj_3_17() { - if (jj_scan_token(FIRST)) return true; - return false; - } - final private boolean jj_3_1386() { if (jj_scan_token(SATURDAY)) return true; return false; @@ -36841,6 +36757,17 @@ final String p; return false; } + final private boolean jj_3_23() { + if (jj_3R_75()) return true; + if (jj_scan_token(COMMA)) return true; + return false; + } + + final private boolean jj_3_18() { + if (jj_scan_token(NEXT)) return true; + return false; + } + final private boolean jj_3_737() { if (jj_scan_token(COMMA)) return true; if (jj_3R_291()) return true; @@ -36852,11 +36779,6 @@ final String p; return false; } - final private boolean jj_3_19() { - if (jj_scan_token(ROW)) return true; - return false; - } - final private boolean jj_3_1380() { if (jj_scan_token(VARBINARY)) return true; return false; @@ -36867,17 +36789,6 @@ final String p; return false; } - final private boolean jj_3R_74() { - if (jj_scan_token(FETCH)) return true; - Token xsp; - xsp = jj_scanpos; - if (jj_3_17()) { - jj_scanpos = xsp; - if (jj_3_18()) return true; - } - return false; - } - final private boolean jj_3_1378() { if (jj_scan_token(UNSIGNED)) return true; return false; @@ -36893,8 +36804,17 @@ final String p; return false; } - final private boolean jj_3_15() { - if (jj_scan_token(ROWS)) return true; + final private boolean jj_3R_73() { + if (jj_scan_token(LIMIT)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_23()) { + jj_scanpos = xsp; + if (jj_3_24()) { + jj_scanpos = xsp; + if (jj_3_25()) return true; + } + } return false; } @@ -36919,11 +36839,21 @@ final String p; return false; } + final private boolean jj_3_20() { + if (jj_scan_token(ROWS)) return true; + return false; + } + final private boolean jj_3_1372() { if (jj_scan_token(TABLESAMPLE)) return true; return false; } + final private boolean jj_3_17() { + if (jj_scan_token(FIRST)) return true; + return false; + } + final private boolean jj_3_736() { if (jj_scan_token(ANY)) return true; return false; @@ -36967,21 +36897,6 @@ final String p; 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_1367() { if (jj_scan_token(SQRT)) return true; return false; @@ -37009,9 +36924,8 @@ final String p; return false; } - final private boolean jj_3R_72() { - if (jj_scan_token(OFFSET)) return true; - if (jj_3R_75()) return true; + final private boolean jj_3_19() { + if (jj_scan_token(ROW)) return true; return false; } @@ -37025,6 +36939,17 @@ final String p; return false; } + final private boolean jj_3R_74() { + if (jj_scan_token(FETCH)) return true; + Token xsp; + xsp = jj_scanpos; + if (jj_3_17()) { + jj_scanpos = xsp; + if (jj_3_18()) return true; + } + return false; + } + final private boolean jj_3_1362() { if (jj_scan_token(SEARCH)) return true; return false; @@ -37040,6 +36965,11 @@ final String p; return false; } + final private boolean jj_3_15() { + if (jj_scan_token(ROWS)) return true; + return false; + } + final private boolean jj_3_1359() { if (jj_scan_token(ROWS)) return true; return false; @@ -37094,6 +37024,21 @@ final String p; 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_729() { if (jj_scan_token(VARYING)) return true; return false; @@ -37114,6 +37059,12 @@ final String p; return false; } + final private boolean jj_3R_72() { + if (jj_scan_token(OFFSET)) return true; + if (jj_3R_75()) return true; + return false; + } + final private boolean jj_3_1348() { if (jj_scan_token(POSITION_REGEX)) return true; return false; @@ -37166,11 +37117,6 @@ final String p; return false; } - final private boolean jj_3_8() { - if (jj_3R_74()) return true; - return false; - } - final private boolean jj_3R_286() { Token xsp; xsp = jj_scanpos; @@ -37187,11 +37133,6 @@ final String p; return false; } - final private boolean jj_3_12() { - if (jj_3R_74()) return true; - return false; - } - final private boolean jj_3_1340() { if (jj_scan_token(OCCURRENCES_REGEX)) return true; return false; @@ -37243,21 +37184,6 @@ final String p; return false; } - final private boolean jj_3_7() { - if (jj_3R_73()) return true; - return false; - } - - final private boolean jj_3_9() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_7()) { - jj_scanpos = xsp; - if (jj_3_8()) return true; - } - return false; - } - final private boolean jj_3_333() { if (jj_scan_token(DESC)) return true; return false; @@ -37318,16 +37244,6 @@ final String p; return false; } - final private boolean jj_3_6() { - if (jj_3R_72()) return true; - return false; - } - - final private boolean jj_3_11() { - if (jj_3R_72()) return true; - return false; - } - final private boolean jj_3_727() { if (jj_scan_token(VARIANT)) return true; return false; @@ -37358,21 +37274,8 @@ final String p; return false; } - final private boolean jj_3_10() { - if (jj_3R_73()) return true; - return false; - } - - final private boolean jj_3_13() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_10()) { - jj_scanpos = xsp; - if (jj_3_11()) { - jj_scanpos = xsp; - if (jj_3_12()) return true; - } - } + final private boolean jj_3_8() { + if (jj_3R_74()) return true; return false; } @@ -37386,6 +37289,11 @@ final String p; return false; } + final private boolean jj_3_12() { + if (jj_3R_74()) return true; + return false; + } + final private boolean jj_3_331() { if (jj_scan_token(AS)) return true; Token xsp; @@ -37410,10 +37318,6 @@ final String p; return false; } - final private boolean jj_3R_418() { - return false; - } - final private boolean jj_3_1323() { if (jj_scan_token(INSENSITIVE)) return true; return false; @@ -37424,11 +37328,6 @@ final String p; return false; } - final private boolean jj_3_5() { - if (jj_3R_71()) return true; - return false; - } - final private boolean jj_3_724() { if (jj_scan_token(REAL)) return true; return false; @@ -37454,6 +37353,21 @@ final String p; return false; } + final private boolean jj_3_7() { + if (jj_3R_73()) return true; + return false; + } + + final private boolean jj_3_9() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_7()) { + jj_scanpos = xsp; + if (jj_3_8()) return true; + } + return false; + } + final private boolean jj_3_1318() { if (jj_scan_token(FREE)) return true; return false; @@ -37481,18 +37395,6 @@ final String p; return false; } - final private boolean jj_3R_352() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_5()) { - jj_scanpos = xsp; - if (jj_3R_418()) return true; - } - xsp = jj_scanpos; - if (jj_3_13()) jj_scanpos = xsp; - return false; - } - final private boolean jj_3_1315() { if (jj_scan_token(EXTEND)) return true; return false; @@ -37516,6 +37418,16 @@ final String p; return false; } + final private boolean jj_3_6() { + if (jj_3R_72()) return true; + return false; + } + + final private boolean jj_3_11() { + if (jj_3R_72()) return true; + return false; + } + final private boolean jj_3_713() { if (jj_scan_token(UNSIGNED)) return true; return false; @@ -37541,6 +37453,24 @@ final String p; return false; } + final private boolean jj_3_10() { + if (jj_3R_73()) return true; + return false; + } + + final private boolean jj_3_13() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_10()) { + jj_scanpos = xsp; + if (jj_3_11()) { + jj_scanpos = xsp; + if (jj_3_12()) return true; + } + } + return false; + } + final private boolean jj_3_1309() { if (jj_scan_token(DETERMINISTIC)) return true; return false; @@ -37565,6 +37495,10 @@ final String p; return false; } + final private boolean jj_3R_418() { + return false; + } + final private boolean jj_3_1307() { if (jj_scan_token(DECIMAL)) return true; return false; @@ -37575,6 +37509,11 @@ final String p; return false; } + final private boolean jj_3_5() { + if (jj_3R_71()) return true; + return false; + } + final private boolean jj_3_1305() { if (jj_scan_token(CYCLE)) return true; return false; @@ -37618,9 +37557,15 @@ final String p; return false; } - final private boolean jj_3R_80() { - if (jj_3R_351()) return true; - if (jj_3R_352()) return true; + final private boolean jj_3R_352() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_5()) { + jj_scanpos = xsp; + if (jj_3R_418()) return true; + } + xsp = jj_scanpos; + if (jj_3_13()) jj_scanpos = xsp; return false; } @@ -37731,6 +37676,12 @@ final String p; return false; } + final private boolean jj_3R_80() { + if (jj_3R_351()) return true; + if (jj_3R_352()) return true; + return false; + } + final private boolean jj_3_1283() { if (jj_scan_token(CONTINUOUS)) return true; return false; @@ -37888,11 +37839,6 @@ final String p; return false; } - final private boolean jj_3_2() { - if (jj_3R_68()) return true; - return false; - } - final private boolean jj_3_1263() { if (jj_scan_token(TIME_TRUNC)) return true; return false; @@ -37903,11 +37849,6 @@ final String p; return false; } - final private boolean jj_3_1() { - if (jj_3R_67()) return true; - return false; - } - final private boolean jj_3_1261() { if (jj_scan_token(SUBCLASS_ORIGIN)) return true; return false; @@ -37933,20 +37874,6 @@ final String p; return false; } - final private boolean jj_3_4() { - if (jj_3R_70()) return true; - Token xsp; - while (true) { - xsp = jj_scanpos; - if (jj_3_1()) { jj_scanpos = xsp; break; } - } - while (true) { - xsp = jj_scanpos; - if (jj_3_2()) { jj_scanpos = xsp; break; } - } - return false; - } - final private boolean jj_3_326() { if (jj_scan_token(GROUP)) return true; return false; @@ -38004,11 +37931,6 @@ final String p; return false; } - final private boolean jj_3_3() { - if (jj_3R_69()) return true; - return false; - } - final private boolean jj_3_1253() { if (jj_scan_token(SQL_NUMERIC)) return true; return false; @@ -38034,16 +37956,6 @@ final String p; return false; } - final private boolean jj_3R_383() { - Token xsp; - xsp = jj_scanpos; - if (jj_3_3()) { - jj_scanpos = xsp; - if (jj_3_4()) return true; - } - return false; - } - final private boolean jj_3_1249() { if (jj_scan_token(SQL_INTERVAL_HOUR_TO_SECOND)) return true; return false; @@ -38090,6 +38002,11 @@ final String p; return false; } + final private boolean jj_3_2() { + if (jj_3R_68()) return true; + return false; + } + final private boolean jj_3_1247() { if (jj_scan_token(SQL_INTERVAL_DAY)) return true; return false; @@ -38100,6 +38017,11 @@ final String p; return false; } + final private boolean jj_3_1() { + if (jj_3R_67()) return true; + return false; + } + final private boolean jj_3_1245() { if (jj_scan_token(SQL_CLOB)) return true; return false; @@ -38115,6 +38037,20 @@ final String p; return false; } + final private boolean jj_3_4() { + if (jj_3R_70()) return true; + Token xsp; + while (true) { + xsp = jj_scanpos; + if (jj_3_1()) { jj_scanpos = xsp; break; } + } + while (true) { + xsp = jj_scanpos; + if (jj_3_2()) { jj_scanpos = xsp; break; } + } + return false; + } + final private boolean jj_3_1242() { if (jj_scan_token(SOURCE)) return true; return false; @@ -38140,6 +38076,11 @@ final String p; return false; } + final private boolean jj_3_3() { + if (jj_3R_69()) return true; + return false; + } + final private boolean jj_3_1237() { if (jj_scan_token(SCOPE_NAME)) return true; return false; @@ -38175,6 +38116,16 @@ final String p; return false; } + final private boolean jj_3R_383() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_3()) { + jj_scanpos = xsp; + if (jj_3_4()) return true; + } + return false; + } + final private boolean jj_3_1233() { if (jj_scan_token(RLIKE)) return true; return false; @@ -39686,11 +39637,6 @@ final String p; return false; } - final private boolean jj_3R_295() { - if (jj_3R_412()) return true; - return false; - } - final private boolean jj_3_295() { Token xsp; xsp = jj_scanpos; @@ -39714,8 +39660,8 @@ final String p; return false; } - final private boolean jj_3R_361() { - if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} + final private boolean jj_3R_295() { + if (jj_3R_412()) return true; return false; } @@ -39732,15 +39678,11 @@ final String p; return false; } - final private boolean jj_3R_350() { + final private boolean jj_3R_361() { if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} return false; } - final private boolean jj_3R_423() { - return false; - } - final private boolean jj_3R_279() { if (jj_3R_278()) return true; return false; @@ -39751,14 +39693,18 @@ final String p; return false; } + final private boolean jj_3R_350() { + if (true) { jj_la = 0; jj_scanpos = jj_lastpos; return false;} + return false; + } + final private boolean jj_3_292() { if (jj_scan_token(COMMA)) return true; if (jj_3R_183()) return true; return false; } - final private boolean jj_3R_176() { - if (jj_3R_384()) return true; + final private boolean jj_3R_423() { return false; } @@ -39788,6 +39734,11 @@ final String p; return false; } + final private boolean jj_3R_176() { + if (jj_3R_384()) return true; + return false; + } + final private boolean jj_3_680() { if (jj_scan_token(UESCAPE)) return true; if (jj_scan_token(QUOTED_STRING)) return true; @@ -40734,6 +40685,68 @@ final String p; return false; } + final private boolean jj_3R_262() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_615()) { + jj_scanpos = xsp; + if (jj_3_616()) return true; + } + return false; + } + + final private boolean jj_3_615() { + if (jj_scan_token(SECOND)) return true; + return false; + } + + final private boolean jj_3R_349() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_268()) { + jj_scanpos = xsp; + if (jj_3_269()) { + jj_scanpos = xsp; + if (jj_3_270()) { + jj_scanpos = xsp; + if (jj_3_271()) { + jj_scanpos = xsp; + if (jj_3_272()) return true; + } + } + } + } + xsp = jj_scanpos; + if (jj_3_273()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3_274()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3_277()) jj_scanpos = xsp; + xsp = jj_scanpos; + if (jj_3_278()) jj_scanpos = xsp; + return false; + } + + final private boolean jj_3_614() { + if (jj_scan_token(MINUTES)) return true; + return false; + } + + final private boolean jj_3R_261() { + Token xsp; + xsp = jj_scanpos; + if (jj_3_613()) { + jj_scanpos = xsp; + if (jj_3_614()) return true; + } + return false; + } + + final private boolean jj_3_613() { + if (jj_scan_token(MINUTE)) 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/DynamicParametersIntegrationTest.java b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DynamicParametersIntegrationTest.java index 45f6db66f08..6757da96e7f 100644 --- a/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DynamicParametersIntegrationTest.java +++ b/modules/calcite/src/test/java/org/apache/ignite/internal/processors/query/calcite/integration/DynamicParametersIntegrationTest.java @@ -216,6 +216,139 @@ public class DynamicParametersIntegrationTest extends AbstractBasicIntegrationTe assertThrowsSqlException("SELECT id FROM person ORDER BY id OFFSET ? ROWS", null, BigDecimal.valueOf(-1.5)); } + /** */ + @Test + public void testInvalidFetchExpression() { + createAndPopulateTable(); + + assertThrowsSqlException("SELECT * FROM PERSON FETCH FIRST (?) ROWS ONLY", null, -2); + assertThrowsSqlException("SELECT * FROM PERSON FETCH FIRST (?) ROWS ONLY", null, -1.5); + assertThrowsSqlException("SELECT * FROM PERSON FETCH FIRST (?) ROWS ONLY", null, NULL_RESULT); + assertThrowsSqlException("SELECT * FROM PERSON FETCH FIRST (?) ROWS ONLY", null, bigValue()); + assertThrowsSqlException("SELECT * FROM PERSON FETCH FIRST (?) ROWS ONLY", null, "abc"); + + assertThrowsSqlException("SELECT * FROM PERSON FETCH FIRST (1 + ? - 4) ROWS ONLY", null, 1); + assertThrowsSqlException("SELECT * FROM PERSON FETCH FIRST (? - (50 - 20)) ROWS ONLY", null, 2); + + assertThrowsSqlException("SELECT * FROM PERSON FETCH FIRST SQRT(?) ROWS ONLY", null, 4); + } + + /** */ + @Test + public void testFetchExpression() { + createAndPopulateTable(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (?) ROWS ONLY") + .withParams(1) + .returns(0) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (1 + ? - 2) ROWS ONLY") + .withParams(5) + .returns(0) + .returns(1) + .returns(2) + .returns(3) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (1 + (? - 1) + 1) ROWS ONLY") + .withParams(2) + .returns(0) + .returns(1) + .returns(2) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id DESC FETCH FIRST (1 + (2 - 1) + ?) ROWS ONLY") + .withParams(2) + .returns(4) + .returns(3) + .returns(2) + .returns(1) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (ABS(?)) ROWS ONLY") + .withParams(-2) + .returns(0) + .returns(1) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (1 + ABS(?)) ROWS ONLY") + .withParams(-2) + .returns(0) + .returns(1) + .returns(2) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (SQRT(?) + 1 + 0) ROWS ONLY") + .withParams(4) + .returns(0) + .returns(1) + .returns(2) + .check(); + } + + /** */ + @Test + public void testFetchExpressionCachedQuery() { + createAndPopulateTable(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (? + 1) ROWS ONLY") + .withParams(1) + .returns(0) + .returns(1) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (? + 1) ROWS ONLY") + .withParams(2) + .returns(0) + .returns(1) + .returns(2) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id DESC FETCH FIRST (? + 1) ROWS ONLY") + .withParams(1) + .returns(4) + .returns(3) + .check(); + + assertQuery("SELECT id FROM PERSON ORDER BY id DESC FETCH FIRST (? + 1) ROWS ONLY") + .withParams(2) + .returns(4) + .returns(3) + .returns(2) + .check(); + + // Check negative param. + assertThrowsSqlException("SELECT id FROM PERSON ORDER BY id FETCH FIRST (? + 1) ROWS ONLY", null, -2); + assertThrowsSqlException("SELECT id FROM PERSON ORDER BY id DESC FETCH FIRST (? + 1) ROWS ONLY", null, -2); + } + + /** */ + @Test + public void testFetchExpressionNested() { + createAndPopulateTable(); + + assertQuery("SELECT id FROM (SELECT id from PERSON ORDER BY id FETCH FIRST (? + 3) ROWS ONLY) " + + "ORDER BY id FETCH NEXT (1 + ?) ROWS ONLY") + .withParams(2, 1) + .returns(0) + .returns(1) + .check(); + } + + /** */ + @Test + public void testFetchExpressionWithRewrite() { + createAndPopulateTable(); + + assertQuery("SELECT id FROM PERSON ORDER BY id FETCH FIRST (1 + NVL(?, 10000)) ROWS ONLY") + .withParams(2) + .returns(0) + .returns(1) + .returns(2) + .check(); + } + /** Tests the same query with different type of parameters to cover case with check right plans cache work. **/ @Test public void testWithDifferentParametersTypes() { @@ -391,4 +524,9 @@ public class DynamicParametersIntegrationTest extends AbstractBasicIntegrationTe private void assertUnexpectedNumberOfParameters(String qry, Object... params) { assertThrows(qry, IgniteSQLException.class, "Wrong number of query parameters", params); } + + /** */ + private static BigDecimal bigValue() { + return BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.ONE); + } } 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 04eeb5e543e..434c16afff0 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 @@ -17,7 +17,7 @@ package org.apache.ignite.internal.processors.query.calcite.integration; -import java.math.BigInteger; +import java.math.BigDecimal; import java.util.Arrays; import java.util.List; import org.apache.calcite.sql.validate.SqlValidatorException; @@ -25,7 +25,6 @@ import org.apache.ignite.IgniteCache; import org.apache.ignite.cache.CacheMode; import org.apache.ignite.cache.QueryEntity; import org.apache.ignite.configuration.IgniteConfiguration; -import org.apache.ignite.internal.processors.query.IgniteSQLException; import org.apache.ignite.internal.processors.query.calcite.exec.rel.AbstractNode; import org.apache.ignite.internal.util.typedef.F; import org.apache.ignite.internal.util.typedef.X; @@ -104,29 +103,28 @@ public class LimitOffsetIntegrationTest extends AbstractBasicIntegrationTransact /** Tests correctness of fetch / offset params. */ @Test public void testInvalidLimitOffset() { - BigInteger moreThanMaxLong = BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.ONE); - - assertThrows("SELECT * FROM TEST_REPL OFFSET " + moreThanMaxLong + " ROWS", + assertThrows("SELECT * FROM TEST_REPL OFFSET " + bigValue() + " ROWS", SqlValidatorException.class, "Illegal value of offset"); - assertThrows("SELECT * FROM TEST_REPL FETCH FIRST " + moreThanMaxLong + " ROWS ONLY", + assertThrows("SELECT * FROM TEST_REPL FETCH FIRST " + bigValue() + " ROWS ONLY", SqlValidatorException.class, "Illegal value of fetch / limit"); - assertThrows("SELECT * FROM TEST_REPL LIMIT " + moreThanMaxLong, + assertThrows("SELECT * FROM TEST_REPL LIMIT " + bigValue(), SqlValidatorException.class, "Illegal value of fetch / limit"); - assertThrows("SELECT * FROM TEST_REPL OFFSET -1 ROWS FETCH FIRST -1 ROWS ONLY", - IgniteSQLException.class, null); - - assertThrows("SELECT * FROM TEST_REPL OFFSET -1 ROWS", - IgniteSQLException.class, null); + assertThrowsSqlException("SELECT * FROM TEST_REPL OFFSET -1 ROWS FETCH FIRST -1 ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL OFFSET -1 ROWS", null); assertThrowsSqlException("SELECT * FROM TEST_REPL OFFSET -1.5 ROWS", null); - assertThrowsSqlException("SELECT * FROM TEST_REPL OFFSET -0.5 ROWS", null); - - assertThrows("SELECT * FROM TEST_REPL OFFSET 2+1 ROWS", - IgniteSQLException.class, null); + assertThrowsSqlException("SELECT * FROM TEST_REPL OFFSET 2+1 ROWS", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL OFFSET id ROWS", null); + + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST -1 ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST -1.5 ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST -0.5 ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST 2+1 ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST id ROWS ONLY", null); } /** */ @@ -199,6 +197,98 @@ public class LimitOffsetIntegrationTest extends AbstractBasicIntegrationTransact assertQuery("SELECT (SELECT id FROM TEST_PART ORDER BY id LIMIT 1 OFFSET 10)").returns(NULL_RESULT).check(); } + /** */ + @Test + public void testInvalidFetchExpression() { + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (" + bigValue() + ") ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (" + bigValue() + " + 1) ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (1 + " + bigValue() + ") ROWS ONLY", null); + + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (-2) ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (2 - 3) ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (1 + 2 - 4) ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (-1.5) ROWS ONLY", null); + + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST ('abc') ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (SUBSTRING('abc', 1, 1)) ROWS ONLY", null); + + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (id) ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (id + 1) ROWS ONLY", null); + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST (ABS(id)) ROWS ONLY", null); + + assertThrowsSqlException("SELECT * FROM TEST_REPL FETCH FIRST SQRT(4) ROWS ONLY", null); + } + + /** */ + @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 + 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 DESC FETCH FIRST (1 + (2 - 1) + 1) ROWS ONLY") + .returns(4) + .returns(3) + .returns(2) + .check(); + + assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (ABS(-2)) ROWS ONLY") + .returns(0) + .returns(1) + .check(); + + assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1 + ABS(-2)) ROWS ONLY") + .returns(0) + .returns(1) + .returns(2) + .check(); + + assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (SQRT(4) + 1 + 0) ROWS ONLY") + .returns(0) + .returns(1) + .returns(2) + .check(); + } + + /** */ + @Test + public void testFetchExpressionNested() throws Exception { + fillCache(cacheRepl, 5); + + assertQuery("SELECT id FROM (SELECT id from TEST_REPL ORDER BY id FETCH FIRST (2 + 3) ROWS ONLY) " + + "ORDER BY id FETCH NEXT (1 + 1) ROWS ONLY") + .returns(0) + .returns(1) + .check(); + } + + /** */ + @Test + public void testFetchExpressionWithRewrite() throws Exception { + fillCache(cacheRepl, 5); + + assertQuery("SELECT id FROM TEST_REPL ORDER BY id FETCH FIRST (1 + NVL(?, 10000)) ROWS ONLY") + .withParams(1) + .returns(0) + .returns(1) + .check(); + } + /** * @param c Cache. * @param rows Rows count. @@ -283,4 +373,9 @@ public class LimitOffsetIntegrationTest extends AbstractBasicIntegrationTransact return sb.toString(); } + + /** */ + private static BigDecimal bigValue() { + return BigDecimal.valueOf(Long.MAX_VALUE).add(BigDecimal.ONE); + } }
