示例#1
0
 void diff(TupleSet set1, TupleSet set2) {
     std::vector<int64_t> diff;
     std::insert_iterator<std::vector<int64_t> > idiff( diff, diff.begin());
     std::set_difference(set1.begin(), set1.end(), set2.begin(), set2.end(), idiff);
     if (diff.size() <= MAX_DETAIL_COUNT) {
         for (int ii = 0; ii < diff.size(); ii++) {
             int32_t *values = reinterpret_cast<int32_t*>(&diff[ii]);
             valueError(values, "tuple");
         }
     }
     else {
         error("(%lu tuples)", diff.size());
     }
 }
示例#2
0
inline
bool UnionSetOperator::needToInsert(const TableTuple& tuple, TupleSet& tuples) {
    bool result = tuples.find(tuple) == tuples.end();
    if (result) {
        tuples.insert(tuple);
    }
    return result;
}
示例#3
0
// for debugging - may be unused
void SetOperator::printTupleSet(const char* nonce, TupleSet &tuples) {
    printf("Printing TupleSet (%s): ", nonce);
    for (TupleSet::const_iterator setIt = tuples.begin(); setIt != tuples.end(); ++setIt) {
        printf("%s, ", setIt->debugNoHeader().c_str());
    }
    printf("\n");
    fflush(stdout);
}
示例#4
0
 bool needToInsert(const TableTuple& tuple, TupleSet& tuples)
 {
     bool result = tuples.find(tuple) == tuples.end();
     if (result) {
         tuples.insert(tuple);
     }
     return result;
 }