public static Tuple toTuple()

in tajo-storage/src/main/java/org/apache/tajo/storage/RowStoreUtil.java [51:158]


    public static Tuple toTuple(Schema schema, byte [] bytes) {
      ByteBuffer bb = ByteBuffer.wrap(bytes);
      Tuple tuple = new VTuple(schema.size());
      Column col;
      TajoDataTypes.DataType type;
      for (int i =0; i < schema.size(); i++) {
        col = schema.getColumn(i);
        type = col.getDataType();
        switch (type.getType()) {
          case BOOLEAN: tuple.put(i, DatumFactory.createBool(bb.get())); break;
          case BIT:
            byte b = bb.get();
            if(b == 0) {
              tuple.put(i, DatumFactory.createNullDatum());
            } else {
              tuple.put(i, DatumFactory.createBit(b));
            }
            break;

          case CHAR:
            byte c = bb.get();
            if(c == 0) {
              tuple.put(i, DatumFactory.createNullDatum());
            } else {
              tuple.put(i, DatumFactory.createChar(c));
            }
            break;

          case INT2:
            short s = bb.getShort();
            if(s < Short.MIN_VALUE + 1) {
              tuple.put(i, DatumFactory.createNullDatum());
            }else {
              tuple.put(i, DatumFactory.createInt2(s));
            }
            break;

          case INT4:
          case DATE:
            int i_ = bb.getInt();
            if ( i_ < Integer.MIN_VALUE + 1) {
              tuple.put(i, DatumFactory.createNullDatum());
            } else {
              tuple.put(i, DatumFactory.createFromInt4(type, i_));
            }
            break;

          case INT8:
          case TIME:
          case TIMESTAMP:
            long l = bb.getLong();
            if ( l < Long.MIN_VALUE + 1) {
              tuple.put(i, DatumFactory.createNullDatum());
            }else {
              tuple.put(i, DatumFactory.createFromInt8(type, l));
            }
            break;

          case FLOAT4:
            float f = bb.getFloat();
            if (Float.isNaN(f)) {
              tuple.put(i, DatumFactory.createNullDatum());
            }else {
              tuple.put(i, DatumFactory.createFloat4(f));
            }
            break;

          case FLOAT8:
            double d = bb.getDouble();
            if(Double.isNaN(d)) {
              tuple.put(i, DatumFactory.createNullDatum());
            }else {
              tuple.put(i, DatumFactory.createFloat8(d));
            }
            break;

          case TEXT:
            byte [] _string = new byte[bb.getInt()];
            bb.get(_string);
            String str = new String(_string);
            if(str.compareTo("NULL") == 0) {
              tuple.put(i, DatumFactory.createNullDatum());
            }else {
            tuple.put(i, DatumFactory.createText(str));
            }
            break;

          case BLOB:
            byte [] _bytes = new byte[bb.getInt()];
            bb.get(_bytes);
            if(Bytes.compareTo(bytes, Bytes.toBytes("NULL")) == 0) {
              tuple.put(i, DatumFactory.createNullDatum());
            } else {
              tuple.put(i, DatumFactory.createBlob(_bytes));
            }
            break;

          case INET4:
            byte [] _ipv4 = new byte[4];
            bb.get(_ipv4);
            tuple.put(i, DatumFactory.createInet4(_ipv4));
            break;
          case INET6:
            // TODO - to be implemented
        }
      }
      return tuple;
    }