C++ SDK Documentation  12.0.3
Vertica::BlockReader Class Reference

Iterator interface for reading rows in a Vertica block. More...

Inheritance diagram for Vertica::BlockReader:
Inheritance graph
Collaboration diagram for Vertica::BlockReader:
Collaboration graph

Public Member Functions

 BlockReader (size_t narg, int rowcount, const int *indices)
 
void copy (const VerticaBlock &other)
 
Array::ArrayReader getArrayRef (size_t idx) const
 Get a reference to an Array value from the input row. More...
 
const vboolgetBoolPtr (size_t idx) const
 Get a pointer to a BOOLEAN value from the input row. More...
 
const vboolgetBoolRef (size_t idx) const
 Get a reference to a BOOLEAN value from the input row. More...
 
template<class T >
const T * getColPtr (size_t idx) const
 
template<>
const VStringgetColPtr (size_t idx) const
 
template<>
const VNumericgetColPtr (size_t idx) const
 
template<>
const VUuidgetColPtr (size_t idx) const
 
template<>
const BlockReadergetColPtr (size_t idx) const
 
template<class T >
T * getColPtrForWrite (size_t idx)
 
template<>
VStringgetColPtrForWrite (size_t idx)
 
template<>
VNumericgetColPtrForWrite (size_t idx)
 
template<>
VUuidgetColPtrForWrite (size_t idx)
 
template<>
BlockWritergetColPtrForWrite (size_t idx)
 
template<class T >
const T & getColRef (size_t idx) const
 
template<class T >
T & getColRefForWrite (size_t idx)
 
int getColStride (size_t idx) const
 
const EE::DataAreagetDataArea (size_t idx) const
 
const DateADTgetDatePtr (size_t idx) const
 Get a pointer to a DATE value from the input row. More...
 
const DateADTgetDateRef (size_t idx) const
 Get a reference to a DATE value from the input row. More...
 
const vfloatgetFloatPtr (size_t idx) const
 Get a pointer to a FLOAT value from the input row. More...
 
const vfloatgetFloatRef (size_t idx) const
 Get a reference to a FLOAT value from the input row. More...
 
const IntervalgetIntervalPtr (size_t idx) const
 Get a pointer to an INTERVAL value from the input row. More...
 
const IntervalgetIntervalRef (size_t idx) const
 Get a reference to an INTERVAL value from the input row. More...
 
const IntervalYMgetIntervalYMPtr (size_t idx) const
 Get a pointer to a INTERVAL YEAR TO MONTH value from the input row. More...
 
const IntervalYMgetIntervalYMRef (size_t idx) const
 Get a reference to an INTERVAL YEAR TO MONTH value from the input row. More...
 
const vintgetIntPtr (size_t idx) const
 Get a pointer to an INTEGER value from the input row. More...
 
const vintgetIntRef (size_t idx) const
 Get a reference to an INTEGER value from the input row. More...
 
size_t getNumCols () const
 
const VNumericgetNumericPtr (size_t idx) const
 Get a pointer to a VNumeric value from the input row. More...
 
const VNumericgetNumericRef (size_t idx) const
 Get a reference to a VNumeric value from the input row. More...
 
int getNumRows () const
 
int getPosition () const
 
const BlockReadergetRowPtr (size_t idx) const
 Get a reference to a Row value from the input row. More...
 
const BlockReadergetRowRef (size_t idx) const
 Get a reference to a Row value from the input row. More...
 
const VStringgetStringPtr (size_t idx) const
 Get a pointer to a VString value from the input row. More...
 
const VStringgetStringRef (size_t idx) const
 Get a reference to an VString value from the input row. More...
 
const TimeADTgetTimePtr (size_t idx) const
 Get a pointer to a TIME value from the input row. More...
 
const TimeADTgetTimeRef (size_t idx) const
 Get a reference to a TIME value from the input row. More...
 
const TimestampgetTimestampPtr (size_t idx) const
 Get a pointer to a TIMESTAMP value from the input row. More...
 
