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;