You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ba...@apache.org on 2006/02/15 23:48:09 UTC
svn commit: r378109 - in /db/derby/code/trunk/java:
engine/org/apache/derby/impl/sql/execute/
testing/org/apache/derbyTesting/functionTests/master/
testing/org/apache/derbyTesting/functionTests/tests/lang/
Author: bandaram
Date: Wed Feb 15 14:48:08 2006
New Revision: 378109
URL: http://svn.apache.org/viewcvs?rev=378109&view=rev
Log:
DERBY-84: Address NullPointerException when creating a trigger on a table and default schema doesn't exist.
Submitted by Dyre Tjeldvoll (Dyre.Tjeldvoll@sun.com)
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java?rev=378109&r1=378108&r2=378109&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/CreateTriggerConstantAction.java Wed Feb 15 14:48:08 2006
@@ -191,6 +191,21 @@
SchemaDescriptor triggerSd = getSchemaDescriptorForCreate(dd, activation, triggerSchemaName);
+ if (spsCompSchemaId == null) {
+ SchemaDescriptor def = lcc.getDefaultSchema();
+ if (def.getUUID() == null) {
+ // Descriptor for default schema is stale,
+ // look it up in the dictionary
+ def = dd.getSchemaDescriptor(def.getDescriptorName(), tc,
+ false);
+ }
+ spsCompSchemaId = def.getUUID();
+ }
+ if (SanityManager.DEBUG) {
+ SanityManager.ASSERT(spsCompSchemaId != null,
+ "spsCompSchemaId is null");
+ }
+
String tabName;
if (triggerTable != null)
{
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out?rev=378109&r1=378108&r2=378109&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/triggerGeneral.out Wed Feb 15 14:48:08 2006
@@ -1239,4 +1239,16 @@
Running DERBY-388 Test.
DERBY-388 Test Passed.
0 rows inserted/updated/deleted
-ij>
+ij> -- Derby-85: It turns out that if a table t1 exists in a non-default schema
+-- and the default schema (e.g., "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.
+connect 'wombat;user=someuser';
+ij(CONNECTION1)> autocommit off;
+ij(CONNECTION1)> create table myschema.mytable (i int);
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> create trigger mytrigger after update on myschema.mytable for each row mode db2sql select * from sys.systables;
+0 rows inserted/updated/deleted
+ij(CONNECTION1)> rollback;
+ij(CONNECTION1)>
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql?rev=378109&r1=378108&r2=378109&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/triggerGeneral.sql Wed Feb 15 14:48:08 2006
@@ -591,3 +591,14 @@
-- Just call the procedure; it will do the rest.
call d388();
+-- Derby-85: It turns out that if a table t1 exists in a non-default schema
+-- and the default schema (e.g., "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.
+connect 'wombat;user=someuser';
+autocommit off;
+create table myschema.mytable (i int);
+create trigger mytrigger after update on myschema.mytable for each row mode db2sql select * from sys.systables;
+rollback;
+
Re: svn commit: r378109 - in /db/derby/code/trunk/java: engine/org/apache/derby/impl/sql/execute/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/tests/lang/
Posted by Andrew McIntyre <mc...@gmail.com>.
On Feb 15, 2006, at 2:48 PM, bandaram@apache.org wrote:
> DERBY-84: Address NullPointerException when creating a trigger on a
> table and default schema doesn't exist.
FYI, I fixed this to read DERBY-85.
andrew