Skip to content

Tags: FerretDB/FerretDB

Tags

v1.24.0

Toggle v1.24.0's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.24.0

https://github.com/FerretDB/FerretDB/releases/tag/v1.24.0
2024-08-28

### What's Changed

#### Embeddable package

As communicated in the previous release, this version renames the `SLogger` field to `Logger`,
finishing the migration from [`zap`](https://github.com/uber-go/zap) to [`slog`](https://pkg.go.dev/log/slog).

### Fixed Bugs 🐛

- Ignore Stable API fields by @Evengard in #4067
- Fix Docker's `HEALTHCHECK` in production image by @dasjoe in #4547
- Remove duplicate response field on `OP_QUERY` `hello` by @chilagrow in #4549
- Fix `OP_QUERY` `saslStart` and `saslContinue` for C# driver by @chilagrow in #4550
- Fix `saslContinue` completing handshake too early by @chilagrow in #4552

### Documentation 📄

- Fix Terser plugin build error by @nalgeon in #4506
- Enable zoom on images by @Fashander in #4508
- Add blog post on building a RESTful API with Deno by @Fashander in #4517
- Update missing image by @Fashander in #4522
- Fix broken links by @Fashander in #4525
- Fix critical typo in telemetry documentation by @AlekSi in #4536
- Bump Docusaurus by @AlekSi in #4544
- Added Elestio as one-click deploy option by @kaiwalyakoparkar in #4546
- Add docs for new authentication by @Fashander in #4557

### Other Changes 🤖

- Implement our own changelog generator by @vigneshsankariyer1234567890 in #4219
- Add open issues check in `checkdocs` by @kropidlowsky in #4258
- Prototype OTel context propagation by @rumyantseva in #4483
- Cleanup logging by @chilagrow in #4489
- Use `wire` and `wirebson` packages by @chilagrow in #4490
- Alignment and Bugfixes for SAP HANA backend by @yonarw in #4491
- Port small things from v2 by @AlekSi in #4495
- Bump deps by @AlekSi in #4496
- Remove `zap` remnants by @AlekSi in #4497
- Update `listDatabases` integration test filter input by @chilagrow in #4499
- Update duplicate field handling by @chilagrow in #4500
- Convert BSON values of `wirebson` to `types` by @chilagrow in #4501
- Use `wireclient` package by @chilagrow in #4502
- Fix log message by @chilagrow in #4503
- Fix `checkdocs` Github cache on CI by @noisersup in #4509
- Document logging changes by @AlekSi in #4510
- Fix CI for documentation preview by @AlekSi in #4518
- Add `Taskfile` target to `pngcrush` all new images by @AlekSi in #4519
- Remove fuzzing by @chilagrow in #4520
- Use Go 1.22.6 by @AlekSi in #4523
- Minor cleanup by @AlekSi in #4535
- Use `wireclient` login function in integration test by @chilagrow in #4538
- Remove `wireconn` tests for now by @AlekSi in #4548
- Pass `GITHUB_TOKEN` to tools tests by @AlekSi in #4558

### New Contributors

- @nalgeon made their first contribution in #4506
- @Evengard made their first contribution in #4067
- @dasjoe made their first contribution in #4547
- @kaiwalyakoparkar made their first contribution in #4546
- @vigneshsankariyer1234567890 made their first contribution in #4219

All closed issues and pull requests: https://github.com/FerretDB/FerretDB/milestone/66?closed=1
All commits: v1.23.1...v1.24.0

v1.23.1

Toggle v1.23.1's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.23.1

https://github.com/FerretDB/FerretDB/releases/tag/v1.23.1
2024-08-13

### Fixed Bugs 🐛

- Fix building with `go build -trimpath` by @AlekSi in #4526

All closed issues and pull requests: https://github.com/FerretDB/FerretDB/milestone/67?closed=1
All commits: v1.23.0...v1.23.1

v1.23.0

Toggle v1.23.0's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.23.0

https://github.com/FerretDB/FerretDB/releases/tag/v1.23.0
2024-07-25

### What's Changed

#### Embeddable package

This release switches from the [`zap` logging package](https://github.com/uber-go/zap) to the standard [`slog`](https://pkg.go.dev/log/slog).
If the logger was configured by Go programs that import [`github.com/FerretDB/FerretDB/ferretdb` package](https://pkg.go.dev/github.com/FerretDB/FerretDB/ferretdb), they should configure the `SLogger` field instead.
Setting the old `Logger` field will make the program panic and make the issue immediately noticeable.

The next release will completely remove `zap` and rename `SLogger` to just `Logger`.

#### Initial OpenTelemetry tracing support

This release adds initial support for sending OpenTelemetry traces to the OTLP endpoint.
The set of spans and their attributes is not stable yet and will change over time.

All improvements in observability in this release (OpenTelemetry traces, Kubernetes probes, debug archive)
are documented [there](https://docs.ferretdb.io/configuration/observability/).

#### Experimental Systemd configuration in `.deb` and `.rpm` packages

This release adds initial unit files for `systemd` that auto-start FerretDB.
They are likely to change in the future in incompatible ways; for example, we may switch to using a non-root user.

### New Features 🎉

- Add Kubernetes liveness probe by @noisersup in #4378
- Add Kubernetes readiness probe by @noisersup in #4426
- Implement Docker healthcheck by @noisersup in #4364
- Add OpenTelemetry traces and spans by @AlekSi in #4477
- Send OpenTelemetry traces and spans to OTLP endpoint by @AlekSi in #4484
- Implement `/debug/archive` handler by @sachinpuranik in #3895
- Provide systemd unit file in `.deb` and `.rpm` packages by @noisersup in #4478

### Enhancements 🛠

- Improve support for named loggers by @AlekSi in #4432

### Documentation 📄

- Document Kubernetes probes by @AlekSi in #4424
- Refactor and document `/debug/archive` handler by @AlekSi in #4485
- Document logging by @AlekSi in #4436
- Add release blog post for FerretDB v.1.22.0 by @Fashander in #4401
- Add blog post on running FerretDB and CloudNativePG on Kubernetes by @Fashander in #4377
- Add blogpost on "monitoring FerretDB performance using Coroot" by @Fashander in #4279
- Crush `.png` images by @AlekSi in #4441
- Remove broken links by @AlekSi in #4433

### Other Changes 🤖

- Replace deprecated syntax in Dockerfiles by @AlekSi in #4397
- Update comments about interfaces by @AlekSi in #4405
- Check database name for authentication by @chilagrow in #4402
- Refactor runnables by @AlekSi in #4404
- Add tests for `ctxutil.Sigterm` by @AlekSi in #4406
- Setup OpenTelemetry exporter for FerretDB by @rumyantseva in #4380
- Extract `types` and `zap` code into separate files by @AlekSi in #4408
- Bump Go and deps by @AlekSi in #4416
- Implement Kubernetes startup probe by @noisersup in #4399
- Disable OTEL in tests where collection name might have non-UTF-8 symbols by @rumyantseva in #4423
- Stop Otel exporter gracefully in `envtool` by @AlekSi in #4425
- Include `OpReply` error handling by @chilagrow in #4420
- Test `authSource` by @chilagrow in #4407
- Return `connectionStatus` command `db` field by @chilagrow in #4419
- Implement checkswitch to handle regular switches by @PaveenV in #4381
- Cleanup `checkswitch` handling by @chilagrow in #4434
- Bump deps by @AlekSi in #4446
- Ignore `$readPreferences` for `insert` by @AlekSi in #4440
- Readiness probe cleanup by @noisersup in #4447
- Update linters configuration by @AlekSi in #4451
- Add support for named `slog` loggers by @chilagrow in #4435
- Increase setup timeout in tests by @AlekSi in #4454
- Port pgx logger by @AlekSi in #4450
- Handle `authSource` in low level driver by @chilagrow in #4449
- Use single definition of order for `checkswitch` by @chilagrow in #4452
- Clarify the meaning of the passed context by @AlekSi in #4455
- Remove `FuncCall` by @AlekSi in #4476
- Use `slog` in `clientconn` package by @chilagrow in #4457
- Use `slog` in `postgresql` backend by @chilagrow in #4466
- Use `slog` in `sqlite` backend by @chilagrow in #4467
- Use `slog` in `mysql` and `hana` backends by @chilagrow in #4463
- Use `slog` in `oplog` and `cursor` packages by @chilagrow in #4471
- Use `slog` in `otel` by @chilagrow in #4474
- Use `slog` in `debug` package by @chilagrow in #4473
- Use `slog` in integration tests by @chilagrow in #4481
- Use `slog` in `main.go` and embedded `ferretdb` package by @chilagrow in #4462
- Use `slog` in `fsql` by @chilagrow in #4464
- Use `slog` in handler by @chilagrow in #4470
- Use `slog` in envtool by @chilagrow in #4480
- Implement `slog.LogValuer` interface for `types` package by @chilagrow in #4479
- Drop old dependency by @AlekSi in #4486
- Cleanup logging by @chilagrow in #4489

### New Contributors

- @PaveenV made their first contribution in #4381

All closed issues and pull requests: https://github.com/FerretDB/FerretDB/milestone/65?closed=1
All commits: v1.22.0...v1.23.0

v1.22.0

Toggle v1.22.0's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.22.0

https://github.com/FerretDB/FerretDB/releases/tag/v1.22.0
2024-06-26

### What's Changed

#### Docker images changes

Production Docker images now use a non-root user with UID 1000 and GID 1000.

### New Features 🎉

- Make maximum document size configurable by @chilagrow in #4294
- Enable initial user setup for new authentication by @AlekSi in #4310

### Fixed Bugs 🐛

- Fix TCP port for debug handler in Docker images by @AlekSi in #4218
- Fix embedded package panic by @noisersup in #4278

### Enhancements 🛠

- Use non-privileged `scratch` for production Docker images by @rumyantseva in #4211
- Improve error message for `state.json` by @AlekSi in #4251
- Sort new fields in lexicographic order during update by @wazir-ahmed in #4223

### Documentation 📄

- Add blog post for FerretDB v1.21 release by @Fashander in #4202
- Add blog post for Openziti by @Fashander in #4194
- Fix broken code blocks in documentation by @AlekSi in #4239
- Add KubeDB blogpost on deploying FerretDB on Kubernetes by @Fashander in #4253
- Add blog post about deploying FerretDB on Taikun CloudWorks by @Fashander in #4297
- Update example in documentation by @nullniverse in #4305
- Add blog post on Adding MongoDB compatibility to Aiven for PostgreSQL by @Fashander in #4349
- Add `restart: on-failure` to all containers by @pravi in #4309

### Other Changes 🤖

- Bump deps by @AlekSi in #4201
- Make our own low-level driver for testing by @noisersup in #4193
- Bump deps by @AlekSi in #4238
- Fix some comments by @deferdeter in #4237
- Add dummy setup flags by @b1ron in #4247
- Fix some comments by @dockercui in #4257
- Remove old BSON implementation by @AlekSi in #4262
- Port BSON changes by @AlekSi in #4263
- Move tools cache directory by @AlekSi in #4265
- Use more shards on CI by @AlekSi in #4266
- Bump Go to 1.22.3 and deps by @AlekSi in #4272
- Update linters configuration by @AlekSi in #4277
- Fix `env-data` by @chilagrow in #4289
- Bump deps by @AlekSi in #4302
- Port some changes from v2 by @AlekSi in #4307
- Extract user creation and move to `backends` package by @AlekSi in #4311
- Populate `env-data` for running `FerretDB` by @chilagrow in #4319
- Fix `task docker-local` command by @AlekSi in #4363
- Add stub for the Docker healthcheck by @noisersup in #4355
- Bump deps by @AlekSi in #4375
- Remove `PLAIN` mechanism from new authentication by @chilagrow in #4373
- Fix codecov CLI version by @AlekSi in #4379
- Add `TestMain` to each integration test package by @AlekSi in #4366
- Handle supported mechanisms in `hello` and `getParameters` commands by @chilagrow in #4368
- Remove ambiguous comment by @chilagrow in #4382
- Revert codecov version fix by @AlekSi in #4383
- Fix typo in migration guide by @AlekSi in #4384
- Port `wire` package changes by @AlekSi in #4386
- Port `password` changes by @AlekSi in #4388
- Include `SpeculativeAuthenticate` changes by @chilagrow in #4390
- Fix `saslContinue` prematurely returning `done` by @chilagrow in #4391

### New Contributors

- @deferdeter made their first contribution in #4237
- @dockercui made their first contribution in #4257
- @nullniverse made their first contribution in #4305
- @pravi made their first contribution in #4309

All closed issues and pull requests: https://github.com/FerretDB/FerretDB/milestone/64?closed=1
All commits: v1.21.0...v1.22.0

v1.21.0

Toggle v1.21.0's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.21.0

https://github.com/FerretDB/FerretDB/releases/tag/v1.21.0
2024-02-20

### New Features 🎉

- Add experimental `SCRAM-SHA-1`/`SCRAM-SHA-256` authentication support by @henvic in #4078

### Fixed Bugs 🐛

- Reorganize and fix `update`/`upsert` logic by @wazir-ahmed in #4069

### Enhancements 🛠

- Improve capped collection cleanup by @wazir-ahmed in #4118
- Make batch sizes configurable by @kropidlowsky in #4149

### Documentation 📄

- Fix Codapi file error by @Fashander in #4077
- Add Tembo QA blog post by @Fashander in #4081
- Update correct image link by @Fashander in #4116
- Add Pulumi blog post by @Fashander in #4102
- Add Tembo to README by @AlekSi in #4168
- Remove some closed issues from documentation by @AlekSi in #4172

### Other Changes 🤖

- Use Go 1.22 and bump deps by @AlekSi in #4094
- Add more fields to requests and responses by @rumyantseva in #4096
- Revert SQLite version bump by @AlekSi in #4106
- Refactor `bson2` package by @AlekSi in #4105
- Use `bson2` package for wire queries and replies by @AlekSi in #4108
- Make logger configurable in the embedded `ferretdb` package by @fadyat in #4028
- Fix `envtool run test` `-run` and `-skip` flags by @henvic in #4101
- Add MySQL backend collection by @adetunjii in #4083
- Ignore `maxTimeMS` argument in `count`, `insert`, `update`, `delete` by @farit2000 in #4121
- Use correct salt length by @AlekSi in #4126
- Skip stuck tailable cursor test by @chilagrow in #4131
- Enforce new authentication by @chilagrow in #4075
- Replace `bson` with `bson2` in `wire` by @AlekSi in #4110
- Improve `OP_MSG` validity checks by @AlekSi in #4135
- Support speculative authenticate by @chilagrow in #4111
- Add MySQL backend by @adetunjii in #4137
- Fix `saslContinue` crashing due to not found authentication conversation by @henvic in #4129
- Cleanup TODO for speculative authenticate by @chilagrow in #4143
- Fix MySQL collection stats by @adetunjii in #4145
- Use Go 1.22.1 by @AlekSi in #4155
- Advertise SCRAM / SASL support in addition to PLAIN by @henvic in #4113
- Add linter to check truncate tag in blog posts by @sbshah97 in #4139
- Fix PLAIN mechanism authentication incorrectly working by @chilagrow in #4163
- Improve `bson2` and `wire` logging by @AlekSi in #4148
- Fix logging of deeply nested documents by @AlekSi in #4167
- Support localhost exception by @chilagrow in #4156
- Do not use the flow style in the diff output by @AlekSi in #4170
- Do not use `fjson` by @AlekSi in #4175
- Remove `fjson` package by @AlekSi in #4176
- Fix `speculativeAuthenticate` panic on empty database by @chilagrow in #4178
- Move old `bson` package by @AlekSi in #4177
- Rename `bson2` to `bson` by @AlekSi in #4179
- Move Docker build files by @AlekSi in #4180
- Bump protobuf dependency to make CI happy by @AlekSi in #4187
- Use authentication enabled docker for integration test by @chilagrow in #4160
- Bump `pgx` by @AlekSi in #4190

### New Contributors

- @farit2000 made their first contribution in #4121
- @sbshah97 made their first contribution in #4139

All closed issues and pull requests: https://github.com/FerretDB/FerretDB/milestone/63?closed=1
All commits: v1.20.1...v1.21.0

v1.20.1

Toggle v1.20.1's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.20.1

https://github.com/FerretDB/FerretDB/releases/tag/v1.20.1
2024-02-19

### What's Changed

#### Docker images changes

~~Production Docker images now use a non-root user with UID 1000 and GID 1000.~~

That change was made in v1.20.0, reverted in v1.20.1, and will be re-introduced in a future release.

### Documentation 📄

- Add blog post on Ubicloud managed postgres by @Fashander in #4010
- Add release blog post for v1.19.0 by @Fashander in #4020
- Truncate release blog post by @Fashander in #4047
- Add blog post on Disaster Recovery for FerretDB with Elotl Nova by @Fashander in #4038
- Update Codapi by @Fashander in #4039
- Add blogpost on FerretDB stack on Tembo by @Fashander in #4037

### Other Changes 🤖

- Add tests for new SCRAM-SHA-256 authentication support by @henvic in #4012
- Add `TODO` comments for logging by @AlekSi in #4015
- Add `bson2` helpers for conversions and logging by @AlekSi in #4019
- Setup MySQL backend by @adetunjii in #4003
- Expose new authentication enabling flag by @AlekSi in #4029
- Bump deps and speed-up `checkcomments` by @AlekSi in #4030
- Display `envtool run test` progress with run and/or skip flags by @fadyat in #3999
- Use Ubicloud for CI runners by @AlekSi in #4027
- Implement `database.Stats` for MySQL backend by @adetunjii in #4034
- Minor cleanups by @AlekSi in #4046
- Add experimental pushdown for dot notation by @noisersup in #4049
- Bump Go to 1.21.7 by @AlekSi in #4059
- Add utility for hashing SCRAM-SHA-256 password by @henvic in #4031
- Use rootless `scratch` containers for production Docker images by @ahmethakanbesel in #4004
- Prepare query statements for MySQL by @adetunjii in #4064
- Implement `bson2.RawDocument` checking by @AlekSi in #4076
- Add helper for decoding document sequences by @AlekSi in #4080
- Add SCRAM-SHA-256 authentication support by @henvic in #3989
- Remove SCRAM-SHA-256 implementation TODO links by @henvic in #4086
- Update telemetry host by @AlekSi in #4085

### New Contributors

- @ahmethakanbesel made their first contribution in #4004

[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/62?closed=1).
[All commits](v1.19.0...v1.20.0).

v1.20.0

Toggle v1.20.0's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.20.0

https://github.com/FerretDB/FerretDB/releases/tag/v1.20.0
2024-02-19

### What's Changed

#### Docker images changes

Production Docker images now use a non-root user with UID 1000 and GID 1000.

### Documentation 📄

- Add blog post on Ubicloud managed postgres by @Fashander in #4010
- Add release blog post for v1.19.0 by @Fashander in #4020
- Truncate release blog post by @Fashander in #4047
- Add blog post on Disaster Recovery for FerretDB with Elotl Nova by @Fashander in #4038
- Update Codapi by @Fashander in #4039
- Add blogpost on FerretDB stack on Tembo by @Fashander in #4037

### Other Changes 🤖

- Add tests for new SCRAM-SHA-256 authentication support by @henvic in #4012
- Add `TODO` comments for logging by @AlekSi in #4015
- Add `bson2` helpers for conversions and logging by @AlekSi in #4019
- Setup MySQL backend by @adetunjii in #4003
- Expose new authentication enabling flag by @AlekSi in #4029
- Bump deps and speed-up `checkcomments` by @AlekSi in #4030
- Display `envtool run test` progress with run and/or skip flags by @fadyat in #3999
- Use Ubicloud for CI runners by @AlekSi in #4027
- Implement `database.Stats` for MySQL backend by @adetunjii in #4034
- Minor cleanups by @AlekSi in #4046
- Add experimental pushdown for dot notation by @noisersup in #4049
- Bump Go to 1.21.7 by @AlekSi in #4059
- Add utility for hashing SCRAM-SHA-256 password by @henvic in #4031
- Use rootless `scratch` containers for production Docker images by @ahmethakanbesel in #4004
- Prepare query statements for MySQL by @adetunjii in #4064
- Implement `bson2.RawDocument` checking by @AlekSi in #4076
- Add helper for decoding document sequences by @AlekSi in #4080
- Add SCRAM-SHA-256 authentication support by @henvic in #3989
- Remove SCRAM-SHA-256 implementation TODO links by @henvic in #4086
- Update telemetry host by @AlekSi in #4085

### New Contributors

- @ahmethakanbesel made their first contribution in #4004

[All closed issues and pull requests](https://github.com/FerretDB/FerretDB/milestone/62?closed=1).
[All commits](v1.19.0...v1.20.0).

v1.19.0

Toggle v1.19.0's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.19.0

https://github.com/FerretDB/FerretDB/releases/tag/v1.19.0
2024-01-29

### New Features 🎉

- Support creating an index on nested fields for SQLite by @fadyat in #3972

### Fixed Bugs 🐛

- Fix `maxTimeMS` for `getMore` command by @noisersup in #3919
- Fix `upsert` with `$setOnInsert` operator by @wazir-ahmed in #3931
- Fix validation process for creating duplicate `_id` index by @kropidlowsky in #3990

### Documentation 📄

- Bump deps by @AlekSi in #3955
- Add documentation for oplog by @Fashander in #3960
- Fix search queries by @Fashander in #3976

### Other Changes 🤖

- Fix Taskfile.yml indentation by @AlekSi in #3964
- Speed-up Docker builds by @AlekSi in #3965
- Run more `maxTimeMS` tests by @noisersup in #3940
- Store passwords for PLAIN authentication mechanism by @henvic in #3928
- Use PBKDF2 for storing `PLAIN` passwords by @AlekSi in #3970
- Shard extra CI configurations by @AlekSi in #3946
- Small fixes and tweaks by @AlekSi in #3971
- Implement `updateUser` command by @henvic in #3973
- Small assorted tweaks by @AlekSi in #3979
- Add MySQL backend Registry by @adetunjii in #3967
- Add new BSON decoding package by @AlekSi in #3905
- Refactor `bson2` encoding/decoding by @AlekSi in #3987
- Use `usersInfo` for `createUser` and `dropUser` integration tests by @henvic in #3980
- Improve `bson2` fuzzing by @AlekSi in #3988
- Update contributing documentation by @AlekSi in #3994
- Use `ListCollection` with a filter by @sachinpuranik in #3995
- Add tests for MySQL registry by @adetunjii in #3993
- Prepare CI to having multiple main branches by @AlekSi in #4002
- Ignore `$readPreference` field by @b1ron in #3996
- Hide `*types.Document` from `wire` struct fields by @AlekSi in #4000
- Add deep `bson2` decoding by @AlekSi in #3997
- Expose raw documents in the `wire` package by @AlekSi in #4011

### New Contributors

- @fadyat made their first contribution in #3972

All closed issues and pull requests: https://github.com/FerretDB/FerretDB/milestone/61?closed=1
All commits: v1.18.0...v1.19.0

v1.18.0

Toggle v1.18.0's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.18.0

https://github.com/FerretDB/FerretDB/releases/tag/v1.18.0
2024-01-08

### What's Changed

#### Capped collections

This release adds support for capped collections.
They can be created as usual using `create` command.
Both `max` (maximum number of documents) and `size` (maximum collection size in bytes) parameters are supported.

#### Tailable cursors

This release adds support for tailable cursors.
Both `tailable` and `awaitData` parameters are supported.

#### OpLog tailing

This release adds support for the basic OpLog functionality.
The main supported use case is Meteor's OpLog tailing.
Replication is not supported yet.

OpLog collection does not exist by default.
To enable OpLog functionality, create a capped collection `oplog.rs` in the `local` database.
Setting replica set name using [`--repl-set-name` flag / `FERRETDB_REPL_SET_NAME` environment variable](https://docs.ferretdb.io/configuration/flags/#general)
might also be needed.

### New Features 🎉

- Add support for tailable cursors by @AlekSi in #3799
- Implement `awaitData` tailable cursors by @noisersup in #3900
- Implement and test OpLog for update operations by @rumyantseva in #3899
- Enable OpLog and tailable cursors by @AlekSi in #3887
- Implement `createUser` command by @henvic in #3848
- Implement `dropUser` command by @henvic in #3866
- Implement `dropAllUsersFromDatabase` command by @henvic in #3867
- Implement `usersInfo` command by @henvic in #3897

### Enhancements 🛠

- Don't cleanup capped collections if there is nothing to cleanup by @rumyantseva in #3909
- Disallow `maxTimeMS` for non-awaitData cursors in `getMore` command by @noisersup in #3917
- Add the necessary for replica set fields to `ismaster` response by @rumyantseva in #3925

### Other Changes 🤖

- Add CI configuration for Citus by @AlekSi in #3865
- Bump deps by @AlekSi in #3880
- Fix tests by @AlekSi in #3871
- Add MySQL backend registry by @adetunjii in #3850
- Fix local MySQL setup by @AlekSi in #3886
- Fix clean-up on `aggregate` errors by @AlekSi in #3892
- Use `dropAllUsersFromDatabase` in tests by @henvic in #3891
- Add `awaitData` tests by @noisersup in #3872
- Add utilities for working with passwords by @AlekSi in #3890
- Add support for `--skip` in `envtool tests run` by @KrishnaSindhur in #3805
- Small clean-ups by @AlekSi in #3896
- Add basic SAP HANA backend by @yonarw in #3719
- Add integration tests for OpLog entries of insert and delete operations by @rumyantseva in #3862
- Add more cursor tests by @noisersup in #3893
- Refactor `ConnInfo` in preparation for new auth by @AlekSi in #3901
- Add some small improvements to the linter that checks open issues by @rumyantseva in #3756
- Forbid `bson.E/D/M/A`, except integration tests by @AlekSi in #3908
- Bump deps by @AlekSi in #3912
- Make `AssertEqual` helper handle duplicate keys by @AlekSi in #3911
- Drop test users on cleanup by @AlekSi in #3914
- Cleanup `awaitData` tailable cursor by @noisersup in #3915
- Cleanup a closed issue by @rumyantseva in #3924
- Ignore `sparse` index parameter for now by @AlekSi in #3934
- Allow filtering by name in `ListDatabases` and `ListCollections` by @sachinpuranik in #3851
- Disallow native passwords for MySQL by @adetunjii in #3937
- Fix `awaitData` cursor panic by @noisersup in #3935
- Use `usersInfo` in `dropAllUsersFromDatabase` tests by @henvic in #3932
- Allow Native Passwords for testcase by @adetunjii in #3941

### New Contributors

- @yonarw made their first contribution in #3719
- @sachinpuranik made their first contribution in #3851

All closed issues and pull requests: https://github.com/FerretDB/FerretDB/milestone/60?closed=1
All commits: v1.17.0...v1.18.0

v1.17.0

Toggle v1.17.0's commit message

Verified

This tag was signed with the committer’s verified signature.
AlekSi Alexey Palazhchenko
v1.17.0

https://github.com/FerretDB/FerretDB/releases/tag/v1.17.0
2023-12-18

### New Features 🎉

- Allow building without PostgreSQL or SQLite backend by @anunayasri in #3803
- Allow sorting by `$natural` by @noisersup in #3822
- Disallow `$natural` in compound sort by @noisersup in #3832
- Generate collection UUIDs by @wazir-ahmed in #3791
- Support capped collection cleanup by @rumyantseva in #3831

### Fixed Bugs 🐛

- Fix `listDatabases` filtering when using `nameOnly` by @henvic in #3788

### Enhancements 🛠

- Improve `validate` diagnostic command by @b1ron in #3804
- Add fields to `listCollections.cursor` response by @henvic in #3809

### Documentation 📄

- Add new release FerretDB v1.16.0 blog post by @Fashander in #3808
- Change release blogpost image by @Fashander in #3825
- Enable versioning on documentation by @Fashander in #3821
- Add documentation for older versions by @AlekSi in #3834

### Other Changes 🤖

- Support subdirectories for integration tests by @AlekSi in #3810
- Move tests for tailbable cursors by @AlekSi in #3811
- Bump deps by @AlekSi in #3817
- Refactor cursor creation by @AlekSi in #3820
- Use single flag to disable all pushdowns by @noisersup in #3793
- Add tracing to `envtool tests run` by @hungaikev in #3695
- Extract `find` helper functions by @AlekSi in #3826
- Fix tests for MongoDB with enabled replica set by @rumyantseva in #3807
- Ignore `$clusterTime` by @AlekSi in #3830
- Add MySQL backend metadata by @adetunjii in #3828
- Clean-up tests a bit by @AlekSi in #3835
- Allow bypassing authentication by @AlekSi in #3840
- Add tests for tailable cursors by @noisersup in #3833
- Add missing logging parameter by @AlekSi in #3847
- Test cross-session cursors by @noisersup in #3849
- Use MongoDB 7 by @henvic in #3824
- Simplify tailable cursor tests by @AlekSi in #3854
- Add `upsert` tests by @wazir-ahmed in #3864
- Add cursor tests by @noisersup in #3859

### New Contributors

- @wazir-ahmed made their first contribution in #3791
- @henvic made their first contribution in #3788
- @anunayasri made their first contribution in #3803
- @hungaikev made their first contribution in #3695

All closed issues and pull requests: https://github.com/FerretDB/FerretDB/milestone/59?closed=1
All commits: v1.16.0...v1.17.0