8000 fix wrong type matching for postgres in query statements, fix postgre… · andrewsumskoy/postgresql-async@2c8bb45 · GitHub
[go: up one dir, main page]

8000
Skip to content

Commit 2c8bb45

Browse files
author
Andrew Sumskoy
committed
fix wrong type matching for postgres in query statements, fix postgres performance degradation on sql like 'select ... where in ({1,2,3}::numeric[])'
1 parent 5d0a7e0 commit 2c8bb45

File tree

3 files changed

+11
-7
lines changed

3 files changed

+11
-7
lines changed

postgresql-async/src/main/scala/com/github/mauricio/async/db/postgresql/PostgreSQLConnection.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,9 @@ class PostgreSQLConnection
119119
val promise = Promise[QueryResult]()
120120
this.setQueryPromise(promise)
121121

122-
val holder = this.parsedStatements.getOrElseUpdate(query,
122+
val statementKey = query + "|" + values.map(value => encoderRegistry.kindOf(value)).mkString(",")
123+
124+
val holder = this.parsedStatements.getOrElseUpdate(statementKey,
123125
new PreparedStatementHolder( query, preparedStatementsCounter.incrementAndGet ))
124126

125127
if (holder.paramsCount != values.length) {

postgresql-async/src/main/scala/com/github/mauricio/async/db/postgresql/column/ColumnTypes.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ object ColumnTypes {
2020
final val Untyped = 0
2121
final val Bigserial = 20
2222
final val BigserialArray = 1016
23+
final val Bigint = 20
24+
final val BigintArray = 1016
2325
final val Char = 18
2426
final val CharArray = 1002
2527
final val Smallint = 21

postgresql-async/src/main/scala/com/github/mauricio/async/db/postgresql/column/PostgreSQLColumnEncoderRegistry.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,14 @@ object PostgreSQLColumnEncoderRegistry {
3131
class PostgreSQLColumnEncoderRegistry extends ColumnEncoderRegistry {
3232

3333
private val classesSequence_ : List[(Class[_], (ColumnEncoder, Int))] = List(
34-
classOf[Int] -> (IntegerEncoderDecoder -> ColumnTypes.Numeric),
35-
classOf[java.lang.Integer] -> (IntegerEncoderDecoder -> ColumnTypes.Numeric),
34+
classOf[Int] -> (IntegerEncoderDecoder -> ColumnTypes.Integer),
35+
classOf[java.lang.Integer] -> (IntegerEncoderDecoder -> ColumnTypes.Integer),
3636

37-
classOf[java.lang.Short] -> (ShortEncoderDecoder -> ColumnTypes.Numeric),
38-
classOf[Short] -> (ShortEncoderDecoder -> ColumnTypes.Numeric),
37+
classOf[java.lang.Short] -> (ShortEncoderDecoder -> ColumnTypes.Integer),
38+
classOf[Short] -> (ShortEncoderDecoder -> ColumnTypes.Integer),
3939

40-
classOf[Long] -> (LongEncoderDecoder -> ColumnTypes.Numeric),
41-
classOf[java.lang.Long] -> (LongEncoderDecoder -> ColumnTypes.Numeric),
40+
classOf[Long] -> (LongEncoderDecoder -> ColumnTypes.Bigint),
41+
classOf[java.lang.Long] -> (LongEncoderDecoder -> ColumnTypes.Bigint),
4242

4343
classOf[String] -> (StringEncoderDecoder -> ColumnTypes.Varchar),
4444
classOf[java.lang.String] -> (StringEncoderDecoder -> ColumnTypes.Varchar),

0 commit comments

Comments
 (0)
0