Skip to content

Latest commit

Β 

History

History
1534 lines (1204 loc) Β· 107 KB

CHANGELOG.md

File metadata and controls

1534 lines (1204 loc) Β· 107 KB

Changelog

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 FerretDB#4294
  • Enable initial user setup for new authentication by @AlekSi in FerretDB#4310

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v1.21.0 (2024-02-20)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

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 FerretDB#4010
  • Add release blog post for v1.19.0 by @Fashander in FerretDB#4020
  • Truncate release blog post by @Fashander in FerretDB#4047
  • Add blog post on Disaster Recovery for FerretDB with Elotl Nova by @Fashander in FerretDB#4038
  • Update Codapi by @Fashander in FerretDB#4039
  • Add blogpost on FerretDB stack on Tembo by @Fashander in FerretDB#4037

Other Changes πŸ€–

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

New Contributors

  • @ahmethakanbesel made their first contribution in FerretDB#4004

All closed issues and pull requests. All commits.

v1.19.0 (2024-01-29)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

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

Documentation πŸ“„

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

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 might also be needed.

New Features πŸŽ‰

Enhancements πŸ› 

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

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v1.17.0 (2023-12-18)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

  • Fix listDatabases filtering when using nameOnly by @henvic in FerretDB#3788

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v1.16.0 (2023-12-04)

Documentation πŸ“„

Other Changes πŸ€–

All closed issues and pull requests. All commits.

v1.15.0 (2023-11-20)

What's Changed

Artifacts naming scheme

Our release binaries and packages now include linux as a part of their file names. That's a preparation for providing artifacts for other OSes.

New Features πŸŽ‰

Enhancements πŸ› 

  • Allow usage without state dir by @AlekSi in FerretDB#3703
  • Allow the usage of existing PostgreSQL schema by @AlekSi in FerretDB#3717
  • Generate SQL queries with comments for find operations by @chumaumenze in FerretDB#3697

Documentation πŸ“„

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v1.14.0 (2023-11-07)

What's Changed

Old PostgreSQL backend

As mentioned in the previous release changes, the old PostgreSQL backend code is completely removed. PostgreSQL remains our main backend, just with a new code base.

New Features πŸŽ‰

Enhancements πŸ› 

  • Optimize detection of duplicate fields by @AlekSi in FerretDB#3645
  • Optimize insert performance by batching by @princejha95 in FerretDB#3621

Documentation πŸ“„

Other Changes πŸ€–

  • Disallow capped collection creation when disabled by @AlekSi in FerretDB#3636
  • Run backend tests for SAP HANA by @AlekSi in FerretDB#3657
  • Update golangci-lint by @AlekSi in FerretDB#3651
  • Remove pgdb from envtool by @ShatilKhan in FerretDB#3586
  • Remove old pg handler by @AlekSi in FerretDB#3661
  • Add test for capped collection in aggregate $collStats by @chilagrow in FerretDB#3643
  • Enable GOMAXPROCS autotuning by @AlekSi in FerretDB#3105
  • Add integration tests progress reporting by @rubiagatra in FerretDB#3471
  • Add timing information to envtool output by @AlekSi in FerretDB#3664
  • Remove old SAP HANA handler by @AlekSi in FerretDB#3674
  • Rename main_postgeresql to main_postgresql by @gen1us2k in FerretDB#3668
  • (WIP) Support create for capped collections by @rumyantseva in FerretDB#3614
  • (WIP) Support InsertAll and FindAll for capped collections by @chilagrow in FerretDB#3610

New Contributors

All closed issues and pull requests. All commits.

v1.13.0 (2023-10-23)

What's Changed

New PostgreSQL backend

The new PostgreSQL backend is now enabled by default. You can still enable the old backend with --postgresql-old flag or FERRETDB_POSTGRESQL_OLD=true environment variable, but it will be removed in the next release.

Default SQLite directory for Docker images

Our Docker images (but not binaries and .deb / .rpm packages) now use /state directory for the SQLite backend. That directory is also a Docker volume, so data will be preserved after the container restart by default.

arm/v7 packages

We now provide linux/arm/v7 binaries, Docker images, and .deb / .rpm packages.

New Features πŸŽ‰

  • Implement pushdown for aggregate for PostgreSQL by @noisersup in FerretDB#3607
  • Implement sort pushdown for PostgreSQL by @noisersup in FerretDB#3504
  • Implement limit pushdown for PostgreSQL by @noisersup in FerretDB#3580
  • Implement indexSizes for collStats by @chilagrow in FerretDB#3575
  • Implement free storage in collStats, dbStats and aggregate $collStats by @chilagrow in FerretDB#3594
  • Add capped collection counts in serverStatus by @chilagrow in FerretDB#3566
  • Integrate Statsviz by @codenoid in FerretDB#3591

Fixed Bugs πŸ›

  • Fix invalid validation for _id field by @slavabobik in FerretDB#3523
  • Fix explain panic for non-existent collection on PostgreSQL by @noisersup in FerretDB#3541

Enhancements πŸ› 

Documentation πŸ“„

  • Add release blog post for FerretDB v1.12 by @Fashander in FerretDB#3555
  • Crush images by @AlekSi in FerretDB#3561
  • Change SQLite directory for Docker images by @AlekSi in FerretDB#3571
  • Enable Mermaid diagrams in Docusaurus by @sid-js in FerretDB#3532
  • Enable linters to accept exclamation marks in headers by @chanon-mike in FerretDB#3578
  • Add SQLite info to glossary list by @pvinoda in FerretDB#3593
  • Add blog post on using Illa Cloud with FerretDB by @Fashander in FerretDB#3516
  • Add SQLite set up docs by @Fashander in FerretDB#3568
  • Add "How to Install FerretDB on Ubuntu" blog post by @Fashander in FerretDB#2802
  • Update ILLA blog post by @Fashander in FerretDB#3620
  • Add links to blog by @Fashander in FerretDB#3623

