Package org.apache.tajo.catalog

Examples of org.apache.tajo.catalog.Column


public class RandomInt extends GeneralFunction {
  private Random random;

  public RandomInt() {
    super(new Column[] {
        new Column("val", INT4)
    });
    random = new Random(System.nanoTime());
  }
View Full Code Here


public class MinLong extends AggFunction<Datum> {

  public MinLong() {
    super(new Column[] {
        new Column("val", Type.INT8)
    });
  }
View Full Code Here

   * @return
   */
  public static long computeCardinality(Schema schema, TupleRange range) {
    Tuple start = range.getStart();
    Tuple end = range.getEnd();
    Column col;

    long cardinality = 1;
    long columnCard;
    for (int i = 0; i < schema.getColumnNum(); i++) {
      col = schema.getColumn(i);
      switch (col.getDataType().getType()) {
        case CHAR:
          columnCard = end.get(i).asChar() - start.get(i).asChar();
          break;
        case BIT:
          columnCard = end.get(i).asByte() - start.get(i).asByte();
          break;
        case INT2:
          columnCard = end.get(i).asInt2() - start.get(i).asInt2();
          break;
        case INT4:
          columnCard = end.get(i).asInt4() - start.get(i).asInt4();
          break;
        case INT8:
          columnCard = end.get(i).asInt8() - start.get(i).asInt8();
          break;
        case FLOAT4:
          columnCard = end.get(i).asInt4() - start.get(i).asInt4();
          break;
        case FLOAT8:
          columnCard = end.get(i).asInt8() - start.get(i).asInt8();
          break;
        case TEXT:
          columnCard = end.get(i).asChars().charAt(0) - start.get(i).asChars().charAt(0);
          break;
        default:
          throw new UnsupportedOperationException(col.getDataType() + " is not supported yet");
      }

      if (columnCard > 0) {
        cardinality *= columnCard + 1;
      }
View Full Code Here

  }

  public static TupleRange [] getPartitions(Schema schema, int partNum, TupleRange range) {
    Tuple start = range.getStart();
    Tuple end = range.getEnd();
    Column col;
    TupleRange [] partitioned = new TupleRange[partNum];

    Datum[] term = new Datum[schema.getColumnNum()];
    Datum[] prevValues = new Datum[schema.getColumnNum()];

    // initialize term and previous values
    for (int i = 0; i < schema.getColumnNum(); i++) {
      col = schema.getColumn(i);
      prevValues[i] = start.get(i);
      switch (col.getDataType().getType()) {
        case CHAR:
          int sChar = start.get(i).asChar();
          int eChar = end.get(i).asChar();
          int rangeChar;
          if ((eChar - sChar) > partNum) {
            rangeChar = (eChar - sChar) / partNum;
          } else {
            rangeChar = 1;
          }
          term[i] = DatumFactory.createInt4(rangeChar);
        case BIT:
          byte sByte = start.get(i).asByte();
          byte eByte = end.get(i).asByte();
          int rangeByte;
          if ((eByte - sByte) > partNum) {
            rangeByte = (eByte - sByte) / partNum;
          } else {
            rangeByte = 1;
          }
          term[i] = DatumFactory.createBit((byte) rangeByte);
          break;

        case INT2:
          short sShort = start.get(i).asInt2();
          short eShort = end.get(i).asInt2();
          int rangeShort;
          if ((eShort - sShort) > partNum) {
            rangeShort = (eShort - sShort) / partNum;
          } else {
            rangeShort = 1;
          }
          term[i] = DatumFactory.createInt2((short) rangeShort);
          break;

        case INT4:
          int sInt = start.get(i).asInt4();
          int eInt = end.get(i).asInt4();
          int rangeInt;
          if ((eInt - sInt) > partNum) {
            rangeInt = (eInt - sInt) / partNum;
          } else {
            rangeInt = 1;
          }
          term[i] = DatumFactory.createInt4(rangeInt);
          break;

        case INT8:
          long sLong = start.get(i).asInt8();
          long eLong = end.get(i).asInt8();
          long rangeLong;
          if ((eLong - sLong) > partNum) {
            rangeLong = ((eLong - sLong) / partNum);
          } else {
            rangeLong = 1;
          }
          term[i] = DatumFactory.createInt8(rangeLong);
          break;

        case FLOAT4:
          float sFloat = start.get(i).asFloat4();
          float eFloat = end.get(i).asFloat4();
          float rangeFloat;
          if ((eFloat - sFloat) > partNum) {
            rangeFloat = ((eFloat - sFloat) / partNum);
          } else {
            rangeFloat = 1;
          }
          term[i] = DatumFactory.createFloat4(rangeFloat);
          break;
        case FLOAT8:
          double sDouble = start.get(i).asFloat8();
          double eDouble = end.get(i).asFloat8();
          double rangeDouble;
          if ((eDouble - sDouble) > partNum) {
            rangeDouble = ((eDouble - sDouble) / partNum);
          } else {
            rangeDouble = 1;
          }
          term[i] = DatumFactory.createFloat8(rangeDouble);
          break;
        case TEXT:
          char sChars = start.get(i).asChars().charAt(0);
          char eChars = end.get(i).asChars().charAt(0);
          int rangeString;
          if ((eChars - sChars) > partNum) {
            rangeString = ((eChars - sChars) / partNum);
          } else {
            rangeString = 1;
          }
          term[i] = DatumFactory.createText(((char) rangeString) + "");
          break;
        case INET4:
          throw new UnsupportedOperationException();
        case BLOB:
          throw new UnsupportedOperationException();
        default:
          throw new UnsupportedOperationException();
      }
    }

    for (int p = 0; p < partNum; p++) {
      Tuple sTuple = new VTuple(schema.getColumnNum());
      Tuple eTuple = new VTuple(schema.getColumnNum());
      for (int i = 0; i < schema.getColumnNum(); i++) {
        col = schema.getColumn(i);
        sTuple.put(i, prevValues[i]);
        switch (col.getDataType().getType()) {
          case CHAR:
            char endChar = (char) (prevValues[i].asChar() + term[i].asChar());
            if (endChar > end.get(i).asByte()) {
              eTuple.put(i, end.get(i));
            } else {
View Full Code Here

  @Expose private Column column;
  @Expose  private int fieldId = -1;
 
  public FieldEval(String columnName, DataType domain) {
    super(EvalType.FIELD);
    this.column = new Column(columnName, domain);
  }
View Full Code Here

      super.init();
    }

    @Override
    public void addTuple(Tuple tuple) throws IOException {
      Column col;
      Datum datum;

      int colNum = schema.getColumnNum();
      if (tuple instanceof LazyTuple) {
        LazyTuple  lTuple = (LazyTuple)tuple;
        for (int i = 0; i < colNum; i++) {
          TajoDataTypes.DataType dataType = schema.getColumn(i).getDataType();

          switch (dataType.getType()) {
            case TEXT: {
              datum = tuple.get(i);
              if (datum instanceof NullDatum) {
                outputStream.write(nullChars);
              } else {
                outputStream.write(datum.asTextBytes());
              }
              break;
            }
            case CHAR: {
              datum = tuple.get(i);
              if (datum instanceof NullDatum) {
                outputStream.write(nullChars);
              } else {
                byte[] pad = new byte[dataType.getLength() - datum.size()];
                outputStream.write(datum.asTextBytes());
                outputStream.write(pad);
              }
              break;
            }
            case BOOLEAN: {
              datum = tuple.get(i);
              if (datum instanceof NullDatum) {
                //null datum is zero length byte array
              } else {
                outputStream.write(datum.asBool() ? trueBytes : falseBytes);   //Compatibility with Apache Hive
              }
              break;
            }
            case NULL:
              break;
            case PROTOBUF:
              datum = tuple.get(i);
              ProtobufDatum protobufDatum = (ProtobufDatum) datum;
              protobufJsonFormat.print(protobufDatum.get(), outputStream);
              break;
            default:
              outputStream.write(lTuple.getTextBytes(i)); //better usage for insertion to table of lazy tuple
              break;
          }

          if(colNum - 1 > i){
            outputStream.write((byte) delimiter);
          }

          if (enabledStats) {
            datum = tuple.get(i);
            stats.analyzeField(i, datum);
          }
        }
      } else {
        for (int i = 0; i < schema.getColumnNum(); i++) {
          datum = tuple.get(i);
          if (enabledStats) {
            stats.analyzeField(i, datum);
          }
          if (datum instanceof NullDatum) {
            outputStream.write(nullChars);
          } else {
            col = schema.getColumn(i);
            switch (col.getDataType().getType()) {
              case BOOLEAN:
                outputStream.write(tuple.getBoolean(i).asBool() ? trueBytes : falseBytes);   //Compatibility with Apache Hive
                break;
              case BIT:
                outputStream.write(tuple.getByte(i).asTextBytes());
                break;
              case BLOB:
                outputStream.write(Base64.encodeBase64(tuple.getBytes(i).asByteArray(), false));
                break;
              case CHAR:
                CharDatum charDatum = tuple.getChar(i);
                byte[] pad = new byte[col.getDataType().getLength() - datum.size()];
                outputStream.write(charDatum.asTextBytes());
                outputStream.write(pad);
                break;
              case TEXT:
                outputStream.write(tuple.getText(i).asTextBytes());
View Full Code Here

public class TestColumnStat {

  @Test
  public final void testColumnStat() {
    ColumnStat stat = new ColumnStat(new Column("test", Type.INT8));
    stat.setNumDistVals(1000);
    stat.setNumNulls(999);
   
    assertTrue(1000 == stat.getNumDistValues());
    assertTrue(999 == stat.getNumNulls());
View Full Code Here

    assertTrue(999 == stat2.getNumNulls());
  }

  @Test
  public final void testEqualsObject() {
    ColumnStat stat = new ColumnStat(new Column("test", Type.INT8));
    stat.setNumDistVals(1000);
    stat.setNumNulls(999);
    stat.setMinValue(DatumFactory.createInt8(5));
    stat.setMaxValue(DatumFactory.createInt8(10));
   
View Full Code Here

    assertEquals(stat, stat2);
  }

  @Test
  public final void testJson() throws CloneNotSupportedException {
    ColumnStat stat = new ColumnStat(new Column("test", Type.INT8));
    stat.setNumDistVals(1000);
    stat.setNumNulls(999);
    stat.setMinValue(DatumFactory.createInt8(5));
    stat.setMaxValue(DatumFactory.createInt8(10));
View Full Code Here

    assertEquals(stat, fromJson);
  }

  @Test
  public final void testClone() throws CloneNotSupportedException {
    ColumnStat stat = new ColumnStat(new Column("test", Type.INT8));
    stat.setNumDistVals(1000);
    stat.setNumNulls(999);
    stat.setMinValue(DatumFactory.createInt8(5));
    stat.setMaxValue(DatumFactory.createInt8(10));
   
View Full Code Here

TOP

Related Classes of org.apache.tajo.catalog.Column

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.