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

Method internalGetRecord

src/jrd/recsrc/LocalTableStream.cpp:78–104  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

76}
77
78bool LocalTableStream::internalGetRecord(thread_db* tdbb) const
79{
80 JRD_reschedule(tdbb);
81
82 const auto request = tdbb->getRequest();
83 const auto rpb = &request->req_rpb[m_stream];
84 const auto impure = request->getImpure<Impure>(m_impure);
85
86 if (!(impure->irsb_flags & irsb_open))
87 {
88 rpb->rpb_number.setValid(false);
89 return false;
90 }
91
92 if (!rpb->rpb_record)
93 rpb->rpb_record = FB_NEW_POOL(*tdbb->getDefaultPool()) Record(*tdbb->getDefaultPool(), m_format);
94
95 rpb->rpb_number.increment();
96
97 if (!m_table->getImpure(tdbb, request)->recordBuffer->fetch(rpb->rpb_number.getValue(), rpb->rpb_record))
98 {
99 rpb->rpb_number.setValid(false);
100 return false;
101 }
102
103 return true;
104}
105
106bool LocalTableStream::refetchRecord(thread_db* tdbb) const
107{

Callers

nothing calls this directly

Calls 9

JRD_rescheduleFunction · 0.85
setValidMethod · 0.80
RecordClass · 0.50
getRequestMethod · 0.45
getDefaultPoolMethod · 0.45
incrementMethod · 0.45
fetchMethod · 0.45
getImpureMethod · 0.45
getValueMethod · 0.45

Tested by

no test coverage detected