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 |