Author: doogie
Date: Sun May 30 22:08:59 2010 New Revision: 949628 URL: http://svn.apache.org/viewvc?rev=949628&view=rev Log: Return the value of needsUpperCase from getIndexInfo, so that the proper case can be used on declared index names. Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java?rev=949628&r1=949627&r2=949628&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/jdbc/DatabaseUtil.java Sun May 30 22:08:59 2010 @@ -520,7 +520,8 @@ public class DatabaseUtil { // TODO: check each key-map to make sure it exists in the index, if any differences warn and then remove the index and recreate it // get ALL column info, put into hashmap by table name - Map<String, Set<String>> tableIndexListMap = this.getIndexInfo(indexTableNames, messages); + boolean needsUpperCase[] = new boolean[1]; + Map<String, Set<String>> tableIndexListMap = this.getIndexInfo(indexTableNames, messages, needsUpperCase); // Debug.logVerbose("Ref Info Map: " + refTableInfoMap, module); @@ -602,8 +603,9 @@ public class DatabaseUtil { ModelIndex modelIndex = indexes.next(); String relIndexName = makeIndexName(modelIndex, datasourceInfo.constraintNameClipLength); - if (tableIndexList.contains(relIndexName)) { - tableIndexList.remove(relIndexName); + String checkIndexName = needsUpperCase[0] ? relIndexName.toUpperCase() : relIndexName; + if (tableIndexList.contains(checkIndexName)) { + tableIndexList.remove(checkIndexName); } else { if (datasourceInfo.checkIndicesOnStart) { // if not, create one @@ -1492,7 +1494,7 @@ public class DatabaseUtil { return refInfo; } - public Map<String, Set<String>> getIndexInfo(Set<String> tableNames, Collection<String> messages) { + public Map<String, Set<String>> getIndexInfo(Set<String> tableNames, Collection<String> messages, boolean[] needsUpperCase) { Connection connection = getConnectionLogged(messages); if (connection == null) { return null; @@ -1516,9 +1518,9 @@ public class DatabaseUtil { return null; } - boolean needsUpperCase = false; + needsUpperCase[0] = false; try { - needsUpperCase = dbData.storesLowerCaseIdentifiers() || dbData.storesMixedCaseIdentifiers(); + needsUpperCase[0] = dbData.storesLowerCaseIdentifiers() || dbData.storesMixedCaseIdentifiers(); } catch (SQLException e) { String message = "Error getting identifier case information... Error was:" + e.toString(); Debug.logError(message, module); @@ -1547,7 +1549,7 @@ public class DatabaseUtil { try { // false for unique, we don't really use unique indexes // true for approximate, don't really care if stats are up-to-date - rsCols = dbData.getIndexInfo(null, lookupSchemaName, needsUpperCase ? curTableName.toLowerCase() : curTableName, false, true); + rsCols = dbData.getIndexInfo(null, lookupSchemaName, needsUpperCase[0] ? curTableName.toLowerCase() : curTableName, false, true); } catch (Exception e) { Debug.logWarning(e, "Error getting index info for table: " + curTableName + " using lookupSchemaName " + lookupSchemaName, module); } @@ -1563,7 +1565,7 @@ public class DatabaseUtil { // if (!rsCols.getBoolean("NON_UNIQUE")) continue; String tableName = rsCols.getString("TABLE_NAME"); - if (needsUpperCase && tableName != null) { + if (needsUpperCase[0] && tableName != null) { tableName = tableName.toUpperCase(); } if (lookupSchemaName != null) { @@ -1572,7 +1574,7 @@ public class DatabaseUtil { if (!tableNames.contains(tableName)) continue; String indexName = rsCols.getString("INDEX_NAME"); - if (needsUpperCase && indexName != null) { + if (needsUpperCase[0] && indexName != null) { indexName = indexName.toUpperCase(); } if (indexName.startsWith("PK_") || indexName.startsWith("pk_")) continue; |
Free forum by Nabble | Edit this page |