@@ -915,7 +915,9 @@ public ResultSet getColumns(String c, String s, String tblNamePattern, String co
915915 checkOpen ();
916916
917917 StringBuilder sql = new StringBuilder (700 );
918- sql .append ("select null as TABLE_CAT, " ).append (quote (s )).append (" as TABLE_SCHEM, tblname as TABLE_NAME, " )
918+ sql .append ("select null as TABLE_CAT, " )
919+ .append (quote (s == null ? "main" : s ))
920+ .append (" as TABLE_SCHEM, tblname as TABLE_NAME, " )
919921 .append (
920922 "cn as COLUMN_NAME, ct as DATA_TYPE, tn as TYPE_NAME, colSize as COLUMN_SIZE, " )
921923 .append (
@@ -948,10 +950,13 @@ public ResultSet getColumns(String c, String s, String tblNamePattern, String co
948950 ResultSet rsColAutoinc = null ;
949951 try {
950952 statColAutoinc = conn .createStatement ();
951- rsColAutoinc = statColAutoinc .executeQuery (
952- "SELECT LIKE('%autoincrement%', LOWER(sql)) FROM " + prependSchemaPrefix (s ,
953- "sqlite_master WHERE LOWER(name) = LOWER('" ) + escape (tableName )
954- + "') AND TYPE IN ('table', 'view')" );
953+ rsColAutoinc =
954+ statColAutoinc .executeQuery (
955+ "SELECT LIKE('%autoincrement%', LOWER(sql)) FROM "
956+ + prependSchemaPrefix (
957+ s , "sqlite_master WHERE LOWER(name) = LOWER('" )
958+ + escape (tableName )
959+ + "') AND TYPE IN ('table', 'view')" );
955960 rsColAutoinc .next ();
956961 isAutoIncrement = rsColAutoinc .getInt (1 ) == 1 ;
957962 } finally {
@@ -972,8 +977,10 @@ public ResultSet getColumns(String c, String s, String tblNamePattern, String co
972977 }
973978
974979 // For each table, get the column info and build into overall SQL
975- String pragmaStatement = "PRAGMA " + prependSchemaPrefix (s , "table_xinfo('" + escape (tableName ) +
976- "')" );
980+ String pragmaStatement =
981+ "PRAGMA "
982+ + prependSchemaPrefix (
983+ s , "table_xinfo('" + escape (tableName ) + "')" );
977984 try (Statement colstat = conn .createStatement ();
978985 ResultSet rscol = colstat .executeQuery (pragmaStatement )) {
979986
@@ -1172,8 +1179,9 @@ public ResultSet getCrossReference(
11721179 /** @see java.sql.DatabaseMetaData#getSchemas() */
11731180 public ResultSet getSchemas () throws SQLException {
11741181 if (getSchemas == null ) {
1175- getSchemas = conn .prepareStatement (
1176- "select name as TABLE_SCHEM, null as TABLE_CATALOG from pragma_database_list;" );
1182+ getSchemas =
1183+ conn .prepareStatement (
1184+ "select name as TABLE_SCHEM, null as TABLE_CATALOG from pragma_database_list;" );
11771185 }
11781186
11791187 return getSchemas .executeQuery ();
@@ -1198,7 +1206,9 @@ public ResultSet getPrimaryKeys(String c, String s, String table) throws SQLExce
11981206
11991207 Statement stat = conn .createStatement ();
12001208 StringBuilder sql = new StringBuilder (512 );
1201- sql .append ("select null as TABLE_CAT, " ).append (quote (s )).append (" as TABLE_SCHEM, '" )
1209+ sql .append ("select null as TABLE_CAT, " )
1210+ .append (quote (s == null ? "main" : s ))
1211+ .append (" as TABLE_SCHEM, '" )
12021212 .append (escape (table ))
12031213 .append ("' as TABLE_NAME, cn as COLUMN_NAME, ks as KEY_SEQ, pk as PK_NAME from (" );
12041214
@@ -1249,7 +1259,7 @@ public ResultSet getExportedKeys(String catalog, String schema, String table)
12491259
12501260 catalog = (catalog != null ) ? quote (catalog ) : null ;
12511261
1252- String quotedSchema = (schema != null ) ? quote (schema ) : null ;
1262+ String quotedSchema = (schema != null ) ? quote (schema ) : quote ( "main" ) ;
12531263
12541264 StringBuilder exportedKeysQuery = new StringBuilder (512 );
12551265
@@ -1258,11 +1268,11 @@ public ResultSet getExportedKeys(String catalog, String schema, String table)
12581268 if (pkColumns != null ) {
12591269 // retrieve table list
12601270 ArrayList <String > tableList ;
1261- try (
1262- ResultSet rs = stat .executeQuery (
1263- "select name from " + prependSchemaPrefix ( schema , "sqlite_master where type = " +
1264- "'table'" ))
1265- ) {
1271+ try (ResultSet rs =
1272+ stat .executeQuery (
1273+ "select name from "
1274+ + prependSchemaPrefix (
1275+ schema , "sqlite_master where type = " + "'table'" )) ) {
12661276 tableList = new ArrayList <>();
12671277
12681278 while (rs .next ()) {
@@ -1406,12 +1416,12 @@ public ResultSet getImportedKeys(String catalog, String schema, String table)
14061416 sql .append ("select " )
14071417 .append (quote (catalog ))
14081418 .append (" as PKTABLE_CAT, " )
1409- .append (quote (schema ))
1419+ .append (quote (schema == null ? "main" : schema ))
14101420 .append (" as PKTABLE_SCHEM, " )
14111421 .append ("ptn as PKTABLE_NAME, pcn as PKCOLUMN_NAME, " )
14121422 .append (quote (catalog ))
14131423 .append (" as FKTABLE_CAT, " )
1414- .append (quote (schema ))
1424+ .append (quote (schema == null ? "main" : schema ))
14151425 .append (" as FKTABLE_SCHEM, " )
14161426 .append (quote (table ))
14171427 .append (" as FKTABLE_NAME, " )
@@ -1526,7 +1536,7 @@ public ResultSet getIndexInfo(String c, String s, String table, boolean u, boole
15261536 // define the column header
15271537 // this is from the JDBC spec, it is part of the driver protocol
15281538 sql .append ("select null as TABLE_CAT," )
1529- .append (quote (s ))
1539+ .append (quote (s == null ? "main" : s ))
15301540 .append (" as TABLE_SCHEM, '" )
15311541 .append (escape (table ))
15321542 .append (
@@ -1537,7 +1547,9 @@ public ResultSet getIndexInfo(String c, String s, String table, boolean u, boole
15371547 "cn as COLUMN_NAME, null as ASC_OR_DESC, 0 as CARDINALITY, 0 as PAGES, null as FILTER_CONDITION from (" );
15381548
15391549 // this always returns a result set now, previously threw exception
1540- rs = stat .executeQuery ("pragma " + prependSchemaPrefix (s , "index_list('" + escape (table ) + "');" ));
1550+ rs =
1551+ stat .executeQuery (
1552+ "pragma " + prependSchemaPrefix (s , "index_list('" + escape (table ) + "');" ));
15411553
15421554 ArrayList <ArrayList <Object >> indexList = new ArrayList <>();
15431555 while (rs .next ()) {
@@ -1561,7 +1573,11 @@ public ResultSet getIndexInfo(String c, String s, String table, boolean u, boole
15611573 while (indexIterator .hasNext ()) {
15621574 currentIndex = indexIterator .next ();
15631575 String indexName = currentIndex .get (0 ).toString ();
1564- rs = stat .executeQuery ("pragma " + prependSchemaPrefix (s , "index_info('" + escape (indexName ) + "');" ));
1576+ rs =
1577+ stat .executeQuery (
1578+ "pragma "
1579+ + prependSchemaPrefix (
1580+ s , "index_info('" + escape (indexName ) + "');" ));
15651581
15661582 while (rs .next ()) {
15671583
@@ -1689,7 +1705,10 @@ public synchronized ResultSet getTables(
16891705 StringBuilder sql = new StringBuilder ();
16901706 sql .append ("SELECT" ).append ("\n " );
16911707 sql .append (" NULL AS TABLE_CAT," ).append ("\n " );
1692- sql .append (" NULL AS TABLE_SCHEM," ).append ("\n " );
1708+ sql .append (" " )
1709+ .append (quote (s == null ? "main" : s ))
1710+ .append (" AS TABLE_SCHEM," )
1711+ .append ("\n " );
16931712 sql .append (" NAME AS TABLE_NAME," ).append ("\n " );
16941713 sql .append (" TYPE AS TABLE_TYPE," ).append ("\n " );
16951714 sql .append (" NULL AS REMARKS," ).append ("\n " );
@@ -1985,7 +2004,7 @@ public PrimaryKeyFinder(String table) throws SQLException {
19852004 /**
19862005 * Constructor.
19872006 *
1988- * @param table The table for which to get find a primary key.
2007+ * @param table The table for which to get find a primary key.
19892008 * @param schema Schema in which table is located
19902009 * @throws SQLException
19912010 */
@@ -2000,10 +2019,13 @@ public PrimaryKeyFinder(String table, String schema) throws SQLException {
20002019 // read create SQL script for table
20012020 ResultSet rs =
20022021 stat .executeQuery (
2003- "select sql from " + prependSchemaPrefix (schema , "sqlite_master where"
2004- + " lower(name) = lower('"
2005- + escape (table )
2006- + "') and type in ('table', 'view')" ))) {
2022+ "select sql from "
2023+ + prependSchemaPrefix (
2024+ schema ,
2025+ "sqlite_master where"
2026+ + " lower(name) = lower('"
2027+ + escape (table )
2028+ + "') and type in ('table', 'view')" ))) {
20072029
20082030 if (!rs .next ()) throw new SQLException ("Table not found: '" + table + "'" );
20092031
@@ -2019,10 +2041,12 @@ public PrimaryKeyFinder(String table, String schema) throws SQLException {
20192041 }
20202042
20212043 if (pkColumns == null ) {
2022- try (
2023- ResultSet rs2 = stat .executeQuery (
2024- "pragma " + prependSchemaPrefix (schema , "table_info('" + escape (table ) + "');" ))
2025- ) {
2044+ try (ResultSet rs2 =
2045+ stat .executeQuery (
2046+ "pragma "
2047+ + prependSchemaPrefix (
2048+ schema ,
2049+ "table_info('" + escape (table ) + "');" ))) {
20262050 while (rs2 .next ()) {
20272051 if (rs2 .getBoolean (6 )) pkColumns = new String [] {rs2 .getString (2 )};
20282052 }
@@ -2073,13 +2097,15 @@ public ImportedKeyFinder(String table, String schema) throws SQLException {
20732097
20742098 List <String > fkNames = getForeignKeyNames (this .fkTableName , schema );
20752099
2076- try (
2077- Statement stat = conn .createStatement ();
2078- ResultSet rs = stat .executeQuery ("pragma " + prependSchemaPrefix (
2079- schema ,
2080- "foreign_key_list('" + escape (this .fkTableName .toLowerCase ()) + "')"
2081- ))
2082- ) {
2100+ try (Statement stat = conn .createStatement ();
2101+ ResultSet rs =
2102+ stat .executeQuery (
2103+ "pragma "
2104+ + prependSchemaPrefix (
2105+ schema ,
2106+ "foreign_key_list('"
2107+ + escape (this .fkTableName .toLowerCase ())
2108+ + "')" ))) {
20832109
20842110 int prevFkId = -1 ;
20852111 int count = 0 ;
@@ -2122,9 +2148,15 @@ private List<String> getForeignKeyNames(String tbl, String schema) throws SQLExc
21222148 return fkNames ;
21232149 }
21242150 try (Statement stat2 = conn .createStatement ();
2125- ResultSet rs = stat2 .executeQuery ("select sql from " + prependSchemaPrefix (schema ,
2126- "sqlite_master where" + " lower(name) = lower('" + escape (tbl ) + "')"
2127- ))) {
2151+ ResultSet rs =
2152+ stat2 .executeQuery (
2153+ "select sql from "
2154+ + prependSchemaPrefix (
2155+ schema ,
2156+ "sqlite_master where"
2157+ + " lower(name) = lower('"
2158+ + escape (tbl )
2159+ + "')" ))) {
21282160 if (rs .next ()) {
21292161 Matcher matcher = FK_NAMED_PATTERN .matcher (rs .getString (1 ));
21302162
0 commit comments