From 1452d2d947c6257fa5328488a30d8059fb36d1ba Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Sun, 6 Apr 2008 20:13:22 +0000 Subject: Added support for internal query hints. --- .../com/amazon/carbonado/cursor/TestCursors.java | 40 ++++++++++++ .../amazon/carbonado/qe/TestCompositeScore.java | 76 ++++++++++++++++++++++ .../carbonado/qe/TestIndexedQueryAnalyzer.java | 35 +++++----- .../carbonado/qe/TestJoinedQueryExecutor.java | 7 +- .../carbonado/qe/TestUnionQueryAnalyzer.java | 36 +++++----- .../com/amazon/carbonado/repo/toy/ToyStorage.java | 24 ++++--- 6 files changed, 169 insertions(+), 49 deletions(-) create mode 100644 src/test/java/com/amazon/carbonado/qe/TestCompositeScore.java (limited to 'src/test') 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(createElements(1, 2, 3, 4, 5), 6); compareElements(c); + + // call skip on cursor + c = new SkipCursor(createElements(1, 2, 3, 4, 5), 2); + assertEquals(1, c.skipNext(1)); + compareElements(c, 4, 5); + c = new SkipCursor(createElements(1, 2, 3, 4, 5), 2); + assertEquals(2, c.skipNext(2)); + compareElements(c, 5); + c = new SkipCursor(createElements(1, 2, 3, 4, 5), 2); + assertEquals(3, c.skipNext(3)); + compareElements(c); + c = new SkipCursor(createElements(1, 2, 3, 4, 5), 2); + assertEquals(3, c.skipNext(4)); + compareElements(c); + c = new SkipCursor(createElements(1, 2, 3, 4, 5), 100); + assertEquals(0, c.skipNext(4)); + compareElements(c); + c = new SkipCursor(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(createElements(1, 2, 3, 4, 5), 6); compareElements(c, 1, 2, 3, 4, 5); + + // call skip on cursor + c = new LimitCursor(createElements(1, 2, 3, 4, 5), 3); + assertEquals(1, c.skipNext(1)); + compareElements(c, 2, 3); + c = new LimitCursor(createElements(1, 2, 3, 4, 5), 3); + assertEquals(2, c.skipNext(2)); + compareElements(c, 3); + c = new LimitCursor(createElements(1, 2, 3, 4, 5), 3); + assertEquals(3, c.skipNext(3)); + compareElements(c); + c = new LimitCursor(createElements(1, 2, 3, 4, 5), 3); + assertEquals(3, c.skipNext(4)); + compareElements(c); + c = new LimitCursor(createElements(1, 2, 3, 4, 5), 100); + assertEquals(4, c.skipNext(4)); + compareElements(c, 5); + c = new LimitCursor(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 ix_1, ix_2; + ix_1 = TestFilteringScore.makeIndex(StorableTestBasic.class, "id").clustered(true); + ix_2 = TestFilteringScore.makeIndex(StorableTestBasic.class, "stringProp"); + + OrderingList ordering = TestOrderingScore + .makeOrdering(StorableTestBasic.class, "stringProp"); + + CompositeScore score_1 = CompositeScore.evaluate(ix_1, null, ordering); + CompositeScore 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
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
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 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 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 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 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 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 values = filter.initialFilterValues(); filter = values.getFilter(); - IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null); + IndexedQueryAnalyzer.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 joinExec = JoinedQueryExecutor.build (RepoAccess.INSTANCE, - result.getForeignProperty(), result.getFilter(), result.getOrdering()); + result.getForeignProperty(), result.getFilter(), result.getOrdering(), null); FilterValues fv = values.with("WA").with("12345"); @@ -273,7 +271,7 @@ public class TestIndexedQueryAnalyzer extends TestCase { filter = values.getFilter(); OrderingList 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 joinExec = JoinedQueryExecutor.build (RepoAccess.INSTANCE, - result.getForeignProperty(), result.getFilter(), result.getOrdering()); + result.getForeignProperty(), result.getFilter(), result.getOrdering(), null); FilterValues 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 values = filter.initialFilterValues(); filter = values.getFilter(); - IndexedQueryAnalyzer.Result result = iqa.analyze(filter, null); + IndexedQueryAnalyzer.Result result = + iqa.analyze(filter, null, null); QueryExecutor qe = result.createExecutor(); @@ -398,7 +397,9 @@ public class TestIndexedQueryAnalyzer extends TestCase { return this; } - public QueryExecutor executor(Filter filter, OrderingList ordering) { + public QueryExecutor executor(Filter filter, OrderingList ordering, + QueryHints hints) + { Iterable iterable = Collections.emptyList(); QueryExecutor exec = new IterableQueryExecutor 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 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 executor(Filter filter, OrderingList ordering) + public QueryExecutor executor(Filter filter, OrderingList ordering, + QueryHints hints) throws RepositoryException { Storage 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.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 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.Result> subResults = result.getSubResults(); assertEquals(1, subResults.size()); @@ -97,7 +95,7 @@ public class TestUnionQueryAnalyzer extends TestCase { filter = filter.bind(); OrderingList orderings = makeOrdering(Shipment.class, "~shipmentID", "~orderID"); - UnionQueryAnalyzer.Result result = uqa.analyze(filter, orderings); + UnionQueryAnalyzer.Result result = uqa.analyze(filter, orderings, null); List.Result> subResults = result.getSubResults(); assertEquals(1, subResults.size()); @@ -113,7 +111,7 @@ public class TestUnionQueryAnalyzer extends TestCase { Filter 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.Result> subResults = result.getSubResults(); @@ -146,7 +144,7 @@ public class TestUnionQueryAnalyzer extends TestCase { Filter 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.Result> subResults = result.getSubResults(); @@ -179,7 +177,7 @@ public class TestUnionQueryAnalyzer extends TestCase { Filter 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.Result> subResults = result.getSubResults(); @@ -223,7 +221,7 @@ public class TestUnionQueryAnalyzer extends TestCase { filter = filter.bind(); OrderingList 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.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.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.Result> subResults = result.getSubResults(); @@ -329,7 +327,7 @@ public class TestUnionQueryAnalyzer extends TestCase { Filter 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.Result> subResults = result.getSubResults(); assertEquals(1, subResults.size()); @@ -351,7 +349,7 @@ public class TestUnionQueryAnalyzer extends TestCase { Filter 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.Result> subResults = result.getSubResults(); assertEquals(1, subResults.size()); @@ -373,7 +371,7 @@ public class TestUnionQueryAnalyzer extends TestCase { Filter 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.Result> subResults = result.getSubResults(); assertEquals(2, subResults.size()); @@ -406,7 +404,7 @@ public class TestUnionQueryAnalyzer extends TestCase { Filter 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 exec = result.createExecutor(); @@ -446,7 +444,7 @@ public class TestUnionQueryAnalyzer extends TestCase { Filter 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 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 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 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 } public Query query() { - return new ToyQuery(null, null, null, null); + return new ToyQuery(null, null, null); } public Query query(String filter) { @@ -111,14 +112,18 @@ public class ToyStorage } public Query query(Filter filter) { - return new ToyQuery(filter, null, null, null); + return new ToyQuery(filter, null, null); } - public Query query(Filter filter, FilterValues values, OrderingList ordering) { - return new ToyQuery(filter, values, ordering, null); + public Query query(Filter filter, FilterValues values, OrderingList ordering, + QueryHints hints) + { + return new ToyQuery(filter, values, ordering); } - public QueryExecutor executor(Filter filter, OrderingList ordering) { + public QueryExecutor executor(Filter filter, OrderingList ordering, + QueryHints hints) + { QueryExecutor executor = new IterableQueryExecutor(mType, mData, mDataLock); if (filter != null) { @@ -269,10 +274,9 @@ public class ToyStorage private class ToyQuery extends StandardQuery { ToyQuery(Filter filter, FilterValues values, - OrderingList ordering, - QueryExecutor executor) + OrderingList ordering) { - super(filter, values, ordering, executor); + super(filter, values, ordering, null); } protected Transaction enterTransaction(IsolationLevel level) { @@ -289,9 +293,9 @@ public class ToyStorage protected StandardQuery newInstance(FilterValues values, OrderingList ordering, - QueryExecutor executor) + QueryHints hints) { - return new ToyQuery(values.getFilter(), values, ordering, executor); + return new ToyQuery(values.getFilter(), values, ordering); } } } -- cgit v1.2.3