db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dag H. Wanvik (JIRA)" <j...@apache.org>
Subject [jira] Created: (DERBY-4993) Nested connection not marked as closed after session level error
Date Mon, 31 Jan 2011 23:29:29 GMT
Nested connection not marked as closed after session level error

                 Key: DERBY-4993
                 URL: https://issues.apache.org/jira/browse/DERBY-4993
             Project: Derby
          Issue Type: Bug
          Components: JDBC
            Reporter: Dag H. Wanvik
            Priority: Minor

Inside a stored procedure, with a nested connection:

 Connection c = DriverManager.getConnection("jdbc:default:connection");

I see a session level error:

  } catch (SQLException e) {
      assertSQLState("expected CONN_INTERRUPT", "08000", e);

However, the second assert above fails. Granted, we are still executing
inside the stored routine, but the statement is now "dead"; the calling
statment will see exception 40XC0 (dead statement) and the parent
connection will then be marked as closed (as expected).

But shouldn't the nested connection also be marked closed at this time?

If I try to do something with the connection at this point, e.g. trying
to prepare a new statement I see a NPE because the lcc is already gone:

Caused by: java.lang.NullPointerException
	at org.apache.derby.impl.sql.compile.CompilerContextImpl.initRequiredPriv(CompilerContextImpl.java:717)
	at org.apache.derby.impl.sql.compile.CompilerContextImpl.<init>(CompilerContextImpl.java:702)
	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.pushCompilerContext(GenericLanguageConnectionContext.java:2355)
	at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:236)
	at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:91)
	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:1101)
	at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:610)

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


View raw message