core: introduce MP_INTERVAL
Part of #6773 NO_CHANGELOG=It will be added in another commit. @TarantoolBot document Title: New MsgPack extension type MP_INTERVAL MsgPack extension type MP_INTERVAL was created to serialize values of struct interval. Description of serialized value: ------------------------------------------------------------ |MP_EXT|Size of packed interval|MP_INTERVAL|packed interval| ------------------------------------------------------------ Packed interval - packed number of non-zero fields and packed non-null fields. Each packed field consists of two packed integer values - the field ID and its value. The number of non-null fields can be zero, in which case `packed interval` will be just packed integer `0`. List of IDs: 0 - `year` 1 - `month` 2 - `week` 3 - `day` 4 - `hour` 5 - `minute` 6 - `second` 7 - `nanosecond` 8 - `adjust` Example of packed interval value: |C7|09|06|03|00|01|01|CCC8|03|D0B3| Where C7 - MP_EXT; 09 - size of packed interval value, 9 bytes; 06 - MP_INTERVAL; 03 - number of non-zero fields; 00 - ID of field `year`; 01 - packed value `1`; 01 - ID of field `month`; CCC8 - packed value `200`; 03 - ID of field `day`; D0B3 - packed value `-77`. From there we can see, that the packed interval is actually `1 year, 200 months and -77 days`.
Showing
- src/box/msgpack.c 5 additions, 0 deletionssrc/box/msgpack.c
- src/lib/core/CMakeLists.txt 1 addition, 0 deletionssrc/lib/core/CMakeLists.txt
- src/lib/core/mp_extension_types.h 1 addition, 0 deletionssrc/lib/core/mp_extension_types.h
- src/lib/core/mp_interval.c 188 additions, 0 deletionssrc/lib/core/mp_interval.c
- src/lib/core/mp_interval.h 81 additions, 0 deletionssrc/lib/core/mp_interval.h
- src/lib/mpstream/mpstream.c 11 additions, 0 deletionssrc/lib/mpstream/mpstream.c
- src/lib/mpstream/mpstream.h 5 additions, 0 deletionssrc/lib/mpstream/mpstream.h
- test/unit/CMakeLists.txt 2 additions, 0 deletionstest/unit/CMakeLists.txt
- test/unit/interval.c 104 additions, 0 deletionstest/unit/interval.c
- test/unit/interval.result 22 additions, 0 deletionstest/unit/interval.result
Loading
Please register or sign in to comment