summaryrefslogtreecommitdiff
path: root/src/mongo/db/timeseries/timeseries_extended_range.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/timeseries/timeseries_extended_range.cpp')
-rw-r--r--src/mongo/db/timeseries/timeseries_extended_range.cpp26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/mongo/db/timeseries/timeseries_extended_range.cpp b/src/mongo/db/timeseries/timeseries_extended_range.cpp
index c1c85813b1e..44a7ff060d9 100644
--- a/src/mongo/db/timeseries/timeseries_extended_range.cpp
+++ b/src/mongo/db/timeseries/timeseries_extended_range.cpp
@@ -39,16 +39,24 @@ bool dateOutsideStandardRange(Date_t date) {
return timeSeconds < 0 || timeSeconds > kMaxNormalRangeTimestamp;
}
-bool measurementsHaveDateOutsideStandardRange(const TimeseriesOptions& options,
- const std::vector<BSONObj>& measurements) {
- return std::any_of(measurements.begin(), measurements.end(), [&](const BSONObj& doc) -> bool {
- auto timeElem = doc[options.getTimeField()];
- if (!timeElem || BSONType::Date != timeElem.type()) {
- // This measurement is missing a valid time element.
- return false;
- }
- auto date = timeElem.Date();
+bool bucketsHaveDateOutsideStandardRange(const TimeseriesOptions& options,
+ std::vector<InsertStatement>::const_iterator first,
+ std::vector<InsertStatement>::const_iterator last) {
+ return std::any_of(first, last, [&](const InsertStatement& stmt) -> bool {
+ auto controlElem = stmt.doc.getField(timeseries::kBucketControlFieldName);
+ uassert(6781400,
+ "Time series bucket document is missing 'control' field",
+ controlElem.isABSONObj());
+ auto minElem = controlElem.Obj().getField(timeseries::kBucketControlMinFieldName);
+ uassert(6781401,
+ "Time series bucket document is missing 'control.min' field",
+ minElem.isABSONObj());
+ auto timeElem = minElem.Obj().getField(options.getTimeField());
+ uassert(6781402,
+ "Time series bucket document does not have a valid min time element",
+ timeElem && BSONType::Date == timeElem.type());
+ auto date = timeElem.Date();
return dateOutsideStandardRange(date);
});
}