openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xiaoqin Feng (JIRA)" <j...@apache.org>
Subject [jira] Created: (OPENJPA-699) SQLWarnings not handled properly with WarningAction set to "handle"
Date Fri, 22 Aug 2008 17:24:44 GMT
SQLWarnings not handled properly with WarningAction set to "handle"
-------------------------------------------------------------------

                 Key: OPENJPA-699
                 URL: https://issues.apache.org/jira/browse/OPENJPA-699
             Project: OpenJPA
          Issue Type: Bug
          Components: diagnostics
    Affects Versions: 1.0.0
         Environment: Kodo 4.1.4
OpenJPA 1.0.0
MS SQL 2005
MS JDBC DRIVER VERSION  1.1 
JDK 1.5
            Reporter: Xiaoqin Feng


If set  "kodo.ConnectionFactoryProperties" "warningAction" to "throw" or "handle", when an
INSERT statement fails due 
to an attempt to insert null into a non-null column, log output is  "The statement has been

terminated".
If didn't set  "warningAction", the default value is "ignore". It logs correct SQLException
which is as follows:

Cannot 
insert the value NULL into column 'TestTimeNotNullNoDefaultUtc', table 
'STADatabase.dbo.DefaultValuesJ'; column does not allow nulls. INSERT fails. 
{prepstmnt 112461492 
... ...

In org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.LoggingPreparedStatement.executeUpdate(),
the 
code is
            public int executeUpdate(String sql) throws SQLException {
                _sql = sql;
                logSQL(this);
                long start = System.currentTimeMillis();
                try {
                    return super.executeUpdate(sql);
                } catch (SQLException se) {
                    throw wrap(se, LoggingStatement.this);
                } finally {
                    logTime(start);
                    handleSQLWarning(LoggingStatement.this);
                }
            }
In this test case, it got a SQLWarning with msg 'The statement has been 
terminated' and a SQLException which tells Column null is not allowed.
When WarningAction is set to 'throw' or 'handle' and if handle doesn't 
consume the warning but throw it, the SQLWarning is thrown from finally 
block.
The SQLWarning which it is a subclass of SQLException will be processed by 
DBdictionary.newStoreException() so we see the incorrect message.



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message