diff --git a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java index 882d4238709..53d54dd6d2a 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java @@ -3642,9 +3642,10 @@ private RexNode convertUsing(SqlValidatorNamespace leftNamespace, offset += rowType.getFieldList().size(); } - RelDataType resultType = - validator().getTypeCoercion().commonTypeForBinaryComparison( - comparedTypes.get(0), comparedTypes.get(1)); + RelDataType resultType = validator().config().typeCoercionEnabled() + ? validator().getTypeCoercion().commonTypeForBinaryComparison( + comparedTypes.get(0), comparedTypes.get(1)) + : null; if (resultType == null) { // Leave call unchanged (as it happens in TypeCoercionImpl#binaryComparisonCoercion) list.add(rexBuilder.makeCall(SqlStdOperatorTable.EQUALS, operands)); diff --git a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java index 26000620af6..218f018fb68 100644 --- a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java +++ b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java @@ -5397,6 +5397,13 @@ void checkUserDefinedOrderByOver(NullCollation nullCollation) { .ok(); } + /** Test case for [CALCITE-7589] + * JOIN ... USING might fail with disabled type coercion. */ + @Test void testNaturalJoinCastNoCoercion2() { + final String sql = "select * from emp join dept using(deptno)"; + sql(sql).withTypeCoercion(false).ok(); + } + /** Tests LEFT JOIN LATERAL with multiple columns from outer. */ @Test void testLeftJoinLateral4() { final String sql = "select * from (values (4,5)) as t(c,d)\n" diff --git a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml index 71fe294d2f0..6900b06ff8f 100644 --- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml @@ -5693,6 +5693,19 @@ LogicalProject(X=[CAST($0):DECIMAL(2, 1) NOT NULL]) LogicalJoin(condition=[=($0, $1)], joinType=[inner]) LogicalValues(tuples=[[{ 'x' }]]) LogicalValues(tuples=[[{ 0.0 }]]) +]]> + + + + + + + +