Other Changes πŸ€–

  • Improve embedded package documentation by @princejha95 in FerretDB#3537
  • Use separate PostgreSQL databases in tests by @AlekSi in FerretDB#3553
  • Make collStats calculate collection size accurately for PostgreSQL statistics by @chilagrow in FerretDB#3513
  • Implement Collection.Compact for SQLite by @Akhil-2001 in FerretDB#3536
  • Use self-hosted runner for packages building by @AlekSi in FerretDB#3569
  • Do not create databases during local setup by @AlekSi in FerretDB#3572
  • Build arm/v7 binaries by @AlekSi in FerretDB#3577
  • Add more tests and fixes for $collStats aggregation stage by @chilagrow in FerretDB#3565
  • Build arm/v7 .deb and .rpm packages and binaries by @AlekSi in FerretDB#3576
  • Add tests for insertion of documents with invalid _id fields by @slavabobik in FerretDB#3579
  • Add more data to output of collStats and dbStats by @chilagrow in FerretDB#3538
  • Update dataSize and dbStats integration tests by @chilagrow in FerretDB#3585
  • Do not return stats in Backend.ListDatabases by @AlekSi in FerretDB#3588
  • Remove old TODOs by @AlekSi in FerretDB#3595
  • Use stdlib's slices package by @AlekSi in FerretDB#3590
  • Remove done TODO by @chilagrow in FerretDB#3596
  • Check that linked issues are open by @KrishnaSindhur in FerretDB#3277
  • Make it easier to run old PG handler by @AlekSi in FerretDB#3598
  • Implement Collection.Compact for PostgreSQL by @rumyantseva in FerretDB#3603
  • Do not skip invalid TODOs by @AlekSi in FerretDB#3597
  • Unskip filter pushdown integration tests by @noisersup in FerretDB#3605
  • Call ANALYZE less often by @Aditya1404Sal in FerretDB#3563
  • Keep envtool's version always up-to-date by @AlekSi in FerretDB#3609
  • Fix some tests for SQLite backend by @AlekSi in FerretDB#3617
  • Do not create OpLog database/collection on a fly by @AlekSi in FerretDB#3625
  • Make listIndexes return a sorted list by @codenoid in FerretDB#3602

New Contributors

All closed issues and pull requests. All commits.

v1.12.1 (2023-10-10)

What's Changed

New PostgreSQL backend

The new PostgreSQL backend is ready for testing. Enable it with --postgresql-new flag or FERRETDB_POSTGRESQL_NEW=true environment variable. The next FerretDB version will enable it by default.

Docker images changes

Production Docker images use scratch as a base Docker image. The only file present in the image is a FerretDB binary (with root TLS certificates embedded).

arm64 binaries

In addition to linux/arm64 Docker images, we now provide linux/arm64 binaries and .deb / .rpm packages.

New Features πŸŽ‰

Fixed Bugs πŸ›

  • Verify that client metadata not being mutated by @kropidlowsky in FerretDB#3194
  • Relax restrictions when _id is not the first field in projection by @princejha95 in FerretDB#3491
  • Fix _id restriction in aggregation $project stage by @chilagrow in FerretDB#3508

Enhancements πŸ› 

  • Implement validation for createIndexes and dropIndexes commands for SQLite by @rumyantseva in FerretDB#3373
  • Use Ping for checking connection by @AlekSi in FerretDB#3519

Documentation πŸ“„

  • Update Writing Guide by @Fashander in FerretDB#3424
  • Add blog post on Using MajorM as MongoDB GUI for FerretDB by @Fashander in FerretDB#3387
  • Add release blog post for FerretDB v1.11.0 by @Fashander in FerretDB#3439
  • Fix RSS feed issue with images by @Fashander in FerretDB#3417
  • Republish Hacktobest blog post by @Fashander in FerretDB#3429
  • Add blog post on Enmeshed by @Fashander in FerretDB#3448
  • Add $project and $unset to aggregation stages section by @Akhaled19 in FerretDB#3450
  • Add operation mode definition to Glossary by @rohitkbc in FerretDB#3472
  • Improve definitions for aggregation stages by @Fashander in FerretDB#3499
  • Add TODOs for capped collections by @AlekSi in FerretDB#3461
  • Fix blog post formatting by @Fashander in FerretDB#3515
  • Fix typo in contributing documentation by @jrmanes in FerretDB#3507
  • Add mermaid diagrams by @AlekSi in FerretDB#3524
  • Update documentation by @AlekSi in FerretDB#3530

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v1.11.0 (2023-09-25)

Fixed Bugs πŸ›

  • Fix collStats to return correct count of documents for SQLite by @chilagrow in FerretDB#3363
  • Fix metadata updates for dropIndexes by @rumyantseva in FerretDB#3358

Enhancements πŸ› 

  • Return statistics of indexes for collStats and dbStats for SQLite backend by @rumyantseva in FerretDB#3361

Documentation πŸ“„

Other Changes πŸ€–

All closed issues and pull requests. All commits.

v1.10.1 (2023-09-14)

