diff --git a/src/main/java/org/sqlite/jdbc3/JDBC3DatabaseMetaData.java b/src/main/java/org/sqlite/jdbc3/JDBC3DatabaseMetaData.java index 086fcbc000..59aadfbbd1 100644 --- a/src/main/java/org/sqlite/jdbc3/JDBC3DatabaseMetaData.java +++ b/src/main/java/org/sqlite/jdbc3/JDBC3DatabaseMetaData.java @@ -1057,10 +1057,10 @@ public ResultSet getColumns(String c, String s, String tblNamePattern, String co } // try to parse the values try { - int iInteger = Integer.parseUnsignedInt(sInteger); + int iInteger = Integer.parseUnsignedInt(sInteger.trim()); // parse decimals? if (sDecimal != null) { - iDecimalDigits = Integer.parseUnsignedInt(sDecimal); + iDecimalDigits = Integer.parseUnsignedInt(sDecimal.trim()); // columns size equals sum of integer and decimal part // of dimension iColumnSize = iInteger + iDecimalDigits; diff --git a/src/test/java/org/sqlite/DBMetaDataTest.java b/src/test/java/org/sqlite/DBMetaDataTest.java index 31af581373..5f297c42d9 100644 --- a/src/test/java/org/sqlite/DBMetaDataTest.java +++ b/src/test/java/org/sqlite/DBMetaDataTest.java @@ -477,6 +477,24 @@ public void getColumns() throws SQLException { assertThat(rs.getString("COLUMN_NAME")).isEqualTo("sql"); } + @Test + public void getColumnsPrecisionScale() throws SQLException { + stat.executeUpdate("create table gh_1215 (n numeric ( 10 , 5 ), d decimal ( 10 ))"); + + ResultSet rs = meta.getColumns(null, null, "gh_1215", "%"); + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("COLUMN_NAME")).isEqualTo("n"); + assertThat(rs.getString("TYPE_NAME")).isEqualTo("NUMERIC"); + assertThat(rs.getString("COLUMN_SIZE")).isEqualTo("15"); + assertThat(rs.getString("DECIMAL_DIGITS")).isEqualTo("5"); + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("COLUMN_NAME")).isEqualTo("d"); + assertThat(rs.getString("TYPE_NAME")).isEqualTo("DECIMAL"); + assertThat(rs.getString("COLUMN_SIZE")).isEqualTo("10"); + assertThat(rs.getString("DECIMAL_DIGITS")).isEqualTo("0"); + assertThat(rs.next()).isFalse(); + } + @Test public void getColumnsIncludingGenerated() throws SQLException { stat.executeUpdate("create table gh_724 (i integer,j integer generated always as (i))");