From 0354b057c99b41ae6eda2f1bfcdd44850af9b80a Mon Sep 17 00:00:00 2001 From: "Kevin W. Sutter" Date: Thu, 29 Mar 2012 23:06:42 +0000 Subject: [PATCH] OPENJPA-2162. Allow the setting of the DBDictionary property supportsDelimitedIdentifiers to "false" to skip the extra overhead of processing delimited identifiers when they will not exist for a given application or usage. git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@1307157 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/openjpa/jdbc/sql/DBDictionary.java | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java index 9b17d1700..22d7a0551 100644 --- a/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java +++ b/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java @@ -392,7 +392,7 @@ public class DBDictionary // NamingConfiguration properties private boolean delimitIdentifiers = false; - public boolean supportsDelimitedIdentifiers = true; + public Boolean supportsDelimitedIdentifiers = null; public String leadingDelimiter = "\""; public String trailingDelimiter = "\""; public String nameConcatenator = "_"; @@ -474,7 +474,8 @@ public class DBDictionary } // Configure the naming utility - configureNamingUtil(metaData); + if (supportsDelimitedIdentifiers == null) // not explicitly set + configureNamingUtil(metaData); // Auto-detect generated keys retrieval support // unless user specified it. @@ -5380,20 +5381,27 @@ public class DBDictionary * @return the supportsDelimitedIds */ public boolean getSupportsDelimitedIdentifiers() { - return supportsDelimitedIdentifiers; + return (supportsDelimitedIdentifiers == null ? false : supportsDelimitedIdentifiers); } - + /** * @param supportsDelimitedIds the supportsDelimitedIds to set */ - public void setSupportsDelimitedIdentifiers(DatabaseMetaData metaData) { + public void setSupportsDelimitedIdentifiers(boolean supportsDelimitedIds) { + supportsDelimitedIdentifiers = Boolean.valueOf(supportsDelimitedIds); + } + + /** + * @param metadata the DatabaseMetaData to use to determine whether delimiters can be supported + */ + private void setSupportsDelimitedIdentifiers(DatabaseMetaData metaData) { try { - supportsDelimitedIdentifiers = + supportsDelimitedIdentifiers = Boolean.valueOf( metaData.supportsMixedCaseQuotedIdentifiers() || metaData.storesLowerCaseQuotedIdentifiers() || - metaData.storesUpperCaseQuotedIdentifiers(); + metaData.storesUpperCaseQuotedIdentifiers()); } catch (SQLException e) { - supportsDelimitedIdentifiers = false; + supportsDelimitedIdentifiers = Boolean.valueOf(false); getLog().warn(_loc.get("unknown-delim-support", e)); } } @@ -5508,11 +5516,17 @@ public class DBDictionary } public String toDBName(DBIdentifier name) { - return getNamingUtil().toDBName(name); + if (!getSupportsDelimitedIdentifiers()) + return name.getName(); + else + return getNamingUtil().toDBName(name); } public String toDBName(DBIdentifier name, boolean delimit) { - return getNamingUtil().toDBName(name, delimit); + if (!getSupportsDelimitedIdentifiers()) + return name.getName(); + else + return getNamingUtil().toDBName(name, delimit); } public DBIdentifier fromDBName(String name, DBIdentifierType id) {