A class to represent simple range conditions. More...
#include <qExpr.h>
Public Member Functions | |
virtual const char * | colName () const =0 |
Returns the name of the attribute involved. | |
virtual bool | empty () const =0 |
Is the current range empty? | |
virtual void | getTableNames (std::set< std::string > &plist) const |
Identify the data partitions involved in the query expression. More... | |
virtual bool | inRange (double val) const =0 |
Given a value, determine whether it is in the range defined. More... | |
virtual double | leftBound () const =0 |
The lower bound of the range. | |
virtual void | restrictRange (double left, double right)=0 |
Reduce the range to be no more than [left, right]. | |
virtual double | rightBound () const =0 |
The upper bound of the range. | |
Public Member Functions inherited from ibis::qExpr | |
bool | directEval () const |
Can the expression be directly evaluated? | |
virtual qExpr * | dup () const |
!< Reorder the expressions tree. More... | |
void | extractDeprecatedJoins (std::vector< const deprecatedJoin * > &) const |
Extract conjunctive terms of the deprecated joins. | |
qRange * | findRange (const char *vname) |
Find the first range condition involving the named variable. | |
void | getConjunctiveTerms (termTableList &) const |
Extract the top-level conjunctive terms. More... | |
qExpr *& | getLeft () |
Return a pointer to the left child. More... | |
const qExpr * | getLeft () const |
Return a const pointer to the left child. | |
qExpr *& | getRight () |
Return a pointer to the right child. More... | |
const qExpr * | getRight () const |
Return a const pointer to the right child. | |
TYPE | getType () const |
Return the node type. | |
virtual bool | isConstant () const |
Is this expression a constant? A constant remains the same not matter which row it is applied to. More... | |
virtual bool | isSimple () const |
Is the expression simple? A simple expression contains only range conditions connected with logical operators. More... | |
bool | isTerminal () const |
Is this expression a terminal node of an expression tree? | |
virtual uint32_t | nItems () const |
Count the number of items in the query expression. | |
qExpr & | operator= (const qExpr &rhs) |
Assignment operator. | |
virtual void | print (std::ostream &) const |
Print out the node in the string form. More... | |
virtual void | printFull (std::ostream &out) const |
Print out the full expression. More... | |
qExpr () | |
Default constructor. It generates a node of undefined type. | |
qExpr (TYPE op) | |
Construct a node of specified type. Not for implicit type conversion. | |
qExpr (TYPE op, qExpr *qe1, qExpr *qe2) | |
Construct a full specified node. More... | |
qExpr (const qExpr &qe) | |
Copy Constructor. Deep copy. | |
double | reorder (const weight &) |
After reordering, the lightest weight is one the left side of a group of commutable operators. More... | |
int | separateSimple (ibis::qExpr *&simple, ibis::qExpr *&tail) const |
Separate an expression tree into two connected with an AND operator. More... | |
void | setLeft (qExpr *expr) |
Change the left child. More... | |
void | setRight (qExpr *expr) |
Change the right child. More... | |
void | swap (qExpr &rhs) |
Swap the content. No exception expected. | |
virtual | ~qExpr () |
Destructor. More... | |
Protected Member Functions | |
qRange (TYPE t) | |
Protected Member Functions inherited from ibis::qExpr | |
void | adjust () |
Adjust the tree to favor the sequential evaluation order. More... | |
Additional Inherited Members | |
Public Types inherited from ibis::qExpr | |
enum | COMPARE { OP_UNDEFINED, OP_LT, OP_GT, OP_LE, OP_GE, OP_EQ } |
Comparison operator supported in RANGE. | |
typedef std::vector< TTN > | termTableList |
enum | TYPE { LOGICAL_UNDEFINED, LOGICAL_NOT, LOGICAL_AND, LOGICAL_OR, LOGICAL_XOR, LOGICAL_MINUS, RANGE, DRANGE, STRING, ANYSTRING, KEYWORD, ALLWORDS, COMPRANGE, MATHTERM, DEPRECATEDJOIN, TOPK, EXISTS, ANYANY, LIKE, INTHOD, UINTHOD } |
Definition of node types. More... | |
Static Public Member Functions inherited from ibis::qExpr | |
static std::string | extractTableName (const char *) |
Extract the data partition name from the column name cn. More... | |
static void | simplify (ibis::qExpr *&) |
Attempt to simplify the query expressions. More... | |
static void | splitColumnName (const char *, std::string &, std::string &) |
Split the incoming name into data partition name and column name. More... | |
Protected Attributes inherited from ibis::qExpr | |
qExpr * | left |
The left child. | |
qExpr * | right |
The right child. | |
TYPE | type |
The type of node. More... | |
A class to represent simple range conditions.
This is an abstract base class for qContinuousRange and qDiscreteRange. The main virtual functions, colName and inRange are used by procedures that evaluate the conditions.
|
virtual |
Identify the data partitions involved in the query expression.
Return the list of data partition names in a set.
It records a '*' for the variables without explicit partition names.
Reimplemented from ibis::qExpr.
References ibis::qExpr::extractTableName().
|
pure virtual |
Given a value, determine whether it is in the range defined.
Return true if it is, return false, otherwise.
Implemented in ibis::qUIntHod, ibis::qIntHod, ibis::qDiscreteRange, and ibis::qContinuousRange.
Referenced by ibis::part::doCompare(), ibis::part::doCount(), and ibis::part::doScan().