const TimestampgetTimestampRef (size_t idx) const
 Get a reference to a TIMESTAMP value from the input row. More...
 
const TimestampTzgetTimestampTzPtr (size_t idx) const
 Get a pointer to a TIMESTAMP WITH TIMEZONE value from the input row. More...
 
const TimestampTzgetTimestampTzRef (size_t idx) const
 Get a reference to a TIMESTAMP WITH TIMEZONE value from the input row. More...
 
const TimeTzADTgetTimeTzPtr (size_t idx) const
 Get a pointer to a TIME WITH TIMEZONE value from the input row. More...
 
const TimeTzADTgetTimeTzRef (size_t idx) const
 Get a reference to a TIME WITH TIMEZONE value from the input row. More...
 
const SizedColumnTypesgetTypeMetaData () const
 
SizedColumnTypesgetTypeMetaData ()
 
const VUuidgetUuidPtr (size_t idx) const
 Get a pointer to a VUuid value from the input row. More...
 
const VUuidgetUuidRef (size_t idx) const
 Get a reference to a VUuid value from the input row. More...
 
void * getVoidPtr (size_t idx=0)
 
const void * getVoidPtr (size_t idx=0) const
 
bool hasData () const
 
bool isNull (int col) const
 Check if the idx'th argument is null. More...
 
bool next ()
 
bool remaining () const
 
void setDataArea (size_t idx, void *dataarea)
 

Protected Member Functions

void addCol (char *arg, int colstride, const Field &field)
 
void addCol (const char *arg, int colstride, const Field &field)
 
bool advanceToNextRow (bool recurIntoArrays)
 
bool checkStringUserBlockInfo (size_t idx) const
 
bool checkTimeUserBlockInfo (size_t idx) const
 
EE::DataArea ** getArrayIntermediateDataArea (size_t c)
 
void reset ()
 
void resetIndex ()
 
void setRowCount (int rowCount)
 
void validateStringColumn (size_t idx, const VString &s, size_t colLength) const
 

Protected Attributes

std::vector< char * > cols
 
std::vector< int > colstrides
 
int count
 
std::vector< NestedBlockPtrctWrappers
 
int index
 
const int * indices
 
size_t ncols
 
int nrows
 
std::vector< BaseDataOID > processBlockUserInfoVector
 
std::vector< VStringsvWrappers
 
SizedColumnTypes typeMetaData
 
std::vector< VUuiduuWrappers
 
std::vector< VNumericvnWrappers
 

Friends

class Array::ArrayReader
 
class EE::VEval
 
class VerticaBlockSerializer
 
class VerticaRInterface
 

Detailed Description

Iterator interface for reading rows in a Vertica block.

This class provides the input to the ScalarFunction.processBlock() function. You extract values from the input row using data type specific functions to extract each column value. You can also determine the number of columns and their data types, if your processBlock function does not have hard-coded input expectations.

Member Function Documentation

void Vertica::VerticaBlock::addCol ( char *  arg,
int  colstride,
const Field field 
)
protectedinherited

Add the location for reading a particular argument.

Parameters
argThe base location to find data.
colstrideThe stride between data instances.
fieldmetadata for the added column
dtThe type of input.
fieldnamethe name of the field

Referenced by Vertica::ParamReader::addParameter().

EE::DataArea** Vertica::VerticaBlock::getArrayIntermediateDataArea ( size_t  c)
inlineprotectedinherited
Returns
a pointer to a DataArea for accumulating an intermediate result
Array::ArrayReader Vertica::BlockReader::getArrayRef ( size_t  idx) const

Get a reference to an Array value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument: another BlockReader which reads elements of the array.
const vbool* Vertica::BlockReader::getBoolPtr ( size_t  idx) const
inline

Get a pointer to a BOOLEAN value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A pointer to the retrieved value cast as a BOOLEAN.

Referenced by getBoolRef().

const vbool& Vertica::BlockReader::getBoolRef ( size_t  idx) const
inline

