From 66745aaca8d4c91f73261250abb87902126a0a4a Mon Sep 17 00:00:00 2001 From: dbulahov Date: Tue, 20 Oct 2026 15:30:57 +0300 Subject: [PATCH] dialect(oracle): an inner join is written with JOIN ... ON Oracle reads ANSI joins since 9i; its false allowsJoinOn() was an inherited base-class default, not an Oracle limit. Oracle alone wrote comma joins with the condition in WHERE, the drill-through statements among them. Signed-off-by: dbulahov --- .../daanse/sql/dialect/db/oracle/OracleDialect.java | 7 +++---- .../daanse/sql/dialect/db/oracle/OracleDialectTest.java | 6 ++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dialect/db/oracle/src/main/java/org/eclipse/daanse/sql/dialect/db/oracle/OracleDialect.java b/dialect/db/oracle/src/main/java/org/eclipse/daanse/sql/dialect/db/oracle/OracleDialect.java index a423f16..71ae165 100644 --- a/dialect/db/oracle/src/main/java/org/eclipse/daanse/sql/dialect/db/oracle/OracleDialect.java +++ b/dialect/db/oracle/src/main/java/org/eclipse/daanse/sql/dialect/db/oracle/OracleDialect.java @@ -266,10 +266,9 @@ public StringBuilder generateOrderByNulls(CharSequence expr, boolean ascending, return generateOrderByNullsAnsi(expr, ascending, collateNullsLast); } - @Override - public boolean allowsJoinOn() { - return false; - } + // No allowsJoinOn override: Oracle reads ANSI JOIN ... ON since 9i. The false it returned was an inherited + // base-class default rather than a reason of Oracle's, and Oracle alone wrote comma joins with the join + // condition in WHERE (database run 19./20.10., the drill-through statements; F-10.6 5a). @Override public boolean allowsRegularExpressionInWhereClause() { diff --git a/dialect/db/oracle/src/test/java/org/eclipse/daanse/sql/dialect/db/oracle/OracleDialectTest.java b/dialect/db/oracle/src/test/java/org/eclipse/daanse/sql/dialect/db/oracle/OracleDialectTest.java index 4f26439..18d700d 100644 --- a/dialect/db/oracle/src/test/java/org/eclipse/daanse/sql/dialect/db/oracle/OracleDialectTest.java +++ b/dialect/db/oracle/src/test/java/org/eclipse/daanse/sql/dialect/db/oracle/OracleDialectTest.java @@ -44,6 +44,12 @@ public void setUp() throws Exception { dialect = new OracleDialect(org.eclipse.daanse.sql.dialect.api.DialectInitData.fromConnection(connection)); } + /** Oracle reads ANSI joins; comma joins were the inherited default, not an Oracle limit. */ + @Test + void anInnerJoinIsWrittenWithJoinOn() { + assertTrue(dialect.allowsJoinOn()); + } + @Test void testAllowsRegularExpressionInWhereClause() { assertTrue(dialect.allowsRegularExpressionInWhereClause());