Skip to content

Result sets

Mark Rotteveel edited this page Jul 19, 2015 · 1 revision

Scrollable Result Sets

Q: Are scrollable result sets supported?

A: Only ResultSet.TYPE_SCROLL_INSENSITIVE result sets are supported. As of version 1.5 Firebird server does not support scrollable result sets, so driver has to provide a workaround for this issue. In this mode it caches all data locally, so do not use it for big result sets. It might happen that in the future scrollable result sets will be part of the server, at that point support of ResultSet.TYPE_SCROLL_SENSITIVE will be added.

Updatable Result Sets

JayBird 1.0.x and 1.5.x support only ResultSet.CONCUR_READ_ONLY mode.

JayBird 2.0.0 and higher support updatable result sets under the conditions specified below.

The result set is updatable only when:

  • The SELECT statement references subset of single table or an updatable view;
  • All base table columns not included in SELECT allow NULL values;
  • The SELECT statement does not contain subqueries, a DISTINCT predicate, a HAVING clause, aggregate functions, joined tables, user-defined functions, or stored procedures;
  • The referenced in SELECT columns include all columns from table’s primary key or SELECT also references the RDB$DB_KEY column.

Please note, Jaybird 2.0 is not able to handle columns changed in the BEFORE INSERT triggers, especially when such trigger assign the primary key of the record. In this case Jaybird will have an old value of the PK (possibly NULL), but trigger will assign another ID. Any changes to the record columns will not be saved, since the UPDATE statement will try to update record with the old PK, not the assigned one.

Next versions of Jaybird (possibly 2.1) will be able to refresh the changed fields when running against Firebird 2.0, which supports INSERT INTO ... RETURNS ... statements.

RowSet Support

Q: Does Jaybird provide a javax.sql.RowSet implementation?

A: No, you can use the implementation from Oracle.