in kyuubi-server/src/main/scala/org/apache/kyuubi/server/trino/api/TrinoContext.scala [331:447]
def convertTRowSet(rowSet: TRowSet): util.List[util.List[Object]] = {
val dataResult = new util.LinkedList[util.List[Object]]
if (rowSet.getColumns == null) {
return rowSet.getRows.asScala
.map(t => t.getColVals.asScala.map(v => v.getFieldValue).asJava)
.asJava
}
rowSet.getColumns.asScala.foreach {
case tColumn if tColumn.isSetBoolVal =>
val nulls = util.BitSet.valueOf(tColumn.getBoolVal.getNulls)
if (dataResult.isEmpty) {
(1 to tColumn.getBoolVal.getValuesSize).foreach(_ =>
dataResult.add(new util.LinkedList[Object]()))
}
tColumn.getBoolVal.getValues.asScala.zipWithIndex.foreach {
case (_, rowIdx) if nulls.get(rowIdx) =>
dataResult.get(rowIdx).add(null)
case (v, rowIdx) =>
dataResult.get(rowIdx).add(v)
}
case tColumn if tColumn.isSetByteVal =>
val nulls = util.BitSet.valueOf(tColumn.getByteVal.getNulls)
if (dataResult.isEmpty) {
(1 to tColumn.getByteVal.getValuesSize).foreach(_ =>
dataResult.add(new util.LinkedList[Object]()))
}
tColumn.getByteVal.getValues.asScala.zipWithIndex.foreach {
case (_, rowIdx) if nulls.get(rowIdx) =>
dataResult.get(rowIdx).add(null)
case (v, rowIdx) =>
dataResult.get(rowIdx).add(v)
}
case tColumn if tColumn.isSetI16Val =>
val nulls = util.BitSet.valueOf(tColumn.getI16Val.getNulls)
if (dataResult.isEmpty) {
(1 to tColumn.getI16Val.getValuesSize).foreach(_ =>
dataResult.add(new util.LinkedList[Object]()))
}
tColumn.getI16Val.getValues.asScala.zipWithIndex.foreach {
case (_, rowIdx) if nulls.get(rowIdx) =>
dataResult.get(rowIdx).add(null)
case (v, rowIdx) =>
dataResult.get(rowIdx).add(v)
}
case tColumn if tColumn.isSetI32Val =>
val nulls = util.BitSet.valueOf(tColumn.getI32Val.getNulls)
if (dataResult.isEmpty) {
(1 to tColumn.getI32Val.getValuesSize).foreach(_ =>
dataResult.add(new util.LinkedList[Object]()))
}
tColumn.getI32Val.getValues.asScala.zipWithIndex.foreach {
case (_, rowIdx) if nulls.get(rowIdx) =>
dataResult.get(rowIdx).add(null)
case (v, rowIdx) =>
dataResult.get(rowIdx).add(v)
}
case tColumn if tColumn.isSetI64Val =>
val nulls = util.BitSet.valueOf(tColumn.getI64Val.getNulls)
if (dataResult.isEmpty) {
(1 to tColumn.getI64Val.getValuesSize).foreach(_ =>
dataResult.add(new util.LinkedList[Object]()))
}
tColumn.getI64Val.getValues.asScala.zipWithIndex.foreach {
case (_, rowIdx) if nulls.get(rowIdx) =>
dataResult.get(rowIdx).add(null)
case (v, rowIdx) =>
dataResult.get(rowIdx).add(v)
}
case tColumn if tColumn.isSetDoubleVal =>
val nulls = util.BitSet.valueOf(tColumn.getDoubleVal.getNulls)
if (dataResult.isEmpty) {
(1 to tColumn.getDoubleVal.getValuesSize).foreach(_ =>
dataResult.add(new util.LinkedList[Object]()))
}
tColumn.getDoubleVal.getValues.asScala.zipWithIndex.foreach {
case (_, rowIdx) if nulls.get(rowIdx) =>
dataResult.get(rowIdx).add(null)
case (v, rowIdx) =>
dataResult.get(rowIdx).add(v)
}
case tColumn if tColumn.isSetBinaryVal =>
val nulls = util.BitSet.valueOf(tColumn.getBinaryVal.getNulls)
if (dataResult.isEmpty) {
(1 to tColumn.getBinaryVal.getValuesSize).foreach(_ =>
dataResult.add(new util.LinkedList[Object]()))
}
tColumn.getBinaryVal.getValues.asScala.zipWithIndex.foreach {
case (_, rowIdx) if nulls.get(rowIdx) =>
dataResult.get(rowIdx).add(null)
case (v, rowIdx) =>
dataResult.get(rowIdx).add(v)
}
case tColumn =>
val nulls = util.BitSet.valueOf(tColumn.getStringVal.getNulls)
if (dataResult.isEmpty) {
(1 to tColumn.getStringVal.getValuesSize).foreach(_ =>
dataResult.add(new util.LinkedList[Object]()))
}
tColumn.getStringVal.getValues.asScala.zipWithIndex.foreach {
case (_, rowIdx) if nulls.get(rowIdx) =>
dataResult.get(rowIdx).add(null)
case (v, rowIdx) =>
dataResult.get(rowIdx).add(v)
}
}
dataResult
}