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
aggregatefor PostgreSQL by @noisersup in #3607 - Implement sort pushdown for PostgreSQL by @noisersup in #3504
- Implement limit pushdown for PostgreSQL by @noisersup in #3580
- Implement
indexSizesforcollStatsby @chilagrow in #3575 - Implement free storage in
collStats,dbStatsandaggregate$collStatsby @chilagrow in #3594 - Add capped collection counts in
serverStatusby @chilagrow in #3566 - Integrate Statsviz by @codenoid in #3591
Fixed Bugs 🐛
- Fix invalid validation for
_idfield by @slavabobik in #3523 - Fix
explainpanic 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
/debugpage 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
collStatscalculate collection size accurately forPostgreSQLstatistics by @chilagrow in #3513 - Implement
Collection.Compactfor 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/v7binaries by @AlekSi in #3577 - Add more tests and fixes for
$collStatsaggregation stage by @chilagrow in #3565 - Build
arm/v7.deband.rpmpackages and binaries by @AlekSi in #3576 - Add tests for insertion of documents with invalid
_idfields by @slavabobik in #3579 - Add more data to output of
collStatsanddbStatsby @chilagrow in #3538 - Update
dataSizeanddbStatsintegration tests by @chilagrow in #3585 - Do not return stats in
Backend.ListDatabasesby @AlekSi in #3588 - Remove old TODOs by @AlekSi in #3595
- Use stdlib's
slicespackage 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.Compactfor PostgreSQL by @rumyantseva in #3603 - Do not skip invalid TODOs by @AlekSi in #3597
- Unskip filter pushdown integration tests by @noisersup in #3605
- Call
ANALYZEless 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
listIndexesreturn 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