summaryrefslogtreecommitdiff
path: root/src/mongo/db/timeseries
diff options
context:
space:
mode:
authorYuhong Zhang <yuhong.zhang@mongodb.com>2023-04-21 17:33:55 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-04-21 18:38:30 +0000
commit252d3c0001afe2cd5027d1354a6ad012de87ba6b (patch)
tree9337358dea2e068824c25e63e97e6bebd368cfd1 /src/mongo/db/timeseries
parent4891d6881e0525583c79891d75bc7a5ec5fda1c5 (diff)
downloadmongo-252d3c0001afe2cd5027d1354a6ad012de87ba6b.tar.gz
SERVER-75918 Handle missing time-series options fields when generating its bucket unpack stage
Diffstat (limited to 'src/mongo/db/timeseries')
-rw-r--r--src/mongo/db/timeseries/timeseries_options.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/mongo/db/timeseries/timeseries_options.cpp b/src/mongo/db/timeseries/timeseries_options.cpp
index d384f662a99..1a05da5e90a 100644
--- a/src/mongo/db/timeseries/timeseries_options.cpp
+++ b/src/mongo/db/timeseries/timeseries_options.cpp
@@ -224,17 +224,24 @@ StatusWith<std::pair<TimeseriesOptions, bool>> applyTimeseriesOptionsModificatio
}
BSONObj generateViewPipeline(const TimeseriesOptions& options, bool asArray) {
+ // TODO(SERVER-76411): Remove this and read the value directly after 'bucketMaxSpanSeconds' is
+ // guaranteed to be present.
+ // Generates the 'bucketMaxSpanSeconds' field if missing.
+ auto maxSpanSeconds =
+ options.getBucketMaxSpanSeconds().get_value_or(getMaxSpanSecondsFromGranularity(
+ options.getGranularity().get_value_or(BucketGranularityEnum::Seconds)));
+
if (options.getMetaField()) {
return wrapInArrayIf(
asArray,
BSON("$_internalUnpackBucket" << BSON(
"timeField" << options.getTimeField() << "metaField" << *options.getMetaField()
- << "bucketMaxSpanSeconds" << *options.getBucketMaxSpanSeconds())));
+ << "bucketMaxSpanSeconds" << maxSpanSeconds)));
}
return wrapInArrayIf(asArray,
- BSON("$_internalUnpackBucket" << BSON(
- "timeField" << options.getTimeField() << "bucketMaxSpanSeconds"
- << *options.getBucketMaxSpanSeconds())));
+ BSON("$_internalUnpackBucket"
+ << BSON("timeField" << options.getTimeField()
+ << "bucketMaxSpanSeconds" << maxSpanSeconds)));
}
bool optionsAreEqual(const TimeseriesOptions& option1, const TimeseriesOptions& option2) {