What's Changed

With this release, the SQLite backend support is officially out of beta, on par with our PostgreSQL backend, and fully supported!

New Features πŸŽ‰

  • Implement aggregate for SQLite by @chilagrow in FerretDB#3256
  • Implement collStats for SQLite by @chilagrow in FerretDB#3295
  • Implement createIndexes for SQLite by @rumyantseva in FerretDB#3304
  • Implement dbStats for SQLite by @chilagrow in FerretDB#3270
  • Implement distinct for SQLite by @chilagrow in FerretDB#3265
  • Implement dropIndexes for SQLite by @rumyantseva in FerretDB#3329
  • Implement explain command for SQLite by @noisersup in FerretDB#3264
  • Implement findAndModify for SQLite by @chilagrow in FerretDB#3302
  • Implement getLog for SQLite by @rumyantseva in FerretDB#3279
  • Implement listDatabases for SQLite by @rumyantseva in FerretDB#3269
  • Implement listIndexes for SQLite by @rumyantseva in FerretDB#3301
  • Implement renameCollection for SQLite by @chilagrow in FerretDB#3321
  • Implement serverStatus and dataSize commands for SQLite by @chilagrow in FerretDB#3316
  • Support _id implicit filter for ObjectID in SQLite by @chilagrow in FerretDB#3330
  • Support $bit bitwise update operator by @adetunjii in FerretDB#3266
  • Support ordered inserts for SQLite by @AlekSi in FerretDB#3223

Enhancements πŸ› 

Documentation πŸ“„

  • Cleanup $bit update operator by @chilagrow in FerretDB#3315
  • Document how to test for compatibility by @b1ron in FerretDB#3268
  • Update blog writing guide documentation by @chilagrow in FerretDB#3209
  • Update category links in writing guide by @Fashander in FerretDB#3323
  • Update deb.md - minor grammar correction by @athkishore in FerretDB#3289
  • Update the writing guide by @Fashander in FerretDB#3311

Other Changes πŸ€–

  • Add ability to freeze *types.Document and *types.Array by @KrishnaSindhur in FerretDB#3253
  • Add backend decorators and OpLog stub by @AlekSi in FerretDB#3303
  • Add backend interface for collStats by @chilagrow in FerretDB#3294
  • Add backend interface for dbStats by @chilagrow in FerretDB#3267
  • Add more tests by @chilagrow in FerretDB#3336
  • Add new PostgreSQL backend stub by @AlekSi in FerretDB#3319
  • Add tests for accessing aggregation variable $$ROOT field by @chilagrow in FerretDB#3254
  • Add tests for validation bug by @AlekSi in FerretDB#3286
  • Add transactions to fsql by @AlekSi in FerretDB#3278
  • Bump deps by @AlekSi in FerretDB#3284
  • Clean-up *types.Timestamp a bit by @AlekSi in FerretDB#3305
  • Do not ConsumeValues in the $group aggregation stage by @adetunjii in FerretDB#3344
  • Expand architecture docs, add comments by @AlekSi in FerretDB#3288
  • Fix params handling for dropIndexes implementation for SQLite by @rumyantseva in FerretDB#3350
  • Make registry return full collection info by @AlekSi in FerretDB#3292
  • Remove Database.Close by @AlekSi in FerretDB#3327
  • Remove duplicated $expr tests by @chilagrow in FerretDB#3255
  • Return correct response if unique index violation happened on SQLite backend by @rumyantseva in FerretDB#3353
  • Simplify and deprecate commonerrors.WriteErrors by @AlekSi in FerretDB#3258
  • Skip tests for enable setFreeMonitoring for MongoDB by @chilagrow in FerretDB#3318
  • Tweak MongoDB initialization process by @AlekSi in FerretDB#3307
  • Update TODO comments by @noisersup in FerretDB#3262
  • Use pkgsite instead of godoc by @AlekSi in FerretDB#3326
  • Use Go 1.21 by @AlekSi in FerretDB#3324

New Contributors

All closed issues and pull requests. All commits.

v1.9.0 (2023-08-28)

Enhancements πŸ› 

Documentation πŸ“„

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v1.8.0 (2023-08-14)

New Features πŸŽ‰

  • Implement $group stage _id expression by @chilagrow in FerretDB#3138
  • Implement $expr evaluation query operator by @chilagrow in FerretDB#3163

Fixed Bugs πŸ›

  • Do not return immutable _id error from findAndModify for upserting same _id by @chilagrow in FerretDB#3171

Enhancements πŸ› 

Other Changes πŸ€–

  • Bump deps by @AlekSi in FerretDB#3142
  • Improve MongoDB/FerretDB error checking in tests by @AlekSi in FerretDB#3143
  • Expect some aggregate and insert tests to fail for SQLite by @AlekSi in FerretDB#3147
  • Make administration command integration tests pass for SQLite by @noisersup in FerretDB#3152
  • Bump deps, including Go by @AlekSi in FerretDB#3160
  • Make aggregate stats integration tests pass for SQLite by @noisersup in FerretDB#3151
  • Simplify tests a bit by @AlekSi in FerretDB#3149
  • Make distinct and explain command integration tests pass for SQLite by @noisersup in FerretDB#3159
  • Use one implementation for finding path values by @chilagrow in FerretDB#3087
  • Make aggregate documents compat tests pass for SQLite by @noisersup in FerretDB#3150
  • Make query integration tests pass for SQLite by @noisersup in FerretDB#3182
  • Make findAndModify integration tests pass for SQLite by @noisersup in FerretDB#3173
  • Make index integration tests pass for SQLite by @noisersup in FerretDB#3185
  • Add tests for $$ROOT aggregation expression variable by @chilagrow in FerretDB#3180
  • Make getMore integration tests pass for SQLite by @noisersup in FerretDB#3174
  • Make update integration tests pass for SQLite by @noisersup in FerretDB#3184
  • Add tests for $$ROOT by @chilagrow in FerretDB#3187

All closed issues and pull requests. All commits.

v1.7.0 (2023-07-31)

New Features πŸŽ‰

  • Implement $sum aggregation standard operator by @chilagrow in FerretDB#3063

Fixed Bugs πŸ›

Enhancements πŸ› 

  • Add validating max nested document/array depth by @kropidlowsky in FerretDB#2882
  • Validate database and collection names for SQLite handler by @noisersup in FerretDB#2868
  • Add basic metrics, logging and tracing for SQLite by @AlekSi in FerretDB#3123
  • Tweak and document SQLite URI parameters by @AlekSi in FerretDB#3128

Documentation πŸ“„

  • Add blog post for FerretDB v1.6.0 by @Fashander in FerretDB#3058
  • Update changelog by @AlekSi in FerretDB#3072
  • Update blog post for FerretDB v1.6.0 by @Fashander in FerretDB#3073
  • Tweak documentation and blog by @Fashander in FerretDB#2992
  • Add blog post on "Community matters: fireside chat with Artem Ervits, CockroachDB" by @Fashander in FerretDB#3066
  • Update Blog Post by @Fashander in FerretDB#3086
  • Update tags formatting in writing guide by @Fashander in FerretDB#3097
  • Add blog post on "Using Mingo with FerretDB" by @Fashander in FerretDB#3074
  • Simplify checkdocs linter by @AlekSi in FerretDB#3104
  • Update MongoDB comparision blog post by @ptrfarkas in FerretDB#3117
  • Update MongoDB comparision blog post by @ptrfarkas in FerretDB#3119
  • Add blog post on Grafana Monitoring for FerretDB by @Fashander in FerretDB#3106

Other Changes πŸ€–

  • Bump deps by @AlekSi in FerretDB#3064
  • Mark some tests as failing for SQLite by @AlekSi in FerretDB#3051
  • Improve sjson package fuzzing by @quasilyte in FerretDB#3071
  • Merges fuzztool into envtool by @Aditya1404Sal in FerretDB#2645
  • Do not import commonerrors in tests by @AlekSi in FerretDB#3081
  • Remove dead code by @AlekSi in FerretDB#3093
  • Allow to change SQLite URI in tests by @AlekSi in FerretDB#3092
  • Replace test doubles with constants by @noisersup in FerretDB#3024
  • Improve checkdocs linter by @KrishnaSindhur in FerretDB#3095
  • Add daily progress principle to PROCESS.md by @rumyantseva in FerretDB#3098
  • Support _id aggregation operators for $group stage by @noisersup in FerretDB#3096
  • Bump the tools group in /tools with 1 update by @dependabot in FerretDB#3109
  • Backport v1.6.1 fixes by @AlekSi in FerretDB#3107
  • Support recursive operator calls for $sum aggregation accumulator by @noisersup in FerretDB#3116

New Contributors

All closed issues and pull requests. All commits.

v1.6.1 (2023-07-26)

Fixed Bugs πŸ›

  • Fix pushdown for find with filter and limit by @AlekSi in FerretDB#3114

All closed issues and pull requests. All commits.

v1.6.0 (2023-07-17)

New Features πŸŽ‰

  • Implement killCursors command by @AlekSi in FerretDB#2939
  • Implement ping command for SQLite by @noisersup in FerretDB#2965
  • Implement getParameter method for SQLite by @chilagrow in FerretDB#2985

Fixed Bugs πŸ›

  • Ignore lsid field in all commands by @b1ron in FerretDB#3010
  • Allow $set operator to update _id by @chilagrow in FerretDB#3009
  • Apply pushdown for limit by @chilagrow in FerretDB#2993
  • Fix update with query operator for upsert option by @chilagrow in FerretDB#3028

Enhancements πŸ› 

  • Add integration tests for maxTimeMS in find, aggregate and getMore by @chilagrow in FerretDB#2953
  • Remove double decoding in unmarshalSingleValue by @quasilyte in FerretDB#3018
  • Ignore count.fields argument by @AlekSi in FerretDB#3048

Documentation πŸ“„

  • Add blog post on FerretDB release v1.5.0 by @Fashander in FerretDB#2958
  • Mention SQLite in README.md by @AlekSi in FerretDB#2968
  • Add blog post about using NoSQLBooster with FerretDB by @Fashander in FerretDB#2962
  • Update blog post image by @Fashander in FerretDB#3029
  • Add a note about setting the stable API version by @b1ron in FerretDB#3035
  • Add blog post on "How to run FerretDB on top of StackGres" by @Fashander in FerretDB#2869
  • Fix blog post formatting by @AlekSi in FerretDB#3047
  • Update database naming restrictions by @b1ron in FerretDB#3042

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v1.5.0 (2023-07-03)

What's Changed

This release provides beta-level support for the SQLite backend. There is some missing functionality, but it is ready for early adopters.

This release provides improved cursor support, enabling commands like find and aggregate to return large data sets much more effectively.

