Classes | Public Types | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ibis::tafel Class Reference

An expandable table. More...

#include <tafel.h>

Inheritance diagram for ibis::tafel:
ibis::tablex

Classes

struct  column
 In-memory version of a column. More...
 

Public Types

typedef std::map< const char *, column *, ibis::lessi > columnList
 

Public Member Functions

virtual int addColumn (const char *cname, ibis::TYPE_T ctype, const char *cdesc, const char *idx)
 Add metadata about a new column. More...
 
virtual int append (const char *cname, uint64_t begin, uint64_t end, void *values)
 Copy the incoming values to rows [begin:end) of column cn.
 
virtual int appendRow (const ibis::table::row &)
 Add one row. More...
 
virtual int appendRow (const char *, const char *)
 Append a row stored in ASCII form. More...
 
virtual int appendRows (const std::vector< ibis::table::row > &)
 Add multiple rows. More...
 
virtual uint32_t bufferCapacity () const
 Capacity of the memory buffer. More...
 
virtual void clearData ()
 Remove all data recorded. More...
 
virtual void describe (std::ostream &) const
 Print a description of the table to the specified output stream.
 
virtual const char * getASCIIDictionary (const char *) const
 Retrieve the name of the ASCII dictionary file associated with a column of categorical values. More...
 
const columnList & getColumns () const
 The list of columns stored in memory.
 
virtual uint32_t mColumns () const
 The number of columns in this table.
 
virtual uint32_t mRows () const
 The number of rows in memory. More...
 
virtual int readCSV (const char *filename, int maxrows, const char *outputdir, const char *delimiters)
 Read the content of the named file as comma-separated values. More...
 
virtual int readSQLDump (const char *filename, std::string &tname, int maxrows, const char *outputdir)
 Read a SQL dump from database systems such as MySQL. More...
 
virtual int32_t reserveBuffer (uint32_t)
 Attempt to reserve enough memory for maxr rows to be stored in memory. More...
 
virtual void setASCIIDictionary (const char *, const char *)
 Set the name of the ASCII dictionary file for a column of categorical values. More...
 
virtual int SQLCreateTable (const char *stmt, std::string &)
 Ingest a complete SQL CREATE TABLE statement. More...
 
virtual tabletoTable (const char *nm=0, const char *de=0)
 Stop expanding the current set of data records. More...
 
virtual int write (const char *dir, const char *tname=0, const char *tdesc=0, const char *idx=0, const char *nvpairs=0) const
 Write the data values and update the metadata file. More...
 
virtual int writeMetaData (const char *dir, const char *tname=0, const char *tdesc=0, const char *idx=0, const char *nvpairs=0) const
 Write the metadata file if no metadata file already exists in the given directory. More...
 
- Public Member Functions inherited from ibis::tablex
virtual uint32_t getPartitionMax () const
 Get the recommended number of rows in a data partition.
 
virtual int parseNamesAndTypes (const char *txt)
 Parse names and data types in string form. More...
 
virtual int readNamesAndTypes (const char *filename)
 Read a file containing the names and types of columns. More...
 
virtual void setPartitionMax (uint32_t m)
 Set the recommended number of rows in a data partition.
 

Protected Member Functions

template<typename T >
void append (const T *in, ibis::bitvector::word_t be, ibis::bitvector::word_t en, array_t< T > &out, const T &fill, ibis::bitvector &mask) const
 Add values to an array of type T. More...
 
template<typename T >
void append (const std::vector< std::string > &nm, const std::vector< T > &va, std::vector< array_t< T > * > &buf, std::vector< ibis::bitvector * > &msk)
 Append one row to columns of a particular type. More...
 
void appendBlob (const std::vector< std::string > &nm, const std::vector< ibis::opaque > &va, std::vector< std::vector< ibis::opaque > * > &buf, std::vector< ibis::bitvector * > &msk)
 Append one row to blob columns. More...
 
void appendRaw (const ibis::array_t< unsigned char > *in, ibis::bitvector::word_t be, ibis::bitvector::word_t en, std::vector< std::string > &out, ibis::bitvector &mask) const
 
void appendString (const std::vector< std::string > *in, ibis::bitvector::word_t be, ibis::bitvector::word_t en, std::vector< std::string > &out, ibis::bitvector &mask) const
 Copy the incoming strings to out[be:en-1]. More...
 
