WhereExpression Class Reference

Represents an XQuery where-clause. More...

#include <whereexpression.h>

Inheritance diagram for WhereExpression:

Inheritance graph
[legend]
Collaboration diagram for WhereExpression:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 WhereExpression (CondExpression *_cond, Expression *_exp)
 Constructor.
virtual ~WhereExpression ()
virtual void scopeCheck (vector< unsigned > &def_vars, vector< unsigned > &introduced_vars, vector< unsigned > &violating_vars)
virtual void replaceVarId (unsigned old_id, unsigned new_id)
virtual void mergeSequences ()
virtual void extractFSAMap (FSAMap *fsamap, unsigned parent_var)
virtual void extractParVarMap (ParVarMap *parvarmap)
virtual void extractDependencies (vector< DependencySet * > *depset)
virtual ExpressionplaceSignOffs (vector< SignOffExpression * > &signoffs)
virtual void rewriteWhereExps ()
virtual void rewriteEmptyFuncts ()
virtual void rewriteVarstepCondExps ()
virtual void rewriteAggregateFuncts ()
virtual void rewriteVarsteps ()
virtual void print (OutputStream &dos) const
virtual void init (BufferNode *root)
virtual void eval (OutputStream &eos, Environment *env, unsigned modus)
virtual bool containsDirectOutput ()

Private Attributes

CondExpressioncond
 The entered CondExpression.
Expressionexp
 The entered Expression.
IfExpressionifexp
 The rewritten IfExpression of the entered CondExpression and Expression.


Detailed Description

Represents an XQuery where-clause.

