Commit 8edf2fb2 authored by Marcin Siodelski's avatar Marcin Siodelski

[#521,!270] Addressed review comments.

parent a810e0bc
......@@ -602,17 +602,21 @@ MySqlConfigBackendImpl::processOptionRow(const Option::Universe& universe,
code = (*(first_binding + 1))->getInteger<uint16_t>();
}
// Option can be stored as a blob or formatted value in the configuration.
std::vector<uint8_t> blob;
if (!(*(first_binding + 2))->amNull()) {
blob = (*(first_binding + 2))->getBlob();
}
OptionBuffer buf(blob.begin(), blob.end());
// Get formatted value if available.
std::string formatted_value = (*(first_binding + 3))->getStringOrDefault("");
OptionPtr option(new Option(universe, code, buf.begin(), buf.end()));
OptionPtr option(new Option(universe, code));
// If we don't have a formatted value, check for a blob. Add it to the
// option if it exists.
if (formatted_value.empty()) {
std::vector<uint8_t> blob;
if (!(*(first_binding + 2))->amNull()) {
blob = (*(first_binding + 2))->getBlob();
}
option->setData(blob.begin(), blob.end());
}
// Check if the option is persistent.
bool persistent = static_cast<bool>((*(first_binding + 5))->getIntegerOrDefault<uint8_t>(0));
......
......@@ -84,6 +84,10 @@ GenericBackendTest::testOptionsEquivalent(const OptionDescriptor& ref_option,
// Compare the on-wire data.
EXPECT_EQ(ref_option_buf_vec, tested_option_buf_vec);
} else {
// If the formatted value is non-empty the buffer should be empty.
EXPECT_TRUE(tested_option.option_->getData().empty());
}
// Compare other members of the @c OptionDescriptor, e.g. the
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment