2
0
mirror of https://github.com/boostorg/mysql.git synced 2026-02-17 01:42:17 +00:00

Prepared statements use now iterator-like model

This commit is contained in:
ruben
2019-08-19 07:22:14 +01:00
parent d0f2535f31
commit caaa4e5764
6 changed files with 173 additions and 89 deletions

View File

@@ -142,16 +142,19 @@ void mysql::serialize(DynamicBuffer& buffer, const StmtExecute& value)
serialize(buffer, value.flags);
serialize(buffer, int4(1)); // iteration_count
// NULL bitmap
if (!value.param_values.empty())
if (value.num_params > 0)
{
StmtExecuteNullBitmapTraits traits { value.param_values.size() };
// NULL bitmap
StmtExecuteNullBitmapTraits traits { value.num_params };
std::vector<std::uint8_t> null_bitmap (traits.byte_count(), 0);
for (std::size_t i = 0; i < value.param_values.size(); ++i)
if (value.new_params_bind_flag)
{
if (std::holds_alternative<std::nullptr_t>(value.param_values[i]))
for (std::size_t i = 0; i < value.param_values.size(); ++i)
{
null_bitmap[traits.byte_pos(i)] |= (1 << traits.bit_pos(i));
if (std::holds_alternative<std::nullptr_t>(value.param_values[i]))
{
traits.set_null(null_bitmap.data(), i);
}
}
}
buffer.add(null_bitmap.data(), null_bitmap.size());