in exposed-core/src/main/kotlin/org/jetbrains/exposed/v1/core/statements/api/PreparedStatementApi.kt [63:96]
fun getArrayColumnType(type: String): ArrayColumnType<*, *> {
if (type == "CHAR") {
return ArrayColumnType<Char, List<Char>>(CharacterColumnType())
}
if (type.startsWith("DECIMAL")) {
val specs = type.substringAfter("DECIMAL").trim('(', ')')
.takeUnless { it.isEmpty() }
?.split(", ")
?.map { it.toIntOrNull() }
// same default values used in exposed-core DecimalColumnType()
val precision = specs?.firstOrNull() ?: MathContext.DECIMAL64.precision
val scale = specs?.lastOrNull() ?: 20
return ArrayColumnType<BigDecimal, List<BigDecimal>>(DecimalColumnType(precision, scale))
}
val dialect = org.jetbrains.exposed.v1.core.vendors.currentDialect
return when (type) {
dialect.dataTypeProvider.byteType() -> ArrayColumnType<Byte, List<Byte>>(ByteColumnType())
dialect.dataTypeProvider.ubyteType() -> ArrayColumnType<UByte, List<UByte>>(UByteColumnType())
dialect.dataTypeProvider.shortType() -> ArrayColumnType<Short, List<Short>>(ShortColumnType())
dialect.dataTypeProvider.ushortType() -> ArrayColumnType<UShort, List<UShort>>(UShortColumnType())
dialect.dataTypeProvider.integerType() -> ArrayColumnType<Int, List<Int>>(IntegerColumnType())
dialect.dataTypeProvider.uintegerType() -> ArrayColumnType<UInt, List<UInt>>(UIntegerColumnType())
dialect.dataTypeProvider.longType() -> ArrayColumnType<Long, List<Long>>(LongColumnType())
dialect.dataTypeProvider.ulongType() -> ArrayColumnType<ULong, List<ULong>>(ULongColumnType())
dialect.dataTypeProvider.floatType() -> ArrayColumnType<Float, List<Float>>(FloatColumnType())
dialect.dataTypeProvider.doubleType() -> ArrayColumnType<Double, List<Double>>(DoubleColumnType())
dialect.dataTypeProvider.binaryType() -> ArrayColumnType<ByteArray, List<ByteArray>>(BasicBinaryColumnType())
dialect.dataTypeProvider.booleanType() -> ArrayColumnType<Boolean, List<Boolean>>(BooleanColumnType())
dialect.dataTypeProvider.uuidType() -> ArrayColumnType<UUID, List<UUID>>(UUIDColumnType())
else -> ArrayColumnType<String, List<String>>(VarCharColumnType())
}
}