Represents an XQuery where-clause, which takes a CondExpression and a Expression, e.g. where(fn:count($x/bib//book) < 3) return $x/title, as arguments and returns the Expression if the entered CondExpression is true.

Note:
This expression does not exists instead it is rewritten to if-then-else.
Author:
Michael Schmidt

Gunnar Jehl

Version:
2.1
License:
Software License Agreement (BSD License)

Definition at line 53 of file whereexpression.h.


Constructor & Destructor Documentation

WhereExpression::WhereExpression ( CondExpression _cond,
Expression _exp 
)

Constructor.

Constructor - creating object for one CondExpression and one Expression.

Parameters:
[in] _cond Pointer to a CondExpression object.
[in] _exp Pointer to a Expression object.

Definition at line 37 of file whereexpression.cpp.

WhereExpression::~WhereExpression (  )  [virtual]

Destructor.

Definition at line 41 of file whereexpression.cpp.

References ifexp.


Member Function Documentation

bool WhereExpression::containsDirectOutput (  )  [virtual]

Returns if the corresponding expression produces direct output.

Returns if the corresponding expression produces direct output. Direct output is meant that this subexpression produces output such as node constructs or strings.

Return values:
bool true if the corresponding expression produces direct output, false otherwise.

Reimplemented from Expression.

Definition at line 121 of file whereexpression.cpp.

References IfExpression::containsDirectOutput(), and ifexp.

void WhereExpression::eval ( OutputStream eos,
Environment env,
unsigned  modus 
) [virtual]

Evaluates the expression in the given environment.

Evaluates the expression in the given environment. The evaluation takes place in the environment that is passed to this method. In addition, the parameter modus is one of the following: EVAL_QUERY, EVAL_QUERY_SILENT or EVAL_SIGNOFF (see also the corresponding defines for more information). This method implements the XQuery semantics for the standard expression types, but also the GCX specific extensions like signOff-statements.

Parameters:
[in] eos Pointer to a OutputStream object.
[in] env Pointer to an Environment object.
[in] modus The query evaluation mode.
Exceptions:
RuntimeException If illegal evaluation mode.

Reimplemented from Expression.

Definition at line 116 of file whereexpression.cpp.

References IfExpression::eval(), and ifexp.

void WhereExpression::extractDependencies ( vector< DependencySet * > *  depset  )  [virtual]

Extracts the needed dependencies of a query.

Extracts the needed dependencies of a query, which are needed for constructing the ProjectionTree.

Parameters:
[in,out] depset Pointer to a vector containing Pointer to DependencySet objects.
Return values:
void 

Reimplemented from Expression.

Definition at line 69 of file whereexpression.cpp.

References IfExpression::extractDependencies(), and ifexp.

void WhereExpression::extractFSAMap ( FSAMap fsamap,
unsigned  parent_var 
) [virtual]

Extracts the needed first straight ancestor (FSA) variables map.

Extracts the needed first straight ancestor (FSA) variables map, which is needed for correct insertion of SignOffExpression.

Parameters:
[in,out] fsamap Pointer to a FSAMap object.
[in] parent_var Parent variable.
Return values:
void 

Reimplemented from Expression.

Definition at line 61 of file whereexpression.cpp.

References IfExpression::extractFSAMap(), and ifexp.

void WhereExpression::extractParVarMap ( ParVarMap parvarmap  )  [virtual]

Extracts the needed parent variable (ParVar) map.

Extracts the needed parent variable (ParVar) map, which is needed for constructing the VariableTree.

Parameters:
[in,out] parvarmap Pointer to a ParVarMap object.
Return values:
void 

Reimplemented from Expression.

Definition at line 65 of file whereexpression.cpp.

References IfExpression::extractParVarMap(), and ifexp.

void WhereExpression::init ( BufferNode root  )  [virtual]

Initializes the query for evaluation.

Initializes the query for evaluation. Up to now only all required BufferIterator objects are created to speed up query evaluation.

Parameters:
[in] root Pointer to a BufferNode object.
Return values:
void 

Reimplemented from Expression.

Definition at line 112 of file whereexpression.cpp.

References ifexp, and IfExpression::init().

void WhereExpression::mergeSequences (  )  [virtual]

Merges belonging together XQuery sequences into a single sequence.

Merges belonging together XQuery sequences into a single sequence, which is done because of better/nicer output look.

Return values:
void 

Reimplemented from Expression.

Definition at line 57 of file whereexpression.cpp.

References ifexp, and IfExpression::mergeSequences().

Expression * WhereExpression::placeSignOffs ( vector< SignOffExpression * > &  signoffs  )  [virtual]

Places all signOff-statements in the corresponding query.

Places all signOff-statements in the corresponding query, which are needed for active garbage collection by removing Role from the BufferNode.

Parameters:
[in] signoffs Pointer to a vector containing Pointer to SignOffExpression objects.
Return values:
Expression* Pointer to a Expression object (following expression in the corresponding query).

Reimplemented from Expression.

Definition at line 73 of file whereexpression.cpp.

References ifexp, and IfExpression::placeSignOffs().

void WhereExpression::print ( OutputStream dos  )  const [virtual]

Prints the expression.

Prints the expression.

Parameters:
[in] dos Pointer to a OutputStream object.
Return values:
void 

Implements Expression.

Definition at line 102 of file whereexpression.cpp.

References decrementIndents(), ifexp, incrementIndents(), NEWLINE, and writeIndents().

void WhereExpression::replaceVarId ( unsigned  old_id,
unsigned  new_id 
) [virtual]

Replaces all matching variable IDs by a new one.

Replaces all matching variable IDs by a new one, which is needed in case of calling method rewriteVarsteps().

Parameters:
[in] old_id Old variable ID.
[in] new_id New variable ID, which should be introduced instead.
Return values:
void 

Reimplemented from Expression.

Definition at line 52 of file whereexpression.cpp.

References cond, exp, and Expression::replaceVarId().

void WhereExpression::rewriteAggregateFuncts (  )  [virtual]

Rewrites all arguments of all aggregate functions into an equivalent for-clause (with return-clause).

Rewrites all arguments of all aggregate functions into an equivalent for-clause (with return-clause).

Return values:
void 

Reimplemented from Expression.

Definition at line 94 of file whereexpression.cpp.

References ifexp, and IfExpression::rewriteAggregateFuncts().

void WhereExpression::rewriteEmptyFuncts (  )  [virtual]

Rewrites all fn:empty XQuery functions into equivalent fn:not(fn:exists) XQuery functions.

Rewrites all fn:empty XQuery functions into equivalent fn:not(fn:exists) XQuery functions.

Return values:
void 

Reimplemented from Expression.

Definition at line 86 of file whereexpression.cpp.

References ifexp, and IfExpression::rewriteEmptyFuncts().

void WhereExpression::rewriteVarstepCondExps (  )  [virtual]

Rewrites all if($x) if-conditions into equivalent if(fn:not(fn:empty($x))) XQuery expressions.

Rewrites all if($x) if-conditions into equivalent if(fn:not(fn:empty($x))) XQuery expressions.

Return values:
void 

Reimplemented from Expression.

Definition at line 90 of file whereexpression.cpp.

References ifexp, and IfExpression::rewriteVarstepCondExps().

void WhereExpression::rewriteVarsteps (  )  [virtual]

Rewrites all varstep expressions, which produces output into an equivalent for-clause (with return-clause).

Rewrites all varstep expressions, which produces output into an equivalent for-clause (with return-clause). This method belongs to the 'earlier execution of signoff-statements' optimization.

Return values:
void 

Reimplemented from Expression.

Definition at line 98 of file whereexpression.cpp.

References ifexp, and IfExpression::rewriteVarsteps().

void WhereExpression::rewriteWhereExps (  )  [virtual]

Rewrites all where-clauses in the query into equivalent if-expressions.

Rewrites all where-clauses in the query into equivalent if-expressions, i.e. rewrites all WhereExpression into equivalent IfExpression.

Return values:
void 

Reimplemented from Expression.

Definition at line 80 of file whereexpression.cpp.

References cond, exp, ifexp, IfExpression::rewriteWhereExps(), and Expression::setType().

void WhereExpression::scopeCheck ( vector< unsigned > &  def_vars,
vector< unsigned > &  introduced_vars,
vector< unsigned > &  violating_vars 
) [virtual]

Returns if all used variables were previously (through a for-clause) defined or if a variable leaves their defined scope.

Returns if all used variables were previously (through a for-clause) defined or if a variable leaves their defined scope.

Parameters:
[in] def_vars Vector containing all previously defined variables.
[in] introduced_vars Vector containing all up to this expression defined variables.
[in] violating_vars Vector containing all variables which violates the scope condition.
Return values:
void 

Reimplemented from Expression.

Definition at line 45 of file whereexpression.cpp.

References cond, exp, and Expression::scopeCheck().


Member Data Documentation

The entered CondExpression.

The entered CondExpression, which is the first argument of the constructor and defines the condition of the where-clause to be fulfilled.

Definition at line 156 of file whereexpression.h.

Referenced by replaceVarId(), rewriteWhereExps(), and scopeCheck().

The entered Expression.

The entered Expression, which is the second argument of the constructor and defines the return-clause of the where-clause.

Definition at line 163 of file whereexpression.h.

Referenced by replaceVarId(), rewriteWhereExps(), and scopeCheck().

The rewritten IfExpression of the entered CondExpression and Expression.

The rewritten IfExpression of the entered CondExpression and Expression after calling method rewriteWhereExps(). This member variable is NULL on creation of object but should not be NULL anymore after method rewriteWhereExps() has been executed.

Definition at line 172 of file whereexpression.h.

Referenced by containsDirectOutput(), eval(), extractDependencies(), extractFSAMap(), extractParVarMap(), init(), mergeSequences(), placeSignOffs(), print(), rewriteAggregateFuncts(), rewriteEmptyFuncts(), rewriteVarstepCondExps(), rewriteVarsteps(), rewriteWhereExps(), and ~WhereExpression().


Generated on Sun May 24 20:20:31 2009 for G(arbage) C(ollected) X(Query) Engine by  doxygen 1.5.9