aboutsummaryrefslogtreecommitdiff
path: root/src/zen/cmds/builds_cmd.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2026-01-28 10:32:02 +0100
committerGitHub Enterprise <[email protected]>2026-01-28 10:32:02 +0100
commit03c23e9ce6a6ba6138e10a48e810f251d53ca9f4 (patch)
tree48d07f32930e0ef65963e48e65bbd0e6dfbeda67 /src/zen/cmds/builds_cmd.cpp
parent5.7.19-pre1 (diff)
downloadarchived-zen-03c23e9ce6a6ba6138e10a48e810f251d53ca9f4.tar.xz
archived-zen-03c23e9ce6a6ba6138e10a48e810f251d53ca9f4.zip
Avoid conversion from JSon to compact binary when querying for builds to avoid integer vs float conversion issues (#735)
Diffstat (limited to 'src/zen/cmds/builds_cmd.cpp')
-rw-r--r--src/zen/cmds/builds_cmd.cpp18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/zen/cmds/builds_cmd.cpp b/src/zen/cmds/builds_cmd.cpp
index 176c2374c..f4edb65ab 100644
--- a/src/zen/cmds/builds_cmd.cpp
+++ b/src/zen/cmds/builds_cmd.cpp
@@ -3212,31 +3212,39 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
LogExecutableVersionAndPid();
}
}
- CbObject QueryObject;
+ std::string JsonQuery;
if (m_ListQueryPath.empty())
{
CbObjectWriter QueryWriter;
QueryWriter.BeginObject("query");
QueryWriter.EndObject(); // query
- QueryObject = QueryWriter.Save();
+ CbObject QueryObject = QueryWriter.Save();
+ ExtendableStringBuilder<64> SB;
+ CompactBinaryToJson(QueryObject, SB);
+ JsonQuery = SB.ToString();
}
else
{
if (ToLower(m_ListQueryPath.extension().string()) == ".cbo")
{
- QueryObject = LoadCompactBinaryObject(IoBufferBuilder::MakeFromFile(m_ListQueryPath));
+ CbObject QueryObject = LoadCompactBinaryObject(IoBufferBuilder::MakeFromFile(m_ListQueryPath));
+ ExtendableStringBuilder<64> SB;
+ CompactBinaryToJson(QueryObject, SB);
+ JsonQuery = SB.ToString();
}
else
{
IoBuffer MetaDataJson = ReadFile(m_ListQueryPath).Flatten();
std::string_view Json(reinterpret_cast<const char*>(MetaDataJson.GetData()), MetaDataJson.GetSize());
std::string JsonError;
- QueryObject = LoadCompactBinaryFromJson(Json, JsonError).AsObject();
+ CbObject QueryObject = LoadCompactBinaryFromJson(Json, JsonError)
+ .AsObject(); // We try to convert it so it is at least reaonably verified in format
if (!JsonError.empty())
{
throw std::runtime_error(
fmt::format("build metadata file '{}' is malformed. Reason: '{}'", m_ListQueryPath, JsonError));
}
+ JsonQuery = std::string(Json);
}
}
@@ -3259,7 +3267,7 @@ BuildsCommand::Run(const ZenCliOptions& GlobalOptions, int argc, char** argv)
/*RequireBucket*/ false,
/*BoostCacheBackgroundWorkerPool */ false);
- CbObject Response = Storage.BuildStorage->ListBuilds(QueryObject);
+ CbObject Response = Storage.BuildStorage->ListBuilds(JsonQuery);
ZEN_ASSERT(ValidateCompactBinary(Response.GetView(), CbValidateMode::Default) == CbValidateError::None);
if (m_ListResultPath.empty())
{