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