本文整理汇总了C++中Relation::getBlocks方法的典型用法代码示例。如果您正苦于以下问题:C++ Relation::getBlocks方法的具体用法?C++ Relation::getBlocks怎么用?C++ Relation::getBlocks使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Relation
的用法示例。
在下文中一共展示了Relation::getBlocks方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: distinct
string distinct(string tableName) {
Relation *relation = schemaManager.getRelation(tableName);
Schema schema = relation->getSchema();
int size = relation->getNumOfBlocks();
vector<Tuple> tuples;
bool flag = true;
//one-pass
if(size<=10) {
relation->getBlocks(0,0,size);
tuples = mainMemory.getTuples(0,size);
tuples = getDistinctTuples(tuples);
Relation *relation1 = schemaManager.createRelation(tableName+"_distinct",schema);
insertTuples(tableName+"_distinct",tuples);
}
//two pass
else {
int index = 0, loadSize=10;
while(size>0) {
relation->getBlocks(index,0,loadSize);
for(int i=0;i<loadSize;i++) {
Block *block = mainMemory.getBlock(i);
for(int j=0;j<block->getNumTuples();j++) {
tuples.push_back(block->getTuple(j));
}
}
tuples = getDistinctTuples(tuples);
//partition(tuples, 0, tuples.size()-1);
if(flag) {
Relation *relation2= schemaManager.createRelation(tableName+"_dis", schema);
flag = false;
}
insertTuples(tableName+"_dis", tuples);
Relation *relation2 = schemaManager.getRelation(tableName+"_dis");
tuples.clear();
index = index+10;
size = size-10;
if(size<10)
loadSize = size;
}
if(size<=100) {
Relation *relation2 = schemaManager.createRelation(tableName+"_distinct", schema);
relation = schemaManager.getRelation(tableName+"_dis");
int buckets = relation->getNumOfBlocks()/10;
vector<Tuple> tuples;
for(int i=0;i<10;i++) {
for(int j=0;j<buckets;j++) {
if(j*10+i > relation->getNumOfBlocks()) break;
relation->getBlock(i+10*j,j);
Block *block = mainMemory.getBlock(j);
for(int k=0;k<block->getNumTuples();k++) {
tuples.push_back(block->getTuple(k));
}
}
}
tuples = getDistinctTuples(tuples);
insertTuples(tableName+"_distinct", tuples);
tuples.clear();
schemaManager.deleteRelation(tableName+"_dis");
}
else
cerr<<"Table size exceeds the limit size(mainMemory)^2"<<endl;
}
return tableName+"_distinct";
}