AERelationalExpr Class Reference

An abstract base class for all relational expressions. More...

Inherits Simba::SQLEngine::AEQueryOperation.

Inherited by AEBinaryExprT< AERelationalExpr, AERelationalExpr >, AEUnaryExprT< AERelationalExpr, AERelationalExpr >, AEUnaryExprT< AERelationalExpr, AEValueList >, AEInsertionTable, AENamedRelationalExpr, AENativeSyntax, and AEProcedure.

List of all members.

Public Member Functions

virtual void AddReferencedColumn (AEColumn *in_columnRef)
 Adds the given AEColumn to the list of referenced columns for this relational expression.
bool CanUseCache () const
 Determine if this expression can use a cache.
virtual AERelationalExprClone () const =0
 Creates a clone of this node object.
virtual void EvaluateUseCaching ()
 Evaluate if this node, or children nodes, should use caching.
virtual bool FindQColumn (const AEQColumnName &in_qColName, bool in_unquotedCaseSensitive, bool in_quotedCaseSensitive, AEColumnInfo &out_colInfo)
 Find the qualified column. Not all relational operations support this functionality.
virtual const AEAggregateGetAsAggregate () const
 Gets the object as an AEAggregate object.
virtual AEAggregateGetAsAggregate ()
 Gets the object as an AEAggregate object.
virtual const
AEBinaryRelationalExpr
GetAsBinaryRelationalExpr () const
 Retrieves the object as an AEBinaryRelationalExpr object.
virtual AEBinaryRelationalExprGetAsBinaryRelationalExpr ()
 Retrieves the object as an AEBinaryRelationalExpr object.
virtual const AECrossJoinGetAsCrossJoin () const
 Gets the object as an AECrossJoin object.
virtual AECrossJoinGetAsCrossJoin ()
 Gets the object as an AECrossJoin object.
virtual const AEDistinctGetAsDistinct () const
 Gets the object as an AEDistinct object.
virtual AEDistinctGetAsDistinct ()
 Gets the object as an AEDistinct object.
virtual const AEDummyTableGetAsDummyTable () const
 Retrieves the object as an AEDummyTable object.
virtual AEDummyTableGetAsDummyTable ()
 Retrieves the object as an AEDummyTable object.
virtual const AEExceptGetAsExcept () const
 Gets the object as an AEExcept object.
virtual AEExceptGetAsExcept ()
 Gets the object as an AEExcept object.
virtual const AEInsertionTableGetAsInsertionTable () const
 Gets the object as an AEInsertionTable object.
virtual AEInsertionTableGetAsInsertionTable ()
 Gets the object as an AEInsertionTable object.
virtual const AEIntersectGetAsIntersect () const
 Gets the object as an AEIntersect object.
virtual AEIntersectGetAsIntersect ()
 Gets the object as an AEIntersect object.
virtual const AEJoinGetAsJoin () const
 Gets the object as an AEJoin object.
virtual AEJoinGetAsJoin ()
 Gets the object as an AEJoin object.
virtual const
AENamedRelationalExpr
GetAsNamedRelationalExpr () const
 Gets the relational expression as an AENamedRelationalExpr object.
virtual AENamedRelationalExprGetAsNamedRelationalExpr ()
 Gets the relational expression as an AENamedRelationalExpr object.
virtual const AEProcedureGetAsProcedure () const
 Gets the object as an AEProcedure object.
virtual AEProcedureGetAsProcedure ()
 Gets the object as an AEProcedure object.
virtual const AEProjectGetAsProject () const
 Gets the object as an AEProject object.
virtual AEProjectGetAsProject ()
 Gets the object as an AEProject object.
virtual const AERelationalExprGetAsRelationalExpr () const
 Retrieves the object as an AERelationalExpr object.
virtual AERelationalExprGetAsRelationalExpr ()
 Retrieves the object as an AERelationalExpr object.
virtual const AESelectGetAsSelect () const
 Gets the object as an AESelect object.
virtual AESelectGetAsSelect ()
 Gets the object as an AESelect object.
virtual const AESubQueryGetAsSubQuery () const
 Gets the object as an AESubQuery object.
