"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "src/jrd/recsrc/BufferedStream.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.

BufferedStream.cpp  (Firebird-3.0.2.32703-0.tar.bz2):BufferedStream.cpp  (Firebird-3.0.4.33054-0.tar.bz2)
skipping to change at line 237 skipping to change at line 237
return false; return false;
StreamType stream = INVALID_STREAM; StreamType stream = INVALID_STREAM;
// Assign fields back to their original streams // Assign fields back to their original streams
for (FB_SIZE_T i = 0; i < m_map.getCount(); i++) for (FB_SIZE_T i = 0; i < m_map.getCount(); i++)
{ {
const FieldMap& map = m_map[i]; const FieldMap& map = m_map[i];
record_param* const rpb = &request->req_rpb[map.map_strea m]; record_param* const rpb = &request->req_rpb[map.map_strea m];
rpb->rpb_runtime_flags |= RPB_refetch; jrd_rel* const relation = rpb->rpb_relation;
if (relation &&
!relation->rel_file &&
!relation->rel_view_rse &&
!relation->isVirtual())
{
rpb->rpb_runtime_flags |= RPB_refetch;
}
if (map.map_stream != stream) if (map.map_stream != stream)
{ {
stream = map.map_stream; stream = map.map_stream;
// See SortedStream::mapData() for explanations w hy we need // See SortedStream::mapData() for explanations w hy we need
// to upgrade the record format // to upgrade the record format
if (rpb->rpb_relation && !rpb->rpb_number.isValid if (relation && !rpb->rpb_number.isValid())
()) VIO_record(tdbb, rpb, MET_current(tdbb, r
VIO_record(tdbb, rpb, MET_current(tdbb, r elation), tdbb->getDefaultPool());
pb->rpb_relation), tdbb->getDefaultPool());
} }
Record* const record = rpb->rpb_record; Record* const record = rpb->rpb_record;
record->reset(); record->reset();
if (!EVL_field(rpb->rpb_relation, buffer_record, (USHORT) i, &from)) if (!EVL_field(relation, buffer_record, (USHORT) i, &from ))
{ {
fb_assert(map.map_type == FieldMap::REGULAR_FIELD ); fb_assert(map.map_type == FieldMap::REGULAR_FIELD );
record->setNull(map.map_id); record->setNull(map.map_id);
continue; continue;
} }
switch (map.map_type) switch (map.map_type)
{ {
case FieldMap::REGULAR_FIELD: case FieldMap::REGULAR_FIELD:
{ {
EVL_field(rpb->rpb_relation, record, map. map_id, &to); EVL_field(relation, record, map.map_id, & to);
MOV_move(tdbb, &from, &to); MOV_move(tdbb, &from, &to);
record->clearNull(map.map_id); record->clearNull(map.map_id);
} }
break; break;
case FieldMap::TRANSACTION_ID: case FieldMap::TRANSACTION_ID:
rpb->rpb_transaction_nr = *reinterpret_cast<SINT6 4*>(from.dsc_address); rpb->rpb_transaction_nr = *reinterpret_cast<SINT6 4*>(from.dsc_address);
break; break;
case FieldMap::DBKEY_NUMBER: case FieldMap::DBKEY_NUMBER:
 End of changes. 4 change blocks. 
7 lines changed or deleted 14 lines changed or added

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