From 9f91d8bcf996a345b5ea05983f767db61bfca8bb Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Wed, 27 Dec 2017 23:23:01 +1300 Subject: [PATCH 1/2] No effective change - modify specific test to run with Postgres specific syntax --- .../org/tests/query/aggregation/TestAggregationCount.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/tests/query/aggregation/TestAggregationCount.java b/src/test/java/org/tests/query/aggregation/TestAggregationCount.java index 8d9bb5705..778db90ef 100644 --- a/src/test/java/org/tests/query/aggregation/TestAggregationCount.java +++ b/src/test/java/org/tests/query/aggregation/TestAggregationCount.java @@ -101,7 +101,11 @@ public class TestAggregationCount extends BaseTestCase { assertThat(list).isNotEmpty(); String sql = sqlOf(query, 5); - assertThat(sql).contains("select distinct t0.id, t0.name, count(u1.id), sum(u1.units), sum(u1.units * u1.amount), sum(u1.units), t0.name from tevent_one t0 "); + if (isH2()) { + assertThat(sql).contains("select distinct t0.id, t0.name, count(u1.id), sum(u1.units), sum(u1.units * u1.amount), sum(u1.units), t0.name from tevent_one t0 "); + } else if (isPostgres()) { + assertThat(sql).contains("t0.name, count(u1.id), sum(u1.units), sum(u1.units * u1.amount), sum(u1.units), t0.name from tevent_one t0 "); + } assertThat(sql).contains("from tevent_one t0 join tevent_many u1 on u1.event_id = t0.id "); assertThat(sql).contains(" group by t0.id, t0.name "); assertThat(sql).contains(" order by sum(u1.units), t0.name"); From 7110f4a59b772508f06889e1a29bccae0ba36389 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Thu, 28 Dec 2017 16:17:00 +1300 Subject: [PATCH 2/2] No effective change - remove unused HashQueryPlan etc --- .../io/ebeaninternal/api/HashQueryPlan.java | 57 ----------- .../api/HashQueryPlanBuilder.java | 97 ------------------- .../server/querydefn/DefaultOrmQuery.java | 1 - .../api/HashQueryPlanBuilderTest.java | 39 -------- .../ebeaninternal/api/HashQueryPlanTest.java | 45 --------- 5 files changed, 239 deletions(-) delete mode 100644 src/main/java/io/ebeaninternal/api/HashQueryPlan.java delete mode 100644 src/main/java/io/ebeaninternal/api/HashQueryPlanBuilder.java delete mode 100644 src/test/java/io/ebeaninternal/api/HashQueryPlanBuilderTest.java delete mode 100644 src/test/java/io/ebeaninternal/api/HashQueryPlanTest.java diff --git a/src/main/java/io/ebeaninternal/api/HashQueryPlan.java b/src/main/java/io/ebeaninternal/api/HashQueryPlan.java deleted file mode 100644 index 49cfb755d..000000000 --- a/src/main/java/io/ebeaninternal/api/HashQueryPlan.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.ebeaninternal.api; - -/** - * A hash for a query plan. - */ -public class HashQueryPlan { - - private final String rawSql; - - private final int planHash; - - private final int bindCount; - - public HashQueryPlan(String rawSql, int planHash, int bindCount) { - this.rawSql = rawSql; - this.planHash = planHash; - this.bindCount = bindCount; - } - - @Override - public String toString() { - return planHash + ":" + bindCount + (rawSql != null ? ":r" : ""); - } - - /** - * Return as a partial key. For rawSql hash the sql is part of the key and as such - * needs to be included in order to have a complete key. Typically the MD5 of the sql - * can be used as a shot form proxy for the actual sql. - */ - public String getPartialKey() { - return planHash + "_" + bindCount; - } - - @Override - public int hashCode() { - int hc = planHash; - hc = hc * 92821 + bindCount; - hc = hc * 92821 + (rawSql == null ? 0 : rawSql.hashCode()); - return hc; - } - - @Override - public boolean equals(Object obj) { - if (obj == this) { - return true; - } - if (!(obj instanceof HashQueryPlan)) { - return false; - } - - HashQueryPlan e = (HashQueryPlan) obj; - //noinspection StringEquality - return e.planHash == planHash - && e.bindCount == bindCount - && ((e.rawSql == rawSql) || (e.rawSql != null && e.rawSql.equals(rawSql))); - } -} diff --git a/src/main/java/io/ebeaninternal/api/HashQueryPlanBuilder.java b/src/main/java/io/ebeaninternal/api/HashQueryPlanBuilder.java deleted file mode 100644 index 71ccb9f36..000000000 --- a/src/main/java/io/ebeaninternal/api/HashQueryPlanBuilder.java +++ /dev/null @@ -1,97 +0,0 @@ -package io.ebeaninternal.api; - -import java.util.Set; - -/** - * Used to build HashQueryPlan instances. - */ -public class HashQueryPlanBuilder { - - private int planHash; - - private int bindCount; - - public HashQueryPlanBuilder() { - this.planHash = 92821; - } - - @Override - public String toString() { - return planHash + ":" + bindCount; - } - - /** - * Add a class to the hash calculation. - */ - public HashQueryPlanBuilder add(Class cls) { - planHash = planHash * 92821 + cls.getName().hashCode(); - return this; - } - - /** - * Add an object to the hash calculation. - */ - public HashQueryPlanBuilder add(Object object) { - planHash = planHash * 92821 + (object == null ? 0 : object.hashCode()); - return this; - } - - /** - * Add the set with order being important. - */ - public HashQueryPlanBuilder addOrdered(Set set) { - if (set == null) { - add(false); - } else { - add(true); - for (Object o : set) { - add(o); - } - } - return this; - } - - /** - * Add an integer to the hash calculation. - */ - public HashQueryPlanBuilder add(int hashValue) { - planHash = planHash * 92821 + (hashValue); - return this; - } - - /** - * Add a boolean to the hash calculation. - */ - public HashQueryPlanBuilder add(boolean booleanValue) { - planHash = planHash * 92821 + (booleanValue ? 92821 : 0); - return this; - } - - /** - * Add a number to the bind count for the hash. - */ - public void bind(int extraBindCount) { - bindCount += extraBindCount; - } - - public void bindIfNotNull(Object someValue) { - if (someValue != null) { - bindCount++; - } - } - - /** - * Build and return the calculated HashQueryPlan. - */ - public String build() { - return planHash + "_" + bindCount; - } - - public int getPlanHash() { - return planHash; - } - - public int getBindCount() { - return bindCount; - } -} diff --git a/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java b/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java index 2f77afc5f..9652c133d 100644 --- a/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java +++ b/src/main/java/io/ebeaninternal/server/querydefn/DefaultOrmQuery.java @@ -1054,7 +1054,6 @@ public class DefaultOrmQuery implements SpiQuery { // calculateQueryPlanHash is called just after potential AutoTune tuning // so queryPlanHash is calculated well before this method is called int hc = queryBindHash(); - return new HashQuery(queryPlanKey, hc); } diff --git a/src/test/java/io/ebeaninternal/api/HashQueryPlanBuilderTest.java b/src/test/java/io/ebeaninternal/api/HashQueryPlanBuilderTest.java deleted file mode 100644 index 9aa3bcf00..000000000 --- a/src/test/java/io/ebeaninternal/api/HashQueryPlanBuilderTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.ebeaninternal.api; - - -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -public class HashQueryPlanBuilderTest { - - int combine(int v0, int v1) { - return new HashQueryPlanBuilder().add(v0).add(v1).build().hashCode(); - } - - @Test - public void test_pair_0_1() { - assertThat(combine(0, 31)).isNotEqualTo(combine(1, 0)); - } - - @Test - public void test_pair_0_10_adjust_0() { - assertThat(combine(0, 310)).isNotEqualTo(combine(10, 0)); - } - - @Test - public void test_pair_0_10_adjust_10() { - assertThat(combine(0, 320)).isNotEqualTo(combine(10, 10)); - } - - @Test - public void test_pair_0_10_adjust_40() { - assertThat(combine(0, 350)).isNotEqualTo(combine(10, 40)); - } - - @Test - public void test_pair_0_10_adjust_90() { - assertThat(combine(0, 400)).isNotEqualTo(combine(10, 90)); - } - -} diff --git a/src/test/java/io/ebeaninternal/api/HashQueryPlanTest.java b/src/test/java/io/ebeaninternal/api/HashQueryPlanTest.java deleted file mode 100644 index 9d4a6b244..000000000 --- a/src/test/java/io/ebeaninternal/api/HashQueryPlanTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.ebeaninternal.api; - - -import org.junit.Test; - -import static org.assertj.core.api.Assertions.assertThat; - -public class HashQueryPlanTest { - - private HashQueryPlan hqp(String raw, int plan, int bind) { - return new HashQueryPlan(raw, plan, bind); - } - - private int hc(String raw, int plan, int bind) { - return hqp(raw, plan, bind).hashCode(); - } - - @Test - public void testEquals() throws Exception { - - assertThat(hqp("foo", 10, 7)).isEqualTo(hqp("foo", 10, 7)); - assertThat(hqp("foo", 10, 7)).isNotEqualTo(hqp("foo", 11, 7)); - assertThat(hqp("foo", 10, 7)).isNotEqualTo(hqp("foo", 9, 7)); - assertThat(hqp("foo", 10, 7)).isNotEqualTo(hqp("foo", 10, 8)); - assertThat(hqp("foo", 10, 7)).isNotEqualTo(hqp("foo", 10, 6)); - assertThat(hqp("foo", 10, 7)).isNotEqualTo(hqp("bar", 10, 6)); - assertThat(hqp("foo", 10, 7)).isNotEqualTo(hqp(null, 10, 7)); - assertThat(hqp(null, 10, 7)).isNotEqualTo(hqp("foo", 10, 7)); - assertThat(hqp(null, 10, 7)).isEqualTo(hqp(null, 10, 7)); - } - - @Test - public void testHashCode() throws Exception { - - assertThat(hc("foo", 10, 7)).isEqualTo(hc("foo", 10, 7)); - assertThat(hc("foo", 10, 7)).isNotEqualTo(hc("foo", 11, 7)); - assertThat(hc("foo", 10, 7)).isNotEqualTo(hc("foo", 9, 7)); - assertThat(hc("foo", 10, 7)).isNotEqualTo(hc("foo", 10, 8)); - assertThat(hc("foo", 10, 7)).isNotEqualTo(hc("foo", 10, 6)); - assertThat(hc("foo", 10, 7)).isNotEqualTo(hc("bar", 10, 6)); - assertThat(hc("foo", 10, 7)).isNotEqualTo(hc(null, 10, 7)); - assertThat(hc(null, 10, 7)).isNotEqualTo(hc("foo", 10, 7)); - assertThat(hc(null, 10, 7)).isEqualTo(hc(null, 10, 7)); - } -}