Tigris data users: Please note that this is the last release of FerretDB which includes support for the Tigris backend. Starting from FerretDB v1.6.0, Tigris will not be supported. If you wish to use Tigris, please do not update FerretDB beyond v1.5.0. This and earlier versions of FerretDB with Tigris support will still be available on GitHub.

New Features πŸŽ‰

  • Implement count for SQLite by @AlekSi in FerretDB#2865
  • Enable cursor support for PostgreSQL and SQLite by @AlekSi in FerretDB#2864

Enhancements πŸ› 

  • Support find singleBatch and validate getMore parameters by @chilagrow in FerretDB#2855
  • Support cursors for aggregation pipelines by @chilagrow in FerretDB#2861
  • Fix collection name starting with dot validation by @noisersup in FerretDB#2912
  • Improve validation for createIndexes and dropIndexes by @chilagrow in FerretDB#2884
  • Use cursors in find command by @AlekSi in FerretDB#2933

Documentation πŸ“„

  • Add blogpost on FerretDB v1.4.0 by @Fashander in FerretDB#2858
  • Add blog post on "Meet FerretDB at Percona University in Casablanca and Belgrade" by @Fashander in FerretDB#2870
  • Update supported commands by @chilagrow in FerretDB#2876
  • Add blog post "FerretDB Demo: Launch and Test a Database in Minutes" by @Fashander in FerretDB#2851
  • Fix Github link for Dance repository by @Matthieu68857 in FerretDB#2887
  • Add blog post on "How to Configure FerretDB to work on Percona Distribution for PostgreSQL" by @Fashander in FerretDB#2911
  • Update incorrect blog post image by @Fashander in FerretDB#2920
  • Crush PNG images by @AlekSi in FerretDB#2931

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v1.4.0 (2023-06-19)

New Features πŸŽ‰

  • Implement $type aggregation operator by @noisersup in FerretDB#2789
  • Implement $unset aggregation pipeline stage by @shibasisp in FerretDB#2676
  • Implement simple $addFields/$set aggregation pipeline stages by @shibasisp in FerretDB#2783
  • Implement createIndexes for unique indexes by @w84thesun in FerretDB#2814

Documentation πŸ“„

  • Add blog post for FerretDB v1.3.0 by @Fashander in FerretDB#2791
  • Add release tag to release blog post by @AlekSi in FerretDB#2792
  • Add textlint rules for en dashes and em dashes by @AlekSi in FerretDB#2823
  • Add Blog Post on Document Databases by @Fashander in FerretDB#2204
  • Add user documentation about unique index creation by @rumyantseva in FerretDB#2856

Other Changes πŸ€–

  • Make testutil.Logger easier to use by @AlekSi in FerretDB#2790
  • Bump deps by @AlekSi in FerretDB#2798
  • Refactor SQLite handler by @AlekSi in FerretDB#2731
  • Merge test workflows to fix coverage calculation by @AlekSi in FerretDB#2801
  • Improve testDistinctCompat by @noisersup in FerretDB#2782
  • Use iterator in $sum aggregation accumulator by @chilagrow in FerretDB#2799
  • Bump Go to 1.20.5 by @AlekSi in FerretDB#2810
  • Fix free monitoring tests for MongoDB 6.0.6 by @jeremyphua in FerretDB#2784
  • Bump MongoDB to 6.0.6 by @AlekSi in FerretDB#2727
  • Bump MongoDB Go driver by @AlekSi in FerretDB#2817
  • Implement envtool tests shard command by @kropidlowsky in FerretDB#2773
  • Check error message in non compat integration tests by @chilagrow in FerretDB#2806
  • Shard integration tests by @AlekSi in FerretDB#2820
  • Describe current test naming conventions in the contributing guidelines by @rumyantseva in FerretDB#2821
  • Add tests for find/getMore batchSize by @chilagrow in FerretDB#2825
  • Add more test cases for index validation by @rumyantseva in FerretDB#2752
  • Fix running single test with task by @w84thesun in FerretDB#2832
  • Refactor getWholeParamStrict and GetScaleParam functions by @w84thesun in FerretDB#2831
  • Prevent tests deadlock when backend is down by @AlekSi in FerretDB#2846
  • Fix unimplemented-non-default tag usages by @w84thesun in FerretDB#2848
  • Bump deps by @AlekSi in FerretDB#2849
  • Add more tests for $set and $addFields aggregation stages by @chilagrow in FerretDB#2844
  • Improve benchmarks by @AlekSi in FerretDB#2833
  • Handle $type aggregation operator errors properly by @noisersup in FerretDB#2829

New Contributors

All closed issues and pull requests. All commits.

v1.3.0 (2023-06-05)

New Features πŸŽ‰

  • Implement positional operator in projection by @chilagrow in FerretDB#2688
  • Implement logout command by @kropidlowsky in FerretDB#2639

Fixed Bugs πŸ›

  • Fix reporting of updates availability by @rumyantseva in FerretDB#2653
  • Fix .deb and .rpm package versions by @AlekSi in FerretDB#2725
  • Allow query to be type null in distinct command by @b1ron in FerretDB#2658
  • Fix path collisions for multiple update operators by @noisersup in FerretDB#2713

Enhancements πŸ› 

  • Fix _id formatting in update error messages by @noisersup in FerretDB#2711

Documentation πŸ“„

  • Add release blog post for FerretDB version 1.2.0 by @Fashander in FerretDB#2686
  • Update $project in Supported Commands by @Fashander in FerretDB#2710
  • Add formatter for markdown tables by @rumyantseva in FerretDB#2693
  • Reformat and lint more documentation files by @AlekSi in FerretDB#2740
  • Document aggregation operations by @Fashander in FerretDB#2672
  • Improve authentication documentation by @chilagrow in FerretDB#2737

Other Changes πŸ€–

  • Refactor gitBinaryMaskParam function by @w84thesun in FerretDB#2634
  • Add distinct command errors test by @w84thesun in FerretDB#2687
  • Clarify what's left in handling OP_MSG checksum by @rumyantseva in FerretDB#2677
  • Return a better error for authentication problems by @AlekSi in FerretDB#2703
  • Aggregation operators refactor by @noisersup in FerretDB#2664
  • Implement envtool version command by @jeremyphua in FerretDB#2714
  • Make go test -list=. work by @AlekSi in FerretDB#2718
  • Include Hana in integration tests by @polyal in FerretDB#2715
  • Bump deps by @AlekSi in FerretDB#2702
  • Add logout test for all backend by @chilagrow in FerretDB#2726
  • Fix telemetry reporter logging by @AlekSi in FerretDB#2707
  • Add supported aggregations to the buildInfo output by @kropidlowsky in FerretDB#2716
  • Add aggregation operator tests by @chilagrow in FerretDB#2724
  • Add more consistency to table tests' field names by @rumyantseva in FerretDB#2717
  • Don't use sjson.GetTypeOfValue where it shouldn't be used by @noisersup in FerretDB#2728
  • Unify test file names by @w84thesun in FerretDB#2709
  • Make testFindAndModifyCompat work with compatTestCaseResultType by @rumyantseva in FerretDB#2739
  • Bump deps by @AlekSi in FerretDB#2745
  • Call ListSpecifications driver's method in tests to check indexes by @rumyantseva in FerretDB#2746
  • Simplify CountIterator by @AlekSi in FerretDB#2759
  • Check for nil values in iterators explicitly by @AlekSi in FerretDB#2758
  • Trigger GC to run finalizers by @AlekSi in FerretDB#2771
  • Update golangci-lint config by @AlekSi in FerretDB#2772
  • Remove the need to call DeepCopy in some places by @AlekSi in FerretDB#2774
  • Clean-up lazyerrors, use them in more places by @AlekSi in FerretDB#2770
  • Replace document slices with iterators by @noisersup in FerretDB#2730
  • Fix findAndModify tests for MongoDB 6.0.6 by @chilagrow in FerretDB#2779
  • Implement a few command stubs by @AlekSi in FerretDB#2777
  • Add more handler tests by @w84thesun in FerretDB#2769
  • Remove findAndModify integration tests with $ prefixed key for MongoDB 6.0.6 compatibility by @chilagrow in FerretDB#2785

New Contributors

All closed issues and pull requests. All commits.

v1.2.1 (2023-05-24)

Fixed Bugs πŸ›

  • Fix reporting of updates availability by @rumyantseva in FerretDB#2653

Other Changes πŸ€–

  • Return a better error for authentication problems by @AlekSi in FerretDB#2703

All closed issues and pull requests. All commits.

v1.2.0 (2023-05-22)

What's Changed

This release includes a highly experimental and unsupported SQLite backend. It will be improved in future releases.

Fixed Bugs πŸ›

  • Fix compatibility with C# driver by @b1ron in FerretDB#2613
  • Fix a bug with unset field sorting by @rumyantseva in FerretDB#2638
  • Return int64 values for dbStats and collStats by @AlekSi in FerretDB#2642
  • Return command error from findAndModify by @chilagrow in FerretDB#2646
  • Fix index creation on nested fields by @wqhhust in FerretDB#2637

Enhancements πŸ› 

Documentation πŸ“„

Other Changes πŸ€–

  • Bump deps by @AlekSi in FerretDB#2592
  • Remove TODO comment for closed issue by @adetunjii in FerretDB#2573
  • Add experimental integration test flag for pushdown sorting by @noisersup in FerretDB#2595
  • Extract handler parameters from corresponding structure by @w84thesun in FerretDB#2513
  • Add shell subcommands (mkdir, rmdir) in envtool by @kropidlowsky in FerretDB#2596
  • Add basic postcondition checker for errors by @AlekSi in FerretDB#2607
  • Add sqlite handler stub by @AlekSi in FerretDB#2608
  • Make protocol-level crashes easier to understand by @AlekSi in FerretDB#2610
  • Simplify envtool shell subcommands by @AlekSi in FerretDB#2614
  • Cleanup old Docker images by @wqhhust in FerretDB#2533
  • Fix exponential backoff minimum duration by @noisersup in FerretDB#2578
  • Fix count's query parameter by @w84thesun in FerretDB#2622
  • Add a README.md file for assertions by @b1ron in FerretDB#2569
  • Use ExtractParameters in handlers by @w84thesun in FerretDB#2620
  • Verify OP_MSG message checksum by @adetunjii in FerretDB#2540
  • Separate codebase for aggregation $project and query projection by @chilagrow in FerretDB#2631
  • Implement envtool shell read subcommand by @wqhhust in FerretDB#2626
  • Cleanup projection by @chilagrow in FerretDB#2641
  • Add common backend interface prototype by @AlekSi in FerretDB#2619
  • Add SQLite handler flags by @AlekSi in FerretDB#2651
  • Add tests for aggregation expressions with dots in $group aggregation stage by @rumyantseva in FerretDB#2636
  • Implement some SQLite backend commands by @AlekSi in FerretDB#2655
  • Fix tests to assert correct error by @chilagrow in FerretDB#2546
  • Aggregation expression refactor by @noisersup in FerretDB#2644
  • Move common commands to commoncommands by @AlekSi in FerretDB#2660
  • Add basic observability into backend interfaces by @AlekSi in FerretDB#2661
  • Implement metadata storage by @w84thesun in FerretDB#2656
  • Add Query to the common backend interface by @AlekSi in FerretDB#2662
  • Implement query request for SQLite backend by @w84thesun in FerretDB#2665
  • Add test case for read in envtools by @wqhhust in FerretDB#2657
  • Run integration tests for sqlite handler by @AlekSi in FerretDB#2666
  • Bump deps by @AlekSi in FerretDB#2671
  • Create SQLite directory if needed by @AlekSi in FerretDB#2673
  • Implement SQLite update and delete commands by @w84thesun in FerretDB#2674

