From 005a18a73951940c9ddde5d8623c1ed4dd5fd2b5 Mon Sep 17 00:00:00 2001 From: Michael Dick Date: Tue, 19 Oct 2010 17:57:04 +0000 Subject: [PATCH] OPENJPA-1841: Use length() function to determine BLOB/CLOB nullity for Oracle. git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@1024340 13f79535-47bb-0310-9956-ffa450edef68 --- .../strats/MaxEmbeddedLobFieldStrategy.java | 12 ----------- .../openjpa/jdbc/sql/OracleDictionary.java | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java index 0bc8426ae..19fd8a56f 100644 --- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java +++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/strats/MaxEmbeddedLobFieldStrategy.java @@ -238,18 +238,6 @@ abstract class MaxEmbeddedLobFieldStrategy return res.getObject(col, null, joins); } - public void appendIsNull(SQLBuffer sql, Select sel, Joins joins) { - joins = join(joins, false); - sql.append(sel.getColumnAlias(field.getColumns()[0], joins)). - append(" IS ").appendValue(null, field.getColumns()[0]); - } - - public void appendIsNotNull(SQLBuffer sql, Select sel, Joins joins) { - joins = join(joins, false); - sql.append(sel.getColumnAlias(field.getColumns()[0], joins)). - append(" IS NOT ").appendValue(null, field.getColumns()[0]); - } - public Joins join(Joins joins, boolean forceOuter) { return field.join(joins, forceOuter, false); } diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java index 64087f966..39b7f0dc4 100644 --- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java +++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/OracleDictionary.java @@ -1365,4 +1365,24 @@ public class OracleDictionary isJDBC4 = false; } } + + @Override + public String getIsNullSQL(String colAlias, int colType) { + switch(colType) { + case Types.BLOB: + case Types.CLOB: + return String.format("length (%s) = 0", colAlias); + } + return super.getIsNullSQL(colAlias, colType); + } + + @Override + public String getIsNotNullSQL(String colAlias, int colType) { + switch(colType) { + case Types.BLOB: + case Types.CLOB: + return String.format("length (%s) != 0 ", colAlias); + } + return super.getIsNotNullSQL(colAlias, colType); + } }