How did you get derbyall to pass with all the failures we are having right now? Did you run on Windows?

Thanks,

David

Rick Hillegas (JIRA) wrote:
[ http://issues.apache.org/jira/browse/DERBY-85?page=comments#action_12356444 ]
Rick Hillegas commented on DERBY-85:
------------------------------------

Derbyall passed. When a new patch is submitted including a regression test, 
I'll just run the appropriate suite.


NPE when creating a trigger on a table and default schema doesn't exist.
------------------------------------------------------------------------

        Key: DERBY-85
        URL: http://issues.apache.org/jira/browse/DERBY-85
    Project: Derby
       Type: Bug
 Components: SQL
   Versions: 10.0.2.0
   Reporter: A B
   Assignee: Dyre Tjeldvoll
Attachments: derby-85-notabs.diff, derby-85.diff, derby-85.stat, 
derbyall_report.txt

BACKGROUND:
When connecting to a Derby db with a user id and password, the default schema 
is USER.  For example, if I connect with:
ij> connect 'jdbc:derby:myDB;user=someUser;password=somePwd';
then the default schema is "SOMEUSER".
PROBLEM:
It turns out that if a table t1 exists in a non-default schema and the default schema (in 
this case, "SOMEUSER") doesn't exist yet (because no objects have been created 
in that schema), then attempts to create a trigger on t1 using its qualified name will 
lead to a null pointer exception in the Derby engine.
REPRO:
In ij:
-- Create database with default schema "SOMEUSER".
ij> connect 'jdbc:derby:myDB;create=true;user=someUser;password=somePwd';
-- Create table t1 in a non-default schema; in this case, call it "ITKO".
ij> create table itko.t1 (i int);
0 rows inserted/updated/deleted
-- Now schema ITKO exists, and T1 exists in schema ITKO, but default schema 
SOMEUSER does NOT exist, because we haven't created any objects in that schema 
yet.
-- So now we try to create a trigger in the ITKO (i.e. the non-default) 
schema...
ij> create trigger trig1 after update on itko.t1 for each row mode db2sql 
select * from sys.systables;
ERROR XJ001: Java exception: ': java.lang.NullPointerException'.
A look at the derby.log file shows the stack trace given below.  In a word, it looks like 
the "compilation schema" field of SYS.SYSTRIGGERS isn't getting set, and so it 
ends up being null.  That causes the NPE in subsequent processing...
java.lang.NullPointerException
        at 
org.apache.derby.impl.sql.catalog.SYSSTATEMENTSRowFactory.makeSYSSTATEMENTSrow(SYSSTATEMENTSRowFactory.java:200)
        at 
org.apache.derby.impl.sql.catalog.DataDictionaryImpl.addSPSDescriptor(DataDictionaryImpl.java:2890)
        at 
org.apache.derby.impl.sql.execute.CreateTriggerConstantAction.createSPS(CreateTriggerConstantAction.java:354)
        at 
org.apache.derby.impl.sql.execute.CreateTriggerConstantAction.executeConstantAction(CreateTriggerConstantAction.java:258)
        at 
org.apache.derby.impl.sql.execute.MiscResultSet.open(MiscResultSet.java:56)
        at 
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:366)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1100)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:509)
        at 
org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:467)
        at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:299)
        at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:433)
        at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:310)
        at org.apache.derby.impl.tools.ij.Main.go(Main.java:210)
        at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:176)
        at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:56)
        at org.apache.derby.tools.ij.main(ij.java:60)


begin:vcard
fn:David W Van Couvering
n:Van Couvering;David W
org:Sun Microsystems, Inc.;Database Technology Group
email;internet:[EMAIL PROTECTED]
title:Senior Staff Software Engineer
tel;work:510-550-6819
tel;cell:510-684-7281
x-mozilla-html:TRUE
version:2.1
end:vcard

Reply via email to