New Contributors

All closed issues and pull requests. All commits.

v1.1.0 (2023-05-09)

New Features πŸŽ‰

  • Implement projection fields assignment by @w84thesun in FerretDB#2484
  • Implement $project pipeline aggregation stage by @w84thesun in FerretDB#2383
  • Handle create and drop commands in Hana handler by @polyal in FerretDB#2458
  • Implement renameCollection command by @b1ron in FerretDB#2343

Fixed Bugs πŸ›

  • Fix findAndModify for $exists query operator by @chilagrow in FerretDB#2385
  • Fix SchemaStats to return correct data by @rumyantseva in FerretDB#2426
  • Fix findAndModify for $set operator setting _id by @chilagrow in FerretDB#2507
  • Fix update for conflicting dot notation paths by @chilagrow in FerretDB#2521
  • Fix $ path errors for sort by @chilagrow in FerretDB#2534
  • Fix empty projections panic by @w84thesun in FerretDB#2562
  • Fix runCommand's inserts of documents without _ids by @kropidlowsky in FerretDB#2574

Enhancements πŸ› 

  • Validate scale param for dbStats and collStats correctly by @rumyantseva in FerretDB#2418
  • Allow database name contain uppercase characters by @syasyayas in FerretDB#2504
  • Add identifying Arch Linux version in hostInfo command by @kropidlowsky in FerretDB#2525
  • Handle absent os-release file by @kropidlowsky in FerretDB#2541
  • Improve handling of os-release files by @kropidlowsky in FerretDB#2553

Documentation πŸ“„

  • Document test script by @chilagrow in FerretDB#2353
  • Use draft instead of unlisted by @AlekSi in FerretDB#2372
  • Make example docker compose file restart on failure by @noisersup in FerretDB#2376
  • Document how to get logs by @chilagrow in FerretDB#2355
  • Update writing guide by @Fashander in FerretDB#2373
  • Add comments to our documentation workflow by @AlekSi in FerretDB#2390
  • Add blogpost: Announcing FerretDB 1.0 GA - a truly Open Source MongoDB alternative by @AlekSi in FerretDB#2397
  • Update documentation for index options by @AlekSi in FerretDB#2417
  • Add query pushdown documentation by @noisersup in FerretDB#2339
  • Update README.md to link to SSPL by @cooljeanius in FerretDB#2420
  • Improve documentation for Docker by @AlekSi in FerretDB#2396
  • Add more detailed PR guides in CONTRIBUTING.md by @AuruTus in FerretDB#2435
  • Remove a few double spaces by @AlekSi in FerretDB#2431
  • Add image for a future blog post by @AlekSi in FerretDB#2453
  • Add blogpost - Using FerretDB with Studio 3T by @AlekSi in FerretDB#2454
  • Fix YAML indentation by @AlekSi in FerretDB#2455
  • Update blog post on Using FerretDB with Studio3T by @Fashander in FerretDB#2457
  • Document createIndexes, listIndexes, and dropIndexes commands by @Fashander in FerretDB#2488

