This is an automated email from the ASF dual-hosted git repository.
zstan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new 4eef51ad4b IGNITE-22580 Sql. Add planner test to verify numeric type
coercion for CASE operator (#4140)
4eef51ad4b is described below
commit 4eef51ad4b3dc5b7e3cb70036f29a62cc9ed34a6
Author: Evgeniy Stanilovskiy <[email protected]>
AuthorDate: Fri Aug 2 09:23:10 2024 +0300
IGNITE-22580 Sql. Add planner test to verify numeric type coercion for CASE
operator (#4140)
---
.../datatypes/NumericCaseTypeCoercionTest.java | 1708 ++++++++++++++++++++
.../NumericComparisonTypeCoercionTest.java | 34 +-
2 files changed, 1725 insertions(+), 17 deletions(-)
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/datatypes/NumericCaseTypeCoercionTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/datatypes/NumericCaseTypeCoercionTest.java
new file mode 100644
index 0000000000..492c2e349f
--- /dev/null
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/datatypes/NumericCaseTypeCoercionTest.java
@@ -0,0 +1,1708 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.sql.engine.planner.datatypes;
+
+import static
org.apache.ignite.internal.catalog.commands.CatalogUtils.MAX_DECIMAL_PRECISION;
+import static org.apache.ignite.internal.lang.IgniteStringFormatter.format;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.instanceOf;
+
+import java.util.List;
+import java.util.stream.Stream;
+import org.apache.calcite.rex.RexCall;
+import org.apache.calcite.rex.RexNode;
+import
org.apache.ignite.internal.sql.engine.planner.datatypes.utils.NumericPair;
+import org.apache.ignite.internal.sql.engine.planner.datatypes.utils.TypePair;
+import org.apache.ignite.internal.sql.engine.planner.datatypes.utils.Types;
+import org.apache.ignite.internal.sql.engine.rel.IgniteRel;
+import
org.apache.ignite.internal.sql.engine.rel.ProjectableFilterableTableScan;
+import org.apache.ignite.internal.sql.engine.schema.IgniteSchema;
+import org.apache.ignite.internal.sql.engine.util.SqlTestUtils;
+import org.apache.ignite.internal.type.NativeType;
+import org.apache.ignite.internal.type.NativeTypes;
+import org.hamcrest.BaseMatcher;
+import org.hamcrest.Description;
+import org.hamcrest.Matcher;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.Arguments;
+import org.junit.jupiter.params.provider.MethodSource;
+
+/**
+ * A set of test to verify behavior of type coercion for CASE operator, when
operands belongs to the NUMERIC type family.
+ *
+ * <p>This tests aim to help to understand in which cases implicit cast will
be added to which operand.
+ */
+public class NumericCaseTypeCoercionTest extends BaseTypeCoercionTest {
+ private static final IgniteSchema SCHEMA =
createSchemaWithTwoColumnTable(NativeTypes.STRING, NativeTypes.STRING);
+
+ private static final NativeType DECIMAL_MAX_PREC =
NativeTypes.decimalOf(MAX_DECIMAL_PRECISION, 0);
+
+ private static int increment;
+
+ /** CASE operands from columns. */
+ @ParameterizedTest
+ @MethodSource("caseArgs")
+ public void numericCoercion(
+ TypePair typePair,
+ Matcher<RexNode> firstOperandMatcher,
+ Matcher<RexNode> secondOperandMatcher
+ ) throws Exception {
+ IgniteSchema schema = createSchemaWithTwoColumnTable(typePair.first(),
typePair.second());
+
+ assertPlan("SELECT CASE WHEN RAND_UUID() != RAND_UUID() THEN c1 ELSE
c2 END FROM t", schema,
+ operandCaseMatcher(firstOperandMatcher,
secondOperandMatcher)::matches, List.of());
+ }
+
+ /** CASE operands from dynamic params. */
+ @ParameterizedTest
+ @MethodSource("dynamicLiteralArgs")
+ public void numericWithDynamicParamsCoercion(
+ TypePair typePair,
+ Matcher<RexNode> firstOperandMatcher,
+ Matcher<RexNode> secondOperandMatcher
+ ) throws Exception {
+ List<Object> params = List.of(
+ generateValueByType(typePair.first()),
+ generateValueByType(typePair.second())
+ );
+
+ assertPlan("SELECT CASE WHEN RAND_UUID() != RAND_UUID() THEN ? ELSE ?
END FROM t", SCHEMA,
+ operandCaseMatcher(firstOperandMatcher,
secondOperandMatcher)::matches, params);
+ }
+
+ /** CASE operands from literals. */
+ @ParameterizedTest
+ @MethodSource("literalArgs")
+ public void numericWithLiteralsCoercion(
+ TypePair typePair,
+ Matcher<RexNode> firstOperandMatcher,
+ Matcher<RexNode> secondOperandMatcher
+ ) throws Exception {
+ List<Object> params = List.of(
+ generateValueByType(typePair.first()),
generateValueByType(typePair.second())
+ );
+
+ assertPlan(format("SELECT CASE WHEN RAND_UUID() != RAND_UUID() THEN {}
ELSE {} END FROM t", params.get(0), params.get(1)),
+ SCHEMA, operandCaseMatcher(firstOperandMatcher,
secondOperandMatcher)::matches, List.of());
+ }
+
+ private static Object generateValueByType(NativeType type) {
+ increment++;
+
+ if (type.equals(NativeTypes.INT8) || type.equals(NativeTypes.INT16) ||
type.equals(NativeTypes.INT32)) {
+ return SqlTestUtils.generateValueByType(increment % 2,
type.spec().asColumnType());
+ } else if (type.equals(NativeTypes.INT64)) {
+ // break serialization check otherwise, in: 9223372034707302160,
out: 9.223372034707302E18
+ return (long) SqlTestUtils.generateValueByType(Integer.MAX_VALUE -
((increment % 2) * 10000),
+ type.spec().asColumnType()) / 1000;
+ } else if (type.equals(NativeTypes.FLOAT)) {
+ float res = (float)
SqlTestUtils.generateValueByType(type.spec().asColumnType());
+ if (increment % 2 == 1) {
+ // decrease exponent part
+ res /= 10;
+ }
+ return res;
+ } else if (type.equals(NativeTypes.DOUBLE)) {
+ double res = (double)
SqlTestUtils.generateValueByType(type.spec().asColumnType());
+ if (increment % 2 == 1) {
+ // decrease exponent part
+ res /= 10;
+ }
+ return res;
+ } else {
+ return SqlTestUtils.generateValueByType(increment % 2,
type.spec().asColumnType());
+ }
+ }
+
+ static Matcher<IgniteRel> operandCaseMatcher(Matcher<RexNode> first,
Matcher<RexNode> second) {
+ return new BaseMatcher<>() {
+ @Override
+ public boolean matches(Object actual) {
+ RexNode comparison = ((ProjectableFilterableTableScan)
actual).projects().get(0);
+
+ assertThat(comparison, instanceOf(RexCall.class));
+
+ RexCall comparisonCall = (RexCall) comparison;
+
+ RexNode firstOperand = comparisonCall.getOperands().get(1);
+ RexNode secondOperand = comparisonCall.getOperands().get(2);
+
+ assertThat("first operand: ", firstOperand, first);
+ assertThat("second operand: ", secondOperand, second);
+
+ return true;
+ }
+
+ @Override
+ public void describeTo(Description description) {
+
+ }
+ };
+ }
+
+ private static Stream<Arguments> literalArgs() {
+ return Stream.of(
+ forTypePair(NumericPair.TINYINT_TINYINT)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT32))
+ .secondOpMatches(ofTypeWithoutCast(NativeTypes.INT32)),
+
+ forTypePair(NumericPair.TINYINT_SMALLINT)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT32))
+ .secondOpMatches(ofTypeWithoutCast(NativeTypes.INT32)),
+
+ forTypePair(NumericPair.TINYINT_INT)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT32))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_BIGINT)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_1_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_2_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.TINYINT_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.TINYINT_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+
+ forTypePair(NumericPair.SMALLINT_SMALLINT)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT32))
+ .secondOpMatches(ofTypeWithoutCast(NativeTypes.INT32)),
+
+ forTypePair(NumericPair.SMALLINT_INT)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT32))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_BIGINT)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_1_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_2_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.SMALLINT_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.SMALLINT_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.INT_INT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.INT_BIGINT)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.INT_DECIMAL_1_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_2_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.INT_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.INT_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.BIGINT_BIGINT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_1_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_2_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.BIGINT_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_1_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_2_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_2_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_6_1_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_6_1_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_6_1_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_6_1_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_8_3_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3))
+
.secondOpMatches(ofTypeWithoutCast(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.DECIMAL_8_3_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_8_3_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.REAL_REAL)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.REAL_DOUBLE)
+ .firstOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE))
+
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+
+
+ forTypePair(NumericPair.DOUBLE_DOUBLE)
+ .firstOpBeSame()
+ .secondOpBeSame()
+ );
+ }
+
+ /**
+ * This test ensures that {@link #literalArgs()} doesn't miss any type
pair from {@link NumericPair}.
+ */
+ @Test
+ void litArgsIncludesAllTypePairs() {
+ checkIncludesAllNumericTypePairs(literalArgs());
+ }
+
+ private static Stream<Arguments> dynamicLiteralArgs() {
+ return Stream.of(
+ forTypePair(NumericPair.TINYINT_TINYINT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_SMALLINT)
+ .firstOpMatches(castTo(NativeTypes.INT16))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_INT)
+ .firstOpMatches(castTo(NativeTypes.INT32))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_BIGINT)
+ .firstOpMatches(castTo(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_1_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_2_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_4_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_2_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_3_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_5_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_5_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_6_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_8_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.TINYINT_REAL)
+ .firstOpMatches(castTo(NativeTypes.FLOAT))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.SMALLINT_SMALLINT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_INT)
+ .firstOpMatches(castTo(NativeTypes.INT32))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_BIGINT)
+ .firstOpMatches(castTo(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_1_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_2_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_4_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_2_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_3_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_5_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_5_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_6_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_8_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.SMALLINT_REAL)
+ .firstOpMatches(castTo(NativeTypes.FLOAT))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.INT_INT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.INT_BIGINT)
+ .firstOpMatches(castTo(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.INT_DECIMAL_1_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_DECIMAL_2_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_DECIMAL_4_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_DECIMAL_2_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_DECIMAL_3_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_DECIMAL_5_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_DECIMAL_5_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_DECIMAL_6_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_DECIMAL_8_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.INT_REAL)
+ .firstOpMatches(castTo(NativeTypes.FLOAT))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.INT_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.BIGINT_BIGINT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_1_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_2_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_4_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_2_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_3_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_5_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_5_0)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_6_1)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_8_3)
+ .firstOpMatches(castTo(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.BIGINT_REAL)
+ .firstOpMatches(castTo(NativeTypes.FLOAT))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.BIGINT_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_1_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_2_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_2_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_4_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_2_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_3_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_5_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_5_0)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_6_1_DECIMAL_6_1)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_6_1_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_6_1_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_6_1_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_8_3_DECIMAL_8_3)
+ .firstOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC))
+ .secondOpMatches(ofTypeWithoutCast(DECIMAL_MAX_PREC)),
+
+ forTypePair(NumericPair.DECIMAL_8_3_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_8_3_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.REAL_REAL)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.REAL_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DOUBLE_DOUBLE)
+ .firstOpBeSame()
+ .secondOpBeSame()
+ );
+ }
+
+ /**
+ * This test ensures that {@link #dynamicLiteralArgs()} doesn't miss any
type pair from {@link NumericPair}.
+ */
+ @Test
+ void dynArgsIncludesAllTypePairs() {
+ checkIncludesAllNumericTypePairs(dynamicLiteralArgs());
+ }
+
+ private static Stream<Arguments> caseArgs() {
+ return Stream.of(
+ forTypePair(NumericPair.TINYINT_TINYINT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_SMALLINT)
+ .firstOpMatches(castTo(NativeTypes.INT16))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_INT)
+ .firstOpMatches(castTo(NativeTypes.INT32))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_BIGINT)
+ .firstOpMatches(castTo(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_1_0)
+ .firstOpMatches(castTo(Types.DECIMAL_3_0))
+ .secondOpMatches(castTo(Types.DECIMAL_3_0)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_2_1)
+ .firstOpMatches(castTo(Types.DECIMAL_4_1))
+ .secondOpMatches(castTo(Types.DECIMAL_4_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_4_3)
+ .firstOpMatches(castTo(Types.DECIMAL_6_3))
+ .secondOpMatches(castTo(Types.DECIMAL_6_3)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_2_0)
+ .firstOpMatches(castTo(Types.DECIMAL_3_0))
+ .secondOpMatches(castTo(Types.DECIMAL_3_0)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_3_1)
+ .firstOpMatches(castTo(Types.DECIMAL_4_1))
+ .secondOpMatches(castTo(Types.DECIMAL_4_1)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_6_3))
+ .secondOpMatches(castTo(Types.DECIMAL_6_3)),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_5_0))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.TINYINT_REAL)
+ .firstOpMatches(castTo(NativeTypes.FLOAT))
+ .secondOpMatches(ofTypeWithoutCast(NativeTypes.FLOAT)),
+
+ forTypePair(NumericPair.TINYINT_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.SMALLINT_SMALLINT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_INT)
+ .firstOpMatches(castTo(NativeTypes.INT32))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_BIGINT)
+ .firstOpMatches(castTo(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_1_0)
+ .firstOpMatches(castTo(Types.DECIMAL_5_0))
+ .secondOpMatches(castTo(Types.DECIMAL_5_0)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_2_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpMatches(castTo(Types.DECIMAL_6_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_4_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpMatches(castTo(Types.DECIMAL_8_3)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_2_0)
+ .firstOpMatches(castTo(Types.DECIMAL_5_0))
+ .secondOpMatches(castTo(Types.DECIMAL_5_0)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_3_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpMatches(castTo(Types.DECIMAL_6_1)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpMatches(castTo(Types.DECIMAL_8_3)),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_5_0))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.SMALLINT_REAL)
+ .firstOpMatches(castTo(NativeTypes.FLOAT))
+ .secondOpMatches(ofTypeWithoutCast(NativeTypes.FLOAT)),
+
+ forTypePair(NumericPair.SMALLINT_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.INT_INT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.INT_BIGINT)
+ .firstOpMatches(castTo(NativeTypes.INT64))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.INT_DECIMAL_1_0)
+ .firstOpMatches(castTo(Types.DECIMAL_10_0))
+ .secondOpMatches(castTo(Types.DECIMAL_10_0)),
+
+ forTypePair(NumericPair.INT_DECIMAL_2_1)
+ .firstOpMatches(castTo(Types.DECIMAL_11_1))
+ .secondOpMatches(castTo(Types.DECIMAL_11_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_4_3)
+ .firstOpMatches(castTo(Types.DECIMAL_13_3))
+ .secondOpMatches(castTo(Types.DECIMAL_13_3)),
+
+ forTypePair(NumericPair.INT_DECIMAL_2_0)
+ .firstOpMatches(castTo(Types.DECIMAL_10_0))
+ .secondOpMatches(castTo(Types.DECIMAL_10_0)),
+
+ forTypePair(NumericPair.INT_DECIMAL_3_1)
+ .firstOpMatches(castTo(Types.DECIMAL_11_1))
+ .secondOpMatches(castTo(Types.DECIMAL_11_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_13_3))
+ .secondOpMatches(castTo(Types.DECIMAL_13_3)),
+
+ forTypePair(NumericPair.INT_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_10_0))
+ .secondOpMatches(castTo(Types.DECIMAL_10_0)),
+
+ forTypePair(NumericPair.INT_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_11_1))
+ .secondOpMatches(castTo(Types.DECIMAL_11_1)),
+
+ forTypePair(NumericPair.INT_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_13_3))
+ .secondOpMatches(castTo(Types.DECIMAL_13_3)),
+
+ forTypePair(NumericPair.INT_REAL)
+ .firstOpMatches(castTo(NativeTypes.FLOAT))
+ .secondOpMatches(ofTypeWithoutCast(NativeTypes.FLOAT)),
+
+ forTypePair(NumericPair.INT_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.BIGINT_BIGINT)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_1_0)
+ .firstOpMatches(castTo(Types.DECIMAL_19_0))
+ .secondOpMatches(castTo(Types.DECIMAL_19_0)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_2_1)
+ .firstOpMatches(castTo(Types.DECIMAL_20_1))
+ .secondOpMatches(castTo(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_4_3)
+ .firstOpMatches(castTo(Types.DECIMAL_22_3))
+ .secondOpMatches(castTo(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_2_0)
+ .firstOpMatches(castTo(Types.DECIMAL_19_0))
+ .secondOpMatches(castTo(Types.DECIMAL_19_0)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_3_1)
+ .firstOpMatches(castTo(Types.DECIMAL_20_1))
+ .secondOpMatches(castTo(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_22_3))
+ .secondOpMatches(castTo(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_19_0))
+ .secondOpMatches(castTo(Types.DECIMAL_19_0)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_20_1))
+ .secondOpMatches(castTo(Types.DECIMAL_20_1)),
+
+ forTypePair(NumericPair.BIGINT_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_22_3))
+ .secondOpMatches(castTo(Types.DECIMAL_22_3)),
+
+ forTypePair(NumericPair.BIGINT_REAL)
+ .firstOpMatches(castTo(NativeTypes.FLOAT))
+ .secondOpMatches(ofTypeWithoutCast(NativeTypes.FLOAT)),
+
+ forTypePair(NumericPair.BIGINT_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_1_0)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_2_1)
+ .firstOpMatches(castTo(Types.DECIMAL_2_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_4_3)
+ .firstOpMatches(castTo(Types.DECIMAL_4_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_2_0)
+ .firstOpMatches(castTo(Types.DECIMAL_2_0))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_3_1)
+ .firstOpMatches(castTo(Types.DECIMAL_3_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_5_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_5_0))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_1_0_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_1_0_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_2_1)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_4_3)
+ .firstOpMatches(castTo(Types.DECIMAL_4_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_2_0)
+ .firstOpMatches(castTo(Types.DECIMAL_3_1))
+ .secondOpMatches(castTo(Types.DECIMAL_3_1)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_3_1)
+ .firstOpMatches(castTo(Types.DECIMAL_3_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_5_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpMatches(castTo(Types.DECIMAL_6_1)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_1_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_2_1_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_4_3)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_2_0)
+ .firstOpMatches(castTo(Types.DECIMAL_5_3))
+ .secondOpMatches(castTo(Types.DECIMAL_5_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_3_1)
+ .firstOpMatches(castTo(Types.DECIMAL_5_3))
+ .secondOpMatches(castTo(Types.DECIMAL_5_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_5_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpMatches(castTo(Types.DECIMAL_8_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpMatches(castTo(Types.DECIMAL_8_3)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_4_3_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_4_3_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_2_0)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_3_1)
+ .firstOpMatches(castTo(Types.DECIMAL_3_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_5_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_5_0))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_2_0_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_2_0_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_3_1)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_5_3)
+ .firstOpMatches(castTo(Types.DECIMAL_5_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpMatches(castTo(Types.DECIMAL_6_1)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_3_1_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_3_1_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_5_3)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_5_0)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpMatches(castTo(Types.DECIMAL_8_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpMatches(castTo(Types.DECIMAL_8_3)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_5_3_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_5_3_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_5_0)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_6_1)
+ .firstOpMatches(castTo(Types.DECIMAL_6_1))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_5_0_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_5_0_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_6_1_DECIMAL_6_1)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_6_1_DECIMAL_8_3)
+ .firstOpMatches(castTo(Types.DECIMAL_8_3))
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_6_1_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_6_1_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DECIMAL_8_3_DECIMAL_8_3)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.DECIMAL_8_3_REAL)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpMatches(castTo(NativeTypes.DOUBLE)),
+
+ forTypePair(NumericPair.DECIMAL_8_3_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.REAL_REAL)
+ .firstOpBeSame()
+ .secondOpBeSame(),
+
+ forTypePair(NumericPair.REAL_DOUBLE)
+ .firstOpMatches(castTo(NativeTypes.DOUBLE))
+ .secondOpBeSame(),
+
+
+ forTypePair(NumericPair.DOUBLE_DOUBLE)
+ .firstOpBeSame()
+ .secondOpBeSame()
+ );
+ }
+
+ /**
+ * This test ensures that {@link #caseArgs()} doesn't miss any type pair
from {@link NumericPair}.
+ */
+ @Test
+ void argsIncludesAllTypePairs() {
+ checkIncludesAllNumericTypePairs(caseArgs());
+ }
+}
diff --git
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/datatypes/NumericComparisonTypeCoercionTest.java
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/datatypes/NumericComparisonTypeCoercionTest.java
index a35f670cdb..9a26e1f98e 100644
---
a/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/datatypes/NumericComparisonTypeCoercionTest.java
+++
b/modules/sql-engine/src/test/java/org/apache/ignite/internal/sql/engine/planner/datatypes/NumericComparisonTypeCoercionTest.java
@@ -40,20 +40,20 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
private static Stream<Arguments> args() {
return Stream.of(
forTypePair(NumericPair.TINYINT_TINYINT)
- .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT8))
- .secondOpMatches(ofTypeWithoutCast(NativeTypes.INT8)),
+ .firstOpBeSame()
+ .secondOpBeSame(),
forTypePair(NumericPair.TINYINT_SMALLINT)
.firstOpMatches(castTo(NativeTypes.INT16))
- .secondOpMatches(ofTypeWithoutCast(NativeTypes.INT16)),
+ .secondOpBeSame(),
forTypePair(NumericPair.TINYINT_INT)
.firstOpMatches(castTo(NativeTypes.INT32))
- .secondOpMatches(ofTypeWithoutCast(NativeTypes.INT32)),
+ .secondOpBeSame(),
forTypePair(NumericPair.TINYINT_BIGINT)
.firstOpMatches(castTo(NativeTypes.INT64))
- .secondOpMatches(ofTypeWithoutCast(NativeTypes.INT64)),
+ .secondOpBeSame(),
forTypePair(NumericPair.TINYINT_DECIMAL_1_0)
.firstOpMatches(castTo(Types.DECIMAL_3_0))
@@ -211,8 +211,8 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.BIGINT_BIGINT)
- .firstOpMatches(ofTypeWithoutCast(NativeTypes.INT64))
- .secondOpMatches(ofTypeWithoutCast(NativeTypes.INT64)),
+ .firstOpBeSame()
+ .secondOpBeSame(),
forTypePair(NumericPair.BIGINT_DECIMAL_1_0)
.firstOpMatches(castTo(Types.DECIMAL_19_0))
@@ -256,7 +256,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.BIGINT_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_1_0_DECIMAL_1_0)
.firstOpMatches(ofTypeWithoutCast(Types.DECIMAL_1_0))
@@ -300,7 +300,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_1_0_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_2_1_DECIMAL_2_1)
@@ -341,7 +341,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_2_1_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_4_3_DECIMAL_4_3)
@@ -378,7 +378,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_4_3_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_2_0_DECIMAL_2_0)
@@ -411,7 +411,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_2_0_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_3_1_DECIMAL_3_1)
@@ -440,7 +440,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_3_1_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_5_3_DECIMAL_5_3)
@@ -465,7 +465,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_5_3_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_5_0_DECIMAL_5_0)
@@ -486,7 +486,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_5_0_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_6_1_DECIMAL_6_1)
@@ -503,7 +503,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_6_1_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.DECIMAL_8_3_DECIMAL_8_3)
@@ -516,7 +516,7 @@ public class NumericComparisonTypeCoercionTest extends
BaseTypeCoercionTest {
forTypePair(NumericPair.DECIMAL_8_3_DOUBLE)
.firstOpMatches(castTo(NativeTypes.DOUBLE))
-
.secondOpMatches(ofTypeWithoutCast(NativeTypes.DOUBLE)),
+ .secondOpBeSame(),
forTypePair(NumericPair.REAL_REAL)