Skip to content

It fails to rename nullable inline value column  #526

Closed
@holgerbrandl

Description

@holgerbrandl

Expected: It should run the following example

import org.jetbrains.kotlinx.dataframe.api.*

@JvmInline
value class Speed(val kmh: Number){
}

class PathSegment(
    val id: String, val speedLimit: Speed? = null,
)


fun main() {
    val segments = listOf(PathSegment("foo", Speed(2.3)), PathSegment("bar",))

    val df = segments.toDataFrame()
    df.rename("speedLimit" to "speed_limit").print()
}

Observed: It fails with

Exception in thread "main" java.lang.NullPointerException
	at org.kalasim.scratch.Speed.hashCode-impl(InlineClassDf.kt)
	at org.kalasim.scratch.Speed.hashCode(InlineClassDf.kt)
	at org.jetbrains.kotlinx.dataframe.impl.UtilsKt.rollingHash(Utils.kt:99)
	at org.jetbrains.kotlinx.dataframe.impl.columns.UtilsKt.getHashCode(Utils.kt:39)
	at org.jetbrains.kotlinx.dataframe.impl.columns.DataColumnImpl$hashCode$2.invoke(DataColumnImpl.kt:36)
	at org.jetbrains.kotlinx.dataframe.impl.columns.DataColumnImpl$hashCode$2.invoke(DataColumnImpl.kt:36)
	at kotlin.SynchronizedLazyImpl.getValue(LazyJVM.kt:74)
	at org.jetbrains.kotlinx.dataframe.impl.columns.DataColumnImpl.getHashCode(DataColumnImpl.kt:36)
	at org.jetbrains.kotlinx.dataframe.impl.columns.DataColumnImpl.hashCode(DataColumnImpl.kt:38)
	at java.base/java.util.HashMap.hash(HashMap.java:340)
	at java.base/java.util.HashMap.put(HashMap.java:608)
	at org.jetbrains.kotlinx.dataframe.impl.api.RenameKt.renameImpl(rename.kt:64)
	at org.jetbrains.kotlinx.dataframe.impl.api.RenameKt.renameImpl(rename.kt:19)
	at org.jetbrains.kotlinx.dataframe.api.RenameKt.into(rename.kt:57)
	at org.jetbrains.kotlinx.dataframe.api.RenameKt.rename(rename.kt:22)
	at org.kalasim.scratch.InlineClassDfKt.main(InlineClassDf.kt:18)
	at org.kalasim.scratch.InlineClassDfKt.main(InlineClassDf.kt)

Tested version v0.12

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions