types/comparable_bytes: add a missing implementation for date_type_impl

date_type_impl is like timestamp_type_impl, but unsigned.
This commit is contained in:
Michał Chojnowski
2025-09-16 03:05:09 +02:00
parent 46d8fd5bbd
commit bf90018b8e
2 changed files with 17 additions and 1 deletions

View File

@@ -190,7 +190,7 @@ BOOST_AUTO_TEST_CASE(test_bigint) {
byte_comparable_test(generate_integer_test_data<int64_t>());
}
BOOST_AUTO_TEST_CASE(test_date) {
BOOST_AUTO_TEST_CASE(test_simple_date) {
byte_comparable_test(generate_integer_test_data<uint32_t>([] (uint32_t days) {
return data_value(simple_date_native_type{days});
}));
@@ -212,6 +212,12 @@ BOOST_AUTO_TEST_CASE(test_timestamp) {
}));
}
BOOST_AUTO_TEST_CASE(test_date) {
byte_comparable_test(generate_integer_test_data<db_clock::rep>([] (db_clock::rep milliseconds) {
return data_value(date_type_native_type{db_clock::time_point{db_clock::duration(milliseconds)}});
}));
}
template <std::floating_point fp_type>
static std::vector<data_value> generate_floating_point_test_data() {
std::vector<data_value> test_data;

View File

@@ -1231,6 +1231,11 @@ struct to_comparable_bytes_visitor {
void operator()(const empty_type_impl&) {}
void operator()(const date_type_impl&) {
out.write(serialized_bytes_view.prefix(sizeof(db_clock::rep)));
serialized_bytes_view.remove_prefix(sizeof(db_clock::rep));
}
void operator()(const abstract_type& type) {
// Unimplemented
on_internal_error(cblogger, fmt::format("byte comparable format not supported for type {}", type.name()));
@@ -1353,6 +1358,11 @@ struct from_comparable_bytes_visitor {
void operator()(const empty_type_impl&) {}
void operator()(const date_type_impl&) {
out.write(comparable_bytes_view.prefix(sizeof(db_clock::rep)));
comparable_bytes_view.remove_prefix(sizeof(db_clock::rep));
}
void operator()(const abstract_type& type) {
// Unimplemented
on_internal_error(cblogger, fmt::format("byte comparable format not supported for type {}", type.name()));