Public Member Functions | List of all members
ibis::qDiscreteRange Class Reference

A discrete range expression. More...

#include <qExpr.h>

Inheritance diagram for ibis::qDiscreteRange:
ibis::qRange ibis::qExpr

Public Member Functions

virtual const char * colName () const
 Name of the column.
 
ibis::qExprconvert () const
 Convert to a sequence of qContinuousRange.
 
virtual qDiscreteRangedup () 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.
 
qRangefindRange (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 qExprgetLeft () const
 Return a const pointer to the left child.
 
qExpr *& getRight ()
 Return a pointer to the right child. More...
 
const qExprgetRight () 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?
 
qExproperator= (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< TTNtermTableList
 
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
qExprleft
 The left child.
 
qExprright
 The right child.
 
TYPE type
 The type of node. More...
 

Detailed Description

A discrete range expression.

It is used to capture expression of the form "A in (aaa, bbb, ccc, ...)."

Constructor & Destructor Documentation

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.

Note
The incoming array is modified by this funciton. On return, it will be sorted and contains only unique values.

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.

Note
The incoming values are sorted and only the unique ones are kept on returning from this function.

References ibis::array_t< T >::copy(), and ibis::array_t< T >::deduplicate().

Member Function Documentation

bool ibis::qDiscreteRange::inRange ( double  val) const
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().

void ibis::qDiscreteRange::print ( std::ostream &  out) const
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.

virtual void ibis::qDiscreteRange::printFull ( std::ostream &  out) const
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().


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

Make It A Bit Faster
Contact us
Disclaimers
FastBit source code
FastBit mailing list archive