db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From myrn...@apache.org
Subject svn commit: r1160950 - in /db/derby/code/branches/10.8: ./ java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java java/testing/org/apache/derbyTesting/functionTests/tests/lang/GeneratedColumnsTest.java
Date Wed, 24 Aug 2011 01:06:14 GMT
Author: myrnavl
Date: Wed Aug 24 01:06:13 2011
New Revision: 1160950

URL: http://svn.apache.org/viewvc?rev=1160950&view=rev
Log:
DERBY-5287; tasks for 10.8.2 release
  backporting fix for DERBY-4779 (revision 1140222) to 10.8

Modified:
    db/derby/code/branches/10.8/   (props changed)
    db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java
    db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GeneratedColumnsTest.java

Propchange: db/derby/code/branches/10.8/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 24 01:06:13 2011
@@ -1,2 +1,2 @@
 /db/derby/code/branches/10.7:1061570,1061578,1082235
-/db/derby/code/trunk:1063809,1088633,1089795,1091000,1091221,1091285,1092067,1092795,1094315,1094572,1094728,1095247,1096741,1096890,1097247,1097249,1097460,1097469,1097471,1098033,1101059,1101839,1102620,1102826,1103681,1103718,1103742,1125305,1126358,1126468,1127825,1127883,1128243,1128942,1129136,1129764,1129797,1130077,1130084,1130632,1130895,1131030,1131272,1132546,1132664,1132747,1132860,1132928,1133304,1133317,1133741,1133752,1134139,1136363,1136371,1136397,1136844,1137213,1138201,1138341,1138444,1138787,1138795,1139449,1139451,1141924,1142583,1142635,1145057,1146644,1146915,1146962,1147219,1147242,1147335,1148344,1148354,1148429,1148658,1149054,1149090,1149270,1149482,1149662,1151101,1151612,1158108,1160593
+/db/derby/code/trunk:1063809,1088633,1089795,1091000,1091221,1091285,1092067,1092795,1094315,1094572,1094728,1095247,1096741,1096890,1097247,1097249,1097460,1097469,1097471,1098033,1101059,1101839,1102620,1102826,1103681,1103718,1103742,1125305,1126358,1126468,1127825,1127883,1128243,1128942,1129136,1129764,1129797,1130077,1130084,1130632,1130895,1131030,1131272,1132546,1132664,1132747,1132860,1132928,1133304,1133317,1133741,1133752,1134139,1136363,1136371,1136397,1136844,1137213,1138201,1138341,1138444,1138787,1138795,1139449,1139451,1140222,1141924,1142583,1142635,1145057,1146644,1146915,1146962,1147219,1147242,1147335,1148344,1148354,1148429,1148658,1149054,1149090,1149270,1149482,1149662,1151101,1151612,1158108,1160593

Modified: db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java?rev=1160950&r1=1160949&r2=1160950&view=diff
==============================================================================
--- db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java
(original)
+++ db/derby/code/branches/10.8/java/engine/org/apache/derby/impl/sql/execute/DMLWriteResultSet.java
Wed Aug 24 01:06:13 2011
@@ -150,26 +150,30 @@ abstract class DMLWriteResultSet extends
 					heapIx :
 					baseRowReadMap[heapIx];
 
-                
 				DataValueDescriptor col = row.getColumn(readIx+1);
-				InputStream stream = ((StreamStorable)col).returnStream();
-				((StreamStorable)col).loadStream();
-				// DERBY-3238 
-				// fix up any duplicate streams, for instance in the case of an update with a trigger,
-				// all the columns are read as update columns even if they are not updated, so 
-				// the update column will still have a reference to the original stream.
-				// If we knew from this context that this was an update and we knew the number
-				// of columns in the base table we would be able to calculate exactly the offset to 
-				// check, but we don't have that information from this context.
-				// If DERBY-1482 is fixed, perhaps this code can be removed.
 				