virtual AESubQueryGetAsSubQuery ()
 Gets the object as an AESubQuery object.
virtual const AETableGetAsTable () const
 Gets the object as an AETable object.
virtual AETableGetAsTable ()
 Gets the object as an AETable object.
virtual const AETableConstructorGetAsTableConstructor () const
 Gets the object as an AETableConstructor object.
virtual AETableConstructorGetAsTableConstructor ()
 Gets the object as an AETableConstructor object.
virtual const AETopGetAsTop () const
 Gets the object as an AETop object.
virtual AETopGetAsTop ()
 Gets the object as an AETop object.
virtual const
AEUnaryRelationalExpr
GetAsUnaryRelationalExpr () const
 Retrieves the object as an AEUnaryRelationalExpr object.
virtual AEUnaryRelationalExprGetAsUnaryRelationalExpr ()
 Retrieves the object as an AEUnaryRelationalExpr object.
virtual const AEUnionGetAsUnion () const
 Gets the object as an AEUnion object.
virtual AEUnionGetAsUnion ()
 Gets the object as an AEUnion object.
virtual const
Simba::SQLEngine::IIndexMetadataList
GetIndexes () const
 Get the indexes for this relational expression.
ETRelationalExprGetMaterializedExpr () const
 Gets the materialized relational expression for this logical relational expression.
const AERelationalExprGetOrigin () const
 Get a reference to the object from which this object is created.
virtual const ReferencedColumnsGetReferencedColumns () const
 Retrieve the referenced columns for this relational expression.
virtual bool IsBinaryRelationalExpr () const
 Tests whether this is an AEBinaryRelationalExpr object.
virtual bool IsNamed () const
 Indicates whether the relational expression has a name.
virtual bool IsOuterJoinExpr () const
 Indicates if the relational expression is involved in an outer join.
virtual bool IsRelationalExpr () const
 Tests whether this is an AERelationalExpr object.
virtual bool IsUnaryRelationalExpr () const
 Tests whether this is an AEUnaryRelationalExpr object.
virtual void RemoveReferencedColumn (AEColumn *in_columnRef)
 Removes the given AEColumn to the list of referenced columns for this relational expression.
void SetCanUseCache (bool in_canUseCache=true)
 Indicates if the relational expression can use a cache.
virtual void SetDataNeeded (simba_uint16 in_column, bool in_isNeeded)=0
 Indicates whether RetrieveData(...) might be called on the given column. This applies to any subsequent Move(...) calls.
virtual void SetIsOuterJoinExpr (bool in_isOuterJoinExpr)
 Sets if the relational expression is involved in an outer join.
void SetMaterializedExpr (ETRelationalExpr *in_materializedExpr)
 Sets the materialized (physical) relational expression for this logical relational expression.
virtual void UpdateReferencedColumns (ETRelationalExpr *in_node)
 Updates the back-references from the AEColumns, that reference this relational expression.
virtual ~AERelationalExpr ()
 Destructor.

Protected Member Functions

 AERelationalExpr (const AERelationalExpr &in_other)
 Copy constructor.
 AERelationalExpr ()
 Default constructor.

Protected Attributes

bool m_canUseCache
Simba::SQLEngine::DSIExtIndexMetadataList m_indexes

Detailed Description

An abstract base class for all relational expressions.

In the standard relational algebra, there are six fundamental operations: selection, projection, Cartesian product (cross join), union, and difference. There are also several important derived operations such as intersection and join. All these standard relational operations are defined on sets. That is, no duplications are allowed.

SQL language is a superset of the standard relational algebra invented based on the multiset (often known as bag) theory. A multiset allows elements to have duplications. In order to allow an arbitrary SQL query to be expressed in a tree of relation operations, we have extended the set of relational operations to include distinct, group, and etc.

A relational expression can only have relational expressions as its child nodes. For example, a PROJECT can operates on a SELECT, or UNION. A PROJECT, however, cannot operate on SORT.

The list of end nodes which subclass AERelationalExpr is:


Constructor & Destructor Documentation

virtual ~AERelationalExpr (  )  [virtual]

Destructor.

AERelationalExpr (  )  [protected]

Default constructor.

AERelationalExpr ( const AERelationalExpr in_other  )  [protected]

