| 72 | } |
| 73 | |
| 74 | bool VirtualTableScan::internalGetRecord(thread_db* tdbb) const |
| 75 | { |
| 76 | JRD_reschedule(tdbb); |
| 77 | |
| 78 | Request* const request = tdbb->getRequest(); |
| 79 | record_param* const rpb = &request->req_rpb[m_stream]; |
| 80 | Impure* const impure = request->getImpure<Impure>(m_impure); |
| 81 | |
| 82 | if (!(impure->irsb_flags & irsb_open)) |
| 83 | { |
| 84 | rpb->rpb_number.setValid(false); |
| 85 | return false; |
| 86 | } |
| 87 | |
| 88 | rpb->rpb_runtime_flags &= ~RPB_CLEAR_FLAGS; |
| 89 | |
| 90 | rpb->rpb_number.increment(); |
| 91 | |
| 92 | if (retrieveRecord(tdbb, m_relation, rpb->rpb_number.getValue(), rpb->rpb_record)) |
| 93 | { |
| 94 | rpb->rpb_number.setValid(true); |
| 95 | return true; |
| 96 | } |
| 97 | |
| 98 | rpb->rpb_number.setValid(false); |
| 99 | return false; |
| 100 | } |
| 101 | |
| 102 | bool VirtualTableScan::refetchRecord(thread_db* /*tdbb*/) const |
| 103 | { |
nothing calls this directly
no test coverage detected