void appendString (const std::vector< std::string > &nm, const std::vector< std::string > &va, std::vector< std::vector< std::string > * > &buf, std::vector< ibis::bitvector * > &msk)
 Append one row to string-valued columns. More...
 
int assignDefaultValue (ibis::tafel::column &col, const char *val) const
 Assign the default value for the given column. More...
 
void clear ()
 Clear all content. Removes both data and metadata.
 
int32_t doReserve (uint32_t)
 Reserve space for maxr records in memory. More...
 
template<typename T >
void locate (ibis::TYPE_T, std::vector< array_t< T > * > &buf, std::vector< ibis::bitvector * > &msk) const
 Locate the buffers and masks associated with a data type.
 
void locateBlob (std::vector< std::vector< ibis::opaque > * > &buf, std::vector< ibis::bitvector * > &msk) const
 Locate the buffers and masks associated with a string-valued data type.
 
void locateString (ibis::TYPE_T t, std::vector< std::vector< std::string > * > &buf, std::vector< ibis::bitvector * > &msk) const
 Locate the buffers and masks associated with a string-valued data type.
 
void normalize ()
 Make all short columns catch up with the longest one.
 
int parseLine (const char *str, const char *del, const char *id)
 Digest a line of text and place the values identified into the corresponding columns. More...
 
uint32_t preferredSize () const
 Compute the number of rows that are likely to fit in available memory. More...
 
int readSQLStatement (std::istream &, ibis::fileManager::buffer< char > &, ibis::fileManager::buffer< char > &) const
 Read one complete SQL statment from an SQL dump file. More...
 
int writeData (const char *dir, const char *tname, const char *tdesc, const char *idx, const char *nvpairs, uint32_t offset) const
 
- Protected Member Functions inherited from ibis::tablex
 tablex ()
 Protected default constructor. More...
 

Protected Attributes

std::vector< column * > colorder
 Order of columns as they were specified through addColumn.
 
columnList cols
 List of columns in alphabetical order.
 
std::string metatags
 Meta tags. More...
 
ibis::bitvector::word_t mrows
 Number of rows of this table.
 
- Protected Attributes inherited from ibis::tablex
uint32_t ipart
 Current partition number being used for writing.
 
uint32_t maxpart
 Recommended size of data partitions to be created.
 

Additional Inherited Members

- Static Public Member Functions inherited from ibis::tablex
static ibis::tablexcreate ()
 Create a minimalistic table exclusively for entering new records. More...
 

Detailed Description

An expandable table.

It inherents from ibis::tablex only, therefore does not support any querying functions. It stores all its content in memory, therefore it can only handle relatively small number of rows.

To perform queries on the underlying data, convert this object into a table object. Call function write to make the in memory data persistent.

Note
The word tafel is a German word for "table."

Member Function Documentation

int ibis::tafel::addColumn ( const char *  cn,
ibis::TYPE_T  ct,
const char *  cd,
const char *  idx 
)
virtual

Add metadata about a new column.

Return value

  • 0 == success,
  • -2 == invalid name or type,
  • 1 == name already in the list of columns, same type,
  • -1 == existing column with different type.

Implements ibis::tablex.

References ibis::BLOB, ibis::CATEGORY, colorder, cols, ibis::tafel::column::desc, ibis::DOUBLE, ibis::FLOAT, ibis::tafel::column::indexSpec, ibis::INT, ibis::LONG, ibis::tafel::column::name, ibis::OID, ibis::SHORT, ibis::TEXT, ibis::tafel::column::type, ibis::UBYTE, ibis::UINT, ibis::ULONG, ibis::UNKNOWN_TYPE, ibis::USHORT, and ibis::tafel::column::values.

Referenced by ibis::tablex::parseNamesAndTypes().

template<typename T >
void ibis::tafel::append ( const T *  in,
ibis::bitvector::word_t  be,
ibis::bitvector::word_t  en,
array_t< T > &  out,
const T &  fill,
ibis::bitvector mask 
) const
protected

Add values to an array of type T.

The input values (in) are copied to out[be:en-1]. If the array out has less then be elements to start with, it will be filled with value fill. The output mask indicates whether the values in array out are valid. This version works with one column as at a time.

Note
It is a const function because it only makes changes to its arguments.

References ibis::bitvector::adjustSize(), ibis::bitvector::appendFill(), ibis::util::copy(), ibis::array_t< T >::resize(), and ibis::array_t< T >::size().

