org.apache.derby.impl.sql.execute
Class NestedLoopLeftOuterJoinResultSet

java.lang.Object
  extended by org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
      extended by org.apache.derby.impl.sql.execute.NoPutResultSetImpl
          extended by org.apache.derby.impl.sql.execute.JoinResultSet
              extended by org.apache.derby.impl.sql.execute.NestedLoopJoinResultSet
                  extended by org.apache.derby.impl.sql.execute.NestedLoopLeftOuterJoinResultSet
All Implemented Interfaces:
CursorResultSet, NoPutResultSet, ResultSet, RowLocationRetRowSource, RowSource
Direct Known Subclasses:
HashLeftOuterJoinResultSet

 class NestedLoopLeftOuterJoinResultSet
extends NestedLoopJoinResultSet

Takes 2 NoPutResultSets and a join filter and returns the join's rows satisfying the filter as a result set plus the rows from the left joined with a null row from the right when there is no matching row in the right result set.


Field Summary
 int emptyRightRowsReturned
           
protected  GeneratedMethod emptyRowFun
           
private  boolean matchRight
           
private  boolean returnedEmptyRight
           
private  ExecRow rightEmptyRow
           
private  boolean wasRightOuterJoin
           
 
Fields inherited from class org.apache.derby.impl.sql.execute.JoinResultSet
isRightOpen, leftNumCols, leftResultSet, leftRow, mergedRow, notExistsRightSide, oneRowRightSide, restriction, restrictionTime, rightNumCols, rightResultSet, rightRow, rowsReturned, rowsSeenLeft, rowsSeenRight, userSuppliedOptimizerOverrides
 
Fields inherited from class org.apache.derby.impl.sql.execute.NoPutResultSetImpl
checkNullCols, clonedExecRow, cncLen, resultSetNumber, targetResultSet
 
Fields inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
activation, beginTime, closeTime, compactRow, constructorTime, currentRow, endExecutionTime, finished, isOpen, isTopResultSet, nextTime, numOpens, openTime, optimizerEstimatedCost, optimizerEstimatedRowCount, resultDescription, rowsFiltered, rowsSeen, startExecutionTime, subqueryTrackingArray
 
Fields inherited from interface org.apache.derby.iapi.sql.ResultSet
CURRENT_RESULTSET_ONLY, ENTIRE_RESULTSET_TREE, ISAFTERLAST, ISBEFOREFIRST, ISFIRST, ISLAST
 
Fields inherited from interface org.apache.derby.iapi.sql.execute.NoPutResultSet
ABSOLUTE, FIRST, LAST, NEXT, PREVIOUS, RELATIVE
 
Constructor Summary
NestedLoopLeftOuterJoinResultSet(NoPutResultSet leftResultSet, int leftNumCols, NoPutResultSet rightResultSet, int rightNumCols, Activation activation, GeneratedMethod restriction, int resultSetNumber, GeneratedMethod emptyRowFun, boolean wasRightOuterJoin, boolean oneRowRightSide, boolean notExistsRightSide, double optimizerEstimatedRowCount, double optimizerEstimatedCost, java.lang.String userSuppliedOptimizerOverrides)
           
 
Method Summary
(package private)  void clearScanState()
          Clear any private state that changes during scans.
protected  void getMergedRow(ExecRow leftRow, ExecRow rightRow)
           
 ExecRow getNextRowCore()
          Return the requested values computed from the next row (if any) for which the restriction evaluates to true.
 
Methods inherited from class org.apache.derby.impl.sql.execute.NestedLoopJoinResultSet
close, getTimeSpent
 
Methods inherited from class org.apache.derby.impl.sql.execute.JoinResultSet
closeRight, finish, getCurrentRow, getRowLocation, openCore, openRight, reopenCore
 
