Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

DRIVERS-2885: Update wire version feature list #1607

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions source/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
- [Server Monitoring](server-discovery-and-monitoring/server-monitoring.md)
- [Server Selection](server-selection/server-selection.md)
- [Server Selection Test Plan](server-selection/server-selection-tests.md)
- [Server Wire version and Feature List](./wireversion-featurelist.md)
- [Sessions Specification](sessions/driver-sessions.md)
- [Snapshot Reads Specification](sessions/snapshot-sessions.md)
- [Transactions Specification](transactions/transactions.md)
Expand Down
2 changes: 1 addition & 1 deletion source/retryable-reads/retryable-reads.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ the defined name but MAY deviate to comply with their existing conventions.

Drivers MUST verify server eligibility by ensuring that `maxWireVersion` is at least 6 because retryable reads require a
MongoDB 3.6 standalone, replica set or shard cluster, MongoDB 3.6 server wire version is 6 as defined in the
[Server Wire version and Feature List specification](../wireversion-featurelist.rst).
[Server Wire version and Feature List specification](../wireversion-featurelist.md).

The minimum server version is 3.6 because

Expand Down
33 changes: 33 additions & 0 deletions source/wireversion-featurelist.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Server Wire version and Feature List

| Server version | Wire version | Feature List |
| -------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 2.6 | 1 | <p>Aggregation cursor</p> <p>Auth commands</p> |
| 2.6 | 2 | <p>Write commands (insert/update/delete)</p> <p>Aggregation $out pipeline operator</p> |
| 3.0 | 3 | <p>listCollections</p> <p>listIndexes</p> <p>SCRAM-SHA-1</p> <p>explain command</p> |
| 3.2 | 4 | <p>(find/getMore/killCursors) commands</p> <p>currentOp command</p> <p>fsyncUnlock command</p> <p>findAndModify take write concern</p> <p>Commands take read concern</p> <p>Document-level validation</p> <p>explain command supports distinct and findAndModify</p> |
| 3.4 | 5 | <p>Commands take write concern</p> <p>Commands take collation</p> |
| 3.6 | 6 | <p>Supports OP_MSG</p> <p>Collection-level ChangeStream support</p> <p>Retryable Writes</p> <p>Causally Consistent Reads</p> <p>Logical Sessions</p> <p>update "arrayFilters" option</p> |
| 4.0 | 7 | <p>ReplicaSet transactions</p> <p>Database and cluster-level change streams and startAtOperationTime option</p> |
| 4.2 | 8 | <p>Sharded transactions</p> <p>Aggregation $merge pipeline operator</p> <p>update "hint" option</p> |
| 4.4 | 9 | <p>Streaming protocol for SDAM</p> <p>ResumableChangeStreamError error label</p> <p>delete "hint" option</p> <p>findAndModify "hint" option</p> <p>createIndexes "commitQuorum" option</p> |
| 5.0 | 13 | $out and $merge on secondaries (technically FCV 4.4+) |
| 5.1 | 14 | |
| 5.2 | 15 | |
| 5.3 | 16 | |
| 6.0 | 17 | <p>Support for Partial Indexes</p><p>Sharded Time Series Collections</p><p>FCV set to 5.0</p> |
| 6.1 | 18 | <p>Update Perl Compatible Regular Expressions version to PCRE2</p><p>Add `*UCP` option for regex queries</p> |
| 6.2 | 19 | <p>Collection validation ensures BSON documents conform to BSON spec</p><p>Collection validation checks time series collections for internal consistency</p> |
| 7.0 | 21 | <p>Atlas Search Index Management</p><p>`$currentOp` aggregation Metrics</p><p>Compound Wildcard Indexes</p><p>Support large change stream events via `$changeStreamSplitLargeEvent` stage</p><p>`serverStatus` output gets new fields</p> <p>Slot Based Query Execution</p> |
| 7.1 | 22 | <p>Improved Index Builds</p><p>Exhaust Cursors Enabled for Sharded Clusters</p><p>New Sharding Statistics for Chunk Migrations</p><p>Self-Managed Backups of Sharded Clusters |
| 7.2 | 23 | <p>Database Validation on `mongos` Aggregation Queries</p><p>`serverStatus` Metrics</p><p>Default Chunks Per Shard</p> |
| 7.3 | 24 | <p>Compaction Improvements</p><p>New `serverStatus` metrics</p> |
| 8.0 | 25 | <p>Range Encryption GA</p><p>OIDC authentication mechanism</p><p>New `bulkWrite` command</p><p>`snapshot` read concern on capped collections</p> |