template<typename T >
void ibis::tafel::append ( const std::vector< std::string > &  nm,
const std::vector< T > &  va,
std::vector< array_t< T > * > &  buf,
std::vector< ibis::bitvector * > &  msk 
)
protected

Append one row to columns of a particular type.

This version with multiple columns but only one row.

Note
It assumes that the existing data have been normalized, i.e., all columns have the same number of rows.

References ibis::array_t< T >::push_back().

void ibis::tafel::appendBlob ( const std::vector< std::string > &  nm,
const std::vector< ibis::opaque > &  va,
std::vector< std::vector< ibis::opaque > * > &  buf,
std::vector< ibis::bitvector * > &  msk 
)
protected

Append one row to blob columns.

This version with multiple columns but only one row.

Note
It assumes that the existing data have been normalized, i.e., all columns have the same number of rows.
int ibis::tafel::appendRow ( const ibis::table::row )
virtual

Add one row.

If an array of names has the same number of elements as the array of values, the names are used as column names. If the names are not specified explicitly, the values are assigned to the columns of the same data type in the order as they are specified through addColumn or if the same order as they are recreated from an existing dataset (which is typically alphabetical).

Return the number of values added to the new row.

Note
The column names are not case-sensitive.
Like append, this function can not be used to introduce new columns in a table. A new column must be added with addColumn.
Since the various columns may have different numbers of rows filled, the number of rows in the table is assumed to the largest number of rows filled so far. The new row appended here increases the number of rows in the table by 1. The unfilled rows are assumed to be null.
A null value is internally denoted with a mask separated from the data values. However, since the rows corresponding to the null values must be filled with some value in this implementation, the following is how their values are filled. A null value of an integer column is filled as the maximum possible of the type of integer. A null value of a floating-point valued column is filled as a quiet NaN (Not-a-Number). A null value of a string-valued column is filled with an empty string.

Implements ibis::tablex.

References ibis::table::row::blobsvalues, ibis::table::row::bytesvalues, ibis::CATEGORY, ibis::table::row::catsvalues, ibis::DOUBLE, ibis::table::row::doublesvalues, ibis::FLOAT, ibis::table::row::floatsvalues, ibis::INT, ibis::table::row::intsvalues, ibis::LONG, ibis::table::row::longsvalues, ibis::table::row::nColumns(), ibis::SHORT, ibis::table::row::shortsvalues, ibis::TEXT, ibis::table::row::textsvalues, ibis::UBYTE, ibis::table::row::ubytesvalues, ibis::UINT, ibis::table::row::uintsvalues, ibis::ULONG, ibis::table::row::ulongsvalues, ibis::USHORT, and ibis::table::row::ushortsvalues.

int ibis::tafel::appendRow ( const char *  line,
const char *  delimiters 
)
virtual

Append a row stored in ASCII form.

The ASCII form of the values are assumed to be separated by comma (,) or space, but additional delimiters may be added through the second argument.

Return the number of values added to the new row.

Implements ibis::tablex.

int ibis::tafel::appendRows ( const std::vector< ibis::table::row > &  )
virtual

Add multiple rows.

Rows in the incoming vector are processed on after another. The ordering of the values in earlier rows are automatically carried over to the later rows until another set of names is specified.

Return the number of new rows added.

See also
appendRow

Implements ibis::tablex.

References ibis::CATEGORY, ibis::DOUBLE, ibis::FLOAT, ibis::INT, ibis::LONG, ibis::SHORT, ibis::TEXT, ibis::UBYTE, ibis::UINT, ibis::ULONG, and ibis::USHORT.

void ibis::tafel::appendString ( const std::vector< std::string > *  in,
ibis::bitvector::word_t  be,
ibis::bitvector::word_t  en,
std::vector< std::string > &  out,
ibis::bitvector mask 
) const
protected

Copy the incoming strings to out[be:en-1].

Work with one column at a time.

Note
It is a const function because it only makes changes to its arguments.

References ibis::bitvector::adjustSize(), ibis::bitvector::appendFill(), and ibis::util::copy().

void ibis::tafel::appendString ( const std::vector< std::string > &  nm,
const std::vector< std::string > &  va,
std::vector< std::vector< std::string > * > &  buf,
std::vector< ibis::bitvector * > &  msk 
)
protected

