Skip to content

Commit 75099c7

Browse files
committed
feat(NODE-6883): allow rawData option on time series collections
1 parent 3469f86 commit 75099c7

File tree

71 files changed

+5391
-25
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

71 files changed

+5391
-25
lines changed

src/cmap/wire_protocol/constants.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
export const MIN_SUPPORTED_SERVER_VERSION = '4.2';
2-
export const MAX_SUPPORTED_SERVER_VERSION = '8.0';
2+
export const MAX_SUPPORTED_SERVER_VERSION = '8.2';
33
export const MIN_SUPPORTED_WIRE_VERSION = 8;
4-
export const MAX_SUPPORTED_WIRE_VERSION = 25;
4+
export const MAX_SUPPORTED_WIRE_VERSION = 27;
55
export const MIN_SUPPORTED_QE_WIRE_VERSION = 21;
66
export const MIN_SUPPORTED_QE_SERVER_VERSION = '7.0';
7+
export const MIN_SUPPORTED_RAW_DATA_WIRE_VERSION = 27;
8+
export const MIN_SUPPORTED_RAW_DATA_SERVER_VERSION = '8.2';
79
export const OP_REPLY = 1;
810
export const OP_UPDATE = 2001;
911
export const OP_INSERT = 2002;

src/operations/aggregate.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,5 +161,6 @@ defineAspects(AggregateOperation, [
161161
Aspect.READ_OPERATION,
162162
Aspect.RETRYABLE,
163163
Aspect.EXPLAINABLE,
164-
Aspect.CURSOR_CREATING
164+
Aspect.CURSOR_CREATING,
165+
Aspect.SUPPORTS_RAW_DATA
165166
]);

src/operations/client_bulk_write/client_bulk_write.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,6 @@ defineAspects(ClientBulkWriteOperation, [
6767
Aspect.SKIP_COLLATION,
6868
Aspect.CURSOR_CREATING,
6969
Aspect.RETRYABLE,
70-
Aspect.COMMAND_BATCHING
70+
Aspect.COMMAND_BATCHING,
71+
Aspect.SUPPORTS_RAW_DATA
7172
]);

src/operations/command.ts

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { type Connection } from '..';
22
import type { BSONSerializeOptions, Document } from '../bson';
3+
import { MIN_SUPPORTED_RAW_DATA_WIRE_VERSION } from '../cmap/wire_protocol/constants';
34
import { MongoInvalidArgumentError } from '../error';
45
import {
56
decorateWithExplain,
@@ -12,7 +13,7 @@ import type { ReadPreference } from '../read_preference';
1213
import type { ServerCommandOptions } from '../sdam/server';
1314
import type { ClientSession } from '../sessions';
1415
import { type TimeoutContext } from '../timeout';
15-
import { commandSupportsReadConcern, MongoDBNamespace } from '../utils';
16+
import { commandSupportsReadConcern, maxWireVersion, MongoDBNamespace } from '../utils';
1617
import { WriteConcern, type WriteConcernOptions } from '../write_concern';
1718
import type { ReadConcernLike } from './../read_concern';
1819
import { AbstractOperation, Aspect, type OperationOptions } from './operation';
@@ -63,6 +64,13 @@ export interface CommandOperationOptions
6364
* This option is deprecated and will be removed in an upcoming major version.
6465
*/
6566
noResponse?: boolean;
67+
68+
/**
69+
* Used when the command needs to grant access to the underlying namespaces for time series collections.
70+
* Only available on server versions 8.2 and above.
71+
* @public
72+
**/
73+
rawData?: boolean;
6674
}
6775

6876
/** @internal */
@@ -153,6 +161,14 @@ export abstract class CommandOperation<T> extends AbstractOperation<T> {
153161
command.maxTimeMS = this.options.maxTimeMS;
154162
}
155163

164+
if (
165+
this.options.rawData != null &&
166+
this.hasAspect(Aspect.SUPPORTS_RAW_DATA) &&
167+
maxWireVersion(connection) >= MIN_SUPPORTED_RAW_DATA_WIRE_VERSION
168+
) {
169+
command.rawData = this.options.rawData;
170+
}
171+
156172
if (this.hasAspect(Aspect.EXPLAINABLE) && this.explain) {
157173
return decorateWithExplain(command, this.explain);
158174
}

src/operations/count.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,4 +71,4 @@ export class CountOperation extends CommandOperation<number> {
7171
}
7272
}
7373

74-
defineAspects(CountOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE]);
74+
defineAspects(CountOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE, Aspect.SUPPORTS_RAW_DATA]);

src/operations/delete.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,12 @@ defineAspects(DeleteOneOperation, [
167167
Aspect.RETRYABLE,
168168
Aspect.WRITE_OPERATION,
169169
Aspect.EXPLAINABLE,
170-
Aspect.SKIP_COLLATION
170+
Aspect.SKIP_COLLATION,
171+
Aspect.SUPPORTS_RAW_DATA
171172
]);
172173
defineAspects(DeleteManyOperation, [
173174
Aspect.WRITE_OPERATION,
174175
Aspect.EXPLAINABLE,
175-
Aspect.SKIP_COLLATION
176+
Aspect.SKIP_COLLATION,
177+
Aspect.SUPPORTS_RAW_DATA
176178
]);

src/operations/distinct.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,9 @@ export class DistinctOperation extends CommandOperation<any[] | Document> {
8484
}
8585
}
8686

87-
defineAspects(DistinctOperation, [Aspect.READ_OPERATION, Aspect.RETRYABLE, Aspect.EXPLAINABLE]);
87+
defineAspects(DistinctOperation, [
88+
Aspect.READ_OPERATION,
89+
Aspect.RETRYABLE,
90+
Aspect.EXPLAINABLE,
91+
Aspect.SUPPORTS_RAW_DATA
92+
]);

src/operations/estimated_document_count.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,6 @@ export class EstimatedDocumentCountOperation extends CommandOperation<number> {
5656
defineAspects(EstimatedDocumentCountOperation, [
5757
Aspect.READ_OPERATION,
5858
Aspect.RETRYABLE,
59-
Aspect.CURSOR_CREATING
59+
Aspect.CURSOR_CREATING,
60+
Aspect.SUPPORTS_RAW_DATA
6061
]);

src/operations/find.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,5 +258,6 @@ defineAspects(FindOperation, [
258258
Aspect.READ_OPERATION,
259259
Aspect.RETRYABLE,
260260
Aspect.EXPLAINABLE,
261-
Aspect.CURSOR_CREATING
261+
Aspect.CURSOR_CREATING,
262+
Aspect.SUPPORTS_RAW_DATA
262263
]);

src/operations/find_and_modify.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,5 +314,6 @@ export class FindOneAndUpdateOperation extends FindAndModifyOperation {
314314
defineAspects(FindAndModifyOperation, [
315315
Aspect.WRITE_OPERATION,
316316
Aspect.RETRYABLE,
317-
Aspect.EXPLAINABLE
317+
Aspect.EXPLAINABLE,
318+
Aspect.SUPPORTS_RAW_DATA
318319
]);

0 commit comments

Comments
 (0)