Copy constructor.

To support "cloning". See Clone() method.

Parameters:
in_other The other node to create copy from.

Member Function Documentation

virtual void AddReferencedColumn ( AEColumn in_columnRef  )  [virtual]

Adds the given AEColumn to the list of referenced columns for this relational expression.

Parameters:
in_columnRef The column reference to add to the list of referenced columns for this relational expression.
bool CanUseCache (  )  const

Determine if this expression can use a cache.

Returns:
True if a cache can be used; false otherwise.
virtual AERelationalExpr* Clone (  )  const [pure virtual]
virtual void EvaluateUseCaching (  )  [virtual]

Evaluate if this node, or children nodes, should use caching.

Reimplemented in AECrossJoin, AEJoin, and AESubQuery.

virtual bool FindQColumn ( const AEQColumnName in_qColName,
bool  in_unquotedCaseSensitive,
bool  in_quotedCaseSensitive,
AEColumnInfo out_colInfo 
) [virtual]

Find the qualified column. Not all relational operations support this functionality.

The known supporters are AECrossJoin, AEJoin and AENamedRelationalExpr.

This default implementation alway throws SEInvalidOperationException.

Parameters:
in_qColName The qualified column name to find.
in_unquotedCaseSensitive True if unquoted column names are case sensitive; false otherwise.
in_quotedCaseSensitive Whether quoted columns should be case sensitive
out_colInfo The output column info if the column if found, untouched otherwise. Specifically, m_namedRelExpr and m_columnNum shall be set if found. m_qsResolved and m_isOuterRef shall _NOT_ be set.
Exceptions:
SEInvalidArgumentException when column name in in_qColName is empty.
SEInvalidOperationException if the operation does not apply.
Returns:
true if the qualified column is found, false otherwise.

Reimplemented in AECrossJoin, AEJoin, and AENamedRelationalExpr.

virtual const AEAggregate* GetAsAggregate (  )  const [virtual]

Gets the object as an AEAggregate object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEAggregate object. (NOT OWN)

Reimplemented in AEAggregate.

virtual AEAggregate* GetAsAggregate (  )  [virtual]

Gets the object as an AEAggregate object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEAggregate object. (NOT OWN)

Reimplemented in AEAggregate.

virtual const AEBinaryRelationalExpr* GetAsBinaryRelationalExpr (  )  const [virtual]

Retrieves the object as an AEBinaryRelationalExpr object.

This default implementation always throw an exception. The appropriate sub-class must override this method along with IsBinaryRelationalExpr().

Exceptions:
SEInvalidOperationException always
Returns:
This object as an AEBinaryRelationalExpr object. (NOT OWN)

Reimplemented in AEBinaryRelationalExpr.

virtual AEBinaryRelationalExpr* GetAsBinaryRelationalExpr (  )  [virtual]

Retrieves the object as an AEBinaryRelationalExpr object.

This default implementation always throw an exception. The appropriate sub-class must override this method along with IsBinaryRelationalExpr().

Exceptions:
SEInvalidOperationException always
Returns:
This object as an AEBinaryRelationalExpr object. (NOT OWN)

Reimplemented in AEBinaryRelationalExpr.

virtual const AECrossJoin* GetAsCrossJoin (  )  const [virtual]

Gets the object as an AECrossJoin object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AECrossJoin object. (NOT OWN)

Reimplemented in AECrossJoin.

virtual AECrossJoin* GetAsCrossJoin (  )  [virtual]

Gets the object as an AECrossJoin object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AECrossJoin object. (NOT OWN)

Reimplemented in AECrossJoin.

virtual const AEDistinct* GetAsDistinct (  )  const [virtual]

Gets the object as an AEDistinct object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEDistinct object. (NOT OWN)

Reimplemented in AEDistinct.

virtual AEDistinct* GetAsDistinct (  )  [virtual]

Gets the object as an AEDistinct object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEDistinct object. (NOT OWN)

Reimplemented in AEDistinct.

virtual const AEDummyTable* GetAsDummyTable (  )  const [virtual]

Retrieves the object as an AEDummyTable object.

Overrides the method defined in AERelationalExpr.

