Class NestedLoopLeftOuterJoinResultSet
- java.lang.Object
-
- org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
-
- org.apache.derby.impl.sql.execute.NoPutResultSetImpl
-
- org.apache.derby.impl.sql.execute.JoinResultSet
-
- org.apache.derby.impl.sql.execute.NestedLoopJoinResultSet
-
- 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.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
BasicNoPutResultSetImpl.FieldComparator
-
-
Field Summary
Fields Modifier and Type Field Description 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.execute.NoPutResultSet
ABSOLUTE, FIRST, LAST, NEXT, PREVIOUS, RELATIVE, TEMPORARY_RESULT_SET_NUMBER
-
Fields inherited from interface org.apache.derby.iapi.sql.ResultSet
CURRENT_RESULTSET_ONLY, ENTIRE_RESULTSET_TREE, ISAFTERLAST, ISBEFOREFIRST, ISFIRST, ISLAST
-
-
Constructor Summary
Constructors Constructor Description 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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (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, needsRowLocationForDeferredCheckConstraints, needsToClone, offendingRowLocation, positionScanAtRowLocation, printQualifiers, resultSetNumber, rowLocation, setCurrentRow, setHasDeferrableChecks, setNeedsRowLocation, setTargetResultSet, skipRow, skipScan, unpackHashValue, updateRow
-
Methods inherited from class org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl
addWarning, attachStatementContext, checkCancellationFlag, checkRowPosition, childrenToXML, 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, isXplainOnlyMode, markAsTopResultSet, modifiedRowCount, open, recordConstructorTime, requiresRelocking, returnsRows, setAfterLastRow, setBeforeFirstRow, setCompactRow, setCompatRow, toXML, toXML
-
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
addWarning, 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, toXML
-
-
-
-
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 interfaceNoPutResultSet
- Overrides:
getNextRowCore
in classNestedLoopJoinResultSet
- Returns:
- the next row in the join result
- Throws:
StandardException
- Thrown on errorStandardException
- 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 classNestedLoopJoinResultSet
-
-