You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/06/03 04:15:51 UTC
tajo git commit: TAJO-1450: Encapsulate Datum in Tuple. (missing
changes)
Repository: tajo
Updated Branches:
refs/heads/master 5c2aee236 -> dfcf41d6f
TAJO-1450: Encapsulate Datum in Tuple. (missing changes)
Signed-off-by: Jihoon Son <ji...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/dfcf41d6
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/dfcf41d6
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/dfcf41d6
Branch: refs/heads/master
Commit: dfcf41d6f66044b15f478bb22feecccfdf742628
Parents: 5c2aee2
Author: navis.ryu <na...@apache.org>
Authored: Wed Jun 3 11:10:31 2015 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Wed Jun 3 11:15:24 2015 +0900
----------------------------------------------------------------------
.../org/apache/tajo/storage/RowStoreUtil.java | 91 ++++++++++++++------
.../physical/RangeShuffleFileWriteExec.java | 2 +-
.../org/apache/tajo/storage/RowStoreUtil.java | 2 +-
3 files changed, 67 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/dfcf41d6/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java b/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java
index ba7cf48..5b4a308 100644
--- a/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java
+++ b/tajo-client/src/main/java/org/apache/tajo/storage/RowStoreUtil.java
@@ -23,6 +23,7 @@ import org.apache.tajo.catalog.Schema;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.IntervalDatum;
+import org.apache.tajo.datum.ProtobufDatum;
import org.apache.tajo.exception.UnknownDataTypeException;
import org.apache.tajo.exception.UnsupportedException;
import org.apache.tajo.exception.ValueTooLongForTypeCharactersException;
@@ -30,9 +31,6 @@ import org.apache.tajo.util.BitArray;
import java.nio.ByteBuffer;
-/**
- * It is a copy from tajo-storage-common module.
- */
public class RowStoreUtil {
public static int[] getTargetIds(Schema inSchema, Schema outSchema) {
int[] targetIds = new int[outSchema.size()];
@@ -45,6 +43,14 @@ public class RowStoreUtil {
return targetIds;
}
+ public static Tuple project(Tuple in, Tuple out, int[] targetIds) {
+ out.clear();
+ for (int idx = 0; idx < targetIds.length; idx++) {
+ out.put(idx, in.asDatum(targetIds[idx]));
+ }
+ return out;
+ }
+
public static RowStoreEncoder createEncoder(Schema schema) {
return new RowStoreEncoder(schema);
}
@@ -69,7 +75,7 @@ public class RowStoreUtil {
public Tuple toTuple(byte [] bytes) {
nullFlags.clear();
ByteBuffer bb = ByteBuffer.wrap(bytes);
- VTuple tuple = new VTuple(schema.size());
+ Tuple tuple = new VTuple(schema.size());
Column col;
TajoDataTypes.DataType type;
@@ -116,7 +122,7 @@ public class RowStoreUtil {
tuple.put(i, DatumFactory.createFromInt8(type, l));
break;
- case INTERVAL:
+ case INTERVAL:
int month = bb.getInt();
long milliseconds = bb.getLong();
tuple.put(i, new IntervalDatum(month, milliseconds));
@@ -174,7 +180,8 @@ public class RowStoreUtil {
nullFlags = new BitArray(schema.size());
headerSize = nullFlags.bytesLength();
}
- public byte [] toBytes(Tuple tuple) {
+
+ public byte[] toBytes(Tuple tuple) {
nullFlags.clear();
int size = estimateTupleDataSize(tuple);
ByteBuffer bb = ByteBuffer.allocate(size + headerSize);
@@ -188,14 +195,15 @@ public class RowStoreUtil {
col = schema.getColumn(i);
switch (col.getDataType().getType()) {
- case NULL_TYPE: nullFlags.set(i); break;
- case BOOLEAN: bb.put(tuple.getByte(i)); break;
- case BIT: bb.put(tuple.getByte(i)); break;
- case INT2: bb.putShort(tuple.getInt2(i)); break;
- case INT4: bb.putInt(tuple.getInt4(i)); break;
- case INT8: bb.putLong(tuple.getInt8(i)); break;
- case FLOAT4: bb.putFloat(tuple.getFloat4(i)); break;
- case FLOAT8: bb.putDouble(tuple.getFloat8(i)); break;
+ case NULL_TYPE:
+ nullFlags.set(i);
+ break;
+ case BOOLEAN:
+ bb.put(tuple.getByte(i));
+ break;
+ case BIT:
+ bb.put(tuple.getByte(i));
+ break;
case CHAR:
int charSize = col.getDataType().getLength();
byte [] _char = new byte[charSize];
@@ -207,12 +215,29 @@ public class RowStoreUtil {
System.arraycopy(src, 0, _char, 0, src.length);
bb.put(_char);
break;
+ case INT2:
+ bb.putShort(tuple.getInt2(i));
+ break;
+ case INT4:
+ bb.putInt(tuple.getInt4(i));
+ break;
+ case INT8:
+ bb.putLong(tuple.getInt8(i));
+ break;
+ case FLOAT4:
+ bb.putFloat(tuple.getFloat4(i));
+ break;
+ case FLOAT8:
+ bb.putDouble(tuple.getFloat8(i));
+ break;
case TEXT:
- byte [] _string = tuple.getBytes(i);
+ byte[] _string = tuple.getBytes(i);
bb.putInt(_string.length);
bb.put(_string);
break;
- case DATE: bb.putInt(tuple.getInt4(i)); break;
+ case DATE:
+ bb.putInt(tuple.getInt4(i));
+ break;
case TIME:
case TIMESTAMP:
bb.putLong(tuple.getInt8(i));
@@ -223,15 +248,17 @@ public class RowStoreUtil {
bb.putLong(interval.getMilliSeconds());
break;
case BLOB:
- byte [] bytes = tuple.getBytes(i);
+ byte[] bytes = tuple.getBytes(i);
bb.putInt(bytes.length);
bb.put(bytes);
break;
case INET4:
- byte [] ipBytes = tuple.getBytes(i);
+ byte[] ipBytes = tuple.getBytes(i);
bb.put(ipBytes);
break;
- case INET6: bb.put(tuple.getBytes(i)); break;
+ case INET6:
+ bb.put(tuple.getBytes(i));
+ break;
default:
throw new RuntimeException(new UnknownDataTypeException(col.getDataType().getType().name()));
}
@@ -244,7 +271,7 @@ public class RowStoreUtil {
bb.position(finalPosition);
bb.flip();
- byte [] buf = new byte [bb.limit()];
+ byte[] buf = new byte[bb.limit()];
bb.get(buf);
return buf;
}
@@ -268,19 +295,31 @@ public class RowStoreUtil {
case CHAR:
size += col.getDataType().getLength();
break;
- case INT2: size += 2; break;
+ case INT2:
+ size += 2;
+ break;
case DATE:
case INT4:
- case FLOAT4: size += 4; break;
+ case FLOAT4:
+ size += 4;
+ break;
case TIME:
case TIMESTAMP:
case INT8:
- case FLOAT8: size += 8; break;
- case INTERVAL: size += 12; break;
+ case FLOAT8:
+ size += 8;
+ break;
+ case INTERVAL:
+ size += 12;
+ break;
case TEXT:
- case BLOB: size += (4 + tuple.getBytes(i).length); break;
+ case BLOB:
+ size += (4 + tuple.getBytes(i).length);
+ break;
case INET4:
- case INET6: size += tuple.getBytes(i).length; break;
+ case INET6:
+ size += tuple.getBytes(i).length;
+ break;
default:
throw new RuntimeException(new UnknownDataTypeException(col.getDataType().getType().name()));
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/dfcf41d6/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RangeShuffleFileWriteExec.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RangeShuffleFileWriteExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RangeShuffleFileWriteExec.java
index 92e625c..3dd1cd9 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RangeShuffleFileWriteExec.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/RangeShuffleFileWriteExec.java
@@ -90,7 +90,7 @@ public class RangeShuffleFileWriteExec extends UnaryPhysicalExec {
@Override
public Tuple next() throws IOException {
Tuple tuple;
- VTuple keyTuple;
+ Tuple keyTuple;
Tuple prevKeyTuple = null;
long offset;
http://git-wip-us.apache.org/repos/asf/tajo/blob/dfcf41d6/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java
index 6643d45..ba9f873 100644
--- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java
+++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/RowStoreUtil.java
@@ -76,7 +76,7 @@ public class RowStoreUtil {
public Tuple toTuple(byte [] bytes) {
nullFlags.clear();
ByteBuffer bb = ByteBuffer.wrap(bytes);
- VTuple tuple = new VTuple(schema.size());
+ Tuple tuple = new VTuple(schema.size());
Column col;
TajoDataTypes.DataType type;