com.akiban.sql.parser
Class HalfOuterJoinNode

java.lang.Object
  extended by com.akiban.sql.parser.QueryTreeNode
      extended by com.akiban.sql.parser.ResultSetNode
          extended by com.akiban.sql.parser.FromTable
              extended by com.akiban.sql.parser.JoinNode
                  extended by com.akiban.sql.parser.HalfOuterJoinNode
All Implemented Interfaces:
Visitable

public class HalfOuterJoinNode
extends JoinNode

An HalfOuterJoinNode represents a left or a right outer join result set. Right outer joins are always transformed into left outer joins during preprocessing for simplicity.


Nested Class Summary
 
Nested classes/interfaces inherited from class com.akiban.sql.parser.JoinNode
JoinNode.JoinType
 
Field Summary
protected  ResultSetNode leftResultSet
           
protected  ResultSetNode rightResultSet
           
 
Fields inherited from class com.akiban.sql.parser.FromTable
correlationName, origTableName, tableProperties
 
Fields inherited from class com.akiban.sql.parser.QueryTreeNode
AUTOINCREMENT_CREATE_MODIFY, AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX
 
Constructor Summary
HalfOuterJoinNode()
           
 
Method Summary
 void copyFrom(QueryTreeNode node)
          Fill this node with a deep copy of the given node.
 String getExposedName()
          Return the exposed name for this table, which is the name that can be used to refer to this table in the rest of the query.
 ResultSetNode getLeftmostResultSet()
           
 ResultSetNode getLeftResultSet()
          Get the leftResultSet from this node.
 ResultSetNode getRightResultSet()
          Get the rightResultSet from this node.
 void init(Object leftResultSet, Object rightResultSet, Object tableProperties)
          Initializer for a TableOperatorNode.
 void init(Object leftResult, Object rightResult, Object onClause, Object usingClause, Object rightOuterJoin, Object tableProperties)
          Initializer for a HalfOuterJoinNode.
 boolean isRightOuterJoin()
           
 void setLeftmostResultSet(ResultSetNode newLeftResultSet)
           
 void setLeftResultSet(ResultSetNode leftResultSet)
           
 void setNestedInParens(boolean nestedInParens)
          Mark whether or not this node is nested in parens.
 void setRightResultSet(ResultSetNode rightResultSet)
           
 String toString()
          Convert this object to a String.
 
Methods inherited from class com.akiban.sql.parser.JoinNode
getJoinClause, getLogicalLeftResultSet, getLogicalRightResultSet, getUsingClause, init, isNaturalJoin, joinTypeToString, printSubNodes, setJoinClause, setUsingClause
 
Methods inherited from class com.akiban.sql.parser.FromTable
getCorrelationName, getOrigTableName, getTableName, init, setCorrelationName, setOrigTableName
 
Methods inherited from class com.akiban.sql.parser.ResultSetNode
getResultColumns, setInsertSource, setResultColumns
 
Methods inherited from class com.akiban.sql.parser.QueryTreeNode
accept, convertDefaultNode, debugFlush, debugPrint, formatNodeString, getBeginOffset, getDebugOutput, getEndOffset, getNodeFactory, getNodeType, getNullNode, getParserContext, getStatementType, getUserData, init, init, init, init, init, init, init, init, init, init, isInstanceOf, makeTableName, makeTableName, nodeHeader, printLabel, setBeginOffset, setDebugOutput, setEndOffset, setNodeType, setParserContext, setUserData, stackPrint, treePrint, treePrint, treePrint
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

leftResultSet

protected ResultSetNode leftResultSet

rightResultSet

protected ResultSetNode rightResultSet
Constructor Detail

HalfOuterJoinNode

public HalfOuterJoinNode()
Method Detail

init

public void init(Object leftResult,
                 Object rightResult,
                 Object onClause,
                 Object usingClause,
                 Object rightOuterJoin,
                 Object tableProperties)
          throws StandardException
Initializer for a HalfOuterJoinNode.

Overrides:
init in class QueryTreeNode
Parameters:
leftResult - The ResultSetNode on the left side of this join
rightResult - The ResultSetNode on the right side of this join
onClause - The ON clause
usingClause - The USING clause
rightOuterJoin - Whether or not this node represents a user specified right outer join
tableProperties - Properties list associated with the table
Throws:
StandardException - Thrown on error

copyFrom

public void copyFrom(QueryTreeNode node)
              throws StandardException
Fill this node with a deep copy of the given node.

Overrides:
copyFrom in class JoinNode
Throws:
StandardException

isRightOuterJoin

public boolean isRightOuterJoin()

toString

public String toString()
Convert this object to a String. See comments in QueryTreeNode.java for how this should be done for tree printing.

Overrides:
toString in class JoinNode
Returns:
This object as a String

init

public void init(Object leftResultSet,
                 Object rightResultSet,
                 Object tableProperties)
          throws StandardException
Initializer for a TableOperatorNode.

Overrides:
init in class QueryTreeNode
Parameters:
leftResultSet - The ResultSetNode on the left side of this node
rightResultSet - The ResultSetNode on the right side of this node
tableProperties - Properties list associated with the table
Throws:
StandardException - Thrown on error

getLeftResultSet

public ResultSetNode getLeftResultSet()
Get the leftResultSet from this node.

Returns:
ResultSetNode The leftResultSet from this node.

getRightResultSet

public ResultSetNode getRightResultSet()
Get the rightResultSet from this node.

Returns:
ResultSetNode The rightResultSet from this node.

setLeftResultSet

public void setLeftResultSet(ResultSetNode leftResultSet)

setRightResultSet

public void setRightResultSet(ResultSetNode rightResultSet)

getLeftmostResultSet

public ResultSetNode getLeftmostResultSet()

setLeftmostResultSet

public void setLeftmostResultSet(ResultSetNode newLeftResultSet)

getExposedName

public String getExposedName()
Return the exposed name for this table, which is the name that can be used to refer to this table in the rest of the query.

Overrides:
getExposedName in class FromTable
Returns:
The exposed name for this table.

setNestedInParens

public void setNestedInParens(boolean nestedInParens)
Mark whether or not this node is nested in parens. (Useful to parser since some trees get created left deep and others right deep.) The resulting state of this cal was never used so its field was removed to save runtimespace for this node. Further cleanup can be done including parser changes if this call is really nor required.

Parameters:
nestedInParens - Whether or not this node is nested in parens.


Copyright © 2013 Akiban Technologies, Inc. All rights reserved.