You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by kw...@apache.org on 2006/09/18 23:58:05 UTC
svn commit: r447584 [3/8] - in /incubator/openjpa/sandboxes/OPENJPA-24: ./
openjpa-all/ openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/conf/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/
openjpa-jdbc/src/main/java/org/apache/openjpa/jd...
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/GetObjectId.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/GetObjectId.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/GetObjectId.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/GetObjectId.java Mon Sep 18 14:57:52 2006
@@ -17,12 +17,9 @@
import java.sql.SQLException;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.meta.ClassMapping;
import org.apache.openjpa.jdbc.meta.Joinable;
import org.apache.openjpa.jdbc.schema.Column;
-import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.Result;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
@@ -57,8 +54,11 @@
_path = path;
}
- public Column[] getColumns() {
- return _path.getClassMapping().getPrimaryKeyColumns();
+ /**
+ * Return the oid columns.
+ */
+ public Column[] getColumns(ExpState state) {
+ return _path.getClassMapping(state).getPrimaryKeyColumns();
}
public ClassMetaData getMetaData() {
@@ -76,26 +76,23 @@
public void setImplicitType(Class type) {
}
- public void initialize(Select sel, JDBCStore store, boolean nullTest) {
- _path.initialize(sel, store, false);
- _path.joinRelation();
+ public ExpState initialize(Select sel, ExpContext ctx, int flags) {
+ ExpState state = _path.initialize(sel, ctx, JOIN_REL);
// it's difficult to get calls on non-pc fields to always return null
// without screwing up the SQL, to just don't let users call it on
// non-pc fields at all
- if (_path.getClassMapping() == null
- || _path.getClassMapping().getEmbeddingMapping() != null)
+ ClassMapping cls = _path.getClassMapping(state);
+ if (cls == null || cls.getEmbeddingMapping() != null)
throw new UserException(_loc.get("bad-getobjectid",
- _path.getFieldMapping()));
- }
-
- public Joins getJoins() {
- return _path.getJoins();
+ _path.getFieldMapping(state)));
+ return state;
}
- public Object toDataStoreValue(Object val, JDBCStore store) {
+ public Object toDataStoreValue(Select sel, ExpContext ctx, ExpState state,
+ Object val) {
// if datastore identity, try to convert to a long value
- ClassMapping mapping = _path.getClassMapping();
+ ClassMapping mapping = _path.getClassMapping(state);
if (mapping.getIdentityType() == mapping.ID_DATASTORE) {
if (val instanceof Id)
return Numbers.valueOf(((Id) val).getId());
@@ -129,48 +126,42 @@
return ordered;
}
- public void select(Select sel, JDBCStore store, Object[] params,
- boolean pks, JDBCFetchConfiguration fetch) {
- selectColumns(sel, store, params, true, fetch);
+ public void select(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ selectColumns(sel, ctx, state, true);
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _path.selectColumns(sel, store, params, true, fetch);
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ _path.selectColumns(sel, ctx, state, true);
}
- public void groupBy(Select sel, JDBCStore store, Object[] params,
- JDBCFetchConfiguration fetch) {
- _path.groupBy(sel, store, params, fetch);
+ public void groupBy(Select sel, ExpContext ctx, ExpState state) {
+ _path.groupBy(sel, ctx, state);
}
- public void orderBy(Select sel, JDBCStore store, Object[] params,
- boolean asc, JDBCFetchConfiguration fetch) {
- _path.orderBy(sel, store, params, asc, fetch);
+ public void orderBy(Select sel, ExpContext ctx, ExpState state,
+ boolean asc) {
+ _path.orderBy(sel, ctx, state, asc);
}
- public Object load(Result res, JDBCStore store,
- JDBCFetchConfiguration fetch)
+ public Object load(ExpContext ctx, ExpState state, Result res)
throws SQLException {
- return _path.load(res, store, true, fetch);
- }
-
- public void calculateValue(Select sel, JDBCStore store,
- Object[] params, Val other, JDBCFetchConfiguration fetch) {
- _path.calculateValue(sel, store, params, null, fetch);
+ return _path.load(ctx, state, res, true);
}
- public void clearParameters() {
- _path.clearParameters();
+ public void calculateValue(Select sel, ExpContext ctx, ExpState state,
+ Val other, ExpState otherState) {
+ _path.calculateValue(sel, ctx, state, null, null);
}
- public int length() {
- return _path.length();
+ public int length(Select sel, ExpContext ctx, ExpState state) {
+ return _path.length(sel, ctx, state);
}
- public void appendTo(SQLBuffer sql, int index, Select sel,
- JDBCStore store, Object[] params, JDBCFetchConfiguration fetch) {
- _path.appendTo(sql, index, sel, store, params, fetch);
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer sql, int index) {
+ _path.appendTo(sel, ctx, state, sql, index);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InExpression.java Mon Sep 18 14:57:52 2006
@@ -20,8 +20,6 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.schema.Column;
import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
@@ -48,58 +46,79 @@
_const = constant;
}
- public Const getConst() {
+ /**
+ * Constant collection.
+ */
+ public Const getConstant() {
return _const;
}
+ /**
+ * Contained value.
+ */
public Val getValue() {
return _val;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
- _val.initialize(sel, store, false);
- _const.initialize(sel, store, false);
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
+ ExpState valueState = _val.initialize(sel, ctx, 0);
+ ExpState constantState = _const.initialize(sel, ctx, 0);
+ return new InExpState(valueState.joins, constantState, valueState);
+ }
+
+ /**
+ * Expression state.
+ */
+ private static class InExpState
+ extends ExpState {
+
+ public final ExpState constantState;
+ public final ExpState valueState;
+
+ public InExpState(Joins joins, ExpState constantState,
+ ExpState valueState) {
+ super(joins);
+ this.constantState = constantState;
+ this.valueState = valueState;
+ }
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- _val.calculateValue(sel, store, params, null, fetch);
- _const.calculateValue(sel, store, params, null, fetch);
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf) {
+ InExpState istate = (InExpState) state;
+ _const.calculateValue(sel, ctx, istate.constantState, null, null);
+ _val.calculateValue(sel, ctx, istate.valueState, null, null);
- Collection coll = getCollection();
+ Collection coll = getCollection(ctx, istate.constantState);
if (coll != null) {
Collection ds = new ArrayList(coll.size());
for (Iterator itr = coll.iterator(); itr.hasNext();)
- ds.add(_val.toDataStoreValue(itr.next(), store));
+ ds.add(_val.toDataStoreValue(sel, ctx, istate.valueState,
+ itr.next()));
coll = ds;
}
Column[] cols = null;
if (_val instanceof PCPath)
- cols = ((PCPath) _val).getColumns();
+ cols = ((PCPath) _val).getColumns(istate.valueState);
else if (_val instanceof GetObjectId)
- cols = ((GetObjectId) _val).getColumns();
+ cols = ((GetObjectId) _val).getColumns(istate.valueState);
if (coll == null || coll.isEmpty())
buf.append("1 <> 1");
- else if (_val.length() == 1)
- inContains(buf, sel, store, params, fetch, coll, cols);
+ else if (_val.length(sel, ctx, istate.valueState) == 1)
+ inContains(sel, ctx, istate.valueState, buf, coll, cols);
else
- orContains(buf, sel, store, params, fetch, coll, cols);
- sel.append(buf, _val.getJoins());
-
- _val.clearParameters();
- _const.clearParameters();
+ orContains(sel, ctx, istate.valueState, buf, coll, cols);
+ sel.append(buf, state.joins);
}
/**
* Construct an IN clause with the value of the given collection.
*/
- private void inContains(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch,
- Collection coll, Column[] cols) {
- _val.appendTo(buf, 0, sel, store, params, fetch);
+ private void inContains(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf, Collection coll, Column[] cols) {
+ _val.appendTo(sel, ctx, state, buf, 0);
buf.append(" IN (");
Column col = (cols != null && cols.length == 1) ? cols[0] : null;
@@ -115,9 +134,8 @@
* If the value to test is a compound key, we can't use IN,
* so create a clause like '(a = b AND c = d) OR (e = f AND g = h) ...'
*/
- private void orContains(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch, Collection coll,
- Column[] cols) {
+ private void orContains(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf, Collection coll, Column[] cols) {
if (coll.size() > 1)
buf.append("(");
@@ -133,7 +151,7 @@
if (i > 0)
buf.append(" AND ");
- _val.appendTo(buf, i, sel, store, params, fetch);
+ _val.appendTo(sel, ctx, state, buf, i);
if (vals[i] == null)
buf.append(" IS ");
else
@@ -149,21 +167,18 @@
buf.append(")");
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _val.selectColumns(sel, store, params, true, fetch);
- _const.selectColumns(sel, store, params, pks, fetch);
- }
-
- public Joins getJoins() {
- return _val.getJoins();
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ InExpState istate = (InExpState) state;
+ _const.selectColumns(sel, ctx, istate.constantState, true);
+ _val.selectColumns(sel, ctx, istate.valueState, true);
}
/**
* Return the collection to test for containment with.
*/
- protected Collection getCollection() {
- return (Collection) _const.getValue();
+ protected Collection getCollection(ExpContext ctx, ExpState state) {
+ return (Collection) _const.getValue(ctx, state);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InKeyExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InKeyExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InKeyExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InKeyExpression.java Mon Sep 18 14:57:52 2006
@@ -37,8 +37,8 @@
/**
* Return the collection to test for containment with.
*/
- protected Collection getCollection() {
- Map map = (Map) getConst().getValue();
+ protected Collection getCollection(ExpContext ctx, ExpState state) {
+ Map map = (Map) getConstant().getValue(ctx, state);
return (map == null) ? null : map.keySet();
}
}
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InSubQExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InSubQExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InSubQExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InSubQExpression.java Mon Sep 18 14:57:52 2006
@@ -17,8 +17,6 @@
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
@@ -43,31 +41,44 @@
_sub = sub;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
- _val.initialize(sel, store, false);
- _sub.initialize(sel, store, false);
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
+ ExpState subqState = _sub.initialize(sel, ctx, 0);
+ ExpState valueState = _val.initialize(sel, ctx, 0);
+ return new InSubQExpState(valueState.joins, subqState, valueState);
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- _val.calculateValue(sel, store, params, null, fetch);
- _sub.calculateValue(sel, store, params, null, fetch);
- _val.appendTo(buf, 0, sel, store, params, fetch);
- buf.append(" IN ");
- _sub.appendTo(buf, 0, sel, store, params, fetch);
- _val.clearParameters();
- _sub.clearParameters();
+ /**
+ * Expression state.
+ */
+ private static class InSubQExpState
+ extends ExpState {
+
+ public final ExpState subqState;
+ public final ExpState valueState;
+
+ public InSubQExpState(Joins joins, ExpState subqState,
+ ExpState valueState) {
+ super(joins);
+ this.subqState = subqState;
+ this.valueState = valueState;
+ }
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _val.selectColumns(sel, store, params, true, fetch);
- _sub.selectColumns(sel, store, params, pks, fetch);
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf) {
+ InSubQExpState istate = (InSubQExpState) state;
+ _sub.calculateValue(sel, ctx, istate.subqState, null, null);
+ _val.calculateValue(sel, ctx, istate.valueState, null, null);
+ _val.appendTo(sel, ctx, istate.valueState, buf, 0);
+ buf.append(" IN ");
+ _sub.appendTo(sel, ctx, istate.valueState, buf, 0);
}
- public Joins getJoins() {
- return _val.getJoins();
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ InSubQExpState istate = (InSubQExpState) state;
+ _sub.selectColumns(sel, ctx, istate.subqState, pks);
+ _val.selectColumns(sel, ctx, istate.valueState, true);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InValueExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InValueExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InValueExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InValueExpression.java Mon Sep 18 14:57:52 2006
@@ -37,8 +37,8 @@
/**
* Return the collection to test for containment with.
*/
- protected Collection getCollection() {
- Map map = (Map) getConst().getValue();
+ protected Collection getCollection(ExpContext ctx, ExpState state) {
+ Map map = (Map) getConstant().getValue(ctx, state);
return (map == null) ? null : map.values();
}
}
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java Mon Sep 18 14:57:52 2006
@@ -17,10 +17,7 @@
import java.sql.SQLException;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.meta.JavaSQLTypes;
-import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.Result;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
@@ -38,7 +35,6 @@
private final Val _val1;
private final Val _val2;
- private Joins _joins = null;
private ClassMetaData _meta = null;
private Class _cast = null;
@@ -58,10 +54,6 @@
_meta = meta;
}
- public boolean isVariable() {
- return false;
- }
-
public Class getType() {
if (_cast != null)
return _cast;
@@ -72,87 +64,72 @@
_cast = type;
}
- public void initialize(Select sel, JDBCStore store, boolean nullTest) {
- _val1.initialize(sel, store, false);
- _val2.initialize(sel, store, false);
- _joins = sel.and(_val1.getJoins(), _val2.getJoins());
- }
-
- public Joins getJoins() {
- return _joins;
+ public ExpState initialize(Select sel, ExpContext ctx, int flags) {
+ ExpState s1 = _val1.initialize(sel, ctx, 0);
+ ExpState s2 = _val2.initialize(sel, ctx, 0);
+ return new BinaryOpExpState(sel.and(s1.joins, s2.joins), s1, s2);
}
- public Object toDataStoreValue(Object val, JDBCStore store) {
- return val;
+ public void select(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ sel.select(newSQLBuffer(sel, ctx, state), this);
}
- public void select(Select sel, JDBCStore store, Object[] params,
- boolean pks, JDBCFetchConfiguration fetch) {
- sel.select(newSQLBuffer(sel, store, params, fetch), this);
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ _val1.selectColumns(sel, ctx, bstate.state1, true);
+ _val2.selectColumns(sel, ctx, bstate.state2, true);
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _val1.selectColumns(sel, store, params, true, fetch);
- _val2.selectColumns(sel, store, params, true, fetch);
+ public void groupBy(Select sel, ExpContext ctx, ExpState state) {
+ sel.groupBy(newSQLBuffer(sel, ctx, state));
}
- public void groupBy(Select sel, JDBCStore store, Object[] params,
- JDBCFetchConfiguration fetch) {
- sel.groupBy(newSQLBuffer(sel, store, params, fetch));
+ public void orderBy(Select sel, ExpContext ctx, ExpState state,
+ boolean asc) {
+ sel.orderBy(newSQLBuffer(sel, ctx, state), asc, false);
}
- public void orderBy(Select sel, JDBCStore store, Object[] params,
- boolean asc, JDBCFetchConfiguration fetch) {
- sel.orderBy(newSQLBuffer(sel, store, params, fetch), asc, false);
- }
-
- private SQLBuffer newSQLBuffer(Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- calculateValue(sel, store, params, null, fetch);
- SQLBuffer buf = new SQLBuffer(store.getDBDictionary());
- appendTo(buf, 0, sel, store, params, fetch);
- clearParameters();
+ private SQLBuffer newSQLBuffer(Select sel, ExpContext ctx, ExpState state) {
+ calculateValue(sel, ctx, state, null, null);
+ SQLBuffer buf = new SQLBuffer(ctx.store.getDBDictionary());
+ appendTo(sel, ctx, state, buf, 0);
return buf;
}
- public Object load(Result res, JDBCStore store,
- JDBCFetchConfiguration fetch)
+ public Object load(ExpContext ctx, ExpState state, Result res)
throws SQLException {
- return Filters.convert(res.getObject(this,
- JavaSQLTypes.JDBC_DEFAULT, null), getType());
- }
-
- public void calculateValue(Select sel, JDBCStore store,
- Object[] params, Val other, JDBCFetchConfiguration fetch) {
- _val1.calculateValue(sel, store, params, null, fetch);
- _val2.calculateValue(sel, store, params, null, fetch);
+ return Filters.convert(res.getObject(this, JavaSQLTypes.JDBC_DEFAULT,
+ null), getType());
}
- public void clearParameters() {
- _val1.clearParameters();
- _val2.clearParameters();
+ public void calculateValue(Select sel, ExpContext ctx, ExpState state,
+ Val other, ExpState otherState) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ _val1.calculateValue(sel, ctx, bstate.state1, null, null);
+ _val2.calculateValue(sel, ctx, bstate.state2, null, null);
}
- public int length() {
+ public int length(Select sel, ExpContext ctx, ExpState state) {
return 1;
}
- public void appendTo(SQLBuffer sql, int index, Select sel,
- JDBCStore store, Object[] params, JDBCFetchConfiguration fetch) {
- FilterValue str = new FilterValueImpl(_val1, sel, store, params, fetch);
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer sql, int index) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ FilterValue str = new FilterValueImpl(sel, ctx, bstate.state1, _val1);
FilterValue search;
FilterValue start = null;
if (_val2 instanceof Args) {
- Val[] args = ((Args) _val2).getVals();
- search =
- new FilterValueImpl(args[0], sel, store, params, fetch);
- start =
- new FilterValueImpl(args[1], sel, store, params, fetch);
+ FilterValue[] filts = ((Args) _val2).newFilterValues(sel, ctx,
+ bstate.state2);
+ search = filts[0];
+ start = filts[1];
} else
- search = new FilterValueImpl(_val2, sel, store, params, fetch);
+ search = new FilterValueImpl(sel, ctx, bstate.state2, _val2);
- store.getDBDictionary().indexOf(sql, str, search, start);
+ ctx.store.getDBDictionary().indexOf(sql, str, search, start);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InstanceofExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InstanceofExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InstanceofExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/InstanceofExpression.java Mon Sep 18 14:57:52 2006
@@ -17,8 +17,6 @@
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.meta.ClassMapping;
import org.apache.openjpa.jdbc.meta.Discriminator;
import org.apache.openjpa.jdbc.meta.FieldMapping;
@@ -39,10 +37,6 @@
private final PCPath _path;
private final Class _cls;
- private Joins _joins = null;
- private Discriminator _dsc = null;
- private Class _relCls = null;
- private ClassMapping _mapping = null;
/**
* Constructor. Supply path and class to test for.
@@ -52,96 +46,117 @@
_cls = cls;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
// note that we tell the path to go ahead and join to its related
// object (if any) in order to access its class indicator
- _path.initialize(sel, store, false);
- _path.joinRelation();
- _joins = _path.getJoins();
+ ExpState pathState = _path.initialize(sel, ctx, Val.JOIN_REL);
// does this path represent a relation? if not, what class
// is the field?
- ClassMapping rel = _path.getClassMapping();
- if (rel == null) {
- FieldMapping field = _path.getFieldMapping();
+ ClassMapping relMapping = _path.getClassMapping(pathState);
+ Class rel = null;
+ if (relMapping == null) {
+ FieldMapping field = _path.getFieldMapping(pathState);
switch (field.getTypeCode()) {
case JavaTypes.MAP:
if (_path.isKey())
- _relCls = field.getKey().getDeclaredType();
+ rel = field.getKey().getDeclaredType();
// no break
case JavaTypes.ARRAY:
case JavaTypes.COLLECTION:
- _relCls = field.getElement().getDeclaredType();
+ rel = field.getElement().getDeclaredType();
break;
default:
- _relCls = field.getDeclaredType();
+ rel = field.getDeclaredType();
}
} else
- _relCls = rel.getDescribedType();
+ rel = relMapping.getDescribedType();
// if the path represents a relation, get its class indicator and
// make sure it's joined down to its base type
- _dsc = (rel == null || !rel.getDescribedType().isAssignableFrom(_cls))
- ? null : rel.getDiscriminator();
- if (_dsc != null) {
+ Discriminator discrim = (relMapping == null
+ || !relMapping.getDescribedType().isAssignableFrom(_cls))
+ ? null : relMapping.getDiscriminator();
+ ClassMapping mapping = null;
+ Joins joins = pathState.joins;
+ if (discrim != null) {
// cache mapping for cast
- MappingRepository repos = store.getConfiguration().
+ MappingRepository repos = ctx.store.getConfiguration().
getMappingRepositoryInstance();
- _mapping = repos.getMapping(_cls, store.getContext().
+ mapping = repos.getMapping(_cls, ctx.store.getContext().
getClassLoader(), false);
// if not looking for a PC, don't bother with indicator
- if (_mapping == null)
- _dsc = null;
+ if (mapping == null)
+ discrim = null;
else {
- ClassMapping owner = _dsc.getClassMapping();
+ ClassMapping owner = discrim.getClassMapping();
ClassMapping from, to;
- if (rel.getDescribedType().isAssignableFrom
+ if (relMapping.getDescribedType().isAssignableFrom
(owner.getDescribedType())) {
from = owner;
- to = rel;
+ to = relMapping;
} else {
- from = rel;
+ from = relMapping;
to = owner;
}
for (; from != null && from != to;
from = from.getJoinablePCSuperclassMapping())
- _joins = from.joinSuperclass(_joins, false);
+ joins = from.joinSuperclass(joins, false);
}
}
+ return new InstanceofExpState(joins, pathState, mapping, discrim, rel);
}
- public void appendTo(SQLBuffer sql, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
+ /**
+ * Expression state.
+ */
+ private static class InstanceofExpState
+ extends ExpState {
+
+ public final ExpState pathState;
+ public final ClassMapping mapping;
+ public final Discriminator discrim;
+ public final Class rel;
+
+ public InstanceofExpState(Joins joins, ExpState pathState,
+ ClassMapping mapping, Discriminator discrim, Class rel) {
+ super(joins);
+ this.pathState = pathState;
+ this.mapping = mapping;
+ this.discrim = discrim;
+ this.rel = rel;
+ }
+ }
+
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer sql) {
// if no class indicator or a final class, just append true or false
// depending on whether the cast matches the expected type
- if (_dsc == null) {
- if (_cls.isAssignableFrom(_relCls))
+ InstanceofExpState istate = (InstanceofExpState) state;
+ if (istate.discrim == null) {
+ if (_cls.isAssignableFrom(istate.rel))
sql.append("1 = 1");
else
sql.append("1 <> 1");
} else {
- store.loadSubclasses(_dsc.getClassMapping());
- SQLBuffer buf = _dsc.getClassConditions(sel, _joins, _mapping,
- true);
+ ctx.store.loadSubclasses(istate.discrim.getClassMapping());
+ SQLBuffer buf = istate.discrim.getClassConditions(sel,
+ istate.joins, istate.mapping, true);
if (buf == null)
sql.append("1 = 1");
else
sql.append(buf);
}
- sel.append(sql, _joins);
- }
-
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- if (_dsc != null)
- sel.select(_dsc.getColumns(), _joins);
+ sel.append(sql, istate.joins);
}
- public Joins getJoins() {
- return _joins;
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ InstanceofExpState istate = (InstanceofExpState) state;
+ if (istate.discrim != null)
+ sel.select(istate.discrim.getColumns(), istate.joins);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IsEmptyExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IsEmptyExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IsEmptyExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IsEmptyExpression.java Mon Sep 18 14:57:52 2006
@@ -17,9 +17,6 @@
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
-import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.exps.ExpressionVisitor;
@@ -41,28 +38,22 @@
_val = val;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
- _val.initialize(sel, store, true);
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
+ return _val.initialize(sel, ctx, Val.NULL_CMP);
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- _val.calculateValue(sel, store, params, null, fetch);
- _val.appendIsEmpty(buf, sel, store, params, fetch);
- sel.append(buf, _val.getJoins());
- _val.clearParameters();
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf) {
+ _val.calculateValue(sel, ctx, state, null, null);
+ _val.appendIsEmpty(sel, ctx, state, buf);
+ sel.append(buf, state.joins);
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _val.selectColumns(sel, store, params, true, fetch);
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ _val.selectColumns(sel, ctx, state, true);
}
- public Joins getJoins() {
- return _val.getJoins();
- }
-
public void acceptVisit(ExpressionVisitor visitor) {
visitor.enter(this);
_val.acceptVisit(visitor);
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IsNotEmptyExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IsNotEmptyExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IsNotEmptyExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IsNotEmptyExpression.java Mon Sep 18 14:57:52 2006
@@ -17,9 +17,6 @@
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
-import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.exps.ExpressionVisitor;
@@ -41,26 +38,20 @@
_val = val;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
- _val.initialize(sel, store, true);
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
+ return _val.initialize(sel, ctx, Val.NULL_CMP);
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- _val.calculateValue(sel, store, params, null, fetch);
- _val.appendIsNotEmpty(buf, sel, store, params, fetch);
- sel.append(buf, _val.getJoins());
- _val.clearParameters();
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf) {
+ _val.calculateValue(sel, ctx, state, null, null);
+ _val.appendIsNotEmpty(sel, ctx, state, buf);
+ sel.append(buf, state.joins);
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _val.selectColumns(sel, store, params, true, fetch);
- }
-
- public Joins getJoins() {
- return _val.getJoins();
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ _val.selectColumns(sel, ctx, state, true);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/JDBCExpressionFactory.java Mon Sep 18 14:57:52 2006
@@ -19,6 +19,7 @@
import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
import org.apache.openjpa.jdbc.kernel.JDBCStoreQuery;
import org.apache.openjpa.jdbc.meta.ClassMapping;
+import org.apache.openjpa.jdbc.meta.JavaSQLTypes;
import org.apache.openjpa.jdbc.sql.DBDictionary;
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.exps.AggregateListener;
@@ -34,7 +35,6 @@
import org.apache.openjpa.kernel.exps.Value;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.meta.ClassMetaData;
-import org.apache.openjpa.util.ImplHelper;
import org.apache.openjpa.util.UserException;
/**
@@ -48,12 +48,10 @@
implements ExpressionFactory {
private static final Val NULL = new Null();
- private static final Val CURRENT_DATE =
- new CurrentDate(CurrentDate.DATE);
- private static final Val CURRENT_TIME =
- new CurrentDate(CurrentDate.TIME);
+ private static final Val CURRENT_DATE = new CurrentDate(JavaSQLTypes.DATE);
+ private static final Val CURRENT_TIME = new CurrentDate(JavaSQLTypes.TIME);
private static final Val CURRENT_TIMESTAMP =
- new CurrentDate(CurrentDate.TIMESTAMP);
+ new CurrentDate(JavaSQLTypes.TIMESTAMP);
private static final Localizer _loc = Localizer.forPackage
(JDBCExpressionFactory.class);
@@ -69,56 +67,10 @@
}
/**
- * Evaluate the expression, returning a SQL select with the proper
- * conditions. Use {@link #select} to then select the data.
- * This method returns null if there is no query criteria. It is
- * synchronized because factories may be cached and used by multiple
- * queries at the same time.
+ * Use to create SQL select.
*/
- public synchronized Select evaluate(JDBCStoreQuery q,
- JDBCFetchConfiguration fetch, QueryExpressions exps, Object[] params) {
- // figure out proper cache level based on parameters
- int level = getCacheLevel(q, params);
- return _cons.evaluate(q.getStore(), null, null, exps, params,
- level, fetch);
- }
-
- /**
- * Return the cache level for this query. The level depends on whether
- * the query uses any params, as well as the types and values of those
- * params.
- */
- private int getCacheLevel(JDBCStoreQuery q, Object[] params) {
- // if there are no parameters, we can cache the full SQL
- if (params.length == 0)
- return SelectConstructor.CACHE_FULL;
-
- // if there is a null PC parameter, we have to cache differently
- // since it affects joins
- LinkedMap types = null;
- Class type;
- for (int i = 0; i < params.length; i++) {
- if (params[i] != null)
- continue;
-
- if (types == null)
- types = q.getContext().getParameterTypes();
-
- type = (Class) types.getValue(i);
- if (type != null && ImplHelper.isManagedType(type))
- return SelectConstructor.CACHE_NULL;
- }
- return SelectConstructor.CACHE_JOINS;
- }
-
- /**
- * Select the data for this query.
- */
- public void select(JDBCStoreQuery q, ClassMapping mapping,
- boolean subclasses, Select sel, QueryExpressions exps,
- Object[] params, JDBCFetchConfiguration fetch, int eager) {
- _cons.select(q.getStore(), mapping, subclasses, sel, exps,
- params, fetch, eager);
+ public SelectConstructor getSelectConstructor() {
+ return _cons;
}
public Expression emptyExpression() {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Lit.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Lit.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Lit.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Lit.java Mon Sep 18 14:57:52 2006
@@ -15,8 +15,6 @@
*/
package org.apache.openjpa.jdbc.kernel.exps;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.Filters;
@@ -33,8 +31,6 @@
private Object _val;
private int _ptype;
- private Object _sqlVal = null;
- private int _otherLen = 0;
/**
* Constructor. Supply literal value.
@@ -56,7 +52,7 @@
return _ptype;
}
- public Object getValue() {
+ public Object getValue() {
return _val;
}
@@ -64,24 +60,42 @@
_val = val;
}
- public void calculateValue(Select sel, JDBCStore store,
- Object[] params, Val other, JDBCFetchConfiguration fetch) {
- super.calculateValue(sel, store, params, other, fetch);
+ public Object getValue(Object[] params) {
+ return getValue();
+ }
+
+ public ExpState initialize(Select sel, ExpContext ctx, int flags) {
+ return new LitExpState();
+ }
+
+ /**
+ * Expression state.
+ */
+ private static class LitExpState
+ extends ConstExpState {
+
+ public Object sqlValue;
+ public int otherLength;
+ }
+
+ public void calculateValue(Select sel, ExpContext ctx, ExpState state,
+ Val other, ExpState otherState) {
+ super.calculateValue(sel, ctx, state, other, otherState);
+ LitExpState lstate = (LitExpState) state;
if (other != null) {
- _sqlVal = other.toDataStoreValue(_val, store);
- _otherLen = other.length();
+ lstate.sqlValue = other.toDataStoreValue(sel, ctx, otherState,_val);
+ lstate.otherLength = other.length(sel, ctx, otherState);
} else
- _sqlVal = _val;
+ lstate.sqlValue = _val;
}
- public void appendTo(SQLBuffer sql, int index, Select sel,
- JDBCStore store, Object[] params, JDBCFetchConfiguration fetch) {
- if (_otherLen > 1)
- sql.appendValue(((Object[]) _sqlVal)[index], getColumn(index));
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer sql, int index) {
+ LitExpState lstate = (LitExpState) state;
+ if (lstate.otherLength > 1)
+ sql.appendValue(((Object[]) lstate.sqlValue)[index],
+ lstate.getColumn(index));
else
- sql.appendValue(_sqlVal, getColumn(index));
- }
-
- public void clearParameters() {
+ sql.appendValue(lstate.sqlValue, lstate.getColumn(index));
}
}
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/MatchesExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/MatchesExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/MatchesExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/MatchesExpression.java Mon Sep 18 14:57:52 2006
@@ -17,10 +17,7 @@
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.schema.Column;
-import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.exps.ExpressionVisitor;
@@ -39,7 +36,6 @@
private final String _single;
private final String _multi;
private final String _escape;
- private Joins _joins = null;
/**
* Constructor. Supply values.
@@ -53,26 +49,26 @@
_escape = escape;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
- _val.initialize(sel, store, false);
- _const.initialize(sel, store, false);
- _joins = sel.and(_val.getJoins(), _const.getJoins());
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
+ ExpState s1 = _val.initialize(sel, ctx, 0);
+ ExpState s2 = _const.initialize(sel, ctx, 0);
+ return new BinaryOpExpState(sel.and(s1.joins, s2.joins), s1, s2);
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- _val.calculateValue(sel, store, params, _const, fetch);
- _const.calculateValue(sel, store, params, _val, fetch);
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ _val.calculateValue(sel, ctx, bstate.state1, _const, bstate.state2);
+ _const.calculateValue(sel, ctx, bstate.state2, _val, bstate.state1);
Column col = null;
if (_val instanceof PCPath) {
- Column[] cols = ((PCPath) _val).getColumns();
+ Column[] cols = ((PCPath) _val).getColumns(bstate.state1);
if (cols.length == 1)
col = cols[0];
}
- Object o = _const.getValue();
+ Object o = _const.getValue(ctx, bstate.state2);
if (o == null)
buf.append("1 <> 1");
else {
@@ -92,7 +88,7 @@
// append target
if (ignoreCase)
buf.append("LOWER(");
- _val.appendTo(buf, 0, sel, store, params, fetch);
+ _val.appendTo(sel, ctx, bstate.state1, buf, 0);
if (ignoreCase)
buf.append(")");
@@ -101,27 +97,20 @@
// with '%' and '.' with '_'
str = Strings.replace(str, _multi, "%");
str = Strings.replace(str, _single, "_");
-
buf.append(" LIKE ").appendValue(str, col);
// escape out characters by using the database's escape sequence
if (_escape != null)
buf.append(" ESCAPE '").append(_escape).append("'");
}
- sel.append(buf, _joins);
-
- _val.clearParameters();
- _const.clearParameters();
- }
-
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _val.selectColumns(sel, store, params, true, fetch);
- _const.selectColumns(sel, store, params, true, fetch);
+ sel.append(buf, state.joins);
}
- public Joins getJoins() {
- return _joins;
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ _val.selectColumns(sel, ctx, bstate.state1, true);
+ _const.selectColumns(sel, ctx, bstate.state2, true);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Math.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Math.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Math.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Math.java Mon Sep 18 14:57:52 2006
@@ -17,10 +17,7 @@
import java.sql.SQLException;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.meta.JavaSQLTypes;
-import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.Result;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
@@ -45,7 +42,6 @@
private final Val _val1;
private final Val _val2;
private final String _op;
- private Joins _joins = null;
private ClassMetaData _meta = null;
private Class _cast = null;
@@ -66,10 +62,6 @@
_meta = meta;
}
- public boolean isVariable() {
- return false;
- }
-
public Class getType() {
if (_cast != null)
return _cast;
@@ -82,78 +74,63 @@
_cast = type;
}
- public void initialize(Select sel, JDBCStore store,
- boolean nullTest) {
- _val1.initialize(sel, store, false);
- _val2.initialize(sel, store, false);
- _joins = sel.and(_val1.getJoins(), _val2.getJoins());
- }
-
- public Joins getJoins() {
- return _joins;
+ public ExpState initialize(Select sel, ExpContext ctx, int flags) {
+ ExpState s1 = _val1.initialize(sel, ctx, 0);
+ ExpState s2 = _val2.initialize(sel, ctx, 0);
+ return new BinaryOpExpState(sel.and(s1.joins, s2.joins), s1, s2);
}
- public Object toDataStoreValue(Object val, JDBCStore store) {
- return val;
+ public void select(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ sel.select(newSQLBuffer(sel, ctx, state), this);
}
- public void select(Select sel, JDBCStore store, Object[] params,
- boolean pks, JDBCFetchConfiguration fetch) {
- sel.select(newSQLBuffer(sel, store, params, fetch), this);
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ _val1.selectColumns(sel, ctx, bstate.state1, true);
+ _val2.selectColumns(sel, ctx, bstate.state2, true);
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _val1.selectColumns(sel, store, params, true, fetch);
- _val2.selectColumns(sel, store, params, true, fetch);
+ public void groupBy(Select sel, ExpContext ctx, ExpState state) {
+ sel.groupBy(newSQLBuffer(sel, ctx, state));
}
- public void groupBy(Select sel, JDBCStore store, Object[] params,
- JDBCFetchConfiguration fetch) {
- sel.groupBy(newSQLBuffer(sel, store, params, fetch));
+ public void orderBy(Select sel, ExpContext ctx, ExpState state,
+ boolean asc) {
+ sel.orderBy(newSQLBuffer(sel, ctx, state), asc, false);
}
- public void orderBy(Select sel, JDBCStore store, Object[] params,
- boolean asc, JDBCFetchConfiguration fetch) {
- sel.orderBy(newSQLBuffer(sel, store, params, fetch), asc, false);
- }
-
- private SQLBuffer newSQLBuffer(Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- calculateValue(sel, store, params, null, fetch);
- SQLBuffer buf = new SQLBuffer(store.getDBDictionary());
- appendTo(buf, 0, sel, store, params, fetch);
- clearParameters();
+ private SQLBuffer newSQLBuffer(Select sel, ExpContext ctx, ExpState state) {
+ calculateValue(sel, ctx, state, null, null);
+ SQLBuffer buf = new SQLBuffer(ctx.store.getDBDictionary());
+ appendTo(sel, ctx, state, buf, 0);
return buf;
}
- public Object load(Result res, JDBCStore store,
- JDBCFetchConfiguration fetch)
+ public Object load(ExpContext ctx, ExpState state, Result res)
throws SQLException {
- return Filters.convert(res.getObject(this,
- JavaSQLTypes.JDBC_DEFAULT, null), getType());
- }
-
- public void calculateValue(Select sel, JDBCStore store,
- Object[] params, Val other, JDBCFetchConfiguration fetch) {
- _val1.calculateValue(sel, store, params, _val2, fetch);
- _val2.calculateValue(sel, store, params, _val1, fetch);
+ return Filters.convert(res.getObject(this, JavaSQLTypes.JDBC_DEFAULT,
+ null), getType());
}
- public void clearParameters() {
- _val1.clearParameters();
- _val2.clearParameters();
+ public void calculateValue(Select sel, ExpContext ctx, ExpState state,
+ Val other, ExpState otherState) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ _val1.calculateValue(sel, ctx, bstate.state1, _val2, bstate.state2);
+ _val2.calculateValue(sel, ctx, bstate.state2, _val1, bstate.state1);
}
- public int length() {
+ public int length(Select sel, ExpContext ctx, ExpState state) {
return 1;
}
- public void appendTo(SQLBuffer sql, int index, Select sel,
- JDBCStore store, Object[] params, JDBCFetchConfiguration fetch) {
- store.getDBDictionary().mathFunction(sql, _op,
- new FilterValueImpl(_val1, sel, store, params, fetch),
- new FilterValueImpl(_val2, sel, store, params, fetch));
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer sql, int index) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ ctx.store.getDBDictionary().mathFunction(sql, _op,
+ new FilterValueImpl(sel, ctx, bstate.state1, _val1),
+ new FilterValueImpl(sel, ctx, bstate.state2, _val2));
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotContainsExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotContainsExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotContainsExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotContainsExpression.java Mon Sep 18 14:57:52 2006
@@ -17,10 +17,7 @@
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.sql.DBDictionary;
-import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.exps.ExpressionVisitor;
@@ -35,7 +32,6 @@
implements Exp {
private final Exp _exp;
- private Map _contains = null;
/**
* Constructor. Supply the expression to negate.
@@ -44,37 +40,48 @@
_exp = exp;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
- _contains = contains;
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
+ return new NotContainsExpState(contains);
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- DBDictionary dict = store.getDBDictionary();
+ /**
+ * Expression state.
+ */
+ private static class NotContainsExpState
+ extends ExpState {
+
+ public final Map contains;
+
+ public NotContainsExpState(Map contains) {
+ this.contains = contains;
+ }
+ }
+
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf) {
+ DBDictionary dict = ctx.store.getDBDictionary();
dict.assertSupport(dict.supportsSubselect, "SupportsSubselect");
- Select sub = store.getSQLFactory().newSelect();
+ Select sub = ctx.store.getSQLFactory().newSelect();
sub.setParent(sel, null);
- _exp.initialize(sub, store, params, _contains);
- sub.where(sub.and(null, _exp.getJoins()));
+ ExpState estate = _exp.initialize(sub, ctx, ((NotContainsExpState)
+ state).contains);
+ sub.where(sub.and(null, estate.joins));
SQLBuffer where = new SQLBuffer(dict).append("(");
- _exp.appendTo(where, sub, store, params, fetch);
+ _exp.appendTo(sub, ctx, estate, where);
if (where.getSQL().length() > 1)
sub.where(where.append(")"));
buf.append("0 = ");
- buf.appendCount(sub, fetch);
- }
-
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _exp.selectColumns(sel, store, params, true, fetch);
+ buf.appendCount(sub, ctx.fetch);
}
- public Joins getJoins() {
- return null;
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ ExpState estate = _exp.initialize(sel, ctx, ((NotContainsExpState)
+ state).contains);
+ _exp.selectColumns(sel, ctx, estate, true);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotEqualExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotEqualExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotEqualExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotEqualExpression.java Mon Sep 18 14:57:52 2006
@@ -15,8 +15,6 @@
*/
package org.apache.openjpa.jdbc.kernel.exps;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
@@ -35,39 +33,41 @@
super(val1, val2);
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch, boolean val1Null,
- boolean val2Null) {
+ public void appendTo(Select sel, ExpContext ctx, BinaryOpExpState bstate,
+ SQLBuffer buf, boolean val1Null, boolean val2Null) {
if (val1Null && val2Null)
buf.appendValue(null).append(" IS NOT ").appendValue(null);
else if (val1Null || val2Null) {
Val val = (val1Null) ? getValue2() : getValue1();
+ ExpState state = (val1Null) ? bstate.state2 : bstate.state1;
if (!isDirectComparison()) {
- int len = val.length();
+ int len = val.length(sel, ctx, state);
for (int i = 0; i < len; i++) {
if (i > 0)
buf.append(" AND ");
- val.appendTo(buf, i, sel, store, params, fetch);
+ val.appendTo(sel, ctx, state, buf, i);
buf.append(" IS NOT ").appendValue(null);
}
} else
- val.appendIsNotNull(buf, sel, store, params, fetch);
+ val.appendIsNotNull(sel, ctx, state, buf);
} else {
Val val1 = getValue1();
Val val2 = getValue2();
- if (val1.length() == 1 && val2.length() == 1) {
- store.getDBDictionary().comparison(buf, "<>",
- new FilterValueImpl(val1, sel, store, params, fetch),
- new FilterValueImpl(val2, sel, store, params, fetch));
+ if (val1.length(sel, ctx, bstate.state1) == 1
+ && val2.length(sel, ctx, bstate.state2) == 1) {
+ ctx.store.getDBDictionary().comparison(buf, "<>",
+ new FilterValueImpl(sel, ctx, bstate.state1, val1),
+ new FilterValueImpl(sel, ctx, bstate.state2, val2));
} else {
- int len = java.lang.Math.max(val1.length(), val2.length());
+ int len = java.lang.Math.max(val1.length(sel, ctx,
+ bstate.state1), val2.length(sel, ctx, bstate.state2));
buf.append("(");
for (int i = 0; i < len; i++) {
if (i > 0)
buf.append(" OR ");
- val1.appendTo(buf, i, sel, store, params, fetch);
+ val1.appendTo(sel, ctx, bstate.state1, buf, i);
buf.append(" <> ");
- val2.appendTo(buf, i, sel, store, params, fetch);
+ val2.appendTo(sel, ctx, bstate.state2, buf, i);
}
buf.append(")");
}
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/NotExpression.java Mon Sep 18 14:57:52 2006
@@ -17,8 +17,6 @@
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
@@ -33,7 +31,6 @@
implements Exp {
private final Exp _exp;
- private Joins _joins = null;
/**
* Constructor. Supply the expression to negate.
@@ -42,26 +39,35 @@
_exp = exp;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
- _exp.initialize(sel, store, params, contains);
- _joins = sel.or(_exp.getJoins(), null);
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
+ ExpState state = _exp.initialize(sel, ctx, contains);
+ return new NotExpState(sel.or(state.joins, null), state);
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- buf.append("NOT (");
- _exp.appendTo(buf, sel, store, params, fetch);
- buf.append(")");
+ /**
+ * Expression state.
+ */
+ private static class NotExpState
+ extends ExpState {
+
+ public final ExpState state;
+
+ public NotExpState(Joins joins, ExpState state) {
+ super(joins);
+ this.state = state;
+ }
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _exp.selectColumns(sel, store, params, pks, fetch);
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf) {
+ buf.append("NOT (");
+ _exp.appendTo(sel, ctx, ((NotExpState) state).state, buf);
+ buf.append(")");
}
- public Joins getJoins() {
- return _joins;
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ _exp.selectColumns(sel, ctx, ((NotExpState) state).state, pks);
}
public void acceptVisit(ExpressionVisitor visitor) {
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Null.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Null.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Null.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Null.java Mon Sep 18 14:57:52 2006
@@ -15,8 +15,6 @@
*/
package org.apache.openjpa.jdbc.kernel.exps;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
@@ -35,19 +33,16 @@
public void setImplicitType(Class type) {
}
- public Object getValue() {
+ public Object getValue(Object[] params) {
return null;
}
- public void calculateValue(Select sel, JDBCStore store,
- Object[] params, Val other, JDBCFetchConfiguration fetch) {
+ public void calculateValue(Select sel, ExpContext ctx, ExpState state,
+ Val other, ExpState otherState) {
}
- public void appendTo(SQLBuffer sql, int index, Select sel,
- JDBCStore store, Object[] params, JDBCFetchConfiguration fetch) {
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer sql, int index) {
sql.appendValue(null);
- }
-
- public void clearParameters() {
}
}
Modified: incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/OrExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/OrExpression.java?view=diff&rev=447584&r1=447583&r2=447584
==============================================================================
--- incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/OrExpression.java (original)
+++ incubator/openjpa/sandboxes/OPENJPA-24/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/OrExpression.java Mon Sep 18 14:57:52 2006
@@ -19,9 +19,6 @@
import java.util.Iterator;
import java.util.Map;
-import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
-import org.apache.openjpa.jdbc.kernel.JDBCStore;
-import org.apache.openjpa.jdbc.sql.Joins;
import org.apache.openjpa.jdbc.sql.SQLBuffer;
import org.apache.openjpa.jdbc.sql.Select;
import org.apache.openjpa.kernel.exps.ExpressionVisitor;
@@ -36,7 +33,6 @@
private final Exp _exp1;
private final Exp _exp2;
- private Joins _joins = null;
/**
* Constructor. Supply the expressions to combine.
@@ -46,56 +42,53 @@
_exp2 = exp2;
}
- public void initialize(Select sel, JDBCStore store,
- Object[] params, Map contains) {
+ public ExpState initialize(Select sel, ExpContext ctx, Map contains) {
// when OR'ing expressions each expression gets its own copy of the
// contains counts, cause it's OK for each to use the same aliases
Map contains2 = null;
if (contains != null)
contains2 = new HashMap(contains);
- _exp1.initialize(sel, store, params, contains);
- _exp2.initialize(sel, store, params, contains2);
- _joins = sel.or(_exp1.getJoins(), _exp2.getJoins());
+ ExpState s1 = _exp1.initialize(sel, ctx, contains);
+ ExpState s2 = _exp2.initialize(sel, ctx, contains2);
+ ExpState ret = new BinaryOpExpState(sel.or(s1.joins, s2.joins), s1, s2);
if (contains == null)
- return;
+ return ret;
// combine the contains counts from the copy into the main map
Map.Entry entry;
Integer val1, val2;
- for (Iterator itr = contains2.entrySet().iterator();
- itr.hasNext();) {
+ for (Iterator itr = contains2.entrySet().iterator(); itr.hasNext();) {
entry = (Map.Entry) itr.next();
val2 = (Integer) entry.getValue();
val1 = (Integer) contains.get(entry.getKey());
if (val1 == null || val2.intValue() > val1.intValue())
contains.put(entry.getKey(), val2);
}
+ return ret;
}
- public void appendTo(SQLBuffer buf, Select sel, JDBCStore store,
- Object[] params, JDBCFetchConfiguration fetch) {
- boolean paren = _joins != null && !_joins.isEmpty();
+ public void appendTo(Select sel, ExpContext ctx, ExpState state,
+ SQLBuffer buf) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ boolean paren = bstate.joins != null && !bstate.joins.isEmpty();
if (paren)
buf.append("(");
- _exp1.appendTo(buf, sel, store, params, fetch);
+ _exp1.appendTo(sel, ctx, bstate.state1, buf);
buf.append(" OR ");
- _exp2.appendTo(buf, sel, store, params, fetch);
+ _exp2.appendTo(sel, ctx, bstate.state2, buf);
if (paren)
buf.append(")");
- sel.append(buf, _joins);
+ sel.append(buf, bstate.joins);
}
- public void selectColumns(Select sel, JDBCStore store,
- Object[] params, boolean pks, JDBCFetchConfiguration fetch) {
- _exp1.selectColumns(sel, store, params, pks, fetch);
- _exp2.selectColumns(sel, store, params, pks, fetch);
- }
-
- public Joins getJoins() {
- return _joins;
+ public void selectColumns(Select sel, ExpContext ctx, ExpState state,
+ boolean pks) {
+ BinaryOpExpState bstate = (BinaryOpExpState) state;
+ _exp1.selectColumns(sel, ctx, bstate.state1, pks);
+ _exp2.selectColumns(sel, ctx, bstate.state2, pks);
}
public void acceptVisit(ExpressionVisitor visitor) {