@@ -24,12 +24,12 @@ internal object MysqlFunctionProvider : FunctionProvider() {
24
24
25
25
override fun <T : String ?> ExpressionWithColumnType<T>.match (pattern : String , mode : MatchMode ? ): Op <Boolean > = MATCH (this , pattern, mode ? : MysqlMatchMode .STRICT )
26
26
27
- private class MATCH (val expr : ExpressionWithColumnType <* >, val pattern : String , val mode : MatchMode ): Op<Boolean>() {
27
+ private class MATCH (val expr : ExpressionWithColumnType <* >, val pattern : String , val mode : MatchMode ) : Op<Boolean>() {
28
28
override fun toSQL (queryBuilder : QueryBuilder ): String =
29
29
" MATCH(${expr.toSQL(queryBuilder)} ) AGAINST ('$pattern ' ${mode.mode()} )"
30
30
}
31
31
32
- private enum class MysqlMatchMode (val operator : String ): FunctionProvider.MatchMode {
32
+ private enum class MysqlMatchMode (val operator : String ) : FunctionProvider.MatchMode {
33
33
STRICT (" IN BOOLEAN MODE" ),
34
34
NATURAL_LANGUAGE (" IN NATURAL LANGUAGE MODE" );
35
35
@@ -40,21 +40,17 @@ internal object MysqlFunctionProvider : FunctionProvider() {
40
40
internal object MysqlDialect : VendorDialect(" mysql" , MysqlDataTypeProvider , MysqlFunctionProvider ) {
41
41
42
42
override fun tableColumns (vararg tables : Table ): Map <Table , List <Pair <String , Boolean >>> {
43
-
44
- val statement = TransactionManager .current().connection.createStatement()
45
-
46
- try {
47
- val rs = statement.executeQuery(
48
- " SELECT DISTINCT TABLE_NAME, COLUMN_NAME, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '${getDatabase()} '" )
49
- return rs.extractColumns(tables) {
43
+ return TransactionManager .current().exec(
44
+ " SELECT DISTINCT TABLE_NAME, COLUMN_NAME, IS_NULLABLE FROM" +
45
+ " INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '${getDatabase()} '" ) { rs ->
46
+ rs.extractColumns(tables) {
50
47
Triple (it.getString(" TABLE_NAME" )!! , it.getString(" COLUMN_NAME" )!! , it.getBoolean(" IS_NULLABLE" ))
51
48
}
52
- } finally {
53
- statement.close()
54
- }
49
+ }!!
55
50
}
56
51
57
- override @Synchronized fun columnConstraints (vararg tables : Table ): Map <Pair <String , String >, List<ForeignKeyConstraint>> {
52
+ override @Synchronized
53
+ fun columnConstraints (vararg tables : Table ): Map <Pair <String , String >, List<ForeignKeyConstraint>> {
58
54
59
55
val constraints = HashMap <Pair <String , String >, MutableList <ForeignKeyConstraint >>()
60
56
@@ -67,20 +63,18 @@ internal object MysqlDialect : VendorDialect("mysql", MysqlDataTypeProvider, Mys
67
63
return " "
68
64
}
69
65
70
- val statement = TransactionManager .current().connection.createStatement()
71
- try {
72
- val rs = statement.executeQuery(
73
- " SELECT\n " +
74
- " rc.CONSTRAINT_NAME,\n " +
75
- " ku.TABLE_NAME,\n " +
76
- " ku.COLUMN_NAME,\n " +
77
- " ku.REFERENCED_TABLE_NAME,\n " +
78
- " ku.REFERENCED_COLUMN_NAME,\n " +
79
- " rc.DELETE_RULE\n " +
80
- " FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc\n " +
81
- " INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ku\n " +
82
- " ON ku.TABLE_SCHEMA = rc.CONSTRAINT_SCHEMA AND rc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME\n " +
83
- " WHERE ku.TABLE_SCHEMA = '${getDatabase()} ' ${inTableList()} " )
66
+ TransactionManager .current().exec(
67
+ " SELECT\n " +
68
+ " rc.CONSTRAINT_NAME,\n " +
69
+ " ku.TABLE_NAME,\n " +
70
+ " ku.COLUMN_NAME,\n " +
71
+ " ku.REFERENCED_TABLE_NAME,\n " +
72
+ " ku.REFERENCED_COLUMN_NAME,\n " +
73
+ " rc.DELETE_RULE\n " +
74
+ " FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS rc\n " +
75
+ " INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE ku\n " +
76
+ " ON ku.TABLE_SCHEMA = rc.CONSTRAINT_SCHEMA AND rc.CONSTRAINT_NAME = ku.CONSTRAINT_NAME\n " +
77
+ " WHERE ku.TABLE_SCHEMA = '${getDatabase()} ' ${inTableList()} " ) { rs ->
84
78
85
79
while (rs.next()) {
86
80
val refereeTableName = rs.getString(" TABLE_NAME" )!!
@@ -92,24 +86,21 @@ internal object MysqlDialect : VendorDialect("mysql", MysqlDataTypeProvider, Mys
92
86
val constraintDeleteRule = ReferenceOption .valueOf(rs.getString(" DELETE_RULE" )!! .replace(" " , " _" ))
93
87
constraints.getOrPut(Pair (refereeTableName, refereeColumnName), { arrayListOf () }).add(ForeignKeyConstraint (constraintName, refereeTableName, refereeColumnName, refTableName, refColumnName, constraintDeleteRule))
94
88
}
95
- } finally {
96
- statement.close()
97
89
}
98
90
99
91
return constraints
100
92
}
101
93
102
- override @Synchronized fun existingIndices (vararg tables : Table ): Map <Table , List <Index >> {
94
+ override @Synchronized
95
+ fun existingIndices (vararg tables : Table ): Map <Table , List <Index >> {
103
96
104
97
val constraints = HashMap <Table , MutableList <Index >>()
105
98
106
99
val tableNames = tables.associateBy { it.nameInDatabaseCase() }
107
100
108
101
val transaction = TransactionManager .current()
109
- val statement = transaction.connection.createStatement()
110
- try {
111
- val rs = statement.executeQuery(
112
- """ SELECT DISTINCT ind.* from (
102
+ transaction.exec(
103
+ """ SELECT DISTINCT ind.* from (
113
104
SELECT
114
105
TABLE_NAME, INDEX_NAME, GROUP_CONCAT(column_name ORDER BY seq_in_index) AS `COLUMNS`, NON_UNIQUE
115
106
FROM INFORMATION_SCHEMA.STATISTICS s
@@ -121,7 +112,7 @@ internal object MysqlDialect : VendorDialect("mysql", MysqlDataTypeProvider, Mys
121
112
and TABLE_SCHEMA = '${getDatabase()} '
122
113
and kcu.REFERENCED_TABLE_NAME is not NULL
123
114
WHERE kcu.COLUMN_NAME is NULL OR ind.NON_UNIQUE is FALSE;
124
- """ )
115
+ """ ) { rs ->
125
116
126
117
while (rs.next()) {
127
118
val tableName = rs.getString(" TABLE_NAME" )!!
@@ -132,8 +123,6 @@ internal object MysqlDialect : VendorDialect("mysql", MysqlDataTypeProvider, Mys
132
123
constraints.getOrPut(tableNames[tableName]!! , { arrayListOf () }).add(Index (indexName, tableName, columnsInIndex, isUnique))
133
124
}
134
125
}
135
- } finally {
136
- statement.close()
137
126
}
138
127
139
128
return constraints
@@ -161,5 +150,5 @@ internal object MysqlDialect : VendorDialect("mysql", MysqlDataTypeProvider, Mys
161
150
override fun dropIndex (tableName : String , indexName : String ): String =
162
151
" ALTER TABLE $tableName DROP INDEX $indexName "
163
152
164
- fun isFractionDateTimeSupported () = TransactionManager .current().db.metadata.let { (it.databaseMajorVersion == 5 && it.databaseMinorVersion >= 6 ) || it.databaseMajorVersion > 5 }
153
+ fun isFractionDateTimeSupported () = TransactionManager .current().db.metadata.let { (it.databaseMajorVersion == 5 && it.databaseMinorVersion >= 6 ) || it.databaseMajorVersion > 5 }
165
154
}
0 commit comments