8 std::map<Table_Id, Record_Id> offset;
13 for (
const auto &[tid, tname]: merged.
get_tables())
19 for (
const auto &[tid, tname]: merged.
get_tables())
30 merged.
insert_vector(tid, offset[tid] + 1,
size_t(last_record_id));
32 for (
const auto &[fid, fname]: db.
get_fields(tid))
39 case Type::Type_Id::null:
42 #define TYPE_MACRO(type, return_type, type_id, R, W)\
43 case Type::Type_Id::type_id:\
45 merged.update_vector_##type_id\
50 size_t(last_record_id),\
51 db.get_own_##type_id##_const_storage(tid, Record_Id(1), fid, capacity)\
60 const size_t reference_offset = size_t(offset[type.
get_table_id()]);
62 Record_Id *reference = merged.get_own_reference_storage
70 for (
size_t i = 0; i < size_t(last_record_id); i++)
72 reference[i] = reference[i] + reference_offset;
78 for (
Record_Id record_id =
Record_Id(1); size_t(record_id) <= size_t(last_record_id); ++record_id)
80 if (freedom_keeper.
is_used(
size_t(record_id) + 1))
82 const Record_Id merged_record_id = offset[tid] + size_t(record_id);
85 for (
const auto &[fid, fname]: db.
get_fields(tid))
91 case Type::Type_Id::null:
94 case Type::Type_Id::reference:
96 Record_Id referenced = db.get_reference(tid, record_id, fid);
98 referenced = referenced +
size_t(offset[type.
get_table_id()]);
99 merged.update_reference
109 #define TYPE_MACRO(type, return_type, type_id, R, W)\
110 case Type::Type_Id::type_id:\
112 merged.update_##type_id\
117 db.get_##type_id(tid, record_id, fid)\
121 #define TYPE_MACRO_NO_REFERENCE