"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/jrd/exe.cpp" between
Firebird-3.0.2.32703-0.tar.bz2 and Firebird-3.0.4.33054-0.tar.bz2

About: Firebird is a relational database offering many ANSI SQL standard features.

exe.cpp  (Firebird-3.0.2.32703-0.tar.bz2):exe.cpp  (Firebird-3.0.4.33054-0.tar.bz2)
skipping to change at line 372 skipping to change at line 372
default: default:
fb_assert(false); fb_assert(false);
} }
} }
if (DTYPE_IS_BLOB_OR_QUAD(from_desc->dsc_dtype) || DTYPE_IS_BLOB_ OR_QUAD(to_desc->dsc_dtype)) if (DTYPE_IS_BLOB_OR_QUAD(from_desc->dsc_dtype) || DTYPE_IS_BLOB_ OR_QUAD(to_desc->dsc_dtype))
{ {
// ASF: Don't let MOV_move call blb::move because MOV // ASF: Don't let MOV_move call blb::move because MOV
// will not pass the destination field to blb::_move. // will not pass the destination field to blb::_move.
blb::move(tdbb, from_desc, to_desc, to);
record_param* rpb = NULL;
USHORT fieldId = 0;
if (to)
{
const FieldNode* toField = ExprNode::as<FieldNode
>(to);
if (toField)
{
fieldId = toField->fieldId;
rpb = &request->req_rpb[toField->fieldStr
eam];
}
else if (!(ExprNode::is<ParameterNode>(to) || Exp
rNode::is<VariableNode>(to)))
BUGCHECK(199); // msg 199 expected field
node
}
blb::move(tdbb, from_desc, to_desc, rpb, fieldId);
} }
else if (!DSC_EQUIV(from_desc, to_desc, false)) else if (!DSC_EQUIV(from_desc, to_desc, false))
{ {
MOV_move(tdbb, from_desc, to_desc); MOV_move(tdbb, from_desc, to_desc);
} }
else if (from_desc->dsc_dtype == dtype_short) else if (from_desc->dsc_dtype == dtype_short)
{ {
*((SSHORT*) to_desc->dsc_address) = *((SSHORT*) from_desc ->dsc_address); *((SSHORT*) to_desc->dsc_address) = *((SSHORT*) from_desc ->dsc_address);
} }
else if (from_desc->dsc_dtype == dtype_long) else if (from_desc->dsc_dtype == dtype_long)
skipping to change at line 664 skipping to change at line 679
{ {
BlobIndex* current = &transaction->tra_bl obs->current(); BlobIndex* current = &transaction->tra_bl obs->current();
if (current->bli_request && if (current->bli_request &&
current->bli_request->req_blobs.l ocate(id->bid_temp_id())) current->bli_request->req_blobs.l ocate(id->bid_temp_id()))
{ {
current->bli_request->req_blobs.f astRemove(); current->bli_request->req_blobs.f astRemove();
current->bli_request = NULL; current->bli_request = NULL;
} }
} }
else
{
transaction->checkBlob(tdbb, id, false);
}
} }
} }
} }
execute_looper(tdbb, request, transaction, request->req_next, jrd_req::re q_proceed); execute_looper(tdbb, request, transaction, request->req_next, jrd_req::re q_proceed);
} //try } //try
catch (const Firebird::Exception&) catch (const Firebird::Exception&)
{ {
if (request->req_flags & req_proc_fetch) if (request->req_flags & req_proc_fetch)
skipping to change at line 873 skipping to change at line 892
* *
**************************************/ **************************************/
DEV_BLKCHK(request, type_req); DEV_BLKCHK(request, type_req);
SET_TDBB(tdbb); SET_TDBB(tdbb);
if (request->req_flags & req_active) if (request->req_flags & req_active)
{ {
const JrdStatement* statement = request->getStatement(); const JrdStatement* statement = request->getStatement();
if (statement->fors.getCount() || request->req_ext_stmt) if (statement->fors.getCount() || request->req_ext_resultset || r equest->req_ext_stmt)
{ {
Jrd::ContextPoolHolder context(tdbb, request->req_pool); Jrd::ContextPoolHolder context(tdbb, request->req_pool);
jrd_req* old_request = tdbb->getRequest(); jrd_req* old_request = tdbb->getRequest();
jrd_tra* old_transaction = tdbb->getTransaction(); jrd_tra* old_transaction = tdbb->getTransaction();
try { try {
tdbb->setRequest(request); tdbb->setRequest(request);
tdbb->setTransaction(request->req_transaction); tdbb->setTransaction(request->req_transaction);
for (const RecordSource* const* ptr = statement-> fors.begin(); for (const RecordSource* const* ptr = statement-> fors.begin();
ptr != statement->fors.end(); ++ptr) ptr != statement->fors.end(); ++ptr)
{ {
(*ptr)->close(tdbb); (*ptr)->close(tdbb);
} }
if (request->req_ext_resultset) if (request->req_ext_resultset)
{
delete request->req_ext_resultset; delete request->req_ext_resultset;
request->req_ext_resultset = NULL;
}
while (request->req_ext_stmt) while (request->req_ext_stmt)
request->req_ext_stmt->close(tdbb); request->req_ext_stmt->close(tdbb);
} }
catch (const Firebird::Exception&) catch (const Firebird::Exception&)
{ {
tdbb->setRequest(old_request); tdbb->setRequest(old_request);
tdbb->setTransaction(old_transaction); tdbb->setTransaction(old_transaction);
throw; throw;
} }
 End of changes. 5 change blocks. 
2 lines changed or deleted 28 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)