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

Method IndexExpression

src/jrd/btr.cpp:452–487  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

450// IndexExpression class
451
452IndexExpression::IndexExpression(thread_db* tdbb, index_desc* idx)
453 : m_tdbb(tdbb)
454{
455 if (!(idx->idx_flags & idx_expression))
456 return;
457
458 fb_assert(idx->idx_expression);
459 m_expression = idx->idx_expression;
460
461 fb_assert(idx->idx_expression_statement);
462 const auto orgRequest = tdbb->getRequest();
463 m_request = idx->idx_expression_statement->findRequest(tdbb, true);
464
465 if (!m_request)
466 ERR_post(Arg::Gds(isc_random) << "Attempt to evaluate index expression recursively");
467
468 fb_assert(m_request != orgRequest);
469
470 fb_assert(!m_request->req_caller);
471 m_request->req_caller = orgRequest;
472
473 m_request->req_flags &= req_in_use;
474 m_request->req_flags |= req_active;
475
476 TRA_attach_request(tdbb->getTransaction(), m_request);
477 fb_assert(m_request->req_transaction);
478 TRA_setup_request_snapshot(tdbb, m_request);
479
480 if (orgRequest)
481 m_request->setGmtTimeStamp(orgRequest->getGmtTimeStamp());
482 else
483 m_request->validateTimeStamp();
484
485 m_request->req_rpb[0].rpb_number.setValue(BOF_NUMBER);
486 m_request->req_rpb[0].rpb_number.setValid(true);
487}
488
489IndexExpression::~IndexExpression()
490{

Callers

nothing calls this directly

Calls 12

GdsClass · 0.85
TRA_attach_requestFunction · 0.85
findRequestMethod · 0.80
validateTimeStampMethod · 0.80
setValidMethod · 0.80
ERR_postFunction · 0.70
getRequestMethod · 0.45
getTransactionMethod · 0.45
setGmtTimeStampMethod · 0.45
getGmtTimeStampMethod · 0.45
setValueMethod · 0.45

Tested by

no test coverage detected