Append one row to string-valued columns.

This version with multiple columns but only one row.

Note
It assumes that the existing data have been normalized, i.e., all columns have the same number of rows.
int ibis::tafel::assignDefaultValue ( ibis::tafel::column col,
const char *  val 
) const
protected
uint32_t ibis::tafel::bufferCapacity ( ) const
virtual

Capacity of the memory buffer.

Report the maximum number of rows can be stored with this object before more memory will be allocated. A return value of zero (0) may also indicate that it does not know about its capacity.

Note
For string valued columns, the resvation is not necessarily allocating space required for the actual string values. Thus it is possible to run out of memory before the number of rows reported by mRows reaches the value returned by this function.

Reimplemented from ibis::tablex.

References ibis::BLOB, ibis::CATEGORY, ibis::bitvector::clear(), ibis::DOUBLE, ibis::FLOAT, ibis::INT, ibis::LONG, ibis::tafel::column::mask, ibis::OID, ibis::SHORT, ibis::TEXT, ibis::tafel::column::type, ibis::UBYTE, ibis::UINT, ibis::ULONG, ibis::USHORT, and ibis::tafel::column::values.

void ibis::tafel::clearData ( )
virtual

Remove all data recorded.

Keeps the information about columns. It is intended to prepare for new rows after invoking the function write.

Implements ibis::tablex.

References ibis::BLOB, ibis::CATEGORY, ibis::bitvector::clear(), ibis::util::clear(), ibis::DOUBLE, ibis::FLOAT, ibis::INT, ibis::LONG, ibis::tafel::column::mask, ibis::OID, ibis::SHORT, ibis::TEXT, ibis::tafel::column::type, ibis::UBYTE, ibis::UINT, ibis::ULONG, ibis::USHORT, and ibis::tafel::column::values.

int32_t ibis::tafel::doReserve ( uint32_t  maxr)
protected
const char * ibis::tafel::getASCIIDictionary ( const char *  ) const
virtual

Retrieve the name of the ASCII dictionary file associated with a column of categorical values.

Implements ibis::tablex.

References ibis::tafel::column::dictfile.

virtual uint32_t ibis::tafel::mRows ( ) const
inlinevirtual

The number of rows in memory.

It is the maximum number of rows in any column.

Implements ibis::tablex.

References mrows.

int ibis::tafel::parseLine ( const char *  str,
const char *  del,
const char *  id 
)
protected

Digest a line of text and place the values identified into the corresponding columns.

The actual values are extracted by ibis::util::readInt, ibis::util::readUInt, ibis::util::readDouble and ibis::util::readString. When any of these functions returns an error condition, this function assumes the value to be recorded is a NULL. The presence of a NULL value is marked by a 0-bit in the mask associated with the column. The actual value in the associated buffer is the largest integer value for an integer column and a quiet NaN for floating-point valued column.

References ibis::BLOB, ibis::CATEGORY, ibis::DOUBLE, ibis::FLOAT, ibis::INT, ibis::LONG, ibis::tafel::column::mask, ibis::tafel::column::name, ibis::OID, ibis::util::readDouble(), ibis::util::readInt(), ibis::util::readString(), ibis::util::readUInt(), ibis::SHORT, ibis::TEXT, ibis::tafel::column::type, ibis::TYPESTRING, ibis::UBYTE, ibis::UINT, ibis::ULONG, ibis::USHORT, and ibis::tafel::column::values.

uint32_t ibis::tafel::preferredSize ( ) const
protected

Compute the number of rows that are likely to fit in available memory.

It only count string valued column to cost 16 bytes for each row. This can be a significant underestimate of the actual cost. Memory fragmentation may also significantly reduce the available space.

References ibis::fileManager::bytesFree(), ibis::util::coarsen(), ibis::DOUBLE, ibis::FLOAT, ibis::INT, ibis::LONG, ibis::OID, ibis::SHORT, ibis::tafel::column::type, ibis::UBYTE, ibis::UINT, ibis::ULONG, and ibis::USHORT.

int ibis::tafel::readCSV ( const char *  inputfile,
int  memrows,
const char *  outputdir,
const char *  delimiters 
)
virtual

Read the content of the named file as comma-separated values.

