Author: jacopoc
Date: Sun Aug 31 15:41:52 2014
New Revision: 1621599
URL: http://svn.apache.org/r1621599
Log:
Small optimization: two strings for sql statements are now stored as final
strings in the SequenceBank object.
Modified:
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/SequenceUtil.java
Modified:
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/SequenceUtil.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/SequenceUtil.java?rev=1621599&r1=1621598&r2=1621599&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/SequenceUtil.java
(original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/util/SequenceUtil.java
Sun Aug 31 15:41:52 2014
@@ -110,6 +110,8 @@ public class SequenceUtil {
private final String seqName;
private final long bankSize;
+ private final String updateForLockStatement;
+ private final String selectSequenceStatement;
private long curSeqId;
private long maxSeqId;
@@ -119,6 +121,8 @@ public class SequenceUtil {
curSeqId = 0;
maxSeqId = 0;
this.bankSize = bankSize;
+ updateForLockStatement = "UPDATE " + SequenceUtil.this.tableName +
" SET " + SequenceUtil.this.idColName + "=" + SequenceUtil.this.idColName + "
WHERE " + SequenceUtil.this.nameColName + "='" + this.seqName + "'";
+ selectSequenceStatement = "SELECT " + SequenceUtil.this.idColName
+ " FROM " + SequenceUtil.this.tableName + " WHERE " +
SequenceUtil.this.nameColName + "='" + this.seqName + "'";
}
private Long getNextSeqId(long staggerMax) {
@@ -193,22 +197,19 @@ public class SequenceUtil {
stmt = connection.createStatement();
// run an update with no changes to get a lock on the
record
- sql = "UPDATE " + SequenceUtil.this.tableName + " SET
" + SequenceUtil.this.idColName + "=" + SequenceUtil.this.idColName + " WHERE "
+ SequenceUtil.this.nameColName + "='" + this.seqName + "'";
- if (stmt.executeUpdate(sql) <= 0) {
+ if (stmt.executeUpdate(updateForLockStatement) <= 0) {
Debug.logWarning("First select failed: will try to
add new row, result set was empty for sequence [" + seqName + "] \nUsed SQL: "
+ sql + " \n ", module);
sql = "INSERT INTO " + SequenceUtil.this.tableName
+ " (" + SequenceUtil.this.nameColName + ", " + SequenceUtil.this.idColName +
") VALUES ('" + this.seqName + "', " + startSeqId + ")";
if (stmt.executeUpdate(sql) <= 0) {
// insert failed: this means that another
thread inserted the record; then retry to run an update with no changes to get
a lock on the record
- sql = "UPDATE " + SequenceUtil.this.tableName
+ " SET " + SequenceUtil.this.idColName + "=" + SequenceUtil.this.idColName + "
WHERE " + SequenceUtil.this.nameColName + "='" + this.seqName + "'";
- if (stmt.executeUpdate(sql) <= 0) {
+ if (stmt.executeUpdate(updateForLockStatement)
<= 0) {
// This should never happen
throw new GenericEntityException("No rows
changed when trying insert new sequence row with this SQL: " + sql);
}
}
}
// select the record (now locked) to get the curSeqId
- sql = "SELECT " + SequenceUtil.this.idColName + " FROM
" + SequenceUtil.this.tableName + " WHERE " + SequenceUtil.this.nameColName +
"='" + this.seqName + "'";
- rs = stmt.executeQuery(sql);
+ rs = stmt.executeQuery(selectSequenceStatement);
boolean gotVal = false;
if (rs.next()) {
curSeqId = rs.getLong(SequenceUtil.this.idColName);
@@ -227,7 +228,7 @@ public class SequenceUtil {
TransactionUtil.commit(beganTransaction);
} catch (SQLException sqle) {
- Debug.logWarning(sqle, "SQL Exception while executing
the following:\n" + sql + "\nError was:" + sqle.getMessage(), module);
+ Debug.logWarning(sqle, "SQL Exception:" +
sqle.getMessage(), module);
throw sqle;
} finally {
try {