It does not like the "= ?" version of "IN (?)"

SELECT method FROM methodParameters AS mp INNER JOIN types ON mp.parameter = types.id WHERE types.name = ? GROUP BY method HAVING COUNT(method) >= ?

generates the same null pointer exception

Gurvan Le Guernic wrote:
The problem is with the "IN" statement. It does not like it if there is only one possibility (i.e. "IN (?)").

SELECT method FROM methodParameters AS mp INNER JOIN types ON mp.parameter = types.id WHERE types.name IN (?, ?) GROUP BY method HAVING COUNT(method) >= ?
does not generate the exception

BUT
SELECT method FROM methodParameters AS mp INNER JOIN types ON mp.parameter = types.id WHERE types.name IN (?) GROUP BY method HAVING COUNT(method) >= ?
does generate the null pointer exception

Peter Ondruška wrote:
Would you please try if there is any difference if you remove "name IN (?)".

2009/5/25, Gurvan Le Guernic <[email protected]>:
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 <[email protected]>:

   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





Reply via email to