zhaomin1423 commented on code in PR #5490:
URL: https://github.com/apache/kyuubi/pull/5490#discussion_r1367912968


##########
externals/kyuubi-jdbc-engine/src/main/scala/org/apache/kyuubi/engine/jdbc/schema/RowSetHelper.scala:
##########
@@ -95,4 +165,160 @@ abstract class RowSetHelper {
     }
     ret
   }
+
+  protected def toDefaultTColumn(rows: Seq[Seq[Any]], ordinal: Int, sqlType: 
Int): TColumn = {
+    val nulls = new java.util.BitSet()
+    val rowSize = rows.length
+    val values = new util.ArrayList[String](rowSize)
+    var i = 0
+    while (i < rowSize) {
+      val row = rows(i)
+      nulls.set(i, row(ordinal) == null)
+      val value =
+        if (row(ordinal) == null) {
+          ""
+        } else {
+          toHiveString(row(ordinal), sqlType)
+        }
+      values.add(value)
+      i += 1
+    }
+    TColumn.stringVal(new TStringColumn(values, nulls))
+  }
+
+  protected def toBitTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn = {
+    val nulls = new java.util.BitSet()
+    val values = getOrSetAsNull[java.lang.Boolean](rows, ordinal, nulls, true)
+    TColumn.boolVal(new TBoolColumn(values, nulls))
+  }
+
+  protected def toTinyIntTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn = 
{
+    val nulls = new java.util.BitSet()
+    val values = getOrSetAsNull[java.lang.Byte](rows, ordinal, nulls, 0.toByte)
+    TColumn.byteVal(new TByteColumn(values, nulls))
+  }
+
+  protected def toSmallIntTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn 
= {
+    val nulls = new java.util.BitSet()
+    val values = getOrSetAsNull[java.lang.Short](rows, ordinal, nulls, 
0.toShort)
+    TColumn.i16Val(new TI16Column(values, nulls))
+  }
+
+  protected def toIntegerTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn = 
{
+    val nulls = new java.util.BitSet()
+    val values = getOrSetAsNull[java.lang.Integer](rows, ordinal, nulls, 0)
+    TColumn.i32Val(new TI32Column(values, nulls))
+  }
+
+  protected def toBigIntTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn = {
+    val nulls = new java.util.BitSet()
+    val values = getOrSetAsNull[lang.Long](rows, ordinal, nulls, 0L)
+    TColumn.i64Val(new TI64Column(values, nulls))
+  }
+
+  protected def toRealTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn = {
+    val nulls = new java.util.BitSet()
+    val values = getOrSetAsNull[lang.Float](rows, ordinal, nulls, 0.toFloat)
+      .asScala.map(n => java.lang.Double.valueOf(n.toString)).asJava
+    TColumn.doubleVal(new TDoubleColumn(values, nulls))
+  }
+
+  protected def toDoubleTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn = {
+    val nulls = new java.util.BitSet()
+    val values = getOrSetAsNull[lang.Double](rows, ordinal, nulls, 0.toDouble)
+    TColumn.doubleVal(new TDoubleColumn(values, nulls))
+  }
+
+  protected def toCharTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn = {
+    toVarcharTColumn(rows, ordinal)
+  }
+
+  protected def toVarcharTColumn(rows: Seq[Seq[Any]], ordinal: Int): TColumn = 
{
+    val nulls = new java.util.BitSet()
+    val values = getOrSetAsNull[String](rows, ordinal, nulls, "")
+    TColumn.stringVal(new TStringColumn(values, nulls))
+  }
+
+  // ==========================================================
+
+  protected def toBitTColumnValue(row: List[Any], ordinal: Int): TColumnValue 
= {
+    val boolValue = new TBoolValue
+    if (row(ordinal) != null) 
boolValue.setValue(row(ordinal).asInstanceOf[Boolean])
+    TColumnValue.boolVal(boolValue)
+  }
+
+  protected def toTinyIntTColumnValue(row: List[Any], ordinal: Int): 
TColumnValue = {
+    val byteValue = new TByteValue
+    if (row(ordinal) != null) 
byteValue.setValue(row(ordinal).asInstanceOf[Byte])
+    TColumnValue.byteVal(byteValue)
+  }
+
+  protected def toSmallIntTColumnValue(row: List[Any], ordinal: Int): 
TColumnValue = {
+    val tI16Value = new TI16Value
+    if (row(ordinal) != null) 
tI16Value.setValue(row(ordinal).asInstanceOf[Short])
+    TColumnValue.i16Val(tI16Value)
+  }
+
+  protected def toIntegerTColumnValue(row: List[Any], ordinal: Int): 
TColumnValue = {
+    val tI32Value = new TI32Value
+    if (row(ordinal) != null) 
tI32Value.setValue(row(ordinal).asInstanceOf[Int])
+    TColumnValue.i32Val(tI32Value)
+  }
+
+  protected def toBigIntTColumnValue(row: List[Any], ordinal: Int): 
TColumnValue = {
+    val tI64Value = new TI64Value
+    if (row(ordinal) != null) 
tI64Value.setValue(row(ordinal).asInstanceOf[Long])
+    TColumnValue.i64Val(tI64Value)
+  }
+
+  protected def toRealTColumnValue(row: List[Any], ordinal: Int): TColumnValue 
= {
+    val tDoubleValue = new TDoubleValue
+    if (row(ordinal) != null) {
+      val doubleValue = 
java.lang.Double.valueOf(row(ordinal).asInstanceOf[Float].toString)
+      tDoubleValue.setValue(doubleValue)
+    }
+    TColumnValue.doubleVal(tDoubleValue)
+  }
+
+  protected def toDoubleTColumnValue(row: List[Any], ordinal: Int): 
TColumnValue = {
+    val tDoubleValue = new TDoubleValue
+    if (row(ordinal) != null) 
tDoubleValue.setValue(row(ordinal).asInstanceOf[Double])
+    TColumnValue.doubleVal(tDoubleValue)
+  }
+
+  protected def toCharTColumnValue(row: List[Any], ordinal: Int): TColumnValue 
= {
+    toVarcharTColumnValue(row, ordinal)
+  }
+
+  protected def toVarcharTColumnValue(row: List[Any], ordinal: Int): 
TColumnValue = {
+    val tStringValue = new TStringValue
+    if (row(ordinal) != null) 
tStringValue.setValue(row(ordinal).asInstanceOf[String])
+    TColumnValue.stringVal(tStringValue)
+  }
+
+  protected def toDefaultTColumnValue(
+      row: List[Any],
+      ordinal: Int,
+      types: List[Column]): TColumnValue = {
+    val tStrValue = new TStringValue
+    if (row(ordinal) != null) {
+      tStrValue.setValue(
+        toHiveString(row(ordinal), types(ordinal).sqlType))
+    }
+    TColumnValue.stringVal(tStrValue)
+  }
+
+  protected def toHiveString(data: Any, sqlType: Int): String = {
+    (data, sqlType) match {
+      case (date: Date, Types.DATE) =>
+        formatDate(date)
+      case (dateTime: LocalDateTime, Types.TIMESTAMP) =>
+        formatLocalDateTime(dateTime)
+      case (decimal: java.math.BigDecimal, Types.DECIMAL) =>
+        decimal.toPlainString
+      // TODO support bitmap and hll

Review Comment:
   It can be removed, this is a comment for doris.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to