db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Ondruška <peter.ondru...@gmail.com>
Subject Re: Bug in Derby 10.5.1.1 or misuse ?
Date Mon, 25 May 2009 16:26:42 GMT
Well that is because you cannot bind parameter like you do: name IN
(?). Therefore you get an exception. Try name = ? and I bet it will
work.

2009/5/25, Gurvan Le Guernic <gleguern@gmail.com>:
> If I remove the "WHERE" part, it works fine (i.e. no exception generated
> when preparing the statement).
>
> SELECT method  FROM methodParameters AS mp       INNER JOIN types ON
> mp.parameter = types.id  GROUP BY method  HAVING COUNT(method) >= ?
>
> Peter Ondruška wrote:
>> Would you please try if there is any difference if you remove "name IN
>> (?)".
>>
>> 2009/5/25, Gurvan Le Guernic <gleguern@gmail.com>:
>>
>>> The NullPointer exception is thrown by the statement:
>>> ps = dbConnection.prepareStatement(sqlStr);
>>> ,with ps a PreparedStatement ans sqlStr a string equal to
>>>
>>> SELECT method, COUNT(method) FROM methodParameters      INNER JOIN types
>>> ON parameter = id WHERE name IN (?) GROUP BY method HAVING COUNT(method)
>>>  >= ?
>>>
>>> I use similar code to prepare other statements and they work well. So I
>>> guess that if there is an error in my code, it lies in the SQL select
>>> query.
>>>
>>> Bryan Pendelton suggested filling a bug query. If I have no clue what
>>> happens this evening, I' ll do it.
>>>
>>> Peter Ondruška wrote:
>>>
>>>> Can we see how you set parameters for this prepared statement?
>>>>
>>>> 2009/5/25, Gurvan Le Guernic <gleguern@gmail.com>:
>>>>
>>>>
>>>>>    Hi,
>>>>>  I have a java.lang.NullPointerException when preparing the following
>>>>> statement:
>>>>>
>>>>> SELECT method, COUNT(method) FROM methodParameters      INNER JOIN
>>>>> types
>>>>> ON parameter = id WHERE name IN (?) GROUP BY method HAVING
>>>>> COUNT(method)
>>>>>  >= ?
>>>>>
>>>>> with the command:   dbConnection.prepareStatement(sqlStr);
>>>>>
>>>>> The tables involved are:
>>>>>     "CREATE TABLE types (" +
>>>>>     "  id INT PRIMARY KEY GENERATED ALWAYS AS IDENTITY," +
>>>>>     "  name VARCHAR(128) NOT NULL UNIQUE," +
>>>>>     "  shortName VARCHAR(64) NOT NULL" +
>>>>>     ")"
>>>>> and
>>>>>     "CREATE TABLE methodParameters (" +
>>>>>     "  method INT REFERENCES methods (id)," +
>>>>>     "  position INT," +
>>>>>     "  parameter INT REFERENCES types (id)" +
>>>>>     ")"
>>>>>
>>>>> SQL information for the exception are:
>>>>>  SQL state: XJ001
>>>>>  Error code: 0
>>>>>
>>>>> And the stack trace is:
>>>>>  Message: Exception Java : ': java.lang.NullPointerException'.
>>>>> java.sql.SQLException: Exception Java : ':
>>>>> java.lang.NullPointerException'.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.Util.javaException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(Unknown
>>>>> Source)
>>>>>         at org.thinkcollabs.jmbrowser.db.DAO.initSelect(DAO.java:370)
>>>>>         at
>>>>> org.thinkcollabs.jmbrowser.db.DB_Derby$MethodDataLoader.run(DB_Derby.java:254)
>>>>> Caused by: java.sql.SQLException: Exception Java : ':
>>>>> java.lang.NullPointerException'.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>>>>> Source)
>>>>>         ... 16 more
>>>>> Caused by: java.lang.NullPointerException
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.ColumnReference.remapColumnReferencesToExpressions(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.AggregateNode.getNewExpressionResultColumn(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.GroupByNode.addAggregateColumns(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.GroupByNode.addNewColumnsForAggregation(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.GroupByNode.addAggregates(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.sql.compile.GroupByNode.init(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.sql.compile.NodeFactory.getNode(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.SelectNode.genProjectRestrict(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.SelectNode.modifyAccessPaths(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.DMLStatementNode.optimizeStatement(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.compile.CursorNode.optimizeStatement(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown
>>>>> Source)
>>>>>         ... 9 more
>>>>>
>>>>> I can't see what I am doing wrong, but I am not an SQL expert. So, I
am
>>>>> doing something wrong or is there a problem with Derby 10.5.1.1?
>>>>>
>>>>>    Thank you,
>>>>>    Gurvan
>>>>>
>>>>>
>>>>>
>>>
>
>

Mime
View raw message