[ 
https://issues.apache.org/jira/browse/DERBY-6445?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17849373#comment-17849373
 ] 

Philippe Marschall commented on DERBY-6445:
-------------------------------------------

About the diagnostic logging, it is not clear to me how this could best be 
implemented. To give you an example:

{{org.apache.derby.client.am.ClientResultSet#getObject(String, Class<T>)}} logs 
method entry, but does not log method exit. It ends up calling 
{{org.apache.derby.client.am.ClientResultSet#getObject(int, Class<T>)}} which 
also logs method entry and not log method exit as well. This can end up calling 
an existing method like 
{{org.apache.derby.client.am.ClientResultSet#getDate(int, Calendar)}} which 
logs method entry and method exit or a new method like 
{{org.apache.derby.impl.jdbc.EmbedResultSet#getLocalDate(int)}} which, as you 
pointed out correctly, does not do any diagnostic logging. My reasoning here is 
this is a {{private}} utility method that can only be called indirectly while 
{{#getDate}} is a {{public}} API method that can be called directly by client 
code. Diagnostic logging currently only seems be done for {{public}} methods 
and very few {{protected}} methods these being four {{finalize}} methods and 
two methods on {{BasicClientDataSource}}. The situation is similar for 
{{org.apache.derby.client.am.ClientPreparedStatement}} and {{#setObject}}.

I see several options and would welcome your guidance:
- I could add diagnostic logging directly to the new {{private}} methods, they 
would become the first {{private}} methods to have diagnostic logging.
- Inline the new {{private}} methods into {{ClientResultSet}}. Not ideal.
- I could extend the diagnostic logging of {{#getObject}} to also log method 
exit. That would still result in different diagnostic logs depending on whether 
{{#getObject}} is called with {{java.sql.Date}} ({{#getObject}} and 
{{#getDate}} are logged) or with {{java.time.LocalTime}} (only {{#getObject}} 
is logged). To avoid this they would have to be split into a {{public}} method 
which performs diagnostic logging and a {{private}} one which contains the rest 
of the implementation. {{#getObject}} would call the latter to avoid logging 
twice.


> JDBC 4.2: Add support for new date and time classes
> ---------------------------------------------------
>
>                 Key: DERBY-6445
>                 URL: https://issues.apache.org/jira/browse/DERBY-6445
>             Project: Derby
>          Issue Type: Improvement
>          Components: JDBC
>    Affects Versions: 10.10.1.1
>            Reporter: Knut Anders Hatlen
>            Priority: Major
>         Attachments: DERBY-6445.patch, Derby-6445.html, Derby-6445.html, 
> derby-6445-01-aa-DERBY-6445.patchPlusJavadocCleanup.diff
>
>
> JDBC 4.2 added type mappings for new date and time classes found in Java 8. 
> Derby should support these new mappings.
> This would at least affect Derby's implementation of the various getObject(), 
> setObject() and setNull() methods in ResultSet, PreparedStatement and 
> CallableStatement.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to