Skip to content

Commit 92338e4

Browse files
committed
Fix resource leaking in Liquibase dialect
1 parent a26c5dc commit 92338e4

File tree

2 files changed

+20
-19
lines changed

2 files changed

+20
-19
lines changed

liquibase-dialect/src/main/java/tech/ydb/liquibase/change/InsertDataChangeYdb.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import java.util.Iterator;
77
import java.util.List;
88
import java.util.Map;
9+
910
import liquibase.change.ChangeMetaData;
1011
import liquibase.change.ColumnConfig;
1112
import liquibase.change.DatabaseChange;
@@ -34,14 +35,13 @@ public SqlStatement[] generateStatements(Database database) {
3435

3536
try {
3637
JdbcConnection jdbcConnection = (JdbcConnection) database.getConnection();
37-
ResultSet resultSet = jdbcConnection.getMetaData()
38-
.getColumns(null, null, getTableName(), null);
39-
40-
while (resultSet.next()) {
41-
columnToLiquibaseDataType.put(
42-
resultSet.getString("COLUMN_NAME").toLowerCase(),
43-
DataTypeFactory.getInstance()
44-
.fromDescription(resultSet.getString("TYPE_NAME"), database));
38+
try (ResultSet rs = jdbcConnection.getMetaData().getColumns(null, null, getTableName(), null)) {
39+
while (rs.next()) {
40+
columnToLiquibaseDataType.put(
41+
rs.getString("COLUMN_NAME").toLowerCase(),
42+
DataTypeFactory.getInstance().fromDescription(rs.getString("TYPE_NAME"), database)
43+
);
44+
}
4545
}
4646

4747
StringBuilder yqlInsert = new StringBuilder()

liquibase-dialect/src/main/java/tech/ydb/liquibase/change/LoadDataChangeYdb.java

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package tech.ydb.liquibase.change;
22

3-
import com.opencsv.exceptions.CsvMalformedLineException;
43
import java.io.IOException;
54
import java.sql.ResultSet;
65
import java.util.ArrayList;
@@ -9,6 +8,8 @@
98
import java.util.LinkedHashMap;
109
import java.util.List;
1110
import java.util.Map;
11+
12+
import com.opencsv.exceptions.CsvMalformedLineException;
1213
import liquibase.Scope;
1314
import liquibase.change.ChangeMetaData;
1415
import liquibase.change.DatabaseChange;
@@ -23,6 +24,7 @@
2324
import liquibase.statement.core.InsertStatement;
2425
import liquibase.statement.core.RawSqlStatement;
2526
import liquibase.util.csv.CSVReader;
27+
2628
import tech.ydb.liquibase.database.YdbDatabase;
2729

2830
/**
@@ -60,17 +62,16 @@ public SqlStatement[] generateStatements(Database database) {
6062
}
6163

6264
JdbcConnection jdbcConnection = (JdbcConnection) database.getConnection();
63-
ResultSet resultSet = jdbcConnection.getMetaData()
64-
.getColumns(null, null, tableName, null);
65-
66-
while (resultSet.next()) {
67-
columnToLiquibaseDataType.put(
68-
resultSet.getString("COLUMN_NAME").toLowerCase(),
69-
DataTypeFactory.getInstance()
70-
.fromDescription(resultSet.getString("TYPE_NAME"), database));
71-
}
65+
try (ResultSet resultSet = jdbcConnection.getMetaData().getColumns(null, null, tableName, null)) {
66+
while (resultSet.next()) {
67+
columnToLiquibaseDataType.put(
68+
resultSet.getString("COLUMN_NAME").toLowerCase(),
69+
DataTypeFactory.getInstance()
70+
.fromDescription(resultSet.getString("TYPE_NAME"), database));
71+
}
7272

73-
return getSqlStatements(database, reader, headers);
73+
return getSqlStatements(database, reader, headers);
74+
}
7475
} catch (CsvMalformedLineException e) {
7576
throw new RuntimeException("Error parsing " + getRelativeTo() + " on line " + e.getLineNumber() + ": " + e.getMessage());
7677
} catch (UnexpectedLiquibaseException ule) {

0 commit comments

Comments
 (0)