Returns:
this object always. (NOT OWN)

Reimplemented in AEDummyTable.

virtual AEDummyTable* GetAsDummyTable (  )  [virtual]

Retrieves the object as an AEDummyTable object.

Overrides the method defined in AERelationalExpr.

Returns:
this object always. (NOT OWN)

Reimplemented in AEDummyTable.

virtual const AEExcept* GetAsExcept (  )  const [virtual]

Gets the object as an AEExcept object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEExcept object. (NOT OWN)

Reimplemented in AEExcept.

virtual AEExcept* GetAsExcept (  )  [virtual]

Gets the object as an AEExcept object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEExcept object. (NOT OWN)

Reimplemented in AEExcept.

virtual const AEInsertionTable* GetAsInsertionTable (  )  const [virtual]

Gets the object as an AEInsertionTable object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEInsertionTable object. (NOT OWN)

Reimplemented in AEInsertionTable.

virtual AEInsertionTable* GetAsInsertionTable (  )  [virtual]

Gets the object as an AEInsertionTable object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEInsertionTable object. (NOT OWN)

Reimplemented in AEInsertionTable.

virtual const AEIntersect* GetAsIntersect (  )  const [virtual]

Gets the object as an AEIntersect object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEIntersect object. (NOT OWN)

Reimplemented in AEIntersect.

virtual AEIntersect* GetAsIntersect (  )  [virtual]

Gets the object as an AEIntersect object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEIntersect object. (NOT OWN)

Reimplemented in AEIntersect.

virtual const AEJoin* GetAsJoin (  )  const [virtual]

Gets the object as an AEJoin object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEJoin object. (NOT OWN)

Reimplemented in AEJoin.

virtual AEJoin* GetAsJoin (  )  [virtual]

Gets the object as an AEJoin object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEJoin object. (NOT OWN)

Reimplemented in AEJoin.

virtual const AENamedRelationalExpr* GetAsNamedRelationalExpr (  )  const [virtual]

Gets the relational expression as an AENamedRelationalExpr object.

This default implementation always throws an SEInvalidOperationException. Named Relational expression will override this.

If a subclass overrides this method, it should also override IsNamed().

Returns:
This object as an AENamedRelationalExpr object. (NOT OWN)

Reimplemented in AENamedRelationalExpr.

virtual AENamedRelationalExpr* GetAsNamedRelationalExpr (  )  [virtual]

Gets the relational expression as an AENamedRelationalExpr object.

This default implementation always throws an SEInvalidOperationException. Named Relational expression will override this.

If a subclass overrides this method, it should also override IsNamed().

Returns:
This object as an AENamedRelationalExpr object. (NOT OWN)

Reimplemented in AENamedRelationalExpr.

virtual const AEProcedure* GetAsProcedure (  )  const [virtual]

Gets the object as an AEProcedure object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEProcedure object. (NOT OWN)

Reimplemented in AEProcedure.

virtual AEProcedure* GetAsProcedure (  )  [virtual]

Gets the object as an AEProcedure object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEProcedure object. (NOT OWN)

Reimplemented in AEProcedure.

virtual const AEProject* GetAsProject (  )  const [virtual]

Gets the object as an AEProject object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEProject object. (NOT OWN)

Reimplemented in AEProject.

virtual AEProject* GetAsProject (  )  [virtual]

Gets the object as an AEProject object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEProject object. (NOT OWN)

Reimplemented in AEProject.

virtual const AERelationalExpr* GetAsRelationalExpr (  )  const [virtual]

Retrieves the object as an AERelationalExpr object.

Overrides the method defined in AENode. Sub-classes must _NOT_ override this method again.

Returns:
This object always. (NOT OWN)

Reimplemented from AENode.

virtual AERelationalExpr* GetAsRelationalExpr (  )  [virtual]

Retrieves the object as an AERelationalExpr object.

Overrides the method defined in AENode. Sub-classes must _NOT_ override this method again.

Returns:
This object always. (NOT OWN)

Reimplemented from AENode.

virtual const AESelect* GetAsSelect (  )  const [virtual]

Gets the object as an AESelect object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AESelect object. (NOT OWN)

Reimplemented in AESelect.

