File tree Expand file tree Collapse file tree 3 files changed +31
-11
lines changed
ktorm-core/src/main/kotlin/org/ktorm/schema
ktorm-support-mysql/src/test/kotlin/org/ktorm/support/mysql
ktorm-support-postgresql/src/test/kotlin/org/ktorm/support/postgresql Expand file tree Collapse file tree 3 files changed +31
-11
lines changed Original file line number Diff line number Diff line change @@ -501,12 +501,24 @@ public inline fun <reified C : Enum<C>> BaseTable<*>.enum(name: String): Column<
501501 *
502502 * @property enumClass the enum class.
503503 */
504- public class EnumSqlType <C : Enum <C >>(public val enumClass : Class <C >) : SqlType<C>(Types .VARCHAR , " enum" ) {
504+ public class EnumSqlType <C : Enum <C >>(public val enumClass : Class <C >) : SqlType<C>(Types .OTHER , " enum" ) {
505505
506506 private val hasPostgresqlDriver by lazy {
507507 runCatching { Class .forName(" org.postgresql.Driver" ) }.isSuccess
508508 }
509509
510+ override fun setParameter (ps : PreparedStatement , index : Int , parameter : C ? ) {
511+ if (parameter != null ) {
512+ doSetParameter(ps, index, parameter)
513+ } else {
514+ if (hasPostgresqlDriver && ps is PGStatement ) {
515+ ps.setNull(index, Types .OTHER )
516+ } else {
517+ ps.setNull(index, Types .VARCHAR )
518+ }
519+ }
520+ }
521+
510522 override fun doSetParameter (ps : PreparedStatement , index : Int , parameter : C ) {
511523 if (hasPostgresqlDriver && ps is PGStatement ) {
512524 ps.setObject(index, parameter.name, Types .OTHER )
Original file line number Diff line number Diff line change 11package org.ktorm.support.mysql
22
3- import org.hamcrest.CoreMatchers
4- import org.hamcrest.MatcherAssert
3+ import org.hamcrest.CoreMatchers.equalTo
4+ import org.hamcrest.MatcherAssert.assertThat
55import org.junit.ClassRule
66import org.junit.Test
77import org.ktorm.BaseTest
@@ -524,12 +524,16 @@ class MySqlTest : BaseTest() {
524524 }
525525
526526 val count = database.sequenceOf(TableWithEnum ).count { it.current_mood eq Mood .SAD }
527+ assertThat(count, equalTo(1 ))
527528
528- MatcherAssert .assertThat(count, CoreMatchers .equalTo(1 ))
529+ val mood = database.sequenceOf(TableWithEnum ).filter { it.id eq 1 }.mapColumns { it.current_mood }.first()
530+ assertThat(mood, equalTo(Mood .SAD ))
529531
530- val currentMood =
531- database.sequenceOf(TableWithEnum ).filter { it.id eq 1 }.mapColumns { it.current_mood }.first()
532+ database.insert(TableWithEnum ) {
533+ set(it.current_mood, null )
534+ }
532535
533- MatcherAssert .assertThat(currentMood, CoreMatchers .equalTo(Mood .SAD ))
536+ val mood1 = database.sequenceOf(TableWithEnum ).filter { it.id eq 2 }.mapColumns { it.current_mood }.first()
537+ assertThat(mood1, equalTo(null ))
534538 }
535539}
Original file line number Diff line number Diff line change @@ -783,13 +783,17 @@ class PostgreSqlTest : BaseTest() {
783783 }
784784
785785 val count = database.sequenceOf(TableWithEnum ).count { it.current_mood eq Mood .SAD }
786-
787786 assertThat(count, equalTo(1 ))
788787
789- val currentMood =
790- database.sequenceOf(TableWithEnum ).filter { it.id eq 1 }.mapColumns { it.current_mood }.first()
788+ val mood = database.sequenceOf(TableWithEnum ).filter { it.id eq 1 }.mapColumns { it.current_mood }.first()
789+ assertThat(mood, equalTo(Mood .HAPPY ))
790+
791+ database.insert(TableWithEnum ) {
792+ set(it.current_mood, null )
793+ }
791794
792- assertThat(currentMood, equalTo(Mood .HAPPY ))
795+ val mood1 = database.sequenceOf(TableWithEnum ).filter { it.id eq 3 }.mapColumns { it.current_mood }.first()
796+ assertThat(mood1, equalTo(null ))
793797 }
794798
795799 @Test
You can’t perform that action at this time.
0 commit comments