v1.24.0 (2024-08-28)
As communicated in the previous release, this version renames the SLogger
field to Logger
,
finishing the migration from zap
to slog
.
- Ignore Stable API fields by @Evengard in #4067
- Fix Docker's
HEALTHCHECK
in production image by @dasjoe in #4547 - Remove duplicate response field on
OP_QUERY
hello
by @chilagrow in #4549 - Fix
OP_QUERY
saslStart
andsaslContinue
for C# driver by @chilagrow in #4550 - Fix
saslContinue
completing handshake too early by @chilagrow in #4552
- Fix Terser plugin build error by @nalgeon in #4506
- Enable zoom on images by @Fashander in #4508
- Add blog post on building a RESTful API with Deno by @Fashander in #4517
- Update missing image by @Fashander in #4522
- Fix broken links by @Fashander in #4525
- Fix critical typo in telemetry documentation by @AlekSi in #4536
- Bump Docusaurus by @AlekSi in #4544
- Added Elestio as one-click deploy option by @kaiwalyakoparkar in #4546
- Add docs for new authentication by @Fashander in #4557
- Implement our own changelog generator by @vigneshsankariyer1234567890 in #4219
- Add open issues check in
checkdocs
by @kropidlowsky in #4258 - Prototype OTel context propagation by @rumyantseva in #4483
- Cleanup logging by @chilagrow in #4489
- Use
wire
andwirebson
packages by @chilagrow in #4490 - Alignment and Bugfixes for SAP HANA backend by @yonarw in #4491
- Port small things from v2 by @AlekSi in #4495
- Bump deps by @AlekSi in #4496
- Remove
zap
remnants by @AlekSi in #4497 - Update
listDatabases
integration test filter input by @chilagrow in #4499 - Update duplicate field handling by @chilagrow in #4500
- Convert BSON values of
wirebson
totypes
by @chilagrow in #4501 - Use
wireclient
package by @chilagrow in #4502 - Fix log message by @chilagrow in #4503
- Fix
checkdocs
Github cache on CI by @noisersup in #4509 - Document logging changes by @AlekSi in #4510
- Fix CI for documentation preview by @AlekSi in #4518
- Add
Taskfile
target topngcrush
all new images by @AlekSi in #4519 - Remove fuzzing by @chilagrow in #4520
- Use Go 1.22.6 by @AlekSi in #4523
- Minor cleanup by @AlekSi in #4535
- Use
wireclient
login function in integration test by @chilagrow in #4538 - Remove
wireconn
tests for now by @AlekSi in #4548 - Pass
GITHUB_TOKEN
to tools tests by @AlekSi in #4558
- @nalgeon made their first contribution in #4506
- @Evengard made their first contribution in #4067
- @dasjoe made their first contribution in #4547
- @kaiwalyakoparkar made their first contribution in #4546
- @vigneshsankariyer1234567890 made their first contribution in #4219
All closed issues and pull requests. All commits.
v1.23.1 (2024-08-13)
- Fix building with
go build -trimpath
by @AlekSi in #4526
All closed issues and pull requests. All commits.
v1.23.0 (2024-07-25)
This release switches from the zap
logging package to the standard slog
.
If the logger was configured by Go programs that import github.com/FerretDB/FerretDB/ferretdb
package, they should configure the SLogger
field instead.
Setting the old Logger
field will make the program panic and make the issue immediately noticeable.
The next release will completely remove zap
and rename SLogger
to just Logger
.
This release adds initial support for sending OpenTelemetry traces to the OTLP endpoint. The set of spans and their attributes is not stable yet and will change over time.
All improvements in observability in this release (OpenTelemetry traces, Kubernetes probes, debug archive) are documented there.
This release adds initial unit files for systemd
that auto-start FerretDB.
They are likely to change in the future in incompatible ways; for example, we may switch to using a non-root user.
- Add Kubernetes liveness probe by @noisersup in #4378
- Add Kubernetes readiness probe by @noisersup in #4426
- Implement Docker healthcheck by @noisersup in #4364
- Add OpenTelemetry traces and spans by @AlekSi in #4477
- Send OpenTelemetry traces and spans to OTLP endpoint by @AlekSi in #4484
- Implement
/debug/archive
handler by @sachinpuranik in #3895 - Provide systemd unit file in
.deb
and.rpm
packages by @noisersup in #4478
- Improve support for named loggers by @AlekSi in #4432
- Document Kubernetes probes by @AlekSi in #4424
- Refactor and document
/debug/archive
handler by @AlekSi in #4485 - Document logging by @AlekSi in #4436
- Add release blog post for FerretDB v1.22.0 by @Fashander in #4401
- Add blog post on running FerretDB and CloudNativePG on Kubernetes by @Fashander in #4377
- Add blogpost on "monitoring FerretDB performance using Coroot" by @Fashander in #4279
- Crush
.png
images by @AlekSi in #4441 - Remove broken links by @AlekSi in #4433
- Replace deprecated syntax in Dockerfiles by @AlekSi in #4397
- Update comments about interfaces by @AlekSi in #4405
- Check database name for authentication by @chilagrow in #4402
- Refactor runnables by @AlekSi in #4404
- Add tests for
ctxutil.Sigterm
by @AlekSi in #4406 - Setup OpenTelemetry exporter for FerretDB by @rumyantseva in #4380
- Extract
types
andzap
code into separate files by @AlekSi in #4408 - Bump Go and deps by @AlekSi in #4416
- Implement Kubernetes startup probe by @noisersup in #4399
- Disable OTEL in tests where collection name might have non-UTF-8 symbols by @rumyantseva in #4423
- Stop Otel exporter gracefully in
envtool
by @AlekSi in #4425 - Include
OpReply
error handling by @chilagrow in #4420 - Test
authSource
by @chilagrow in #4407 - Return
connectionStatus
commanddb
field by @chilagrow in #4419 - Implement checkswitch to handle regular switches by @PaveenV in #4381
- Cleanup
checkswitch
handling by @chilagrow in #4434 - Bump deps by @AlekSi in #4446
- Ignore
$readPreferences
forinsert
by @AlekSi in #4440 - Readiness probe cleanup by @noisersup in #4447
- Update linters configuration by @AlekSi in #4451
- Add support for named
slog
loggers by @chilagrow in #4435 - Increase setup timeout in tests by @AlekSi in #4454
- Port pgx logger by @AlekSi in #4450
- Handle
authSource
in low level driver by @chilagrow in #4449 - Use single definition of order for
checkswitch
by @chilagrow in #4452 - Clarify the meaning of the passed context by @AlekSi in #4455
- Remove
FuncCall
by @AlekSi in #4476 - Use
slog
inclientconn
package by @chilagrow in #4457 - Use
slog
inpostgresql
backend by @chilagrow in #4466 - Use
slog
insqlite
backend by @chilagrow in #4467 - Use
slog
inmysql
andhana
backends by @chilagrow in #4463 - Use
slog
inoplog
andcursor
packages by @chilagrow in #4471 - Use
slog
inotel
by @chilagrow in #4474 - Use
slog
indebug
package by @chilagrow in #4473 - Use
slog
in integration tests by @chilagrow in #4481 - Use
slog
inmain.go
and embeddedferretdb
package by @chilagrow in #4462 - Use
slog
infsql
by @chilagrow in #4464 - Use
slog
in handler by @chilagrow in #4470 - Use
slog
in envtool by @chilagrow in #4480 - Implement
slog.LogValuer
interface fortypes
package by @chilagrow in #4479 - Drop old dependency by @AlekSi in #4486
- Cleanup logging by @chilagrow in #4489
- @PaveenV made their first contribution in #4381
All closed issues and pull requests. All commits.
v1.22.0 (2024-06-26)
Production Docker images now use a non-root user with UID 1000 and GID 1000.
- Make maximum document size configurable by @chilagrow in #4294
- Enable initial user setup for new authentication by @AlekSi in #4310
- Fix TCP port for debug handler in Docker images by @AlekSi in #4218
- Fix embedded package panic by @noisersup in #4278
- Use non-privileged
scratch
for production Docker images by @rumyantseva in #4211 - Improve error message for
state.json
by @AlekSi in #4251 - Sort new fields in lexicographic order during update by @wazir-ahmed in #4223
- Add blog post for FerretDB v1.21 release by @Fashander in #4202
- Add blog post for Openziti by @Fashander in #4194
- Fix broken code blocks in documentation by @AlekSi in #4239
- Add KubeDB blogpost on deploying FerretDB on Kubernetes by @Fashander in #4253
- Add blog post about deploying FerretDB on Taikun CloudWorks by @Fashander in #4297
- Update example in documentation by @nullniverse in #4305
- Add blog post on Adding MongoDB compatibility to Aiven for PostgreSQL by @Fashander in #4349
- Add
restart: on-failure
to all containers by @pravi in #4309
- Bump deps by @AlekSi in #4201
- Make our own low-level driver for testing by @noisersup in #4193
- Bump deps by @AlekSi in #4238
- Fix some comments by @deferdeter in #4237
- Add dummy setup flags by @b1ron in #4247
- Fix some comments by @dockercui in #4257
- Remove old BSON implementation by @AlekSi in #4262
- Port BSON changes by @AlekSi in #4263
- Move tools cache directory by @AlekSi in #4265
- Use more shards on CI by @AlekSi in #4266
- Bump Go to 1.22.3 and deps by @AlekSi in #4272
- Update linters configuration by @AlekSi in #4277
- Fix
env-data
by @chilagrow in #4289 - Bump deps by @AlekSi in #4302
- Port some changes from v2 by @AlekSi in #4307
- Extract user creation and move to
backends
package by @AlekSi in #4311 - Populate
env-data
for runningFerretDB
by @chilagrow in #4319 - Fix
task docker-local
command by @AlekSi in #4363 - Add stub for the Docker healthcheck by @noisersup in #4355
- Bump deps by @AlekSi in #4375
- Remove
PLAIN
mechanism from new authentication by @chilagrow in #4373 - Fix codecov CLI version by @AlekSi in #4379
- Add
TestMain
to each integration test package by @AlekSi in #4366 - Handle supported mechanisms in
hello
andgetParameters
commands by @chilagrow in #4368 - Remove ambiguous comment by @chilagrow in #4382
- Revert codecov version fix by @AlekSi in #4383
- Fix typo in migration guide by @AlekSi in #4384
- Port
wire
package changes by @AlekSi in #4386 - Port
password
changes by @AlekSi in #4388 - Include
SpeculativeAuthenticate
changes by @chilagrow in #4390 - Fix
saslContinue
prematurely returningdone
by @chilagrow in #4391
- @deferdeter made their first contribution in #4237
- @dockercui made their first contribution in #4257
- @nullniverse made their first contribution in #4305
- @pravi made their first contribution in #4309
All closed issues and pull requests. All commits.
v1.21.0 (2024-02-20)
- Add experimental
SCRAM-SHA-1
/SCRAM-SHA-256
authentication support by @henvic in #4078
- Reorganize and fix
update
/upsert
logic by @wazir-ahmed in #4069
- Improve capped collection cleanup by @wazir-ahmed in #4118
- Make batch sizes configurable by @kropidlowsky in #4149
- 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
- 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 incount
,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
withbson2
inwire
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
andwire
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
tobson
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
All closed issues and pull requests. All commits.
v1.20.1 (2024-02-19)
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.
- 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
- 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
- @ahmethakanbesel made their first contribution in #4004
All closed issues and pull requests. All commits.
v1.19.0 (2024-01-29)
- Support creating an index on nested fields for SQLite by @fadyat in #3972
- Fix
maxTimeMS
forgetMore
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
- Bump deps by @AlekSi in #3955
- Add documentation for oplog by @Fashander in #3960
- Fix search queries by @Fashander in #3976
- 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
forcreateUser
anddropUser
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
fromwire
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
- @fadyat made their first contribution in #3972
All closed issues and pull requests. All commits.
v1.18.0 (2024-01-08)
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.
This release adds support for tailable cursors.
Both tailable
and awaitData
parameters are supported.
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.
- 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
- Don't cleanup capped collections if there is nothing to cleanup by @rumyantseva in #3909
- Disallow
maxTimeMS
for non-awaitData cursors ingetMore
command by @noisersup in #3917 - Add the necessary for replica set fields to
ismaster
response by @rumyantseva in #3925
- 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
inenvtool 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
andListCollections
by @sachinpuranik in #3851 - Disallow native passwords for MySQL by @adetunjii in #3937
- Fix
awaitData
cursor panic by @noisersup in #3935 - Use
usersInfo
indropAllUsersFromDatabase
tests by @henvic in #3932 - Allow Native Passwords for testcase by @adetunjii in #3941
- @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)
- 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
- Fix
listDatabases
filtering when usingnameOnly
by @henvic in #3788
- Improve
validate
diagnostic command by @b1ron in #3804 - Add fields to
listCollections.cursor
response by @henvic in #3809
- 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
- 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
- @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)
- Clarify MongoDB version by @AlekSi in #3653
- Add blogpost for release v1.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
- 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
tointernal/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
andcommonparams
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 ofcommon
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)
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.
- Support
showRecordId
infind
by @chilagrow in #3637 - Add JSON format for logging by @AlekSi in #3689
- Add option to disable
--debug-addr
by @cosmastech in #3698
- 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
- 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
- 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
- @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)
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.
- Implement
compact
command by @adetunjii in #3559
- Optimize detection of duplicate fields by @AlekSi in #3645
- Optimize
insert
performance by batching by @princejha95 in #3621
- 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
- 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
fromenvtool
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
andFindAll
for capped collections by @chilagrow in #3610
- @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)
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.
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.
We now provide linux/arm/v7
binaries, Docker images, and .deb
/ .rpm
packages.
- 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
forcollStats
by @chilagrow in #3575 - Implement free storage in
collStats
,dbStats
andaggregate
$collStats
by @chilagrow in #3594 - Add capped collection counts in
serverStatus
by @chilagrow in #3566 - Integrate Statsviz by @codenoid in #3591
- Fix invalid validation for
_id
field by @slavabobik in #3523 - Fix
explain
panic for non-existent collection on PostgreSQL by @noisersup in #3541
- 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
- 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
- Improve embedded package documentation by @princejha95 in #3537
- Use separate PostgreSQL databases in tests by @AlekSi in #3553
- Make
collStats
calculate collection size accurately forPostgreSQL
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
anddbStats
by @chilagrow in #3538 - Update
dataSize
anddbStats
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
- @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)
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.
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).
In addition to linux/arm64
Docker images, we now provide linux/arm64
binaries and .deb
/ .rpm
packages.
- 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
andStatus
by @chilagrow in #3451 - Implement
UpdateAll
by @chilagrow in #3449 - Implement
ListCollections
,CreateCollection
andDropCollection
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
- 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
- Implement validation for
createIndexes
anddropIndexes
commands for SQLite by @rumyantseva in #3373 - Use
Ping
for checking connection by @AlekSi in #3519
- 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
- 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
totypes.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
- @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)
- Fix
collStats
to return correct count of documents forSQLite
by @chilagrow in #3363 - Fix metadata updates for
dropIndexes
by @rumyantseva in #3358
- Return statistics of indexes for
collStats
anddbStats
for SQLite backend by @rumyantseva in #3361
- 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
- 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
TODO
s by @AlekSi in #3412 - Run new PostgreSQL backend tests by @AlekSi in #3407
- Implement
Query
in newPostgreSQL
backend by @chilagrow in #3411
All closed issues and pull requests. All commits.
v1.10.1 (2023-09-14)
With this release, the SQLite backend support is officially out of beta, on par with our PostgreSQL backend, and fully supported!
- 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
anddataSize
commands for SQLite by @chilagrow in #3316 - Support
_id
implicit filter forObjectID
in SQLite by @chilagrow in #3330 - Support
$bit
bitwise update operator by @adetunjii in #3266 - Support
ordered
insert
s for SQLite by @AlekSi in #3223
- Make
delete
s atomic for SQLite by @AlekSi in #3291 - Make
update
s atomic for SQLite by @AlekSi in #3296 - Do not change
search_path
parameter by @AlekSi in #3299
- 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
- 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 ofgodoc
by @AlekSi in #3326 - Use Go 1.21 by @AlekSi in #3324
- @athkishore made their first contribution in #3289
All closed issues and pull requests. All commits.
v1.9.0 (2023-08-28)
- Add more metrics for
*sql.DB
by @slavabobik in #3230
- 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
- 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
- @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)
- Implement
$group
stage_id
expression by @chilagrow in #3138 - Implement
$expr
evaluation query operator by @chilagrow in #3163
- Do not return immutable
_id
error fromfindAndModify
for upserting same_id
by @chilagrow in #3171
- Bump deps by @AlekSi in #3142
- Improve MongoDB/FerretDB error checking in tests by @AlekSi in #3143
- Expect some
aggregate
andinsert
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
andexplain
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)
- Implement
$sum
aggregation standard operator by @chilagrow in #3063
- Fix
PLAIN
auth with C# driver by @b1ron in #3012
- 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
- 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
- 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
- @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)
- Fix pushdown for
find
withfilter
andlimit
by @AlekSi in #3114
All closed issues and pull requests. All commits.
v1.6.0 (2023-07-17)
- 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
- 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 forupsert
option by @chilagrow in #3028
- Add integration tests for
maxTimeMS
infind
,aggregate
andgetMore
by @chilagrow in #2953 - Remove double decoding in unmarshalSingleValue by @quasilyte in #3018
- Ignore
count.fields
argument by @AlekSi in #3048
- 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
- Move
find
andaggregation
cursor integration tests togetMore
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
totesttb.TB
by @AlekSi in #3022 - Move
logout
tocommoncommands
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
- @quasilyte made their first contribution in #3018
All closed issues and pull requests. All commits.
v1.5.0 (2023-07-03)
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.
- Implement
count
for SQLite by @AlekSi in #2865 - Enable cursor support for PostgreSQL and SQLite by @AlekSi in #2864
- Support
find
singleBatch
and validategetMore
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
anddropIndexes
by @chilagrow in #2884 - Use cursors in
find
command by @AlekSi in #2933
- 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
- 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
andsjson
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
- @Matthieu68857 made their first contribution in #2887
All closed issues and pull requests. All commits.
v1.4.0 (2023-06-19)
- 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
- 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
- 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
andGetScaleParam
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
- @shibasisp made their first contribution in #2676
All closed issues and pull requests. All commits.
v1.3.0 (2023-06-05)
- Implement positional operator in projection by @chilagrow in #2688
- Implement
logout
command by @kropidlowsky in #2639
- 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
- Fix
_id
formatting in update error messages by @noisersup in #2711
- 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
- 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 withcompatTestCaseResultType
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
- @jeremyphua made their first contribution in #2714
All closed issues and pull requests. All commits.
v1.2.1 (2023-05-24)
- Fix reporting of updates availability by @rumyantseva in #2653
- 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)
This release includes a highly experimental and unsupported SQLite backend. It will be improved in future releases.
- Fix compatibility with C# driver by @b1ron in #2613
- Fix a bug with unset field sorting by @rumyantseva in #2638
- Return
int64
values fordbStats
andcollStats
by @AlekSi in #2642 - Return command error from
findAndModify
by @chilagrow in #2646 - Fix index creation on nested fields by @wqhhust in #2637
- 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
- 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
- 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
) inenvtool
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
'squery
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 queryprojection
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
anddelete
commands by @w84thesun in #2674
- @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)
- Implement projection fields assignment by @w84thesun in #2484
- Implement
$project
pipeline aggregation stage by @w84thesun in #2383 - Handle
create
anddrop
commands in Hana handler by @polyal in #2458 - Implement
renameCollection
command by @b1ron in #2343
- 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_id
s by @kropidlowsky in #2574
- Validate
scale
param fordbStats
andcollStats
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
- Document test script by @chilagrow in #2353
- Use
draft
instead ofunlisted
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
, anddropIndexes
commands by @Fashander in #2488
- 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
tohandlers/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 intonot ready
by @AlekSi in #2580
- @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)
We are delighted to announce the release of FerretDB 1.0 GA!
- 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
anddataSize
by @AlekSi in #2322 - Implement
$skip
aggregation pipeline stage by @w84thesun in #2310 - Implement
$unwind
aggregation pipeline stage by @noisersup in #2294 - Support
count
andstorageStats
fields in$collStats
aggregation pipeline stage by @rumyantseva in #2338
- Fix dot notation negative index errors by @w84thesun in #2246
- Apply
skip
beforelimit
by @AlekSi in #2351
- 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
- Use iterators for
sort
,limit
,skip
, andprojection
by @AlekSi in #2254 - Bump dependencies by @AlekSi in #2307
- Improve resource tracking by @AlekSi in #2319
- Add tests for
find
's andcount
'sskip
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.
See https://github.com/FerretDB/FerretDB/blob/v1.0.0/CHANGELOG.md.