Skip to content

Commit 77ecd43

Browse files
committed
Release 1.1.16:
Gradle 7.6.1 Kotlin 1.8.21 clickhouse-jdbc 0.4.6 + fixed to make it work joda-time 2.12.2 code cleanup
1 parent 8a281c7 commit 77ecd43

File tree

20 files changed

+58
-57
lines changed

20 files changed

+58
-57
lines changed

build.gradle.kts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
22
import tanvd.kosogor.proxy.publishJar
33

44
group = "tanvd.aorm"
5-
version = "1.1.15"
5+
version = "1.1.16"
66

77
plugins {
8-
kotlin("jvm") version "1.7.10" apply true
9-
id("tanvd.kosogor") version "1.0.15"
8+
kotlin("jvm") version "1.8.21" apply true
9+
id("tanvd.kosogor") version "1.0.18"
1010
}
1111

1212
val artifactoryUploadEnabled = System.getenv("artifactory_url") != null
@@ -19,15 +19,15 @@ repositories {
1919

2020
dependencies {
2121
api(kotlin("stdlib"))
22-
api("com.clickhouse", "clickhouse-jdbc", "0.3.2-patch11")
23-
api("joda-time", "joda-time", "2.11.1")
22+
api("com.clickhouse", "clickhouse-jdbc", "0.4.6")
23+
api("joda-time", "joda-time", "2.12.2")
2424
api("org.slf4j", "slf4j-api", "1.7.36")
2525

2626
testImplementation("org.junit.jupiter", "junit-jupiter-api", "5.8.2")
2727
testImplementation("org.junit.jupiter", "junit-jupiter-engine", "5.8.2")
2828

29-
testImplementation("org.testcontainers", "testcontainers", "1.17.5")
30-
testImplementation("org.testcontainers", "clickhouse", "1.17.5")
29+
testImplementation("org.testcontainers", "clickhouse", "1.18.1")
30+
testImplementation("org.lz4", "lz4-java", "1.8.0")
3131
}
3232

3333
tasks.withType<JavaCompile> {
@@ -38,8 +38,10 @@ tasks.withType<JavaCompile> {
3838
tasks.withType<KotlinJvmCompile>().configureEach {
3939
kotlinOptions {
4040
jvmTarget = "11"
41-
apiVersion = "1.7"
42-
languageVersion = "1.7"
41+
apiVersion = "1.8"
42+
languageVersion = "1.8"
43+
freeCompilerArgs += "-Xuse-ir"
44+
freeCompilerArgs += "-Xbackend-threads=3"
4345
}
4446
}
4547

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.1-all.zip
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.1-all.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists

src/main/kotlin/tanvd/aorm/DbType.kt

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package tanvd.aorm
33
import org.joda.time.DateTime
44
import org.joda.time.format.DateTimeFormat
55
import org.joda.time.format.DateTimeFormatter
6-
import ru.yandex.clickhouse.ClickHouseUtil
6+
import tanvd.aorm.utils.escapeQuotes
77
import java.math.BigDecimal
88
import java.sql.*
99
import java.text.SimpleDateFormat
@@ -301,8 +301,8 @@ class DbArrayInt8 : DbNumericArrayType<Byte>("Array(Int8)",
301301
{ DbInt8() })
302302

303303
class DbArrayUInt8 : DbNumericArrayType<Byte>("Array(UInt8)",
304-
{ resultSet, name -> (resultSet.getArray(name).array as ShortArray).map { it.toByte() } },
305-
{ resultSet, index -> (resultSet.getArray(index).array as ShortArray).map { it.toByte() } },
304+
{ resultSet, name -> (resultSet.getArray(name).array as ByteArray).toList() },
305+
{ resultSet, index -> (resultSet.getArray(index).array as ByteArray).toList() },
306306
{ DbUInt8() })
307307

308308
class DbArrayInt16 : DbNumericArrayType<Short>("Array(Int16)",
@@ -311,8 +311,8 @@ class DbArrayInt16 : DbNumericArrayType<Short>("Array(Int16)",
311311
{ DbInt16() })
312312

313313
class DbArrayUInt16 : DbNumericArrayType<Short>("Array(UInt16)",
314-
{ resultSet, name -> (resultSet.getArray(name).array as IntArray).map { it.toShort() } },
315-
{ resultSet, index -> (resultSet.getArray(index).array as IntArray).map { it.toShort() } },
314+
{ resultSet, name -> (resultSet.getArray(name).array as ShortArray).toList() },
315+
{ resultSet, index -> (resultSet.getArray(index).array as ShortArray).toList() },
316316
{ DbUInt16() })
317317

318318
class DbArrayInt32 : DbNumericArrayType<Int>("Array(Int32)",
@@ -321,16 +321,15 @@ class DbArrayInt32 : DbNumericArrayType<Int>("Array(Int32)",
321321
{ DbInt32() })
322322

323323
class DbArrayUInt32 : DbNumericArrayType<Int>("Array(UInt32)",
324-
{ resultSet, name -> (resultSet.getArray(name).array as LongArray).map { it.toInt() } },
325-
{ resultSet, index -> (resultSet.getArray(index).array as LongArray).map { it.toInt() } },
324+
{ resultSet, name -> (resultSet.getArray(name).array as IntArray).toList() },
325+
{ resultSet, index -> (resultSet.getArray(index).array as IntArray).toList() },
326326
{ DbUInt32() })
327327

328328
class DbArrayInt64 : DbNumericArrayType<Long>("Array(Int64)",
329329
{ resultSet, name -> (resultSet.getArray(name).array as LongArray).toList() },
330330
{ resultSet, index -> (resultSet.getArray(index).array as LongArray).toList() },
331331
{ DbInt64() })
332332

333-
@Suppress("UNCHECKED_CAST")
334333
class DbArrayUInt64 : DbNumericArrayType<Long>("Array(UInt64)",
335334
{ resultSet, name -> (resultSet.getArray(name).array as LongArray).toList() },
336335
{ resultSet, index -> (resultSet.getArray(index).array as LongArray).toList() },
@@ -381,11 +380,11 @@ class DbArrayBoolean : DbArrayType<Boolean>() {
381380
override fun toSqlName(): String = "Array(UInt8)"
382381

383382
override fun getValue(name: String, result: ResultSet): List<Boolean> {
384-
return (result.getArray(name).array as ShortArray).map { it== 1.toShort() }
383+
return (result.getArray(name).array as ByteArray).map { it == 1.toByte() }
385384
}
386385

387386
override fun getValue(index: Int, result: ResultSet): List<Boolean> {
388-
return (result.getArray(index).array as ShortArray).map { it == 1.toShort() }
387+
return (result.getArray(index).array as ByteArray).map { it == 1.toByte() }
389388
}
390389

391390
override fun setValue(index: Int, statement: PreparedStatement, value: List<Boolean>) {
@@ -419,7 +418,7 @@ class DbString : DbPrimitiveType<String>() {
419418
statement.setString(index, value)
420419
}
421420

422-
override fun toStringValue(value: String): String = "'${ClickHouseUtil.escape(value)}'"
421+
override fun toStringValue(value: String): String = "'${value.escapeQuotes()}'"
423422

424423
override fun toArray(): DbArrayType<String> = DbArrayString()
425424
}
@@ -446,7 +445,7 @@ class DbArrayString : DbArrayType<String>() {
446445
}
447446

448447
override fun toStringValue(value: List<String>): String =
449-
value.joinToString(prefix = "[", postfix = "]") { "'${ClickHouseUtil.escape(it)}'" }
448+
value.joinToString(prefix = "[", postfix = "]") { "'${it.escapeQuotes()}'" }
450449

451450
override fun toPrimitive(): DbPrimitiveType<String> = DbString()
452451
}

src/main/kotlin/tanvd/aorm/Engine.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ sealed class Engine {
3333
(sample_by?.let { "SAMPLE BY ${it.toQueryQualifier()} " } ?: "")
3434

3535
override fun toSqlDef() = if (extendedSyntaxUsed)
36-
"${familyModifier}MergeTree(${specificParams?.let { it } ?: ""}) $extendedSyntaxDef"
36+
"${familyModifier}MergeTree(${specificParams ?: ""}) $extendedSyntaxDef"
3737
else
3838
"${familyModifier}MergeTree($mainSyntaxDef${specificParams?.let { ", $it" } ?: ""})"
3939

src/main/kotlin/tanvd/aorm/Row.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ data class InsertRow(val values: MutableMap<Column<*, DbType<*>>, Any>) {
2626
data class SelectRow(val values: MutableMap<Expression<*, DbType<*>>, Any>) {
2727
val columns = LinkedHashSet(values.map { it.key })
2828

29-
constructor(result: ResultSet, expressions: Set<Expression<*, DbType<*>>>) : this(expressions.withIndex().map { (index, expr) ->
30-
expr to expr.getValue(result, index + 1)
31-
}.toMap().toMutableMap())
29+
constructor(result: ResultSet, expressions: Set<Expression<*, DbType<*>>>) : this(
30+
expressions.withIndex().associateTo(hashMapOf()) { (index, expr) ->
31+
expr to expr.getValue(result, index + 1)
32+
})
3233

3334
@Suppress("UNCHECKED_CAST")
3435
fun <E : Any, K : DbType<E>> getOrNull(expression: Expression<E, K>): E? = values[expression] as E?

src/main/kotlin/tanvd/aorm/Table.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
package tanvd.aorm
22

3-
import ru.yandex.clickhouse.ClickHouseUtil
43
import tanvd.aorm.expression.Column
54
import tanvd.aorm.expression.Expression
65
import tanvd.aorm.query.Query
6+
import tanvd.aorm.utils.escapeQuotes
77
import java.util.*
88
import kotlin.reflect.KClass
99

1010

1111
abstract class Table(name: String) {
12-
var name: String = ClickHouseUtil.escape(name)
12+
var name: String = name.escapeQuotes()
1313

1414
//todo: encapsulate this
1515
val columns: LinkedHashSet<Column<*, DbType<*>>> = linkedSetOf()

src/main/kotlin/tanvd/aorm/View.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package tanvd.aorm
22

3-
import ru.yandex.clickhouse.ClickHouseUtil
43
import tanvd.aorm.query.Query
4+
import tanvd.aorm.utils.escapeQuotes
55

66
abstract class View(name: String) {
7-
var name: String = ClickHouseUtil.escape(name)!!
7+
var name: String = name.escapeQuotes()
88

99
abstract val query: Query
1010
}
1111

1212
abstract class MaterializedView(name: String) {
13-
var name: String = ClickHouseUtil.escape(name)!!
13+
var name: String = name.escapeQuotes()
1414

1515
abstract val query: Query
1616
abstract val engine: Engine

src/main/kotlin/tanvd/aorm/expression/Column.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package tanvd.aorm.expression
22

3-
import ru.yandex.clickhouse.ClickHouseUtil
43
import tanvd.aorm.DbType
54
import tanvd.aorm.Table
5+
import tanvd.aorm.utils.escapeQuotes
66

77
class Column<E : Any, out T : DbType<E>>(val name: String, type: T, val table: Table,
88
default: (() -> E)? = null) : Expression<E, T>(type) {
9-
override fun toQueryQualifier(): String = ClickHouseUtil.escape(name)
9+
override fun toQueryQualifier(): String = name.escapeQuotes()
1010

11-
override fun toSelectListDef(): String = ClickHouseUtil.escape(name)
11+
override fun toSelectListDef(): String = name.escapeQuotes()
1212

13-
fun toSqlDef(): String = "${ClickHouseUtil.escape(name)} ${type.toSqlName()}"
13+
fun toSqlDef(): String = "${name.escapeQuotes()} ${type.toSqlName()}"
1414

1515
var defaultFunction: (() -> E)? = default
1616

src/main/kotlin/tanvd/aorm/expression/Expression.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package tanvd.aorm.expression
22

3-
import ru.yandex.clickhouse.ClickHouseUtil
43
import tanvd.aorm.*
4+
import tanvd.aorm.utils.escapeQuotes
55
import java.sql.PreparedStatement
66
import java.sql.ResultSet
77

@@ -37,11 +37,11 @@ abstract class Expression<E : Any, out T : DbType<E>>(val type: T) {
3737
class AliasedExpression<E : Any, out T : DbType<E>, Y : Expression<E, T>>(val name: String, val expression: Y) :
3838
Expression<E, T>(expression.type) {
3939
var materializedInView: String? = null
40-
val alias = ValueExpression(ClickHouseUtil.escape(name), type)
40+
val alias = ValueExpression(name.escapeQuotes(), type)
4141

42-
override fun toSelectListDef(): String = "${expression.toQueryQualifier()} as ${ClickHouseUtil.escape(name)}"
42+
override fun toSelectListDef(): String = "${expression.toQueryQualifier()} as ${name.escapeQuotes()}"
4343

44-
override fun toQueryQualifier(): String = ClickHouseUtil.escape(name)
44+
override fun toQueryQualifier(): String = name.escapeQuotes()
4545
}
4646

4747
fun <E : Any, T : DbType<E>, Y : Expression<E, T>> alias(name: String, expression: Y): AliasedExpression<E, T, Y> = AliasedExpression(name, expression)

src/main/kotlin/tanvd/aorm/expression/ValueExpression.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package tanvd.aorm.expression
22

3-
import ru.yandex.clickhouse.ClickHouseUtil
43
import tanvd.aorm.DbType
4+
import tanvd.aorm.utils.escapeQuotes
55

66
class ValueExpression<E : Any, out T : DbType<E>>(val name: String, type: T) : Expression<E, T>(type) {
7-
override fun toSelectListDef(): String = ClickHouseUtil.escape(name)
7+
override fun toSelectListDef(): String = name.escapeQuotes()
88

9-
override fun toQueryQualifier(): String = ClickHouseUtil.escape(name)
9+
override fun toQueryQualifier(): String = name.escapeQuotes()
1010
}
1111

1212
class SqlValueExpression<E : Any, out T : DbType<E>>(val value: String, type: T) : Expression<E, T>(type) {

0 commit comments

Comments
 (0)