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
}