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