A holdable ResultSet is closed on commit (during autocommit), it should remain open. This is related to
where in 2.2.x no rows can be retrieved from a holdable ResultSet after commit.
The logic surrounding statement completion, commits etc in the driver spreads responsibility around too much (eg the transaction coordinator needs to know what happens with statements, Statement needs to know what should happen with the ResultSet and vice versa). This may need to be reworked in an observer pattern to decouple this.