Methods inherited from class org.apache.derby.impl.sql.execute.NoPutResultSetImpl
clearCurrentRow, clearOrderableCache, closeRowSource, getCursorName, getNextRowFromRowSource, getResultDescription, getValidColumns, isForUpdate, markRowAsDeleted, needsRowLocation, needsToClone, positionScanAtRowLocation, printQualifiers, resultSetNumber, rowLocation, setCurrentRow, setNeedsRowLocation, setTargetResultSet, skipRow, skipScan, updateRow
 
Methods inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
addWarning, attachStatementContext, checkCancellationFlag, checkRowPosition, cleanUp, dumpTimeStats, finishAndRTS, getAbsoluteRow, getActivation, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCompactRow, getCurrentTimeMillis, getElapsedMillis, getEndExecutionTimestamp, getEstimatedRowCount, getExecuteTime, getExecutionFactory, getFirstRow, getLanguageConnectionContext, getLastRow, getNextRow, getPointOfAttachment, getPreviousRow, getRelativeRow, getRowNumber, getScanIsolationLevel, getSubqueryTrackingArray, getTransactionController, getWarnings, isClosed, markAsTopResultSet, modifiedRowCount, open, recordConstructorTime, requiresRelocking, returnsRows, setAfterLastRow, setBeforeFirstRow, setCompactRow, setCompatRow
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.derby.iapi.sql.ResultSet
checkRowPosition, cleanUp, clearCurrentRow, getAbsoluteRow, getActivation, getAutoGeneratedKeysResultset, getBeginExecutionTimestamp, getCursorName, getEndExecutionTimestamp, getExecuteTime, getFirstRow, getLastRow, getNextRow, getPreviousRow, getRelativeRow, getResultDescription, getRowNumber, getSubqueryTrackingArray, getWarnings, isClosed, modifiedRowCount, open, returnsRows, setAfterLastRow, setBeforeFirstRow
 

Field Detail

emptyRowFun

protected GeneratedMethod emptyRowFun

wasRightOuterJoin

private boolean wasRightOuterJoin

matchRight

private boolean matchRight

returnedEmptyRight

private boolean returnedEmptyRight

rightEmptyRow

private ExecRow rightEmptyRow

emptyRightRowsReturned

public int emptyRightRowsReturned
Constructor Detail

NestedLoopLeftOuterJoinResultSet

NestedLoopLeftOuterJoinResultSet(NoPutResultSet leftResultSet,
                                 int leftNumCols,
                                 NoPutResultSet rightResultSet,
                                 int rightNumCols,
                                 Activation activation,
                                 GeneratedMethod restriction,
                                 int resultSetNumber,
                                 GeneratedMethod emptyRowFun,
                                 boolean wasRightOuterJoin,
                                 boolean oneRowRightSide,
                                 boolean notExistsRightSide,
                                 double optimizerEstimatedRowCount,
                                 double optimizerEstimatedCost,
                                 java.lang.String userSuppliedOptimizerOverrides)
Method Detail

getNextRowCore

public ExecRow getNextRowCore()
                       throws StandardException
Return the requested values computed from the next row (if any) for which the restriction evaluates to true.

restriction parameters are evaluated for each row.

Specified by:
getNextRowCore in interface NoPutResultSet
Overrides:
getNextRowCore in class NestedLoopJoinResultSet
Returns:
the next row in the join result
Throws:
StandardException - Thrown on error
StandardException - ResultSetNotOpen thrown if closed
See Also:
NoPutResultSet.getNextRowCore()

getMergedRow

protected void getMergedRow(ExecRow leftRow,
                            ExecRow rightRow)
                     throws StandardException
Throws:
StandardException

clearScanState

void clearScanState()
Clear any private state that changes during scans. This includes things like the last row seen, etc. THis does not include immutable things that are typically set up in the constructor.

This method is called on open()/close() and reopen()

WARNING: this should be implemented in every sub class and it should always call super.clearScanState().

Overrides:
clearScanState in class NestedLoopJoinResultSet

Built on Thu 2010-12-23 20:49:13+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.