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()); } }
inline bool UnionSetOperator::needToInsert(const TableTuple& tuple, TupleSet& tuples) { bool result = tuples.find(tuple) == tuples.end(); if (result) { tuples.insert(tuple); } return result; }
// 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); }
bool needToInsert(const TableTuple& tuple, TupleSet& tuples) { bool result = tuples.find(tuple) == tuples.end(); if (result) { tuples.insert(tuple); } return result; }