MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / internalOpen

Method internalOpen

src/jrd/recsrc/MergeJoin.cpp:69–103  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

67}
68
69void MergeJoin::internalOpen(thread_db* tdbb) const
70{
71 Request* const request = tdbb->getRequest();
72 Impure* const impure = request->getImpure<Impure>(m_impure);
73
74 impure->irsb_flags = irsb_open;
75
76 for (FB_SIZE_T i = 0; i < m_args.getCount(); i++)
77 {
78 Impure::irsb_mrg_repeat* const tail = &impure->irsb_mrg_rpt[i];
79
80 // open all the substreams for the sort-merge
81
82 m_args[i]->open(tdbb);
83
84 // reset equality group record positions
85
86 tail->irsb_mrg_equal = -1;
87 tail->irsb_mrg_equal_end = -1;
88 tail->irsb_mrg_equal_current = -1;
89 tail->irsb_mrg_last_fetched = -1;
90 tail->irsb_mrg_order = tail - impure->irsb_mrg_rpt;
91
92 MergeFile* const mfb = &tail->irsb_mrg_file;
93 mfb->mfb_equal_records = 0;
94 mfb->mfb_current_block = 0;
95 mfb->mfb_record_size = ROUNDUP(m_args[i]->getLength(), FB_ALIGNMENT);
96 mfb->mfb_block_size = MAX(mfb->mfb_record_size, MERGE_BLOCK_SIZE);
97 mfb->mfb_blocking_factor = mfb->mfb_block_size / mfb->mfb_record_size;
98 if (!mfb->mfb_block_data)
99 {
100 mfb->mfb_block_data = FB_NEW_POOL(*request->req_pool) UCHAR[mfb->mfb_block_size];
101 }
102 }
103}
104
105void MergeJoin::close(thread_db* tdbb) const
106{

Callers

nothing calls this directly

Calls 4

getRequestMethod · 0.45
getCountMethod · 0.45
openMethod · 0.45
getLengthMethod · 0.45

Tested by

no test coverage detected