diff --git a/externals/kyuubi-flink-sql-engine/src/main/scala/org/apache/kyuubi/engine/flink/schema/RowSet.scala b/externals/kyuubi-flink-sql-engine/src/main/scala/org/apache/kyuubi/engine/flink/schema/RowSet.scala index 5f2baf1a6..8b0db93f2 100644 --- a/externals/kyuubi-flink-sql-engine/src/main/scala/org/apache/kyuubi/engine/flink/schema/RowSet.scala +++ b/externals/kyuubi-flink-sql-engine/src/main/scala/org/apache/kyuubi/engine/flink/schema/RowSet.scala @@ -112,7 +112,8 @@ object RowSet { case _: FloatType => val tDoubleValue = new TDoubleValue if (row.getField(ordinal) != null) { - tDoubleValue.setValue(row.getField(ordinal).asInstanceOf[Float]) + val doubleValue = lang.Double.valueOf(row.getField(ordinal).asInstanceOf[Float].toString) + tDoubleValue.setValue(doubleValue) } TColumnValue.doubleVal(tDoubleValue) case _: DoubleType => @@ -167,7 +168,8 @@ object RowSet { val values = getOrSetAsNull[lang.Long](rows, ordinal, nulls, 0L) TColumn.i64Val(new TI64Column(values, nulls)) case _: FloatType => - val values = getOrSetAsNull[lang.Double](rows, ordinal, nulls, 0.0) + val values = getOrSetAsNull[lang.Float](rows, ordinal, nulls, 0.0f) + .asScala.map(n => lang.Double.valueOf(n.toString)).asJava TColumn.doubleVal(new TDoubleColumn(values, nulls)) case _: DoubleType => val values = getOrSetAsNull[lang.Double](rows, ordinal, nulls, 0.0) diff --git a/externals/kyuubi-flink-sql-engine/src/test/scala/org/apache/kyuubi/engine/flink/operation/FlinkOperationSuite.scala b/externals/kyuubi-flink-sql-engine/src/test/scala/org/apache/kyuubi/engine/flink/operation/FlinkOperationSuite.scala index 0ca437c89..4e472bc2f 100644 --- a/externals/kyuubi-flink-sql-engine/src/test/scala/org/apache/kyuubi/engine/flink/operation/FlinkOperationSuite.scala +++ b/externals/kyuubi-flink-sql-engine/src/test/scala/org/apache/kyuubi/engine/flink/operation/FlinkOperationSuite.scala @@ -593,6 +593,15 @@ class FlinkOperationSuite extends WithFlinkSQLEngine with HiveJDBCTestHelper { } } + test("execute statement - select float") { + withJdbcStatement()({ statement => + val resultSet = statement.executeQuery("SELECT cast(0.1 as float)") + assert(resultSet.next()) + assert(resultSet.getString(1) == "0.1") + assert(resultSet.getFloat(1) == 0.1f) + }) + } + test("execute statement - show functions") { withJdbcStatement() { statement => val resultSet = statement.executeQuery("show functions")