Refactor of query plan hash - add HashQueryPlan, HashQuery etc

This commit is contained in:
Rob Bygrave
2014-01-21 00:48:38 +13:00
parent 6bd8c2bd05
commit f287205421
36 changed files with 499 additions and 300 deletions
@@ -2,12 +2,13 @@ package com.avaje.ebeaninternal.server.expression;
import com.avaje.ebean.Expression;
import com.avaje.ebean.event.BeanQueryRequest;
import com.avaje.ebeaninternal.api.HashQueryPlanBuilder;
import com.avaje.ebeaninternal.api.ManyWhereJoins;
import com.avaje.ebeaninternal.api.SpiExpression;
import com.avaje.ebeaninternal.api.SpiExpressionRequest;
import com.avaje.ebeaninternal.server.deploy.BeanDescriptor;
final class NotExpression implements SpiExpression, LuceneAwareExpression {
final class NotExpression implements SpiExpression {
private static final long serialVersionUID = 5648926732402355781L;
@@ -36,16 +37,13 @@ final class NotExpression implements SpiExpression, LuceneAwareExpression {
/**
* Based on the expression.
*/
public int queryAutoFetchHash() {
int hc = NotExpression.class.getName().hashCode();
hc = hc * 31 + exp.queryAutoFetchHash();
return hc;
public void queryAutoFetchHash(HashQueryPlanBuilder builder) {
builder.add(NotExpression.class);
exp.queryAutoFetchHash(builder);
}
public int queryPlanHash(BeanQueryRequest<?> request) {
int hc = NotExpression.class.getName().hashCode();
hc = hc * 31 + exp.queryPlanHash(request);
return hc;
public void queryPlanHash(BeanQueryRequest<?> request, HashQueryPlanBuilder builder) {
queryAutoFetchHash(builder);
}
public int queryBindHash() {