diff options
| author | Brian S. O'Neill <bronee@gmail.com> | 2006-10-13 21:09:10 +0000 | 
|---|---|---|
| committer | Brian S. O'Neill <bronee@gmail.com> | 2006-10-13 21:09:10 +0000 | 
| commit | 2fd7b3fd77c8141f7fb21d2bd86eb839fa55ef6f (patch) | |
| tree | 828dd9e9c0c0b8976aa2f4da253d26f7ae2e6861 /src/main/java | |
| parent | c43323482b8c93952743469c40c1c631e293c2a2 (diff) | |
Pass the internal query executor along when "with" is called, as an optimization.
Diffstat (limited to 'src/main/java')
3 files changed, 25 insertions, 13 deletions
| 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<S extends Storable> extends StandardQueryFactory<S>      }
      protected StandardQuery<S> createQuery(FilterValues<S> values, OrderingList<S> ordering) {
 -        return new Query(values, ordering);
 +        return new Query(values, ordering, null);
      }
      private class Query extends StandardQuery<S> {
 -        Query(FilterValues<S> values, OrderingList<S> ordering) {
 -            super(values, ordering);
 +        Query(FilterValues<S> values, OrderingList<S> ordering, QueryExecutor<S> executor) {
 +            super(values, ordering, executor);
          }
          protected Transaction enterTransaction(IsolationLevel level) {
 @@ -70,8 +70,11 @@ public class QueryEngine<S extends Storable> extends StandardQueryFactory<S>              return mExecutorFactory;
          }
 -        protected StandardQuery<S> newInstance(FilterValues<S> values, OrderingList<S> ordering) {
 -            return new Query(values, ordering);
 +        protected StandardQuery<S> newInstance(FilterValues<S> values,
 +                                               OrderingList<S> ordering,
 +                                               QueryExecutor<S> 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<S extends Storable> extends AbstractQuery<S>      /**
       * @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<S> values, OrderingList<S> ordering) {
 +    protected StandardQuery(FilterValues<S> values,
 +                            OrderingList<S> ordering,
 +                            QueryExecutor<S> executor)
 +    {
          mValues = values;
          if (ordering == null) {
              ordering = OrderingList.emptyList();
          }
          mOrdering = ordering;
 +        mExecutor = executor;
      }
      public Class<S> getStorableType() {
 @@ -429,10 +434,11 @@ public abstract class StandardQuery<S extends Storable> extends AbstractQuery<S>       * @param ordering order-by properties, never null
       */
      protected abstract StandardQuery<S> newInstance(FilterValues<S> values,
 -                                                    OrderingList<S> ordering);
 +                                                    OrderingList<S> ordering,
 +                                                    QueryExecutor<S> executor);
      private StandardQuery<S> newInstance(FilterValues<S> values) {
 -        return newInstance(values, mOrdering);
 +        return newInstance(values, mOrdering, mExecutor);
      }
      private Query<S> createQuery(FilterValues<S> values, OrderingList<S> 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<S extends Storable> extends StandardQueryFactory<S>      }
      protected StandardQuery<S> createQuery(FilterValues<S> values, OrderingList<S> 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<S extends Storable> extends StandardQueryFactory<S>      }
      private class JDBCQuery extends StandardQuery<S> {
 -        JDBCQuery(FilterValues<S> values, OrderingList<S> ordering) {
 -            super(values, ordering);
 +        JDBCQuery(FilterValues<S> values, OrderingList<S> ordering, QueryExecutor<S> executor) {
 +            super(values, ordering, executor);
          }
          @Override
 @@ -642,8 +642,11 @@ class JDBCStorage<S extends Storable> extends StandardQueryFactory<S>              return JDBCStorage.this.mExecutorFactory;
          }
 -        protected StandardQuery<S> newInstance(FilterValues<S> values, OrderingList<S> ordering) {
 -            return new JDBCQuery(values, ordering);
 +        protected StandardQuery<S> newInstance(FilterValues<S> values,
 +                                               OrderingList<S> ordering,
 +                                               QueryExecutor<S> executor)
 +        {
 +            return new JDBCQuery(values, ordering, executor);
          }
      }
 | 