Append the records to this table. If the argument memrows is greater than 0, this function will reserve space to read this many records. If the total number of records is more than memrows and the output directory name is specified, then the records will be written the outputdir and the memory is made available for later records. If outputdir is not specified, this function attempts to expand the memory allocated, which may run out of memory. Furthermore, repeated allocations can be time-consuming.

By default the records are delimited by comma (,) and blank space. One may specify alternative delimiters using the last argument.

Upon successful completion of this funciton, the return value is the number of rows processed. However, not all of them may remain in memory because ealier rows may have been written to disk.

Note
Information about column names and types must be provided before calling this function.
The return value is intentionally left as 32-bit integer, which limits the maximum number of rows can be correctly handled.
This function processes the input text file one line at a time by using the standard unix read function to perform the actual I/O operations. Depending on the I/O libraries used, it may expect the end-of-line character to be unix-style. If your text file is not terminated with the unix-style end-of-line character, then it is possible for this function to understand the lines incorrectly. If you see an entire line being read as one single field, then it is likely that you are have problem with the end-of-line character. Please try to convert the end-of-line character and give it another try.

Implements ibis::tablex.

References ibis::fileManager::buffer< T >::address(), ibis::util::coarsen(), ibis::horometer::CPUTime(), ibis::horometer::realTime(), ibis::fileManager::buffer< T >::resize(), ibis::fileManager::buffer< T >::size(), ibis::horometer::start(), ibis::horometer::stop(), and ibis::util::write().

int ibis::tafel::readSQLDump ( const char *  inputfile,
std::string &  tname,
int  memrows,
const char *  outputdir 
)
virtual

Read a SQL dump from database systems such as MySQL.

The entire file will be read into memory in one shot unless both memrows and outputdir are specified. In cases where both memrows and outputdir are specified, this function reads a maximum of memrows before write the data to outputdir under the name tname, which leaves no more than memrows number of rows in memory. The value returned from this function is the number of rows processed including those written to disk. Use function mRows to determine how many are still in memory.

If the SQL dump file contains statement to create table, then the existing metadata is overwritten. Otherwise, it reads insert statements and convert the ASCII data into binary format in memory.

Implements ibis::tablex.

References ibis::fileManager::buffer< T >::address(), ibis::util::coarsen(), ibis::horometer::CPUTime(), ibis::util::delimiters, ibis::util::readString(), ibis::horometer::realTime(), ibis::horometer::start(), ibis::horometer::stop(), and ibis::util::write().

int ibis::tafel::readSQLStatement ( std::istream &  sqlfile,
ibis::fileManager::buffer< char > &  stmt,
ibis::fileManager::buffer< char > &  line 
) const
protected

Read one complete SQL statment from an SQL dump file.

It will read one line at a time until a semicolon ';' is found. It will expand the buffers as needed. The return value is either the number of bytes in the SQL statement or an eror code (less than 0).

References ibis::fileManager::buffer< T >::address(), ibis::fileManager::buffer< T >::resize(), and ibis::fileManager::buffer< T >::size().

int32_t ibis::tafel::reserveBuffer ( uint32_t  maxr)
virtual

Attempt to reserve enough memory for maxr rows to be stored in memory.

This function will not reserve space for more than 1 billion rows. If maxr is less than mrows, it will simply return mrows. It calls doReserve to performs the actual reservations. If doReserve throws an exception, it will reduce the value of maxr and try again. It will give up after 5 tries and return -1, otherwise, it returns the actual capacity allocated.

Note
If the caller does not store more rows than can be held in memory, the underlying data structure should automatically expand to accomodate the new rows. However, it is definitely advantageous to reserve space ahead of time. It will reduce the need to expand the underlying storage objects, which can reduce the execution time. In addition, reserving a good fraction of the physical memory, say 10 - 40%, for storing rows in memory can reduce the number of times the write operation is invoked when loading a large number of rows from external sources. Since the string values are stored as std::vector objects, additional memory is allocated for each new string added to memory, therefore, after importing many long strings, it is still possible to run out of memory even after one successfully reserved space with this function.
It is possible for the existing content to be lost if doReserve throws an exception, therefore, one should call this function when this object does not hold any user data in memory.

Reimplemented from ibis::tablex.

References ibis::fileManager::bytesFree(), ibis::DOUBLE, ibis::FLOAT, ibis::INT, ibis::LONG, ibis::OID, ibis::SHORT, ibis::UBYTE, ibis::UINT, ibis::ULONG, and ibis::USHORT.

