OPENJPA-2570: Allow an informix user the option to disable the RETAINUPDATELOCKS sql

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@1675495 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jody Grassel 2015-04-22 20:35:18 +00:00
parent 5235008137
commit 419a8afa9a
1 changed files with 15 additions and 16 deletions

View File

@ -27,6 +27,7 @@ import java.sql.Statement;
import java.sql.Types;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
import java.util.Set;
@ -82,8 +83,8 @@ public class InformixDictionary
protected boolean useJCC = false;
// weak set of connections we've already executed lock mode sql on
private final Collection _seenConnections = new ReferenceHashSet
(ReferenceHashSet.WEAK);
private final Collection _seenConnections = Collections.synchronizedSet(
new ReferenceHashSet(ReferenceHashSet.WEAK));
public boolean disableRetainUpdateLocksSQL=false;
@ -324,21 +325,19 @@ public class InformixDictionary
// if we haven't already done so, initialize the lock mode of the
// connection
synchronized(_seenConnections) {
if (_seenConnections.add(conn)) {
if (lockModeEnabled) {
String sql = "SET LOCK MODE TO WAIT";
if (lockWaitSeconds > 0)
sql = sql + " " + lockWaitSeconds;
execute(sql, conn, true);
}
if (!disableRetainUpdateLocksSQL){
String sql = "SET ENVIRONMENT RETAINUPDATELOCKS 'ALL'";
execute(sql, conn, false);
}
if (_seenConnections.add(conn)) {
if (lockModeEnabled) {
String sql = "SET LOCK MODE TO WAIT";
if (lockWaitSeconds > 0)
sql = sql + " " + lockWaitSeconds;
execute(sql, conn, true);
}
}
if (!disableRetainUpdateLocksSQL){
String sql = "SET ENVIRONMENT RETAINUPDATELOCKS 'ALL'";
execute(sql, conn, false);
}
}
// the datadirect driver requires that we issue a rollback before using
// each connection