bool StreamedTable::insertTuple(TableTuple &source) { size_t mark = 0; if (m_wrapper) { // handle any materialized views for (int i = 0; i < m_views.size(); i++) { m_views[i]->processTupleInsert(source, true); } mark = m_wrapper->appendTuple(m_executorContext->m_lastCommittedSpHandle, m_executorContext->currentSpHandle(), m_sequenceNo++, m_executorContext->currentUniqueId(), m_executorContext->currentTxnTimestamp(), source, ExportTupleStream::INSERT); m_tupleCount++; UndoQuantum *uq = m_executorContext->getCurrentUndoQuantum(); if (!uq) { // With no active UndoLog, there is no undo support. return true; } uq->registerUndoAction(new (*uq) StreamedTableUndoAction(this, mark)); } else { // handle any materialized views even though we dont have any connector. for (int i = 0; i < m_views.size(); i++) { m_views[i]->processTupleInsert(source, true); } } return true; }
bool StreamedTable::insertTuple(TableTuple &source) { size_t mark = 0; if (m_wrapper) { mark = m_wrapper->appendTuple(m_executorContext->m_lastCommittedSpHandle, m_executorContext->currentSpHandle(), m_sequenceNo++, m_executorContext->currentUniqueId(), m_executorContext->currentTxnTimestamp(), source, TupleStreamWrapper::INSERT); m_tupleCount++; UndoQuantum *uq = m_executorContext->getCurrentUndoQuantum(); if (!uq) { // With no active UndoLog, there is no undo support. return true; } uq->registerUndoAction(new (*uq) StreamedTableUndoAction(this, mark)); } return true; }
bool StreamedTable::insertTuple(TableTuple &source) { size_t mark = 0; if (m_wrapper) { mark = m_wrapper->appendTuple(m_executorContext->m_lastCommittedTxnId, m_executorContext->currentTxnId(), m_sequenceNo++, m_executorContext->currentTxnTimestamp(), source, TupleStreamWrapper::INSERT); m_tupleCount++; m_usedTupleCount++; UndoQuantum *uq = m_executorContext->getCurrentUndoQuantum(); Pool *pool = uq->getDataPool(); StreamedTableUndoAction *ua = new (pool->allocate(sizeof(StreamedTableUndoAction))) StreamedTableUndoAction(this, mark); uq->registerUndoAction(ua); } return true; }
bool StreamedTable::deleteTuple(TableTuple &tuple, bool fallible) { size_t mark = 0; if (m_wrapper) { mark = m_wrapper->appendTuple(m_executorContext->m_lastCommittedSpHandle, m_executorContext->currentSpHandle(), m_sequenceNo++, m_executorContext->currentUniqueId(), m_executorContext->currentTxnTimestamp(), tuple, TupleStreamWrapper::DELETE); m_tupleCount++; // Infallible delete (schema change with tuple migration & views) is not supported for export tables assert(fallible); UndoQuantum *uq = m_executorContext->getCurrentUndoQuantum(); if (!uq) { // With no active UndoLog, there is no undo support. return true; } uq->registerUndoAction(new (*uq) StreamedTableUndoAction(this, mark)); } return true; }