[CONJ-1140] Internal cast exception in DatabaseMetaData.executeQuery() Created: 2023-12-11  Updated: 2023-12-12  Resolved: 2023-12-11

Status: Closed
Project: MariaDB Connector/J
Component/s: metadata
Affects Version/s: 3.3.1
Fix Version/s: 3.3.2

Type: Bug Priority: Critical
Reporter: Marius Assignee: Diego Dupin
Resolution: Fixed Votes: 0
Labels: None


 Description   

This bug was introduced in 3.3.1 (works fine in 3.3.0):

org.mariadb.jdbc.DatabaseMetaData.executeQuery.DatabaseMetaData.java()
private ResultSet executeQuery(String sql) throws SQLException {
Statement stmt =
connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
CompleteResult rs = (CompleteResult) stmt.executeQuery(sql);
rs.setStatement(null); // bypass Hibernate statement tracking (CONJ-49)
rs.useAliasAsName();
return rs;
}

Here the cast to CompleResult throws an exception since it gots a StreamingResult!

Exception thrown:

2023-12-11 09:05:59 - java.lang.ClassCastException: class org.mariadb.jdbc.client.result.StreamingResult cannot be cast to class org.mariadb.jdbc.client.result.CompleteResult (org.mariadb.jdbc.client.result.StreamingResult and org.mariadb.jdbc.client.result.CompleteResult are in unnamed module of loader 'app')
2023-12-11 09:06:00 -     at org.mariadb.jdbc.DatabaseMetaData.executeQuery(DatabaseMetaData.java:557)
2023-12-11 09:06:00 -     at org.mariadb.jdbc.DatabaseMetaData.getTables(DatabaseMetaData.java:771)

We use parameters "useCursorFetch=true;defaultFetchSize=1000" in the JDBC connection string.
The code triggering this (running inside Wildfly 30):

       try (ResultSet rs = connection.getMetaData().getTables(connection.getCatalog(), connection.getSchema(), "sn_dbversion", new String[] { "TABLE" }))
        {
            while (rs.next())
            ...



 Comments   
Comment by Diego Dupin [ 2023-12-11 ]

confirmed, this concerns all queries on Metadata when option defaultFetchSize is set

Generated at Thu Feb 08 03:20:55 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.