com.akiban.sql.parser
Class SetOperatorNode

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.SetOperatorNode
All Implemented Interfaces:
Visitable
Direct Known Subclasses:
IntersectOrExceptNode, UnionNode

public abstract class SetOperatorNode
extends FromTable

A SetOperatorNode represents a UNION, INTERSECT, or EXCEPT in a DML statement. Binding and optimization preprocessing is the same for all of these operations, so they share bind methods in this abstract class. The class contains a boolean telling whether the operation should eliminate duplicate rows.


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
SetOperatorNode()
           
 
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 all, Object tableProperties)
          Initializer for a SetOperatorNode.
 boolean isAll()
           
 void printSubNodes(int depth)
          Prints the sub-nodes of this object.
 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.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, 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

SetOperatorNode

public SetOperatorNode()
Method Detail

init

public void init(Object leftResult,
                 Object rightResult,
                 Object all,
                 Object tableProperties)
          throws StandardException
Initializer for a SetOperatorNode.

Overrides:
init in class QueryTreeNode
Parameters:
leftResult - The ResultSetNode on the left side of this union
rightResult - The ResultSetNode on the right side of this union
all - Whether or not this is an ALL.
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.

Throws:
StandardException

toString

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

Returns:
This object as a String

printSubNodes

public void printSubNodes(int depth)
Prints the sub-nodes of this object. See QueryTreeNode.java for how tree printing is supposed to work.

Parameters:
depth - The depth of this node in the tree

isAll

public boolean isAll()

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.