db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta A. Satoor (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-3046) setObj(int,Object,int) causes NPE if no parameter markers are present; should generate SQLException as for setObject(int,Object)
Date Fri, 26 Oct 2007 05:22:50 GMT

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

Mamta A. Satoor commented on DERBY-3046:
----------------------------------------

Committed the changes into trunk using revision 588527. The commit comments were as follows
DERBY-3046
This commit will ensure that setObject returns the same exception in both Network Server and
Embedded WHEN the 
PreparedStatement has no parameters associated with it at all. Without the changes that are
going in this commit,
following sql will return different exceptions in Embedded and Network Server (this test case
is copied from 
derbynet.PrepareStatementTest). 

ps = prepareStatement("insert into WISH_LIST(WISH_ITEM) values ('bb')"); 
ps.setObject(1,"cc",java.sql.Types.VARCHAR); 

ps.setObject in Embedded will throw SQL State 07009 whereas in Network Server, it will throw
SQL State XCL13. 
As part of this commit, in the example case above, we will always throw SQL State 07009 in
both Embedded and 
Network Server. 

> setObj(int,Object,int) causes NPE if no parameter markers are present; should generate
SQLException as for setObject(int,Object)
> --------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-3046
>                 URL: https://issues.apache.org/jira/browse/DERBY-3046
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC, Network Client
>    Affects Versions: 10.3.1.4
>            Reporter: Sebb
>            Assignee: Mamta A. Satoor
>            Priority: Minor
>             Fix For: 10.3.1.5, 10.4.0.0
>
>
> Change WwdClientExample so that there are no parameters, e.g.
> psInsert = conn.prepareStatement("insert into WISH_LIST(WISH_ITEM) values ('?')");
> Now change 
>    psInsert.setString(1,answer);
> to
>   psInsert.setObject(1,answer);
> and the error is OK:
> SQLState:   XCL14
> Severity: 20000
> Message:  The column position '1' is out of range.  The number of columns for this ResultSet
is '0'.
> java.sql.SQLException: The column position '1' is out of range.  The number of columns
for this ResultSet is '0'.
> [...]
> However, using:
> psInsert.setObject(1,answer,java.sql.Types.VARCHAR);
> causes an NPE:
> java.lang.NullPointerException
>         at org.apache.derby.client.am.PreparedStatement.checkForValidParameterIndex(Unknown
Source)
>         at org.apache.derby.client.am.PreparedStatement.setObjectX(Unknown Source)
>         at org.apache.derby.client.am.PreparedStatement.setObject(Unknown Source)
>         at WwdClientExample.main(WwdClientExample.java:93)
> Surely it should behave the same as the previous method call - i.e. return an SQLException?

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