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

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

Hi Mike,

Thanks for submitting this code and for adding the extra check for 
uninitialized parameters. Just as a heads up, the community likes to see 
patches which reviewers can easily apply using the subversion tools. Please 
don't take this as a criticism or be put off by the process. It's really easy 
and it really helps the committers do their work. The process for generating a 
patch is described in the section titled "Contribute Code or Documentation" on 
this web page: http://db.apache.org/derby/derby_comm.html

Some responses to your comments:

>Boy, I'm a java newbie, but I was inspired to look at the code after Rick's 
>encouraging comments on the list. . It looks easy to do, but the BUILDING 
>looks......painful, judging from BUILDING.txt

Right. The Derby build is too complicated. The complexity discourages newcomers 
and the community needs to put more effort into simplifying the build. Thanks 
for sticking with it!

>Comment 1. Isn't it bad practice in general to do what Daniel says the code is 
>doing, eg rely on toString() for ANY formal meaning? I don't mean this as 
>criticism, just curious.

Yes, I think that's what the textbooks recommend. As  you dig into Derby, you 
will discover some old code that dates from the period when people were 
learning these lessons the hard way.

>Comment 2. If toString is being used anyway, why not just use toHumanString()

Sounds good to me.

Now for a little more conversation about the problem and the patch. It looks 
like you've coded Thomas' suggestion. What you've coded looks good and can be 
used by an application which does something like this:

  String queryText = ((EmbedPreparedStatement) 
preparedStatement).toHumanString();

That's well and fine for a piece of internal code. I think it's great 
incremental improvement.

A follow-on patch could be one which wires this internal api into Derby's 
public api. If you're interested, please read on...

To help developers understand what api's are stable and can't change from 
release to release, Derby collects all of its public api into the classes 
visible in the JDBC3 and JDBC4 javadoc. You can see what's in the public api by 
building the following target after building the Derby classes:

  ant publishedapi

If you want applications to be able to rely on your code, then you will want to 
add some forwarding method to the public api. I've made a suggestion about what 
this forwarding method might look like (see my May 16 comment). So far that's 
the only suggestion. You may come up with a better idea.

> 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: New Feature
>          Components: JDBC, Newcomer
>            Reporter: Rick Hillegas
>         Attachments: 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.

Reply via email to