Get a reference to a BOOLEAN value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as an BOOLEAN.

Referenced by isNull().

template<class T >
const T* Vertica::VerticaBlock::getColPtr ( size_t  idx) const
inlineinherited
Returns
a pointer to the idx'th argument, cast appropriately.

Example:

const vint *a = arg_reader->getColPtr<vint>(0);
template<class T >
const T& Vertica::VerticaBlock::getColRef ( size_t  idx) const
inlineinherited
Returns
a pointer to the idx'th argument, cast appropriately.

Example: const vint a = arg_reader->getColRef<vint>(0);

const DateADT* Vertica::BlockReader::getDatePtr ( size_t  idx) const
inline

Get a pointer to a DATE value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A pointer to the retrieved value cast as a DATE.

Referenced by getDateRef().

const DateADT& Vertica::BlockReader::getDateRef ( size_t  idx) const
inline

Get a reference to a DATE value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as an DATE.

Referenced by isNull().

const vfloat* Vertica::BlockReader::getFloatPtr ( size_t  idx) const
inline

Get a pointer to a FLOAT value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A pointer to the retrieved value cast as a FLOAT.

Referenced by getFloatRef().

const vfloat& Vertica::BlockReader::getFloatRef ( size_t  idx) const
inline

Get a reference to a FLOAT value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
A reference to the idx'th argument, cast as an FLOAT.

Referenced by isNull().

const Interval* Vertica::BlockReader::getIntervalPtr ( size_t  idx) const
inline

Get a pointer to an INTERVAL value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A pointer to the retrieved value cast as an INTERVAL.

Referenced by getIntervalRef().

const Interval& Vertica::BlockReader::getIntervalRef ( size_t  idx) const
inline

Get a reference to an INTERVAL value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as an INTERVAL.

Referenced by isNull().

const IntervalYM* Vertica::BlockReader::getIntervalYMPtr ( size_t  idx) const
inline

Get a pointer to a INTERVAL YEAR TO MONTH value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A point to the retrieved value cast as a INTERVAL YEAR TO MONTH.

Referenced by getIntervalYMRef().

const IntervalYM& Vertica::BlockReader::getIntervalYMRef ( size_t  idx) const
inline

Get a reference to an INTERVAL YEAR TO MONTH value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as an INTERVAL YEAR TO MONTH.

Referenced by isNull().

const vint* Vertica::BlockReader::getIntPtr ( size_t  idx) const
inline

Get a pointer to an INTEGER value from the input row.

Returns
a pointer to the idx'th argument, cast appropriately.
Parameters
idxThe column number to retrieve from the input row.

Example:

const vint *a = arg_reader->getIntPtr(0);

Referenced by getIntRef().

const vint& Vertica::BlockReader::getIntRef ( size_t  idx) const
inline

Get a reference to an INTEGER value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as an INTEGER.

Example:

const vint a = arg_reader->getIntRef(0);

Referenced by isNull().

size_t Vertica::VerticaBlock::getNumCols ( ) const
inlineinherited
Returns
the number of columns held by this block.

Referenced by Vertica::BlockWriter::copyFromInput(), isNull(), and Vertica::BlockWriter::setNull().

const VNumeric* Vertica::BlockReader::getNumericPtr ( size_t  idx) const
inline

Get a pointer to a VNumeric value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
A pointer to the retrieved value cast as a Numeric.

Referenced by getNumericRef().

const VNumeric& Vertica::BlockReader::getNumericRef ( size_t  idx) const
inline

Get a reference to a VNumeric value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as an VNumeric.

Referenced by isNull().

int Vertica::VerticaBlock::getNumRows ( ) const
inlineinherited
Returns
the number of rows held by this block.
int Vertica::BlockReader::getPosition ( ) const
inline
Returns
the current row position or array index
const BlockReader* Vertica::BlockReader::getRowPtr ( size_t  idx) const
inline

Get a reference to a Row value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a pointer to a reader for the Row fields

Referenced by getRowRef().

