| import org.jetbrains.kotlinx.dataframe.* |
| import org.jetbrains.kotlinx.dataframe.annotations.* |
| import org.jetbrains.kotlinx.dataframe.api.* |
| import org.jetbrains.kotlinx.dataframe.io.* |
| |
| fun box(): String { |
| val df = dataFrameOf( |
| "nullableB" to columnOf(null, "str"), |
| "b" to columnOf("bbb", "str"), |
| ) |
| |
| // No longer should remove nulls |
| df.update { nullableB }.at(listOf(1)).with { "123" }.let { |
| val schema = it.compileTimeSchema() |
| assert(schema.column("nullableB").nullable) |
| } |
| |
| df.update { nullableB }.at(1).with { "123" }.let { |
| val schema = it.compileTimeSchema() |
| assert(schema.column("nullableB").nullable) |
| } |
| |
| df.update { nullableB }.at(1..1).with { "123" }.let { |
| val schema = it.compileTimeSchema() |
| assert(schema.column("nullableB").nullable) |
| } |
| |
| // But must introduce nulls |
| df.update { b }.at(listOf(1)).with { null }.let { |
| val schema = it.compileTimeSchema() |
| assert(schema.column("b").nullable) |
| } |
| |
| // Sanity check: String stays non-nullable |
| df.update { b }.at(listOf(1)).with { "123" }.let { |
| val col: DataColumn<String> = it.b |
| } |
| |
| df.update { b }.at(0, 1).where { it.contains("s") }.with { "123" }.let { |
| val col: DataColumn<String> = it.b |
| } |
| |
| return "OK" |
| } |