void ibis::tafel::setASCIIDictionary ( const char *  ,
const char *   
)
virtual

Set the name of the ASCII dictionary file for a column of categorical values.

Implements ibis::tablex.

References ibis::CATEGORY, ibis::tafel::column::dictfile, ibis::tafel::column::name, ibis::tafel::column::type, ibis::TYPESTRING, and ibis::UINT.

int ibis::tafel::SQLCreateTable ( const char *  stmt,
std::string &  tname 
)
virtual

Ingest a complete SQL CREATE TABLE statement.

Creates all metadata specified. It extracts the table name (into tname) to be used later by functions such as write and writeMetaData.

The statement is expected to be in the form of "create table tname (column1, column2, ...)". It can not contain embedded comments.

Because the SQL standard supports many more data types than FastBit does, many SQL column types are mapped in a crude manner. Here is the current list.

  • enum = ibis::CATEGORY; the values specified are not recorded.
  • set = ibis::CATEGORY; this treatment does not fully reflect the flexibility with which a set value can be handled in SQL.
  • blob = ibis::BLOB; however, since SQL dump file contains only printable characters, this function simply pickup printable characters as with strings.

References ibis::BLOB, ibis::CATEGORY, ibis::util::clear(), ibis::tafel::column::defval, ibis::DOUBLE, ibis::FLOAT, ibis::INT, ibis::LONG, ibis::tafel::column::name, ibis::util::readString(), ibis::SHORT, ibis::TEXT, ibis::tafel::column::type, ibis::TYPESTRING, ibis::UBYTE, ibis::UINT, ibis::ULONG, ibis::USHORT, and ibis::tafel::column::values.

ibis::table * ibis::tafel::toTable ( const char *  nm = 0,
const char *  de = 0 
)
virtual

Stop expanding the current set of data records.

Convert a tablex object into a table object, so that they can participate in queries. The data records held by the tablex object is transfered to the table object, however, the metadata remains with this object.

Implements ibis::tablex.

References ibis::part::getColumn(), ibis::tafel::column::name, ibis::array_t< T >::resize(), ibis::column::setNullMask(), ibis::tafel::column::type, ibis::UNKNOWN_TYPE, and ibis::tafel::column::values.

int ibis::tafel::write ( const char *  dir,
const char *  tname = 0,
const char *  tdesc = 0,
const char *  idx = 0,
const char *  nvpairs = 0 
) const
virtual

Write the data values and update the metadata file.

Return error code:

  • 0: successful completion.
  • -1: no directory specified.
  • -2: column type conflicts.
  • -3: unable to open the metadata file.
  • -4: unable to open a data file.
  • -5: failed to write the expected number of records.

Implements ibis::tablex.

References ibis::horometer::CPUTime(), ibis::horometer::realTime(), ibis::horometer::start(), and ibis::horometer::stop().

int ibis::tafel::writeMetaData ( const char *  dir,
const char *  tname = 0,
const char *  tdesc = 0,
const char *  idx = 0,
const char *  nvpairs = 0 
) const
virtual

Write the metadata file if no metadata file already exists in the given directory.

Return error code:

  • number of columns: successful completion. The return value of this function should match the return of mColumns.
  • 0: a metadata file already exists. The content of the existing metadata file is not checked.
  • -1: no directory specified.
  • -3: unable to open the metadata file.

Implements ibis::tablex.

References ibis::util::checksum(), ibis::horometer::CPUTime(), ibis::tafel::column::desc, ibis::tafel::column::dictfile, ibis::DOUBLE, ibis::FLOAT, ibis::fileManager::flushDir(), ibis::dictionary::fromASCII(), ibis::util::getFileSize(), ibis::gParameters(), ibis::tafel::column::indexSpec, ibis::fileManager::instance(), ibis::INT, ibis::util::int2string(), ibis::LONG, ibis::tafel::column::name, ibis::horometer::realTime(), ibis::util::secondsToString(), ibis::SHORT, ibis::dictionary::size(), ibis::horometer::start(), ibis::horometer::stop(), ibis::tafel::column::type, ibis::TYPESTRING, ibis::UBYTE, ibis::UINT, ibis::ULONG, ibis::USHORT, and ibis::dictionary::write().

Member Data Documentation

std::string ibis::tafel::metatags
protected

Meta tags.

They are optional name-value pairs meant to describe the data partition.


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