CopyOnWriteContext::CopyOnWriteContext( PersistentTable &table, TupleSerializer &serializer, int32_t partitionId, const std::vector<std::string> &predicateStrings, int64_t totalTuples, bool doDelete) : m_table(table), m_backedUpTuples(TableFactory::getCopiedTempTable(table.databaseId(), "COW of " + table.name(), &table, NULL)), m_serializer(serializer), m_pool(2097152, 320), m_blocks(m_table.m_data), m_iterator(new CopyOnWriteIterator(&table, m_blocks.begin(), m_blocks.end())), m_maxTupleLength(serializer.getMaxSerializedTupleSize(table.schema())), m_tuple(table.schema()), m_finishedTableScan(false), m_partitionId(partitionId), m_totalTuples(totalTuples), m_tuplesRemaining(totalTuples), m_blocksCompacted(0), m_serializationBatches(0), m_inserts(0), m_updates(0), m_doDelete(doDelete) { // Parse predicate strings. The factory type determines the kind of // predicates that get generated. // Throws an exception to be handled by caller on errors. std::ostringstream errmsg; if (!m_predicates.parseStrings(predicateStrings, errmsg)) { throwFatalException("CopyOnWriteContext() failed to parse predicate strings."); } }
CopyOnWriteContext::CopyOnWriteContext( PersistentTable &table, TupleSerializer &serializer, int32_t partitionId, const std::vector<std::string> &predicateStrings, int64_t totalTuples) : TableStreamerContext(table, predicateStrings), m_backedUpTuples(TableFactory::getCopiedTempTable(table.databaseId(), "COW of " + table.name(), &table, NULL)), m_serializer(serializer), m_pool(2097152, 320), m_blocks(getTable().m_data), m_iterator(new CopyOnWriteIterator(&table, m_blocks.begin(), m_blocks.end())), m_maxTupleLength(serializer.getMaxSerializedTupleSize(table.schema())), m_tuple(table.schema()), m_finishedTableScan(false), m_partitionId(partitionId), m_totalTuples(totalTuples), m_tuplesRemaining(totalTuples), m_blocksCompacted(0), m_serializationBatches(0), m_inserts(0), m_updates(0) {}
/** * Constructor without predicates. */ TableStreamerContext::TableStreamerContext( PersistentTable &table, PersistentTableSurgeon &surgeon, int32_t partitionId, TupleSerializer &serializer) : m_surgeon(surgeon), m_table(table), m_maxTupleLength(serializer.getMaxSerializedTupleSize(table.schema())), m_serializer(serializer), m_partitionId(partitionId) {}
/** * Constructor with predicates. */ TableStreamerContext::TableStreamerContext( PersistentTable &table, PersistentTableSurgeon &surgeon, int32_t partitionId, TupleSerializer &serializer, const std::vector<std::string> &predicateStrings) : m_surgeon(surgeon), m_table(table), m_maxTupleLength(serializer.getMaxSerializedTupleSize(table.schema())), m_serializer(serializer), m_partitionId(partitionId) { updatePredicates(predicateStrings); }