Thanks to visit codestin.com
Credit goes to github.com

Skip to content

postgres: cannot query column with type TIMESTAMP[] AS List<Instant> #5591

Open
@wreedamz

Description

@wreedamz

SQLDelight Version

2.0.2

Application Operating System

postgresql, macos

Describe the Bug

I have a table

CREATE TABLE IF NOT EXISTS sleepTracker(
    patientId SERIAL PRIMARY KEY,
    wakeUpTimes TIMESTAMP[] AS List<Instant> NOT NULL
);

and an adapter

object SleepTrackerAdapter : ColumnAdapter<List<Instant>, Array<LocalDateTime>> {
    override fun decode(databaseValue: Array<LocalDateTime>) =
        databaseValue.map { it.toInstant(ZoneOffset.UTC).toKotlinInstant() }

    override fun encode(value: List<Instant>): Array<LocalDateTime> {
        return value.map { it.toJavaInstant() }
            .map { LocalDateTime.ofInstant(it, ZoneOffset.UTC) }
            .toTypedArray()
    }
}

When I query the database via sqldelight with

SELECT * FROM sleepTracker;

I get

Exception in thread "main" java.lang.ClassCastException: class [Ljava.sql.Timestamp; cannot be cast to class [Ljava.time.LocalDateTime; ([Ljava.sql.Timestamp; is in module java.sql of loader 'platform'; [Ljava.time.LocalDateTime; is in module java.base of loader 'bootstrap')
	at com.foo.SleepTrackerAdapter.decode(Main.kt:21)
	at com.foo.SleepTrackerQueries$getAllTracker$1.invoke(SleepTrackerQueries.kt:25)
	at com.foo.SleepTrackerQueries$getAllTracker$1.invoke(SleepTrackerQueries.kt:19)
	at app.cash.sqldelight.ExecutableQuery$executeAsList$1.invoke(Query.kt:176)
	at app.cash.sqldelight.ExecutableQuery$executeAsList$1.invoke(Query.kt:174)
	at app.cash.sqldelight.driver.jdbc.JdbcPreparedStatement.executeQuery(JdbcDriver.kt:283)
	at app.cash.sqldelight.driver.jdbc.JdbcDriver.executeQuery(JdbcDriver.kt:155)
	at app.cash.sqldelight.SimpleQuery.execute(Query.kt:98)
	at app.cash.sqldelight.ExecutableQuery.executeAsList(Query.kt:174)
	at com.foo.MainKt.main(Main.kt:18)
	at com.foo.MainKt.main(Main.kt)

Repository reproducing issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions