Skip to content

Commit 868e479

Browse files
committed
fix: πŸ› Fixes incorrect handling of primitive types
There was missing primitive types handling in `KotlinReflection` βœ… Closes: #37
1 parent aa1fa12 commit 868e479

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

β€Žcore/src/main/scala/org/apache/spark/sql/KotlinReflection.scala

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,26 +213,44 @@ object KotlinReflection extends KotlinReflection {
213213
case t if isSubtype(t, localTypeOf[java.lang.Long]) =>
214214
createDeserializerForTypesSupportValueOf(path,
215215
classOf[java.lang.Long])
216+
case t if isSubtype(t, localTypeOf[Long]) =>
217+
createDeserializerForTypesSupportValueOf(path,
218+
classOf[java.lang.Long])
216219

217220
case t if isSubtype(t, localTypeOf[java.lang.Double]) =>
218221
createDeserializerForTypesSupportValueOf(path,
219222
classOf[java.lang.Double])
223+
case t if isSubtype(t, localTypeOf[Double]) =>
224+
createDeserializerForTypesSupportValueOf(path,
225+
classOf[java.lang.Double])
220226

221227
case t if isSubtype(t, localTypeOf[java.lang.Float]) =>
222228
createDeserializerForTypesSupportValueOf(path,
223229
classOf[java.lang.Float])
230+
case t if isSubtype(t, localTypeOf[Float]) =>
231+
createDeserializerForTypesSupportValueOf(path,
232+
classOf[java.lang.Float])
224233

225234
case t if isSubtype(t, localTypeOf[java.lang.Short]) =>
226235
createDeserializerForTypesSupportValueOf(path,
227236
classOf[java.lang.Short])
237+
case t if isSubtype(t, localTypeOf[Short]) =>
238+
createDeserializerForTypesSupportValueOf(path,
239+
classOf[java.lang.Short])
228240

229241
case t if isSubtype(t, localTypeOf[java.lang.Byte]) =>
230242
createDeserializerForTypesSupportValueOf(path,
231243
classOf[java.lang.Byte])
244+
case t if isSubtype(t, localTypeOf[Byte]) =>
245+
createDeserializerForTypesSupportValueOf(path,
246+
classOf[java.lang.Byte])
232247

233248
case t if isSubtype(t, localTypeOf[java.lang.Boolean]) =>
234249
createDeserializerForTypesSupportValueOf(path,
235250
classOf[java.lang.Boolean])
251+
case t if isSubtype(t, localTypeOf[Boolean]) =>
252+
createDeserializerForTypesSupportValueOf(path,
253+
classOf[java.lang.Boolean])
236254

237255
case t if isSubtype(t, localTypeOf[java.time.LocalDate]) =>
238256
createDeserializerForLocalDate(path)
@@ -600,13 +618,17 @@ object KotlinReflection extends KotlinReflection {
600618
case t if isSubtype(t, localTypeOf[Int]) =>
601619
createSerializerForInteger(inputObject)
602620
case t if isSubtype(t, localTypeOf[java.lang.Long]) => createSerializerForLong(inputObject)
603-
case t if isSubtype(t, localTypeOf[java.lang.Double]) =>
604-
createSerializerForDouble(inputObject)
621+
case t if isSubtype(t, localTypeOf[Long]) => createSerializerForLong(inputObject)
622+
case t if isSubtype(t, localTypeOf[java.lang.Double]) => createSerializerForDouble(inputObject)
623+
case t if isSubtype(t, localTypeOf[Double]) => createSerializerForDouble(inputObject)
605624
case t if isSubtype(t, localTypeOf[java.lang.Float]) => createSerializerForFloat(inputObject)
625+
case t if isSubtype(t, localTypeOf[Float]) => createSerializerForFloat(inputObject)
606626
case t if isSubtype(t, localTypeOf[java.lang.Short]) => createSerializerForShort(inputObject)
627+
case t if isSubtype(t, localTypeOf[Short]) => createSerializerForShort(inputObject)
607628
case t if isSubtype(t, localTypeOf[java.lang.Byte]) => createSerializerForByte(inputObject)
608-
case t if isSubtype(t, localTypeOf[java.lang.Boolean]) =>
609-
createSerializerForBoolean(inputObject)
629+
case t if isSubtype(t, localTypeOf[Byte]) => createSerializerForByte(inputObject)
630+
case t if isSubtype(t, localTypeOf[java.lang.Boolean]) => createSerializerForBoolean(inputObject)
631+
case t if isSubtype(t, localTypeOf[Boolean]) => createSerializerForBoolean(inputObject)
610632

611633
case t if t.typeSymbol.annotations.exists(_.tree.tpe =:= typeOf[SQLUserDefinedType]) =>
612634
val udt = getClassFromType(t)

β€Žkotlin-spark-api/src/main/kotlin/org/jetbrains/spark/api/ApiV1.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,9 @@ private val knownDataTypes = mapOf(
320320
Boolean::class to DataTypes.BooleanType,
321321
Float::class to DataTypes.FloatType,
322322
Double::class to DataTypes.DoubleType,
323-
String::class to DataTypes.StringType
323+
String::class to DataTypes.StringType,
324+
LocalDate::class to `DateType$`.`MODULE$`,
325+
Instant::class to `TimestampType$`.`MODULE$`
324326
)
325327

326328
private fun transitiveMerge(a: Map<String, KType>, b: Map<String, KType>): Map<String, KType> {

0 commit comments

Comments
Β (0)