tursodatabase/turso · error · SQLFeatureNotSupportedException
Not yet implemented by SQLite JDBC driver
Error message
Not yet implemented by SQLite JDBC driver
What it means
JDBC4DatabaseMetaData.getFunctionColumns(...) throws SQLFeatureNotSupportedException('Not yet implemented by SQLite JDBC driver') at JDBC4DatabaseMetaData.java:1186 - the driver has not implemented the JDBC function-metadata catalog (the sibling getFunctions and getPseudoColumns are also unimplemented). It is a metadata-surface gap, not a statement about your schema: the engine functions exist but are not enumerated through this API.
Solutions
- Skip/avoid the function-columns metadata view in your tool for turso databases.
- Catch SQLFeatureNotSupportedException around DatabaseMetaData introspection and degrade gracefully to table/column metadata.
- Query sqlite's own catalogs instead (pragma table_info, pragma function_list) when you need engine-level function info.
- Watch driver updates - the message says 'not yet implemented', so a later release may add it.
Example fix
// before
ResultSet cols = meta.getFunctionColumns(null, null, "%, "%"); // throws
// after
try {
ResultSet cols = meta.getFunctionColumns(null, null, "%", "%");
} catch (SQLFeatureNotSupportedException e) {
// function metadata not implemented; degrade gracefully
} Defensive patterns
Strategy: try-catch
Validate before calling
// probe metadata capability safely before building UI/reports DatabaseMetaData md = conn.getMetaData(); // wrap function-metadata calls; turso has not implemented getFunctionColumns
Try / catch
try {
ResultSet rs = md.getFunctionColumns(catalog, schema, fnPat, colPat);
} catch (SQLFeatureNotSupportedException e) {
// function metadata unavailable: skip that view / use pragma function_list
} Prevention
- Treat optional DatabaseMetaData methods as fallible in DB tools.
- Degrade to table/column metadata when function metadata is unavailable.
- Use SQLite pragmas (pragma function_list) for engine-level function info.
- Keep JDBC conformance expectations per-driver when building generic tooling.
When it happens
Trigger: DatabaseMetaData.getFunctionColumns(catalog, schema, functionPattern, columnPattern) called by SQL clients (DBeaver function-columns tab, DataGrip, SQuirreL), schema-documentation tools, or ORM introspection during startup.
Common situations: Browsing a turso database in a JDBC-capable IDE/tool that enumerates functions; tools generating ER diagrams or schema reports; migration tooling that inventories all DatabaseMetaData methods; JDBC conformance checkers.
Related errors
- createBlob not supported
- createClob not supported
- createNClob not supported
- createSQLXML not supported
- Error reading ASCII stream
AI-assisted analysis of tursodatabase/turso@244cde92a7 (2026-08-20).
Data as JSON: /api/errors/3bca779c916bae30.
Report an issue: GitHub.
Appendix: source
Thrown at bindings/java/src/main/java/tech/turso/jdbc4/JDBC4DatabaseMetaData.java:1186
@Override
public ResultSet getClientInfoProperties() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
@SkipNullableCheck
public ResultSet getFunctions(String catalog, String schemaPattern, String functionNamePattern)
throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
@SkipNullableCheck
public ResultSet getFunctionColumns(
String catalog, String schemaPattern, String functionNamePattern, String columnNamePattern)
throws SQLException {
throw new SQLFeatureNotSupportedException("Not yet implemented by SQLite JDBC driver");
}
@Override
@SkipNullableCheck
public ResultSet getPseudoColumns(
String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)
throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
public boolean generatedKeyAlwaysReturned() throws SQLException {
throw new SQLFeatureNotSupportedException();
}
@Override
@SkipNullableCheck
public <T> T unwrap(Class<T> iface) throws SQLException {View on GitHub (pinned to 244cde92a7)