summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian S. O'Neill <bronee@gmail.com>2008-04-06 20:13:22 +0000
committerBrian S. O'Neill <bronee@gmail.com>2008-04-06 20:13:22 +0000
commit1452d2d947c6257fa5328488a30d8059fb36d1ba (patch)
tree3116e4c33fa48924f63ff28f318e821d300c86f5
parent72ab61c43f291f987970b73f97e13b51ac229582 (diff)
Added support for internal query hints.
-rw-r--r--src/test/java/com/amazon/carbonado/cursor/TestCursors.java40
-rw-r--r--src/test/java/com/amazon/carbonado/qe/TestCompositeScore.java76
-rw-r--r--src/test/java/com/amazon/carbonado/qe/TestIndexedQueryAnalyzer.java35
-rw-r--r--src/test/java/com/amazon/carbonado/qe/TestJoinedQueryExecutor.java7
-rw-r--r--src/test/java/com/amazon/carbonado/qe/TestUnionQueryAnalyzer.java36
-rw-r--r--src/test/java/com/amazon/carbonado/repo/toy/ToyStorage.java24
6 files changed, 169 insertions, 49 deletions
diff --git a/src/test/java/com/amazon/carbonado/cursor/TestCursors.java b/src/test/java/com/amazon/carbonado/cursor/TestCursors.java
index a6c25aa..79a10e8 100644
--- a/src/test/java/com/amazon/carbonado/cursor/TestCursors.java
+++ b/src/test/java/com/amazon/carbonado/cursor/TestCursors.java
@@ -113,6 +113,26 @@ public class TestCursors extends TestCase {
compareElements(c);
c = new SkipCursor<Element>(createElements(1, 2, 3, 4, 5), 6);
compareElements(c);
+
+ // call skip on cursor
+ c = new SkipCursor<Element>(createElements(1, 2, 3, 4, 5), 2);
+ assertEquals(1, c.skipNext(1));
+ compareElements(c, 4, 5);
+ c = new SkipCursor<Element>(createElements(1, 2, 3, 4, 5), 2);
+ assertEquals(2, c.skipNext(2));
+ compareElements(c, 5);
+ c = new SkipCursor<Element>(createElements(1, 2, 3, 4, 5), 2);
+ assertEquals(3, c.skipNext(3));
+ compareElements(c);
+ c = new SkipCursor<Element>(createElements(1, 2, 3, 4, 5), 2);
+ assertEquals(3, c.skipNext(4));
+ compareElements(c);
+ c = new SkipCursor<Element>(createElements(1, 2, 3, 4, 5), 100);
+ assertEquals(0, c.skipNext(4));
+ compareElements(c);
+ c = new SkipCursor<Element>(createElements(1, 2, 3, 4, 5), 0);
+ assertEquals(4, c.skipNext(4));
+ compareElements(c, 5);
}
public void testLimit() throws Exception {
@@ -136,6 +156,26 @@ public class TestCursors extends TestCase {
compareElements(c, 1, 2, 3, 4, 5);
c = new LimitCursor<Element>(createElements(1, 2, 3, 4, 5), 6);
compareElements(c, 1, 2, 3, 4, 5);
+
+ // call skip on cursor
+ c = new LimitCursor<Element>(createElements(1, 2, 3, 4, 5), 3);
+ assertEquals(1, c.skipNext(1));
+ compareElements(c, 2, 3);
+ c = new LimitCursor<Element>(createElements(1, 2, 3, 4, 5), 3);
+ assertEquals(2, c.skipNext(2));
+ compareElements(c, 3);
+ c = new LimitCursor<Element>(createElements(1, 2, 3, 4, 5), 3);
+ assertEquals(3, c.skipNext(3));
+ compareElements(c);
+ c = new LimitCursor<Element>(createElements(1, 2, 3, 4, 5), 3);
+ assertEquals(3, c.skipNext(4));
+ compareElements(c);
+ c = new LimitCursor<Element>(createElements(1, 2, 3, 4, 5), 100);
+ assertEquals(4, c.skipNext(4));
+ compareElements(c, 5);
+ c = new LimitCursor<Element>(createElements(1, 2, 3, 4, 5), 0);
+ assertEquals(0, c.skipNext(4));
+ compareElements(c);
}
public void testUnion() throws Exception {
diff --git a/src/test/java/com/amazon/carbonado/qe/TestCompositeScore.java b/src/test/java/com/amazon/carbonado/qe/TestCompositeScore.java
new file mode 100644
index 0000000..74e0122
--- /dev/null
+++ b/src/test/java/com/amazon/carbonado/qe/TestCompositeScore.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2007 Amazon Technologies, Inc. or its affiliates.
+ * Amazon, Amazon.com and Carbonado are trademarks or registered trademarks
+ * of Amazon Technologies, Inc. or its affiliates. All rights reserved.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.amazon.carbonado.qe;
+
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import com.amazon.carbonado.info.StorableIndex;
+
+import com.amazon.carbonado.stored.StorableTestBasic;
+
+/**
+ *
+ *
+ * @author Brian S O'Neill
+ */
+public class TestCompositeScore extends TestCase {
+ public static void main(String[] args) {
+ junit.textui.TestRunner.run(suite());
+ }
+
+ public static TestSuite suite() {
+ return new TestSuite(TestCompositeScore.class);
+ }
+
+ public TestCompositeScore(String name) {
+ super(name);
+ }
+
+ public void testRowRangeHint() throws Exception {
+ StorableIndex<StorableTestBasic> ix_1, ix_2;
+ ix_1 = TestFilteringScore.makeIndex(StorableTestBasic.class, "id").clustered(true);
+ ix_2 = TestFilteringScore.makeIndex(StorableTestBasic.class, "stringProp");
+
+ OrderingList<StorableTestBasic> ordering = TestOrderingScore
+ .makeOrdering(StorableTestBasic.class, "stringProp");
+
+ CompositeScore<StorableTestBasic> score_1 = CompositeScore.evaluate(ix_1, null, ordering);
+ CompositeScore<StorableTestBasic> score_2 = CompositeScore.evaluate(ix_2, null, ordering);
+
+ int result_1 = CompositeScore.fullComparator().compare(score_1, score_2);
+
+ // Favor full scan and sort.
+ assertTrue(result_1 < 0);
+
+ QueryHints hints = QueryHints.emptyHints().with(QueryHint.CONSUME_SLICE);
+
+ int result_2 = CompositeScore.fullComparator(hints).compare(score_1, score_2);
+
+ // Favor ordered index.
+ assertTrue(result_2 > 0);
+
+ hints = hints.without(QueryHint.CONSUME_SLICE);
+
+ int result_3 = CompositeScore.fullComparator(hints).compare(score_1, score_2);
+
+ // Favor full scan without hint.
+ assertTrue(result_3 < 0);
+ }
+}
diff --git a/src/test/java/com/amazon/carbonado/qe/TestIndexedQueryAnalyzer.java b/src/test/java/com/amazon/carbonado/qe/TestIndexedQueryAnalyzer.java
index 9316b34..ce773ec 100644
--- a/src/test/java/com/amazon/carbonado/qe/TestIndexedQueryAnalyzer.java
+++ b/src/test/java/com/amazon/carbonado/qe/TestIndexedQueryAnalyzer.java
@@ -44,8 +44,6 @@ import com.amazon.carbonado.filter.Filter;
import com.amazon.carbonado.filter.FilterValues;
import com.amazon.carbonado.filter.PropertyFilter;
-import com.amazon.carbonado.repo.toy.ToyRepository;
-
import com.amazon.carbonado.stored.Address;
import com.amazon.carbonado.stored.Order;
import com.amazon.carbonado.stored.OverIndexedUserAddress;
@@ -82,7 +80,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
IndexedQueryAnalyzer iqa = new IndexedQueryAnalyzer(Address.class, RepoAccess.INSTANCE);
Filter<Address> filter = Filter.filterFor(Address.class, "addressZip = ?");
filter = filter.bind();
- IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null, null);
assertFalse(result.handlesAnything());
assertEquals(filter, result.getCompositeScore().getFilteringScore().getRemainderFilter());
@@ -95,7 +93,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
IndexedQueryAnalyzer iqa = new IndexedQueryAnalyzer(Address.class, RepoAccess.INSTANCE);
Filter<Address> filter = Filter.filterFor(Address.class, "addressID = ?");
filter = filter.bind();
- IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertEquals(filter, result.getCompositeScore().getFilteringScore().getIdentityFilter());
@@ -108,7 +106,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
IndexedQueryAnalyzer iqa = new IndexedQueryAnalyzer(Shipment.class, RepoAccess.INSTANCE);
Filter<Shipment> filter = Filter.filterFor(Shipment.class, "shipmentID = ?");
filter = filter.bind();
- IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertEquals(filter, result.getCompositeScore().getFilteringScore().getIdentityFilter());
@@ -118,7 +116,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
filter = Filter.filterFor(Shipment.class, "orderID = ?");
filter = filter.bind();
- result = iqa.analyze(filter, null);
+ result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertEquals(filter, result.getCompositeScore().getFilteringScore().getIdentityFilter());
@@ -129,7 +127,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
filter = Filter.filterFor(Shipment.class, "orderID > ?");
filter = filter.bind();
- result = iqa.analyze(filter, null);
+ result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertTrue(result.getCompositeScore().getFilteringScore().hasRangeStart());
@@ -148,7 +146,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
IndexedQueryAnalyzer iqa = new IndexedQueryAnalyzer(Shipment.class, RepoAccess.INSTANCE);
Filter<Shipment> filter = Filter.filterFor(Shipment.class, "order.orderTotal >= ?");
filter = filter.bind();
- IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertTrue(result.getCompositeScore().getFilteringScore().hasRangeStart());
@@ -164,7 +162,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor
(Shipment.class, "shipmentNotes = ? & order.orderTotal >= ?");
filter = filter.bind();
- IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertTrue(result.getCompositeScore().getFilteringScore().hasRangeStart());
@@ -183,7 +181,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor
(Shipment.class, "orderID >= ? & order.orderTotal >= ?");
filter = filter.bind();
- IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertTrue(result.getCompositeScore().getFilteringScore().hasRangeStart());
@@ -200,7 +198,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor
(Shipment.class, "order.address.addressState = ?");
filter = filter.bind();
- IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertEquals(filter, result.getCompositeScore().getFilteringScore().getIdentityFilter());
@@ -217,7 +215,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
(Shipment.class, "order.address.addressState = ? & order.address.addressZip = ?");
FilterValues<Shipment> values = filter.initialFilterValues();
filter = values.getFilter();
- IndexedQueryAnalyzer<Shipment>.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer<Shipment>.Result result = iqa.analyze(filter, null, null);
assertTrue(result.handlesAnything());
assertEquals(Filter.filterFor(Shipment.class, "order.address.addressState = ?").bind(),
@@ -231,7 +229,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
QueryExecutor<Shipment> joinExec = JoinedQueryExecutor.build
(RepoAccess.INSTANCE,
- result.getForeignProperty(), result.getFilter(), result.getOrdering());
+ result.getForeignProperty(), result.getFilter(), result.getOrdering(), null);
FilterValues<Shipment> fv = values.with("WA").with("12345");
@@ -273,7 +271,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
filter = values.getFilter();
OrderingList<Shipment> ordering = OrderingList
.get(Shipment.class, "order.address.addressCity", "shipmentNotes", "order.orderTotal");
- IndexedQueryAnalyzer.Result result = iqa.analyze(filter, ordering);
+ IndexedQueryAnalyzer.Result result = iqa.analyze(filter, ordering, null);
assertTrue(result.handlesAnything());
assertEquals(Filter.filterFor(Shipment.class, "order.address.addressState = ?").bind(),
@@ -285,7 +283,7 @@ public class TestIndexedQueryAnalyzer extends TestCase {
QueryExecutor<Shipment> joinExec = JoinedQueryExecutor.build
(RepoAccess.INSTANCE,
- result.getForeignProperty(), result.getFilter(), result.getOrdering());
+ result.getForeignProperty(), result.getFilter(), result.getOrdering(), null);
FilterValues<Shipment> fv =
values.with("WA").with(45).with("12345").with(100).with("Z").with(2);
@@ -346,7 +344,8 @@ public class TestIndexedQueryAnalyzer extends TestCase {
(OverIndexedUserAddress.class, "country > ? & city != ? & state = ? & postalCode = ?");
FilterValues<OverIndexedUserAddress> values = filter.initialFilterValues();
filter = values.getFilter();
- IndexedQueryAnalyzer<OverIndexedUserAddress>.Result result = iqa.analyze(filter, null);
+ IndexedQueryAnalyzer<OverIndexedUserAddress>.Result result =
+ iqa.analyze(filter, null, null);
QueryExecutor<OverIndexedUserAddress> qe = result.createExecutor();
@@ -398,7 +397,9 @@ public class TestIndexedQueryAnalyzer extends TestCase {
return this;
}
- public QueryExecutor<S> executor(Filter<S> filter, OrderingList<S> ordering) {
+ public QueryExecutor<S> executor(Filter<S> filter, OrderingList<S> ordering,
+ QueryHints hints)
+ {
Iterable<S> iterable = Collections.emptyList();
QueryExecutor<S> exec = new IterableQueryExecutor<S>
diff --git a/src/test/java/com/amazon/carbonado/qe/TestJoinedQueryExecutor.java b/src/test/java/com/amazon/carbonado/qe/TestJoinedQueryExecutor.java
index 324af75..a6c133c 100644
--- a/src/test/java/com/amazon/carbonado/qe/TestJoinedQueryExecutor.java
+++ b/src/test/java/com/amazon/carbonado/qe/TestJoinedQueryExecutor.java
@@ -93,7 +93,7 @@ public class TestJoinedQueryExecutor extends TestQueryExecutor {
OrderingList.get(UserInfo.class, "+address.country");
QueryExecutor<UserInfo> userExecutor = JoinedQueryExecutor.build
- (repoAccess, targetToSourceProperty, targetFilter, targetOrdering);
+ (repoAccess, targetToSourceProperty, targetFilter, targetOrdering, null);
//System.out.println();
//userExecutor.printPlan(System.out, 0, null);
@@ -176,7 +176,7 @@ public class TestJoinedQueryExecutor extends TestQueryExecutor {
targetOrdering = OrderingList.get(UserInfo.class, "+address.neighbor.country");
userExecutor = JoinedQueryExecutor.build
- (repoAccess, targetToSourceProperty, targetFilter, targetOrdering);
+ (repoAccess, targetToSourceProperty, targetFilter, targetOrdering, null);
assertEquals("address.neighbor.state = ?", userExecutor.getFilter().toString());
assertEquals("+address.neighbor.country", userExecutor.getOrdering().get(0).toString());
@@ -219,7 +219,8 @@ public class TestJoinedQueryExecutor extends TestQueryExecutor {
return this;
}
- public QueryExecutor<S> executor(Filter<S> filter, OrderingList<S> ordering)
+ public QueryExecutor<S> executor(Filter<S> filter, OrderingList<S> ordering,
+ QueryHints hints)
throws RepositoryException
{
Storage<S> storage = mRepository.storageFor(mType);
diff --git a/src/test/java/com/amazon/carbonado/qe/TestUnionQueryAnalyzer.java b/src/test/java/com/amazon/carbonado/qe/TestUnionQueryAnalyzer.java
index 69a0aa4..8b1ce5a 100644
--- a/src/test/java/com/amazon/carbonado/qe/TestUnionQueryAnalyzer.java
+++ b/src/test/java/com/amazon/carbonado/qe/TestUnionQueryAnalyzer.java
@@ -33,8 +33,6 @@ import com.amazon.carbonado.filter.Filter;
import com.amazon.carbonado.filter.FilterValues;
import com.amazon.carbonado.filter.PropertyFilter;
-import com.amazon.carbonado.repo.toy.ToyRepository;
-
import com.amazon.carbonado.stored.Address;
import com.amazon.carbonado.stored.Order;
import com.amazon.carbonado.stored.OverIndexedUserAddress;
@@ -73,7 +71,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
public void testNullFilter() throws Exception {
UnionQueryAnalyzer uqa =
new UnionQueryAnalyzer(Shipment.class, TestIndexedQueryAnalyzer.RepoAccess.INSTANCE);
- UnionQueryAnalyzer.Result result = uqa.analyze(null, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(null, null, null);
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
assertEquals(1, subResults.size());
@@ -84,7 +82,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
new UnionQueryAnalyzer(Shipment.class, TestIndexedQueryAnalyzer.RepoAccess.INSTANCE);
Filter<Shipment> filter = Filter.filterFor(Shipment.class, "shipmentID = ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
assertEquals(1, subResults.size());
@@ -97,7 +95,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
filter = filter.bind();
OrderingList<Shipment> orderings =
makeOrdering(Shipment.class, "~shipmentID", "~orderID");
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, orderings);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, orderings, null);
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
assertEquals(1, subResults.size());
@@ -113,7 +111,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor(Shipment.class,
"shipmentID = ? | orderID = ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
assertEquals(OrderingList.get(Shipment.class, "+shipmentID"), result.getTotalOrdering());
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
@@ -146,7 +144,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor(Shipment.class,
"shipmentID = ? | orderID > ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
assertEquals(OrderingList.get(Shipment.class, "+shipmentID"), result.getTotalOrdering());
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
@@ -179,7 +177,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor(Shipment.class,
"shipmentID = ? | orderID > ? & orderID <= ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
assertEquals(OrderingList.get(Shipment.class, "+shipmentID"), result.getTotalOrdering());
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
@@ -223,7 +221,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
filter = filter.bind();
OrderingList<Shipment> orderings =
makeOrdering(Shipment.class, "~shipmentID", "~orderID");
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, orderings);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, orderings, null);
assertEquals(OrderingList.get(Shipment.class, "+shipmentID", "+orderID"),
result.getTotalOrdering());
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
@@ -269,7 +267,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
(Shipment.class,
"shipmentID = ? & (shipmentID = ? | orderID = ?)");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
assertEquals(1, subResults.size());
@@ -297,7 +295,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
(OverIndexedUserAddress.class,
"city = ? & (city = ? | line1 = ?)");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
List<IndexedQueryAnalyzer<OverIndexedUserAddress>.Result> subResults =
result.getSubResults();
@@ -329,7 +327,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor
(Shipment.class, "shipmentNotes = ? | shipperID = ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
assertEquals(1, subResults.size());
@@ -351,7 +349,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor
(Shipment.class, "shipmentNotes = ? | orderID = ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
assertEquals(1, subResults.size());
@@ -373,7 +371,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<Shipment> filter = Filter.filterFor
(Shipment.class, "shipmentNotes = ? | orderID = ? & order.orderTotal > ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
List<IndexedQueryAnalyzer<Shipment>.Result> subResults = result.getSubResults();
assertEquals(2, subResults.size());
@@ -406,7 +404,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<StorableTestBasic> filter = Filter.filterFor
(StorableTestBasic.class, "doubleProp = ? | (stringProp = ? & intProp = ?) | id > ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
assertEquals(OrderingList.get(StorableTestBasic.class, "+id"), result.getTotalOrdering());
QueryExecutor<StorableTestBasic> exec = result.createExecutor();
@@ -446,7 +444,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<StorableTestBasic> filter = Filter.filterFor
(StorableTestBasic.class, "doubleProp = ? | stringProp = ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
assertEquals(OrderingList.get(StorableTestBasic.class, "+doubleProp", "+stringProp"),
result.getTotalOrdering());
@@ -485,7 +483,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<StorableTestBasic> filter = Filter.filterFor
(StorableTestBasic.class, "stringProp = ? | stringProp = ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
assertEquals(OrderingList.get(StorableTestBasic.class, "+stringProp", "+doubleProp"),
result.getTotalOrdering());
@@ -521,7 +519,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<StorableTestBasic> filter = Filter.filterFor
(StorableTestBasic.class, "doubleProp = ? | stringProp = ? | id > ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
assertEquals(OrderingList.get(StorableTestBasic.class, "+doubleProp", "+id"),
result.getTotalOrdering());
@@ -565,7 +563,7 @@ public class TestUnionQueryAnalyzer extends TestCase {
Filter<StorableTestBasic> filter = Filter.filterFor
(StorableTestBasic.class, "stringProp = ? | stringProp = ? | id > ?");
filter = filter.bind();
- UnionQueryAnalyzer.Result result = uqa.analyze(filter, null);
+ UnionQueryAnalyzer.Result result = uqa.analyze(filter, null, null);
assertEquals(OrderingList.get(StorableTestBasic.class, "+stringProp", "+doubleProp"),
result.getTotalOrdering());
diff --git a/src/test/java/com/amazon/carbonado/repo/toy/ToyStorage.java b/src/test/java/com/amazon/carbonado/repo/toy/ToyStorage.java
index b37e685..f4e2780 100644
--- a/src/test/java/com/amazon/carbonado/repo/toy/ToyStorage.java
+++ b/src/test/java/com/amazon/carbonado/repo/toy/ToyStorage.java
@@ -54,6 +54,7 @@ import com.amazon.carbonado.info.StorableIntrospector;
import com.amazon.carbonado.qe.QueryExecutorFactory;
import com.amazon.carbonado.qe.QueryFactory;
+import com.amazon.carbonado.qe.QueryHints;
import com.amazon.carbonado.qe.SortedQueryExecutor;
import com.amazon.carbonado.qe.FilteredQueryExecutor;
import com.amazon.carbonado.qe.IterableQueryExecutor;
@@ -103,7 +104,7 @@ public class ToyStorage<S extends Storable>
}
public Query<S> query() {
- return new ToyQuery(null, null, null, null);
+ return new ToyQuery(null, null, null);
}
public Query<S> query(String filter) {
@@ -111,14 +112,18 @@ public class ToyStorage<S extends Storable>
}
public Query<S> query(Filter<S> filter) {
- return new ToyQuery(filter, null, null, null);
+ return new ToyQuery(filter, null, null);
}
- public Query<S> query(Filter<S> filter, FilterValues<S> values, OrderingList<S> ordering) {
- return new ToyQuery(filter, values, ordering, null);
+ public Query<S> query(Filter<S> filter, FilterValues<S> values, OrderingList<S> ordering,
+ QueryHints hints)
+ {
+ return new ToyQuery(filter, values, ordering);
}
- public QueryExecutor<S> executor(Filter<S> filter, OrderingList<S> ordering) {
+ public QueryExecutor<S> executor(Filter<S> filter, OrderingList<S> ordering,
+ QueryHints hints)
+ {
QueryExecutor<S> executor = new IterableQueryExecutor<S>(mType, mData, mDataLock);
if (filter != null) {
@@ -269,10 +274,9 @@ public class ToyStorage<S extends Storable>
private class ToyQuery extends StandardQuery<S> {
ToyQuery(Filter<S> filter,
FilterValues<S> values,
- OrderingList<S> ordering,
- QueryExecutor<S> executor)
+ OrderingList<S> ordering)
{
- super(filter, values, ordering, executor);
+ super(filter, values, ordering, null);
}
protected Transaction enterTransaction(IsolationLevel level) {
@@ -289,9 +293,9 @@ public class ToyStorage<S extends Storable>
protected StandardQuery<S> newInstance(FilterValues<S> values,
OrderingList<S> ordering,
- QueryExecutor<S> executor)
+ QueryHints hints)
{
- return new ToyQuery(values.getFilter(), values, ordering, executor);
+ return new ToyQuery(values.getFilter(), values, ordering);
}
}
}