db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3676) Make the toString() method of Derby PreparedStatements print out SQL text with ? parameters replaced by the values that have been set so far
Date Wed, 02 Sep 2009 13:52:32 GMT

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

Rick Hillegas commented on DERBY-3676:
--------------------------------------

Hi Mark,

Thanks for looking at this issue and posting a patch. I think that your code will work in
most cases. However, it will do the wrong thing if there is an embedded ? in a literal inside
the SQL text or inside a delimited identifier. For instance, it will produce odd output for
the following queries:

  select * from T where a like 'Am I blue?%' and b = ?

  select "foo?" from T where b = ?

My gut feeling is that these edge cases are important enough that we should handle them. I
think that the problems are handled by Thomas' approach, which Mike coded in his ick.txt patch:
just append a bracketed parameter list at the end of the sql text.

The public API issue will need to be addressed too. We don't want to put EmbedPreparedStatement
in the public API. Maybe we could add a new interface to the public API: org.apache.derby.jdbc.DerbyPreparedStatement.
Then, regardless of whether you are working with an embedded or network connection, the following
code would work:

  String sqlText = ((DerbyPreparedStatement) ps).toHumanReadableString();

> Make the toString() method of Derby PreparedStatements print out SQL text with ? parameters
replaced by the values that have been set so far
> --------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3676
>                 URL: https://issues.apache.org/jira/browse/DERBY-3676
>             Project: Derby
>          Issue Type: Improvement
>          Components: JDBC
>            Reporter: Rick Hillegas
>         Attachments: humanstringprepared.txt, ick.txt, ick.txt
>
>
> This topic came up in the following email thread on the user list: http://www.nabble.com/PreparedStatement.toString%28%29---nice-formatting-td17250811.html#a17250811
Here's what the thread requests: 
> "In mysql, a toString() on a PreparedStatement will do this, eg "select x
> from foo where x.a = ?" will become "select x from foo where x.a = 1" with
> the appropriate setValue() call."
> At first blush, this seems like it might be a simple project for a newcomer.

-- 
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