You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@asterixdb.apache.org by bu...@apache.org on 2017/02/02 18:24:14 UTC
[05/28] asterixdb git commit: Introduce IStorageComponentProvider
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/FrameDebugUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/FrameDebugUtils.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/FrameDebugUtils.java
deleted file mode 100644
index aa27c42..0000000
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/FrameDebugUtils.java
+++ /dev/null
@@ -1,298 +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.dataflow.common.util;
-
-import java.io.DataInputStream;
-import java.io.IOException;
-import java.nio.ByteBuffer;
-import java.util.Arrays;
-
-import org.apache.hyracks.api.comm.IFrameTupleAccessor;
-import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-
-/**
- * A Util class used for inspecting frames
- * for debugging purposes
- */
-public class FrameDebugUtils {
- private FrameDebugUtils() {
- }
-
- /**
- * Debugging method
- * @param fta
- * @param recordDescriptor
- * @param prefix
- */
- public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, String prefix) {
- try (ByteBufferInputStream bbis = new ByteBufferInputStream();
- DataInputStream dis = new DataInputStream(bbis)) {
- int tc = fta.getTupleCount();
- StringBuilder sb = new StringBuilder();
- sb.append(prefix).append("TC: " + tc).append("\n");
- for (int i = 0; i < tc; ++i) {
- prettyPrint(fta, recordDescriptor, i, bbis, dis, sb);
- }
- System.err.println(sb.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Debugging method
- * @param fta
- * @param recordDescriptor
- */
- public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor) {
- prettyPrint(fta, recordDescriptor, "");
- }
-
- /**
- * Debugging method
- * @param fta
- * @param operator
- */
- public void prettyPrintTags(IFrameTupleAccessor fta, String operator) {
- try (ByteBufferInputStream bbis = new ByteBufferInputStream();
- DataInputStream dis = new DataInputStream(bbis)) {
- int tc = fta.getTupleCount();
- StringBuilder sb = new StringBuilder();
- sb.append(operator + ":");
- sb.append("TC: " + tc).append("\n");
- for (int i = 0; i < tc; ++i) {
- prettyPrintTag(fta, i, bbis, dis, sb);
- }
- System.err.println(sb.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Debugging method
- * @param fta
- * @param tid
- * @param bbis
- * @param dis
- * @param sb
- */
- protected void prettyPrintTag(IFrameTupleAccessor fta, int tid, ByteBufferInputStream bbis, DataInputStream dis,
- StringBuilder sb) {
- sb.append(" tid" + tid + ":(" + fta.getTupleStartOffset(tid) + ", " + fta.getTupleEndOffset(tid) + ")[");
- for (int j = 0; j < fta.getFieldCount(); ++j) {
- sb.append(" ");
- if (j > 0) {
- sb.append("|");
- }
- sb.append("f" + j + ":(" + fta.getFieldStartOffset(tid, j) + ", " + fta.getFieldEndOffset(tid, j) + ") ");
- sb.append("{");
- sb.append(Byte.toString(fta.getBuffer().array()[fta.getTupleStartOffset(tid) + fta.getFieldSlotsLength()
- + fta.getFieldStartOffset(tid, j)]));
- sb.append("}");
- }
- sb.append("\n");
- }
-
- /**
- * Debugging method
- * @param fta
- * @param recordDescriptor
- * @param tid
- * @param bbis
- * @param dis
- * @param sb
- */
- protected void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, int tid,
- ByteBufferInputStream bbis, DataInputStream dis,
- StringBuilder sb) {
- sb.append(" tid" + tid + ":(" + fta.getTupleStartOffset(tid) + ", " + fta.getTupleEndOffset(tid) + ")[");
- for (int j = 0; j < fta.getFieldCount(); ++j) {
- sb.append(" ");
- if (j > 0) {
- sb.append("|");
- }
- sb.append("f" + j + ":(" + fta.getFieldStartOffset(tid, j) + ", " + fta.getFieldEndOffset(tid, j) + ") ");
- sb.append("{");
- bbis.setByteBuffer(fta.getBuffer(), fta.getTupleStartOffset(tid) + fta.getFieldSlotsLength() + fta
- .getFieldStartOffset(tid, j));
- try {
- sb.append(recordDescriptor.getFields()[j].deserialize(dis));
- } catch (Exception e) {
- e.printStackTrace();
- sb.append("Failed to deserialize field" + j);
- }
- sb.append("}");
- }
- sb.append("\n");
- }
-
-
- /**
- * Debugging method
- * @param fta
- * @param recordDescriptor
- * @param tid
- */
- public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, int tid) {
- try (ByteBufferInputStream bbis = new ByteBufferInputStream();
- DataInputStream dis = new DataInputStream(bbis)) {
- StringBuilder sb = new StringBuilder();
- prettyPrint(fta, recordDescriptor, tid, bbis, dis, sb);
- System.err.println(sb.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Debugging method
- * They are safe as they don't print records. Printing records
- * using IserializerDeserializer can print incorrect results or throw exceptions.
- * A better way yet would be to use record pointable.
- * @param fta
- * @param recordDescriptor
- * @param prefix
- * @param recordFields
- * @throws IOException
- */
- public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, String prefix,
- int[] recordFields) throws IOException {
- try (ByteBufferInputStream bbis = new ByteBufferInputStream();
- DataInputStream dis = new DataInputStream(bbis)) {
- int tc = fta.getTupleCount();
- StringBuilder sb = new StringBuilder();
- sb.append(prefix).append("TC: " + tc).append("\n");
- for (int i = 0; i < tc; ++i) {
- prettyPrint(fta, recordDescriptor, i, bbis, dis, sb, recordFields);
- }
- System.err.println(sb.toString());
- }
- }
-
- /**
- * Debugging method
- * @param fta
- * @param recordDescriptor
- * @param tIdx
- * @param recordFields
- * @throws IOException
- */
- public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, int tIdx, int[] recordFields)
- throws IOException {
- try (ByteBufferInputStream bbis = new ByteBufferInputStream();
- DataInputStream dis = new DataInputStream(bbis)) {
- StringBuilder sb = new StringBuilder();
- prettyPrint(fta, recordDescriptor, tIdx, bbis, dis, sb, recordFields);
- System.err.println(sb.toString());
- }
- }
-
- /**
- * Debugging method
- * @param tuple
- * @param fieldsIdx
- * @param descIdx
- * @throws HyracksDataException
- */
- public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, ITupleReference tuple,
- int fieldsIdx, int descIdx)
- throws HyracksDataException {
- try (ByteBufferInputStream bbis = new ByteBufferInputStream();
- DataInputStream dis = new DataInputStream(bbis)) {
- StringBuilder sb = new StringBuilder();
- sb.append("[");
- sb.append("f" + fieldsIdx + ":(" + tuple.getFieldStart(fieldsIdx) + ", "
- + (tuple.getFieldLength(fieldsIdx) + tuple.getFieldStart(fieldsIdx)) + ") ");
- sb.append("{");
- ByteBuffer bytebuff = ByteBuffer.wrap(tuple.getFieldData(fieldsIdx));
- bbis.setByteBuffer(bytebuff, tuple.getFieldStart(fieldsIdx));
- sb.append(recordDescriptor.getFields()[descIdx].deserialize(dis));
- sb.append("}");
- sb.append("\n");
- System.err.println(sb.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Debugging method
- * @param tuple
- * @param descF
- * @throws HyracksDataException
- */
- public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, ITupleReference tuple,
- int[] descF) throws HyracksDataException {
- try (ByteBufferInputStream bbis = new ByteBufferInputStream();
- DataInputStream dis = new DataInputStream(bbis)) {
- StringBuilder sb = new StringBuilder();
- sb.append("[");
- for (int j = 0; j < descF.length; ++j) {
- sb.append("f" + j + ":(" + tuple.getFieldStart(j) + ", "
- + (tuple.getFieldLength(j) + tuple.getFieldStart(j)) + ") ");
- sb.append("{");
- ByteBuffer bytebuff = ByteBuffer.wrap(tuple.getFieldData(j));
- bbis.setByteBuffer(bytebuff, tuple.getFieldStart(j));
- sb.append(recordDescriptor.getFields()[descF[j]].deserialize(dis));
- sb.append("}");
- }
- sb.append("\n");
- System.err.println(sb.toString());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * Debugging method
- * @param fta
- * @param recordDescriptor
- * @param tid
- * @param bbis
- * @param dis
- * @param sb
- * @param recordFields
- * @throws IOException
- */
- protected void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, int tid,
- ByteBufferInputStream bbis, DataInputStream dis,
- StringBuilder sb,
- int[] recordFields) throws IOException {
- Arrays.sort(recordFields);
- sb.append(" tid" + tid + ":(" + fta.getTupleStartOffset(tid) + ", " + fta.getTupleEndOffset(tid) + ")[");
- for (int j = 0; j < fta.getFieldCount(); ++j) {
- sb.append("f" + j + ":(" + fta.getFieldStartOffset(tid, j) + ", " + fta.getFieldEndOffset(tid, j) + ") ");
- sb.append("{");
- bbis.setByteBuffer(fta.getBuffer(), fta.getTupleStartOffset(tid) + fta
- .getFieldSlotsLength() + fta.getFieldStartOffset(tid, j));
- if (Arrays.binarySearch(recordFields, j) >= 0) {
- sb.append("{a record field: only print using pointable:");
- sb.append("tag->" + dis.readByte() + "}");
- } else {
- sb.append(recordDescriptor.getFields()[j].deserialize(dis));
- }
- sb.append("}");
- }
- sb.append("\n");
- }
-}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/SerdeUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/SerdeUtils.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/SerdeUtils.java
deleted file mode 100644
index 99c438e..0000000
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/SerdeUtils.java
+++ /dev/null
@@ -1,147 +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.dataflow.common.util;
-
-import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
-import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.dataflow.value.ITypeTraits;
-import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
-import org.apache.hyracks.data.std.primitive.BooleanPointable;
-import org.apache.hyracks.data.std.primitive.DoublePointable;
-import org.apache.hyracks.data.std.primitive.FloatPointable;
-import org.apache.hyracks.data.std.primitive.IntegerPointable;
-import org.apache.hyracks.data.std.primitive.LongPointable;
-import org.apache.hyracks.data.std.primitive.ShortPointable;
-import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
-import org.apache.hyracks.dataflow.common.data.marshalling.BooleanSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.Integer64SerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.ShortSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
-
-@SuppressWarnings("rawtypes")
-public class SerdeUtils {
- public static class PayloadTypeTraits implements ITypeTraits {
- private static final long serialVersionUID = 1L;
- final int payloadSize;
-
- public PayloadTypeTraits(int payloadSize) {
- this.payloadSize = payloadSize;
- }
-
- @Override
- public boolean isFixedLength() {
- return true;
- }
-
- @Override
- public int getFixedLength() {
- return payloadSize;
- }
- }
-
- public static ITypeTraits[] serdesToTypeTraits(ISerializerDeserializer[] serdes) {
- ITypeTraits[] typeTraits = new ITypeTraits[serdes.length];
- for (int i = 0; i < serdes.length; i++) {
- typeTraits[i] = serdeToTypeTrait(serdes[i]);
- }
- return typeTraits;
- }
-
- public static ITypeTraits[] serdesToTypeTraits(ISerializerDeserializer[] serdes, int payloadSize) {
- ITypeTraits[] typeTraits = new ITypeTraits[serdes.length + 1];
- for (int i = 0; i < serdes.length; i++) {
- typeTraits[i] = serdeToTypeTrait(serdes[i]);
- }
- typeTraits[serdes.length] = new PayloadTypeTraits(payloadSize);
- return typeTraits;
- }
-
- public static ITypeTraits serdeToTypeTrait(ISerializerDeserializer serde) {
- if (serde instanceof ShortSerializerDeserializer) {
- return ShortPointable.TYPE_TRAITS;
- }
- if (serde instanceof IntegerSerializerDeserializer) {
- return IntegerPointable.TYPE_TRAITS;
- }
- if (serde instanceof Integer64SerializerDeserializer) {
- return LongPointable.TYPE_TRAITS;
- }
- if (serde instanceof FloatSerializerDeserializer) {
- return FloatPointable.TYPE_TRAITS;
- }
- if (serde instanceof DoubleSerializerDeserializer) {
- return DoublePointable.TYPE_TRAITS;
- }
- if (serde instanceof BooleanSerializerDeserializer) {
- return BooleanPointable.TYPE_TRAITS;
- }
- return UTF8StringPointable.TYPE_TRAITS;
- }
-
- public static IBinaryComparator[] serdesToComparators(ISerializerDeserializer[] serdes, int numSerdes) {
- IBinaryComparator[] comparators = new IBinaryComparator[numSerdes];
- for (int i = 0; i < numSerdes; i++) {
- comparators[i] = serdeToComparator(serdes[i]);
- }
- return comparators;
- }
-
- public static IBinaryComparator serdeToComparator(ISerializerDeserializer serde) {
- IBinaryComparatorFactory f = serdeToComparatorFactory(serde);
- return f.createBinaryComparator();
- }
-
- public static IBinaryComparatorFactory[] serdesToComparatorFactories(ISerializerDeserializer[] serdes, int numSerdes) {
- IBinaryComparatorFactory[] comparatorsFactories = new IBinaryComparatorFactory[numSerdes];
- for (int i = 0; i < numSerdes; i++) {
- comparatorsFactories[i] = serdeToComparatorFactory(serdes[i]);
- }
- return comparatorsFactories;
- }
-
- public static IBinaryComparatorFactory serdeToComparatorFactory(ISerializerDeserializer serde) {
- if (serde instanceof ShortSerializerDeserializer) {
- return PointableBinaryComparatorFactory.of(ShortPointable.FACTORY);
- }
- if (serde instanceof IntegerSerializerDeserializer) {
- return PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY);
- }
- if (serde instanceof Integer64SerializerDeserializer) {
- return PointableBinaryComparatorFactory.of(LongPointable.FACTORY);
- }
- if (serde instanceof FloatSerializerDeserializer) {
- return PointableBinaryComparatorFactory.of(FloatPointable.FACTORY);
- }
- if (serde instanceof DoubleSerializerDeserializer) {
- return PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
- }
- if (serde instanceof BooleanSerializerDeserializer) {
- throw new UnsupportedOperationException("Binary comparator factory for Boolean not implemented.");
- }
- if (serde instanceof UTF8StringSerializerDeserializer) {
- return PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY);
- }
- throw new UnsupportedOperationException("Binary comparator for + " + serde.toString() + " not implemented.");
- }
-}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TaskUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TaskUtils.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TaskUtils.java
deleted file mode 100644
index 4f27d79..0000000
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TaskUtils.java
+++ /dev/null
@@ -1,77 +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.dataflow.common.util;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-
-/**
- * A Utility class for facilitating common operations used with a hyracks task
- */
-public class TaskUtils {
- private TaskUtils() {
- }
-
- /**
- * get the shared object of a task as a Map<String,Object>
- *
- * @param ctx
- * the task context
- * @param create
- * @return the task shared map
- */
- @SuppressWarnings("unchecked")
- public static Map<String, Object> getSharedMap(IHyracksTaskContext ctx, boolean create) {
- if (ctx.getSharedObject() != null) {
- return (Map<String, Object>) ctx.getSharedObject();
- } else if (create) {
- Map<String, Object> taskMap = new HashMap<>();
- ctx.setSharedObject(taskMap);
- return taskMap;
- } else {
- return null;
- }
- }
-
- /**
- * put the key value pair in a map task object
- *
- * @param key
- * @param ctx
- * @param object
- */
- public static void putInSharedMap(String key, Object object, IHyracksTaskContext ctx) {
- TaskUtils.getSharedMap(ctx, true).put(key, object);
- }
-
- /**
- * get a <T> object from the shared map of the task
- *
- * @param key
- * @param ctx
- * @return the value associated with the key casted as T
- */
- @SuppressWarnings("unchecked")
- public static <T> T get(String key, IHyracksTaskContext ctx) {
- Map<String, Object> sharedMap = TaskUtils.getSharedMap(ctx, false);
- return sharedMap == null ? null : (T) sharedMap.get(key);
- }
-}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
deleted file mode 100644
index fcc6274..0000000
--- a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/util/TupleUtils.java
+++ /dev/null
@@ -1,140 +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.dataflow.common.util;
-
-import java.io.ByteArrayInputStream;
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.DataOutput;
-
-import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
-import org.apache.hyracks.api.exceptions.HyracksDataException;
-import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
-import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
-import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
-import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
-import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
-
-@SuppressWarnings("rawtypes")
-public class TupleUtils {
- @SuppressWarnings("unchecked")
- public static void createTuple(ArrayTupleBuilder tupleBuilder, ArrayTupleReference tuple,
- ISerializerDeserializer[] fieldSerdes, final Object... fields) throws HyracksDataException {
- DataOutput dos = tupleBuilder.getDataOutput();
- tupleBuilder.reset();
- int numFields = Math.min(tupleBuilder.getFieldEndOffsets().length, fields.length);
- for (int i = 0; i < numFields; i++) {
- fieldSerdes[i].serialize(fields[i], dos);
- tupleBuilder.addFieldEndOffset();
- }
- tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
- }
-
- public static ITupleReference createTuple(ISerializerDeserializer[] fieldSerdes, final Object... fields)
- throws HyracksDataException {
- ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fields.length);
- ArrayTupleReference tuple = new ArrayTupleReference();
- createTuple(tupleBuilder, tuple, fieldSerdes, fields);
- return tuple;
- }
-
- public static void createIntegerTuple(ArrayTupleBuilder tupleBuilder, ArrayTupleReference tuple,
- final int... fields) throws HyracksDataException {
- DataOutput dos = tupleBuilder.getDataOutput();
- tupleBuilder.reset();
- for (final int i : fields) {
- IntegerSerializerDeserializer.INSTANCE.serialize(i, dos);
- tupleBuilder.addFieldEndOffset();
- }
- tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
- }
-
- public static ITupleReference createIntegerTuple(final int... fields) throws HyracksDataException {
- ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fields.length);
- ArrayTupleReference tuple = new ArrayTupleReference();
- createIntegerTuple(tupleBuilder, tuple, fields);
- return tuple;
- }
-
- public static void createDoubleTuple(ArrayTupleBuilder tupleBuilder, ArrayTupleReference tuple,
- final double... fields) throws HyracksDataException {
- DataOutput dos = tupleBuilder.getDataOutput();
- tupleBuilder.reset();
- for (final double i : fields) {
- DoubleSerializerDeserializer.INSTANCE.serialize(i, dos);
- tupleBuilder.addFieldEndOffset();
- }
- tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
- }
-
- public static ITupleReference createDoubleTuple(final double... fields) throws HyracksDataException {
- ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fields.length);
- ArrayTupleReference tuple = new ArrayTupleReference();
- createDoubleTuple(tupleBuilder, tuple, fields);
- return tuple;
- }
-
- public static String printTuple(ITupleReference tuple, ISerializerDeserializer[] fields)
- throws HyracksDataException {
- StringBuilder strBuilder = new StringBuilder();
- int numPrintFields = Math.min(tuple.getFieldCount(), fields.length);
- for (int i = 0; i < numPrintFields; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i),
- tuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- Object o = fields[i].deserialize(dataIn);
- strBuilder.append(o.toString());
- if (i != fields.length - 1) {
- strBuilder.append(" ");
- }
- }
- return strBuilder.toString();
- }
-
- public static Object[] deserializeTuple(ITupleReference tuple, ISerializerDeserializer[] fields)
- throws HyracksDataException {
- int numFields = Math.min(tuple.getFieldCount(), fields.length);
- Object[] objs = new Object[numFields];
- for (int i = 0; i < numFields; i++) {
- ByteArrayInputStream inStream = new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i),
- tuple.getFieldLength(i));
- DataInput dataIn = new DataInputStream(inStream);
- objs[i] = fields[i].deserialize(dataIn);
- }
- return objs;
- }
-
- public static ITupleReference copyTuple(ITupleReference tuple) throws HyracksDataException {
- ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(tuple.getFieldCount());
- for (int i = 0; i < tuple.getFieldCount(); i++) {
- tupleBuilder.addField(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i));
- }
- ArrayTupleReference tupleCopy = new ArrayTupleReference();
- tupleCopy.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
- return tupleCopy;
- }
-
- public static void copyTuple(ArrayTupleBuilder tupleBuilder, ITupleReference tuple, int numFields) throws HyracksDataException {
- tupleBuilder.reset();
- for (int i = 0; i < numFields; i++) {
- tupleBuilder.addField(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/FrameDebugUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/FrameDebugUtils.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/FrameDebugUtils.java
new file mode 100644
index 0000000..66e7ae0
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/FrameDebugUtils.java
@@ -0,0 +1,298 @@
+/*
+ * 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.dataflow.common.utils;
+
+import java.io.DataInputStream;
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
+
+import org.apache.hyracks.api.comm.IFrameTupleAccessor;
+import org.apache.hyracks.api.dataflow.value.RecordDescriptor;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.util.ByteBufferInputStream;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+
+/**
+ * A Util class used for inspecting frames
+ * for debugging purposes
+ */
+public class FrameDebugUtils {
+ private FrameDebugUtils() {
+ }
+
+ /**
+ * Debugging method
+ * @param fta
+ * @param recordDescriptor
+ * @param prefix
+ */
+ public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, String prefix) {
+ try (ByteBufferInputStream bbis = new ByteBufferInputStream();
+ DataInputStream dis = new DataInputStream(bbis)) {
+ int tc = fta.getTupleCount();
+ StringBuilder sb = new StringBuilder();
+ sb.append(prefix).append("TC: " + tc).append("\n");
+ for (int i = 0; i < tc; ++i) {
+ prettyPrint(fta, recordDescriptor, i, bbis, dis, sb);
+ }
+ System.err.println(sb.toString());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Debugging method
+ * @param fta
+ * @param recordDescriptor
+ */
+ public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor) {
+ prettyPrint(fta, recordDescriptor, "");
+ }
+
+ /**
+ * Debugging method
+ * @param fta
+ * @param operator
+ */
+ public void prettyPrintTags(IFrameTupleAccessor fta, String operator) {
+ try (ByteBufferInputStream bbis = new ByteBufferInputStream();
+ DataInputStream dis = new DataInputStream(bbis)) {
+ int tc = fta.getTupleCount();
+ StringBuilder sb = new StringBuilder();
+ sb.append(operator + ":");
+ sb.append("TC: " + tc).append("\n");
+ for (int i = 0; i < tc; ++i) {
+ prettyPrintTag(fta, i, bbis, dis, sb);
+ }
+ System.err.println(sb.toString());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Debugging method
+ * @param fta
+ * @param tid
+ * @param bbis
+ * @param dis
+ * @param sb
+ */
+ protected void prettyPrintTag(IFrameTupleAccessor fta, int tid, ByteBufferInputStream bbis, DataInputStream dis,
+ StringBuilder sb) {
+ sb.append(" tid" + tid + ":(" + fta.getTupleStartOffset(tid) + ", " + fta.getTupleEndOffset(tid) + ")[");
+ for (int j = 0; j < fta.getFieldCount(); ++j) {
+ sb.append(" ");
+ if (j > 0) {
+ sb.append("|");
+ }
+ sb.append("f" + j + ":(" + fta.getFieldStartOffset(tid, j) + ", " + fta.getFieldEndOffset(tid, j) + ") ");
+ sb.append("{");
+ sb.append(Byte.toString(fta.getBuffer().array()[fta.getTupleStartOffset(tid) + fta.getFieldSlotsLength()
+ + fta.getFieldStartOffset(tid, j)]));
+ sb.append("}");
+ }
+ sb.append("\n");
+ }
+
+ /**
+ * Debugging method
+ * @param fta
+ * @param recordDescriptor
+ * @param tid
+ * @param bbis
+ * @param dis
+ * @param sb
+ */
+ protected void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, int tid,
+ ByteBufferInputStream bbis, DataInputStream dis,
+ StringBuilder sb) {
+ sb.append(" tid" + tid + ":(" + fta.getTupleStartOffset(tid) + ", " + fta.getTupleEndOffset(tid) + ")[");
+ for (int j = 0; j < fta.getFieldCount(); ++j) {
+ sb.append(" ");
+ if (j > 0) {
+ sb.append("|");
+ }
+ sb.append("f" + j + ":(" + fta.getFieldStartOffset(tid, j) + ", " + fta.getFieldEndOffset(tid, j) + ") ");
+ sb.append("{");
+ bbis.setByteBuffer(fta.getBuffer(), fta.getTupleStartOffset(tid) + fta.getFieldSlotsLength() + fta
+ .getFieldStartOffset(tid, j));
+ try {
+ sb.append(recordDescriptor.getFields()[j].deserialize(dis));
+ } catch (Exception e) {
+ e.printStackTrace();
+ sb.append("Failed to deserialize field" + j);
+ }
+ sb.append("}");
+ }
+ sb.append("\n");
+ }
+
+
+ /**
+ * Debugging method
+ * @param fta
+ * @param recordDescriptor
+ * @param tid
+ */
+ public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, int tid) {
+ try (ByteBufferInputStream bbis = new ByteBufferInputStream();
+ DataInputStream dis = new DataInputStream(bbis)) {
+ StringBuilder sb = new StringBuilder();
+ prettyPrint(fta, recordDescriptor, tid, bbis, dis, sb);
+ System.err.println(sb.toString());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Debugging method
+ * They are safe as they don't print records. Printing records
+ * using IserializerDeserializer can print incorrect results or throw exceptions.
+ * A better way yet would be to use record pointable.
+ * @param fta
+ * @param recordDescriptor
+ * @param prefix
+ * @param recordFields
+ * @throws IOException
+ */
+ public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, String prefix,
+ int[] recordFields) throws IOException {
+ try (ByteBufferInputStream bbis = new ByteBufferInputStream();
+ DataInputStream dis = new DataInputStream(bbis)) {
+ int tc = fta.getTupleCount();
+ StringBuilder sb = new StringBuilder();
+ sb.append(prefix).append("TC: " + tc).append("\n");
+ for (int i = 0; i < tc; ++i) {
+ prettyPrint(fta, recordDescriptor, i, bbis, dis, sb, recordFields);
+ }
+ System.err.println(sb.toString());
+ }
+ }
+
+ /**
+ * Debugging method
+ * @param fta
+ * @param recordDescriptor
+ * @param tIdx
+ * @param recordFields
+ * @throws IOException
+ */
+ public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, int tIdx, int[] recordFields)
+ throws IOException {
+ try (ByteBufferInputStream bbis = new ByteBufferInputStream();
+ DataInputStream dis = new DataInputStream(bbis)) {
+ StringBuilder sb = new StringBuilder();
+ prettyPrint(fta, recordDescriptor, tIdx, bbis, dis, sb, recordFields);
+ System.err.println(sb.toString());
+ }
+ }
+
+ /**
+ * Debugging method
+ * @param tuple
+ * @param fieldsIdx
+ * @param descIdx
+ * @throws HyracksDataException
+ */
+ public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, ITupleReference tuple,
+ int fieldsIdx, int descIdx)
+ throws HyracksDataException {
+ try (ByteBufferInputStream bbis = new ByteBufferInputStream();
+ DataInputStream dis = new DataInputStream(bbis)) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("[");
+ sb.append("f" + fieldsIdx + ":(" + tuple.getFieldStart(fieldsIdx) + ", "
+ + (tuple.getFieldLength(fieldsIdx) + tuple.getFieldStart(fieldsIdx)) + ") ");
+ sb.append("{");
+ ByteBuffer bytebuff = ByteBuffer.wrap(tuple.getFieldData(fieldsIdx));
+ bbis.setByteBuffer(bytebuff, tuple.getFieldStart(fieldsIdx));
+ sb.append(recordDescriptor.getFields()[descIdx].deserialize(dis));
+ sb.append("}");
+ sb.append("\n");
+ System.err.println(sb.toString());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Debugging method
+ * @param tuple
+ * @param descF
+ * @throws HyracksDataException
+ */
+ public void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, ITupleReference tuple,
+ int[] descF) throws HyracksDataException {
+ try (ByteBufferInputStream bbis = new ByteBufferInputStream();
+ DataInputStream dis = new DataInputStream(bbis)) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("[");
+ for (int j = 0; j < descF.length; ++j) {
+ sb.append("f" + j + ":(" + tuple.getFieldStart(j) + ", "
+ + (tuple.getFieldLength(j) + tuple.getFieldStart(j)) + ") ");
+ sb.append("{");
+ ByteBuffer bytebuff = ByteBuffer.wrap(tuple.getFieldData(j));
+ bbis.setByteBuffer(bytebuff, tuple.getFieldStart(j));
+ sb.append(recordDescriptor.getFields()[descF[j]].deserialize(dis));
+ sb.append("}");
+ }
+ sb.append("\n");
+ System.err.println(sb.toString());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Debugging method
+ * @param fta
+ * @param recordDescriptor
+ * @param tid
+ * @param bbis
+ * @param dis
+ * @param sb
+ * @param recordFields
+ * @throws IOException
+ */
+ protected void prettyPrint(IFrameTupleAccessor fta, RecordDescriptor recordDescriptor, int tid,
+ ByteBufferInputStream bbis, DataInputStream dis,
+ StringBuilder sb,
+ int[] recordFields) throws IOException {
+ Arrays.sort(recordFields);
+ sb.append(" tid" + tid + ":(" + fta.getTupleStartOffset(tid) + ", " + fta.getTupleEndOffset(tid) + ")[");
+ for (int j = 0; j < fta.getFieldCount(); ++j) {
+ sb.append("f" + j + ":(" + fta.getFieldStartOffset(tid, j) + ", " + fta.getFieldEndOffset(tid, j) + ") ");
+ sb.append("{");
+ bbis.setByteBuffer(fta.getBuffer(), fta.getTupleStartOffset(tid) + fta
+ .getFieldSlotsLength() + fta.getFieldStartOffset(tid, j));
+ if (Arrays.binarySearch(recordFields, j) >= 0) {
+ sb.append("{a record field: only print using pointable:");
+ sb.append("tag->" + dis.readByte() + "}");
+ } else {
+ sb.append(recordDescriptor.getFields()[j].deserialize(dis));
+ }
+ sb.append("}");
+ }
+ sb.append("\n");
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/SerdeUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/SerdeUtils.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/SerdeUtils.java
new file mode 100644
index 0000000..81f06da
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/SerdeUtils.java
@@ -0,0 +1,147 @@
+/*
+ * 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.dataflow.common.utils;
+
+import org.apache.hyracks.api.dataflow.value.IBinaryComparator;
+import org.apache.hyracks.api.dataflow.value.IBinaryComparatorFactory;
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.dataflow.value.ITypeTraits;
+import org.apache.hyracks.data.std.accessors.PointableBinaryComparatorFactory;
+import org.apache.hyracks.data.std.primitive.BooleanPointable;
+import org.apache.hyracks.data.std.primitive.DoublePointable;
+import org.apache.hyracks.data.std.primitive.FloatPointable;
+import org.apache.hyracks.data.std.primitive.IntegerPointable;
+import org.apache.hyracks.data.std.primitive.LongPointable;
+import org.apache.hyracks.data.std.primitive.ShortPointable;
+import org.apache.hyracks.data.std.primitive.UTF8StringPointable;
+import org.apache.hyracks.dataflow.common.data.marshalling.BooleanSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.FloatSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.Integer64SerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.ShortSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.UTF8StringSerializerDeserializer;
+
+@SuppressWarnings("rawtypes")
+public class SerdeUtils {
+ public static class PayloadTypeTraits implements ITypeTraits {
+ private static final long serialVersionUID = 1L;
+ final int payloadSize;
+
+ public PayloadTypeTraits(int payloadSize) {
+ this.payloadSize = payloadSize;
+ }
+
+ @Override
+ public boolean isFixedLength() {
+ return true;
+ }
+
+ @Override
+ public int getFixedLength() {
+ return payloadSize;
+ }
+ }
+
+ public static ITypeTraits[] serdesToTypeTraits(ISerializerDeserializer[] serdes) {
+ ITypeTraits[] typeTraits = new ITypeTraits[serdes.length];
+ for (int i = 0; i < serdes.length; i++) {
+ typeTraits[i] = serdeToTypeTrait(serdes[i]);
+ }
+ return typeTraits;
+ }
+
+ public static ITypeTraits[] serdesToTypeTraits(ISerializerDeserializer[] serdes, int payloadSize) {
+ ITypeTraits[] typeTraits = new ITypeTraits[serdes.length + 1];
+ for (int i = 0; i < serdes.length; i++) {
+ typeTraits[i] = serdeToTypeTrait(serdes[i]);
+ }
+ typeTraits[serdes.length] = new PayloadTypeTraits(payloadSize);
+ return typeTraits;
+ }
+
+ public static ITypeTraits serdeToTypeTrait(ISerializerDeserializer serde) {
+ if (serde instanceof ShortSerializerDeserializer) {
+ return ShortPointable.TYPE_TRAITS;
+ }
+ if (serde instanceof IntegerSerializerDeserializer) {
+ return IntegerPointable.TYPE_TRAITS;
+ }
+ if (serde instanceof Integer64SerializerDeserializer) {
+ return LongPointable.TYPE_TRAITS;
+ }
+ if (serde instanceof FloatSerializerDeserializer) {
+ return FloatPointable.TYPE_TRAITS;
+ }
+ if (serde instanceof DoubleSerializerDeserializer) {
+ return DoublePointable.TYPE_TRAITS;
+ }
+ if (serde instanceof BooleanSerializerDeserializer) {
+ return BooleanPointable.TYPE_TRAITS;
+ }
+ return UTF8StringPointable.TYPE_TRAITS;
+ }
+
+ public static IBinaryComparator[] serdesToComparators(ISerializerDeserializer[] serdes, int numSerdes) {
+ IBinaryComparator[] comparators = new IBinaryComparator[numSerdes];
+ for (int i = 0; i < numSerdes; i++) {
+ comparators[i] = serdeToComparator(serdes[i]);
+ }
+ return comparators;
+ }
+
+ public static IBinaryComparator serdeToComparator(ISerializerDeserializer serde) {
+ IBinaryComparatorFactory f = serdeToComparatorFactory(serde);
+ return f.createBinaryComparator();
+ }
+
+ public static IBinaryComparatorFactory[] serdesToComparatorFactories(ISerializerDeserializer[] serdes, int numSerdes) {
+ IBinaryComparatorFactory[] comparatorsFactories = new IBinaryComparatorFactory[numSerdes];
+ for (int i = 0; i < numSerdes; i++) {
+ comparatorsFactories[i] = serdeToComparatorFactory(serdes[i]);
+ }
+ return comparatorsFactories;
+ }
+
+ public static IBinaryComparatorFactory serdeToComparatorFactory(ISerializerDeserializer serde) {
+ if (serde instanceof ShortSerializerDeserializer) {
+ return PointableBinaryComparatorFactory.of(ShortPointable.FACTORY);
+ }
+ if (serde instanceof IntegerSerializerDeserializer) {
+ return PointableBinaryComparatorFactory.of(IntegerPointable.FACTORY);
+ }
+ if (serde instanceof Integer64SerializerDeserializer) {
+ return PointableBinaryComparatorFactory.of(LongPointable.FACTORY);
+ }
+ if (serde instanceof FloatSerializerDeserializer) {
+ return PointableBinaryComparatorFactory.of(FloatPointable.FACTORY);
+ }
+ if (serde instanceof DoubleSerializerDeserializer) {
+ return PointableBinaryComparatorFactory.of(DoublePointable.FACTORY);
+ }
+ if (serde instanceof BooleanSerializerDeserializer) {
+ throw new UnsupportedOperationException("Binary comparator factory for Boolean not implemented.");
+ }
+ if (serde instanceof UTF8StringSerializerDeserializer) {
+ return PointableBinaryComparatorFactory.of(UTF8StringPointable.FACTORY);
+ }
+ throw new UnsupportedOperationException("Binary comparator for + " + serde.toString() + " not implemented.");
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/TaskUtil.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/TaskUtil.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/TaskUtil.java
new file mode 100644
index 0000000..4a2021f
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/TaskUtil.java
@@ -0,0 +1,77 @@
+/*
+ * 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.dataflow.common.utils;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+
+/**
+ * A Utility class for facilitating common operations used with a hyracks task
+ */
+public class TaskUtil {
+ private TaskUtil() {
+ }
+
+ /**
+ * get the shared object of a task as a Map<String,Object>
+ *
+ * @param ctx
+ * the task context
+ * @param create
+ * @return the task shared map
+ */
+ @SuppressWarnings("unchecked")
+ public static Map<String, Object> getSharedMap(IHyracksTaskContext ctx, boolean create) {
+ if (ctx.getSharedObject() != null) {
+ return (Map<String, Object>) ctx.getSharedObject();
+ } else if (create) {
+ Map<String, Object> taskMap = new HashMap<>();
+ ctx.setSharedObject(taskMap);
+ return taskMap;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * put the key value pair in a map task object
+ *
+ * @param key
+ * @param ctx
+ * @param object
+ */
+ public static void putInSharedMap(String key, Object object, IHyracksTaskContext ctx) {
+ TaskUtil.getSharedMap(ctx, true).put(key, object);
+ }
+
+ /**
+ * get a <T> object from the shared map of the task
+ *
+ * @param key
+ * @param ctx
+ * @return the value associated with the key casted as T
+ */
+ @SuppressWarnings("unchecked")
+ public static <T> T get(String key, IHyracksTaskContext ctx) {
+ Map<String, Object> sharedMap = TaskUtil.getSharedMap(ctx, false);
+ return sharedMap == null ? null : (T) sharedMap.get(key);
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/TupleUtils.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/TupleUtils.java b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/TupleUtils.java
new file mode 100644
index 0000000..500cee7
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-dataflow-common/src/main/java/org/apache/hyracks/dataflow/common/utils/TupleUtils.java
@@ -0,0 +1,140 @@
+/*
+ * 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.dataflow.common.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.DataInput;
+import java.io.DataInputStream;
+import java.io.DataOutput;
+
+import org.apache.hyracks.api.dataflow.value.ISerializerDeserializer;
+import org.apache.hyracks.api.exceptions.HyracksDataException;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleBuilder;
+import org.apache.hyracks.dataflow.common.comm.io.ArrayTupleReference;
+import org.apache.hyracks.dataflow.common.data.accessors.ITupleReference;
+import org.apache.hyracks.dataflow.common.data.marshalling.DoubleSerializerDeserializer;
+import org.apache.hyracks.dataflow.common.data.marshalling.IntegerSerializerDeserializer;
+
+@SuppressWarnings("rawtypes")
+public class TupleUtils {
+ @SuppressWarnings("unchecked")
+ public static void createTuple(ArrayTupleBuilder tupleBuilder, ArrayTupleReference tuple,
+ ISerializerDeserializer[] fieldSerdes, final Object... fields) throws HyracksDataException {
+ DataOutput dos = tupleBuilder.getDataOutput();
+ tupleBuilder.reset();
+ int numFields = Math.min(tupleBuilder.getFieldEndOffsets().length, fields.length);
+ for (int i = 0; i < numFields; i++) {
+ fieldSerdes[i].serialize(fields[i], dos);
+ tupleBuilder.addFieldEndOffset();
+ }
+ tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
+ }
+
+ public static ITupleReference createTuple(ISerializerDeserializer[] fieldSerdes, final Object... fields)
+ throws HyracksDataException {
+ ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fields.length);
+ ArrayTupleReference tuple = new ArrayTupleReference();
+ createTuple(tupleBuilder, tuple, fieldSerdes, fields);
+ return tuple;
+ }
+
+ public static void createIntegerTuple(ArrayTupleBuilder tupleBuilder, ArrayTupleReference tuple,
+ final int... fields) throws HyracksDataException {
+ DataOutput dos = tupleBuilder.getDataOutput();
+ tupleBuilder.reset();
+ for (final int i : fields) {
+ IntegerSerializerDeserializer.INSTANCE.serialize(i, dos);
+ tupleBuilder.addFieldEndOffset();
+ }
+ tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
+ }
+
+ public static ITupleReference createIntegerTuple(final int... fields) throws HyracksDataException {
+ ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fields.length);
+ ArrayTupleReference tuple = new ArrayTupleReference();
+ createIntegerTuple(tupleBuilder, tuple, fields);
+ return tuple;
+ }
+
+ public static void createDoubleTuple(ArrayTupleBuilder tupleBuilder, ArrayTupleReference tuple,
+ final double... fields) throws HyracksDataException {
+ DataOutput dos = tupleBuilder.getDataOutput();
+ tupleBuilder.reset();
+ for (final double i : fields) {
+ DoubleSerializerDeserializer.INSTANCE.serialize(i, dos);
+ tupleBuilder.addFieldEndOffset();
+ }
+ tuple.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
+ }
+
+ public static ITupleReference createDoubleTuple(final double... fields) throws HyracksDataException {
+ ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(fields.length);
+ ArrayTupleReference tuple = new ArrayTupleReference();
+ createDoubleTuple(tupleBuilder, tuple, fields);
+ return tuple;
+ }
+
+ public static String printTuple(ITupleReference tuple, ISerializerDeserializer[] fields)
+ throws HyracksDataException {
+ StringBuilder strBuilder = new StringBuilder();
+ int numPrintFields = Math.min(tuple.getFieldCount(), fields.length);
+ for (int i = 0; i < numPrintFields; i++) {
+ ByteArrayInputStream inStream = new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i),
+ tuple.getFieldLength(i));
+ DataInput dataIn = new DataInputStream(inStream);
+ Object o = fields[i].deserialize(dataIn);
+ strBuilder.append(o.toString());
+ if (i != fields.length - 1) {
+ strBuilder.append(" ");
+ }
+ }
+ return strBuilder.toString();
+ }
+
+ public static Object[] deserializeTuple(ITupleReference tuple, ISerializerDeserializer[] fields)
+ throws HyracksDataException {
+ int numFields = Math.min(tuple.getFieldCount(), fields.length);
+ Object[] objs = new Object[numFields];
+ for (int i = 0; i < numFields; i++) {
+ ByteArrayInputStream inStream = new ByteArrayInputStream(tuple.getFieldData(i), tuple.getFieldStart(i),
+ tuple.getFieldLength(i));
+ DataInput dataIn = new DataInputStream(inStream);
+ objs[i] = fields[i].deserialize(dataIn);
+ }
+ return objs;
+ }
+
+ public static ITupleReference copyTuple(ITupleReference tuple) throws HyracksDataException {
+ ArrayTupleBuilder tupleBuilder = new ArrayTupleBuilder(tuple.getFieldCount());
+ for (int i = 0; i < tuple.getFieldCount(); i++) {
+ tupleBuilder.addField(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i));
+ }
+ ArrayTupleReference tupleCopy = new ArrayTupleReference();
+ tupleCopy.reset(tupleBuilder.getFieldEndOffsets(), tupleBuilder.getByteArray());
+ return tupleCopy;
+ }
+
+ public static void copyTuple(ArrayTupleBuilder tupleBuilder, ITupleReference tuple, int numFields) throws HyracksDataException {
+ tupleBuilder.reset();
+ for (int i = 0; i < numFields; i++) {
+ tupleBuilder.addField(tuple.getFieldData(i), tuple.getFieldStart(i), tuple.getFieldLength(i));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
index 91aa263..0772d83 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/InsertPipelineExample.java
@@ -43,7 +43,7 @@ import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
import org.apache.hyracks.dataflow.std.misc.NullSinkOperatorDescriptor;
import org.apache.hyracks.examples.btree.helper.DataGenOperatorDescriptor;
import org.apache.hyracks.examples.btree.helper.IndexLifecycleManagerProvider;
-import org.apache.hyracks.examples.btree.helper.StorageManagerInterface;
+import org.apache.hyracks.examples.btree.helper.BTreeHelperStorageManager;
import org.apache.hyracks.storage.am.btree.dataflow.BTreeDataflowHelperFactory;
import org.apache.hyracks.storage.am.common.api.IIndexLifecycleManagerProvider;
import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
@@ -51,7 +51,7 @@ import org.apache.hyracks.storage.am.common.dataflow.TreeIndexInsertUpdateDelete
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.common.IStorageManagerInterface;
+import org.apache.hyracks.storage.common.IStorageManager;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
@@ -128,7 +128,7 @@ public class InsertPipelineExample {
PartitionConstraintHelper.addAbsoluteLocationConstraint(spec, dataGen, splitNCs[0]);
IIndexLifecycleManagerProvider lcManagerProvider = IndexLifecycleManagerProvider.INSTANCE;
- IStorageManagerInterface storageManager = StorageManagerInterface.INSTANCE;
+ IStorageManager storageManager = BTreeHelperStorageManager.INSTANCE;
// prepare insertion into primary index
// tuples to be put into B-Tree shall have 4 fields
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java
index b8216e3..550af4c 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexBulkLoadExample.java
@@ -43,13 +43,13 @@ import org.apache.hyracks.dataflow.std.misc.NullSinkOperatorDescriptor;
import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
import org.apache.hyracks.examples.btree.helper.DataGenOperatorDescriptor;
import org.apache.hyracks.examples.btree.helper.IndexLifecycleManagerProvider;
-import org.apache.hyracks.examples.btree.helper.StorageManagerInterface;
+import org.apache.hyracks.examples.btree.helper.BTreeHelperStorageManager;
import org.apache.hyracks.storage.am.btree.dataflow.BTreeDataflowHelperFactory;
import org.apache.hyracks.storage.am.common.api.IIndexLifecycleManagerProvider;
import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
import org.apache.hyracks.storage.am.common.dataflow.TreeIndexBulkLoadOperatorDescriptor;
import org.apache.hyracks.storage.am.common.freepage.LinkedMetadataPageManagerFactory;
-import org.apache.hyracks.storage.common.IStorageManagerInterface;
+import org.apache.hyracks.storage.common.IStorageManager;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
@@ -145,7 +145,7 @@ public class PrimaryIndexBulkLoadExample {
// create providers for B-Tree
IIndexLifecycleManagerProvider lcManagerProvider = IndexLifecycleManagerProvider.INSTANCE;
- IStorageManagerInterface storageManager = StorageManagerInterface.INSTANCE;
+ IStorageManager storageManager = BTreeHelperStorageManager.INSTANCE;
// the B-Tree expects its keyfields to be at the front of its input
// tuple
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java
index 2d1d515..f15648e 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/PrimaryIndexSearchExample.java
@@ -40,14 +40,14 @@ import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
import org.apache.hyracks.dataflow.std.misc.ConstantTupleSourceOperatorDescriptor;
import org.apache.hyracks.dataflow.std.misc.PrinterOperatorDescriptor;
import org.apache.hyracks.examples.btree.helper.IndexLifecycleManagerProvider;
-import org.apache.hyracks.examples.btree.helper.StorageManagerInterface;
+import org.apache.hyracks.examples.btree.helper.BTreeHelperStorageManager;
import org.apache.hyracks.storage.am.btree.dataflow.BTreeDataflowHelperFactory;
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.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.common.IStorageManagerInterface;
+import org.apache.hyracks.storage.common.IStorageManager;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
@@ -107,7 +107,7 @@ public class PrimaryIndexSearchExample {
// create roviders for B-Tree
IIndexLifecycleManagerProvider lcManagerProvider = IndexLifecycleManagerProvider.INSTANCE;
- IStorageManagerInterface storageManager = StorageManagerInterface.INSTANCE;
+ IStorageManager storageManager = BTreeHelperStorageManager.INSTANCE;
// schema of tuples coming out of primary index
RecordDescriptor recDesc = new RecordDescriptor(new ISerializerDeserializer[] {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java
index c1ccc10..003e353 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexBulkLoadExample.java
@@ -36,7 +36,7 @@ import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
import org.apache.hyracks.dataflow.std.misc.NullSinkOperatorDescriptor;
import org.apache.hyracks.dataflow.std.sort.ExternalSortOperatorDescriptor;
import org.apache.hyracks.examples.btree.helper.IndexLifecycleManagerProvider;
-import org.apache.hyracks.examples.btree.helper.StorageManagerInterface;
+import org.apache.hyracks.examples.btree.helper.BTreeHelperStorageManager;
import org.apache.hyracks.storage.am.btree.dataflow.BTreeDataflowHelperFactory;
import org.apache.hyracks.storage.am.common.api.IIndexLifecycleManagerProvider;
import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory;
@@ -44,7 +44,7 @@ import org.apache.hyracks.storage.am.common.dataflow.TreeIndexBulkLoadOperatorDe
import org.apache.hyracks.storage.am.common.dataflow.TreeIndexDiskOrderScanOperatorDescriptor;
import org.apache.hyracks.storage.am.common.freepage.LinkedMetadataPageManagerFactory;
import org.apache.hyracks.storage.am.common.impls.NoOpOperationCallbackFactory;
-import org.apache.hyracks.storage.common.IStorageManagerInterface;
+import org.apache.hyracks.storage.common.IStorageManager;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
@@ -98,7 +98,7 @@ public class SecondaryIndexBulkLoadExample {
String[] splitNCs = options.ncs.split(",");
IIndexLifecycleManagerProvider lcManagerProvider = IndexLifecycleManagerProvider.INSTANCE;
- IStorageManagerInterface storageManager = StorageManagerInterface.INSTANCE;
+ IStorageManager storageManager = BTreeHelperStorageManager.INSTANCE;
// schema of tuples that we are retrieving from the primary index
RecordDescriptor recDesc = new RecordDescriptor(new ISerializerDeserializer[] {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java
index a4b366a..94152d1 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreeclient/src/main/java/org/apache/hyracks/examples/btree/client/SecondaryIndexSearchExample.java
@@ -40,14 +40,14 @@ import org.apache.hyracks.dataflow.std.file.IFileSplitProvider;
import org.apache.hyracks.dataflow.std.misc.ConstantTupleSourceOperatorDescriptor;
import org.apache.hyracks.dataflow.std.misc.PrinterOperatorDescriptor;
import org.apache.hyracks.examples.btree.helper.IndexLifecycleManagerProvider;
-import org.apache.hyracks.examples.btree.helper.StorageManagerInterface;
+import org.apache.hyracks.examples.btree.helper.BTreeHelperStorageManager;
import org.apache.hyracks.storage.am.btree.dataflow.BTreeDataflowHelperFactory;
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.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.common.IStorageManagerInterface;
+import org.apache.hyracks.storage.common.IStorageManager;
import org.kohsuke.args4j.CmdLineParser;
import org.kohsuke.args4j.Option;
@@ -98,7 +98,7 @@ public class SecondaryIndexSearchExample {
String[] splitNCs = options.ncs.split(",");
IIndexLifecycleManagerProvider lcManagerProvider = IndexLifecycleManagerProvider.INSTANCE;
- IStorageManagerInterface storageManager = StorageManagerInterface.INSTANCE;
+ IStorageManager storageManager = BTreeHelperStorageManager.INSTANCE;
// schema of tuples coming out of secondary index
RecordDescriptor secondaryRecDesc = new RecordDescriptor(new ISerializerDeserializer[] {
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/BTreeHelperStorageManager.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/BTreeHelperStorageManager.java b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/BTreeHelperStorageManager.java
new file mode 100644
index 0000000..8f05266
--- /dev/null
+++ b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/BTreeHelperStorageManager.java
@@ -0,0 +1,56 @@
+/*
+ * 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.examples.btree.helper;
+
+import org.apache.hyracks.api.context.IHyracksTaskContext;
+import org.apache.hyracks.storage.common.IStorageManager;
+import org.apache.hyracks.storage.common.buffercache.IBufferCache;
+import org.apache.hyracks.storage.common.file.IFileMapProvider;
+import org.apache.hyracks.storage.common.file.ILocalResourceRepository;
+import org.apache.hyracks.storage.common.file.ResourceIdFactory;
+
+public class BTreeHelperStorageManager implements IStorageManager {
+ private static final long serialVersionUID = 1L;
+
+ public static final BTreeHelperStorageManager INSTANCE = new BTreeHelperStorageManager();
+
+ private BTreeHelperStorageManager() {
+ }
+
+ @Override
+ public IBufferCache getBufferCache(IHyracksTaskContext ctx) {
+ return RuntimeContext.get(ctx).getBufferCache();
+ }
+
+ @Override
+ public IFileMapProvider getFileMapProvider(IHyracksTaskContext ctx) {
+ return RuntimeContext.get(ctx).getFileMapManager();
+ }
+
+ @Override
+ public ILocalResourceRepository getLocalResourceRepository(IHyracksTaskContext ctx) {
+ return RuntimeContext.get(ctx).getLocalResourceRepository();
+ }
+
+ @Override
+ public ResourceIdFactory getResourceIdFactory(IHyracksTaskContext ctx) {
+ return RuntimeContext.get(ctx).getResourceIdFactory();
+ }
+}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/StorageManagerInterface.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/StorageManagerInterface.java b/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/StorageManagerInterface.java
deleted file mode 100644
index 7996bb0..0000000
--- a/hyracks-fullstack/hyracks/hyracks-examples/btree-example/btreehelper/src/main/java/org/apache/hyracks/examples/btree/helper/StorageManagerInterface.java
+++ /dev/null
@@ -1,56 +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.examples.btree.helper;
-
-import org.apache.hyracks.api.context.IHyracksTaskContext;
-import org.apache.hyracks.storage.common.IStorageManagerInterface;
-import org.apache.hyracks.storage.common.buffercache.IBufferCache;
-import org.apache.hyracks.storage.common.file.IFileMapProvider;
-import org.apache.hyracks.storage.common.file.ILocalResourceRepository;
-import org.apache.hyracks.storage.common.file.ResourceIdFactory;
-
-public class StorageManagerInterface implements IStorageManagerInterface {
- private static final long serialVersionUID = 1L;
-
- public static final StorageManagerInterface INSTANCE = new StorageManagerInterface();
-
- private StorageManagerInterface() {
- }
-
- @Override
- public IBufferCache getBufferCache(IHyracksTaskContext ctx) {
- return RuntimeContext.get(ctx).getBufferCache();
- }
-
- @Override
- public IFileMapProvider getFileMapProvider(IHyracksTaskContext ctx) {
- return RuntimeContext.get(ctx).getFileMapManager();
- }
-
- @Override
- public ILocalResourceRepository getLocalResourceRepository(IHyracksTaskContext ctx) {
- return RuntimeContext.get(ctx).getLocalResourceRepository();
- }
-
- @Override
- public ResourceIdFactory getResourceIdFactory(IHyracksTaskContext ctx) {
- return RuntimeContext.get(ctx).getResourceIdFactory();
- }
-}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java
index 1bec90c..94252b3 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/btree/AbstractBTreeOperatorTest.java
@@ -56,11 +56,11 @@ import org.apache.hyracks.storage.am.common.dataflow.TreeIndexInsertUpdateDelete
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.common.IStorageManagerInterface;
+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.TestStorageManagerComponentHolder;
-import org.apache.hyracks.test.support.TestStorageManagerInterface;
+import org.apache.hyracks.test.support.TestStorageManager;
import org.apache.hyracks.tests.am.common.ITreeIndexOperatorTestHelper;
import org.apache.hyracks.tests.integration.AbstractIntegrationTest;
import org.junit.After;
@@ -71,7 +71,7 @@ public abstract class AbstractBTreeOperatorTest extends AbstractIntegrationTest
TestStorageManagerComponentHolder.init(8192, 20, 20);
}
- protected final IStorageManagerInterface storageManager = new TestStorageManagerInterface();
+ protected final IStorageManager storageManager = new TestStorageManager();
protected final IIndexLifecycleManagerProvider lcManagerProvider = new TestIndexLifecycleManagerProvider();
protected IIndexDataflowHelperFactory dataflowHelperFactory;
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeOperatorTestHelper.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeOperatorTestHelper.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeOperatorTestHelper.java
index 80f4d34..936bd13 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeOperatorTestHelper.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/btree/LSMBTreeOperatorTestHelper.java
@@ -28,7 +28,7 @@ import org.apache.hyracks.storage.am.lsm.btree.dataflow.LSMBTreeDataflowHelperFa
import org.apache.hyracks.storage.am.lsm.common.impls.ConstantMergePolicyFactory;
import org.apache.hyracks.storage.am.lsm.common.impls.NoOpIOOperationCallback;
import org.apache.hyracks.storage.am.lsm.common.impls.SynchronousSchedulerProvider;
-import org.apache.hyracks.storage.am.lsm.common.impls.ThreadCountingOperationTrackerProvider;
+import org.apache.hyracks.storage.am.lsm.common.impls.ThreadCountingOperationTrackerFactory;
import org.apache.hyracks.tests.am.common.LSMTreeOperatorTestHelper;
public class LSMBTreeOperatorTestHelper extends LSMTreeOperatorTestHelper {
@@ -45,7 +45,7 @@ public class LSMBTreeOperatorTestHelper extends LSMTreeOperatorTestHelper {
public IIndexDataflowHelperFactory createDataFlowHelperFactory() {
return new LSMBTreeDataflowHelperFactory(virtualBufferCacheProvider, new ConstantMergePolicyFactory(),
- MERGE_POLICY_PROPERTIES, ThreadCountingOperationTrackerProvider.INSTANCE,
+ MERGE_POLICY_PROPERTIES, ThreadCountingOperationTrackerFactory.INSTANCE,
SynchronousSchedulerProvider.INSTANCE, NoOpIOOperationCallback.INSTANCE,
DEFAULT_BLOOM_FILTER_FALSE_POSITIVE_RATE, true, null, null, null, null, true);
}
http://git-wip-us.apache.org/repos/asf/asterixdb/blob/ef9be0f9/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeOperatorTestHelper.java
----------------------------------------------------------------------
diff --git a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeOperatorTestHelper.java b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeOperatorTestHelper.java
index c1f2cf4..f4c80c1 100644
--- a/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeOperatorTestHelper.java
+++ b/hyracks-fullstack/hyracks/hyracks-examples/hyracks-integration-tests/src/test/java/org/apache/hyracks/tests/am/lsm/rtree/LSMRTreeOperatorTestHelper.java
@@ -30,7 +30,7 @@ import org.apache.hyracks.storage.am.common.dataflow.IIndexDataflowHelperFactory
import org.apache.hyracks.storage.am.lsm.common.impls.ConstantMergePolicyFactory;
import org.apache.hyracks.storage.am.lsm.common.impls.NoOpIOOperationCallback;
import org.apache.hyracks.storage.am.lsm.common.impls.SynchronousSchedulerProvider;
-import org.apache.hyracks.storage.am.lsm.common.impls.ThreadCountingOperationTrackerProvider;
+import org.apache.hyracks.storage.am.lsm.common.impls.ThreadCountingOperationTrackerFactory;
import org.apache.hyracks.storage.am.lsm.rtree.dataflow.LSMRTreeDataflowHelperFactory;
import org.apache.hyracks.storage.am.rtree.frames.RTreePolicyType;
import org.apache.hyracks.tests.am.common.LSMTreeOperatorTestHelper;
@@ -53,7 +53,7 @@ public class LSMRTreeOperatorTestHelper extends LSMTreeOperatorTestHelper {
int[] btreeFields) {
return new LSMRTreeDataflowHelperFactory(valueProviderFactories, rtreePolicyType, btreeComparatorFactories,
virtualBufferCacheProvider, new ConstantMergePolicyFactory(), MERGE_POLICY_PROPERTIES,
- ThreadCountingOperationTrackerProvider.INSTANCE, SynchronousSchedulerProvider.INSTANCE,
+ ThreadCountingOperationTrackerFactory.INSTANCE, SynchronousSchedulerProvider.INSTANCE,
NoOpIOOperationCallback.INSTANCE, linearizerCmpFactory, DEFAULT_BLOOM_FILTER_FALSE_POSITIVE_RATE, null,
btreeFields, null, null, null, true, false);
}