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 }]])
+]]>
+
+
+
+
+
+
+
+