OPENJPA-360 FOR UPDATE clause incorrectly generated

remove transient variable

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@575079 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Catalina Wei 2007-09-12 21:08:53 +00:00
parent efc6e371b7
commit 5e590a951e
2 changed files with 19 additions and 12 deletions

View File

@ -313,12 +313,12 @@ public class DB2Dictionary
* updateClause and isolationLevel hints * updateClause and isolationLevel hints
*/ */
protected String getForUpdateClause(JDBCFetchConfiguration fetch, protected String getForUpdateClause(JDBCFetchConfiguration fetch,
boolean isForUpdate) { boolean isForUpdate, Select sel) {
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(fetch)); getOptimizeClause(sel));
try { try {
// Determine the isolationLevel; the fetch // Determine the isolationLevel; the fetch
// configuration data overrides the persistence.xml value // configuration data overrides the persistence.xml value
@ -464,7 +464,7 @@ public class DB2Dictionary
} }
} }
protected String getOptimizeClause(JDBCFetchConfiguration fetch) { protected String getOptimizeClause(Select sel) {
if (sel != null && sel.getExpectedResultCount() > 0) { if (sel != null && sel.getExpectedResultCount() > 0) {
StringBuffer buf = new StringBuffer(); StringBuffer buf = new StringBuffer();
buf.append(" ").append(optimizeClause).append(" ") buf.append(" ").append(optimizeClause).append(" ")

View File

@ -60,7 +60,6 @@ import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.HashMap;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
@ -70,8 +69,6 @@ import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.kernel.exps.ExpContext; import org.apache.openjpa.jdbc.kernel.exps.ExpContext;
import org.apache.openjpa.jdbc.kernel.exps.ExpState; import org.apache.openjpa.jdbc.kernel.exps.ExpState;
import org.apache.openjpa.jdbc.kernel.exps.FilterValue; import org.apache.openjpa.jdbc.kernel.exps.FilterValue;
import org.apache.openjpa.jdbc.kernel.exps.Lit;
import org.apache.openjpa.jdbc.kernel.exps.Param;
import org.apache.openjpa.jdbc.kernel.exps.Val; import org.apache.openjpa.jdbc.kernel.exps.Val;
import org.apache.openjpa.jdbc.meta.ClassMapping; import org.apache.openjpa.jdbc.meta.ClassMapping;
import org.apache.openjpa.jdbc.meta.FieldMapping; import org.apache.openjpa.jdbc.meta.FieldMapping;
@ -88,7 +85,6 @@ import org.apache.openjpa.jdbc.schema.Sequence;
import org.apache.openjpa.jdbc.schema.Table; import org.apache.openjpa.jdbc.schema.Table;
import org.apache.openjpa.jdbc.schema.Unique; import org.apache.openjpa.jdbc.schema.Unique;
import org.apache.openjpa.kernel.Filters; import org.apache.openjpa.kernel.Filters;
import org.apache.openjpa.kernel.exps.Path;
import org.apache.openjpa.lib.conf.Configurable; import org.apache.openjpa.lib.conf.Configurable;
import org.apache.openjpa.lib.conf.Configuration; import org.apache.openjpa.lib.conf.Configuration;
import org.apache.openjpa.lib.jdbc.ConnectionDecorator; import org.apache.openjpa.lib.jdbc.ConnectionDecorator;
@ -325,7 +321,6 @@ public class DBDictionary
private Method _setBytes = null; private Method _setBytes = null;
private Method _setString = null; private Method _setString = null;
private Method _setCharStream = null; private Method _setCharStream = null;
protected transient Select sel = null;
public DBDictionary() { public DBDictionary() {
fixedSizeTypeNameSet.addAll(Arrays.asList(new String[]{ fixedSizeTypeNameSet.addAll(Arrays.asList(new String[]{
@ -1989,7 +1984,6 @@ public class DBDictionary
*/ */
public SQLBuffer toSelect(Select sel, boolean forUpdate, public SQLBuffer toSelect(Select sel, boolean forUpdate,
JDBCFetchConfiguration fetch) { JDBCFetchConfiguration fetch) {
this.sel = sel;
sel.addJoinClassConditions(); sel.addJoinClassConditions();
boolean update = forUpdate && sel.getFromSelect() == null; boolean update = forUpdate && sel.getFromSelect() == null;
SQLBuffer select = getSelects(sel, false, update); SQLBuffer select = getSelects(sel, false, update);
@ -2004,7 +1998,7 @@ public class DBDictionary
SQLBuffer where = getWhere(sel, update); SQLBuffer where = getWhere(sel, update);
return toSelect(select, fetch, from, where, sel.getGrouping(), return toSelect(select, fetch, from, where, sel.getGrouping(),
sel.getHaving(), ordering, sel.isDistinct(), forUpdate, sel.getHaving(), ordering, sel.isDistinct(), forUpdate,
sel.getStartIndex(), sel.getEndIndex()); sel.getStartIndex(), sel.getEndIndex(), sel);
} }
/** /**
@ -2192,7 +2186,20 @@ public class DBDictionary
boolean distinct, boolean forUpdate, long start, long end) { boolean distinct, boolean forUpdate, long start, long end) {
return toOperation(getSelectOperation(fetch), selects, from, where, return toOperation(getSelectOperation(fetch), selects, from, where,
group, having, order, distinct, start, end, group, having, order, distinct, start, end,
getForUpdateClause(fetch, forUpdate)); getForUpdateClause(fetch, forUpdate, null));
}
/**
* Combine the given components into a SELECT statement.
*/
public SQLBuffer toSelect(SQLBuffer selects, JDBCFetchConfiguration fetch,
SQLBuffer from, SQLBuffer where, SQLBuffer group,
SQLBuffer having, SQLBuffer order,
boolean distinct, boolean forUpdate, long start, long end
, Select sel) {
return toOperation(getSelectOperation(fetch), selects, from, where,
group, having, order, distinct, start, end,
getForUpdateClause(fetch, forUpdate, sel));
} }
/** /**
@ -2200,7 +2207,7 @@ public class DBDictionary
* updateClause and isolationLevel hints * updateClause and isolationLevel hints
*/ */
protected String getForUpdateClause(JDBCFetchConfiguration fetch, protected String getForUpdateClause(JDBCFetchConfiguration fetch,
boolean isForUpdate) { boolean isForUpdate, Select sel) {
if (fetch != null && fetch.getIsolation() != -1) { if (fetch != null && fetch.getIsolation() != -1) {
throw new InvalidStateException(_loc.get( throw new InvalidStateException(_loc.get(
"isolation-level-config-not-supported", getClass().getName())); "isolation-level-config-not-supported", getClass().getName()));