const BlockReader& Vertica::BlockReader::getRowRef ( size_t  idx) const
inline

Get a reference to a Row value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, as a Row value.
const VString* Vertica::BlockReader::getStringPtr ( size_t  idx) const
inline

Get a pointer to a VString value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
A pointer to the retrieved value cast as a VString.

Referenced by getStringRef().

const VString& Vertica::BlockReader::getStringRef ( size_t  idx) const
inline

Get a reference to an VString value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as an VString.

Referenced by isNull().

const TimeADT* Vertica::BlockReader::getTimePtr ( size_t  idx) const
inline

Get a pointer to a TIME value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A pointer to the retrieved value cast as a TIME.

Referenced by getTimeRef().

const TimeADT& Vertica::BlockReader::getTimeRef ( size_t  idx) const
inline

Get a reference to a TIME value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as a TIME.

Referenced by isNull().

const Timestamp* Vertica::BlockReader::getTimestampPtr ( size_t  idx) const
inline

Get a pointer to a TIMESTAMP value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A pointer to the retrieved value cast as a TIMESTAMP.

Referenced by getTimestampRef().

const Timestamp& Vertica::BlockReader::getTimestampRef ( size_t  idx) const
inline

Get a reference to a TIMESTAMP value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as a TIMESTAMP.

Referenced by isNull().

const TimestampTz* Vertica::BlockReader::getTimestampTzPtr ( size_t  idx) const
inline

Get a pointer to a TIMESTAMP WITH TIMEZONE value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A pointer to the retrieved value cast as a TIMESTAMP WITH TIMEZONE .

Referenced by getTimestampTzRef().

const TimestampTz& Vertica::BlockReader::getTimestampTzRef ( size_t  idx) const
inline

Get a reference to a TIMESTAMP WITH TIMEZONE value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as a TIMESTAMP WITH TIMEZONE.

Referenced by isNull().

const TimeTzADT* Vertica::BlockReader::getTimeTzPtr ( size_t  idx) const
inline

Get a pointer to a TIME WITH TIMEZONE value from the input row.

Parameters
idxThe column number in the input row to retrieve.
Returns
A pointer to the retrieved value cast as a TIME WITH TIMEZONE.

Referenced by getTimeTzRef().

const TimeTzADT& Vertica::BlockReader::getTimeTzRef ( size_t  idx) const
inline

Get a reference to a TIME WITH TIMEZONE value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as a TIME WITH TIMEZONE.

Referenced by isNull().

const SizedColumnTypes& Vertica::VerticaBlock::getTypeMetaData ( ) const
inlineinherited
Returns
information about the types and numbers of arguments

Referenced by Vertica::ParamReader::getType(), isNull(), and Vertica::BlockWriter::setNull().

SizedColumnTypes& Vertica::VerticaBlock::getTypeMetaData ( )
inlineinherited
Returns
information about the types and numbers of arguments
const VUuid* Vertica::BlockReader::getUuidPtr ( size_t  idx) const
inline

Get a pointer to a VUuid value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
A pointer to the retrieved value cast as a VUuid.

Referenced by getUuidRef().

const VUuid& Vertica::BlockReader::getUuidRef ( size_t  idx) const
inline

Get a reference to a VUuid value from the input row.

Parameters
idxThe column number to retrieve from the input row.
Returns
a reference to the idx'th argument, cast as an VUuid.

Referenced by isNull().

bool Vertica::BlockReader::hasData ( ) const
inline
Returns
true if there is data available

Referenced by Vertica::copyBlockColumn().

bool Vertica::BlockReader::isNull ( int  col) const
inline

Check if the idx'th argument is null.

Parameters
colThe column number in the row to check for null
Returns
true is the col value is null false otherwise
bool Vertica::BlockReader::next ( )
inline

Advance to the next record.

Returns
true if there are more rows to read, false otherwise.

Referenced by Vertica::copyBlockColumn().

bool Vertica::VerticaBlock::remaining ( ) const
inlineinherited
Returns
the number of entries remaining in the block