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 ka...@apache.org on 2006/03/24 08:48:29 UTC
svn commit: r388440 -
/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/
Author: kahatlen
Date: Thu Mar 23 23:48:28 2006
New Revision: 388440
URL: http://svn.apache.org/viewcvs?rev=388440&view=rev
Log:
DERBY-1112: TemporaryRowHolderResultSet is breaking the contract of
getActivation
The patch modifies the constructors of TemporaryRowHolderImpl so that
they take an Activation instead of a TransactionController. The
transaction controller can still be obtained from the Activation
object. TemporaryRowHolderResultSet now implements getActivation() by
returning the activation of the TemporaryRowHolderImpl that created
it. TemporaryRowHolderImpl and TemporaryRowHolderResultSet are made
package protected.
Modified:
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteVTIResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/IndexChanger.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertVTIResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowTriggerExecutor.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderImpl.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java
db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateVTIResultSet.java
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteResultSet.java Thu Mar 23 23:48:28 2006
@@ -318,7 +318,7 @@
rlColumnNumber = noTriggersOrFks ? 1: numberOfBaseColumns;
if(cascadeDelete)
{
- rowHolder = new TemporaryRowHolderImpl(tc, properties,
+ rowHolder = new TemporaryRowHolderImpl(activation, properties,
(resultDescription != null) ?
resultDescription.truncateColumns(rlColumnNumber) :
null, false);
@@ -327,7 +327,7 @@
}else
{
- rowHolder = new TemporaryRowHolderImpl(tc, properties,
+ rowHolder = new TemporaryRowHolderImpl(activation, properties,
(resultDescription != null) ?
resultDescription.truncateColumns(rlColumnNumber) :
null);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteVTIResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteVTIResultSet.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteVTIResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/DeleteVTIResultSet.java Thu Mar 23 23:48:28 2006
@@ -100,7 +100,9 @@
{
activation.clearIndexScanInfo();
if( null == rowHolder)
- rowHolder = new TemporaryRowHolderImpl( tc, new Properties(), (ResultDescription) null);
+ rowHolder =
+ new TemporaryRowHolderImpl(activation, new Properties(),
+ (ResultDescription) null);
}
try
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/IndexChanger.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/IndexChanger.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/IndexChanger.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/IndexChanger.java Thu Mar 23 23:48:28 2006
@@ -430,7 +430,8 @@
** row holder (the description is needed when the row
** holder is going to be handed to users for triggers).
*/
- rowHolder = new TemporaryRowHolderImpl(tc, properties, (ResultDescription)null);
+ rowHolder = new TemporaryRowHolderImpl(activation, properties,
+ (ResultDescription) null);
}
/*
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertResultSet.java Thu Mar 23 23:48:28 2006
@@ -924,7 +924,8 @@
/*
** If deferred we save a copy of the entire row.
*/
- rowHolder = new TemporaryRowHolderImpl(tc, properties, resultDescription);
+ rowHolder = new TemporaryRowHolderImpl(activation, properties,
+ resultDescription);
rowChanger.setRowHolder(rowHolder);
}
@@ -945,7 +946,8 @@
}
rd = lcc.getLanguageFactory().getResultDescription(resultDescription,columnIndexes);
- autoGeneratedKeysRowsHolder = new TemporaryRowHolderImpl(tc, properties, rd);
+ autoGeneratedKeysRowsHolder =
+ new TemporaryRowHolderImpl(activation, properties, rd);
}
@@ -1231,7 +1233,9 @@
*/
if (hasBeforeRowTrigger && rowHolder != null)
{
- rowHolder = new TemporaryRowHolderImpl(tc, properties, resultDescription);
+ rowHolder =
+ new TemporaryRowHolderImpl(activation, properties,
+ resultDescription);
}
// Add any new properties or change the values of any existing properties
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertVTIResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertVTIResultSet.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertVTIResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/InsertVTIResultSet.java Thu Mar 23 23:48:28 2006
@@ -134,7 +134,9 @@
/*
** If deferred we save a copy of the entire row.
*/
- rowHolder = new TemporaryRowHolderImpl(tc, properties, resultDescription);
+ rowHolder =
+ new TemporaryRowHolderImpl(activation, properties,
+ resultDescription);
}
while ( row != null )
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowTriggerExecutor.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowTriggerExecutor.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowTriggerExecutor.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowTriggerExecutor.java Thu Mar 23 23:48:28 2006
@@ -90,11 +90,13 @@
tec.setBeforeResultSet(brs == null ?
null :
- TemporaryRowHolderResultSet.getNewRSOnCurrentRow(activation.getTransactionController(), brs));
+ TemporaryRowHolderResultSet.
+ getNewRSOnCurrentRow(activation, brs));
tec.setAfterResultSet(ars == null ?
null :
- TemporaryRowHolderResultSet.getNewRSOnCurrentRow(activation.getTransactionController(), ars));
+ TemporaryRowHolderResultSet.
+ getNewRSOnCurrentRow(activation, ars));
/*
This is the key to handling autoincrement values that might
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderImpl.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderImpl.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderImpl.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderImpl.java Thu Mar 23 23:48:28 2006
@@ -26,6 +26,7 @@
import org.apache.derby.iapi.sql.execute.ExecRow;
import org.apache.derby.iapi.sql.execute.ExecutionFactory;
import org.apache.derby.iapi.sql.execute.TemporaryRowHolder;
+import org.apache.derby.iapi.sql.Activation;
import org.apache.derby.iapi.sql.ResultDescription;
import org.apache.derby.iapi.store.access.ConglomerateController;
import org.apache.derby.iapi.store.access.ScanController;
@@ -52,7 +53,7 @@
*
* @author jamie
*/
-public class TemporaryRowHolderImpl implements TemporaryRowHolder
+class TemporaryRowHolderImpl implements TemporaryRowHolder
{
public static final int DEFAULT_OVERFLOWTHRESHOLD = 5;
@@ -71,8 +72,9 @@
private ConglomerateController cc;
private Properties properties;
private ScanController scan;
- private TransactionController tc;
private ResultDescription resultDescription;
+ /** Activation object with local state information. */
+ Activation activation;
private boolean isUniqueStream;
@@ -98,7 +100,7 @@
* Uses the default overflow to
* a conglomerate threshold (5).
*
- * @param tc the xact controller
+ * @param activation the activation
* @param properties the properties of the original table. Used
* to help the store use optimal page size, etc.
* @param resultDescription the result description. Relevant for the getResultDescription
@@ -106,19 +108,20 @@
*/
public TemporaryRowHolderImpl
(
- TransactionController tc,
+ Activation activation,
Properties properties,
ResultDescription resultDescription
)
{
- this(tc, properties, resultDescription, DEFAULT_OVERFLOWTHRESHOLD, false, false);
+ this(activation, properties, resultDescription,
+ DEFAULT_OVERFLOWTHRESHOLD, false, false);
}
/**
* Uses the default overflow to
* a conglomerate threshold (5).
*
- * @param tc the xact controller
+ * @param activation the activation
* @param properties the properties of the original table. Used
* to help the store use optimal page size, etc.
* @param resultDescription the result description. Relevant for the getResultDescription
@@ -127,20 +130,21 @@
*/
public TemporaryRowHolderImpl
(
- TransactionController tc,
+ Activation activation,
Properties properties,
ResultDescription resultDescription,
boolean isUniqueStream
)
{
- this(tc, properties, resultDescription, 1, isUniqueStream, false);
+ this(activation, properties, resultDescription, 1, isUniqueStream,
+ false);
}
/**
* Create a temporary row holder with the defined overflow to conglom
*
- * @param tc the xact controller
+ * @param activation the activation
* @param properties the properties of the original table. Used
* to help the store use optimal page size, etc.
* @param resultDescription the result description. Relevant for the getResultDescription
@@ -151,7 +155,7 @@
*/
public TemporaryRowHolderImpl
(
- TransactionController tc,
+ Activation activation,
Properties properties,
ResultDescription resultDescription,
int overflowToConglomThreshold,
@@ -170,7 +174,7 @@
}
}
- this.tc = tc;
+ this.activation = activation;
this.properties = properties;
this.resultDescription = resultDescription;
this.isUniqueStream = isUniqueStream;
@@ -250,6 +254,8 @@
if (!conglomCreated)
{
+ TransactionController tc = activation.getTransactionController();
+
/*
** Create the conglomerate with the template row.
*/
@@ -320,6 +326,8 @@
if(!uniqueIndexCreated)
{
+ TransactionController tc =
+ activation.getTransactionController();
int numKeys = 2;
uniqueIndexRow = new DataValueDescriptor[numKeys];
uniqueIndexRow[0] = baseRowLocation;
@@ -378,6 +386,7 @@
{
if(!positionIndexCreated)
{
+ TransactionController tc = activation.getTransactionController();
int numKeys = 2;
position_sqllong = new SQLLongint();
positionIndexRow = new DataValueDescriptor[numKeys];
@@ -413,6 +422,7 @@
public CursorResultSet getResultSet()
{
state = STATE_DRAIN;
+ TransactionController tc = activation.getTransactionController();
if(isUniqueStream)
{
return new TemporaryRowHolderResultSet(tc, rowArray,
@@ -455,6 +465,7 @@
*/
if (conglomCreated)
{
+ TransactionController tc = activation.getTransactionController();
tc.dropConglomerate(CID);
conglomCreated = false;
}
@@ -520,6 +531,8 @@
positionIndex_cc.close();
positionIndex_cc = null;
}
+
+ TransactionController tc = activation.getTransactionController();
if (uniqueIndexCreated)
{
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderResultSet.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderResultSet.java Thu Mar 23 23:48:28 2006
@@ -57,7 +57,7 @@
*
* @author jamie
*/
-public class TemporaryRowHolderResultSet implements CursorResultSet, NoPutResultSet, Cloneable
+class TemporaryRowHolderResultSet implements CursorResultSet, NoPutResultSet, Cloneable
{
private ExecRow[] rowArray;
private int numRowsOut;
@@ -181,7 +181,7 @@
* Whip up a new Temp ResultSet that has a single
* row, the current row of this result set.
*
- * @param tc the xact controller
+ * @param activation the activation
* @param rs the result set
*
* @return a single row result set
@@ -190,11 +190,13 @@
*/
public static TemporaryRowHolderResultSet getNewRSOnCurrentRow
(
- TransactionController tc,
+ Activation activation,
CursorResultSet rs
) throws StandardException
{
- TemporaryRowHolderImpl singleRow = new TemporaryRowHolderImpl(tc, null, rs.getResultDescription());
+ TemporaryRowHolderImpl singleRow =
+ new TemporaryRowHolderImpl(activation, null,
+ rs.getResultDescription());
singleRow.insert(rs.getCurrentRow());
return (TemporaryRowHolderResultSet) singleRow.getResultSet();
}
@@ -1130,9 +1132,12 @@
return null;
}
- public Activation getActivation() {
- if (SanityManager.DEBUG)
- SanityManager.THROWASSERT("getActivation() called for " + getClass());
- return null;
+ /**
+ * Return the <code>Activation</code> for this result set.
+ *
+ * @return activation
+ */
+ public final Activation getActivation() {
+ return holder.activation;
}
}
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java Thu Mar 23 23:48:28 2006
@@ -400,9 +400,13 @@
// Get the properties on the heap
rowChanger.getHeapConglomerateController().getInternalTablePropertySet(properties);
if(beforeUpdateCopyRequired){
- deletedRowHolder = new TemporaryRowHolderImpl(tc, properties, triggerResultDescription);
+ deletedRowHolder =
+ new TemporaryRowHolderImpl(activation, properties,
+ triggerResultDescription);
}
- insertedRowHolder = new TemporaryRowHolderImpl(tc, properties, triggerResultDescription);
+ insertedRowHolder =
+ new TemporaryRowHolderImpl(activation, properties,
+ triggerResultDescription);
rowChanger.setRowHolder(insertedRowHolder);
}
@@ -748,7 +752,7 @@
// in-memory heap grows), hopefully we never spill temp table to disk.
tableScan.futureForUpdateRows = new TemporaryRowHolderImpl
- (tc, null, null, 100, false, true);
+ (activation, null, null, 100, false, true);
}
rlRow.setColumn(1, rowLoc);
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateVTIResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateVTIResultSet.java?rev=388440&r1=388439&r2=388440&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateVTIResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateVTIResultSet.java Thu Mar 23 23:48:28 2006
@@ -96,7 +96,9 @@
/*
** If deferred we save a copy of the entire row.
*/
- rowHolder = new TemporaryRowHolderImpl(tc, properties, resultDescription);
+ rowHolder =
+ new TemporaryRowHolderImpl(activation, properties,
+ resultDescription);
}
try