We have a problem with the Microsoft JDBC driver throwing a "can not reread column" exception. We have discovered that it only appears if the resultset contains a NTEXT, TEXT or IMAGE column. The driver then imposes the limitation that columns must be read increasing column indexes and that they may not be re-read. This limitation is permitted by the JDBC spec: See <http://java.sun.com/products/jdk/1.4.1/docs/guide/jdbc/spec/jdbc-spec.frame 7> .html#4149 "For maximum portability, columns within a row should be read in left-to-right order, and each column should only be read once. This reflects implementation limitations in some underlying database protocols.
I would like to commit to the /test directory some unit tests demonstrating this problem. I believe it can be fixed by just enforinc the left-to-right order, by reading columns by index versus by name. I wrote a unit test that only runs if the Dialect is Sybase. However, should we create a subclass of SybaseDialect that is MSSQLDialect so that the test case will only run with MSSQLServer versus Sybase. Any objection to committing the unit tests? Even if we don't solve the problem, it can serve to Prove the problem exists.. Eric > -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Behalf Of Gavin > King > Sent: Thursday, October 16, 2003 11:41 AM > To: Neill Robbins > Cc: [EMAIL PROTECTED] > Subject: Re: [Hibernate] Hibernate issue found on > [Springframework-developer] - Hibernate commit/rollback > > > This is correct behaviour. If the commit() fails, you are supposed to > call rollback(), as described in the Hibernate doco. > > Neill Robbins wrote: > > >Sirs, > > > >I noticed this post on the Spring developer ist. It seemed > important enough to make you guys aware of... > > > >Regards, > >N > > > > > >-----Original Message----- > >From: jürgen höller [werk3AT] [mailto:[EMAIL PROTECTED] > >Sent: 16 October 2003 05:53 > >To: [EMAIL PROTECTED] > >Cc: [EMAIL PROTECTED] > >Subject: Re: [Springframework-developer] Hibernate commit/rollback > >Importance: Low > > > > > >You're right, of course, but there's a general issue. I've > checked the implementation of Hibernate's JDBCTransaction: It > really behaves the way I've outlined, i.e. if there's a > flushing failure on commit, the commit call returns without > having rolled back the database transaction. We need to make > sure that the database transaction is completed, i.e. either > committed or rolled back, after the transaction manager has > finished its work. > > > >Juergen > > > > > > -----Ursprüngliche Nachricht----- > > Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] > > Gesendet: Do 16.10.2003 02:34 > > An: jürgen höller [werk3AT] > > Cc: [EMAIL PROTECTED] > > Betreff: Re: [Springframework-developer] Hibernate > commit/rollback > > > > > > > > Juergen, > > > > The log shows that it is a MySQL database - do we know > that the table is one > > that support transactions? If not then no matter what > we or hibernate do is > > going to help. > > > > Thomas > > > > > There's a bug entry on SourceForge regarding > HibernateTransactionManager's > > > committing: > > > > > > If the flushing of changes is delayed (i.e. > HibernateTemplate is in > > > FLUSH_AUTO mode, not in FLUSH_EAGER), the Hibernate > commit call will first > > > implictly cause a flush. The problem is that that > flush might throw an > > > exception which causes Hibernate's commit > implementation to return with the > > > exception, without a commit but unfortunately also > without a rollback. > > > > > > The current implementation of > HibernateTransactionManager will not cause an > > > explicit rollback in that case, as it assumes that > the commit has failed and > > > caused an implicit rollback. It takes that assumption > from JTA: After a > > > failed commit, you don't have to invoke rollback > anymore; the failed commit > > > has already completed the transaction with a rollback. > > > > > > If I understand correctly, a JDBC driver should > behave the same: If a commit > > > has failed, rollback does not have to be invoked > anymore. Would it actually > > > hurt if one still invoked rollback? Would that get > ignored with most drivers, > > > or would it cause yet another exception, a la > "transaction is already rolled > > > back" or "no transaction anymore"? > > > > > > I intend to fix the Hibernate transaction issue like > this: First invoke flush > > > manually and treat it like data access, i.e. just > commit if it succeeded, > > > else cause an explicit rollback. Aren't the semantics > of Hibernate's commit > > > method a bit odd? Shouldn't it cause a rollback > itself if the flush failed? > > > > > > I'm not sure about JDO in that respect. It will also > flush changes at commit, > > > and there is no chance to cause an explicit flush > before. The spec and the > > > javadocs are unclear about whether a flushing failure > causes a rollback of > > > the datastore transaction, but I assume so. At least, > it seems that rollback > > > can and should not be invoked after an exception on commit. > > > > > > Has anyone practical experience with these issues? > > > > > > Juergen > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >------------------------------------------------------- > >This SF.net email is sponsored by: SF.net Giveback Program. > >SourceForge.net hosts over 70,000 Open Source Projects. > >See the people who have HELPED US provide better services: > >Click here: http://sourceforge.net/supporters.php > >_______________________________________________ > >hibernate-devel mailing list > >[EMAIL PROTECTED] > >https://lists.sourceforge.net/lists/listinfo/hibernate-devel > > > > > > > > ------------------------------------------------------- > This SF.net email is sponsored by: SF.net Giveback Program. > SourceForge.net hosts over 70,000 Open Source Projects. > See the people who have HELPED US provide better services: > Click here: http://sourceforge.net/supporters.php > _______________________________________________ > hibernate-devel mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/hibernate-devel ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. SourceForge.net hosts over 70,000 Open Source Projects. See the people who have HELPED US provide better services: Click here: http://sourceforge.net/supporters.php _______________________________________________ hibernate-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/hibernate-devel