ndb - bug#27757

  tupscan misses uncommitted inserts by own transaction
    let tupkeyreq handle dirty/savepoint

  also siable diskscan as temporary fix for bug#27776
parent aba4abea
...@@ -61,11 +61,15 @@ Dbtup::execACC_SCANREQ(Signal* signal) ...@@ -61,11 +61,15 @@ Dbtup::execACC_SCANREQ(Signal* signal)
jam(); jam();
break; break;
} }
#if BUG_27776_FIXED
if (!AccScanReq::getNoDiskScanFlag(req->requestInfo) if (!AccScanReq::getNoDiskScanFlag(req->requestInfo)
&& tablePtr.p->m_no_of_disk_attributes) && tablePtr.p->m_no_of_disk_attributes)
{ {
bits |= ScanOp::SCAN_DD; bits |= ScanOp::SCAN_DD;
} }
#endif
bool mm = (bits & ScanOp::SCAN_DD); bool mm = (bits & ScanOp::SCAN_DD);
if (tablePtr.p->m_attributes[mm].m_no_of_varsize > 0) { if (tablePtr.p->m_attributes[mm].m_no_of_varsize > 0) {
bits |= ScanOp::SCAN_VS; bits |= ScanOp::SCAN_VS;
...@@ -593,7 +597,6 @@ Dbtup::scanNext(Signal* signal, ScanOpPtr scanPtr) ...@@ -593,7 +597,6 @@ Dbtup::scanNext(Signal* signal, ScanOpPtr scanPtr)
const bool mm = (bits & ScanOp::SCAN_DD); const bool mm = (bits & ScanOp::SCAN_DD);
const bool lcp = (bits & ScanOp::SCAN_LCP); const bool lcp = (bits & ScanOp::SCAN_LCP);
const bool dirty = (bits & ScanOp::SCAN_LOCK) == 0;
Uint32 lcp_list = fragPtr.p->m_lcp_keep_list; Uint32 lcp_list = fragPtr.p->m_lcp_keep_list;
Uint32 size = table.m_offsets[mm].m_fix_header_size + Uint32 size = table.m_offsets[mm].m_fix_header_size +
...@@ -764,7 +767,6 @@ Dbtup::scanNext(Signal* signal, ScanOpPtr scanPtr) ...@@ -764,7 +767,6 @@ Dbtup::scanNext(Signal* signal, ScanOpPtr scanPtr)
jam(); jam();
if (! (thbits & Tuple_header::FREE)) if (! (thbits & Tuple_header::FREE))
{ {
if (! ((thbits & Tuple_header::ALLOC) && dirty))
goto found_tuple; goto found_tuple;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment