def toTColumn()

in thriftserver/server/src/main/scala/org/apache/livy/thriftserver/serde/ThriftResultSet.scala [54:94]


  def toTColumn(columnBuffer: ColumnBuffer): TColumn = {
    val value = new TColumn
    val nullsArray = columnBuffer.getNulls.toByteArray
    val nullMasks = ByteBuffer.wrap(nullsArray)
    columnBuffer.getType match {
      case DataType.BOOLEAN =>
        val bools = columnBuffer.getValues.asInstanceOf[Array[Boolean]]
        value.setBoolVal(new TBoolColumn(Booleans.asList(bools: _*), nullMasks))
      case DataType.BYTE =>
        val bytes = columnBuffer.getValues.asInstanceOf[Array[Byte]]
        value.setByteVal(new TByteColumn(Bytes.asList(bytes: _*), nullMasks))
      case DataType.SHORT =>
        val shorts = columnBuffer.getValues.asInstanceOf[Array[Short]]
        value.setI16Val(new TI16Column(Shorts.asList(shorts: _*), nullMasks))
      case DataType.INTEGER =>
        val integers = columnBuffer.getValues.asInstanceOf[Array[Int]]
        value.setI32Val(new TI32Column(Ints.asList(integers: _*), nullMasks))
      case DataType.LONG =>
        val longs = columnBuffer.getValues.asInstanceOf[Array[Long]]
        value.setI64Val(new TI64Column(Longs.asList(longs: _*), nullMasks))
      case DataType.FLOAT =>
        val floats = columnBuffer.getValues.asInstanceOf[Array[Float]]
        val doubles = new util.ArrayList[java.lang.Double](floats.length)
        var i = 0
        while (i < floats.length) {
          doubles.add(floats(i).toString.toDouble)
          i += 1
        }
        value.setDoubleVal(new TDoubleColumn(doubles, nullMasks))
      case DataType.DOUBLE =>
        val doubles = columnBuffer.getValues.asInstanceOf[Array[Double]]
        value.setDoubleVal(new TDoubleColumn(Doubles.asList(doubles: _*), nullMasks))
      case DataType.BINARY =>
        val binaries = columnBuffer.getValues.asInstanceOf[util.List[ByteBuffer]]
        value.setBinaryVal(new TBinaryColumn(binaries, nullMasks))
      case _ =>
        val strings = columnBuffer.getValues.asInstanceOf[util.List[String]]
        value.setStringVal(new TStringColumn(strings, nullMasks))
    }
    value
  }