A discrete range expression. More...
#include <qExpr.h>
Public Member Functions | |
| virtual const char * | colName () const |
| Name of the column. | |
| ibis::qExpr * | convert () const |
| Convert to a sequence of qContinuousRange. | |
| virtual qDiscreteRange * | dup () const |
| Duplicate thy self. | |
| virtual bool | empty () const |
| Is the current range empty? | |
| const ibis::array_t< double > & | getValues () const |
| Reference to the values. | |
| ibis::array_t< double > & | getValues () |
| Reference to the values. | |
| virtual bool | inRange (double val) const |
| Is the argument val one of the values stored ? Return true or false. More... | |
| virtual double | leftBound () const |
| The lower bound of the range. | |
| virtual uint32_t | nItems () const |
| Count the number of items in the query expression. | |
| bool | overlap (double, double) const |
| 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... | |
| qDiscreteRange () | |
| Construct an empty dicrete range expression. | |
| qDiscreteRange (const char *col, const char *nums) | |
| Construct a discrete range from two strings. Used by the parser. | |
| qDiscreteRange (const char *col, const std::vector< uint32_t > &val) | |
| Construct a qDiscreteRange object from a vector of unsigned 32-bit integers. More... | |
| qDiscreteRange (const char *col, const std::vector< double > &val) | |
| Construct a qDiscreteRange object from a vector of double values. | |
| qDiscreteRange (const char *col, ibis::array_t< uint32_t > &val) | |
| Construct a qDiscreteRange from an array of 32-bit integers. More... | |
| qDiscreteRange (const char *col, ibis::array_t< double > &val) | |
| Construct a qDiscreteRange object from an array of double values. More... | |
| qDiscreteRange (const qDiscreteRange &dr) | |
| Copy constructor. | |
| virtual void | restrictRange (double left, double right) |
| Reduce the range to be no more than [left, right]. | |
| virtual double | rightBound () const |
| The upper bound of the range. | |
Public Member Functions inherited from ibis::qRange | |
| virtual void | getTableNames (std::set< std::string > &plist) const |
| Identify the data partitions involved in the query expression. More... | |
Public Member Functions inherited from ibis::qExpr | |
| bool | directEval () const |
| Can the expression be directly evaluated? | |
| 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? | |
| qExpr & | operator= (const qExpr &rhs) |
| Assignment operator. | |
| 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... | |
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 Member Functions inherited from ibis::qRange | |
| qRange (TYPE t) | |
Protected Member Functions inherited from ibis::qExpr | |
| void | adjust () |
| Adjust the tree to favor the sequential evaluation order. 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 discrete range expression.
It is used to capture expression of the form "A in (aaa, bbb, ccc, ...)."
| ibis::qDiscreteRange::qDiscreteRange | ( | const char * | col, |
| const std::vector< uint32_t > & | val | ||
| ) |
Construct a qDiscreteRange object from a vector of unsigned 32-bit integers.
Initially used to convert qAnyString to qDiscreteRange, but made visible to public upon user request.
References ibis::util::copy(), ibis::array_t< T >::push_back(), ibis::array_t< T >::reserve(), ibis::array_t< T >::resize(), and ibis::array_t< T >::size().
| ibis::qDiscreteRange::qDiscreteRange | ( | const char * | col, |
| ibis::array_t< uint32_t > & | val | ||
| ) |
Construct a qDiscreteRange from an array of 32-bit integers.
References ibis::util::copy(), ibis::array_t< T >::resize(), and ibis::array_t< T >::size().
| ibis::qDiscreteRange::qDiscreteRange | ( | const char * | col, |
| ibis::array_t< double > & | val | ||
| ) |
Construct a qDiscreteRange object from an array of double values.
References ibis::array_t< T >::copy(), and ibis::array_t< T >::deduplicate().
|
inlinevirtual |
Is the argument val one of the values stored ? Return true or false.
It uses a binary search if there are more than 32 elements and uses linear search otherwise.
Implements ibis::qRange.
Referenced by ibis::bord::column::evaluateRange().
|
virtual |
Print out the node in the string form.
The short-form of the print function.
It only prints information about the current node of the query expression tree.
Reimplemented from ibis::qExpr.
|
inlinevirtual |
Print out the full expression.
The long form of the print function.
It recursively prints out the whole query expression tree, which can be quite long.
Reimplemented from ibis::qExpr.
References ibis::qExpr::print().
|
| |