14 #if defined(_WIN32) && defined(_MSC_VER)
15 #pragma warning(disable:4786) // some identifier longer than 256 characters
36 bin(
const ibis::column* c,
const char* f,
const std::vector<double>& bd);
44 virtual void print(std::ostream& out)
const;
45 virtual void serialSizes(uint64_t&, uint64_t&, uint64_t&)
const;
49 virtual int write(
const char* dt)
const;
50 virtual int read(
const char* idxfile);
52 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
124 virtual const char*
name()
const {
return "bin";}
125 virtual uint32_t numBins()
const {
return (nobs>2?nobs-2:0);}
128 virtual void binWeights(std::vector<uint32_t>&)
const;
132 virtual void speedTest(std::ostream& out)
const;
137 std::vector<uint32_t>& cts)
const;
139 std::vector<uint32_t>& cts)
const;
140 virtual double getMin()
const;
141 virtual double getMax()
const;
142 virtual double getSum()
const;
150 int read(
int fdes,
size_t offset,
const char *
fname,
const char *header);
154 long append(
const array_t<uint32_t>& ind);
190 granule() : minm(DBL_MAX), maxm(-DBL_MAX), minp(DBL_MAX),
191 maxp(-DBL_MAX), loce(0), locm(0), locp(0) {};
199 typedef std::map< double, granule* > granuleMap;
202 template <
typename T>
209 ibis::bitvector::word_t
jv;
211 ibis::bitvector::word_t
ji;
217 :
vals(v.begin()),
ind(b.firstIndexSet()),
jv(0),
ji(0) {
267 template <
typename E>
272 uint32_t& cand0, uint32_t& cand1)
const;
275 uint32_t& cand0, uint32_t& cand1,
276 uint32_t& hit0, uint32_t& hit1)
const;
291 void binning(
const char* f,
const std::vector<double>& bd);
298 template <
typename E>
300 template <
typename E>
303 template <
typename E>
306 template <
typename E>
319 template <
typename E>
321 template <
typename E>
323 template <
typename E>
325 template <
typename E>
326 void scanAndPartition(
const array_t<E>&,
unsigned);
327 template <
typename E>
328 void mapGranules(
const array_t<E>&, granuleMap& gmap)
const;
329 void printGranules(std::ostream& out,
const granuleMap& gmap)
const;
334 void scanAndPartition(
const char*,
unsigned, uint32_t nbins=0);
336 void addBounds(
double lbd,
double rbd, uint32_t nbins, uint32_t eqw);
342 std::vector<
unsigned>& parts) const;
349 virtual uint32_t
locate(const
double& val) const;
362 bounds.
swap(rhs.bounds);
363 maxval.
swap(rhs.maxval);
364 minval.
swap(rhs.minval);
368 virtual void clear();
372 template <
typename T>
long
374 template <
typename T>
long
380 bin& operator=(
const bin&);
382 void print(std::ostream& out,
const uint32_t tot,
383 const double& lbound,
const double& rbound)
const;
504 friend class ibis::mesh;
505 friend class ibis::band;
520 virtual int read(
const char* idxfile);
522 virtual int write(
const char* dt)
const;
523 virtual void print(std::ostream& out)
const;
524 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
550 virtual const char*
name()
const {
return "range";}
551 virtual uint32_t numBins()
const {
return (nobs>1?nobs-1:0);}
554 virtual void binWeights(std::vector<uint32_t>&)
const;
558 virtual double getMax()
const;
559 virtual double getSum()
const;
561 int read(
int fdes,
size_t offset,
const char *
fname,
const char *);
563 virtual void speedTest(std::ostream& out)
const;
571 virtual uint32_t
locate(
const double& val)
const {
575 uint32_t& cand0, uint32_t& cand1)
const;
577 uint32_t& cand0, uint32_t& cand1,
578 uint32_t& hit0, uint32_t& hit1)
const;
588 int write32(
int fptr) const;
589 int write64(
int fptr) const;
590 void print(
std::ostream& out, const uint32_t tot, const
double& lbound,
591 const
double& rbound) const;
606 virtual void print(std::ostream& out)
const;
607 virtual int write(
const char* dt)
const;
608 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
634 virtual const char*
name()
const {
return "interval";}
635 virtual uint32_t numBins()
const {
return (nobs>2?nobs-2:0);}
638 virtual void binWeights(std::vector<uint32_t>&)
const;
639 virtual double getSum()
const;
641 virtual void speedTest(std::ostream& out)
const;
654 mesa& operator=(const mesa&);
667 virtual int read(
const char* idxfile);
669 virtual int write(
const char* dt)
const;
670 virtual void print(std::ostream& out)
const;
671 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
696 virtual const char*
name()
const {
return "range-range";}
697 virtual uint32_t numBins()
const {
return (nobs>1?nobs-1:0);}
700 virtual void binWeights(std::vector<uint32_t>&)
const;
702 virtual double getSum()
const;
704 virtual void speedTest(std::ostream& out)
const;
709 virtual void clear();
711 void construct(
const char* f,
const array_t<double>& bd);
720 int write32(
int fptr) const;
721 int write64(
int fptr) const;
722 int read(
int fdes,
size_t offset, const
char *fn, const
char *header);
723 void print(
std::ostream& out, const uint32_t tot, const
double& lbound,
724 const
double& rbound) const;
727 ambit& operator=(const ambit&);
734 virtual ~pale() {
clear();};
739 virtual int read(
const char* idxfile);
741 virtual int write(
const char* dt)
const;
742 virtual void print(std::ostream& out)
const;
743 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
767 virtual const char*
name()
const {
return "equality-range";}
768 virtual uint32_t numBins()
const {
return (nobs>1?nobs-1:0);}
771 virtual void binWeights(std::vector<uint32_t>&)
const;
774 virtual void speedTest(std::ostream& out)
const;
778 virtual void clear();
786 int write32(
int fptr) const;
787 int write64(
int fptr) const;
790 pale& operator=(const pale&);
802 virtual int read(
const char* idxfile);
804 virtual int write(
const char* dt)
const;
805 virtual void print(std::ostream& out)
const;
806 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
829 virtual const char*
name()
const {
return "range-equality";}
830 virtual uint32_t numBins()
const {
return (nobs>1?nobs-1:0);}
833 virtual void binWeights(std::vector<uint32_t>&)
const;
835 virtual double getSum()
const;
837 virtual void speedTest(std::ostream& out)
const;
842 virtual void clear();
852 int write32(
int fptr) const;
853 int write64(
int fptr) const;
856 pack& operator=(const pack&);
868 virtual int read(
const char* idxfile);
870 virtual int write(
const char* dt)
const;
871 virtual void print(std::ostream& out)
const;
872 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
890 virtual const char*
name()
const {
return "equality-equality";}
891 virtual uint32_t numBins()
const {
return (nobs>1?nobs-1:0);}
894 virtual void binWeights(std::vector<uint32_t>&)
const;
897 virtual void speedTest(std::ostream& out)
const;
901 virtual void clear();
909 int write32(
int fptr) const;
910 int write64(
int fptr) const;
913 zone& operator=(const zone&);
929 virtual int read(
const char* idxfile);
931 virtual void print(std::ostream& out)
const;
932 virtual int write(
const char* dt)
const;
933 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
948 virtual const char*
name()
const {
return "interval-equality";}
961 mutable
array_t<int32_t> coffset32;
962 mutable
array_t<int64_t> coffset64;
965 void activateCoarse() const;
966 void activateCoarse(uint32_t i) const;
967 void activateCoarse(uint32_t i, uint32_t j) const;
969 int writeCoarse32(
int fdes) const;
970 int writeCoarse64(
int fdes) const;
971 int readCoarse(const
char *fn);
975 long coarseEstimate(uint32_t lo, uint32_t hi) const;
977 long coarseEvaluate(uint32_t lo, uint32_t hi,
ibis::
bitvector& res) const;
980 fuge& operator=(const fuge&);
990 const uint32_t nbase = 2);
995 virtual int read(
const char* idxfile);
997 virtual int write(
const char* dt)
const;
998 virtual void print(std::ostream& out)
const;
999 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
1018 virtual const char*
name()
const {
return "MCBin";}
1021 virtual void binWeights(std::vector<uint32_t>& b)
const;
1022 virtual double getSum()
const;
1024 virtual void speedTest(std::ostream& out)
const;
1045 int write32(
int fdes)
const;
1046 int write64(
int fdes)
const;
1052 void setBit(const uint32_t i, const
double val);
1057 void evalLL(
ibis::
bitvector& res, uint32_t b0, uint32_t b1) const;
1060 egale& operator=(const egale&);
1068 virtual int write(
const char* dt)
const;
1069 virtual void print(std::ostream& out)
const;
1070 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
1090 virtual const char*
name()
const {
return "MCBRange";}
1094 const uint32_t nbase = 2);
1097 moins(
const ibis::bin& rhs,
const uint32_t nbase = 2);
1099 virtual void speedTest(std::ostream& out)
const;
1100 virtual double getSum()
const;
1103 long append(
const array_t<uint32_t>& ind);
1110 moins(
const ibis::column* c,
const char* f,
const array_t<double>& bd,
1111 const array_t<uint32_t> bs);
1118 moins(
const moins&);
1119 moins& operator=(
const moins&);
1129 const uint32_t nbase = 2);
1134 virtual int write(
const char* dt)
const;
1135 virtual void print(std::ostream& out)
const;
1136 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
1156 virtual const char*
name()
const {
return "MCBInterval";}
1158 virtual void speedTest(std::ostream& out)
const;
1159 virtual double getSum()
const;
1192 size_t offset = 8) :
ibis::bin(c, st, offset) {};
1194 virtual void print(std::ostream& out)
const;
1195 virtual int write(
const char* dt)
const;
1197 virtual int read(
const char* idxfile);
1198 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
1201 {
return "equality code on mapped values";}
1204 virtual void binWeights(std::vector<uint32_t>&)
const;
1219 grain() : min(DBL_MAX), max(-DBL_MAX), loc(0) {}
1220 ~
grain() {
delete loc;}
1223 typedef std::map< double, grain > bakMap;
1229 void mapValues(
const char* f, bakMap& bmap)
const;
1230 void printMap(std::ostream& out,
const bakMap& bmap)
const;
1232 virtual uint32_t
locate(
const double& val)
const;
1234 uint32_t& cand0, uint32_t& cand1)
const {
1238 uint32_t& cand0, uint32_t& cand1,
1239 uint32_t& hit0, uint32_t& hit1)
const {
1248 const bak& operator&=(
const bak&);
1261 size_t offset = 8) :
ibis::bin(c, st, offset) {};
1263 virtual void print(std::ostream& out)
const;
1264 virtual int write(
const char* dt)
const;
1266 virtual int read(
const char* idxfile);
1267 virtual long append(
const char* dt,
const char* df, uint32_t nnew);
1270 {
return "equality code on mapped values";}
1273 virtual void binWeights(std::vector<uint32_t>&)
const;
1285 double minm, maxm, minp, maxp;
1291 grain() : minm(DBL_MAX), maxm(-DBL_MAX), minp(DBL_MAX), maxp(-DBL_MAX),
1292 locm(0), loce(0), locp(0) {}
1293 ~
grain() {
delete locm;
delete loce;
delete locp;}
1296 typedef std::map< double, grain > bakMap;
1302 void mapValues(
const char* f, bakMap& bmap)
const;
1303 void printMap(std::ostream& out,
const bakMap& bmap)
const;
1305 virtual uint32_t
locate(
const double& val)
const;
1307 uint32_t& cand0, uint32_t& cand1)
const {
1311 uint32_t& cand0, uint32_t& cand1,
1312 uint32_t& hit0, uint32_t& hit1)
const {
1325 #endif // IBIS_IBIN_H
virtual void estimate(const ibis::qContinuousRange &expr, ibis::bitvector &lower, ibis::bitvector &upper) const
Provide an estimation based on the current index.
Definition: irange.cpp:3229
A class to represent simple range conditions.
Definition: qExpr.h:207
A two-level index.
Definition: ibin.h:795
virtual long select(const ibis::qContinuousRange &, void *) const
Select the rows that satisfy the range condition.
Definition: ibin.h:808
ibis::range.
Definition: index.h:93
word_t nIndices() const
Number of indices.
Definition: bitvector.h:508
void binningT(const char *fname)
Read the data file, partition the values, and write out the bin ordered data with ...
Definition: ibin.cpp:1711
ibis::fuge, binned interval-equality encoding.
Definition: index.h:146
virtual long select(const ibis::qContinuousRange &, void *, ibis::bitvector &) const
Select the rows that satisfy the range condition.
Definition: ibin.h:675
A simple structure to record the position of the values mapped to the same low-precision target value...
Definition: ibin.h:1284
virtual int write(const char *dt) const
Write the existing content to the given directory or file.
Definition: irange.cpp:357
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:1090
virtual double computeSum() const
Compute the sum of values from the information in the index.
Definition: ibin.cpp:8510
const char * fname
The name of the file containing the index.
Definition: index.h:404
void addBounds(double lbd, double rbd, uint32_t nbins, uint32_t eqw)
The function used by setBoudaries() to actually generate the bounds.
Definition: ibin.cpp:3984
virtual long select(const ibis::qContinuousRange &, void *, ibis::bitvector &) const
Select the rows that satisfy the range condition.
Definition: ibin.h:810
void binning(const char *f, const std::vector< double > &bd)
Generate bins according to the specified boundaries.
Definition: ibin.cpp:745
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:1269
virtual long select(const ibis::qContinuousRange &, void *) const
Select the rows that satisfy the range condition.
Definition: ibin.h:673
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:890
virtual double getSum() const
Compute the approximate value of the sum from the binned index.
Definition: ibin.cpp:8485
Definition of the common functions of an index.
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:816
long binOrder(const char *fname) const
Write bin-ordered values.
Definition: ibin.cpp:1942
ibis::zone, equality-equality encoding on bins.
Definition: index.h:103
static uint32_t parseNbins(const ibis::column &)
Parse the index specs to determine eqw and nbins.
Definition: ibin.cpp:3695
void clear()
Reset the size to zero.
Definition: array_t.h:171
uint32_t nrows
The number of rows represented by the index.
Definition: index.h:418
Simple range condition.
Definition: qExpr.h:252
A two-level index.
Definition: ibin.h:921
The storage class treats all memory as char*.
Definition: fileManager.h:237
ibis::bitvector * locp
!< Values exactly equal to the target.
Definition: ibin.h:1288
ibis::bitvector * locm
!< Values equal to the target.
Definition: ibin.h:186
array_t< ibis::bitvector * > bits
A list of bitvectors.
Definition: index.h:414
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:696
virtual double getSum() const
Compute the approximate value of the sum from the binned index.
Definition: irange.cpp:3607
virtual double getMax() const
Compute the actual maximum value from the binned index.
Definition: irange.cpp:3597
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:828
A data structure to assist the mapping of values to lower precisions.
Definition: ibin.h:182
array_t< double > minval
!< The maximal values in each bin.
Definition: ibin.h:284
ibis::bak, reduced precision mapping, equality code.
Definition: index.h:123
virtual float undecidable(const ibis::qContinuousRange &expr, ibis::bitvector &iffy) const
Mark the position of the rows that can not be decided with this index.
Definition: ibin.cpp:6895
virtual size_t getSerialSize() const
Compute the size of the serialized version of the index.
Definition: ibin.cpp:11800
long binOrderT(const char *fname) const
Write bin-ordered values.
Definition: ibin.cpp:1986
virtual long select(const ibis::qContinuousRange &, void *) const
Select the rows that satisfy the range condition.
Definition: ibin.h:610
double coarsen(const double in, unsigned prec=2)
Reduce the decimal precision of the incoming floating-point value to specified precision.
Definition: util.h:1633
virtual long select(const ibis::qContinuousRange &, void *, ibis::bitvector &) const
Select the rows that satisfy the range condition.
Definition: ibin.h:1074
void swap(array_t< T > &rhs)
Swap the content of two array_t objects.
Definition: array_t.h:184
ibis::bin.
Definition: index.h:91
virtual long select(const ibis::qContinuousRange &, void *, ibis::bitvector &) const
Select the rows that satisfy the range condition.
Definition: ibin.h:747
The current implementation of FastBit is code named IBIS; most data structures and functions are in t...
Definition: bord.h:16
virtual void estimate(const ibis::qContinuousRange &, ibis::bitvector &lower, ibis::bitvector &upper) const
Computes an approximation of hits as a pair of lower and upper bounds.
Definition: index.h:191
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:1089
The class to represent a column of a data partition.
Definition: column.h:65
ibis::pale, equality-range encoding on bins.
Definition: index.h:99
virtual long evaluate(const ibis::qContinuousRange &expr, ibis::bitvector &hits) const =0
To evaluate the exact hits.
const word_t * indices() const
Pointer to the indices.
Definition: bitvector.h:506
ibis::bitvector::word_t jv
The current index in vals.
Definition: ibin.h:209
virtual long append(const char *dt, const char *df, uint32_t nnew)
Create index for the data in df and append the result to the index in dt.
Definition: irange.cpp:1059
A data structure to represent a sequence of bits.
Definition: bitvector64.h:54
virtual void print(std::ostream &out) const
Prints human readable information.
Definition: ibin.cpp:6034
virtual void speedTest(std::ostream &out) const
Time some logical operations and print out their speed.
Definition: irange.cpp:948
virtual void binBoundaries(std::vector< double > &) const
The function binBoundaries and binWeights return bin boundaries and counts of each bin respectively...
Definition: irange.cpp:925
virtual long evaluate(const ibis::qContinuousRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: irange.cpp:3108
grain()
!< Values greater than the target.
Definition: ibin.h:1291
A variation on ibis::bak, it splits each bin of ibis::bak in two, one for entries less than the mappe...
Definition: ibin.h:1256
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:829
A two-level index.
Definition: ibin.h:732
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:550
virtual float undecidable(const ibis::qContinuousRange &expr, ibis::bitvector &iffy) const
Mark the position of the rows that can not be decided with this index.
Definition: index.h:205
virtual long select(const ibis::qContinuousRange &, void *, ibis::bitvector &) const
Select the rows that satisfy the range condition.
Definition: ibin.h:1140
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:1018
virtual double computeSum() const
Compute the sum of values from the information in the index.
Definition: irange.cpp:3628
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:889
void next()
Move to the next row.
Definition: ibin.h:236
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:1155
array_t< double > maxval
!< The nominal boundaries.
Definition: ibin.h:283
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:618
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:124
void readBinBoundaries(const char *name, uint32_t nb)
Read a file containing a list of floating-point numbers.
Definition: ibin.cpp:4636
The base index class.
Definition: index.h:82
virtual void locate(const ibis::qContinuousRange &expr, uint32_t &cand0, uint32_t &cand1) const
Find the outer boundaries of the range expression.
Definition: ibin.h:1233
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:549
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:1199
bin(const ibis::bin &rhs)
Copy constructor. It performs a deep copy.
Definition: ibin.cpp:225
Maps each value to a lower prevision (decimal) values and use the the low precision value as center o...
Definition: ibin.h:1187
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:766
long checkBin(const ibis::qRange &cmp, uint32_t jbin, ibis::bitvector &res) const
Candidate check using the binned values.
Definition: ibin.cpp:2220
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:1003
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:948
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:937
INDEX_TYPE
The integer values of this enum type are used in the index files to differentiate the indexes...
Definition: index.h:86
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:1080
virtual double estimateCost(const ibis::qContinuousRange &) const
Estimate the cost of evaluating a range condition.
Definition: index.h:263
void divideBitmaps(const array_t< bitvector * > &bms, std::vector< unsigned > &parts) const
Partition the bitmaps into groups of takes about the same amount of storage.
Definition: ibin.cpp:5472
ibis::entre, multicomponent interval encoding on bins.
Definition: index.h:121
virtual int write(ibis::array_t< double > &, ibis::array_t< int64_t > &, ibis::array_t< uint32_t > &) const
Save index to three arrays. Serialize the index in memory.
Definition: ibin.cpp:5836
virtual void clear()
Clear the existing content.
Definition: ibin.h:1040
virtual float undecidable(const ibis::qContinuousRange &expr, ibis::bitvector &iffy) const
Mark the position of the rows that can not be decided with this index.
Definition: irange.cpp:3378
virtual void binBoundaries(std::vector< double > &) const
The function binBoundaries and binWeights return bin boundaries and counts of each bin respectively...
Definition: ibin.cpp:5889
static unsigned parsePrec(const ibis::column &)
Parse the index spec to extract precision.
Definition: ibin.cpp:3892
granule()
!< Values greater than the target.
Definition: ibin.h:190
ibis::pack, range-equality encoding on bins.
Definition: index.h:101
virtual long select(const ibis::qContinuousRange &, void *) const
Select the rows that satisfy the range condition.
Definition: ibin.h:745
virtual size_t getSerialSize() const
Estimate the size of serialized version of the index.
Definition: irange.cpp:3655
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:1156
The multicomponent range code on bins.
Definition: ibin.h:1066
A list of values and their positions.
Definition: ibin.h:203
This class implements the interval encoding of Chan and Ioannidis.
Definition: ibin.h:598
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:1268
virtual int expandRange(ibis::qContinuousRange &rng) const
The functions expandRange and contractRange expands or contracts the boundaries of a range condition ...
Definition: ibin.cpp:6941
ibis::bitvector * loce
!< Values less than the target.
Definition: ibin.h:1287
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:876
virtual long select(const ibis::qContinuousRange &, void *, ibis::bitvector &) const
Select the rows that satisfy the range condition.
Definition: ibin.h:612
virtual void locate(const ibis::qContinuousRange &expr, uint32_t &cand0, uint32_t &cand1, uint32_t &hit0, uint32_t &hit1) const
Find the bins related to the range expression.
Definition: ibin.h:1237
The equality encoded bitmap index with binning.
Definition: ibin.h:27
void swap(bin &rhs)
Swap the content of the index.
Definition: ibin.h:352
virtual void locate(const ibis::qContinuousRange &expr, uint32_t &cand0, uint32_t &cand1, uint32_t &hit0, uint32_t &hit1) const
Find the bins related to the range expression.
Definition: ibin.h:1310
virtual double estimateCost(const ibis::qContinuousRange &expr) const
Estimate the cost of evaluating a range condition.
Definition: ibin.cpp:6531
virtual uint32_t locate(const double &val) const
Find the bin containing val.
Definition: ibin.h:571
The indexSet stores positions of bits that are one.
Definition: bitvector.h:421
bool isRange() const
Is the index set a consecutive range?
Definition: bitvector.h:504
virtual void print(std::ostream &out) const
Prints human readable information.
Definition: irange.cpp:979
bitvector::word_t position() const
The current position (RID).
Definition: ibin.h:223
virtual long evaluate(const ibis::qContinuousRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.cpp:6614
virtual int read(const char *idxfile)
Read from a file named f.
Definition: ibin.cpp:468
virtual long append(const char *dt, const char *df, uint32_t nnew)
Create index for the data in df and append the result to the index in dt.
Definition: ibin.cpp:6257
ibis::bitvector::word_t ji
The current index value inside the index set.
Definition: ibin.h:211
void construct(const char *)
Construct a new index.
Definition: irange.cpp:606
int write32(int fptr) const
Write the content to a file already open.
Definition: ibin.cpp:5656
ibis::moins, multicomponent range encoding on bins.
Definition: index.h:119
The abstract base class for arithmetic terms.
Definition: qExpr.h:728
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:634
virtual double getMax() const
Compute the actual maximum value from the binned index.
Definition: ibin.cpp:8472
virtual void estimate(const ibis::qContinuousRange &expr, ibis::bitvector &lower, ibis::bitvector &upper) const
Provide an estimation based on the current index.
Definition: ibin.cpp:6722
virtual void locate(const ibis::qContinuousRange &expr, uint32_t &cand0, uint32_t &cand1) const
Find the outer boundaries of the range expression.
Definition: ibin.h:1306
virtual void estimate(const ibis::qContinuousRange &expr, ibis::bitvector &lower, ibis::bitvector &upper) const
Provide an estimation based on the current index.
Definition: icegale.cpp:1580
A data structure to represent a sequence of bits.
Definition: bitvector.h:62
virtual long select(const ibis::qContinuousRange &, void *) const
Select the rows that satisfy the range condition.
Definition: ibin.h:1138
void setBoundaries(const char *f)
Set bin boundaries.
Definition: ibin.cpp:4692
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:695
ibis::interval.
Definition: index.h:95
virtual long getCumulativeDistribution(std::vector< double > &bds, std::vector< uint32_t > &cts) const
Compute the cumulative distribution from the binned index.
Definition: ibin.cpp:8520
virtual void clear()
Clear the existing content.
Definition: ibin.cpp:5881
virtual void adjustLength(uint32_t nrows)
Fill the bitmaps to the specified size.
Definition: ibin.cpp:661
const ibis::column * col
Pointer to the column this index is for.
Definition: index.h:395
The range encoded bitmap index based.
Definition: ibin.h:511
int write64(int fptr) const
write the content to a file already open.
Definition: ibin.cpp:5746
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:753
The multi-level range based (cumulative) index.
Definition: ibin.h:659
ibis::ambit, range-range two level encoding on bins.
Definition: index.h:97
virtual long select(const ibis::qContinuousRange &, void *) const
Select the rows that satisfy the range condition.
Definition: ibin.h:1072
array_t< double > bounds
!< Number of bitvectors.
Definition: ibin.h:282
virtual int expandRange(ibis::qContinuousRange &range) const
The functions expandRange and contractRange expands or contracts the boundaries of a range condition ...
Definition: irange.cpp:3413
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:1146
virtual void speedTest(std::ostream &out) const
Time some logical operations and print out their speed.
Definition: ibin.cpp:5922
ibis::bitvector::indexSet ind
The index set representing the positions.
Definition: ibin.h:207
int(* FastBitReadBitmaps)(void *context, uint64_t start, uint64_t count, uint32_t *data)
A function prototype for delayed index reconstruction.
Definition: const.h:341
The multicomponent equality code on bins.
Definition: ibin.h:986
virtual long select(const ibis::qContinuousRange &, void *) const
Select the rows that satisfy the range condition.
Definition: ibin.h:526
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:633
A discrete range expression.
Definition: qExpr.h:337
The comparator used to build a min-heap based on positions.
Definition: ibin.h:260
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:947
T value() const
The current value.
Definition: ibin.h:231
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:123
virtual long select(const ibis::qContinuousRange &, void *) const
Select the rows that satisfy the range condition.
Definition: ibin.cpp:12109
virtual index * dup() const
Duplicate the content of an index object.
Definition: ibin.cpp:463
void construct(const char *)
Construct a binned bitmap index.
Definition: ibin.cpp:2591
long mergeValues(const ibis::qContinuousRange &, ibis::array_t< T > &) const
Extract values only.
Definition: ibin.cpp:11813
virtual void serialSizes(uint64_t &, uint64_t &, uint64_t &) const
Compute the size of arrays that would be generated by the serializatioin function (write)...
Definition: ibin.cpp:5862
virtual double getMin() const
Compute the actual minimum value from the binned index.
Definition: ibin.cpp:8461
virtual int read(const char *idxfile)
Read the content the named file.
Definition: irange.cpp:161
virtual long getDistribution(std::vector< double > &bbs, std::vector< uint32_t > &cts) const
Compute a histogram from the binned index.
Definition: ibin.cpp:8580
const T * vals
The list of values.
Definition: ibin.h:205
ibis::bitvector * locp
!< Values less than the target.
Definition: ibin.h:187
static unsigned parseScale(const ibis::column &)
Parse the specification about scaling.
Definition: ibin.cpp:3811
A two-level index.
Definition: ibin.h:861
The multicomponent interval code on bins.
Definition: ibin.h:1125
virtual long select(const ibis::qContinuousRange &, void *, ibis::bitvector &) const
Select the rows that satisfy the range condition.
Definition: ibin.h:528
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:1200
ibis::egale, multicomponent equality encoding on bins.
Definition: index.h:117
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:534
virtual INDEX_TYPE type() const
Returns an index type identifier.
Definition: ibin.h:1017
~granule()
Destructor.
Definition: ibin.h:193
A join is defined by two names and a numerical expression.
Definition: qExpr.h:1240
virtual void locate(const ibis::qContinuousRange &expr, uint32_t &cand0, uint32_t &cand1) const
Find the outer boundaries of the range expression.
Definition: ibin.cpp:7050
virtual void clear()
Clear the existing content.
Definition: ibin.h:954
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:681
void convertGranules(granuleMap &gmap)
Convert the granule map into binned index.
Definition: ibin.cpp:3620
virtual long evaluate(const ibis::qDiscreteRange &expr, ibis::bitvector &hits) const
To evaluate the exact hits.
Definition: ibin.h:59
virtual const char * name() const
Returns the name of the index, similar to the function type, but returns a string instead...
Definition: ibin.h:767