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 dj...@apache.org on 2005/07/08 18:54:02 UTC

svn commit: r209842 - in /incubator/derby/code/trunk/java: engine/org/apache/derby/impl/sql/compile/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/tests/lang/

Author: djd
Date: Fri Jul  8 09:54:01 2005
New Revision: 209842

URL: http://svn.apache.org/viewcvs?rev=209842&view=rev
Log:
DERBY-331 This patch fixes a look-ahead problem in the parser: In the method DB2DefaultOption,
the look-ahead for miscBuiltins is too liberal: it mistakenly thinks it has found a
builtin in this case. I made the look-ahead more specific by adding a check against comma.

Contributed by Dag H. Wanvik <Da...@Sun.COM>

Modified:
    incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
    incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out
    incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql

Modified: incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
URL: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj?rev=209842&r1=209841&r2=209842&view=diff
==============================================================================
--- incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj (original)
+++ incubator/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj Fri Jul  8 09:54:01 2005
@@ -9657,7 +9657,12 @@
 	}
 |
 	LOOKAHEAD( {getToken(2).kind == LEFT_PAREN ||
-				getToken(4).kind == LEFT_PAREN})
+		       (getToken(4).kind == LEFT_PAREN && 
+		        getToken(2).kind != COMMA)} ) 
+		// Check against comma: see Derby-331 
+		// Before adding this, the following was erroneously
+		// flagged as invalid: 
+		//	   create table foo(.., b int default 0, unique (a))
 	value = miscBuiltins()
 	{
 		// If we have a function (as indicated by an open paren,

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out
URL: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out?rev=209842&r1=209841&r2=209842&view=diff
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out (original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/columnDefaults.out Fri Jul  8 09:54:01 2005
@@ -175,6 +175,17 @@
 C1         
 -----------
 10         
+ij> -- JIRA issue Derby-331
+create table t_331 (a int not null, b int default 0, unique (a));
+0 rows inserted/updated/deleted
+ij> insert into t_331 values (4, default);
+1 row inserted/updated/deleted
+ij> insert into t_331 values (4, default);
+ERROR 23505: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'xxxxGENERATED-IDxxxx' defined on 'T_331'.
+ij> select * from t_331;
+A          |B          
+-----------------------
+4          |0          
 ij> -- clean up
 drop function asdf;
 0 rows inserted/updated/deleted
@@ -187,5 +198,7 @@
 ij> drop table "otherschema"."y1";
 0 rows inserted/updated/deleted
 ij> drop schema "otherschema" restrict;
+0 rows inserted/updated/deleted
+ij> drop table t_331;
 0 rows inserted/updated/deleted
 ij> 

Modified: incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql
URL: http://svn.apache.org/viewcvs/incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql?rev=209842&r1=209841&r2=209842&view=diff
==============================================================================
--- incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql (original)
+++ incubator/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/columnDefaults.sql Fri Jul  8 09:54:01 2005
@@ -103,6 +103,12 @@
 insert into t7 values (default);
 select * from t7;
 
+-- JIRA issue Derby-331
+create table t_331 (a int not null, b int default 0, unique (a));
+insert into t_331 values (4, default);
+insert into t_331 values (4, default);
+select * from t_331;
+
 -- clean up
 drop function asdf;
 drop table t1;
@@ -110,3 +116,5 @@
 drop table "x1";
 drop table "otherschema"."y1";
 drop schema "otherschema" restrict;
+drop table t_331;
+