From 2e2f5de005ccd63ae741604d89662c6d394ca50a Mon Sep 17 00:00:00 2001 From: "andrey.tarashevskiy" Date: Wed, 18 Jul 2018 15:29:36 +0300 Subject: [PATCH] #300 Varchar doesn't validate length / Validate length only before execute update --- src/main/kotlin/org/jetbrains/exposed/sql/ColumnType.kt | 8 -------- .../org/jetbrains/exposed/sql/statements/UpdateBuilder.kt | 4 ++++ 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/org/jetbrains/exposed/sql/ColumnType.kt b/src/main/kotlin/org/jetbrains/exposed/sql/ColumnType.kt index 6241023e2f..a2a2401a42 100644 --- a/src/main/kotlin/org/jetbrains/exposed/sql/ColumnType.kt +++ b/src/main/kotlin/org/jetbrains/exposed/sql/ColumnType.kt @@ -226,14 +226,6 @@ open class VarCharColumnType(val colLength: Int = 255, collate: String? = null) append(" COLLATE $collate") } } - - override fun notNullValueToDB(value: Any): Any { - val string = super.notNullValueToDB(value) - require(string is String && string.length <= colLength) { - "Value '$string' can't be stored to database column because exceeds length $colLength" - } - return string - } } open class TextColumnType(collate: String? = null) : StringColumnType(collate) { diff --git a/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateBuilder.kt b/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateBuilder.kt index 628ef2b1f0..984c190376 100644 --- a/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateBuilder.kt +++ b/src/main/kotlin/org/jetbrains/exposed/sql/statements/UpdateBuilder.kt @@ -3,6 +3,7 @@ package org.jetbrains.exposed.sql.statements import org.jetbrains.exposed.sql.Column import org.jetbrains.exposed.sql.Expression import org.jetbrains.exposed.sql.Table +import org.jetbrains.exposed.sql.VarCharColumnType import java.util.* /** @@ -19,6 +20,9 @@ abstract class UpdateBuilder(type: StatementType, targets: List): if (!column.columnType.nullable && value == null) { error("Trying to set null to not nullable column $column") } + if (column.columnType is VarCharColumnType && value is String && value.length > column.columnType.colLength) { + error("Value '$value' can't be stored to database column because exceeds length $column.columnType.colLength") + } values[column] = value }