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 2005/10/28 14:52:21 UTC
svn commit: r329187 [9/66] - in /db/derby/code/trunk: ./
frameworks/NetworkServer/ frameworks/NetworkServer/bin/
frameworks/embedded/bin/ java/build/ java/build/org/apache/derbyBuild/
java/build/org/apache/derbyBuild/eclipse/ java/build/org/apache/derb...
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SetOpResultSet.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SetOpResultSet.java?rev=329187&r1=329186&r2=329187&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SetOpResultSet.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SetOpResultSet.java Fri Oct 28 04:51:50 2005
@@ -1,287 +1,287 @@
-/*
-
- Derby - Class org.apache.derby.impl.sql.execute.SetOpResultSet
-
- Copyright 2004 The Apache Software Foundation or its licensors, as applicable.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- */
-
-package org.apache.derby.impl.sql.execute;
-
-import org.apache.derby.iapi.error.StandardException;
-
-import org.apache.derby.iapi.services.loader.GeneratedMethod;
-import org.apache.derby.iapi.services.sanity.SanityManager;
-
-import org.apache.derby.iapi.sql.Activation;
-import org.apache.derby.iapi.sql.ResultDescription;
-
-import org.apache.derby.iapi.sql.execute.CursorResultSet;
-import org.apache.derby.iapi.sql.execute.ExecPreparedStatement;
-import org.apache.derby.iapi.sql.execute.ExecRow;
-import org.apache.derby.iapi.sql.execute.NoPutResultSet;
-
-import org.apache.derby.iapi.types.DataValueDescriptor;
-import org.apache.derby.iapi.types.Orderable;
-import org.apache.derby.iapi.types.RowLocation;
-
-import org.apache.derby.impl.sql.compile.IntersectOrExceptNode;
-
-/**
- * Takes the result set produced by an ordered UNION ALL of two tagged result sets and produces
- * the INTERSECT or EXCEPT of the two input result sets. This also projects out the tag, the last column
- * of the input rows.
- */
-public class SetOpResultSet extends NoPutResultSetImpl
- implements CursorResultSet
-{
- private final NoPutResultSet leftSource;
- private final NoPutResultSet rightSource;
- private final GeneratedMethod closeCleanup;
- private final Activation activation;
- private final int opType;
- private final boolean all;
- private final int resultSetNumber;
- private DataValueDescriptor[] prevCols; /* Used to remove duplicates in the EXCEPT DISTINCT case.
- * It is equal to the previously output columns.
- */
- private int rightDuplicateCount; // Number of duplicates of the current row from the right input
- private ExecRow leftInputRow;
- private ExecRow rightInputRow;
-
- private final int[] intermediateOrderByColumns;
- private final int[] intermediateOrderByDirection;
-
- SetOpResultSet( NoPutResultSet leftSource,
- NoPutResultSet rightSource,
- Activation activation,
- int resultSetNumber,
- long optimizerEstimatedRowCount,
- double optimizerEstimatedCost,
- int opType,
- boolean all,
- GeneratedMethod closeCleanup,
- int intermediateOrderByColumnsSavedObject,
- int intermediateOrderByDirectionSavedObject)
- {
- super(activation, resultSetNumber,
- optimizerEstimatedRowCount, optimizerEstimatedCost);
- this.leftSource = leftSource;
- this.rightSource = rightSource;
- this.activation = activation;
- this.resultSetNumber = resultSetNumber;
- this.opType = opType;
- this.all = all;
- this.closeCleanup = closeCleanup;
- ExecPreparedStatement eps = activation.getPreparedStatement();
- intermediateOrderByColumns = (int[]) eps.getSavedObject(intermediateOrderByColumnsSavedObject);
- intermediateOrderByDirection = (int[]) eps.getSavedObject(intermediateOrderByDirectionSavedObject);
- constructorTime += getElapsedMillis(beginTime);
- }
-
- /**
- * open the first source.
- * @exception StandardException thrown on failure
- */
- public void openCore() throws StandardException
- {
- beginTime = getCurrentTimeMillis();
- if (SanityManager.DEBUG)
- SanityManager.ASSERT( ! isOpen, "SetOpProjectRestrictResultSet already open");
-
- isOpen = true;
- leftSource.openCore();
- rightSource.openCore();
- rightInputRow = rightSource.getNextRowCore();
- numOpens++;
-
- openTime += getElapsedMillis(beginTime);
- } // end of openCore
-
- /**
- * @return the next row of the intersect or except, null if there is none
- * @exception StandardException thrown on failure
- */
- public ExecRow getNextRowCore() throws StandardException
- {
- beginTime = getCurrentTimeMillis();
- if ( isOpen )
- {
- while( (leftInputRow = leftSource.getNextRowCore()) != null)
- {
- DataValueDescriptor[] leftColumns = leftInputRow.getRowArray();
- if( !all)
- {
- if( isDuplicate( leftColumns))
- continue; // Get the next left row
- prevCols = leftInputRow.getRowArrayClone();
- }
- int compare = 0;
- // Advance the right until there are no more right rows or leftRow <= rightRow
- while( rightInputRow != null && (compare = compare( leftColumns, rightInputRow.getRowArray())) > 0)
- rightInputRow = rightSource.getNextRowCore();
-
- if( rightInputRow == null || compare < 0)
- {
- // The left row is not in the right source.
- if( opType == IntersectOrExceptNode.EXCEPT_OP)
- // Output this row
- break;
- }
- else
- {
- // The left and right rows are the same
- if( SanityManager.DEBUG)
- SanityManager.ASSERT( rightInputRow != null && compare == 0,
- "Insert/Except execution has gotten confused.");
- if( all)
- // Just advance the right input by one row.
- rightInputRow = rightSource.getNextRowCore();
- // If !all then we will skip past duplicates on the left at the top of this loop,
- // which will then force us to skip past any right duplicates.
- if( opType == IntersectOrExceptNode.INTERSECT_OP)
- break; // output this row
-
- // opType == IntersectOrExceptNode.EXCEPT_OP
- // This row should not be ouput
- }
- }
- }
- currentRow = leftInputRow;
- setCurrentRow( currentRow);
- nextTime += getElapsedMillis(beginTime);
- return currentRow;
- } // end of getNextRowCore
-
- private void advanceRightPastDuplicates( DataValueDescriptor[] leftColumns)
- throws StandardException
- {
- while((rightInputRow = rightSource.getNextRowCore()) != null
- && compare( leftColumns, rightInputRow.getRowArray()) == 0)
- ;
- } // end of advanceRightPastDuplicates
-
- private int compare( DataValueDescriptor[] leftCols, DataValueDescriptor[] rightCols)
- throws StandardException
- {
- for( int i = 0; i < intermediateOrderByColumns.length; i++)
- {
- int colIdx = intermediateOrderByColumns[i];
- if( leftCols[colIdx].compare( Orderable.ORDER_OP_LESSTHAN,
- rightCols[colIdx],
- true, // nulls sort high
- false))
- return -1 * intermediateOrderByDirection[i];
- if( ! leftCols[colIdx].compare( Orderable.ORDER_OP_EQUALS,
- rightCols[colIdx],
- true, // nulls sort high
- false))
- return intermediateOrderByDirection[i];
- }
- return 0;
- } // end of compare
-
- private boolean isDuplicate( DataValueDescriptor[] curColumns)
- throws StandardException
- {
- if( prevCols == null)
- return false;
- /* Note that intermediateOrderByColumns.length can be less than prevCols.length if we know that a
- * subset of the columns is a unique key. In that case we only need to look at the unique key.
- */
- for( int i = 0; i < intermediateOrderByColumns.length; i++)
- {
- int colIdx = intermediateOrderByColumns[i];
- if( ! curColumns[colIdx].compare( Orderable.ORDER_OP_EQUALS, prevCols[colIdx], true, false))
- return false;
- }
- return true;
- }
-
- public ExecRow getCurrentRow()
- {
- return currentRow;
- }
-
- /**
- * If the result set has been opened,
- * close the currently open source.
- *
- * @exception StandardException thrown on error
- */
- public void close() throws StandardException
- {
- beginTime = getCurrentTimeMillis();
- if ( isOpen )
- {
- if (closeCleanup != null)
- closeCleanup.invoke(activation); // let activation tidy up
- clearCurrentRow();
- currentRow = null;
- prevCols = null;
- leftSource.close();
- rightSource.close();
- super.close();
- }
- else
- if (SanityManager.DEBUG)
- SanityManager.DEBUG("CloseRepeatInfo","Close of UnionResultSet repeated");
-
- closeTime += getElapsedMillis(beginTime);
- } // end of close
-
- public void finish() throws StandardException
- {
- leftSource.finish();
- rightSource.finish();
- finishAndRTS();
- }
-
- /**
- * Return the total amount of time spent in this ResultSet
- *
- * @param type CURRENT_RESULTSET_ONLY - time spent only in this ResultSet
- * ENTIRE_RESULTSET_TREE - time spent in this ResultSet and below.
- *
- * @return long The total amount of time spent (in milliseconds).
- */
- public long getTimeSpent(int type)
- {
- long totTime = constructorTime + openTime + nextTime + closeTime;
-
- if (type == NoPutResultSet.CURRENT_RESULTSET_ONLY)
- {
- return totTime - leftSource.getTimeSpent(ENTIRE_RESULTSET_TREE)
- - rightSource.getTimeSpent(ENTIRE_RESULTSET_TREE);
- }
- else
- {
- return totTime;
- }
- } // end of getTimeSpent
-
- /**
- * @see CursorResultSet
- *
- * @return the row location of the current cursor row.
- * @exception StandardException thrown on failure
- */
- public RowLocation getRowLocation() throws StandardException
- {
- // RESOLVE: What is the row location of an INTERSECT supposed to be: the location from the
- // left side, the right side, or null?
- return ((CursorResultSet)leftSource).getRowLocation();
- }
-}
+/*
+
+ Derby - Class org.apache.derby.impl.sql.execute.SetOpResultSet
+
+ Copyright 2004 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ */
+
+package org.apache.derby.impl.sql.execute;
+
+import org.apache.derby.iapi.error.StandardException;
+
+import org.apache.derby.iapi.services.loader.GeneratedMethod;
+import org.apache.derby.iapi.services.sanity.SanityManager;
+
+import org.apache.derby.iapi.sql.Activation;
+import org.apache.derby.iapi.sql.ResultDescription;
+
+import org.apache.derby.iapi.sql.execute.CursorResultSet;
+import org.apache.derby.iapi.sql.execute.ExecPreparedStatement;
+import org.apache.derby.iapi.sql.execute.ExecRow;
+import org.apache.derby.iapi.sql.execute.NoPutResultSet;
+
+import org.apache.derby.iapi.types.DataValueDescriptor;
+import org.apache.derby.iapi.types.Orderable;
+import org.apache.derby.iapi.types.RowLocation;
+
+import org.apache.derby.impl.sql.compile.IntersectOrExceptNode;
+
+/**
+ * Takes the result set produced by an ordered UNION ALL of two tagged result sets and produces
+ * the INTERSECT or EXCEPT of the two input result sets. This also projects out the tag, the last column
+ * of the input rows.
+ */
+public class SetOpResultSet extends NoPutResultSetImpl
+ implements CursorResultSet
+{
+ private final NoPutResultSet leftSource;
+ private final NoPutResultSet rightSource;
+ private final GeneratedMethod closeCleanup;
+ private final Activation activation;
+ private final int opType;
+ private final boolean all;
+ private final int resultSetNumber;
+ private DataValueDescriptor[] prevCols; /* Used to remove duplicates in the EXCEPT DISTINCT case.
+ * It is equal to the previously output columns.
+ */
+ private int rightDuplicateCount; // Number of duplicates of the current row from the right input
+ private ExecRow leftInputRow;
+ private ExecRow rightInputRow;
+
+ private final int[] intermediateOrderByColumns;
+ private final int[] intermediateOrderByDirection;
+
+ SetOpResultSet( NoPutResultSet leftSource,
+ NoPutResultSet rightSource,
+ Activation activation,
+ int resultSetNumber,
+ long optimizerEstimatedRowCount,
+ double optimizerEstimatedCost,
+ int opType,
+ boolean all,
+ GeneratedMethod closeCleanup,
+ int intermediateOrderByColumnsSavedObject,
+ int intermediateOrderByDirectionSavedObject)
+ {
+ super(activation, resultSetNumber,
+ optimizerEstimatedRowCount, optimizerEstimatedCost);
+ this.leftSource = leftSource;
+ this.rightSource = rightSource;
+ this.activation = activation;
+ this.resultSetNumber = resultSetNumber;
+ this.opType = opType;
+ this.all = all;
+ this.closeCleanup = closeCleanup;
+ ExecPreparedStatement eps = activation.getPreparedStatement();
+ intermediateOrderByColumns = (int[]) eps.getSavedObject(intermediateOrderByColumnsSavedObject);
+ intermediateOrderByDirection = (int[]) eps.getSavedObject(intermediateOrderByDirectionSavedObject);
+ constructorTime += getElapsedMillis(beginTime);
+ }
+
+ /**
+ * open the first source.
+ * @exception StandardException thrown on failure
+ */
+ public void openCore() throws StandardException
+ {
+ beginTime = getCurrentTimeMillis();
+ if (SanityManager.DEBUG)
+ SanityManager.ASSERT( ! isOpen, "SetOpProjectRestrictResultSet already open");
+
+ isOpen = true;
+ leftSource.openCore();
+ rightSource.openCore();
+ rightInputRow = rightSource.getNextRowCore();
+ numOpens++;
+
+ openTime += getElapsedMillis(beginTime);
+ } // end of openCore
+
+ /**
+ * @return the next row of the intersect or except, null if there is none
+ * @exception StandardException thrown on failure
+ */
+ public ExecRow getNextRowCore() throws StandardException
+ {
+ beginTime = getCurrentTimeMillis();
+ if ( isOpen )
+ {
+ while( (leftInputRow = leftSource.getNextRowCore()) != null)
+ {
+ DataValueDescriptor[] leftColumns = leftInputRow.getRowArray();
+ if( !all)
+ {
+ if( isDuplicate( leftColumns))
+ continue; // Get the next left row
+ prevCols = leftInputRow.getRowArrayClone();
+ }
+ int compare = 0;
+ // Advance the right until there are no more right rows or leftRow <= rightRow
+ while( rightInputRow != null && (compare = compare( leftColumns, rightInputRow.getRowArray())) > 0)
+ rightInputRow = rightSource.getNextRowCore();
+
+ if( rightInputRow == null || compare < 0)
+ {
+ // The left row is not in the right source.
+ if( opType == IntersectOrExceptNode.EXCEPT_OP)
+ // Output this row
+ break;
+ }
+ else
+ {
+ // The left and right rows are the same
+ if( SanityManager.DEBUG)
+ SanityManager.ASSERT( rightInputRow != null && compare == 0,
+ "Insert/Except execution has gotten confused.");
+ if( all)
+ // Just advance the right input by one row.
+ rightInputRow = rightSource.getNextRowCore();
+ // If !all then we will skip past duplicates on the left at the top of this loop,
+ // which will then force us to skip past any right duplicates.
+ if( opType == IntersectOrExceptNode.INTERSECT_OP)
+ break; // output this row
+
+ // opType == IntersectOrExceptNode.EXCEPT_OP
+ // This row should not be ouput
+ }
+ }
+ }
+ currentRow = leftInputRow;
+ setCurrentRow( currentRow);
+ nextTime += getElapsedMillis(beginTime);
+ return currentRow;
+ } // end of getNextRowCore
+
+ private void advanceRightPastDuplicates( DataValueDescriptor[] leftColumns)
+ throws StandardException
+ {
+ while((rightInputRow = rightSource.getNextRowCore()) != null
+ && compare( leftColumns, rightInputRow.getRowArray()) == 0)
+ ;
+ } // end of advanceRightPastDuplicates
+
+ private int compare( DataValueDescriptor[] leftCols, DataValueDescriptor[] rightCols)
+ throws StandardException
+ {
+ for( int i = 0; i < intermediateOrderByColumns.length; i++)
+ {
+ int colIdx = intermediateOrderByColumns[i];
+ if( leftCols[colIdx].compare( Orderable.ORDER_OP_LESSTHAN,
+ rightCols[colIdx],
+ true, // nulls sort high
+ false))
+ return -1 * intermediateOrderByDirection[i];
+ if( ! leftCols[colIdx].compare( Orderable.ORDER_OP_EQUALS,
+ rightCols[colIdx],
+ true, // nulls sort high
+ false))
+ return intermediateOrderByDirection[i];
+ }
+ return 0;
+ } // end of compare
+
+ private boolean isDuplicate( DataValueDescriptor[] curColumns)
+ throws StandardException
+ {
+ if( prevCols == null)
+ return false;
+ /* Note that intermediateOrderByColumns.length can be less than prevCols.length if we know that a
+ * subset of the columns is a unique key. In that case we only need to look at the unique key.
+ */
+ for( int i = 0; i < intermediateOrderByColumns.length; i++)
+ {
+ int colIdx = intermediateOrderByColumns[i];
+ if( ! curColumns[colIdx].compare( Orderable.ORDER_OP_EQUALS, prevCols[colIdx], true, false))
+ return false;
+ }
+ return true;
+ }
+
+ public ExecRow getCurrentRow()
+ {
+ return currentRow;
+ }
+
+ /**
+ * If the result set has been opened,
+ * close the currently open source.
+ *
+ * @exception StandardException thrown on error
+ */
+ public void close() throws StandardException
+ {
+ beginTime = getCurrentTimeMillis();
+ if ( isOpen )
+ {
+ if (closeCleanup != null)
+ closeCleanup.invoke(activation); // let activation tidy up
+ clearCurrentRow();
+ currentRow = null;
+ prevCols = null;
+ leftSource.close();
+ rightSource.close();
+ super.close();
+ }
+ else
+ if (SanityManager.DEBUG)
+ SanityManager.DEBUG("CloseRepeatInfo","Close of UnionResultSet repeated");
+
+ closeTime += getElapsedMillis(beginTime);
+ } // end of close
+
+ public void finish() throws StandardException
+ {
+ leftSource.finish();
+ rightSource.finish();
+ finishAndRTS();
+ }
+
+ /**
+ * Return the total amount of time spent in this ResultSet
+ *
+ * @param type CURRENT_RESULTSET_ONLY - time spent only in this ResultSet
+ * ENTIRE_RESULTSET_TREE - time spent in this ResultSet and below.
+ *
+ * @return long The total amount of time spent (in milliseconds).
+ */
+ public long getTimeSpent(int type)
+ {
+ long totTime = constructorTime + openTime + nextTime + closeTime;
+
+ if (type == NoPutResultSet.CURRENT_RESULTSET_ONLY)
+ {
+ return totTime - leftSource.getTimeSpent(ENTIRE_RESULTSET_TREE)
+ - rightSource.getTimeSpent(ENTIRE_RESULTSET_TREE);
+ }
+ else
+ {
+ return totTime;
+ }
+ } // end of getTimeSpent
+
+ /**
+ * @see CursorResultSet
+ *
+ * @return the row location of the current cursor row.
+ * @exception StandardException thrown on failure
+ */
+ public RowLocation getRowLocation() throws StandardException
+ {
+ // RESOLVE: What is the row location of an INTERSECT supposed to be: the location from the
+ // left side, the right side, or null?
+ return ((CursorResultSet)leftSource).getRowLocation();
+ }
+}
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SetOpResultSet.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SetSchemaConstantAction.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SetTransactionIsolationConstantAction.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SetTransactionResultSet.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SortResultSet.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/StatementTriggerExecutor.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SumAggregator.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/SystemAggregator.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TableScanResultSet.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderImpl.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TemporaryRowHolderResultSet.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerEvent.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerEventActivator.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerEvents.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/TriggerInfo.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UnionResultSet.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UniqueIndexSortObserver.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdatableVTIConstantAction.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateConstantAction.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateResultSet.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateStatisticsConstantAction.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/UpdateVTIResultSet.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/VTIResultSet.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/ValueRow.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/WriteCursorConstantAction.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealAnyResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealBasicNoPutResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealCurrentOfStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealDeleteCascadeResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealDeleteResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealDeleteVTIResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealDistinctScalarAggregateStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealDistinctScanStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealGroupedAggregateStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashJoinStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashLeftOuterJoinStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashScanStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealHashTableStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealIndexRowToBaseRowStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealInsertResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealInsertVTIResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealJoinResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealLastIndexKeyScanStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealMaterializedResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopJoinStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNestedLoopLeftOuterJoinStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNoPutResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNoRowsResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealNormalizeResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealOnceResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealProjectRestrictStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealRowResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealScalarAggregateStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealScrollInsensitiveResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealSortStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealTableScanStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealUnionResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealUpdateResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealVTIStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/ResultSetStatistics.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RunTimeStatisticsImpl.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/BackingStoreHashTableFromScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/CacheableConglomerate.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/PC_XenaVersion.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/PropertyConglomerate.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/RAMAccessManager.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/RAMTransaction.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/RAMTransactionContext.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/RllRAMAccessManager.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/StorableFormatId.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/UTF.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/UTFQualifier.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTree.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreeController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreeCostController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreeForwardScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreeLockingPolicy.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreeMaxScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreePostCommit.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreeRowPosition.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreeScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BTreeScanInfo.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BranchControlRow.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/BranchRow.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/ControlRow.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/D_BTreeController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/LeafControlRow.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/OpenBTree.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/SearchParameters.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/WaitError.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2I.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2ICostController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IFactory.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IForwardScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IMaxScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2INoLocking.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IRowLocking1.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IRowLocking2.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IRowLocking3.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IRowLockingRR.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IStaticCompiledInfo.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2ITableLocking3.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/B2IUndo.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/D_B2IController.java
('svn:executable' removed)
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/package.html
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/package.html?rev=329187&r1=329186&r2=329187&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/package.html (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/package.html Fri Oct 28 04:51:50 2005
@@ -1,40 +1,40 @@
-<html>
-<head>
-<title>BTree Indexes with Locking</title>
-<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
-</head>
-<body>
-<p>
-Implements classes used by the language layer to implement
-SQL secondary indexes. The classes here extend and use the classes in
-{@link org.apache.derby.impl.store.access.btree} to implement
-a locked btree index.
-<p>
-The key to understanding the class layout is to understand the public
-store interfaces in
-{@link org.apache.derby.iapi.store.access.conglomerate}, which contains
-the shared interfaces that must be implemented by all access methods.
-Currently Derby implements heap and btree index access methods. Users of
-access methods use the same interface no matter what the underlying
-type or particular implementation of the access method. Therefore, Derby
-can support multiple types of btree index implementations, which if done
-right should require no changes to actual users of the access methods.
-<p>
-In reality the interfaces would have to change in some ways to
-support a radically different kind of access method, such as
-<a href="http://gist.cs.berkeley.edu/gist1.html">GiST</a>. But
-the implementor should enhance the interfaces in the conglomerate
-package so that these can then be supported by all existing access
-methods.
-<h2>Isolation Levels</h2>
-<p>Isolation level implementation in the B-Tree index is done with data
-only locking, i.e., locks on secondary index rows are actually locks on the
-data rows that they point to. The specifics of particular isolation levels
-are hidden in various implementations of the {@link org.apache.derby.impl.store.access.btree.BTreeLockingPolicy BTreeLockingPolicy} class.
-The classes which do scans, deletes, and inserts do not have isolation
-specific code, instead they make lock calls using BTreeLockingPolicy
-interfaces, and then depending on the isolation level one of the implmentations
-does the actual locking.
-</p>
-</body>
+<html>
+<head>
+<title>BTree Indexes with Locking</title>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+</head>
+<body>
+<p>
+Implements classes used by the language layer to implement
+SQL secondary indexes. The classes here extend and use the classes in
+{@link org.apache.derby.impl.store.access.btree} to implement
+a locked btree index.
+<p>
+The key to understanding the class layout is to understand the public
+store interfaces in
+{@link org.apache.derby.iapi.store.access.conglomerate}, which contains
+the shared interfaces that must be implemented by all access methods.
+Currently Derby implements heap and btree index access methods. Users of
+access methods use the same interface no matter what the underlying
+type or particular implementation of the access method. Therefore, Derby
+can support multiple types of btree index implementations, which if done
+right should require no changes to actual users of the access methods.
+<p>
+In reality the interfaces would have to change in some ways to
+support a radically different kind of access method, such as
+<a href="http://gist.cs.berkeley.edu/gist1.html">GiST</a>. But
+the implementor should enhance the interfaces in the conglomerate
+package so that these can then be supported by all existing access
+methods.
+<h2>Isolation Levels</h2>
+<p>Isolation level implementation in the B-Tree index is done with data
+only locking, i.e., locks on secondary index rows are actually locks on the
+data rows that they point to. The specifics of particular isolation levels
+are hidden in various implementations of the {@link org.apache.derby.impl.store.access.btree.BTreeLockingPolicy BTreeLockingPolicy} class.
+The classes which do scans, deletes, and inserts do not have isolation
+specific code, instead they make lock calls using BTreeLockingPolicy
+interfaces, and then depending on the isolation level one of the implmentations
+does the actual locking.
+</p>
+</body>
</html>
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/btree/index/package.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/BinaryOrderableWrapper.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/ConglomerateUtil.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/GenericConglomerate.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/GenericConglomerateController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/GenericController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/GenericCostController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/GenericScanController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/OpenConglomerate.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/OpenConglomerateScratchSpace.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/RowPosition.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/conglomerate/TemplateRow.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/D_HeapController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/Heap.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapClassInfo.java
('svn:executable' removed)
Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapCompressScan.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapCompressScan.java?rev=329187&r1=329186&r2=329187&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapCompressScan.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapCompressScan.java Fri Oct 28 04:51:50 2005
@@ -1,439 +1,439 @@
-/*
-
- Derby - Class org.apache.derby.impl.store.access.heap.HeapScan
-
- Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
-*/
-
-package org.apache.derby.impl.store.access.heap;
-
-
-/**
-
- A heap scan object represents an instance of an scan on a heap conglomerate.
-
-**/
-
-import org.apache.derby.iapi.reference.SQLState;
-
-import org.apache.derby.iapi.services.sanity.SanityManager;
-
-import org.apache.derby.iapi.services.io.Storable;
-
-import org.apache.derby.iapi.error.StandardException;
-
-import org.apache.derby.iapi.store.access.conglomerate.Conglomerate;
-import org.apache.derby.iapi.store.access.conglomerate.LogicalUndo;
-import org.apache.derby.iapi.store.access.conglomerate.ScanManager;
-import org.apache.derby.iapi.store.access.conglomerate.TransactionManager;
-
-import org.apache.derby.iapi.store.access.ConglomerateController;
-import org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo;
-import org.apache.derby.iapi.store.access.Qualifier;
-import org.apache.derby.iapi.store.access.RowUtil;
-import org.apache.derby.iapi.store.access.ScanInfo;
-import org.apache.derby.iapi.store.access.ScanController;
-import org.apache.derby.iapi.store.access.SpaceInfo;
-import org.apache.derby.iapi.store.access.TransactionController;
-
-import org.apache.derby.iapi.types.RowLocation;
-
-import org.apache.derby.iapi.store.raw.ContainerHandle;
-import org.apache.derby.iapi.store.raw.LockingPolicy;
-import org.apache.derby.iapi.store.raw.Transaction;
-import org.apache.derby.iapi.store.raw.Page;
-import org.apache.derby.iapi.store.raw.RecordHandle;
-
-import org.apache.derby.iapi.types.DataValueDescriptor;
-
-import org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil;
-import org.apache.derby.impl.store.access.conglomerate.GenericScanController;
-import org.apache.derby.impl.store.access.conglomerate.RowPosition;
-
-import org.apache.derby.iapi.store.access.BackingStoreHashtable;
-import org.apache.derby.iapi.services.io.FormatableBitSet;
-
-import java.util.Hashtable;
-import java.util.Vector;
-
-class HeapCompressScan
- extends HeapScan
-{
-
- /**************************************************************************
- * Constants of HeapScan
- **************************************************************************
- */
-
- /**************************************************************************
- * Fields of HeapScan
- **************************************************************************
- */
- private long pagenum_to_start_moving_rows = -1;
-
-
-
- /**************************************************************************
- * Constructors for This class:
- **************************************************************************
- */
-
- /**
- ** The only constructor for a HeapCompressScan returns a scan in the
- ** closed state, the caller must call open.
- **/
-
- public HeapCompressScan()
- {
- }
-
- /**************************************************************************
- * Protected override implementation of routines in
- * GenericController class:
- **************************************************************************
- */
-
- public int fetchNextGroup(
- DataValueDescriptor[][] row_array,
- RowLocation[] old_rowloc_array,
- RowLocation[] new_rowloc_array)
- throws StandardException
- {
- return(fetchRowsForCompress(
- row_array, old_rowloc_array, new_rowloc_array));
- }
-
- /**
- * Fetch the next N rows from the table.
- * <p>
- * Utility routine used by both fetchSet() and fetchNextGroup().
- *
- * @exception StandardException Standard exception policy.
- **/
- private int fetchRowsForCompress(
- DataValueDescriptor[][] row_array,
- RowLocation[] oldrowloc_array,
- RowLocation[] newrowloc_array)
- throws StandardException
- {
- int ret_row_count = 0;
- DataValueDescriptor[] fetch_row = null;
-
- if (SanityManager.DEBUG)
- {
- SanityManager.ASSERT(row_array != null);
- SanityManager.ASSERT(row_array[0] != null,
- "first array slot in fetchNextGroup() must be non-null.");
- }
-
- if (getScanState() == SCAN_INPROGRESS)
- {
- positionAtResumeScan(scan_position);
- }
- else if (getScanState() == SCAN_INIT)
- {
- // For first implementation of defragment use a conservative
- // approach, only move rows from the last "number of free pages"
- // of the container. Should always at least be able to empty
- // that number of pages.
- SpaceInfo info =
- open_conglom.getContainer().getSpaceInfo();
-
- pagenum_to_start_moving_rows = info.getNumAllocatedPages();
-
- positionAtStartForForwardScan(scan_position);
- }
- else if (getScanState() == SCAN_HOLD_INPROGRESS)
- {
- open_conglom.reopen();
-
- if (SanityManager.DEBUG)
- {
- SanityManager.ASSERT(
- scan_position.current_rh != null, this.toString());
- }
-
- // reposition the scan at the row just before the next one to
- // return.
- // This routine handles the mess of repositioning if the row or
- // the page has disappeared. This can happen if a lock was not
- // held on the row while not holding the latch.
- open_conglom.latchPageAndRepositionScan(scan_position);
-
- setScanState(SCAN_INPROGRESS);
- }
- else if (getScanState() == SCAN_HOLD_INIT)
- {
- open_conglom.reopen();
-
- positionAtStartForForwardScan(scan_position);
-
- }
- else
- {
- if (SanityManager.DEBUG)
- SanityManager.ASSERT(getScanState() == SCAN_DONE);
-
- return(0);
- }
-
- // At this point:
- // scan_position.current_page is latched.
- // scan_position.current_slot is the slot on scan_position.current_page
- // just before the "next" record this routine should process.
-
- // loop through successive pages and successive slots on those
- // pages. Stop when either the last page is reached
- // (scan_position.current_page will be null).
- // Along the way apply qualifiers to skip rows which don't qualify.
-
- while (scan_position.current_page != null)
- {
- while ((scan_position.current_slot + 1) <
- scan_position.current_page.recordCount())
- {
- // Allocate a new row to read the row into.
- if (fetch_row == null)
- {
- // point at allocated row in array if one exists.
- if (row_array[ret_row_count] == null)
- {
- row_array[ret_row_count] =
- open_conglom.getRuntimeMem().get_row_for_export();
- }
-
- fetch_row = row_array[ret_row_count];
- }
-
- // move scan current position forward.
- scan_position.positionAtNextSlot();
-
- this.stat_numrows_visited++;
-
- if (scan_position.current_page.isDeletedAtSlot(
- scan_position.current_slot))
- {
- // At this point assume table level lock, and that this
- // transcation did not delete the row, so any
- // deleted row must be a committed deleted row which can
- // be purged.
- scan_position.current_page.purgeAtSlot(
- scan_position.current_slot, 1, false);
-
- // raw store shuffles following rows down, so
- // postion the scan at previous slot, so next trip
- // through loop will pick up correct row.
- scan_position.positionAtPrevSlot();
- continue;
- }
-
- if (scan_position.current_page.getPageNumber() >
- pagenum_to_start_moving_rows)
- {
- // Give raw store a chance to move the row for compression
- RecordHandle[] old_handle = new RecordHandle[1];
- RecordHandle[] new_handle = new RecordHandle[1];
- long[] new_pageno = new long[1];
-
- if (scan_position.current_page.moveRecordForCompressAtSlot(
- scan_position.current_slot,
- fetch_row,
- old_handle,
- new_handle) == 1)
- {
- // raw store moved the row, so bump the row count but
- // postion the scan at previous slot, so next trip
- // through loop will pick up correct row.
- // The subsequent rows will have been moved forward
- // to take place of moved row.
- scan_position.positionAtPrevSlot();
-
- ret_row_count++;
- stat_numrows_qualified++;
-
-
- setRowLocationArray(
- oldrowloc_array, ret_row_count - 1, old_handle[0]);
- setRowLocationArray(
- newrowloc_array, ret_row_count - 1, new_handle[0]);
-
- fetch_row = null;
-
- }
- }
- }
-
- this.stat_numpages_visited++;
-
- if (scan_position.current_page.recordCount() == 0)
- {
- // need to set the scan position before removing page
- scan_position.current_pageno =
- scan_position.current_page.getPageNumber();
-
- open_conglom.getContainer().removePage(
- scan_position.current_page);
-
- // removePage unlatches the page, and page not available
- // again until after commit.
- scan_position.current_page = null;
- }
- else
- {
- positionAfterThisPage(scan_position);
- scan_position.unlatch();
- }
-
-
- if (ret_row_count > 0)
- {
- // rows were moved on this page, give caller a chance to
- // process those and free up access to the table.
- return(ret_row_count);
- }
- else
- {
- // no rows were moved so go ahead and commit the transaction
- // to allow other threads a chance at table. Compress does
- // need to sync as long as transaction either completely
- // commits or backs out, either is fine.
- /*
- open_conglom.getXactMgr().commitNoSync(
- TransactionController.RELEASE_LOCKS);
- open_conglom.reopen();
- */
- positionAtResumeScan(scan_position);
-
- }
- }
-
- // Reached last page of scan.
- positionAtDoneScan(scan_position);
-
- // we need to decrement when we stop scan at the end of the table.
- this.stat_numpages_visited--;
-
- return(ret_row_count);
- }
-
- /**
- * Reposition the scan upon entering the fetchRows loop.
- * <p>
- * Called upon entering fetchRows() while in the SCAN_INPROGRESS state.
- * Do work necessary to look at rows in the current page of the scan.
- * <p>
- * The default implementation uses a record handle to maintain a scan
- * position. It will get the latch again on the current
- * scan position and set the slot to the current record handle.
- *
- * @exception StandardException Standard exception policy.
- **/
- protected void positionAtResumeScan(
- RowPosition pos)
- throws StandardException
- {
- // reposition the scan at the row just before the next one to return.
- // This routine handles the mess of repositioning if the row or the
- // page has disappeared. This can happen if a lock was not held on the
- // row while not holding the latch.
- open_conglom.latchPageAndRepositionScan(scan_position);
- }
-
- /**
- * Move the scan from SCAN_INIT to SCAN_INPROGRESS.
- * <p>
- * This routine is called to move the scan from SCAN_INIT to
- * SCAN_INPROGRESS. Upon return from this routine it is expected
- * that scan_position is set such that calling the generic
- * scan loop will reach the first row of the scan. Note that this
- * usually means setting the scan_postion to one before the 1st
- * row to be returned.
- * <p>
- *
- * @exception StandardException Standard exception policy.
- **/
- protected void positionAtStartForForwardScan(
- RowPosition pos)
- throws StandardException
- {
- if (pos.current_rh == null)
- {
- // 1st positioning of scan (delayed from openScan). Do not
- // compress the first page, there is no previous page to move
- // rows to, and moving the special Heap metadata row from the
- // first page would cause problems. Setting to next page is
- // why this scan overrides generic implementation.
- pos.current_page =
- open_conglom.getContainer().getNextPage(
- ContainerHandle.FIRST_PAGE_NUMBER);
-
- // set up for scan to continue at beginning of page following
- // the first page of the container.
- pos.current_slot = Page.FIRST_SLOT_NUMBER - 1;
- }
- else
- {
- // 1st positioning of scan following a reopenScanByRowLocation
-
- // reposition the scan at the row just before the next one to
- // return. This routine handles the mess of repositioning if the
- // row or the page has disappeared. This can happen if a lock was
- // not held on the row while not holding the latch.
- open_conglom.latchPageAndRepositionScan(pos);
-
- // set up for scan to at the specified record handle (position one
- // before it so that the loop increment and find it).
- pos.current_slot -= 1;
- }
-
- pos.current_rh = null;
- this.stat_numpages_visited = 1;
- this.setScanState(SCAN_INPROGRESS);
- }
-
-
- /**************************************************************************
- * Private/Protected methods of This class:
- **************************************************************************
- */
-
- /**
- * Set scan position to just after current page.
- * <p>
- * Used to set the position of the scan if a record handle is not
- * avaliable. In this case current_rh will be set to null, and
- * current_pageno will be set to the current page number.
- * On resume of the scan, the scan will be set to just before the first
- * row returned form a getNextPage(current_pageno) call.
- * <p>
- * A positionAtResumeScan(scan_position) is necessary to continue the
- * scan after this call.
- *
- * @exception StandardException Standard exception policy.
- **/
- private void positionAfterThisPage(
- RowPosition pos)
- throws StandardException
- {
- pos.current_rh = null;
- pos.current_pageno = pos.current_page.getPageNumber();
- }
-
- /*
- ** Methods of ScanManager
- */
-
-}
+/*
+
+ Derby - Class org.apache.derby.impl.store.access.heap.HeapScan
+
+ Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+*/
+
+package org.apache.derby.impl.store.access.heap;
+
+
+/**
+
+ A heap scan object represents an instance of an scan on a heap conglomerate.
+
+**/
+
+import org.apache.derby.iapi.reference.SQLState;
+
+import org.apache.derby.iapi.services.sanity.SanityManager;
+
+import org.apache.derby.iapi.services.io.Storable;
+
+import org.apache.derby.iapi.error.StandardException;
+
+import org.apache.derby.iapi.store.access.conglomerate.Conglomerate;
+import org.apache.derby.iapi.store.access.conglomerate.LogicalUndo;
+import org.apache.derby.iapi.store.access.conglomerate.ScanManager;
+import org.apache.derby.iapi.store.access.conglomerate.TransactionManager;
+
+import org.apache.derby.iapi.store.access.ConglomerateController;
+import org.apache.derby.iapi.store.access.DynamicCompiledOpenConglomInfo;
+import org.apache.derby.iapi.store.access.Qualifier;
+import org.apache.derby.iapi.store.access.RowUtil;
+import org.apache.derby.iapi.store.access.ScanInfo;
+import org.apache.derby.iapi.store.access.ScanController;
+import org.apache.derby.iapi.store.access.SpaceInfo;
+import org.apache.derby.iapi.store.access.TransactionController;
+
+import org.apache.derby.iapi.types.RowLocation;
+
+import org.apache.derby.iapi.store.raw.ContainerHandle;
+import org.apache.derby.iapi.store.raw.LockingPolicy;
+import org.apache.derby.iapi.store.raw.Transaction;
+import org.apache.derby.iapi.store.raw.Page;
+import org.apache.derby.iapi.store.raw.RecordHandle;
+
+import org.apache.derby.iapi.types.DataValueDescriptor;
+
+import org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil;
+import org.apache.derby.impl.store.access.conglomerate.GenericScanController;
+import org.apache.derby.impl.store.access.conglomerate.RowPosition;
+
+import org.apache.derby.iapi.store.access.BackingStoreHashtable;
+import org.apache.derby.iapi.services.io.FormatableBitSet;
+
+import java.util.Hashtable;
+import java.util.Vector;
+
+class HeapCompressScan
+ extends HeapScan
+{
+
+ /**************************************************************************
+ * Constants of HeapScan
+ **************************************************************************
+ */
+
+ /**************************************************************************
+ * Fields of HeapScan
+ **************************************************************************
+ */
+ private long pagenum_to_start_moving_rows = -1;
+
+
+
+ /**************************************************************************
+ * Constructors for This class:
+ **************************************************************************
+ */
+
+ /**
+ ** The only constructor for a HeapCompressScan returns a scan in the
+ ** closed state, the caller must call open.
+ **/
+
+ public HeapCompressScan()
+ {
+ }
+
+ /**************************************************************************
+ * Protected override implementation of routines in
+ * GenericController class:
+ **************************************************************************
+ */
+
+ public int fetchNextGroup(
+ DataValueDescriptor[][] row_array,
+ RowLocation[] old_rowloc_array,
+ RowLocation[] new_rowloc_array)
+ throws StandardException
+ {
+ return(fetchRowsForCompress(
+ row_array, old_rowloc_array, new_rowloc_array));
+ }
+
+ /**
+ * Fetch the next N rows from the table.
+ * <p>
+ * Utility routine used by both fetchSet() and fetchNextGroup().
+ *
+ * @exception StandardException Standard exception policy.
+ **/
+ private int fetchRowsForCompress(
+ DataValueDescriptor[][] row_array,
+ RowLocation[] oldrowloc_array,
+ RowLocation[] newrowloc_array)
+ throws StandardException
+ {
+ int ret_row_count = 0;
+ DataValueDescriptor[] fetch_row = null;
+
+ if (SanityManager.DEBUG)
+ {
+ SanityManager.ASSERT(row_array != null);
+ SanityManager.ASSERT(row_array[0] != null,
+ "first array slot in fetchNextGroup() must be non-null.");
+ }
+
+ if (getScanState() == SCAN_INPROGRESS)
+ {
+ positionAtResumeScan(scan_position);
+ }
+ else if (getScanState() == SCAN_INIT)
+ {
+ // For first implementation of defragment use a conservative
+ // approach, only move rows from the last "number of free pages"
+ // of the container. Should always at least be able to empty
+ // that number of pages.
+ SpaceInfo info =
+ open_conglom.getContainer().getSpaceInfo();
+
+ pagenum_to_start_moving_rows = info.getNumAllocatedPages();
+
+ positionAtStartForForwardScan(scan_position);
+ }
+ else if (getScanState() == SCAN_HOLD_INPROGRESS)
+ {
+ open_conglom.reopen();
+
+ if (SanityManager.DEBUG)
+ {
+ SanityManager.ASSERT(
+ scan_position.current_rh != null, this.toString());
+ }
+
+ // reposition the scan at the row just before the next one to
+ // return.
+ // This routine handles the mess of repositioning if the row or
+ // the page has disappeared. This can happen if a lock was not
+ // held on the row while not holding the latch.
+ open_conglom.latchPageAndRepositionScan(scan_position);
+
+ setScanState(SCAN_INPROGRESS);
+ }
+ else if (getScanState() == SCAN_HOLD_INIT)
+ {
+ open_conglom.reopen();
+
+ positionAtStartForForwardScan(scan_position);
+
+ }
+ else
+ {
+ if (SanityManager.DEBUG)
+ SanityManager.ASSERT(getScanState() == SCAN_DONE);
+
+ return(0);
+ }
+
+ // At this point:
+ // scan_position.current_page is latched.
+ // scan_position.current_slot is the slot on scan_position.current_page
+ // just before the "next" record this routine should process.
+
+ // loop through successive pages and successive slots on those
+ // pages. Stop when either the last page is reached
+ // (scan_position.current_page will be null).
+ // Along the way apply qualifiers to skip rows which don't qualify.
+
+ while (scan_position.current_page != null)
+ {
+ while ((scan_position.current_slot + 1) <
+ scan_position.current_page.recordCount())
+ {
+ // Allocate a new row to read the row into.
+ if (fetch_row == null)
+ {
+ // point at allocated row in array if one exists.
+ if (row_array[ret_row_count] == null)
+ {
+ row_array[ret_row_count] =
+ open_conglom.getRuntimeMem().get_row_for_export();
+ }
+
+ fetch_row = row_array[ret_row_count];
+ }
+
+ // move scan current position forward.
+ scan_position.positionAtNextSlot();
+
+ this.stat_numrows_visited++;
+
+ if (scan_position.current_page.isDeletedAtSlot(
+ scan_position.current_slot))
+ {
+ // At this point assume table level lock, and that this
+ // transcation did not delete the row, so any
+ // deleted row must be a committed deleted row which can
+ // be purged.
+ scan_position.current_page.purgeAtSlot(
+ scan_position.current_slot, 1, false);
+
+ // raw store shuffles following rows down, so
+ // postion the scan at previous slot, so next trip
+ // through loop will pick up correct row.
+ scan_position.positionAtPrevSlot();
+ continue;
+ }
+
+ if (scan_position.current_page.getPageNumber() >
+ pagenum_to_start_moving_rows)
+ {
+ // Give raw store a chance to move the row for compression
+ RecordHandle[] old_handle = new RecordHandle[1];
+ RecordHandle[] new_handle = new RecordHandle[1];
+ long[] new_pageno = new long[1];
+
+ if (scan_position.current_page.moveRecordForCompressAtSlot(
+ scan_position.current_slot,
+ fetch_row,
+ old_handle,
+ new_handle) == 1)
+ {
+ // raw store moved the row, so bump the row count but
+ // postion the scan at previous slot, so next trip
+ // through loop will pick up correct row.
+ // The subsequent rows will have been moved forward
+ // to take place of moved row.
+ scan_position.positionAtPrevSlot();
+
+ ret_row_count++;
+ stat_numrows_qualified++;
+
+
+ setRowLocationArray(
+ oldrowloc_array, ret_row_count - 1, old_handle[0]);
+ setRowLocationArray(
+ newrowloc_array, ret_row_count - 1, new_handle[0]);
+
+ fetch_row = null;
+
+ }
+ }
+ }
+
+ this.stat_numpages_visited++;
+
+ if (scan_position.current_page.recordCount() == 0)
+ {
+ // need to set the scan position before removing page
+ scan_position.current_pageno =
+ scan_position.current_page.getPageNumber();
+
+ open_conglom.getContainer().removePage(
+ scan_position.current_page);
+
+ // removePage unlatches the page, and page not available
+ // again until after commit.
+ scan_position.current_page = null;
+ }
+ else
+ {
+ positionAfterThisPage(scan_position);
+ scan_position.unlatch();
+ }
+
+
+ if (ret_row_count > 0)
+ {
+ // rows were moved on this page, give caller a chance to
+ // process those and free up access to the table.
+ return(ret_row_count);
+ }
+ else
+ {
+ // no rows were moved so go ahead and commit the transaction
+ // to allow other threads a chance at table. Compress does
+ // need to sync as long as transaction either completely
+ // commits or backs out, either is fine.
+ /*
+ open_conglom.getXactMgr().commitNoSync(
+ TransactionController.RELEASE_LOCKS);
+ open_conglom.reopen();
+ */
+ positionAtResumeScan(scan_position);
+
+ }
+ }
+
+ // Reached last page of scan.
+ positionAtDoneScan(scan_position);
+
+ // we need to decrement when we stop scan at the end of the table.
+ this.stat_numpages_visited--;
+
+ return(ret_row_count);
+ }
+
+ /**
+ * Reposition the scan upon entering the fetchRows loop.
+ * <p>
+ * Called upon entering fetchRows() while in the SCAN_INPROGRESS state.
+ * Do work necessary to look at rows in the current page of the scan.
+ * <p>
+ * The default implementation uses a record handle to maintain a scan
+ * position. It will get the latch again on the current
+ * scan position and set the slot to the current record handle.
+ *
+ * @exception StandardException Standard exception policy.
+ **/
+ protected void positionAtResumeScan(
+ RowPosition pos)
+ throws StandardException
+ {
+ // reposition the scan at the row just before the next one to return.
+ // This routine handles the mess of repositioning if the row or the
+ // page has disappeared. This can happen if a lock was not held on the
+ // row while not holding the latch.
+ open_conglom.latchPageAndRepositionScan(scan_position);
+ }
+
+ /**
+ * Move the scan from SCAN_INIT to SCAN_INPROGRESS.
+ * <p>
+ * This routine is called to move the scan from SCAN_INIT to
+ * SCAN_INPROGRESS. Upon return from this routine it is expected
+ * that scan_position is set such that calling the generic
+ * scan loop will reach the first row of the scan. Note that this
+ * usually means setting the scan_postion to one before the 1st
+ * row to be returned.
+ * <p>
+ *
+ * @exception StandardException Standard exception policy.
+ **/
+ protected void positionAtStartForForwardScan(
+ RowPosition pos)
+ throws StandardException
+ {
+ if (pos.current_rh == null)
+ {
+ // 1st positioning of scan (delayed from openScan). Do not
+ // compress the first page, there is no previous page to move
+ // rows to, and moving the special Heap metadata row from the
+ // first page would cause problems. Setting to next page is
+ // why this scan overrides generic implementation.
+ pos.current_page =
+ open_conglom.getContainer().getNextPage(
+ ContainerHandle.FIRST_PAGE_NUMBER);
+
+ // set up for scan to continue at beginning of page following
+ // the first page of the container.
+ pos.current_slot = Page.FIRST_SLOT_NUMBER - 1;
+ }
+ else
+ {
+ // 1st positioning of scan following a reopenScanByRowLocation
+
+ // reposition the scan at the row just before the next one to
+ // return. This routine handles the mess of repositioning if the
+ // row or the page has disappeared. This can happen if a lock was
+ // not held on the row while not holding the latch.
+ open_conglom.latchPageAndRepositionScan(pos);
+
+ // set up for scan to at the specified record handle (position one
+ // before it so that the loop increment and find it).
+ pos.current_slot -= 1;
+ }
+
+ pos.current_rh = null;
+ this.stat_numpages_visited = 1;
+ this.setScanState(SCAN_INPROGRESS);
+ }
+
+
+ /**************************************************************************
+ * Private/Protected methods of This class:
+ **************************************************************************
+ */
+
+ /**
+ * Set scan position to just after current page.
+ * <p>
+ * Used to set the position of the scan if a record handle is not
+ * avaliable. In this case current_rh will be set to null, and
+ * current_pageno will be set to the current page number.
+ * On resume of the scan, the scan will be set to just before the first
+ * row returned form a getNextPage(current_pageno) call.
+ * <p>
+ * A positionAtResumeScan(scan_position) is necessary to continue the
+ * scan after this call.
+ *
+ * @exception StandardException Standard exception policy.
+ **/
+ private void positionAfterThisPage(
+ RowPosition pos)
+ throws StandardException
+ {
+ pos.current_rh = null;
+ pos.current_pageno = pos.current_page.getPageNumber();
+ }
+
+ /*
+ ** Methods of ScanManager
+ */
+
+}
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapCompressScan.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapConglomerateFactory.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapCostController.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapPostCommit.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapRowLocation.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/HeapScanInfo.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/heap/OpenHeap.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/ExternalSortFactory.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/MergeInserter.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/MergeScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/MergeScanRowSource.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/MergeSort.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/MergeSortInfo.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/Node.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/NodeAllocator.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/Scan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/SortBuffer.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/SortBufferRowSource.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/SortBufferScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/access/sort/SortScan.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/build.xml
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/RawStore.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocExtent.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocPage.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocPageOperation.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocationActions.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/AllocationCache.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BaseContainer.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BaseContainerHandle.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BaseDataFileFactory.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BasePage.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/BufferedByteHolderInputStream.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/ByteHolder.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/ByteHolderInputStream.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/CachedPage.java
('svn:executable' removed)
Propchange: db/derby/code/trunk/java/engine/org/apache/derby/impl/store/raw/data/ChainAllocPageOperation.java
('svn:executable' removed)