In server versions 5.0 and earlier, the wire version was defined as a numeric literal in
[src/mongo/db/wire_version.h](https://github.com/mongodb/mongo/blob/master/src/mongo/db/wire_version.h). Since server
version 5.1 ([SERVER-58346](https://jira.mongodb.org/browse/SERVER-58346)), the wire version is derived from the number
of releases since 4.0 (using
[src/mongo/util/version/releases.h.tpl](https://github.com/mongodb/mongo/blob/master/src/mongo/util/version/releases.h.tpl)
and
[src/mongo/util/version/releases.yml](https://github.com/mongodb/mongo/blob/master/src/mongo/util/version/releases.yml)).
90 changes: 3 additions & 87 deletions source/wireversion-featurelist.rst
Original file line number Diff line number Diff line change
@@ -1,88 +1,4 @@
====================================
Server Wire version and Feature List
====================================

.. list-table::
:header-rows: 1

* - Server version
- Wire version
- Feature List

* - 2.6
- 1
- | Aggregation cursor
| Auth commands

* - 2.6
- 2
- | Write commands (insert/update/delete)
| Aggregation $out pipeline operator

* - 3.0
- 3
- | listCollections
| listIndexes
| SCRAM-SHA-1
| explain command

* - 3.2
- 4
- | (find/getMore/killCursors) commands
| currentOp command
| fsyncUnlock command
| findAndModify take write concern
| Commands take read concern
| Document-level validation
| explain command supports distinct and findAndModify

* - 3.4
- 5
- | Commands take write concern
| Commands take collation

* - 3.6
- 6
- | Supports OP_MSG
| Collection-level ChangeStream support
| Retryable Writes
| Causally Consistent Reads
| Logical Sessions
| update "arrayFilters" option

* - 4.0
- 7
- | ReplicaSet transactions
| Database and cluster-level change streams and startAtOperationTime option

* - 4.2
- 8
- | Sharded transactions
| Aggregation $merge pipeline operator
| update "hint" option

* - 4.4
- 9
- | Streaming protocol for SDAM
| ResumableChangeStreamError error label
| delete "hint" option
| findAndModify "hint" option
| createIndexes "commitQuorum" option

* - 5.0
- 13
- | $out and $merge on secondaries (technically FCV 4.4+)

* - 5.1
- 14
- |

* - 5.2
- 15
- |

* - 5.3
- 16
- |

In server versions 5.0 and earlier, the wire version was defined as a numeric literal in `src/mongo/db/wire_version.h <https://github.com/mongodb/mongo/blob/master/src/mongo/db/wire_version.h>`_. Since server version 5.1 (`SERVER-58346 <https://jira.mongodb.org/browse/SERVER-58346>`_), the wire version is derived from the number of releases since 4.0 (using `src/mongo/util/version/releases.h.tpl <https://github.com/mongodb/mongo/blob/master/src/mongo/util/version/releases.h.tpl>`_ and `src/mongo/util/version/releases.yml <https://github.com/mongodb/mongo/blob/master/src/mongo/util/version/releases.yml>`_).
.. note::
This specification has been converted to Markdown and renamed to
`wireversion-featurelist.md <wireversion-featurelist.md>`_.
Loading