Details
Description
I've encountered troubles logging StackTrace/MDC entries with die DBAppender on our plattform! We are using Oracle 9.2.0.6.0 on a Solaris Box with Oracle JDBC Driver 10.2.0.3!
I've debugged the processing of LogMessages into DBAppenderBase.append()!
There I found a call "con.prepareStatement(getInsertSQL())" which is followed by a call "subAppend(...)"
As far as I understand Oracle Drivers return generatedKeys only, if you use the right prepareStatement() methods, which is in my understanding the following:
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
throws SQLException
@see http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Connection.html#prepareStatement(java.lang.String,%20int)
which is available since JDK 1.4
I've debugged the processing of LogMessages into DBAppenderBase.append()!
There I found a call "con.prepareStatement(getInsertSQL())" which is followed by a call "subAppend(...)"
As far as I understand Oracle Drivers return generatedKeys only, if you use the right prepareStatement() methods, which is in my understanding the following:
PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)
throws SQLException
@see http://java.sun.com/j2se/1.5.0/docs/api/java/sql/Connection.html#prepareStatement(java.lang.String,%20int)
which is available since JDK 1.4
I've checked your problem, I guess that we could change the call to the prepareStatement() method. But before we change it, We have to test it against other databases.
Dev notes:
The test case of DBAppender uses HSQLDB. That database's driver does not support the call to prepareStatement(String sqlQuery, int getGeneratedKeys)[1].
It looks like MySQL supports that call.
[1]http://hsqldb.org/doc/src/org/hsqldb/jdbc/jdbcConnection.html#prepareStatement(java.lang.String,%20int)