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 kr...@apache.org on 2010/04/18 14:56:59 UTC
svn commit: r935336 - in /db/derby/code/trunk/java:
engine/org/apache/derby/impl/sql/execute/
testing/org/apache/derbyTesting/functionTests/tests/jdbc4/
Author: kristwaa
Date: Sun Apr 18 12:56:58 2010
New Revision: 935336
URL: http://svn.apache.org/viewvc?rev=935336&view=rev
Log:
DERBY-3650: internal multiple references from different rows to a single BLOB/CLOB stream leads to various errors when second reference used.
Clone DVDs during joins if their value is represented as a (store) stream.
Enable tests as part of the regression suite.
Origial patch contributed by Mike Matrigali (mikem_app at sbcglobal dot net),
reworked by Kristian Waagan (Kristian dot Waagan at Sun dot com).
Patch file: derby-3650-preliminary_2_reworked-1b.diff
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/_Suite.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java?rev=935336&r1=935335&r2=935336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/MergeJoinResultSet.java Sun Apr 18 12:56:58 2010
@@ -254,15 +254,25 @@ class MergeJoinResultSet extends JoinRes
for (colInCtr = 1, colOutCtr = 1; colInCtr <= leftNumCols;
colInCtr++, colOutCtr++)
{
- mergedRow.setColumn(colOutCtr,
- leftRow.getColumn(colInCtr));
+ DataValueDescriptor src_col = leftRow.getColumn(colInCtr);
+ // Clone the value if it is represented by a stream (DERBY-3650).
+ if (src_col != null && src_col.hasStream()) {
+ src_col = src_col.cloneValue(false);
+ }
+
+ mergedRow.setColumn(colOutCtr, src_col);
}
for (colInCtr = 1; colInCtr <= rightNumCols;
colInCtr++, colOutCtr++)
{
- mergedRow.setColumn(colOutCtr,
- rightRow.getColumn(colInCtr));
+ DataValueDescriptor src_col = rightRow.getColumn(colInCtr);
+ // Clone the value if it is represented by a stream (DERBY-3650).
+ if (src_col != null && src_col.hasStream()) {
+ src_col = src_col.cloneValue(false);
+ }
+
+ mergedRow.setColumn(colOutCtr, src_col);
}
setCurrentRow(mergedRow);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java?rev=935336&r1=935335&r2=935336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopJoinResultSet.java Sun Apr 18 12:56:58 2010
@@ -179,17 +179,31 @@ class NestedLoopJoinResultSet extends Jo
for (colInCtr = 1, colOutCtr = 1; colInCtr <= leftNumCols;
colInCtr++, colOutCtr++)
- {
- mergedRow.setColumn(colOutCtr,
- leftRow.getColumn(colInCtr));
- }
+ {
+ DataValueDescriptor src_col = leftRow.getColumn(colInCtr);
+ // Clone the value if it is represented by a stream
+ // (DERBY-3650).
+ if (src_col != null && src_col.hasStream()) {
+ src_col = src_col.cloneValue(false);
+ }
+
+ mergedRow.setColumn(colOutCtr, src_col);
+ }
+
if (! notExistsRightSide)
{
for (colInCtr = 1; colInCtr <= rightNumCols;
colInCtr++, colOutCtr++)
{
- mergedRow.setColumn(colOutCtr,
- rightRow.getColumn(colInCtr));
+ DataValueDescriptor src_col =
+ rightRow.getColumn(colInCtr);
+ // Clone the value if it is represented by a stream
+ // (DERBY-3650).
+ if (src_col != null && src_col.hasStream()) {
+ src_col = src_col.cloneValue(false);
+ }
+
+ mergedRow.setColumn(colOutCtr, src_col);
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java?rev=935336&r1=935335&r2=935336&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NestedLoopLeftOuterJoinResultSet.java Sun Apr 18 12:56:58 2010
@@ -223,14 +223,24 @@ class NestedLoopLeftOuterJoinResultSet e
for (colInCtr = 1, colOutCtr = 1; colInCtr <= leftNumCols;
colInCtr++, colOutCtr++)
{
- mergedRow.setColumn(colOutCtr,
- leftRow.getColumn(colInCtr));
+ DataValueDescriptor src_col = leftRow.getColumn(colInCtr);
+ // Clone the value if it is represented by a stream (DERBY-3650).
+ if (src_col != null && src_col.hasStream()) {
+ src_col = src_col.cloneValue(false);
+ }
+
+ mergedRow.setColumn(colOutCtr, src_col);
}
for (colInCtr = 1; colInCtr <= rightNumCols;
colInCtr++, colOutCtr++)
{
- mergedRow.setColumn(colOutCtr,
- rightRow.getColumn(colInCtr));
+ DataValueDescriptor src_col = rightRow.getColumn(colInCtr);
+ // Clone the value if it is represented by a stream (DERBY-3650).
+ if (src_col != null && src_col.hasStream()) {
+ src_col = src_col.cloneValue(false);
+ }
+
+ mergedRow.setColumn(colOutCtr, src_col);
}
}
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/_Suite.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/_Suite.java?rev=935336&r1=935335&r2=935336&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/_Suite.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/_Suite.java Sun Apr 18 12:56:58 2010
@@ -73,6 +73,7 @@ public class _Suite extends BaseTestCase
suite.addTest(LobSortTest.suite());
suite.addTest (BlobSetMethodsTest.suite());
suite.addTest (JDBC4FromJDBC3DataSourceTest.suite());
+ suite.addTest(Derby3650Test.suite());
return suite;
}