Loading storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp +21 −23 Original line number Diff line number Diff line Loading @@ -1159,7 +1159,10 @@ NdbEventBuffer::nextEvent() NdbEventOperationImpl *op= data->m_event_op; DBUG_PRINT_EVENT("info", ("available data=%p op=%p", data, op)); // blob table ops must not be seen at this level /* * If merge is on, blob part sub-events must not be seen on this level. * If merge is not on, there are no blob part sub-events. */ assert(op->theMainOp == NULL); // set NdbEventOperation data Loading @@ -1175,13 +1178,6 @@ NdbEventBuffer::nextEvent() op->m_data_done_count++; #endif // NUL event is not returned if (data->sdata->operation == NdbDictionary::Event::_TE_NUL) { DBUG_PRINT_EVENT("info", ("skip _TE_NUL")); continue; } int r= op->receive_event(); if (r > 0) { Loading @@ -1203,6 +1199,12 @@ NdbEventBuffer::nextEvent() gci_ops = m_available_data.next_gci_ops(); } assert(gci_ops && (op->getGCI() == gci_ops->m_gci)); // to return TE_NUL it should be made into data event if (data->sdata->operation == NdbDictionary::Event::_TE_NUL) { DBUG_PRINT_EVENT("info", ("skip _TE_NUL")); continue; } DBUG_RETURN_EVENT(op->m_facade); } // the next event belonged to an event op that is no Loading Loading @@ -1800,20 +1802,20 @@ NdbEventBuffer::insertDataL(NdbEventOperationImpl *op, else { // event with same op, PK found, merge into old buffer Uint32 old_op = data->sdata->operation; if (unlikely(merge_data(sdata, ptr, data))) { op->m_has_error = 3; DBUG_RETURN_EVENT(-1); } Uint32 new_op = data->sdata->operation; // make Gci_ops reflect the merge by delete old and add new EventBufData_list::Gci_op g = { op, (1 << old_op) }; // bucket->m_data.del_gci_op(g); // XXX whats wrong? fix later g.event_types = (1 << new_op); // merge is on so we do not report blob part events if (! is_blob_event) { // report actual operation, not composite // there is no way to "fix" the flags for a composite op // since the flags represent multiple ops on multiple PKs EventBufData_list::Gci_op g = { op, (1 << sdata->operation) }; bucket->m_data.add_gci_op(g); } } DBUG_RETURN_EVENT(0); } Loading Loading @@ -2381,21 +2383,18 @@ void EventBufData_list::append_list(EventBufData_list *list, Uint64 gci) } void EventBufData_list::add_gci_op(Gci_op g, bool del) EventBufData_list::add_gci_op(Gci_op g) { DBUG_ENTER_EVENT("EventBufData_list::add_gci_op"); DBUG_PRINT_EVENT("info", ("p.op: %p g.event_types: %x", g.op, g.event_types)); assert(g.op != NULL); assert(g.op != NULL && g.op->theMainOp == NULL); // as in nextEvent Uint32 i; for (i = 0; i < m_gci_op_count; i++) { if (m_gci_op_list[i].op == g.op) break; } if (i < m_gci_op_count) { if (! del) m_gci_op_list[i].event_types |= g.event_types; else m_gci_op_list[i].event_types &= ~ g.event_types; } else { if (m_gci_op_count == m_gci_op_alloc) { Uint32 n = 1 + 2 * m_gci_op_alloc; Loading @@ -2413,7 +2412,6 @@ EventBufData_list::add_gci_op(Gci_op g, bool del) m_gci_op_alloc = n; } assert(m_gci_op_count < m_gci_op_alloc); assert(! del); #ifndef DBUG_OFF i = m_gci_op_count; #endif Loading storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp +1 −3 Original line number Diff line number Diff line Loading @@ -145,9 +145,7 @@ public: Gci_ops *first_gci_ops(); Gci_ops *next_gci_ops(); // case 1 above; add Gci_op to single list void add_gci_op(Gci_op g, bool del = false); // delete bit from existing flags void del_gci_op(Gci_op g) { add_gci_op(g, true); } void add_gci_op(Gci_op g); private: // case 2 above; move single list or multi list from // one list to another Loading storage/ndb/test/ndbapi/test_event_merge.cpp +754 −327 File changed.Preview size limit exceeded, changes collapsed. Show changes storage/ndb/test/run-test/daily-devel-tests.txt +10 −0 Original line number Diff line number Diff line Loading @@ -228,6 +228,16 @@ max-time: 2500 cmd: test_event args: -n CreateDropNR -l 2 # max-time: 600 cmd: test_event_merge args: --no-implicit-nulls --separate-events --maxops 10000 # max-time: 600 cmd: test_event_merge args: --no-implicit-nulls --no-multiops max-time: 600 cmd: testBasic args: -n PkRead T1 Loading Loading
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp +21 −23 Original line number Diff line number Diff line Loading @@ -1159,7 +1159,10 @@ NdbEventBuffer::nextEvent() NdbEventOperationImpl *op= data->m_event_op; DBUG_PRINT_EVENT("info", ("available data=%p op=%p", data, op)); // blob table ops must not be seen at this level /* * If merge is on, blob part sub-events must not be seen on this level. * If merge is not on, there are no blob part sub-events. */ assert(op->theMainOp == NULL); // set NdbEventOperation data Loading @@ -1175,13 +1178,6 @@ NdbEventBuffer::nextEvent() op->m_data_done_count++; #endif // NUL event is not returned if (data->sdata->operation == NdbDictionary::Event::_TE_NUL) { DBUG_PRINT_EVENT("info", ("skip _TE_NUL")); continue; } int r= op->receive_event(); if (r > 0) { Loading @@ -1203,6 +1199,12 @@ NdbEventBuffer::nextEvent() gci_ops = m_available_data.next_gci_ops(); } assert(gci_ops && (op->getGCI() == gci_ops->m_gci)); // to return TE_NUL it should be made into data event if (data->sdata->operation == NdbDictionary::Event::_TE_NUL) { DBUG_PRINT_EVENT("info", ("skip _TE_NUL")); continue; } DBUG_RETURN_EVENT(op->m_facade); } // the next event belonged to an event op that is no Loading Loading @@ -1800,20 +1802,20 @@ NdbEventBuffer::insertDataL(NdbEventOperationImpl *op, else { // event with same op, PK found, merge into old buffer Uint32 old_op = data->sdata->operation; if (unlikely(merge_data(sdata, ptr, data))) { op->m_has_error = 3; DBUG_RETURN_EVENT(-1); } Uint32 new_op = data->sdata->operation; // make Gci_ops reflect the merge by delete old and add new EventBufData_list::Gci_op g = { op, (1 << old_op) }; // bucket->m_data.del_gci_op(g); // XXX whats wrong? fix later g.event_types = (1 << new_op); // merge is on so we do not report blob part events if (! is_blob_event) { // report actual operation, not composite // there is no way to "fix" the flags for a composite op // since the flags represent multiple ops on multiple PKs EventBufData_list::Gci_op g = { op, (1 << sdata->operation) }; bucket->m_data.add_gci_op(g); } } DBUG_RETURN_EVENT(0); } Loading Loading @@ -2381,21 +2383,18 @@ void EventBufData_list::append_list(EventBufData_list *list, Uint64 gci) } void EventBufData_list::add_gci_op(Gci_op g, bool del) EventBufData_list::add_gci_op(Gci_op g) { DBUG_ENTER_EVENT("EventBufData_list::add_gci_op"); DBUG_PRINT_EVENT("info", ("p.op: %p g.event_types: %x", g.op, g.event_types)); assert(g.op != NULL); assert(g.op != NULL && g.op->theMainOp == NULL); // as in nextEvent Uint32 i; for (i = 0; i < m_gci_op_count; i++) { if (m_gci_op_list[i].op == g.op) break; } if (i < m_gci_op_count) { if (! del) m_gci_op_list[i].event_types |= g.event_types; else m_gci_op_list[i].event_types &= ~ g.event_types; } else { if (m_gci_op_count == m_gci_op_alloc) { Uint32 n = 1 + 2 * m_gci_op_alloc; Loading @@ -2413,7 +2412,6 @@ EventBufData_list::add_gci_op(Gci_op g, bool del) m_gci_op_alloc = n; } assert(m_gci_op_count < m_gci_op_alloc); assert(! del); #ifndef DBUG_OFF i = m_gci_op_count; #endif Loading
storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp +1 −3 Original line number Diff line number Diff line Loading @@ -145,9 +145,7 @@ public: Gci_ops *first_gci_ops(); Gci_ops *next_gci_ops(); // case 1 above; add Gci_op to single list void add_gci_op(Gci_op g, bool del = false); // delete bit from existing flags void del_gci_op(Gci_op g) { add_gci_op(g, true); } void add_gci_op(Gci_op g); private: // case 2 above; move single list or multi list from // one list to another Loading
storage/ndb/test/ndbapi/test_event_merge.cpp +754 −327 File changed.Preview size limit exceeded, changes collapsed. Show changes
storage/ndb/test/run-test/daily-devel-tests.txt +10 −0 Original line number Diff line number Diff line Loading @@ -228,6 +228,16 @@ max-time: 2500 cmd: test_event args: -n CreateDropNR -l 2 # max-time: 600 cmd: test_event_merge args: --no-implicit-nulls --separate-events --maxops 10000 # max-time: 600 cmd: test_event_merge args: --no-implicit-nulls --no-multiops max-time: 600 cmd: testBasic args: -n PkRead T1 Loading