mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-22 20:03:02 +01:00
Fixed crash when calling unimplemented packaged procedures.
This commit is contained in:
parent
24552c4bb2
commit
fc16bb34e4
@ -2714,6 +2714,13 @@ const StmtNode* ExecProcedureNode::execute(thread_db* tdbb, jrd_req* request, Ex
|
|||||||
// End by assigning the output parameters.
|
// End by assigning the output parameters.
|
||||||
void ExecProcedureNode::executeProcedure(thread_db* tdbb, jrd_req* request) const
|
void ExecProcedureNode::executeProcedure(thread_db* tdbb, jrd_req* request) const
|
||||||
{
|
{
|
||||||
|
if (!procedure->isImplemented())
|
||||||
|
{
|
||||||
|
status_exception::raise(
|
||||||
|
Arg::Gds(isc_proc_pack_not_implemented) <<
|
||||||
|
Arg::Str(procedure->getName().identifier) << Arg::Str(procedure->getName().package));
|
||||||
|
}
|
||||||
|
|
||||||
Jrd::Attachment* attachment = tdbb->getAttachment();
|
Jrd::Attachment* attachment = tdbb->getAttachment();
|
||||||
|
|
||||||
ULONG inMsgLength = 0;
|
ULONG inMsgLength = 0;
|
||||||
|
@ -860,13 +860,6 @@ void EXE_start(thread_db* tdbb, jrd_req* request, jrd_tra* transaction)
|
|||||||
JrdStatement* statement = request->getStatement();
|
JrdStatement* statement = request->getStatement();
|
||||||
const jrd_prc* proc = statement->procedure;
|
const jrd_prc* proc = statement->procedure;
|
||||||
|
|
||||||
if (proc && !proc->isImplemented())
|
|
||||||
{
|
|
||||||
status_exception::raise(
|
|
||||||
Arg::Gds(isc_proc_pack_not_implemented) <<
|
|
||||||
Arg::Str(proc->getName().identifier) << Arg::Str(proc->getName().package));
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Post resources to transaction block. In particular, the interest locks
|
/* Post resources to transaction block. In particular, the interest locks
|
||||||
on relations/indices are copied to the transaction, which is very
|
on relations/indices are copied to the transaction, which is very
|
||||||
important for (short-lived) dynamically compiled requests. This will
|
important for (short-lived) dynamically compiled requests. This will
|
||||||
|
@ -57,6 +57,13 @@ ProcedureScan::ProcedureScan(CompilerScratch* csb, const Firebird::string& name,
|
|||||||
|
|
||||||
void ProcedureScan::open(thread_db* tdbb) const
|
void ProcedureScan::open(thread_db* tdbb) const
|
||||||
{
|
{
|
||||||
|
if (!m_procedure->isImplemented())
|
||||||
|
{
|
||||||
|
status_exception::raise(
|
||||||
|
Arg::Gds(isc_proc_pack_not_implemented) <<
|
||||||
|
Arg::Str(m_procedure->getName().identifier) << Arg::Str(m_procedure->getName().package));
|
||||||
|
}
|
||||||
|
|
||||||
jrd_req* const request = tdbb->getRequest();
|
jrd_req* const request = tdbb->getRequest();
|
||||||
Impure* const impure = request->getImpure<Impure>(m_impure);
|
Impure* const impure = request->getImpure<Impure>(m_impure);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user