diff options
author | Yuhong Zhang <yuhong.zhang@mongodb.com> | 2023-04-21 17:33:55 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-04-21 18:38:30 +0000 |
commit | 252d3c0001afe2cd5027d1354a6ad012de87ba6b (patch) | |
tree | 9337358dea2e068824c25e63e97e6bebd368cfd1 /src/mongo/db/timeseries | |
parent | 4891d6881e0525583c79891d75bc7a5ec5fda1c5 (diff) | |
download | mongo-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.cpp | 15 |
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) { |