Skip to content

Commit 8455468

Browse files
committed
fix(jdbc): getColumns doesn't correctly parse precision/scale with whitespace
Closes: #1215
1 parent 27cbdc0 commit 8455468

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/main/java/org/sqlite/jdbc3/JDBC3DatabaseMetaData.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1057,10 +1057,10 @@ public ResultSet getColumns(String c, String s, String tblNamePattern, String co
10571057
}
10581058
// try to parse the values
10591059
try {
1060-
int iInteger = Integer.parseUnsignedInt(sInteger);
1060+
int iInteger = Integer.parseUnsignedInt(sInteger.trim());
10611061
// parse decimals?
10621062
if (sDecimal != null) {
1063-
iDecimalDigits = Integer.parseUnsignedInt(sDecimal);
1063+
iDecimalDigits = Integer.parseUnsignedInt(sDecimal.trim());
10641064
// columns size equals sum of integer and decimal part
10651065
// of dimension
10661066
iColumnSize = iInteger + iDecimalDigits;

src/test/java/org/sqlite/DBMetaDataTest.java

+18
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,24 @@ public void getColumns() throws SQLException {
477477
assertThat(rs.getString("COLUMN_NAME")).isEqualTo("sql");
478478
}
479479

480+
@Test
481+
public void getColumnsPrecisionScale() throws SQLException {
482+
stat.executeUpdate("create table gh_1215 (n numeric ( 10 , 5 ), d decimal ( 10 ))");
483+
484+
ResultSet rs = meta.getColumns(null, null, "gh_1215", "%");
485+
assertThat(rs.next()).isTrue();
486+
assertThat(rs.getString("COLUMN_NAME")).isEqualTo("n");
487+
assertThat(rs.getString("TYPE_NAME")).isEqualTo("NUMERIC");
488+
assertThat(rs.getString("COLUMN_SIZE")).isEqualTo("15");
489+
assertThat(rs.getString("DECIMAL_DIGITS")).isEqualTo("5");
490+
assertThat(rs.next()).isTrue();
491+
assertThat(rs.getString("COLUMN_NAME")).isEqualTo("d");
492+
assertThat(rs.getString("TYPE_NAME")).isEqualTo("DECIMAL");
493+
assertThat(rs.getString("COLUMN_SIZE")).isEqualTo("10");
494+
assertThat(rs.getString("DECIMAL_DIGITS")).isEqualTo("0");
495+
assertThat(rs.next()).isFalse();
496+
}
497+
480498
@Test
481499
public void getColumnsIncludingGenerated() throws SQLException {
482500
stat.executeUpdate("create table gh_724 (i integer,j integer generated always as (i))");

0 commit comments

Comments
 (0)