-				if (stream != null)
-					for (int i = 1; i <= row.nColumns(); i++)
-					{
-						DataValueDescriptor c = row.getColumn(i);
-						if (c instanceof StreamStorable)
-							if (((StreamStorable)c).returnStream() == stream)
-								row.setColumn(i, col.cloneValue(false));
+				// Derby-4779
+				if ( col != null ) {
+					InputStream stream = ((StreamStorable)col).returnStream();
+					((StreamStorable)col).loadStream();
+
+					// DERBY-3238
+					// fix up any duplicate streams, for instance in the case of an update with a trigger,
+					// all the columns are read as update columns even if they are not updated, so 
+					// the update column will still have a reference to the original stream.
+					// If we knew from this context that this was an update and we knew the number
+					// of columns in the base table we would be able to calculate exactly the offset to

+					// check, but we don't have that information from this context.
+					// If DERBY-1482 is fixed, perhaps this code can be removed.
+
+					if (stream != null)
+						for (int i = 1; i <= row.nColumns(); i++)
+						{
+							DataValueDescriptor c = row.getColumn(i);
+							if (c instanceof StreamStorable)
+								if (((StreamStorable)c).returnStream() == stream)
+									row.setColumn(i, col.cloneValue(false));
+						}
 					}
 				}
 			}

Modified: db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GeneratedColumnsTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GeneratedColumnsTest.java?rev=1160950&r1=1160949&r2=1160950&view=diff
==============================================================================
--- db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GeneratedColumnsTest.java
(original)
+++ db/derby/code/branches/10.8/java/testing/org/apache/derbyTesting/functionTests/tests/lang/GeneratedColumnsTest.java
Wed Aug 24 01:06:13 2011
@@ -986,7 +986,7 @@ public class GeneratedColumnsTest extend
                  { "before_insert_statement_trigger: [ -1, -1, -1 ]" },
                  { "after_insert_row_trigger: [ 1, -1, null ]" },
                  { "after_insert_row_trigger: [ 2, -2, null ]" },
-                 { "after_insert_row_trigger: [ 3, -3, null ]" },                       
                                   
+                 { "after_insert_row_trigger: [ 3, -3, null ]" },
                  { "after_insert_statement_trigger: [ -1, -1, -1 ]" },
              }
              );
@@ -5472,7 +5472,69 @@ public class GeneratedColumnsTest extend
                 new String[][] { {"1","2"},{"2","4"},{"3","6"}}, false);
     }
 
+    // Derby 4779
+    public void test_derby_4779()
+        throws Exception
+    {
+    	Connection conn = getConnection();
 
+        goodStatement
+        (
+         conn,
+         "create function f_getRegion\n" +
+         "(\n" +
+         "    v int\n" +
+         ")\n" +
+         "returns int\n" +
+         "language java\n" +
+         "parameter style java\n" +
+         "deterministic\n" +
+         "no sql\n" +
+         "external name 'java.lang.Integer.signum'\n"
+        );
+
+        goodStatement
+        (
+         conn,
+         "create table t1_orders( price int, region generated always as " +
+         "( f_getRegion(price) ) )\n"
+        );
+        
+        goodStatement
+        (
+         conn,
+         "create table t1_dummy(a int)\n"
+        );
+
+        goodStatement
+        (
+         conn,
+         "create trigger t1_trig_after_insert_row_trigger_4779\n" +
+         "after insert on t1_orders\n" +
+         "referencing new as ar\n" +
+         "for each row\n" +
+         "insert into t1_dummy( a ) values ( 1 )\n"
+        );
+
+        goodStatement
+        (
+         conn, 
+         "insert into t1_orders(price) values (1), (2)"
+        );
+
+        assertResults
+        ( 
+         conn,
+         "select a from t1_dummy",
+         new String[][]
+                      {
+                          { "1" },
+                          { "1" }
+                      },
+                      false
+         
+        );
+    }
 
     ///////////////////////////////////////////////////////////////////////////////////
     //



Mime
View raw message