virtual AESelect* GetAsSelect (  )  [virtual]

Gets the object as an AESelect object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AESelect object. (NOT OWN)

Reimplemented in AESelect.

virtual const AESubQuery* GetAsSubQuery (  )  const [virtual]

Gets the object as an AESubQuery object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AESubQuery object. (NOT OWN)

Reimplemented in AESubQuery.

virtual AESubQuery* GetAsSubQuery (  )  [virtual]

Gets the object as an AESubQuery object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AESubQuery object. (NOT OWN)

Reimplemented in AESubQuery.

virtual const AETable* GetAsTable (  )  const [virtual]

Gets the object as an AETable object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AETable object. (NOT OWN)

Reimplemented in AETable.

virtual AETable* GetAsTable (  )  [virtual]

Gets the object as an AETable object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AETable object. (NOT OWN)

Reimplemented in AETable.

virtual const AETableConstructor* GetAsTableConstructor (  )  const [virtual]

Gets the object as an AETableConstructor object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AETableConstructor object. (NOT OWN)

Reimplemented in AETableConstructor.

virtual AETableConstructor* GetAsTableConstructor (  )  [virtual]

Gets the object as an AETableConstructor object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AETableConstructor object. (NOT OWN)

Reimplemented in AETableConstructor.

virtual const AETop* GetAsTop (  )  const [virtual]

Gets the object as an AETop object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AETop object. (NOT OWN)

Reimplemented in AETop.

virtual AETop* GetAsTop (  )  [virtual]

Gets the object as an AETop object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AETop object. (NOT OWN)

Reimplemented in AETop.

virtual const AEUnaryRelationalExpr* GetAsUnaryRelationalExpr (  )  const [virtual]

Retrieves the object as an AEUnaryRelationalExpr object.

This default implementation always throw an exception. The appropriate sub-class must override this method along with IsUnaryRelationalExpr().

Exceptions:
SEInvalidOperationException always
Returns:
This object as an AEUnaryRelationalExpr object. (NOT OWN)

Reimplemented in AEUnaryRelationalExpr.

virtual AEUnaryRelationalExpr* GetAsUnaryRelationalExpr (  )  [virtual]

Retrieves the object as an AEUnaryRelationalExpr object.

This default implementation always throw an exception. The appropriate sub-class must override this method along with IsUnaryRelationalExpr().

Exceptions:
SEInvalidOperationException always
Returns:
This object as an AEUnaryRelationalExpr object. (NOT OWN)

Reimplemented in AEUnaryRelationalExpr.

virtual const AEUnion* GetAsUnion (  )  const [virtual]

Gets the object as an AEUnion object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEUnion object. (NOT OWN)

Reimplemented in AEUnion.

virtual AEUnion* GetAsUnion (  )  [virtual]

Gets the object as an AEUnion object.

This default implementation always throws an exception. The appropriate sub-class must override this method.

Exceptions:
SEInvalidOperationException if this object is not of expected type.
Returns:
this object as an AEUnion object. (NOT OWN)

Reimplemented in AEUnion.

virtual const Simba::SQLEngine::IIndexMetadataList& GetIndexes (  )  const [virtual]

Get the indexes for this relational expression.

Return an empty collection of indexes if indexes are not supported.

Returns:
The indexes for this result set.

Reimplemented in AEDummyTable, AEProject, AESelect, and AETable.

ETRelationalExpr* GetMaterializedExpr (  )  const

Gets the materialized relational expression for this logical relational expression.

SetMaterializedExpr() has to be called before this method can be called. otherwise, an exception will be thrown.

NOTE: This method is designed only to be used during the materialization process.

Exceptions:
SEInvalidOperationException when no materialized expression has been set
Returns:
The cached materialized relational expression for this logical expression.
const AERelationalExpr* GetOrigin (  )  const

Get a reference to the object from which this object is created.

This information is only available when this object is created from another relational expression object. That is, the copy constructor is invoked.

Returns:
A reference to the object from which this object is created, NULL otherwise.
virtual const ReferencedColumns& GetReferencedColumns (  )  const [virtual]

Retrieve the referenced columns for this relational expression.