Other Changes πŸ€–

  • Allow setting "package" variable with a testing flag by @AlekSi in FerretDB#2357
  • Make it easier to use Docker-related Task targets by @AlekSi in FerretDB#2358
  • Do not mark released binaries as dirty by @AlekSi in FerretDB#2371
  • Make Docker Compose flags compatible by @AlekSi in FerretDB#2377
  • Bump dependencies by @AlekSi in FerretDB#2367
  • Fix version.txt generation for git tags by @AlekSi in FerretDB#2388
  • Fix types order linter by @AlekSi in FerretDB#2391
  • Cleanup deprecated errors by @chilagrow in FerretDB#2411
  • Bump deps by @AlekSi in FerretDB#2408
  • Use parallel tests consistently by @chilagrow in FerretDB#2409
  • Compress CI artifacts by @noisersup in FerretDB#2424
  • Use exponential backoff with jitter by @j0holo in FerretDB#2419
  • Add Mergify rules for blog posts by @AlekSi in FerretDB#2434
  • Migrate to pgx/v5 by @craigpastro in FerretDB#2439
  • Make it harder to misuse iterators by @AlekSi in FerretDB#2428
  • Update PR template by @AlekSi in FerretDB#2441
  • Rename testing flag by @AlekSi in FerretDB#2437
  • Fix compilation on riscv64 by @afiskon in FerretDB#2456
  • Cleanup exponential backoff with jitter by @chilagrow in FerretDB#2443
  • Add workaround for CockroachDB issue by @AlekSi in FerretDB#2464
  • Implement blog posts previews by @noisersup in FerretDB#2433
  • Introduce integration benchmarks by @noisersup in FerretDB#2381
  • Add tests to findAndModify on $exists operator by @chilagrow in FerretDB#2422
  • Bump deps by @AlekSi in FerretDB#2479
  • Refactor aggregation by @chilagrow in FerretDB#2463
  • Tweak documentation by @AlekSi in FerretDB#2452
  • Fix query projection for top level fields by @w84thesun in FerretDB#2386
  • Handle envtool panic on timeout by @syasyayas in FerretDB#2499
  • Enable debugging tracing of SQL queries by @craigpastro in FerretDB#2467
  • Update blog file names to match with slug by @chilagrow in FerretDB#2497
  • Add benchmark for replacing large document by @noisersup in FerretDB#2482
  • Add more documentation-related items to definition of done by @rumyantseva in FerretDB#2494
  • Return unsupported operator error for $ projection operator by @w84thesun in FerretDB#2512
  • Use update_available from Beacon by @chilagrow in FerretDB#2496
  • Use iterator in aggregation stages by @chilagrow in FerretDB#2480
  • Increase timeout for tests by @rumyantseva in FerretDB#2508
  • Add InsertMany benchmark by @raeidish in FerretDB#2518
  • Add coveralls.io integration by @noisersup in FerretDB#2483
  • Add linter for checking blog posts by @raeidish in FerretDB#2459
  • Add a YAML formatter by @wqhhust in FerretDB#2485
  • Fix collStats for Tigris by @rumyantseva in FerretDB#2520
  • Small addition to YAML formatter usage by @rumyantseva in FerretDB#2524
  • Cleanup of blog post linter for slug by @chilagrow in FerretDB#2526
  • Pushdown simplest sorting for find command by @noisersup in FerretDB#2506
  • Move handlers/pg/pjson to handlers/sjson by @craigpastro in FerretDB#2531
  • Check test database name length in compat test setup by @chilagrow in FerretDB#2527
  • Document not ready issues label by @AlekSi in FerretDB#2544
  • Remove version and name assertions in integration tests by @raeidish in FerretDB#2552
  • Add helpers for iterators and generators by @AlekSi in FerretDB#2542
  • Do various small cleanups by @AlekSi in FerretDB#2561
  • Pushdown simplest sorting for aggregate command by @noisersup in FerretDB#2530
  • Move handlers parameters to common by @w84thesun in FerretDB#2529
  • Use our own Prettier Docker image by @AlekSi in FerretDB#2535
  • Improve fuzzing with recorded seed data by @fenogentov in FerretDB#2392
  • Add proper CLI to envtool - envtool setup subcommand by @kropidlowsky in FerretDB#2570
  • Recover from more errors, close connection less often by @AlekSi in FerretDB#2564
  • Tweak issue templates and contributing docs by @AlekSi in FerretDB#2572
  • Refactor integration benchmarks by @AlekSi in FerretDB#2537
  • Do panic in integration tests if connection can't be established by @rumyantseva in FerretDB#2577
  • Small refactoring by @AlekSi in FerretDB#2575
  • Merge no ci label into not ready by @AlekSi in FerretDB#2580

New Contributors

All closed issues and pull requests. All commits.

v1.0.0 (2023-04-03)

What's Changed

We are delighted to announce the release of FerretDB 1.0 GA!

New Features πŸŽ‰

  • Support $sum accumulator of $group aggregation by @chilagrow in FerretDB#2292
  • Implement createIndexes command by @rumyantseva in FerretDB#2244
  • Add basic getMore command by @AlekSi in FerretDB#2309
  • Implement dropIndexes command by @chilagrow in FerretDB#2313
  • Implement $limit aggregation pipeline stage by @noisersup in FerretDB#2270
  • Add partial support for collStats, dbStats and dataSize by @AlekSi in FerretDB#2322
  • Implement $skip aggregation pipeline stage by @w84thesun in FerretDB#2310
  • Implement $unwind aggregation pipeline stage by @noisersup in FerretDB#2294
  • Support count and storageStats fields in $collStats aggregation pipeline stage by @rumyantseva in FerretDB#2338

Fixed Bugs πŸ›

Documentation πŸ“„

  • Update supported command for $sum aggregation operator by @chilagrow in FerretDB#2318
  • Add supported shells and GUIs images by @AlekSi in FerretDB#2323
  • Publish FerretDB v0.9.4 blog post by @Fashander in FerretDB#2268
  • Use dashes instead of underscores or spaces by @AlekSi in FerretDB#2329
  • Update documentation sidebar by @Fashander in FerretDB#2347
  • Update FerretDB descriptions by @AlekSi in FerretDB#2281
  • Improve flags documentation by @AlekSi in FerretDB#2331
  • Describe supported fields for $collStats aggregation stage by @rumyantseva in FerretDB#2352

Other Changes πŸ€–

  • Use iterators for sort, limit, skip, and projection by @AlekSi in FerretDB#2254
  • Bump dependencies by @AlekSi in FerretDB#2307
  • Improve resource tracking by @AlekSi in FerretDB#2319
  • Add tests for find's and count's skip argument by @w84thesun in FerretDB#2325
  • Close iterator properly by @AlekSi in FerretDB#2333
  • Improve large numbers initialization in test data by @noisersup in FerretDB#2324
  • Ignore unique index option for now by @AlekSi in FerretDB#2350

All closed issues and pull requests. All commits.

Older Releases

See https://github.com/FerretDB/FerretDB/blob/v1.0.0/CHANGELOG.md.