mirror of https://github.com/apache/openjpa.git
OPENJPA-884: Logging oversight in DB2Dictionary
https://issues.apache.org/jira/browse/OPENJPA-884 git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@749077 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
cc38e27eef
commit
efc6ba4735
|
@ -234,8 +234,8 @@ public class DB2Dictionary
|
||||||
conn = super.decorate(conn);
|
conn = super.decorate(conn);
|
||||||
|
|
||||||
if (conf.getTransactionIsolationConstant() == -1
|
if (conf.getTransactionIsolationConstant() == -1
|
||||||
&& conn.getTransactionIsolation() < conn.TRANSACTION_READ_COMMITTED)
|
&& conn.getTransactionIsolation() < Connection.TRANSACTION_READ_COMMITTED)
|
||||||
conn.setTransactionIsolation(conn.TRANSACTION_READ_COMMITTED);
|
conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);
|
||||||
|
|
||||||
return conn;
|
return conn;
|
||||||
}
|
}
|
||||||
|
@ -275,7 +275,7 @@ public class DB2Dictionary
|
||||||
db2ServerType = db2UDBV82OrLater;
|
db2ServerType = db2UDBV82OrLater;
|
||||||
}
|
}
|
||||||
|
|
||||||
// verify that databae product is supported
|
// verify that database product is supported
|
||||||
if (db2ServerType == 0 || maj == 0)
|
if (db2ServerType == 0 || maj == 0)
|
||||||
throw new UnsupportedException(_loc.get("db-not-supported",
|
throw new UnsupportedException(_loc.get("db-not-supported",
|
||||||
new Object[] {databaseProductName, databaseProductVersion }));
|
new Object[] {databaseProductName, databaseProductVersion }));
|
||||||
|
@ -340,56 +340,50 @@ public class DB2Dictionary
|
||||||
int isolationLevel;
|
int isolationLevel;
|
||||||
// For db2UDBV81OrEarlier and db2ISeriesV5R3OrEarlier:
|
// For db2UDBV81OrEarlier and db2ISeriesV5R3OrEarlier:
|
||||||
// "optimize for" clause appears before "for update" clause.
|
// "optimize for" clause appears before "for update" clause.
|
||||||
StringBuffer forUpdateString = new StringBuffer(
|
StringBuffer forUpdateString = new StringBuffer(getOptimizeClause(sel));
|
||||||
getOptimizeClause(sel));
|
// Determine the isolationLevel; the fetch
|
||||||
try {
|
// configuration data overrides the persistence.xml value
|
||||||
// Determine the isolationLevel; the fetch
|
if (fetch != null && fetch.getIsolation() != -1)
|
||||||
// configuration data overrides the persistence.xml value
|
isolationLevel = fetch.getIsolation();
|
||||||
if (fetch != null && fetch.getIsolation() != -1)
|
else
|
||||||
isolationLevel = fetch.getIsolation();
|
isolationLevel = conf.getTransactionIsolationConstant();
|
||||||
else
|
|
||||||
isolationLevel = conf.getTransactionIsolationConstant();
|
|
||||||
|
|
||||||
if (isForUpdate) {
|
if (isForUpdate) {
|
||||||
switch(db2ServerType) {
|
switch (db2ServerType) {
|
||||||
case db2ISeriesV5R3OrEarlier:
|
case db2ISeriesV5R3OrEarlier:
|
||||||
case db2UDBV81OrEarlier:
|
case db2UDBV81OrEarlier:
|
||||||
if (isolationLevel == Connection.TRANSACTION_SERIALIZABLE)
|
if (isolationLevel == Connection.TRANSACTION_SERIALIZABLE)
|
||||||
forUpdateString.append(" ").append(forUpdateClause);
|
forUpdateString.append(" ").append(forUpdateClause);
|
||||||
else
|
else
|
||||||
forUpdateString.append(" ").append(forUpdate)
|
forUpdateString.append(" ").append(forUpdate).append(" ")
|
||||||
.append(" ").append(withRSClause);
|
.append(withRSClause);
|
||||||
break;
|
break;
|
||||||
case db2ZOSV8xOrLater:
|
case db2ZOSV8xOrLater:
|
||||||
case db2UDBV82OrLater:
|
case db2UDBV82OrLater:
|
||||||
if (isolationLevel == Connection.TRANSACTION_SERIALIZABLE) {
|
if (isolationLevel == Connection.TRANSACTION_SERIALIZABLE) {
|
||||||
forUpdateString.append(" ").append(forReadOnlyClause)
|
forUpdateString.append(" ").append(forReadOnlyClause)
|
||||||
.append(" ").append(withRRClause)
|
.append(" ").append(withRRClause).append(" ").append(
|
||||||
.append(" ").append(useKeepUpdateLockClause);
|
useKeepUpdateLockClause);
|
||||||
} else {
|
} else {
|
||||||
forUpdateString.append(" ").append(forReadOnlyClause)
|
forUpdateString.append(" ").append(forReadOnlyClause)
|
||||||
.append(" ").append(withRSClause)
|
.append(" ").append(withRSClause).append(" ").append(
|
||||||
.append(" ").append(useKeepUpdateLockClause);
|
useKeepUpdateLockClause);
|
||||||
}
|
|
||||||
break;
|
|
||||||
case db2ISeriesV5R4OrLater:
|
|
||||||
if (isolationLevel == Connection.TRANSACTION_SERIALIZABLE) {
|
|
||||||
forUpdateString.append(" ").append(forReadOnlyClause)
|
|
||||||
.append(" ").append(withRRClause)
|
|
||||||
.append(" ").append(useKeepExclusiveLockClause);
|
|
||||||
} else {
|
|
||||||
forUpdateString.append(" ").append(forReadOnlyClause)
|
|
||||||
.append(" ").append(withRSClause)
|
|
||||||
.append(" ").append(useKeepExclusiveLockClause);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case db2ISeriesV5R4OrLater:
|
||||||
|
if (isolationLevel == Connection.TRANSACTION_SERIALIZABLE) {
|
||||||
|
forUpdateString.append(" ").append(forReadOnlyClause)
|
||||||
|
.append(" ").append(withRRClause).append(" ").append(
|
||||||
|
useKeepExclusiveLockClause);
|
||||||
|
} else {
|
||||||
|
forUpdateString.append(" ").append(forReadOnlyClause)
|
||||||
|
.append(" ").append(withRSClause).append(" ").append(
|
||||||
|
useKeepExclusiveLockClause);
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
|
||||||
if (log.isTraceEnabled())
|
|
||||||
log.error(e.toString(),e);
|
|
||||||
}
|
|
||||||
return forUpdateString.toString();
|
return forUpdateString.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,7 +461,7 @@ public class DB2Dictionary
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getProductVersionMajorMinor() {
|
private void getProductVersionMajorMinor() {
|
||||||
// Incase JDBC driver version is lower than 3
|
// In case JDBC driver version is lower than 3
|
||||||
// use following info to determine Major and Minor
|
// use following info to determine Major and Minor
|
||||||
// CLI vs JCC
|
// CLI vs JCC
|
||||||
// ZDBV8 DBProdName DB2 DB2
|
// ZDBV8 DBProdName DB2 DB2
|
||||||
|
@ -514,8 +508,8 @@ public class DB2Dictionary
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append exception information from SQLCA to the exsisting
|
* Append exception information from SQLCA to the existing
|
||||||
* exception meassage
|
* exception message
|
||||||
*/
|
*/
|
||||||
private String appendExtendedExceptionMsg(String msg, SQLException sqle){
|
private String appendExtendedExceptionMsg(String msg, SQLException sqle){
|
||||||
final String GETSQLCA ="getSqlca";
|
final String GETSQLCA ="getSqlca";
|
||||||
|
@ -827,7 +821,7 @@ public class DB2Dictionary
|
||||||
Column pkColumn) {
|
Column pkColumn) {
|
||||||
if (isDB2ZOSV8xOrLater()) {
|
if (isDB2ZOSV8xOrLater()) {
|
||||||
// build the index for the sequence tables
|
// build the index for the sequence tables
|
||||||
// the index name will the fully qualified table name + _IDX
|
// the index name will be the fully qualified table name + _IDX
|
||||||
Table tab = schema.getTable(table);
|
Table tab = schema.getTable(table);
|
||||||
Index idx = tab.addIndex(tab.getFullName() + "_IDX");
|
Index idx = tab.addIndex(tab.getFullName() + "_IDX");
|
||||||
idx.setUnique(true);
|
idx.setUnique(true);
|
||||||
|
|
Loading…
Reference in New Issue