Skip to content

Latest commit

Β 

History

History
1455 lines (1142 loc) Β· 101 KB

CHANGELOG.md

File metadata and controls

1455 lines (1142 loc) Β· 101 KB

Changelog

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. 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 #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. All commits.

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. 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 πŸŽ‰

  • 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. All commits.

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. All commits.

v1.16.0 (2023-12-04)

Documentation πŸ“„

  • Clarify MongoDB version by @AlekSi in #3653
  • Add blogpost for release v.1.15 by @Fashander in #3728
  • Update domain name in docs by @AlekSi in #3757
  • Update Docusaurus to v3 by @Fashander in #3772
  • Update domain name in more places by @AlekSi in #3802

Other Changes πŸ€–

  • Cleanup pushdown terminology by @noisersup in #3691
  • Make RecordID a signed value by @AlekSi in #3740
  • Bump deps by @AlekSi in #3747
  • Add MySQL into the build system by @adetunjii in #3736
  • Add MySQL backend to CI by @AlekSi in #3751
  • Remove common handlers.Interface by @AlekSi in #3753
  • Remove unsafe pushdown by @noisersup in #3752
  • Support DeleteAll for capped collections by @rumyantseva in #3718
  • Add startup warning for debug builds by @AlekSi in #3735
  • Move sqlite/*.go to internal/handler by @rumyantseva in #3755
  • Add TODOs about pushdowns by @AlekSi in #3762
  • Clean-up old code for multiple handlers by @AlekSi in #3763
  • Add TODOs by @AlekSi in #3764
  • Move some commands from common to the handler by @AlekSi in #3766
  • Add TODOs by @AlekSi in #3771
  • Allow system. prefix for collections for now by @AlekSi in #3775
  • Setup MySQL integration tests by @adetunjii in #3758
  • Rename commonerrors and commonparams by @noisersup in #3779
  • Add TLS support to proxy mode by @AlekSi in #3783
  • Provide sort to backend as the document by @noisersup in #3754
  • Add stubs for authentication commands by @AlekSi in #3776
  • Move getParameter out of common package by @noisersup in #3789
  • Remove commoncommands package by @noisersup in #3780
  • Remove done TODOs by @AlekSi in #3795
  • Ignore go-consistent failures by @AlekSi in #3794
  • Log batches for find, aggregate, getMore by @AlekSi in #3800
  • Set GOARM explicitly by @AlekSi in #3796

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 πŸŽ‰

  • Support showRecordId in find by @chilagrow in #3637
  • Add JSON format for logging by @AlekSi in #3689
  • Add option to disable --debug-addr by @cosmastech in #3698

Enhancements πŸ› 

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

Documentation πŸ“„

  • Mention proxy flag in docs by @Fashander in #3673
  • Update README.md to include Vultr by @mrusme in #3675
  • Add blog post on FastNetMon by @Fashander in #3676
  • Fix content error by @Fashander in #3694
  • Add blogpost for "How to Package and Deploy FerretDB with Acorn" by @Fashander in #3679
  • Enable interactivity on blogpost by @Fashander in #3659
  • Fix Codapi error on blog post by @Fashander in #3721
  • Add migration blog post by @Fashander in #3709

Other Changes πŸ€–

  • Make tests stable on CI by @AlekSi in #3678
  • Bump deps by @AlekSi in #3690
  • Use separate PostgreSQL databases in tests by @AlekSi in #3622
  • Add test for tailable cursor with non-capped collection by @noisersup in #3677
  • Use - in addition to the empty string by @AlekSi in #3704
  • Use the standard *mongo.WriteError type by @AlekSi in #3705
  • Fix tests for MongoDB with enabled replica set by @rumyantseva in #3604
  • Handle panicking tests by @AlekSi in #3711
  • Make handler accept constructed backend by @rumyantseva in #3710
  • Add issue tracking to checkcomments analyzer by @raeidish in #3632
  • Add TODOs and fix URLs by @AlekSi in #3723
  • Move diff tests from dance to integration tests by @ksankeerth in #3525
  • Small assorted tweaks by @AlekSi in #3724

New Contributors

  • @mrusme made their first contribution in #3675
  • @cosmastech made their first contribution in #3698
  • @chumaumenze made their first contribution in #3697
  • @ksankeerth made their first contribution in #3525

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 πŸŽ‰

  • Implement compact command by @adetunjii in #3559

Enhancements πŸ› 

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

Documentation πŸ“„

  • Fix incorrect schema by @AlekSi in #3635
  • Add blogpost for FerretDB v1.13.0 by @Fashander in #3639
  • Add Vultr blog post by @Fashander in #3646
  • Update blog post on Ubuntu by @Fashander in #3658
  • Add blog post on MongoDB sorting for scalar values by @chilagrow in #3200

Other Changes πŸ€–

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

New Contributors

  • @ShatilKhan made their first contribution in #3586
  • @rubiagatra made their first contribution in #3471
  • @gen1us2k made their first contribution in #3668

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

  • Add basic logging for PostgreSQL backend by @AlekSi in #3560
  • Report actual backend name by @AlekSi in #3570
  • Improve /debug page by @codenoid in #3592
  • Add filter pushdown for _id: <string> for SQLite by @AlekSi in #3599

Documentation πŸ“„

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

Other Changes πŸ€–

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

New Contributors

  • @Akhil-2001 made their first contribution in #3536
  • @sid-js made their first contribution in #3532
  • @codenoid made their first contribution in #3591
  • @chanon-mike made their first contribution in #3578
  • @pvinoda made their first contribution in #3593

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 πŸŽ‰

  • Build arm64 binaries and packages by @AlekSi in #3477
  • Implement metrics collection by @Mihai22125 in #3430
  • Implement RenameCollection by @AlekSi in #3440
  • Implement InsertAll by @chilagrow in #3419
  • Implement DeleteAll by @chilagrow in #3441
  • Implement DropDatabase and Status by @chilagrow in #3451
  • Implement UpdateAll by @chilagrow in #3449
  • Implement ListCollections, CreateCollection and DropCollection by @chilagrow in #3444
  • Implement explain by @noisersup in #3465
  • Implement database.Stats by @chilagrow in #3464
  • Implement collection.Stats by @chilagrow in #3478
  • Implement CreateIndexes, DropIndexes, ListIndexes by @rumyantseva in #3468
  • Implement filter pushdown by @noisersup in #3482
  • Add info about indexes to dbStats response by @rumyantseva in #3534

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

  • Add CI configurations by @AlekSi in #3423
  • Fix CI configuration and add TODOs by @AlekSi in #3436
  • Add SAP HANA backend stub by @AlekSi in #3433
  • Bump deps by @AlekSi in #3437
  • Remove extra function by @AlekSi in #3447
  • Fix fluky TestRenameCollectionCompat tests by @chilagrow in #3438
  • Mark pushdown results based on tested backend by @noisersup in #3446
  • Run tests with envtool tests run by @AlekSi in #3453
  • Remove unused expected failures by @AlekSi in #3455
  • Tweak SQLite backend tests by @AlekSi in #3460
  • Add tests for backends contract by @AlekSi in #3456
  • Speed-up Docker image building by @AlekSi in #3470
  • Fix running a subset of tests by @AlekSi in #3479
  • Add a workaround for Docker build failures by @AlekSi in #3480
  • Add stubs for Collection.Compact by @AlekSi in #3485
  • Process collection name param using collection tag by @adetunjii in #3476
  • Revive logic of lower cased key for collection name by @chilagrow in #3494
  • Add RecordID to types.Document by @AlekSi in #3495
  • Extract ReservedPrefix constant by @AlekSi in #3497
  • Fix stress tests by @AlekSi in #3502
  • Fix concurrent Docker builds by @AlekSi in #3503
  • Store indexes metadata by @rumyantseva in #3434
  • Tweak tests timeouts by @AlekSi in #3514
  • Bump Go version by @AlekSi in #3510
  • Disallow importing handlers code from backends by @AlekSi in #3512
  • Disable auto_vacuum for SQLite by @AlekSi in #3496
  • Fix index name generation by @rumyantseva in #3511
  • Fix unit tests for indexes by @rumyantseva in #3531
  • Make new PostgreSQL backend tests pass by @rumyantseva in #3522

New Contributors

  • @Mihai22125 made their first contribution in #3430
  • @Akhaled19 made their first contribution in #3450
  • @rohitkbc made their first contribution in #3472
  • @princejha95 made their first contribution in #3491
  • @jrmanes made their first contribution in #3507

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 #3363
  • Fix metadata updates for dropIndexes by @rumyantseva in #3358

Enhancements πŸ› 

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

Documentation πŸ“„

  • Improve blog format by @Fashander in #3359
  • Add a blog post for v1.10 by @AlekSi in #3346
  • Add docs for migrating to MongoDB from FerretDB by @Fashander in #3374
  • Mention SQLite in docs by @ptrfarkas in #3408

Other Changes πŸ€–

  • Add test for inserting different data types by @noisersup in #3345
  • Recreate test directory by @AlekSi in #3364
  • Use consistent spelling by @AlekSi in #3365
  • Use filter and insert more documents in BenchmarkReplaceSettingsDocument by @chilagrow in #3343
  • Replace deprecated Jaeger exporter by @adetunjii in #3368
  • Remove the need to close conninfo by @AlekSi in #3376
  • Add small tweaks by @AlekSi in #3377
  • Add CI configuration for SQLite without pushdown by @AlekSi in #3381
  • Enforce valid types usage by @AlekSi in #3384
  • Reorder codebase in SQLite registry by @chilagrow in #3382
  • Store PostgreSQL metadata by @chilagrow in #3356
  • Add TODOs by @AlekSi in #3412
  • Run new PostgreSQL backend tests by @AlekSi in #3407
  • Implement Query in new PostgreSQL backend by @chilagrow in #3411

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

Enhancements πŸ› 

  • Make deletes atomic for SQLite by @AlekSi in #3291
  • Make updates atomic for SQLite by @AlekSi in #3296
  • Do not change search_path parameter by @AlekSi in #3299

Documentation πŸ“„

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

Other Changes πŸ€–

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

New Contributors

  • @athkishore made their first contribution in #3289

All closed issues and pull requests. All commits.

v1.9.0 (2023-08-28)

Enhancements πŸ› 

  • Add more metrics for *sql.DB by @slavabobik in #3230

Documentation πŸ“„

  • Add blog post for FerretDB v1.8.0 by @Fashander in #3198
  • Fix typos in documentation by @pratikmota in #3217
  • Make the writing guide accessible but unlisted by @AlekSi in #3221
  • Add blogpost on Leafcloud by @Fashander in #3153
  • Add Postgres Ibiza event blog post by @Fashander in #3210
  • Add Civo Navigate event blog post by @Fashander in #3201

Other Changes πŸ€–

  • Configure repo settings with files by @AlekSi in #3208
  • Update go-hdb to v1.4.1 by @aenkya in #3213
  • Bump deps by @AlekSi in #3215
  • Add another stress test for SQLite by @noisersup in #3195
  • Improve building with test coverage information by @durgakiran in #3059
  • Fix concurrent SQLite tests by @AlekSi in #3222
  • Refactor aggregation operators by @noisersup in #3188
  • Add stubs for renameCollection by @AlekSi in #3233
  • Update issue links by @AlekSi in #3234
  • Add stubs for explain by @AlekSi in #3236
  • Bump deps by @AlekSi in #3248
  • Add linter for issue comments by @KrishnaSindhur in #3154
  • Simplify commonerrors package by @AlekSi in #3227
  • Publish Docker images on quay.io by @AlekSi in #3250
  • Refactor aggregation accumulators by @noisersup in #3203
  • Add new PostgreSQL backend stub by @AlekSi in #3251
  • Cleanup SQLite tests by @noisersup in #3246

New Contributors

  • @aenkya made their first contribution in #3213
  • @pratikmota made their first contribution in #3217
  • @durgakiran made their first contribution in #3059
  • @slavabobik made their first contribution in #3230

All closed issues and pull requests. All commits.

v1.8.0 (2023-08-14)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

  • Cache SQLite tables metadata by @AlekSi in #3124
  • Use lock for SQLite metadata by @AlekSi in #3146

Other Changes πŸ€–

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

Fixed Bugs πŸ›

  • Fix PLAIN auth with C# driver by @b1ron in #3012

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

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

New Contributors

  • @Aditya1404Sal made their first contribution in #2645
  • @KrishnaSindhur made their first contribution in #3095
  • @ptrfarkas made their first contribution in #3117

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 #3114

All closed issues and pull requests. All commits.

v1.6.0 (2023-07-17)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

  • Move find and aggregation cursor integration tests to getMore by @chilagrow in #2952
  • Make a copy of the testing.TB interface by @AlekSi in #2987
  • Bump deps by @AlekSi in #2998
  • Remove Tigris from documentation and builds by @AlekSi in #2999
  • Remove Tigris code by @AlekSi in #3001
  • Remove Tigris from tests by @AlekSi in #3002
  • Crush PNG files to make them smaller by @AlekSi in #3020
  • Update issue URL by @AlekSi in #3021
  • Move testutil.TB to testtb.TB by @AlekSi in #3022
  • Move logout to commoncommands by @AlekSi in #3019
  • Make task all run only unit tests by @AlekSi in #3023
  • Update closed issue links by @chilagrow in #3027
  • Unskip findAndModify $set integration test for _id by @chilagrow in #3025
  • Expect renameCollection tests failures by @AlekSi in #3007
  • Fix killCursors edge case by @AlekSi in #3030
  • Fix error checking in backend contracts by @AlekSi in #3031
  • Bump deps by @AlekSi in #3034
  • Remove Type() interface from aggregation stage by @chilagrow in #3045
  • Remove fixed issue link and clean up integration test provider setup by @chilagrow in #3052
  • Prepare v1.6.0 release by @AlekSi in #3056

New Contributors

  • @quasilyte made their first contribution in #3018

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 #2865
  • Enable cursor support for PostgreSQL and SQLite by @AlekSi in #2864

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

  • Add more validation and tests for $unset by @chilagrow in #2853
  • Make it easier to debug GitHub Actions by @AlekSi in #2860
  • Unify tests for indexes by @AlekSi in #2866
  • Bump deps by @AlekSi in #2875
  • Fix fuzzing corpus collection by @AlekSi in #2879
  • Add basic tests for iterators by @AlekSi in #2880
  • Implement basic insert support for SAP HANA by @polyal in #2732
  • Update contributing docs by @AlekSi in #2828
  • Improve wire and sjson fuzzing by @AlekSi in #2883
  • Add operators support for $addFields by @noisersup in #2850
  • Unskip test that passes now by @AlekSi in #2885
  • Tweak contributing guidelines by @AlekSi in #2886
  • Add handler's metrics registration by @AlekSi in #2895
  • Clean-up some code and comments by @AlekSi in #2904
  • Fix cancellation signals propagation by @AlekSi in #2908
  • Bump deps, add permissions monitoring by @AlekSi in #2930
  • Fix integration tests after bumping deps by @noisersup in #2934
  • Update benchmark to use cursors by @AlekSi in #2932
  • Set minWireVersion to 0 by @AlekSi in #2937
  • Test getMore integration test using one connection pool by @chilagrow in #2878
  • Add better metrics for connections by @AlekSi in #2938
  • Use cursors with iterator in aggregate command by @chilagrow in #2929
  • Implement proper response for createIndexes by @rumyantseva in #2936
  • Re-implement DELETE for SQLite backend by @w84thesun in #2907
  • Validate database names for SQLite handler by @noisersup in #2924
  • Add insert documents type validation by @w84thesun in #2946
  • Convert SQLite directory to URI by @w84thesun in #2922
  • Do not break fuzzing initialization by @AlekSi in #2951

New Contributors

  • @Matthieu68857 made their first contribution in #2887

All closed issues and pull requests. All commits.

v1.4.0 (2023-06-19)

New Features πŸŽ‰

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

Documentation πŸ“„

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

Other Changes πŸ€–

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

New Contributors

  • @shibasisp made their first contribution in #2676

All closed issues and pull requests. All commits.

v1.3.0 (2023-06-05)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

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

New Contributors

  • @jeremyphua made their first contribution in #2714

All closed issues and pull requests. All commits.

v1.2.1 (2023-05-24)

Fixed Bugs πŸ›

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

Other Changes πŸ€–

  • Return a better error for authentication problems by @AlekSi in #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 #2613
  • Fix a bug with unset field sorting by @rumyantseva in #2638
  • Return int64 values for dbStats and collStats by @AlekSi in #2642
  • Return command error from findAndModify by @chilagrow in #2646
  • Fix index creation on nested fields by @wqhhust in #2637

Enhancements πŸ› 

  • Perform insertMany in a single transaction by @raeidish in #2532
  • Relax PostgreSQL connection checks by @AlekSi in #2602
  • Cleanup insert command by @noisersup in #2609
  • Support dot notation in projection by @chilagrow in #2536

Documentation πŸ“„

  • Add FerretDB v1.1.0 release blog post by @Fashander in #2594
  • Update blog post image for 1.1.0 by @AlekSi in #2601
  • Add documentation for .rpm packages by @AlekSi in #2604
  • Fix a typo in a blog post by @AlekSi in #2611
  • Fix typo on RPM package file name by @christiano in #2628
  • Update documentation formatting by @AlekSi in #2640
  • Add blog post on "Meteor and FerretDB" by @Fashander in #2654

Other Changes πŸ€–

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

New Contributors

  • @adetunjii made their first contribution in #2573
  • @christiano made their first contribution in #2628

All closed issues and pull requests. All commits.

v1.1.0 (2023-05-09)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

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

New Contributors

  • @cooljeanius made their first contribution in #2420
  • @j0holo made their first contribution in #2419
  • @AuruTus made their first contribution in #2435
  • @craigpastro made their first contribution in #2439
  • @afiskon made their first contribution in #2456
  • @syasyayas made their first contribution in #2499
  • @raeidish made their first contribution in #2518
  • @polyal made their first contribution in #2458
  • @wqhhust made their first contribution in #2485

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 #2292
  • Implement createIndexes command by @rumyantseva in #2244
  • Add basic getMore command by @AlekSi in #2309
  • Implement dropIndexes command by @chilagrow in #2313
  • Implement $limit aggregation pipeline stage by @noisersup in #2270
  • Add partial support for collStats, dbStats and dataSize by @AlekSi in #2322
  • Implement $skip aggregation pipeline stage by @w84thesun in #2310
  • Implement $unwind aggregation pipeline stage by @noisersup in #2294
  • Support count and storageStats fields in $collStats aggregation pipeline stage by @rumyantseva in #2338

Fixed Bugs πŸ›

  • Fix dot notation negative index errors by @w84thesun in #2246
  • Apply skip before limit by @AlekSi in #2351

Documentation πŸ“„

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

Other Changes πŸ€–

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

All closed issues and pull requests. All commits.

Older Releases

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