http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java index 4d2e0a3..04179c2 100644 --- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java +++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest.java @@ -19,9 +19,14 @@ package org.apache.hyracks.tests.am.lsm.rtree; +import java.io.DataOutput; + import org.apache.hyracks.api.constraints.PartitionConstraintHelper; import org.apache.hyracks.api.dataflow.IOperatorDescriptor; -import org.apache.hyracks.api.dataflow.value.*; +import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer; +import org.apache.hyracks.api.dataflow.value.RecordDescriptor; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.FileSplit; import org.apache.hyracks.api.job.JobSpecification; @@ -32,20 +37,17 @@ import org.apache.hyracks.dataflow.std.file.ConstantFileSplitProvider; import org.apache.hyracks.dataflow.std.file.IFileSplitProvider; import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor; import org.apache.hyracks.dataflow.std.misc.ConstantTupleSourceOperatorDescriptor; -import org.apache.hyracks.storage.am.btree.dataflow.BTreeSearchOperatorDescriptor; +import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; -import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory; import org.apache.hyracks.storage.am.rtree.dataflow.RTreeSearchOperatorDescriptor; import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType; +import org.apache.hyracks.storage.common.IResourceFactory; import org.apache.hyracks.test.support.TestStorageManagerComponentHolder; import org.apache.hyracks.tests.am.common.ITreeIndexOperatorTestHelper; import org.apache.hyracks.tests.am.rtree.RTreeSecondaryIndexSearchOperatorTest; -import org.apache.hyracks.tests.util.NoopMissingWriterFactory; import org.junit.Test; -import java.io.DataOutput; - public class LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest extends RTreeSecondaryIndexSearchOperatorTest { public LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest() { @@ -58,14 +60,14 @@ public class LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest } @Override - protected IIndexDataflowHelperFactory createDataFlowHelperFactory( + protected IResourceFactory createSecondaryResourceFactory( IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType, IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, - int[] btreeFields, int[] rtreeFields, ITypeTraits[] filterTypeTraits, - IBinaryComparatorFactory[] filterCmpFactories, int[] filterFields) { - return ((LSMRTreeWithAntiMatterTuplesOperatorTestHelper) testHelper) - .createDataFlowHelperFactory(secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, - linearizerCmpFactory, rtreeFields, filterTypeTraits, filterCmpFactories, filterFields); + int[] btreeFields) { + return ((LSMRTreeWithAntiMatterTuplesOperatorTestHelper) testHelper).getSecondaryLocalResourceFactory( + storageManager, secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, + linearizerCmpFactory, btreeFields, secondaryTypeTraits, secondaryComparatorFactories, + (IMetadataPageManagerFactory) pageManagerFactory); } @Test @@ -87,16 +89,13 @@ public class LSMRTreeWithAntiMatterTuplesSecondaryIndexSearchOperatorTest { DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE }; RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers); - ConstantTupleSourceOperatorDescriptor keyProviderOp = - new ConstantTupleSourceOperatorDescriptor(spec, keyRecDesc, tb.getFieldEndOffsets(), tb.getByteArray(), - tb.getSize()); + ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec, + keyRecDesc, tb.getFieldEndOffsets(), tb.getByteArray(), tb.getSize()); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, keyProviderOp, NC1_ID); int[] keyFields = { 0, 1, 2, 3 }; - RTreeSearchOperatorDescriptor secondarySearchOp = - new RTreeSearchOperatorDescriptor(spec, secondaryWithFilterRecDesc, storageManager, lcManagerProvider, - secondarySplitProvider, secondaryTypeTraits, secondaryComparatorFactories, keyFields, - rtreeDataflowHelperFactory, false, false, NoopMissingWriterFactory.INSTANCE, - NoOpOperationCallbackFactory.INSTANCE, true, null, null, pageManagerFactory); + RTreeSearchOperatorDescriptor secondarySearchOp = new RTreeSearchOperatorDescriptor(spec, + secondaryWithFilterRecDesc, keyFields, true, true, secondaryHelperFactory, false, false, null, + NoOpOperationCallbackFactory.INSTANCE, null, null, false); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondarySearchOp, NC1_ID); IFileSplitProvider outSplits = new ConstantFileSplitProvider(new FileSplit[] { createFile(nc1) });
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java index 0d4bf92..c44544a 100644 --- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java +++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/AbstractRTreeOperatorTest.java @@ -19,6 +19,9 @@ package org.apache.hyracks.tests.am.rtree; +import java.io.DataOutput; +import java.io.File; + import org.apache.hyracks.api.constraints.PartitionConstraintHelper; import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; @@ -46,26 +49,26 @@ import org.apache.hyracks.dataflow.std.file.IFileSplitProvider; import org.apache.hyracks.dataflow.std.misc.ConstantTupleSourceOperatorDescriptor; import org.apache.hyracks.dataflow.std.misc.NullSinkOperatorDescriptor; import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor; -import org.apache.hyracks.storage.am.btree.dataflow.BTreeDataflowHelperFactory; +import org.apache.hyracks.storage.am.btree.dataflow.BTreeResourceFactory; import org.apache.hyracks.storage.am.btree.dataflow.BTreeSearchOperatorDescriptor; -import org.apache.hyracks.storage.am.common.api.IIndexLifecycleManagerProvider; +import org.apache.hyracks.storage.am.common.api.IIndexBuilderFactory; import org.apache.hyracks.storage.am.common.api.IPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; +import org.apache.hyracks.storage.am.common.build.IndexBuilderFactory; import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; +import org.apache.hyracks.storage.am.common.dataflow.IndexCreateOperatorDescriptor; import org.apache.hyracks.storage.am.common.dataflow.IndexDropOperatorDescriptor; +import org.apache.hyracks.storage.am.common.dataflow.IndexDataflowHelperFactory; import org.apache.hyracks.storage.am.common.dataflow.TreeIndexBulkLoadOperatorDescriptor; -import org.apache.hyracks.storage.am.common.dataflow.TreeIndexCreateOperatorDescriptor; import org.apache.hyracks.storage.am.common.dataflow.TreeIndexInsertUpdateDeleteOperatorDescriptor; import org.apache.hyracks.storage.am.common.freepage.AppendOnlyLinkedMetadataPageManagerFactory; -import org.apache.hyracks.storage.am.common.freepage.LinkedMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory; import org.apache.hyracks.storage.am.common.ophelpers.IndexOperation; import org.apache.hyracks.storage.am.lsm.rtree.utils.LSMRTreeUtils; import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType; import org.apache.hyracks.storage.am.rtree.util.RTreeUtils; +import org.apache.hyracks.storage.common.IResourceFactory; import org.apache.hyracks.storage.common.IStorageManager; -import org.apache.hyracks.storage.common.file.TransientLocalResourceFactoryProvider; -import org.apache.hyracks.test.support.TestIndexLifecycleManagerProvider; import org.apache.hyracks.test.support.TestStorageManager; import org.apache.hyracks.test.support.TestStorageManagerComponentHolder; import org.apache.hyracks.tests.am.common.ITreeIndexOperatorTestHelper; @@ -73,9 +76,6 @@ import org.apache.hyracks.tests.integration.AbstractIntegrationTest; import org.junit.After; import org.junit.Before; -import java.io.DataOutput; -import java.io.File; - public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest { static { TestStorageManagerComponentHolder.init(8192, 20, 20); @@ -90,16 +90,16 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest protected RTreeType rTreeType; protected final IStorageManager storageManager = new TestStorageManager(); - protected final IIndexLifecycleManagerProvider lcManagerProvider = new TestIndexLifecycleManagerProvider(); protected final IPageManagerFactory pageManagerFactory = AppendOnlyLinkedMetadataPageManagerFactory.INSTANCE; - protected IIndexDataflowHelperFactory rtreeDataflowHelperFactory; - protected IIndexDataflowHelperFactory btreeDataflowHelperFactory = new BTreeDataflowHelperFactory(true); + protected IResourceFactory rtreeFactory; + protected IResourceFactory btreeFactory; // field, type and key declarations for primary index protected final int primaryFieldCount = 10; protected final ITypeTraits[] primaryTypeTraits = new ITypeTraits[primaryFieldCount]; protected final int primaryKeyFieldCount = 1; - protected final IBinaryComparatorFactory[] primaryComparatorFactories = new IBinaryComparatorFactory[primaryKeyFieldCount]; + protected final IBinaryComparatorFactory[] primaryComparatorFactories = + new IBinaryComparatorFactory[primaryKeyFieldCount]; protected final RecordDescriptor primaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), @@ -111,23 +111,25 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest // to be set by subclasses protected String primaryFileName; protected IFileSplitProvider primarySplitProvider; + protected IIndexDataflowHelperFactory primaryHelperFactory; // field, type and key declarations for secondary indexes protected final int secondaryFieldCount = 5; protected final ITypeTraits[] secondaryTypeTraits = new ITypeTraits[secondaryFieldCount]; protected final int secondaryKeyFieldCount = 4; - protected final IBinaryComparatorFactory[] secondaryComparatorFactories = new IBinaryComparatorFactory[secondaryKeyFieldCount]; + protected final IBinaryComparatorFactory[] secondaryComparatorFactories = + new IBinaryComparatorFactory[secondaryKeyFieldCount]; - protected final RecordDescriptor secondaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] { - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - new UTF8StringSerializerDeserializer() }); + protected final RecordDescriptor secondaryRecDesc = + new RecordDescriptor(new ISerializerDeserializer[] { DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer() }); - protected final RecordDescriptor secondaryWithFilterRecDesc = new RecordDescriptor(new ISerializerDeserializer[] { - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer() }); + protected final RecordDescriptor secondaryWithFilterRecDesc = + new RecordDescriptor(new ISerializerDeserializer[] { DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() }); // This is only used for the LSMRTree. We need a comparator Factories for // the BTree component of the LSMRTree. @@ -136,6 +138,7 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest protected String secondaryFileName; protected IFileSplitProvider secondarySplitProvider; + protected IIndexDataflowHelperFactory secondaryHelperFactory; protected ITreeIndexOperatorTestHelper testHelper; @@ -150,9 +153,11 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest primaryFileName = testHelper.getPrimaryIndexName(); primarySplitProvider = new ConstantFileSplitProvider(new FileSplit[] { new ManagedFileSplit(NC1_ID, primaryFileName) }); + primaryHelperFactory = new IndexDataflowHelperFactory(storageManager, primarySplitProvider); secondaryFileName = testHelper.getSecondaryIndexName(); secondarySplitProvider = new ConstantFileSplitProvider(new FileSplit[] { new ManagedFileSplit(NC1_ID, secondaryFileName) }); + secondaryHelperFactory = new IndexDataflowHelperFactory(storageManager, secondarySplitProvider); // field, type and key declarations for primary index primaryTypeTraits[0] = UTF8StringPointable.TYPE_TRAITS; @@ -208,27 +213,25 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest IPrimitiveValueProviderFactory[] secondaryValueProviderFactories = RTreeUtils .createPrimitiveValueProviderFactories(secondaryComparatorFactories.length, DoublePointable.FACTORY); - rtreeDataflowHelperFactory = - createDataFlowHelperFactory(secondaryValueProviderFactories, RTreePolicyType.RSTARTREE, - btreeComparatorFactories, - LSMRTreeUtils.proposeBestLinearizer(secondaryTypeTraits, secondaryComparatorFactories.length), - btreeFields, rtreeFields, filterTypes, filterCmpFactories, filterFields); + rtreeFactory = createSecondaryResourceFactory(secondaryValueProviderFactories, RTreePolicyType.RSTARTREE, + btreeComparatorFactories, + LSMRTreeUtils.proposeBestLinearizer(secondaryTypeTraits, secondaryComparatorFactories.length), + btreeFields); } - protected abstract IIndexDataflowHelperFactory createDataFlowHelperFactory( + protected abstract IResourceFactory createSecondaryResourceFactory( IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType, IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, - int[] btreeFields, int[] rtree, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, - int[] filterFields) throws HyracksDataException; + int[] btreeFields); protected void createPrimaryIndex() throws Exception { JobSpecification spec = new JobSpecification(); - TransientLocalResourceFactoryProvider localResourceFactoryProvider = new TransientLocalResourceFactoryProvider(); - TreeIndexCreateOperatorDescriptor primaryCreateOp = new TreeIndexCreateOperatorDescriptor(spec, storageManager, - lcManagerProvider, primarySplitProvider, primaryTypeTraits, primaryComparatorFactories, null, - btreeDataflowHelperFactory, localResourceFactoryProvider, NoOpOperationCallbackFactory.INSTANCE, + btreeFactory = new BTreeResourceFactory(storageManager, primaryTypeTraits, primaryComparatorFactories, pageManagerFactory); + IIndexBuilderFactory indexBuilderFactory = + new IndexBuilderFactory(storageManager, primarySplitProvider, btreeFactory, false); + IndexCreateOperatorDescriptor primaryCreateOp = new IndexCreateOperatorDescriptor(spec, indexBuilderFactory); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primaryCreateOp, NC1_ID); spec.addRoot(primaryCreateOp); runTest(spec); @@ -237,17 +240,17 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest protected void loadPrimaryIndex() throws Exception { JobSpecification spec = new JobSpecification(); - FileSplit[] ordersSplits = new FileSplit[] { new ManagedFileSplit(NC1_ID, - "data" + File.separator + "orders-with-locations-part1.txt") }; + FileSplit[] ordersSplits = new FileSplit[] { + new ManagedFileSplit(NC1_ID, "data" + File.separator + "orders-with-locations-part1.txt") }; IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits); - RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] { - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer(), DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE }); + RecordDescriptor ordersDesc = + new RecordDescriptor(new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE }); FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider, new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE, @@ -256,7 +259,8 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, DoubleParserFactory.INSTANCE, DoubleParserFactory.INSTANCE, DoubleParserFactory.INSTANCE, - DoubleParserFactory.INSTANCE }, '|'), ordersDesc); + DoubleParserFactory.INSTANCE }, '|'), + ordersDesc); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID); ExternalSortOperatorDescriptor sorter = new ExternalSortOperatorDescriptor(spec, 1000, new int[] { 0 }, @@ -266,9 +270,7 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest int[] fieldPermutation = { 0, 1, 2, 4, 5, 7, 9, 10, 11, 12 }; TreeIndexBulkLoadOperatorDescriptor primaryBulkLoad = new TreeIndexBulkLoadOperatorDescriptor(spec, - primaryRecDesc, storageManager, lcManagerProvider, primarySplitProvider, primaryTypeTraits, - primaryComparatorFactories, null, fieldPermutation, 0.7f, false, 1000L, true, - btreeDataflowHelperFactory, pageManagerFactory); + primaryRecDesc, fieldPermutation, 0.7f, false, 1000L, true, primaryHelperFactory); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primaryBulkLoad, NC1_ID); NullSinkOperatorDescriptor nsOpDesc = new NullSinkOperatorDescriptor(spec); @@ -286,11 +288,9 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest protected void createSecondaryIndex() throws Exception { JobSpecification spec = new JobSpecification(); - TransientLocalResourceFactoryProvider localResourceFactoryProvider = new TransientLocalResourceFactoryProvider(); - TreeIndexCreateOperatorDescriptor secondaryCreateOp = new TreeIndexCreateOperatorDescriptor(spec, - storageManager, lcManagerProvider, secondarySplitProvider, secondaryTypeTraits, - secondaryComparatorFactories, null, rtreeDataflowHelperFactory, localResourceFactoryProvider, - NoOpOperationCallbackFactory.INSTANCE, pageManagerFactory); + IndexBuilderFactory indexBuilderFactory = + new IndexBuilderFactory(storageManager, secondarySplitProvider, rtreeFactory, false); + IndexCreateOperatorDescriptor secondaryCreateOp = new IndexCreateOperatorDescriptor(spec, indexBuilderFactory); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryCreateOp, NC1_ID); spec.addRoot(secondaryCreateOp); runTest(spec); @@ -307,8 +307,8 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest new UTF8StringSerializerDeserializer().serialize("0", dos); tb.addFieldEndOffset(); - ISerializerDeserializer[] keyRecDescSers = { new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer() }; + ISerializerDeserializer[] keyRecDescSers = + { new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer() }; RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers); ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec, @@ -320,17 +320,14 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest // scan primary index BTreeSearchOperatorDescriptor primarySearchOp = new BTreeSearchOperatorDescriptor(spec, primaryRecDesc, - storageManager, lcManagerProvider, primarySplitProvider, primaryTypeTraits, primaryComparatorFactories, - null, lowKeyFields, highKeyFields, true, true, btreeDataflowHelperFactory, false, false, null, - NoOpOperationCallbackFactory.INSTANCE, null, null, new LinkedMetadataPageManagerFactory()); + lowKeyFields, highKeyFields, true, true, primaryHelperFactory, false, false, null, + NoOpOperationCallbackFactory.INSTANCE, null, null, false); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primarySearchOp, NC1_ID); // load secondary index int[] fieldPermutation = { 6, 7, 8, 9, 0 }; TreeIndexBulkLoadOperatorDescriptor secondaryBulkLoad = new TreeIndexBulkLoadOperatorDescriptor(spec, - secondaryRecDesc, storageManager, lcManagerProvider, secondarySplitProvider, secondaryTypeTraits, - secondaryComparatorFactories, null, fieldPermutation, 0.7f, false, 1000L, true, - rtreeDataflowHelperFactory, pageManagerFactory); + secondaryRecDesc, fieldPermutation, 0.7f, false, 1000L, true, secondaryHelperFactory); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryBulkLoad, NC1_ID); NullSinkOperatorDescriptor nsOpDesc = new NullSinkOperatorDescriptor(spec); @@ -348,17 +345,17 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest JobSpecification spec = new JobSpecification(); - FileSplit[] ordersSplits = new FileSplit[] { new ManagedFileSplit(NC1_ID, - "data" + File.separator + "orders-with-locations-part2.txt") }; + FileSplit[] ordersSplits = new FileSplit[] { + new ManagedFileSplit(NC1_ID, "data" + File.separator + "orders-with-locations-part2.txt") }; IFileSplitProvider ordersSplitProvider = new ConstantFileSplitProvider(ordersSplits); - RecordDescriptor ordersDesc = new RecordDescriptor(new ISerializerDeserializer[] { - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), - new UTF8StringSerializerDeserializer(), DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE }); + RecordDescriptor ordersDesc = + new RecordDescriptor(new ISerializerDeserializer[] { new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), + new UTF8StringSerializerDeserializer(), new UTF8StringSerializerDeserializer(), + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE }); FileScanOperatorDescriptor ordScanner = new FileScanOperatorDescriptor(spec, ordersSplitProvider, new DelimitedDataTupleParserFactory(new IValueParserFactory[] { UTF8StringParserFactory.INSTANCE, @@ -367,23 +364,22 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, UTF8StringParserFactory.INSTANCE, DoubleParserFactory.INSTANCE, DoubleParserFactory.INSTANCE, DoubleParserFactory.INSTANCE, - DoubleParserFactory.INSTANCE }, '|'), ordersDesc); + DoubleParserFactory.INSTANCE }, '|'), + ordersDesc); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, ordScanner, NC1_ID); // insert into primary index int[] primaryFieldPermutation = { 0, 1, 2, 4, 5, 7, 9, 10, 11, 12 }; - TreeIndexInsertUpdateDeleteOperatorDescriptor primaryInsertOp = new TreeIndexInsertUpdateDeleteOperatorDescriptor( - spec, ordersDesc, storageManager, lcManagerProvider, primarySplitProvider, primaryTypeTraits, - primaryComparatorFactories, null, primaryFieldPermutation, IndexOperation.INSERT, - btreeDataflowHelperFactory, null, NoOpOperationCallbackFactory.INSTANCE, pageManagerFactory); + TreeIndexInsertUpdateDeleteOperatorDescriptor primaryInsertOp = + new TreeIndexInsertUpdateDeleteOperatorDescriptor(spec, ordersDesc, primaryFieldPermutation, + IndexOperation.INSERT, primaryHelperFactory, null, NoOpOperationCallbackFactory.INSTANCE); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primaryInsertOp, NC1_ID); // secondary index int[] secondaryFieldPermutation = { 9, 10, 11, 12, 0 }; - TreeIndexInsertUpdateDeleteOperatorDescriptor secondaryInsertOp = new TreeIndexInsertUpdateDeleteOperatorDescriptor( - spec, ordersDesc, storageManager, lcManagerProvider, secondarySplitProvider, secondaryTypeTraits, - secondaryComparatorFactories, null, secondaryFieldPermutation, IndexOperation.INSERT, - rtreeDataflowHelperFactory, null, NoOpOperationCallbackFactory.INSTANCE, pageManagerFactory); + TreeIndexInsertUpdateDeleteOperatorDescriptor secondaryInsertOp = + new TreeIndexInsertUpdateDeleteOperatorDescriptor(spec, ordersDesc, secondaryFieldPermutation, + IndexOperation.INSERT, secondaryHelperFactory, null, NoOpOperationCallbackFactory.INSTANCE); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryInsertOp, NC1_ID); NullSinkOperatorDescriptor nullSink = new NullSinkOperatorDescriptor(spec); @@ -401,8 +397,7 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest protected void destroyPrimaryIndex() throws Exception { JobSpecification spec = new JobSpecification(); - IndexDropOperatorDescriptor primaryDropOp = new IndexDropOperatorDescriptor(spec, storageManager, - lcManagerProvider, primarySplitProvider, btreeDataflowHelperFactory, pageManagerFactory); + IndexDropOperatorDescriptor primaryDropOp = new IndexDropOperatorDescriptor(spec, primaryHelperFactory); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primaryDropOp, NC1_ID); spec.addRoot(primaryDropOp); runTest(spec); @@ -410,8 +405,7 @@ public abstract class AbstractRTreeOperatorTest extends AbstractIntegrationTest protected void destroySecondaryIndex() throws Exception { JobSpecification spec = new JobSpecification(); - IndexDropOperatorDescriptor secondaryDropOp = new IndexDropOperatorDescriptor(spec, storageManager, - lcManagerProvider, secondarySplitProvider, rtreeDataflowHelperFactory, pageManagerFactory); + IndexDropOperatorDescriptor secondaryDropOp = new IndexDropOperatorDescriptor(spec, secondaryHelperFactory); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryDropOp, NC1_ID); spec.addRoot(secondaryDropOp); runTest(spec); http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeOperatorTestHelper.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeOperatorTestHelper.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeOperatorTestHelper.java index 0940819..43d685e 100644 --- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeOperatorTestHelper.java +++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeOperatorTestHelper.java @@ -20,18 +20,24 @@ package org.apache.hyracks.tests.am.rtree; import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ITypeTraits; +import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; -import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; -import org.apache.hyracks.storage.am.rtree.dataflow.RTreeDataflowHelperFactory; +import org.apache.hyracks.storage.am.rtree.dataflow.RTreeResourceFactory; import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType; +import org.apache.hyracks.storage.common.IResourceFactory; +import org.apache.hyracks.storage.common.IStorageManager; import org.apache.hyracks.tests.am.common.TreeOperatorTestHelper; public class RTreeOperatorTestHelper extends TreeOperatorTestHelper { - public IIndexDataflowHelperFactory createDataFlowHelperFactory( + public IResourceFactory getSecondaryLocalResourceFactory(IStorageManager storageManager, IPrimitiveValueProviderFactory[] valueProviderFactories, RTreePolicyType rtreePolicyType, - IBinaryComparatorFactory[] btreeComparatorFactories, boolean durable) { - return new RTreeDataflowHelperFactory(valueProviderFactories, rtreePolicyType, durable); + IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, + int[] btreeFields, ITypeTraits[] secondaryTypeTraits, + IBinaryComparatorFactory[] secondaryComparatorFactories, IMetadataPageManagerFactory pageManagerFactory) { + return new RTreeResourceFactory(storageManager, secondaryTypeTraits, secondaryComparatorFactories, + pageManagerFactory, valueProviderFactories, rtreePolicyType); } - } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java index 3fe64c7..784cd10 100644 --- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java +++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexInsertOperatorTest.java @@ -23,8 +23,10 @@ import java.io.DataOutput; import org.apache.hyracks.api.constraints.PartitionConstraintHelper; import org.apache.hyracks.api.dataflow.IOperatorDescriptor; -import org.apache.hyracks.api.dataflow.value.*; -import org.apache.hyracks.api.exceptions.HyracksDataException; +import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer; +import org.apache.hyracks.api.dataflow.value.RecordDescriptor; import org.apache.hyracks.api.io.FileSplit; import org.apache.hyracks.api.job.JobSpecification; import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder; @@ -35,12 +37,12 @@ import org.apache.hyracks.dataflow.std.file.IFileSplitProvider; import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor; import org.apache.hyracks.dataflow.std.misc.ConstantTupleSourceOperatorDescriptor; import org.apache.hyracks.storage.am.btree.dataflow.BTreeSearchOperatorDescriptor; +import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; -import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; -import org.apache.hyracks.storage.am.common.freepage.LinkedMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory; import org.apache.hyracks.storage.am.rtree.dataflow.RTreeSearchOperatorDescriptor; import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType; +import org.apache.hyracks.storage.common.IResourceFactory; import org.junit.Before; import org.junit.Test; @@ -76,18 +78,17 @@ public class RTreeSecondaryIndexInsertOperatorTest extends AbstractRTreeOperator tb.addFieldEndOffset(); DoubleSerializerDeserializer.INSTANCE.serialize(-149.024, dos); tb.addFieldEndOffset(); - ISerializerDeserializer[] keyRecDescSers = { DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE }; + ISerializerDeserializer[] keyRecDescSers = + { DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE }; RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers); ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec, keyRecDesc, tb.getFieldEndOffsets(), tb.getByteArray(), tb.getSize()); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, keyProviderOp, NC1_ID); int[] keyFields = { 0, 1, 2, 3 }; - RTreeSearchOperatorDescriptor secondarySearchOp = new RTreeSearchOperatorDescriptor(spec, secondaryRecDesc, - storageManager, lcManagerProvider, secondarySplitProvider, secondaryTypeTraits, - secondaryComparatorFactories, keyFields, rtreeDataflowHelperFactory, false, false, null, - NoOpOperationCallbackFactory.INSTANCE, null, null, pageManagerFactory); + RTreeSearchOperatorDescriptor secondarySearchOp = + new RTreeSearchOperatorDescriptor(spec, secondaryRecDesc, keyFields, true, true, secondaryHelperFactory, + false, false, null, NoOpOperationCallbackFactory.INSTANCE, null, null, false); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondarySearchOp, NC1_ID); // fifth field from the tuples coming from secondary index int[] primaryLowKeyFields = { 4 }; @@ -95,9 +96,8 @@ public class RTreeSecondaryIndexInsertOperatorTest extends AbstractRTreeOperator int[] primaryHighKeyFields = { 4 }; // search primary index BTreeSearchOperatorDescriptor primarySearchOp = new BTreeSearchOperatorDescriptor(spec, primaryRecDesc, - storageManager, lcManagerProvider, primarySplitProvider, primaryTypeTraits, primaryComparatorFactories, - null, primaryLowKeyFields, primaryHighKeyFields, true, true, btreeDataflowHelperFactory, false, false, - null, NoOpOperationCallbackFactory.INSTANCE, null, null, new LinkedMetadataPageManagerFactory()); + primaryLowKeyFields, primaryHighKeyFields, true, true, primaryHelperFactory, false, false, null, + NoOpOperationCallbackFactory.INSTANCE, null, null, false); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primarySearchOp, NC1_ID); IFileSplitProvider outSplits = new ConstantFileSplitProvider(new FileSplit[] { createFile(nc1) }); IOperatorDescriptor printer = new PlainFileWriterOperatorDescriptor(spec, outSplits, ","); @@ -110,13 +110,14 @@ public class RTreeSecondaryIndexInsertOperatorTest extends AbstractRTreeOperator } @Override - protected IIndexDataflowHelperFactory createDataFlowHelperFactory( + protected IResourceFactory createSecondaryResourceFactory( IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType, IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, - int[] btreeFields, int [] rtreeFields, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, - int[] filterFields) throws HyracksDataException { - return ((RTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory(secondaryValueProviderFactories, - rtreePolicyType, null, true); + int[] btreeFields) { + return ((RTreeOperatorTestHelper) testHelper).getSecondaryLocalResourceFactory(storageManager, + secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory, + btreeFields, secondaryTypeTraits, secondaryComparatorFactories, + (IMetadataPageManagerFactory) pageManagerFactory); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java index 0cf9c52..ff44d10 100644 --- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java +++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexScanOperatorTest.java @@ -23,7 +23,10 @@ import java.io.DataOutput; import org.apache.hyracks.api.constraints.PartitionConstraintHelper; import org.apache.hyracks.api.dataflow.IOperatorDescriptor; -import org.apache.hyracks.api.dataflow.value.*; +import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer; +import org.apache.hyracks.api.dataflow.value.RecordDescriptor; import org.apache.hyracks.api.io.FileSplit; import org.apache.hyracks.api.job.JobSpecification; import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder; @@ -33,11 +36,12 @@ import org.apache.hyracks.dataflow.std.file.ConstantFileSplitProvider; import org.apache.hyracks.dataflow.std.file.IFileSplitProvider; import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor; import org.apache.hyracks.dataflow.std.misc.ConstantTupleSourceOperatorDescriptor; +import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; -import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory; import org.apache.hyracks.storage.am.rtree.dataflow.RTreeSearchOperatorDescriptor; import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType; +import org.apache.hyracks.storage.common.IResourceFactory; import org.junit.Before; import org.junit.Test; @@ -72,18 +76,17 @@ public class RTreeSecondaryIndexScanOperatorTest extends AbstractRTreeOperatorTe tb.addFieldEndOffset(); DoubleSerializerDeserializer.INSTANCE.serialize(0.0, dos); tb.addFieldEndOffset(); - ISerializerDeserializer[] keyRecDescSers = { DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE }; + ISerializerDeserializer[] keyRecDescSers = + { DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE }; RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers); ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec, keyRecDesc, tb.getFieldEndOffsets(), tb.getByteArray(), tb.getSize()); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, keyProviderOp, NC1_ID); int[] keyFields = null; - RTreeSearchOperatorDescriptor secondarySearchOp = new RTreeSearchOperatorDescriptor(spec, secondaryRecDesc, - storageManager, lcManagerProvider, secondarySplitProvider, secondaryTypeTraits, - secondaryComparatorFactories, keyFields, rtreeDataflowHelperFactory, false, false, null, - NoOpOperationCallbackFactory.INSTANCE, null, null, pageManagerFactory); + RTreeSearchOperatorDescriptor secondarySearchOp = + new RTreeSearchOperatorDescriptor(spec, secondaryRecDesc, keyFields, true, true, secondaryHelperFactory, + false, false, null, NoOpOperationCallbackFactory.INSTANCE, null, null, false); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondarySearchOp, NC1_ID); IFileSplitProvider outSplits = new ConstantFileSplitProvider(new FileSplit[] { createFile(nc1) }); IOperatorDescriptor printer = new PlainFileWriterOperatorDescriptor(spec, outSplits, ","); @@ -95,18 +98,19 @@ public class RTreeSecondaryIndexScanOperatorTest extends AbstractRTreeOperatorTe } @Override - protected IIndexDataflowHelperFactory createDataFlowHelperFactory( - IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType, - IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, - int[] btreeFields, int[] rtreeFields, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, - int[] filterFields) { - return ((RTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory(secondaryValueProviderFactories, - rtreePolicyType, null, true); - } - - @Override public void cleanup() throws Exception { destroyPrimaryIndex(); destroySecondaryIndex(); } + + @Override + protected IResourceFactory createSecondaryResourceFactory( + IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType, + IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, + int[] btreeFields) { + return ((RTreeOperatorTestHelper) testHelper).getSecondaryLocalResourceFactory(storageManager, + secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory, + btreeFields, secondaryTypeTraits, secondaryComparatorFactories, + (IMetadataPageManagerFactory) pageManagerFactory); + } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java index 8818282..e234322 100644 --- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java +++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexSearchOperatorTest.java @@ -23,8 +23,10 @@ import java.io.DataOutput; import org.apache.hyracks.api.constraints.PartitionConstraintHelper; import org.apache.hyracks.api.dataflow.IOperatorDescriptor; -import org.apache.hyracks.api.dataflow.value.*; -import org.apache.hyracks.api.exceptions.HyracksDataException; +import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer; +import org.apache.hyracks.api.dataflow.value.RecordDescriptor; import org.apache.hyracks.api.io.FileSplit; import org.apache.hyracks.api.job.JobSpecification; import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder; @@ -35,12 +37,12 @@ import org.apache.hyracks.dataflow.std.file.IFileSplitProvider; import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor; import org.apache.hyracks.dataflow.std.misc.ConstantTupleSourceOperatorDescriptor; import org.apache.hyracks.storage.am.btree.dataflow.BTreeSearchOperatorDescriptor; +import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; -import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; -import org.apache.hyracks.storage.am.common.freepage.LinkedMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory; import org.apache.hyracks.storage.am.rtree.dataflow.RTreeSearchOperatorDescriptor; import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType; +import org.apache.hyracks.storage.common.IResourceFactory; import org.junit.Before; import org.junit.Test; @@ -74,18 +76,17 @@ public class RTreeSecondaryIndexSearchOperatorTest extends AbstractRTreeOperator tb.addFieldEndOffset(); DoubleSerializerDeserializer.INSTANCE.serialize(-149.024, dos); tb.addFieldEndOffset(); - ISerializerDeserializer[] keyRecDescSers = { DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, - DoubleSerializerDeserializer.INSTANCE }; + ISerializerDeserializer[] keyRecDescSers = + { DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE, + DoubleSerializerDeserializer.INSTANCE, DoubleSerializerDeserializer.INSTANCE }; RecordDescriptor keyRecDesc = new RecordDescriptor(keyRecDescSers); ConstantTupleSourceOperatorDescriptor keyProviderOp = new ConstantTupleSourceOperatorDescriptor(spec, keyRecDesc, tb.getFieldEndOffsets(), tb.getByteArray(), tb.getSize()); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, keyProviderOp, NC1_ID); int[] keyFields = { 0, 1, 2, 3 }; - RTreeSearchOperatorDescriptor secondarySearchOp = new RTreeSearchOperatorDescriptor(spec, secondaryRecDesc, - storageManager, lcManagerProvider, secondarySplitProvider, secondaryTypeTraits, - secondaryComparatorFactories, keyFields, rtreeDataflowHelperFactory, false, false, null, - NoOpOperationCallbackFactory.INSTANCE, null, null, pageManagerFactory); + RTreeSearchOperatorDescriptor secondarySearchOp = + new RTreeSearchOperatorDescriptor(spec, secondaryRecDesc, keyFields, true, true, secondaryHelperFactory, + false, false, null, NoOpOperationCallbackFactory.INSTANCE, null, null, false); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondarySearchOp, NC1_ID); // fifth field from the tuples coming from secondary index int[] primaryLowKeyFields = { 4 }; @@ -93,9 +94,8 @@ public class RTreeSecondaryIndexSearchOperatorTest extends AbstractRTreeOperator int[] primaryHighKeyFields = { 4 }; // search primary index BTreeSearchOperatorDescriptor primarySearchOp = new BTreeSearchOperatorDescriptor(spec, primaryRecDesc, - storageManager, lcManagerProvider, primarySplitProvider, primaryTypeTraits, primaryComparatorFactories, - null, primaryLowKeyFields, primaryHighKeyFields, true, true, btreeDataflowHelperFactory, false, false, - null, NoOpOperationCallbackFactory.INSTANCE, null, null, new LinkedMetadataPageManagerFactory()); + primaryLowKeyFields, primaryHighKeyFields, true, true, primaryHelperFactory, false, false, null, + NoOpOperationCallbackFactory.INSTANCE, null, null, false); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, primarySearchOp, NC1_ID); IFileSplitProvider outSplits = new ConstantFileSplitProvider(new FileSplit[] { createFile(nc1) }); IOperatorDescriptor printer = new PlainFileWriterOperatorDescriptor(spec, outSplits, ","); @@ -108,13 +108,14 @@ public class RTreeSecondaryIndexSearchOperatorTest extends AbstractRTreeOperator } @Override - protected IIndexDataflowHelperFactory createDataFlowHelperFactory( + protected IResourceFactory createSecondaryResourceFactory( IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType, IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, - int[] btreeFields, int [] rtreeFields, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, - int[] filterFields) throws HyracksDataException { - return ((RTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory(secondaryValueProviderFactories, - rtreePolicyType, null, true); + int[] btreeFields) { + return ((RTreeOperatorTestHelper) testHelper).getSecondaryLocalResourceFactory(storageManager, + secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory, + btreeFields, secondaryTypeTraits, secondaryComparatorFactories, + (IMetadataPageManagerFactory) pageManagerFactory); } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java index 59a57f6..81c47e6 100644 --- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java +++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/rtree/RTreeSecondaryIndexStatsOperatorTest.java @@ -23,18 +23,17 @@ import org.apache.hyracks.api.constraints.PartitionConstraintHelper; import org.apache.hyracks.api.dataflow.IOperatorDescriptor; import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; import org.apache.hyracks.api.dataflow.value.ILinearizeComparatorFactory; -import org.apache.hyracks.api.dataflow.value.ITypeTraits; import org.apache.hyracks.api.io.FileSplit; import org.apache.hyracks.api.job.JobSpecification; import org.apache.hyracks.dataflow.std.connectors.OneToOneConnectorDescriptor; import org.apache.hyracks.dataflow.std.file.ConstantFileSplitProvider; import org.apache.hyracks.dataflow.std.file.IFileSplitProvider; import org.apache.hyracks.dataflow.std.file.PlainFileWriterOperatorDescriptor; +import org.apache.hyracks.storage.am.common.api.IMetadataPageManagerFactory; import org.apache.hyracks.storage.am.common.api.IPrimitiveValueProviderFactory; -import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; import org.apache.hyracks.storage.am.common.dataflow.TreeIndexStatsOperatorDescriptor; -import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory; import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType; +import org.apache.hyracks.storage.common.IResourceFactory; import org.junit.Before; import org.junit.Test; @@ -56,9 +55,8 @@ public class RTreeSecondaryIndexStatsOperatorTest extends AbstractRTreeOperatorT @Test public void showPrimaryIndexStats() throws Exception { JobSpecification spec = new JobSpecification(); - TreeIndexStatsOperatorDescriptor secondaryStatsOp = new TreeIndexStatsOperatorDescriptor(spec, storageManager, - lcManagerProvider, secondarySplitProvider, secondaryTypeTraits, secondaryComparatorFactories, null, - rtreeDataflowHelperFactory, NoOpOperationCallbackFactory.INSTANCE, pageManagerFactory); + TreeIndexStatsOperatorDescriptor secondaryStatsOp = + new TreeIndexStatsOperatorDescriptor(spec, storageManager, secondaryHelperFactory); PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, secondaryStatsOp, NC1_ID); IFileSplitProvider outSplits = new ConstantFileSplitProvider(new FileSplit[] { createFile(nc1) }); IOperatorDescriptor printer = new PlainFileWriterOperatorDescriptor(spec, outSplits, ","); @@ -69,18 +67,19 @@ public class RTreeSecondaryIndexStatsOperatorTest extends AbstractRTreeOperatorT } @Override - protected IIndexDataflowHelperFactory createDataFlowHelperFactory( - IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType, - IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, - int[] btreeFields, int[] rtreeFields, ITypeTraits[] filterTypeTraits, IBinaryComparatorFactory[] filterCmpFactories, - int[] filterFields) { - return ((RTreeOperatorTestHelper) testHelper).createDataFlowHelperFactory(secondaryValueProviderFactories, - rtreePolicyType, null, true); - } - - @Override public void cleanup() throws Exception { destroyPrimaryIndex(); destroySecondaryIndex(); } + + @Override + protected IResourceFactory createSecondaryResourceFactory( + IPrimitiveValueProviderFactory[] secondaryValueProviderFactories, RTreePolicyType rtreePolicyType, + IBinaryComparatorFactory[] btreeComparatorFactories, ILinearizeComparatorFactory linearizerCmpFactory, + int[] btreeFields) { + return ((RTreeOperatorTestHelper) testHelper).getSecondaryLocalResourceFactory(storageManager, + secondaryValueProviderFactories, rtreePolicyType, btreeComparatorFactories, linearizerCmpFactory, + btreeFields, secondaryTypeTraits, secondaryComparatorFactories, + (IMetadataPageManagerFactory) pageManagerFactory); + } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/JobFailureTest.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/JobFailureTest.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/JobFailureTest.java index 6571f7e..871109a 100644 --- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/JobFailureTest.java +++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/integration/JobFailureTest.java @@ -32,7 +32,7 @@ public class JobFailureTest extends AbstractMultiNCIntegrationTest { @Test public void failureOnCreatePushRuntime() throws Exception { - for (int round = 0; round < 1000; ++round) { + for (int round = 0; round < 100; ++round) { execTest(); } } http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java index 78c7c6a..8357ae0 100644 --- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java +++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs/dataflow/HDFSReadOperatorDescriptor.java @@ -84,7 +84,7 @@ public class HDFSReadOperatorDescriptor extends AbstractSingleActivityOperatorDe this.executed = new boolean[scheduledLocations.length]; Arrays.fill(executed, false); this.tupleParserFactory = tupleParserFactory; - this.recordDescriptors[0] = rd; + this.outRecDescs[0] = rd; } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java index cd55098..15bf260 100644 --- a/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java +++ b/hyracks-fullstack/hyracks/hyracks-hdfs/hyracks-hdfs-core/src/main/java/org/apache/hyracks/hdfs2/dataflow/HDFSReadOperatorDescriptor.java @@ -97,7 +97,7 @@ public class HDFSReadOperatorDescriptor extends AbstractSingleActivityOperatorDe this.executed = new boolean[scheduledLocations.length]; Arrays.fill(executed, false); this.tupleParserFactory = tupleParserFactory; - this.recordDescriptors[0] = rd; + this.outRecDescs[0] = rd; } @Override http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/pom.xml ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/pom.xml b/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/pom.xml index 659544e..18343f0 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/pom.xml +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/pom.xml @@ -43,11 +43,6 @@ <dependencies> <dependency> <groupId>org.apache.hyracks</groupId> - <artifactId>hyracks-storage-am-common</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>org.apache.hyracks</groupId> <artifactId>hyracks-dataflow-common</artifactId> <version>${project.version}</version> </dependency> http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java b/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java index dee8271..3b49d08 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-bloomfilter/src/main/java/org/apache/hyracks/storage/am/bloomfilter/impls/BloomFilter.java @@ -24,7 +24,7 @@ import java.nio.ByteBuffer; import org.apache.hyracks.api.exceptions.HyracksDataException; import org.apache.hyracks.api.io.FileReference; import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; -import org.apache.hyracks.storage.am.common.api.IIndexBulkLoader; +import org.apache.hyracks.storage.common.IIndexBulkLoader; import org.apache.hyracks.storage.common.buffercache.IBufferCache; import org.apache.hyracks.storage.common.buffercache.ICachedPage; import org.apache.hyracks.storage.common.buffercache.IFIFOPageQueue; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-btree/pom.xml ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/pom.xml b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/pom.xml index 639053f..ec04f27 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/pom.xml +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/pom.xml @@ -16,7 +16,8 @@ ! specific language governing permissions and limitations ! under the License. !--> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <artifactId>hyracks-storage-am-btree</artifactId> <name>hyracks-storage-am-btree</name> @@ -103,5 +104,9 @@ <artifactId>hyracks-data-std</artifactId> <version>${project.version}</version> </dependency> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> </dependencies> -</project> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IBTreeLeafFrame.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IBTreeLeafFrame.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IBTreeLeafFrame.java index 37e0ab8..ea1bd5f 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IBTreeLeafFrame.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IBTreeLeafFrame.java @@ -24,7 +24,7 @@ import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference; import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; import org.apache.hyracks.storage.am.common.ophelpers.FindTupleMode; import org.apache.hyracks.storage.am.common.ophelpers.FindTupleNoExactMatchPolicy; -import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator; +import org.apache.hyracks.storage.common.MultiComparator; import org.apache.hyracks.storage.common.buffercache.IBufferCache; import org.apache.hyracks.storage.common.buffercache.IExtraPageBlockHelper; http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IPrefixSlotManager.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IPrefixSlotManager.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IPrefixSlotManager.java index 44dc69f..ceae674 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IPrefixSlotManager.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/api/IPrefixSlotManager.java @@ -25,7 +25,7 @@ import org.apache.hyracks.storage.am.common.api.ISlotManager; import org.apache.hyracks.storage.am.common.api.ITreeIndexTupleReference; import org.apache.hyracks.storage.am.common.ophelpers.FindTupleMode; import org.apache.hyracks.storage.am.common.ophelpers.FindTupleNoExactMatchPolicy; -import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator; +import org.apache.hyracks.storage.common.MultiComparator; /** * A slot consists of two fields. The first field is 1 byte and it indicates the slot number of http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/compressors/FieldPrefixCompressor.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/compressors/FieldPrefixCompressor.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/compressors/FieldPrefixCompressor.java index 00121ec..ac14b94 100644 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/compressors/FieldPrefixCompressor.java +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/compressors/FieldPrefixCompressor.java @@ -33,8 +33,8 @@ import org.apache.hyracks.storage.am.btree.impls.FieldPrefixSlotManager; import org.apache.hyracks.storage.am.btree.impls.FieldPrefixTupleReference; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrame; import org.apache.hyracks.storage.am.common.api.ITreeIndexFrameCompressor; -import org.apache.hyracks.storage.am.common.ophelpers.MultiComparator; import org.apache.hyracks.storage.am.common.tuples.TypeAwareTupleWriter; +import org.apache.hyracks.storage.common.MultiComparator; public class FieldPrefixCompressor implements ITreeIndexFrameCompressor { http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeDataflowHelper.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeDataflowHelper.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeDataflowHelper.java deleted file mode 100644 index 6f6722a..0000000 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeDataflowHelper.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.hyracks.storage.am.btree.dataflow; - -import org.apache.hyracks.api.context.IHyracksTaskContext; -import org.apache.hyracks.api.exceptions.HyracksDataException; -import org.apache.hyracks.api.io.FileReference; -import org.apache.hyracks.storage.am.btree.frames.BTreeLeafFrameType; -import org.apache.hyracks.storage.am.btree.util.BTreeUtils; -import org.apache.hyracks.storage.am.common.api.ITreeIndex; -import org.apache.hyracks.storage.am.common.dataflow.AbstractTreeIndexOperatorDescriptor; -import org.apache.hyracks.storage.am.common.dataflow.IIndexOperatorDescriptor; -import org.apache.hyracks.storage.am.common.dataflow.TreeIndexDataflowHelper; -import org.apache.hyracks.storage.am.common.util.IndexFileNameUtil; -import org.apache.hyracks.storage.common.buffercache.IBufferCache; - -public class BTreeDataflowHelper extends TreeIndexDataflowHelper { - - public BTreeDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx, int partition, - boolean durable) throws HyracksDataException { - super(opDesc, ctx, partition, durable); - } - - @Override - public ITreeIndex createIndexInstance() throws HyracksDataException { - AbstractTreeIndexOperatorDescriptor treeOpDesc = (AbstractTreeIndexOperatorDescriptor) opDesc; - FileReference fileRef = IndexFileNameUtil.getIndexAbsoluteFileRef(treeOpDesc, - ctx.getTaskAttemptId().getTaskId().getPartition(), ctx.getIOManager()); - IBufferCache bufferCache = opDesc.getStorageManager().getBufferCache(ctx); - return BTreeUtils.createBTree(bufferCache, opDesc.getStorageManager().getFileMapProvider(ctx), - treeOpDesc.getTreeIndexTypeTraits(), treeOpDesc.getTreeIndexComparatorFactories(), - BTreeLeafFrameType.REGULAR_NSM, fileRef, pageManagerFactory.createPageManager(bufferCache)); - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeDataflowHelperFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeDataflowHelperFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeDataflowHelperFactory.java deleted file mode 100644 index c4e3ce7..0000000 --- a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeDataflowHelperFactory.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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 org.apache.hyracks.storage.am.btree.dataflow; - -import org.apache.hyracks.api.context.IHyracksTaskContext; -import org.apache.hyracks.api.exceptions.HyracksDataException; -import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory; -import org.apache.hyracks.storage.am.common.dataflow.IIndexOperatorDescriptor; -import org.apache.hyracks.storage.am.common.dataflow.IndexDataflowHelper; - -public class BTreeDataflowHelperFactory implements IIndexDataflowHelperFactory { - - private static final long serialVersionUID = 1L; - - private final boolean durable; - - public BTreeDataflowHelperFactory(boolean durable) { - this.durable = durable; - } - - @Override - public IndexDataflowHelper createIndexDataflowHelper(IIndexOperatorDescriptor opDesc, IHyracksTaskContext ctx, - int partition) throws HyracksDataException { - return new BTreeDataflowHelper(opDesc, ctx, partition, durable); - } -} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResource.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResource.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResource.java new file mode 100644 index 0000000..90bc126 --- /dev/null +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResource.java @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.hyracks.storage.am.btree.dataflow; + +import org.apache.hyracks.api.application.INCServiceContext; +import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ITypeTraits; +import org.apache.hyracks.api.exceptions.HyracksDataException; +import org.apache.hyracks.api.io.FileReference; +import org.apache.hyracks.api.io.IIOManager; +import org.apache.hyracks.storage.am.btree.frames.BTreeLeafFrameType; +import org.apache.hyracks.storage.am.btree.util.BTreeUtils; +import org.apache.hyracks.storage.am.common.api.IPageManagerFactory; +import org.apache.hyracks.storage.common.IIndex; +import org.apache.hyracks.storage.common.IResource; +import org.apache.hyracks.storage.common.IStorageManager; +import org.apache.hyracks.storage.common.buffercache.IBufferCache; + +public class BTreeResource implements IResource { + + private static final long serialVersionUID = 1L; + private final String path; + private final IStorageManager storageManager; + private final ITypeTraits[] typeTraits; + private final IBinaryComparatorFactory[] comparatorFactories; + private final IPageManagerFactory pageManagerFactory; + + public BTreeResource(String path, IStorageManager storageManager, ITypeTraits[] typeTraits, + IBinaryComparatorFactory[] comparatorFactories, IPageManagerFactory pageManagerFactory) { + this.path = path; + this.storageManager = storageManager; + this.typeTraits = typeTraits; + this.comparatorFactories = comparatorFactories; + this.pageManagerFactory = pageManagerFactory; + } + + @Override + public IIndex createInstance(INCServiceContext ctx) throws HyracksDataException { + IBufferCache bufferCache = storageManager.getBufferCache(ctx); + IIOManager ioManager = ctx.getIoManager(); + FileReference resourceRef = ioManager.resolve(path); + return BTreeUtils.createBTree(bufferCache, storageManager.getFileMapProvider(ctx), typeTraits, + comparatorFactories, BTreeLeafFrameType.REGULAR_NSM, resourceRef, + pageManagerFactory.createPageManager(bufferCache)); + } + + @Override + public String getPath() { + return path; + } +} http://git-wip-us.apache.org/repos/asf/asterixdb/blob/735532e4/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResourceFactory.java ---------------------------------------------------------------------- diff --git a/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResourceFactory.java b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResourceFactory.java new file mode 100644 index 0000000..7a21495 --- /dev/null +++ b/hyracks-fullstack/hyracks/hyracks-storage-am-btree/src/main/java/org/apache/hyracks/storage/am/btree/dataflow/BTreeResourceFactory.java @@ -0,0 +1,51 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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 org.apache.hyracks.storage.am.btree.dataflow; + +import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory; +import org.apache.hyracks.api.dataflow.value.ITypeTraits; +import org.apache.hyracks.api.io.FileReference; +import org.apache.hyracks.storage.am.common.api.IPageManagerFactory; +import org.apache.hyracks.storage.common.IResource; +import org.apache.hyracks.storage.common.IResourceFactory; +import org.apache.hyracks.storage.common.IStorageManager; + +public class BTreeResourceFactory implements IResourceFactory { + + private static final long serialVersionUID = 1L; + private final IStorageManager storageManager; + private final ITypeTraits[] typeTraits; + private final IBinaryComparatorFactory[] comparatorFactories; + private final IPageManagerFactory pageManagerFactory; + + public BTreeResourceFactory(IStorageManager storageManager, ITypeTraits[] typeTraits, + IBinaryComparatorFactory[] comparatorFactories, IPageManagerFactory pageManagerFactory) { + this.storageManager = storageManager; + this.typeTraits = typeTraits; + this.comparatorFactories = comparatorFactories; + this.pageManagerFactory = pageManagerFactory; + } + + @Override + public IResource createResource(FileReference fileRef) { + return new BTreeResource(fileRef.getRelativePath(), storageManager, typeTraits, comparatorFactories, + pageManagerFactory); + } + +}