| 449 | } |
| 450 | |
| 451 | UCHAR* MergeJoin::getData(thread_db* /*tdbb*/, MergeFile* mfb, SLONG record) const |
| 452 | { |
| 453 | fb_assert(record >= 0 && record < (SLONG) mfb->mfb_equal_records); |
| 454 | |
| 455 | const ULONG merge_block = record / mfb->mfb_blocking_factor; |
| 456 | if (merge_block != mfb->mfb_current_block) |
| 457 | { |
| 458 | Sort::readBlock(mfb->mfb_space, mfb->mfb_block_size * merge_block, |
| 459 | mfb->mfb_block_data, mfb->mfb_block_size); |
| 460 | mfb->mfb_current_block = merge_block; |
| 461 | } |
| 462 | |
| 463 | const ULONG merge_offset = (record % mfb->mfb_blocking_factor) * mfb->mfb_record_size; |
| 464 | return mfb->mfb_block_data + merge_offset; |
| 465 | } |
| 466 | |
| 467 | SLONG MergeJoin::getRecordByIndex(thread_db* tdbb, FB_SIZE_T index) const |
| 468 | { |
no outgoing calls
no test coverage detected