Skip to content

Commit 55ed58a

Browse files
authored
Enabled and fixed linter for the jdbc module (#608)
* Enabled and fixed linter for the jdbc module * Fixed linting in tests
1 parent b9d4f0c commit 55ed58a

File tree

15 files changed

+85
-82
lines changed

15 files changed

+85
-82
lines changed

dataframe-jdbc/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ plugins {
33
alias(kotlin.jvm)
44
alias(publisher)
55
alias(kover)
6-
// TODO enable later: alias(libs.kotlinter)
6+
alias(kotlinter)
77
alias(jupyter.api)
88
}
99
}

dataframe-jdbc/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/db/DbType.kt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.jetbrains.kotlinx.dataframe.io.db
22

33
import org.jetbrains.kotlinx.dataframe.io.TableColumnMetadata
4+
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
45
import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema
56
import java.sql.ResultSet
6-
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
77
import kotlin.reflect.KType
88

99
/**
@@ -12,8 +12,6 @@ import kotlin.reflect.KType
1212
* @property [dbTypeInJdbcUrl] The name of the database as specified in the JDBC URL.
1313
*/
1414
public abstract class DbType(public val dbTypeInJdbcUrl: String) {
15-
16-
1715
/**
1816
* Represents the JDBC driver class name for a given database type.
1917
*

dataframe-jdbc/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/db/H2.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.jetbrains.kotlinx.dataframe.io.db
22

33
import org.jetbrains.kotlinx.dataframe.io.TableColumnMetadata
4+
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
45
import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema
56
import java.sql.ResultSet
67
import java.util.Locale
7-
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
88
import kotlin.reflect.KType
99

1010
/**
@@ -24,15 +24,16 @@ public object H2 : DbType("h2") {
2424
}
2525

2626
override fun isSystemTable(tableMetadata: TableMetadata): Boolean {
27-
return tableMetadata.name.lowercase(Locale.getDefault()).contains("sys_")
28-
|| tableMetadata.schemaName?.lowercase(Locale.getDefault())?.contains("information_schema") ?: false
27+
return tableMetadata.name.lowercase(Locale.getDefault()).contains("sys_") ||
28+
tableMetadata.schemaName?.lowercase(Locale.getDefault())?.contains("information_schema") ?: false
2929
}
3030

3131
override fun buildTableMetadata(tables: ResultSet): TableMetadata {
3232
return TableMetadata(
3333
tables.getString("TABLE_NAME"),
3434
tables.getString("TABLE_SCHEM"),
35-
tables.getString("TABLE_CAT"))
35+
tables.getString("TABLE_CAT")
36+
)
3637
}
3738

3839
override fun convertSqlTypeToKType(tableColumnMetadata: TableColumnMetadata): KType? {

dataframe-jdbc/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/db/MariaDb.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.jetbrains.kotlinx.dataframe.io.db
22

33
import org.jetbrains.kotlinx.dataframe.io.TableColumnMetadata
4+
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
45
import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema
56
import java.sql.ResultSet
6-
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
77
import kotlin.reflect.KType
88
import kotlin.reflect.full.createType
99

@@ -18,7 +18,7 @@ public object MariaDb : DbType("mariadb") {
1818
get() = "org.mariadb.jdbc.Driver"
1919

2020
override fun convertSqlTypeToColumnSchemaValue(tableColumnMetadata: TableColumnMetadata): ColumnSchema? {
21-
if(tableColumnMetadata.sqlTypeName == "SMALLINT") {
21+
if (tableColumnMetadata.sqlTypeName == "SMALLINT") {
2222
val kType = Short::class.createType(nullable = tableColumnMetadata.isNullable)
2323
return ColumnSchema.Value(kType)
2424
}
@@ -33,12 +33,14 @@ public object MariaDb : DbType("mariadb") {
3333
return TableMetadata(
3434
tables.getString("table_name"),
3535
tables.getString("table_schem"),
36-
tables.getString("table_cat"))
36+
tables.getString("table_cat")
37+
)
3738
}
3839

3940
override fun convertSqlTypeToKType(tableColumnMetadata: TableColumnMetadata): KType? {
40-
if(tableColumnMetadata.sqlTypeName == "SMALLINT")
41+
if (tableColumnMetadata.sqlTypeName == "SMALLINT") {
4142
return Short::class.createType(nullable = tableColumnMetadata.isNullable)
43+
}
4244
return null
4345
}
4446
}

dataframe-jdbc/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/db/MySql.kt

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.jetbrains.kotlinx.dataframe.io.db
22

33
import org.jetbrains.kotlinx.dataframe.io.TableColumnMetadata
4+
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
45
import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema
56
import java.sql.ResultSet
67
import java.util.Locale
7-
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
88
import kotlin.reflect.KType
99
import kotlin.reflect.full.createType
1010

@@ -19,7 +19,7 @@ public object MySql : DbType("mysql") {
1919
get() = "com.mysql.jdbc.Driver"
2020

2121
override fun convertSqlTypeToColumnSchemaValue(tableColumnMetadata: TableColumnMetadata): ColumnSchema? {
22-
if(tableColumnMetadata.sqlTypeName == "INT UNSIGNED") {
22+
if (tableColumnMetadata.sqlTypeName == "INT UNSIGNED") {
2323
val kType = Long::class.createType(nullable = tableColumnMetadata.isNullable)
2424
return ColumnSchema.Value(kType)
2525
}
@@ -34,24 +34,26 @@ public object MySql : DbType("mysql") {
3434
val schemaName = tableMetadata.schemaName
3535
val name = tableMetadata.name
3636

37-
return schemaName.containsWithLowercase("information_schema")
38-
|| tableMetadata.catalogue.containsWithLowercase("performance_schema")
39-
|| tableMetadata.catalogue.containsWithLowercase("mysql")
40-
|| schemaName?.contains("mysql.") == true
41-
|| name.contains("mysql.")
42-
|| name.contains("sys_config")
37+
return schemaName.containsWithLowercase("information_schema") ||
38+
tableMetadata.catalogue.containsWithLowercase("performance_schema") ||
39+
tableMetadata.catalogue.containsWithLowercase("mysql") ||
40+
schemaName?.contains("mysql.") == true ||
41+
name.contains("mysql.") ||
42+
name.contains("sys_config")
4343
}
4444

4545
override fun buildTableMetadata(tables: ResultSet): TableMetadata {
4646
return TableMetadata(
4747
tables.getString("table_name"),
4848
tables.getString("table_schem"),
49-
tables.getString("table_cat"))
49+
tables.getString("table_cat")
50+
)
5051
}
5152

5253
override fun convertSqlTypeToKType(tableColumnMetadata: TableColumnMetadata): KType? {
53-
if(tableColumnMetadata.sqlTypeName == "INT UNSIGNED")
54+
if (tableColumnMetadata.sqlTypeName == "INT UNSIGNED") {
5455
return Long::class.createType(nullable = tableColumnMetadata.isNullable)
56+
}
5557
return null
5658
}
5759
}

dataframe-jdbc/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/db/PostgreSql.kt

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package org.jetbrains.kotlinx.dataframe.io.db
22

33
import org.jetbrains.kotlinx.dataframe.io.TableColumnMetadata
4+
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
45
import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema
56
import java.sql.ResultSet
67
import java.util.Locale
7-
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
88
import kotlin.reflect.KType
99
import kotlin.reflect.full.createType
1010

@@ -20,29 +20,33 @@ public object PostgreSql : DbType("postgresql") {
2020

2121
override fun convertSqlTypeToColumnSchemaValue(tableColumnMetadata: TableColumnMetadata): ColumnSchema? {
2222
// TODO: could be a wrapper of convertSqlTypeToKType
23-
if (tableColumnMetadata.sqlTypeName == "money") // because of https://github.com/pgjdbc/pgjdbc/issues/425
24-
{
23+
// because of https://github.com/pgjdbc/pgjdbc/issues/425
24+
if (tableColumnMetadata.sqlTypeName == "money") {
2525
val kType = String::class.createType(nullable = tableColumnMetadata.isNullable)
2626
return ColumnSchema.Value(kType)
2727
}
2828
return null
2929
}
3030

3131
override fun isSystemTable(tableMetadata: TableMetadata): Boolean {
32-
return tableMetadata.name.lowercase(Locale.getDefault()).contains("pg_")
33-
|| tableMetadata.schemaName?.lowercase(Locale.getDefault())?.contains("pg_catalog.") ?: false
32+
return tableMetadata.name.lowercase(Locale.getDefault()).contains("pg_") ||
33+
tableMetadata.schemaName?.lowercase(Locale.getDefault())?.contains("pg_catalog.") ?: false
3434
}
3535

3636
override fun buildTableMetadata(tables: ResultSet): TableMetadata {
3737
return TableMetadata(
3838
tables.getString("table_name"),
3939
tables.getString("table_schem"),
40-
tables.getString("table_cat"))
40+
tables.getString("table_cat")
41+
)
4142
}
4243

4344
override fun convertSqlTypeToKType(tableColumnMetadata: TableColumnMetadata): KType? {
44-
if(tableColumnMetadata.sqlTypeName == "money") // because of https://github.com/pgjdbc/pgjdbc/issues/425
45+
// because of https://github.com/pgjdbc/pgjdbc/issues/425
46+
if (tableColumnMetadata.sqlTypeName == "money") {
4547
return String::class.createType(nullable = tableColumnMetadata.isNullable)
48+
}
49+
4650
return null
4751
}
4852
}

dataframe-jdbc/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/db/Sqlite.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package org.jetbrains.kotlinx.dataframe.io.db
22

33
import org.jetbrains.kotlinx.dataframe.io.TableColumnMetadata
4+
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
45
import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema
56
import java.sql.ResultSet
6-
import org.jetbrains.kotlinx.dataframe.io.TableMetadata
77
import kotlin.reflect.KType
88

99
/**
@@ -28,7 +28,8 @@ public object Sqlite : DbType("sqlite") {
2828
return TableMetadata(
2929
tables.getString("TABLE_NAME"),
3030
tables.getString("TABLE_SCHEM"),
31-
tables.getString("TABLE_CAT"))
31+
tables.getString("TABLE_CAT")
32+
)
3233
}
3334

3435
override fun convertSqlTypeToKType(tableColumnMetadata: TableColumnMetadata): KType? {

dataframe-jdbc/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/db/util.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ public fun extractDBTypeFromUrl(url: String?): DbType {
1717
MySql.dbTypeInJdbcUrl in url -> MySql
1818
Sqlite.dbTypeInJdbcUrl in url -> Sqlite
1919
PostgreSql.dbTypeInJdbcUrl in url -> PostgreSql
20-
else -> throw IllegalArgumentException("Unsupported database type in the url: $url. " +
21-
"Only H2, MariaDB, MySQL, SQLite and PostgreSQL are supported!")
20+
else -> throw IllegalArgumentException(
21+
"Unsupported database type in the url: $url. " +
22+
"Only H2, MariaDB, MySQL, SQLite and PostgreSQL are supported!"
23+
)
2224
}
2325
} else {
2426
throw SQLException("Database URL could not be null. The existing value is $url")

dataframe-jdbc/src/main/kotlin/org/jetbrains/kotlinx/dataframe/io/readJdbc.kt

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
11
package org.jetbrains.kotlinx.dataframe.io
22

33
import io.github.oshai.kotlinlogging.KotlinLogging
4+
import org.jetbrains.kotlinx.dataframe.AnyFrame
5+
import org.jetbrains.kotlinx.dataframe.DataColumn
6+
import org.jetbrains.kotlinx.dataframe.DataFrame
7+
import org.jetbrains.kotlinx.dataframe.api.toDataFrame
8+
import org.jetbrains.kotlinx.dataframe.impl.schema.DataFrameSchemaImpl
9+
import org.jetbrains.kotlinx.dataframe.io.db.DbType
10+
import org.jetbrains.kotlinx.dataframe.io.db.extractDBTypeFromUrl
11+
import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema
12+
import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema
413
import java.math.BigDecimal
14+
import java.sql.Blob
15+
import java.sql.Clob
516
import java.sql.Connection
617
import java.sql.DatabaseMetaData
718
import java.sql.DriverManager
19+
import java.sql.NClob
20+
import java.sql.Ref
821
import java.sql.ResultSet
922
import java.sql.ResultSetMetaData
23+
import java.sql.RowId
24+
import java.sql.SQLXML
1025
import java.sql.Time
1126
import java.sql.Timestamp
1227
import java.sql.Types
13-
import java.sql.RowId
14-
import java.sql.Ref
15-
import java.sql.Clob
16-
import java.sql.Blob
17-
import java.sql.NClob
18-
import java.sql.SQLXML
1928
import java.util.Date
20-
import org.jetbrains.kotlinx.dataframe.AnyFrame
21-
import org.jetbrains.kotlinx.dataframe.DataColumn
22-
import org.jetbrains.kotlinx.dataframe.DataFrame
23-
import org.jetbrains.kotlinx.dataframe.api.toDataFrame
24-
import org.jetbrains.kotlinx.dataframe.impl.schema.DataFrameSchemaImpl
25-
import org.jetbrains.kotlinx.dataframe.io.db.DbType
26-
import org.jetbrains.kotlinx.dataframe.io.db.extractDBTypeFromUrl
27-
import org.jetbrains.kotlinx.dataframe.schema.ColumnSchema
28-
import org.jetbrains.kotlinx.dataframe.schema.DataFrameSchema
2929
import kotlin.reflect.KType
3030
import kotlin.reflect.full.createType
3131
import kotlin.reflect.full.isSupertypeOf
@@ -139,7 +139,7 @@ public fun DataFrame.Companion.readSqlTable(
139139
val dbType = extractDBTypeFromUrl(url)
140140

141141
connection.createStatement().use { st ->
142-
logger.debug { "Connection with url:${url} is established successfully." }
142+
logger.debug { "Connection with url:$url is established successfully." }
143143

144144
st.executeQuery(
145145
preparedQuery
@@ -492,7 +492,6 @@ private fun generateColumnSchemaValue(
492492
makeCommonSqlToKTypeMapping(tableColumnMetadata)
493493
)
494494

495-
496495
/**
497496
* Retrieves the metadata of the columns in the result set.
498497
*
@@ -688,4 +687,3 @@ private fun makeCommonSqlToKTypeMapping(tableColumnMetadata: TableColumnMetadata
688687
val kClass = jdbcTypeToKTypeMapping[tableColumnMetadata.jdbcType] ?: String::class
689688
return kClass.createType(nullable = tableColumnMetadata.isNullable)
690689
}
691-

dataframe-jdbc/src/test/kotlin/org/jetbrains/kotlinx/dataframe/io/h2Test.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ import org.h2.jdbc.JdbcSQLSyntaxErrorException
66
import org.intellij.lang.annotations.Language
77
import org.jetbrains.kotlinx.dataframe.DataFrame
88
import org.jetbrains.kotlinx.dataframe.annotations.DataSchema
9+
import org.jetbrains.kotlinx.dataframe.api.add
910
import org.jetbrains.kotlinx.dataframe.api.cast
1011
import org.jetbrains.kotlinx.dataframe.api.filter
12+
import org.jetbrains.kotlinx.dataframe.api.select
1113
import org.jetbrains.kotlinx.dataframe.io.db.H2
1214
import org.junit.AfterClass
1315
import org.junit.BeforeClass
@@ -17,8 +19,6 @@ import java.sql.Connection
1719
import java.sql.DriverManager
1820
import java.sql.ResultSet
1921
import java.sql.SQLException
20-
import org.jetbrains.kotlinx.dataframe.api.add
21-
import org.jetbrains.kotlinx.dataframe.api.select
2222
import kotlin.reflect.typeOf
2323

2424
private const val URL = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;MODE=MySQL;DATABASE_TO_UPPER=false"
@@ -84,7 +84,6 @@ class JdbcTest {
8484
connection =
8585
DriverManager.getConnection(URL)
8686

87-
8887
// Create table Customer
8988
@Language("SQL")
9089
val createCustomerTableQuery = """
@@ -447,7 +446,6 @@ class JdbcTest {
447446
total_amount DECIMAL(10, 2))
448447
"""
449448

450-
451449
@Language("SQL")
452450
val dropSQL = """
453451
DROP TABLE Customer
@@ -680,4 +678,3 @@ class JdbcTest {
680678
saleDataSchema1.columns["amount"]!!.type shouldBe typeOf<BigDecimal>()
681679
}
682680
}
683-

0 commit comments

Comments
 (0)