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

Method getStatement

src/jrd/ProfilerManager.cpp:705–758  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

703}
704
705ProfilerManager::Statement* ProfilerManager::getStatement(Request* request)
706{
707 if (!isActive())
708 return nullptr;
709
710 auto mainProfileStatement = currentSession->statements.get(request->getStatement()->getStatementId());
711
712 if (mainProfileStatement)
713 return mainProfileStatement;
714
715 for (const auto* statement = request->getStatement();
716 statement && !currentSession->statements.exist(statement->getStatementId());
717 statement = statement->parentStatement)
718 {
719 MetaName packageName;
720 MetaName routineName;
721 const char* type;
722
723 if (const auto routine = statement->getRoutine())
724 {
725 if (statement->procedure)
726 type = "PROCEDURE";
727 else if (statement->function)
728 type = "FUNCTION";
729
730 packageName = routine->getName().package;
731 routineName = routine->getName().identifier;
732 }
733 else if (statement->triggerName.hasData())
734 {
735 type = "TRIGGER";
736 routineName = statement->triggerName;
737 }
738 else
739 type = "BLOCK";
740
741 const StmtNumber parentStatementId = statement->parentStatement ?
742 statement->parentStatement->getStatementId() : 0;
743
744 LogLocalStatus status("Profiler defineStatement");
745 currentSession->pluginSession->defineStatement(&status,
746 (SINT64) statement->getStatementId(), (SINT64) parentStatementId,
747 type, packageName.nullStr(), routineName.nullStr(),
748 (statement->sqlText.hasData() ? statement->sqlText->c_str() : ""));
749
750 auto profileStatement = currentSession->statements.put(statement->getStatementId());
751 profileStatement->id = statement->getStatementId();
752
753 if (!mainProfileStatement)
754 mainProfileStatement = profileStatement;
755 }
756
757 return mainProfileStatement;
758}
759
760
761//--------------------------------------

Callers

nothing calls this directly

Calls 10

getStatementIdMethod · 0.80
getRoutineMethod · 0.80
getMethod · 0.45
existMethod · 0.45
getNameMethod · 0.45
hasDataMethod · 0.45
defineStatementMethod · 0.45
nullStrMethod · 0.45
c_strMethod · 0.45
putMethod · 0.45

Tested by

no test coverage detected