@@ -137,18 +137,13 @@ class CmdCount : public CountCmdVersion1Gen<CmdCount> {
137
137
Invocation (OperationContext* opCtx,
138
138
const Command* command,
139
139
const OpMsgRequest& opMsgRequest)
140
- : InvocationBaseGen(opCtx, command, opMsgRequest), _ns([&] {
141
- if (request ().getRawData ()) {
142
- return timeseries::isTimeseriesViewRequest (opCtx, request ()).second ;
143
- }
144
-
145
- return request ().getNamespaceOrUUID ().isNamespaceString ()
140
+ : InvocationBaseGen(opCtx, command, opMsgRequest),
141
+ _ns (request().getNamespaceOrUUID().isNamespaceString()
146
142
? request().getNamespaceOrUUID().nss()
147
143
: CollectionCatalog::get(opCtx)->resolveNamespaceStringFromDBNameAndUUID(
148
144
opCtx,
149
145
request ().getNamespaceOrUUID().dbName(),
150
- request ().getNamespaceOrUUID ().uuid ());
151
- }()) {
146
+ request().getNamespaceOrUUID().uuid())) {
152
147
uassert (ErrorCodes::InvalidNamespace,
153
148
str::stream () << " Invalid namespace specified '" << _ns.toStringForErrorMsg ()
154
149
<< " '" ,
@@ -256,6 +251,18 @@ class CmdCount : public CountCmdVersion1Gen<CmdCount> {
256
251
CurOpFailpointHelpers::waitWhileFailPointEnabled (
257
252
&hangBeforeCollectionCount, opCtx, " hangBeforeCollectionCount" , []() {}, _ns);
258
253
254
+ auto ns = [&] {
255
+ if (request ().getRawData ()) {
256
+ auto [isTimeseriesViewRequest, ns] =
257
+ timeseries::isTimeseriesViewRequest (opCtx, request ());
258
+ if (isTimeseriesViewRequest) {
259
+ ctx.emplace (opCtx, ns);
260
+ return ns;
261
+ }
262
+ }
263
+ return _ns;
264
+ }();
265
+
259
266
// Start the query planning timer.
260
267
auto curOp = CurOp::get (opCtx);
261
268
curOp->beginQueryPlanningTimer ();
@@ -270,13 +277,13 @@ class CmdCount : public CountCmdVersion1Gen<CmdCount> {
270
277
auto expCtx =
271
278
makeExpressionContextForGetExecutor (opCtx,
272
279
request ().getCollation ().value_or (BSONObj ()),
273
- _ns ,
280
+ ns ,
274
281
boost::none /* verbosity*/ );
275
282
276
283
const auto & collection = ctx->getCollection ();
277
- const auto extensionsCallback = getExtensionsCallback (collection, opCtx, _ns );
284
+ const auto extensionsCallback = getExtensionsCallback (collection, opCtx, ns );
278
285
auto parsedFind = uassertStatusOK (
279
- parsed_find_command::parseFromCount (expCtx, request (), *extensionsCallback, _ns ));
286
+ parsed_find_command::parseFromCount (expCtx, request (), *extensionsCallback, ns ));
280
287
281
288
registerRequestForQueryStats (opCtx, expCtx, curOp, ctx, request (), *parsedFind);
282
289
0 commit comments