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 9c328b152f7..225b7d27dbb 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java @@ -3616,9 +3616,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 694572683e9..2601bfe1117 100644 --- a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java +++ b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java @@ -5379,6 +5379,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 1705493edb8..92c80972525 100644 --- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml +++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml @@ -5670,6 +5670,19 @@ LogicalProject(X=[CAST($0):DECIMAL(2, 1) NOT NULL]) LogicalJoin(condition=[=($0, $1)], joinType=[inner]) LogicalValues(tuples=[[{ 'x' }]]) LogicalValues(tuples=[[{ 0.0 }]]) +]]> + + + + + + + +