Vertica::VerticaValueRange Class Reference

This class represents value ranges used in analyzing the output of UDSFs. A range is expressed as a minimum/maximum value (inclusive) pair.

Inheritance diagram for Vertica::VerticaValueRange:

Collaboration diagram for Vertica::VerticaValueRange:

Classes
struct ValueRange
Public Types
enum BoundType { LO_BOUND, UP_BOUND }
Public Member Functions
VerticaValueRange (size_t narg)
bool canHaveNulls (size_t idx) const
Indicates if there can be NULL values in the range.
template
const T * getColPtr (size_t idx) const
template
T * getColPtrForWrite (size_t idx)
size_t getNumRanges () const
Retrieve the number of range arguments.
const VerticaType & getRangeType (size_t idx) const
Returns the data type of the values in a range.
EE::ValueSort getSortedness (size_t idx) const
Protected Member Functions
void addArg (char *loBound, char *upBound, const VerticaType &dt, EE::ValueSort sortedness, bool canHaveNulls)
void setCanHaveNulls (size_t idx, bool u)
Set a flag to indicate that some values in this range can be NULL.
void setSortedness (size_t idx, EE::ValueSort s)
Protected Attributes
size_t narg
std::vector ranges
std::vector svWrappersLo
std::vector svWrappersUp
std::vector uuWrappersLo
std::vector uuWrappersUp
std::vector vnWrappersLo
std::vector vnWrappersUp
Friends
struct ::AnalyzeUDSFHandler
struct ::UDxExecContext

Detailed Description

This class represents value ranges used in analyzing the output of UDSFs. A range is expressed as a minimum/maximum value (inclusive) pair.

Instances of this class are used to allow UDSF developers to specify what the output range of of the function is. The UDSF developer is responsible to override ScalarFunction::getOutputRange() and set the function's output range using the knowledge of the input argument ranges passed as references to ScalarFunction::getOutputRange().

Member Function Documentation

void Vertica::VerticaValueRange::addArg(char * loBound, char * upBound, const VerticaType & dt, EE::ValueSort sortedness, bool canHaveNulls)

inlineprotected

Add a value range of a particular function argument

Parameters

  • loBound: Base location to find the lower bound data
  • upBound: Base location to find the upper bound data
  • sortedness: Sortedness of values in the range
  • dt: The data type of range bounds
bool Vertica::VerticaValueRange::canHaveNulls(size_t idx) const

inline Indicates if there can be NULL values in the range.

Parameters

  • idx: the range argument number.

Returns TRUE if some range values can be NULL, else FALSE.

size_t Vertica::VerticaValueRange::getNumRanges() const

inline Retrieve the number of range arguments.

Returns the number of range arguments held by this object.

const VerticaType& Vertica::VerticaValueRange::getRangeType(size_t idx) const

inline Returns the data type of the values in a range.

Parameters

  • idx: The index of the range

Returns a VerticaType object describing the data type of the range values.

void Vertica::VerticaValueRange::setCanHaveNulls(size_t idx, bool u)

inlineprotected

Set a flag to indicate that some values in this range can be NULL.

Parameters

  • idx: The argument range number.
  • u: true if there can be NULL values in the range, else false.