Refactor rename BindHash to BindValuesKey

This commit is contained in:
rbygrave
2021-08-11 13:19:44 +12:00
parent fd2e542c0b
commit ec7c7048db
40 changed files with 204 additions and 202 deletions
@@ -1,29 +0,0 @@
package io.ebeaninternal.api;
import java.util.ArrayList;
import java.util.List;
/**
* BindHash implementation.
*/
public class BindHash {
private final List<Object> values = new ArrayList<>();
public BindHash update(Object value) {
values.add(value);
return this;
}
@Override
public boolean equals(Object obj) {
return obj instanceof BindHash && ((BindHash) obj).values.equals(values);
}
@Override
public int hashCode() {
return values.hashCode();
}
}
@@ -50,10 +50,10 @@ public class BindParams implements Serializable {
positionedParameters.clear();
}
public void queryBindHash(BindHash hash) {
hash.update(positionedParameters.size());
for (Param positionedParameter : positionedParameters) {
positionedParameter.queryBindHash(hash);
public void queryBindHash(BindValuesKey key) {
key.add(positionedParameters.size());
for (Param param : positionedParameters) {
param.queryBindHash(key);
}
}
@@ -425,8 +425,8 @@ public class BindParams implements Serializable {
return isInParam == param.isInParam && isOutParam == param.isOutParam && type == param.type && Objects.equals(inValue, param.inValue);
}
void queryBindHash(BindHash hash) {
hash.update(isInParam).update(isOutParam).update(type).update(inValue);
void queryBindHash(BindValuesKey key) {
key.add(isInParam).add(isOutParam).add(type).add(inValue);
}
/**
@@ -0,0 +1,35 @@
package io.ebeaninternal.api;
import java.util.ArrayList;
import java.util.List;
/**
* BindValues used for L2 query cache key matching.
* <p>
* The equals/hashCode implementation must meet the requirement that the query bind values
* match for L2 query cache hit (given the query plan hash is already a match).
*/
public class BindValuesKey {
private final List<Object> values = new ArrayList<>();
/**
* Add a bind value.
*/
public BindValuesKey add(Object value) {
values.add(value);
return this;
}
@Override
public boolean equals(Object obj) {
return obj instanceof BindValuesKey && ((BindValuesKey) obj).values.equals(values);
}
@Override
public int hashCode() {
return values.hashCode();
}
}
@@ -6,15 +6,14 @@ package io.ebeaninternal.api;
public class HashQuery {
private final CQueryPlanKey planHash;
private final BindHash bindHash;
private final BindValuesKey bindValuesKey;
/**
* Create the HashQuery.
*/
public HashQuery(CQueryPlanKey planHash, BindHash bindHash) {
public HashQuery(CQueryPlanKey planHash, BindValuesKey bindValuesKey) {
this.planHash = planHash;
this.bindHash = bindHash;
this.bindValuesKey = bindValuesKey;
}
@Override
@@ -25,7 +24,7 @@ public class HashQuery {
@Override
public int hashCode() {
int hc = 92821 * planHash.hashCode();
hc = 92821 * hc + bindHash.hashCode();
hc = 92821 * hc + bindValuesKey.hashCode();
return hc;
}
@@ -37,8 +36,7 @@ public class HashQuery {
if (!(obj instanceof HashQuery)) {
return false;
}
HashQuery e = (HashQuery) obj;
return e.bindHash.equals(bindHash) && e.planHash.equals(planHash);
return e.bindValuesKey.equals(bindValuesKey) && e.planHash.equals(planHash);
}
}
@@ -56,7 +56,7 @@ public interface SpiExpression extends Expression {
/**
* Return the hash value for the values that will be bound.
*/
void queryBindHash(BindHash hash);
void queryBindHash(BindValuesKey key);
/**
* Return true if the expression is the same with respect to bind values.
@@ -635,7 +635,7 @@ public interface SpiQuery<T> extends Query<T>, SpiQueryFetch, TxnProfileEventCod
* query).
* </p>
*/
void queryBindHash(BindHash hash);
void queryBindHash(BindValuesKey key);
/**
* Identifies queries that are exactly the same including bind variables.
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -38,7 +38,7 @@ public abstract class AbstractTextExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
public void queryBindHash(BindValuesKey key) {
// do nothing, only execute against document store
};
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -123,13 +123,11 @@ class AllEqualsExpression extends NonPrepareExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(propMap.size());
public void queryBindHash(BindValuesKey key) {
key.add(propMap.size());
for (Object value : propMap.values()) {
hash.update(value);
key.add(value);
}
}
@Override
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -50,10 +50,10 @@ public class ArrayContainsExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(values.length);
public void queryBindHash(BindValuesKey key) {
key.add(values.length);
for (Object value : values) {
hash.update(value);
key.add(value);
}
}
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -34,8 +34,8 @@ public class ArrayIsEmptyExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(empty);
public void queryBindHash(BindValuesKey key) {
key.add(empty);
}
@Override
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -50,8 +50,8 @@ class BetweenExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(low()).update(high());
public void queryBindHash(BindValuesKey key) {
key.add(low()).add(high());
}
@Override
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.util.SplitName;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -96,8 +96,8 @@ class BetweenPropertyExpression extends NonPrepareExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(val());
public void queryBindHash(BindValuesKey key) {
key.add(val());
}
@Override
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -40,8 +40,8 @@ class BitwiseExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(flags).update(match);
public void queryBindHash(BindValuesKey key) {
key.add(flags).add(match);
}
@Override
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
import io.ebeaninternal.server.el.ElPropertyValue;
@@ -70,8 +70,8 @@ class CaseInsensitiveEqualExpression extends AbstractValueExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(val());
public void queryBindHash(BindValuesKey key) {
key.add(val());
}
@Override
@@ -5,7 +5,7 @@ import io.ebean.LikeType;
import io.ebean.bean.EntityBean;
import io.ebean.event.BeanQueryRequest;
import io.ebean.util.SplitName;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiExpression;
@@ -242,10 +242,10 @@ public class DefaultExampleExpression implements SpiExpression, ExampleExpressio
* Return a hash for the actual bind values used.
*/
@Override
public void queryBindHash(BindHash hash) {
hash.update(list.size());
for (SpiExpression aList : list) {
aList.queryBindHash(hash);
public void queryBindHash(BindValuesKey key) {
key.add(list.size());
for (SpiExpression expr : list) {
expr.queryBindHash(key);
}
}
@@ -26,7 +26,7 @@ import io.ebean.search.MultiMatch;
import io.ebean.search.TextCommonTerms;
import io.ebean.search.TextQueryString;
import io.ebean.search.TextSimple;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiExpression;
@@ -679,10 +679,10 @@ public class DefaultExpressionList<T> implements SpiExpressionList<T> {
* Calculate a hash based on the expressions.
*/
@Override
public void queryBindHash(BindHash hash) {
hash.update(list.size());
for (SpiExpression aList : list) {
aList.queryBindHash(hash);
public void queryBindHash(BindValuesKey key) {
key.add(list.size());
for (SpiExpression expr : list) {
expr.queryBindHash(key);
}
}
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiEbeanServer;
@@ -92,8 +92,8 @@ class ExistsQueryExpression implements SpiExpression, UnsupportedDocStoreExpress
}
@Override
public void queryBindHash(BindHash hash) {
subQuery.queryBindHash(hash);
public void queryBindHash(BindValuesKey key) {
subQuery.queryBindHash(key);
}
@Override
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -78,8 +78,8 @@ class IdExpression extends NonPrepareExpression implements SpiExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(value);
public void queryBindHash(BindValuesKey key) {
key.add(value);
}
@Override
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -134,10 +134,10 @@ public class IdInExpression extends NonPrepareExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(idCollection.size());
public void queryBindHash(BindValuesKey key) {
key.add(idCollection.size());
for (Object elem : idCollection) {
hash.update(elem);
key.add(elem);
}
}
@@ -2,7 +2,7 @@ package io.ebeaninternal.server.expression;
import io.ebean.bean.EntityBean;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -177,10 +177,10 @@ class InExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(bindValues.size());
public void queryBindHash(BindValuesKey key) {
key.add(bindValues.size());
for (Object bindValue : bindValues) {
hash.update(bindValue);
key.add(bindValue);
}
}
@@ -3,7 +3,7 @@ package io.ebeaninternal.server.expression;
import io.ebean.Pairs;
import io.ebean.Pairs.Entry;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -125,10 +125,10 @@ class InPairsExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(entries.size());
public void queryBindHash(BindValuesKey key) {
key.add(entries.size());
for (Pairs.Entry entry : entries) {
hash.update(entry.getA()).update(entry.getB());
key.add(entry.getA()).add(entry.getB());
}
}
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiEbeanServer;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -73,8 +73,8 @@ class InQueryExpression extends AbstractExpression implements UnsupportedDocStor
}
@Override
public void queryBindHash(BindHash hash) {
subQuery.queryBindHash(hash);
public void queryBindHash(BindValuesKey key) {
subQuery.queryBindHash(key);
}
@Override
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -48,8 +48,8 @@ class InRangeExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(low()).update(high());
public void queryBindHash(BindValuesKey key) {
key.add(low()).add(high());
}
@Override
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -104,7 +104,7 @@ class IsEmptyExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
public void queryBindHash(BindValuesKey key) {
// no bind values
}
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -84,8 +84,8 @@ class JsonPathExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(value).update(upperValue);
public void queryBindHash(BindValuesKey key) {
key.add(value).add(upperValue);
}
@Override
@@ -25,7 +25,7 @@ import io.ebean.search.MultiMatch;
import io.ebean.search.TextCommonTerms;
import io.ebean.search.TextQueryString;
import io.ebean.search.TextSimple;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiExpression;
@@ -216,9 +216,9 @@ class JunctionExpression<T> implements SpiJunction<T>, SpiExpression, Expression
}
@Override
public void queryBindHash(BindHash hash) {
public void queryBindHash(BindValuesKey key) {
for (SpiExpression expr : exprList.internalList()) {
expr.queryBindHash(hash);
expr.queryBindHash(key);
}
}
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.LikeType;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
import io.ebeaninternal.server.el.ElPropertyValue;
@@ -71,8 +71,8 @@ class LikeExpression extends AbstractValueExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(strValue());
public void queryBindHash(BindValuesKey key) {
key.add(strValue());
}
@Override
@@ -3,7 +3,7 @@ package io.ebeaninternal.server.expression;
import io.ebean.Expression;
import io.ebean.Junction;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiExpression;
@@ -169,8 +169,8 @@ abstract class LogicExpression implements SpiExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(expOne).update(expTwo);
public void queryBindHash(BindValuesKey key) {
key.add(expOne).add(expTwo);
}
@Override
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.LikeType;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
import io.ebeaninternal.server.el.ElPropertyValue;
@@ -55,8 +55,8 @@ class NativeILikeExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(val);
public void queryBindHash(BindValuesKey key) {
key.add(val);
}
@Override
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -80,8 +80,8 @@ class NestedPathWrapperExpression implements SpiExpression {
}
@Override
public void queryBindHash(BindHash hash) {
delegate.queryBindHash(hash);
public void queryBindHash(BindValuesKey key) {
delegate.queryBindHash(key);
}
@Override
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiExpression;
@@ -75,7 +75,7 @@ class NoopExpression implements SpiExpression {
}
@Override
public void queryBindHash(BindHash hash) {
public void queryBindHash(BindValuesKey key) {
// no bind values
}
@@ -2,7 +2,7 @@ package io.ebeaninternal.server.expression;
import io.ebean.Expression;
import io.ebean.event.BeanQueryRequest;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.NaturalKeyQueryData;
import io.ebeaninternal.api.SpiExpression;
@@ -100,8 +100,8 @@ final class NotExpression implements SpiExpression {
}
@Override
public void queryBindHash(BindHash hash) {
exp.queryBindHash(hash);
public void queryBindHash(BindValuesKey key) {
exp.queryBindHash(key);
}
@Override
@@ -1,7 +1,7 @@
package io.ebeaninternal.server.expression;
import io.ebean.util.SplitName;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -95,7 +95,7 @@ class NullExpression extends AbstractExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(notNull);
public void queryBindHash(BindValuesKey key) {
key.add(notNull);
}
}
@@ -1,6 +1,6 @@
package io.ebeaninternal.server.expression;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.ManyWhereJoins;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
@@ -74,10 +74,10 @@ class RawExpression extends NonPrepareExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(values.length);
public void queryBindHash(BindValuesKey key) {
key.add(values.length);
for (Object value : values) {
hash.update(value);
key.add(value);
}
}
@@ -5,7 +5,7 @@ import io.ebean.plugin.ExpressionPath;
import io.ebeaninternal.api.SpiExpression;
import io.ebeaninternal.api.SpiExpressionRequest;
import io.ebeaninternal.server.el.ElPropertyValue;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.NaturalKeyQueryData;
import java.io.IOException;
@@ -122,8 +122,8 @@ public class SimpleExpression extends AbstractValueExpression {
}
@Override
public void queryBindHash(BindHash hash) {
hash.update(value());
public void queryBindHash(BindValuesKey key) {
key.add(value());
}
@Override
@@ -1225,12 +1225,12 @@ public class DefaultOrmQuery<T> extends AbstractQuery implements SpiQuery<T> {
* </p>
*/
@Override
public void queryBindHash(BindHash hash) {
hash.update(id);
if (whereExpressions != null) whereExpressions.queryBindHash(hash);
if (havingExpressions != null) havingExpressions.queryBindHash(hash);
if (bindParams != null) bindParams.queryBindHash(hash);
hash.update(asOf).update(versionsStart).update(versionsEnd);
public void queryBindHash(BindValuesKey key) {
key.add(id);
if (whereExpressions != null) whereExpressions.queryBindHash(key);
if (havingExpressions != null) havingExpressions.queryBindHash(key);
if (bindParams != null) bindParams.queryBindHash(key);
key.add(asOf).add(versionsStart).add(versionsEnd);
}
/**
@@ -1244,9 +1244,9 @@ public class DefaultOrmQuery<T> extends AbstractQuery implements SpiQuery<T> {
public HashQuery queryHash() {
// calculateQueryPlanHash is called just after potential AutoTune tuning
// so queryPlanHash is calculated well before this method is called
BindHash hash = new BindHash();
queryBindHash(hash);
return new HashQuery(queryPlanKey, hash);
BindValuesKey bindKey = new BindValuesKey();
queryBindHash(bindKey);
return new HashQuery(queryPlanKey, bindKey);
}
@Override
@@ -3,7 +3,7 @@ package io.ebeaninternal.server.expression;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
public class RawExpressionTest extends BaseExpressionTest {
@@ -62,16 +62,16 @@ public class RawExpressionTest extends BaseExpressionTest {
}
public void assert_queryBindHash_isDifferent(RawExpression exp0, RawExpression exp1) {
assertThat(getHash(exp0)).isNotEqualTo(getHash(exp1));
assertThat(bindKey(exp0)).isNotEqualTo(bindKey(exp1));
}
public void assert_queryBindHash_isSame(RawExpression exp0, RawExpression exp1) {
assertThat(getHash(exp0)).isEqualTo(getHash(exp1));
assertThat(bindKey(exp0)).isEqualTo(bindKey(exp1));
}
private int getHash(RawExpression query) {
BindHash hash = new BindHash();
query.queryBindHash(hash);
return hash.hashCode();
private BindValuesKey bindKey(RawExpression query) {
BindValuesKey bindValuesKey = new BindValuesKey();
query.queryBindHash(bindValuesKey);
return bindValuesKey;
}
}
@@ -1,38 +0,0 @@
package io.ebeaninternal.server.querydefn;
import io.ebeaninternal.api.BindHash;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class BindHashTest {
@Test
public void update_with_null() {
BindHash hash = new BindHash();
hash.update(1).update(null).update("hello");
BindHash hash2 = new BindHash();
hash2.update(1).update(null).update("hello");
assertThat(hash).isEqualTo(hash2);
}
@Test
public void notEqual() {
BindHash hash = new BindHash();
hash.update(1).update(null).update("hello");
BindHash hash2 = new BindHash();
hash2.update(1).update("hello");
BindHash hash3 = new BindHash();
hash2.update(1).update(null);
assertThat(hash).isNotEqualTo(hash2);
assertThat(hash).isNotEqualTo(hash3);
assertThat(hash2).isNotEqualTo(hash3);
}
}
@@ -0,0 +1,38 @@
package io.ebeaninternal.server.querydefn;
import io.ebeaninternal.api.BindValuesKey;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
public class BindValuesKeyTest {
@Test
public void update_with_null() {
BindValuesKey hash = new BindValuesKey();
hash.add(1).add(null).add("hello");
BindValuesKey hash2 = new BindValuesKey();
hash2.add(1).add(null).add("hello");
assertThat(hash).isEqualTo(hash2);
}
@Test
public void notEqual() {
BindValuesKey hash = new BindValuesKey();
hash.add(1).add(null).add("hello");
BindValuesKey hash2 = new BindValuesKey();
hash2.add(1).add("hello");
BindValuesKey hash3 = new BindValuesKey();
hash2.add(1).add(null);
assertThat(hash).isNotEqualTo(hash2);
assertThat(hash).isNotEqualTo(hash3);
assertThat(hash2).isNotEqualTo(hash3);
}
}
@@ -4,7 +4,7 @@ package io.ebeaninternal.server.querydefn;
import io.ebean.BaseTestCase;
import io.ebean.CacheMode;
import io.ebean.Ebean;
import io.ebeaninternal.api.BindHash;
import io.ebeaninternal.api.BindValuesKey;
import io.ebeaninternal.api.SpiQuery;
import io.ebeaninternal.server.core.OrmQueryRequest;
import org.junit.Test;
@@ -63,7 +63,7 @@ public class DefaultOrmQueryTest extends BaseTestCase {
prepare(q1, q2);
assertThat(q1.createQueryPlanKey()).isNotEqualTo(q2.createQueryPlanKey());
assertThat(getHash(q1)).isNotEqualTo(getHash(q2));
assertThat(bindKey(q1)).isNotEqualTo(bindKey(q2));
}
@Test
@@ -74,7 +74,7 @@ public class DefaultOrmQueryTest extends BaseTestCase {
prepare(q1, q2);
assertThat(q1.createQueryPlanKey()).isEqualTo(q2.createQueryPlanKey());
assertThat(getHash(q1)).isNotEqualTo(getHash(q2));
assertThat(bindKey(q1)).isNotEqualTo(bindKey(q2));
}
@Test
@@ -85,7 +85,7 @@ public class DefaultOrmQueryTest extends BaseTestCase {
prepare(q1, q2);
assertThat(q1.createQueryPlanKey()).isEqualTo(q2.createQueryPlanKey());
assertThat(getHash(q1)).isEqualTo(getHash(q2));
assertThat(bindKey(q1)).isEqualTo(bindKey(q2));
}
@Test
@@ -112,9 +112,9 @@ public class DefaultOrmQueryTest extends BaseTestCase {
q2.prepare(r2);
}
private int getHash(DefaultOrmQuery<Order> query) {
BindHash hash = new BindHash();
query.queryBindHash(hash);
return hash.hashCode();
private BindValuesKey bindKey(DefaultOrmQuery<Order> query) {
BindValuesKey key = new BindValuesKey();
query.queryBindHash(key);
return key;
}
}