Skip to content

Commit a5149f8

Browse files
authored
fix(jdbc): escape table name in getColumns metadata query
1 parent 3a5b1b5 commit a5149f8

2 files changed

Lines changed: 15 additions & 1 deletion

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1095,7 +1095,7 @@ public ResultSet getColumns(String c, String s, String tblNamePattern, String co
10951095
.append(iDecimalDigits)
10961096
.append(" as colDecimalDigits, ")
10971097
.append("'")
1098-
.append(tableName)
1098+
.append(escape(tableName))
10991099
.append("' as tblname, ")
11001100
.append("'")
11011101
.append(escape(colName))

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -477,6 +477,20 @@ public void getColumns() throws SQLException {
477477
assertThat(rs.getString("COLUMN_NAME")).isEqualTo("sql");
478478
}
479479

480+
@Test
481+
public void getColumnsTableNameWithQuote() throws SQLException {
482+
stat.executeUpdate("create table \"o'brien\" (id integer, name text)");
483+
484+
ResultSet rs = meta.getColumns(null, null, "o'brien", "%");
485+
assertThat(rs.next()).isTrue();
486+
assertThat(rs.getString("TABLE_NAME")).isEqualTo("o'brien");
487+
assertThat(rs.getString("COLUMN_NAME")).isEqualTo("id");
488+
assertThat(rs.next()).isTrue();
489+
assertThat(rs.getString("TABLE_NAME")).isEqualTo("o'brien");
490+
assertThat(rs.getString("COLUMN_NAME")).isEqualTo("name");
491+
assertThat(rs.next()).isFalse();
492+
}
493+
480494
@Test
481495
public void getColumnsPrecisionScale() throws SQLException {
482496
stat.executeUpdate("create table gh_1215 (n numeric ( 10 , 5 ), d decimal ( 10 ))");

0 commit comments

Comments
 (0)