Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id BE962200C70 for ; Thu, 4 May 2017 22:35:21 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id BD20C160BC5; Thu, 4 May 2017 20:35:21 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id B540C160B9B for ; Thu, 4 May 2017 22:35:20 +0200 (CEST) Received: (qmail 77074 invoked by uid 500); 4 May 2017 20:35:20 -0000 Mailing-List: contact commits-help@asterixdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@asterixdb.apache.org Delivered-To: mailing list commits@asterixdb.apache.org Received: (qmail 77065 invoked by uid 99); 4 May 2017 20:35:19 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 May 2017 20:35:19 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id D2199DFBAB; Thu, 4 May 2017 20:35:19 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: jianfeng@apache.org To: commits@asterixdb.apache.org Date: Thu, 04 May 2017 20:35:19 -0000 Message-Id: <0c42b5d910624a41afaea7c4ff148575@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [1/3] asterixdb git commit: Carry filter in 2ndary-to-primary index search archived-at: Thu, 04 May 2017 20:35:21 -0000 Repository: asterixdb Updated Branches: refs/heads/master fb6468cc3 -> 01a55f8a6 http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java index 4a74833..4340dec 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexRangeSearchCursor.java @@ -130,4 +130,14 @@ public class OnDiskInvertedIndexRangeSearchCursor implements IIndexCursor { public ITupleReference getTuple() { return concatTuple; } + + @Override + public ITupleReference getFilterMinTuple() { + return null; + } + + @Override + public ITupleReference getFilterMaxTuple() { + return null; + } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java index 12dd319..1b6d492 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-invertedindex/src/main/java/org/apache/hyracks/storage/am/lsm/invertedindex/ondisk/OnDiskInvertedIndexSearchCursor.java @@ -94,6 +94,16 @@ public class OnDiskInvertedIndexSearchCursor implements IIndexCursor { } @Override + public ITupleReference getFilterMinTuple() { + return null; + } + + @Override + public ITupleReference getFilterMaxTuple() { + return null; + } + + @Override public void reset() { currentBufferIndex = 0; tupleIndex = 0; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java index 08458d4..b04c2fd 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSearchCursor.java @@ -24,6 +24,8 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.storage.am.common.api.ICursorInitialState; import org.apache.hyracks.storage.am.common.api.ISearchPredicate; import org.apache.hyracks.storage.am.common.tuples.PermutingTupleReference; +import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponent; +import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext; public class LSMRTreeSearchCursor extends LSMRTreeAbstractCursor { @@ -63,6 +65,22 @@ public class LSMRTreeSearchCursor extends LSMRTreeAbstractCursor { } } + @Override + public ITupleReference getFilterMinTuple() { + ILSMComponentFilter filter = getFilter(); + return filter == null ? null : filter.getMinTuple(); + } + + @Override + public ITupleReference getFilterMaxTuple() { + ILSMComponentFilter filter = getFilter(); + return filter == null ? null : filter.getMaxTuple(); + } + + private ILSMComponentFilter getFilter() { + return foundNext ? operationalComponents.get(currentCursor).getLSMComponentFilter() : null; + } + private void searchNextCursor() throws HyracksDataException { if (currentCursor < numberOfTrees) { rtreeCursors[currentCursor].reset(); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java index c536712..8252d14 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeSortedCursor.java @@ -22,9 +22,11 @@ package org.apache.hyracks.storage.am.lsm.rtree.impls; import org.apache.hyracks.api.dataflow.value.ILinearizeComparator; import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; import org.apache.hyracks.api.exceptions.HyracksDataException; +import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.storage.am.common.api.ICursorInitialState; import org.apache.hyracks.storage.am.common.api.ISearchPredicate; import org.apache.hyracks.storage.am.common.tuples.PermutingTupleReference; +import org.apache.hyracks.storage.am.lsm.common.api.ILSMComponentFilter; import org.apache.hyracks.storage.am.lsm.common.api.ILSMIndexOperationContext; public class LSMRTreeSortedCursor extends LSMRTreeAbstractCursor { @@ -70,6 +72,21 @@ public class LSMRTreeSortedCursor extends LSMRTreeAbstractCursor { } @Override + public ITupleReference getFilterMinTuple() { + ILSMComponentFilter filter = getFilter(); + return filter == null ? null : filter.getMinTuple(); + } + + @Override + public ITupleReference getFilterMaxTuple() { + ILSMComponentFilter filter = getFilter(); + return filter == null ? null : filter.getMaxTuple(); + } + + private ILSMComponentFilter getFilter() { + return foundIn < 0 ? null : operationalComponents.get(foundIn).getLSMComponentFilter(); + } + @Override public boolean hasNext() throws HyracksDataException { while (!foundNext) { frameTuple = null; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesFlushCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesFlushCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesFlushCursor.java index d606f77..f2be5a0 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesFlushCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/LSMRTreeWithAntiMatterTuplesFlushCursor.java @@ -145,6 +145,16 @@ public class LSMRTreeWithAntiMatterTuplesFlushCursor implements ITreeIndexCursor } @Override + public ITupleReference getFilterMinTuple() { + return null; + } + + @Override + public ITupleReference getFilterMaxTuple() { + return null; + } + + @Override public ICachedPage getPage() { return null; } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java index 70b1141..4f894e5 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-rtree/src/main/java/org/apache/hyracks/storage/am/lsm/rtree/impls/TreeTupleSorter.java @@ -96,6 +96,16 @@ public class TreeTupleSorter implements ITreeIndexCursor { return frameTuple1; } + @Override + public ITupleReference getFilterMinTuple() { + return null; + } + + @Override + public ITupleReference getFilterMaxTuple() { + return null; + } + public void insertTupleEntry(int pageId, int tupleOffset) { if (numTuples * 2 == tPointers.length) { int[] newData = new int[tPointers.length + ARRAY_GROWTH]; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java index fad00ca..85639ad 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorDescriptor.java @@ -45,6 +45,7 @@ public class RTreeSearchOperatorDescriptor extends AbstractTreeIndexOperatorDesc protected int[] keyFields; // fields in input tuple to be used as keys protected final int[] minFilterFieldIndexes; protected final int[] maxFilterFieldIndexes; + protected final boolean appendFilter; public RTreeSearchOperatorDescriptor(IOperatorDescriptorRegistry spec, RecordDescriptor recDesc, IStorageManager storageManager, IIndexLifecycleManagerProvider lifecycleManagerProvider, @@ -52,7 +53,8 @@ public class RTreeSearchOperatorDescriptor extends AbstractTreeIndexOperatorDesc IBinaryComparatorFactory[] comparatorFactories, int[] keyFields, IIndexDataflowHelperFactory dataflowHelperFactory, boolean retainInput, boolean retainNull, IMissingWriterFactory nullWriterFactory, ISearchOperationCallbackFactory searchOpCallbackFactory, - int[] minFilterFieldIndexes, int[] maxFilterFieldIndexes, IPageManagerFactory pageManagerFactory) { + boolean appendFilter, int[] minFilterFieldIndexes, int[] maxFilterFieldIndexes, + IPageManagerFactory pageManagerFactory) { super(spec, 1, 1, recDesc, storageManager, lifecycleManagerProvider, fileSplitProvider, typeTraits, comparatorFactories, null, dataflowHelperFactory, null, retainInput, retainNull, nullWriterFactory, NoOpLocalResourceFactoryProvider.INSTANCE, searchOpCallbackFactory, @@ -60,12 +62,25 @@ public class RTreeSearchOperatorDescriptor extends AbstractTreeIndexOperatorDesc this.keyFields = keyFields; this.minFilterFieldIndexes = minFilterFieldIndexes; this.maxFilterFieldIndexes = maxFilterFieldIndexes; + this.appendFilter = appendFilter; + } + + public RTreeSearchOperatorDescriptor(IOperatorDescriptorRegistry spec, RecordDescriptor recDesc, + IStorageManager storageManager, IIndexLifecycleManagerProvider lifecycleManagerProvider, + IFileSplitProvider fileSplitProvider, ITypeTraits[] typeTraits, + IBinaryComparatorFactory[] comparatorFactories, int[] keyFields, + IIndexDataflowHelperFactory dataflowHelperFactory, boolean retainInput, boolean retainNull, + IMissingWriterFactory nullWriterFactory, ISearchOperationCallbackFactory searchOpCallbackFactory, + int[] minFilterFieldIndexes, int[] maxFilterFieldIndexes, IPageManagerFactory pageManagerFactory) { + this(spec, recDesc, storageManager, lifecycleManagerProvider, fileSplitProvider, typeTraits, + comparatorFactories, keyFields, dataflowHelperFactory, retainInput, retainNull, nullWriterFactory, + searchOpCallbackFactory, false, minFilterFieldIndexes, maxFilterFieldIndexes, pageManagerFactory); } @Override public IOperatorNodePushable createPushRuntime(final IHyracksTaskContext ctx, IRecordDescriptorProvider recordDescProvider, int partition, int nPartitions) throws HyracksDataException { - return new RTreeSearchOperatorNodePushable(this, ctx, partition, recordDescProvider, keyFields, + return new RTreeSearchOperatorNodePushable(this, ctx, partition, recordDescProvider, keyFields, appendFilter, minFilterFieldIndexes, maxFilterFieldIndexes); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java index 1dc31b1..d0d77d9 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/dataflow/RTreeSearchOperatorNodePushable.java @@ -36,9 +36,9 @@ public class RTreeSearchOperatorNodePushable extends IndexSearchOperatorNodePush protected MultiComparator cmp; public RTreeSearchOperatorNodePushable(AbstractTreeIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx, - int partition, IRecordDescriptorProvider recordDescProvider, int[] keyFields, int[] minFilterFieldIndexes, - int[] maxFilterFieldIndexes) throws HyracksDataException { - super(opDesc, ctx, partition, recordDescProvider, minFilterFieldIndexes, maxFilterFieldIndexes); + int partition, IRecordDescriptorProvider recordDescProvider, int[] keyFields, boolean appendFilter, + int[] minFilterFieldIndexes, int[] maxFilterFieldIndexes) throws HyracksDataException { + super(opDesc, ctx, partition, recordDescProvider, appendFilter, minFilterFieldIndexes, maxFilterFieldIndexes); if (keyFields != null && keyFields.length > 0) { searchKey = new PermutingFrameTupleReference(); searchKey.setFieldPermutation(keyFields); @@ -67,6 +67,6 @@ public class RTreeSearchOperatorNodePushable extends IndexSearchOperatorNodePush @Override protected int getFieldCount() { - return ((ITreeIndex)index).getFieldCount(); + return ((ITreeIndex) index).getFieldCount(); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/01a55f8a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java index 5ee8700..218d34d 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-rtree/src/main/java/org/apache/hyracks/storage/am/rtree/impls/RTreeSearchCursor.java @@ -79,6 +79,16 @@ public class RTreeSearchCursor implements ITreeIndexCursor { return frameTuple; } + @Override + public ITupleReference getFilterMinTuple() { + return null; + } + + @Override + public ITupleReference getFilterMaxTuple() { + return null; + } + public int getTupleOffset() { return leafFrame.getTupleOffset(currentTupleIndex); }