From 2fd7b3fd77c8141f7fb21d2bd86eb839fa55ef6f Mon Sep 17 00:00:00 2001 From: "Brian S. O'Neill" Date: Fri, 13 Oct 2006 21:09:10 +0000 Subject: Pass the internal query executor along when "with" is called, as an optimization. --- src/main/java/com/amazon/carbonado/qe/QueryEngine.java | 13 ++++++++----- .../java/com/amazon/carbonado/qe/StandardQuery.java | 12 +++++++++--- .../com/amazon/carbonado/repo/jdbc/JDBCStorage.java | 13 ++++++++----- .../java/com/amazon/carbonado/repo/toy/ToyStorage.java | 17 ++++++++++------- 4 files changed, 35 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/main/java/com/amazon/carbonado/qe/QueryEngine.java b/src/main/java/com/amazon/carbonado/qe/QueryEngine.java index 59c9872..56f6145 100644 --- a/src/main/java/com/amazon/carbonado/qe/QueryEngine.java +++ b/src/main/java/com/amazon/carbonado/qe/QueryEngine.java @@ -50,12 +50,12 @@ public class QueryEngine extends StandardQueryFactory } protected StandardQuery createQuery(FilterValues values, OrderingList ordering) { - return new Query(values, ordering); + return new Query(values, ordering, null); } private class Query extends StandardQuery { - Query(FilterValues values, OrderingList ordering) { - super(values, ordering); + Query(FilterValues values, OrderingList ordering, QueryExecutor executor) { + super(values, ordering, executor); } protected Transaction enterTransaction(IsolationLevel level) { @@ -70,8 +70,11 @@ public class QueryEngine extends StandardQueryFactory return mExecutorFactory; } - protected StandardQuery newInstance(FilterValues values, OrderingList ordering) { - return new Query(values, ordering); + protected StandardQuery newInstance(FilterValues values, + OrderingList ordering, + QueryExecutor executor) + { + return new Query(values, ordering, executor); } } } diff --git a/src/main/java/com/amazon/carbonado/qe/StandardQuery.java b/src/main/java/com/amazon/carbonado/qe/StandardQuery.java index 0a4c9d9..d7f5263 100644 --- a/src/main/java/com/amazon/carbonado/qe/StandardQuery.java +++ b/src/main/java/com/amazon/carbonado/qe/StandardQuery.java @@ -61,13 +61,18 @@ public abstract class StandardQuery extends AbstractQuery /** * @param values optional values object, defaults to open filter if null * @param ordering optional order-by properties + * @param executor optional executor to use (by default lazily obtains and caches executor) */ - protected StandardQuery(FilterValues values, OrderingList ordering) { + protected StandardQuery(FilterValues values, + OrderingList ordering, + QueryExecutor executor) + { mValues = values; if (ordering == null) { ordering = OrderingList.emptyList(); } mOrdering = ordering; + mExecutor = executor; } public Class getStorableType() { @@ -429,10 +434,11 @@ public abstract class StandardQuery extends AbstractQuery * @param ordering order-by properties, never null */ protected abstract StandardQuery newInstance(FilterValues values, - OrderingList ordering); + OrderingList ordering, + QueryExecutor executor); private StandardQuery newInstance(FilterValues values) { - return newInstance(values, mOrdering); + return newInstance(values, mOrdering, mExecutor); } private Query createQuery(FilterValues values, OrderingList ordering) diff --git a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java index b7a732e..df61ecf 100644 --- a/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java +++ b/src/main/java/com/amazon/carbonado/repo/jdbc/JDBCStorage.java @@ -249,7 +249,7 @@ class JDBCStorage extends StandardQueryFactory } protected StandardQuery createQuery(FilterValues values, OrderingList ordering) { - return new JDBCQuery(values, ordering); + return new JDBCQuery(values, ordering, null); } public S instantiate(ResultSet rs) throws SQLException { @@ -611,8 +611,8 @@ class JDBCStorage extends StandardQueryFactory } private class JDBCQuery extends StandardQuery { - JDBCQuery(FilterValues values, OrderingList ordering) { - super(values, ordering); + JDBCQuery(FilterValues values, OrderingList ordering, QueryExecutor executor) { + super(values, ordering, executor); } @Override @@ -642,8 +642,11 @@ class JDBCStorage extends StandardQueryFactory return JDBCStorage.this.mExecutorFactory; } - protected StandardQuery newInstance(FilterValues values, OrderingList ordering) { - return new JDBCQuery(values, ordering); + protected StandardQuery newInstance(FilterValues values, + OrderingList ordering, + QueryExecutor executor) + { + return new JDBCQuery(values, ordering, executor); } } 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 bafa244..71a597d 100644 --- a/src/test/java/com/amazon/carbonado/repo/toy/ToyStorage.java +++ b/src/test/java/com/amazon/carbonado/repo/toy/ToyStorage.java @@ -94,7 +94,7 @@ public class ToyStorage } public Query query() { - return new ToyQuery(null, null); + return new ToyQuery(null, null, null); } public Query query(String filter) { @@ -102,11 +102,11 @@ public class ToyStorage } public Query query(Filter filter) { - return new ToyQuery(filter.initialFilterValues(), null); + return new ToyQuery(filter.initialFilterValues(), null, null); } public Query query(FilterValues values, OrderingList ordering) { - return new ToyQuery(values, ordering); + return new ToyQuery(values, ordering, null); } public QueryExecutor executor(Filter filter, OrderingList ordering) { @@ -239,8 +239,8 @@ public class ToyStorage } private class ToyQuery extends StandardQuery { - ToyQuery(FilterValues values, OrderingList ordering) { - super(values, ordering); + ToyQuery(FilterValues values, OrderingList ordering, QueryExecutor executor) { + super(values, ordering, executor); } protected Transaction enterTransaction(IsolationLevel level) { @@ -255,8 +255,11 @@ public class ToyStorage return ToyStorage.this; } - protected StandardQuery newInstance(FilterValues values, OrderingList ordering) { - return new ToyQuery(values, ordering); + protected StandardQuery newInstance(FilterValues values, + OrderingList ordering, + QueryExecutor executor) + { + return new ToyQuery(values, ordering, executor); } } } -- cgit v1.2.3