[#5486] - Jaybird JDBC Driver Incompatibility

Category:
Bug report
Priority:
Urgent
Status:
New
Project: Severity:
Major
Resolution:
Open
Component: Reproducibility:
Always
Assigned to:

jasperserver-pro/semantic-layer/src/main/java/com/jaspersoft/commons/semantic/metaapi/impl/jdbc/BaseJdbcMetaDataFactoryImpl.java
line 186,187

This implementation is calling "stmt.executeQuery(query);" directly followed by "rs = stmt.getResultSet();". This is effectively retrieving the ResultSet twice. The javase 7 standard notes that "This method should be called only once per result."
http://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#getResu...()

The Jaybird JDBC driver strictly adheres to this behavior throwing "org.firebirdsql.jdbc.FBSQLException: Only one resultset at a time/statement" when getResultSet is called more than once (line 893 of jaybird repo).

https://github.com/FirebirdSQL/jaybird/blob/master/src/main/org/firebird...

To add to this, Jaybird calls getResultSet from executeQuery, so the two lines in BaseJdbcMetaDataFactoryImpl cause this issue everytime (though I'm not entirely sure how to reproduce the error outside of our environment). Personally I would call this undefined behavior according to the jdbc standard, but I would agree with jaybirds approach by not allowing several calls to getResultSet based off it's notes.

This is unfortunately causing issues for our client.

v6.1.0
ji-semantic-layer.jar
joedrake's picture
Joined: Aug 25 2015 - 11:01am
Last seen: 7 years 9 months ago
Feedback
randomness