Description:
```
StringBuilder query = new StringBuilder("SELECT");
query.append(" SCHEMA_NAME AS TABLE_SCHEM,"); // TABLE_SCHEM
query.append(" CATALOG_NAME AS TABLE_CATALOG"); // TABLE_CATALOG
query.append(" FROM INFORMATION_SCHEMA.SCHEMATA");
query.append(chooseBasedOnDatabaseTerm(() -> " WHERE FALSE",
() -> dbFilter == null ? "" : StringUtils.hasWildcards(dbFilter) ? " WHERE SCHEMA_NAME LIKE ?" : " WHERE SCHEMA_NAME = ?"));
try (PreparedStatement pStmt = prepareMetaDataSafeStatement(query.toString())) {
if (dbFilter != null) { // <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
pStmt.setString(1, dbFilter); // <<<<<<<<<<<<<<<<<<<<<
}
ResultSet rs = executeMetadataQuery(pStmt);
((com.mysql.cj.jdbc.result.ResultSetInternalMethods) rs).getColumnDefinition().setFields(createSchemasFields());
return rs;
}
```
When the `chooseBaseOnDatabaseTerm` evaluates ` WHERE FALSE`,
The following if statement still checks `doFilter != null`, and throws
```
Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
```
How to repeat:
Make a case which evaluates ` WHERE FALSE`.