openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joe Weinstein (JIRA)" <j...@apache.org>
Subject [jira] Commented: (OPENJPA-699) SQLWarnings not handled properly with WarningAction set to "handle"
Date Mon, 25 Aug 2008 17:41:44 GMT

    [ https://issues.apache.org/jira/browse/OPENJPA-699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12625433#action_12625433
] 

Joe Weinstein commented on OPENJPA-699:
---------------------------------------

Hi. Actually sometimes the DBMS and driver implement it so the one SQLException
is fairly generic, with a lot of detail relegated to the messages in the SQLWarnings.
I have even seen SQLExceptions which state "Please see the information in the
chained SQLWarnings"!
Joe Weinstein

> 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
>         Attachments: openJPA-699.patch
>
>
> 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