| 3853 | |
| 3854 | |
| 3855 | Record* VIO_record(thread_db* tdbb, record_param* rpb, const Format* format, MemoryPool* pool) |
| 3856 | { |
| 3857 | /************************************** |
| 3858 | * |
| 3859 | * V I O _ r e c o r d |
| 3860 | * |
| 3861 | ************************************** |
| 3862 | * |
| 3863 | * Functional description |
| 3864 | * Allocate a record block big enough for a given format. |
| 3865 | * |
| 3866 | **************************************/ |
| 3867 | SET_TDBB(tdbb); |
| 3868 | |
| 3869 | #ifdef VIO_DEBUG |
| 3870 | jrd_rel* relation = rpb->rpb_relation; |
| 3871 | VIO_trace(DEBUG_TRACE, |
| 3872 | "VIO_record (rel_id %u, record_param %" QUADFORMAT"d, format %d, pool %p)\n", |
| 3873 | relation ? relation->rel_id : 0, rpb->rpb_number.getValue(), format ? format->fmt_version : 0, |
| 3874 | (void*) pool); |
| 3875 | #endif |
| 3876 | |
| 3877 | // If format wasn't given, look one up |
| 3878 | |
| 3879 | if (!format) |
| 3880 | format = MET_format(tdbb, rpb->rpb_relation, rpb->rpb_format_number); |
| 3881 | |
| 3882 | Record* record = rpb->rpb_record; |
| 3883 | |
| 3884 | if (!record) |
| 3885 | { |
| 3886 | if (!pool) |
| 3887 | pool = rpb->rpb_relation->rel_pool; |
| 3888 | |
| 3889 | record = rpb->rpb_record = FB_NEW_POOL(*pool) Record(*pool, format); |
| 3890 | } |
| 3891 | |
| 3892 | record->reset(format); |
| 3893 | |
| 3894 | return record; |
| 3895 | } |
| 3896 | |
| 3897 | |
| 3898 | bool VIO_refetch_record(thread_db* tdbb, record_param* rpb, jrd_tra* transaction, |
no test coverage detected