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;