def convertTRowSet()

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
  }