Returns:
The referenced columns for this relational expression.
virtual bool IsBinaryRelationalExpr (  )  const [virtual]

Tests whether this is an AEBinaryRelationalExpr object.

This default implementation always returns false. The appropriate sub-class must override it.

Returns:
True if this object is an AEBinaryRelationalExpr object, false otherwise.

Reimplemented in AEBinaryRelationalExpr.

virtual bool IsNamed (  )  const [virtual]

Indicates whether the relational expression has a name.

This default implementation always return false. If a subclass is override this method, it should also override GetAsNamedRelationalExpr() to be consistent.

Returns:
True if this is an AENamedRelationalExpr node, false otherwise.

Reimplemented in AENamedRelationalExpr.

virtual bool IsOuterJoinExpr (  )  const [virtual]

Indicates if the relational expression is involved in an outer join.

Returns:
True if the relational expression is involved in an outer join, false otherwise.
virtual bool IsRelationalExpr (  )  const [virtual]

Tests whether this is an AERelationalExpr object.

Overrides the method defined in AENode. Sub-classes must _NOT_ override this method again.

Returns:
True always since this is a relational expression node.

Reimplemented from AENode.

virtual bool IsUnaryRelationalExpr (  )  const [virtual]

Tests whether this is an AEUnaryRelationalExpr object.

This default implementation always returns false. The appropriate sub-class must override it.

Returns:
True if this object is an AEUnaryRelationalExpr object, false otherwise.

Reimplemented in AEUnaryRelationalExpr.

virtual void RemoveReferencedColumn ( AEColumn in_columnRef  )  [virtual]

Removes the given AEColumn to the list of referenced columns for this relational expression.

Parameters:
in_columnRef The column reference to add to the list of referenced columns for this relational expression.
void SetCanUseCache ( bool  in_canUseCache = true  ) 

Indicates if the relational expression can use a cache.

Note that even if this has been set to true, it does not necessarily mean that the relational expression will use a cache, as other expressions higher in the tree may also use caches in which case they will disable use of caches at lower levels.

There are also instances where the knowledge of if a cache should be used is only known when materializing the ETree, such as if indexes are used. This may mean caches are created (but no memory is allocated) during materialization.

virtual void SetDataNeeded ( simba_uint16  in_column,
bool  in_isNeeded 
) [pure virtual]

Indicates whether RetrieveData(...) might be called on the given column. This applies to any subsequent Move(...) calls.

Parameters:
in_column A zero-based column index.
in_isNeeded Indicates whether data may be retrieved from the given column by the ODBC layer or not.
Exceptions:
SEInvalidArgumentException if in_column is invalid.

Implemented in AECrossJoin, AEDummyTable, AEExcept, AEInsertionTable, AEJoin, AENativeSyntax, AEProcedure, AESubQuery, AETable, AETableConstructor, AEUnaryRelationalExpr, and AEUnion.

virtual void SetIsOuterJoinExpr ( bool  in_isOuterJoinExpr  )  [virtual]

Sets if the relational expression is involved in an outer join.

Parameters:
in_isOuterJoinExpr True if the relational expression is involved in an outer join; false otherwise.
void SetMaterializedExpr ( ETRelationalExpr in_materializedExpr  ) 

Sets the materialized (physical) relational expression for this logical relational expression.

NOTE: This method is designed only to be used during the materialization process.

Parameters:
in_materializedExpr The materialized relational expression for this logical expression.
Exceptions:
SEInvalidOperationException when a materialized expression is already set.
virtual void UpdateReferencedColumns ( ETRelationalExpr in_node  )  [virtual]

Updates the back-references from the AEColumns, that reference this relational expression.

This function is called if the ETRelationalExpr that is referenced by AEColumns is modified. For example, when an ETRelationalCache node is placed on top of this AERelationalExpr node, the AEColumns should reference the ETRelationalCache node instead.

Parameters:
in_node The new ETRelationalExpr that the AEColumns that currently reference this node should now reference. (NOT OWN)

Member Data Documentation

bool m_canUseCache [protected]

The documentation for this class was generated from the following file:

Generated on Wed May 17 14:21:17 2017 for SimbaEngine 10.1.3.1011 by simba