Skip to content

Latest commit

Β 

History

History
1236 lines (1055 loc) Β· 92.9 KB

CHANGELOG.md

File metadata and controls

1236 lines (1055 loc) Β· 92.9 KB

Changelog

v0.8.1 (2023-01-16)

New Features πŸŽ‰

  • Report availability of newer versions in mongosh by @noisersup in FerretDB#1738
  • Implement distinct command by @rumyantseva in FerretDB#1739
  • Validate client's TLS certificate when root CA certificate is provided by @w84thesun in FerretDB#1740
  • Support $rename field update operator by @noisersup in FerretDB#1753
  • Enable support for arrays in Tigris by @rumyantseva in FerretDB#1778

Fixed Bugs πŸ›

  • Fix filterering in distinct for Tigris handler by @rumyantseva in FerretDB#1766

Enhancements πŸ› 

  • Add findandmodify to the common.Commands map by @b1ron in FerretDB#1730

Documentation πŸ“„

  • Add documentation about CLI flags and environment variables by @noisersup in FerretDB#1737
  • Prepare configuration and data for docusaurus-based blog by @Fashander in FerretDB#1756
  • Fix links from docs to blog by @rumyantseva in FerretDB#1794
  • Reformat documentation by @AlekSi in FerretDB#1792
  • Add comments about Git LFS and lfs-warning by @AlekSi in FerretDB#1798

Other Changes πŸ€–

All closed issues and pull requests. All commits.

v0.8.0 (2023-01-02)

What's Changed

We are pleased to announce our first Beta release!

Storage changes for PostgreSQL

We made a few backward-incompatible changes in the way we store data in PostgreSQL to improve FerretDB performance. In the future, those changes will allow us to use indexes and query collections faster.

To keep your data:

  • backup FerretDB databases using mongodump or mongoexport;
  • backup PostgreSQL database using pg_dump or other tool (just in case);
  • stop FerretDB;
  • drop PostgreSQL views for FerretDB databases;
  • start FerretDB 0.8;
  • restore databases using mongorestore or mongoimport.

Authentication

It is now possible to use the backend's authentication mechanisms in FerretDB. See documentation.

New Features πŸŽ‰

  • Support $min field update operator by @chilagrow in FerretDB#1652
  • Support ordered argument for insert command by @noisersup in FerretDB#1673
  • Implement authentication for PostgreSQL by @AlekSi in FerretDB#1725

Fixed Bugs πŸ›

  • Fix unset document being updated by invalid value of $inc by @chilagrow in FerretDB#1685

Enhancements πŸ› 

Documentation πŸ“„

  • Add section for comparison and logical query operators by @Fashander in FerretDB#1647
  • Add documentation for element query operators by @Fashander in FerretDB#1675
  • Add documentation for array query operator by @Fashander in FerretDB#1695
  • Enable blog post section by @Fashander in FerretDB#1700

Other Changes πŸ€–

All closed issues and pull requests. All commits.

v0.7.1 (2022-12-19)

New Features πŸŽ‰

Fixed Bugs πŸ›

  • Fix parsing of OP_MSG packets with multiple sections by @b1ron in FerretDB#1611
  • Fix parsing of OP_MSG packets with multiple sections by @AlekSi in FerretDB#1633
  • Fix comparison with unset fields by @chilagrow in FerretDB#1634

Enhancements πŸ› 

Documentation πŸ“„

  • Infinity values are not allowed in documents by @rumyantseva in FerretDB#1622

Other Changes πŸ€–

All closed issues and pull requests. All commits.

v0.7.0 (2022-12-05)

New Features πŸŽ‰

  • Add msg_explain implementation for Tigris by @w84thesun in FerretDB#1574
  • Add filter support to listCollections by @AlekSi in FerretDB#1567

Fixed Bugs πŸ›

  • Fix parallel collection inserts for PostgreSQL by @noisersup in FerretDB#1513
  • Fix validation for documents with duplicate keys by @rumyantseva in FerretDB#1602
  • Fix greater and less operators on array value comparison by @chilagrow in FerretDB#1585

Enhancements πŸ› 

  • Downgrade min wire protocol version to 13 / 5.0 by @AlekSi in FerretDB#1571
  • Make default telemetry state a bit more clear by @AlekSi in FerretDB#1561
  • Add documents validation to wire package by @w84thesun in FerretDB#1401
  • Allow - in database names by @w84thesun in FerretDB#1582
  • Support more default find parameters by @AlekSi in FerretDB#1588

Documentation πŸ“„

  • Add authentication and role management commands to the docs by @b1ron in FerretDB#1527
  • Add section for diagnostic command buildInfo and collStats by @Fashander in FerretDB#1480
  • Add session and free monitoring commands to the docs by @b1ron in FerretDB#1546
  • Add Mastodon links by @AlekSi in FerretDB#1555
  • Add glossary section to documentation by @Fashander in FerretDB#1583

Other Changes πŸ€–

  • Simplify array comparison, remove []CompareResult by @chilagrow in FerretDB#1499
  • Disable CockroachDB on GitHub Actions by @rumyantseva in FerretDB#1524
  • Add placeholder for testing scripts by @AlekSi in FerretDB#1525
  • Add path to record loading error message by @AlekSi in FerretDB#1543
  • Move array query tests to compat tests by @chilagrow in FerretDB#1526
  • Move _id field check to separate function by @w84thesun in FerretDB#1544
  • Bump deps by @AlekSi in FerretDB#1562
  • Implement listIndexes command stub by @noisersup in FerretDB#1565
  • Do not record partial files by @AlekSi in FerretDB#1566
  • Sync label descriptions and issue templates by @AlekSi in FerretDB#1573
  • Auto-merge is required now by @AlekSi in FerretDB#1563
  • Move more query tests to compat and change filter bad value check order by @chilagrow in FerretDB#1560
  • Move more tests to compat query tests by @chilagrow in FerretDB#1570
  • Fix test names to make them more consistent by @noisersup in FerretDB#1575
  • Update documentation for types, add aliases by @AlekSi in FerretDB#1580
  • Simplify documents fetching for the count operator by @rumyantseva in FerretDB#1487
  • Simplify documents fetching for delete by @rumyantseva in FerretDB#1584
  • Fix listIndexes stub by @noisersup in FerretDB#1591
  • Move query tests to compat by comparing the error code instead of the error message by @chilagrow in FerretDB#1579
  • Add TODOs by @AlekSi in FerretDB#1595
  • Simplify documents fetching for find, findAndModify, and update by @rumyantseva in FerretDB#1538
  • Improve iterator.Interface implementation in pgdb.queryIterator by @rumyantseva in FerretDB#1592
  • Refactor pg's MsgListDatabases and pgdb by @rumyantseva in FerretDB#1596
  • Fix Conform PR workflow by @AlekSi in FerretDB#1599
  • Improve envtool by @AlekSi in FerretDB#1598
  • Replace docker-compose with docker compose by @AlekSi in FerretDB#1606
  • Add test certificates by @AlekSi in FerretDB#1612

All closed issues and pull requests. All commits.

v0.6.2 (2022-11-21)

New Features πŸŽ‰

  • Provide builds for linux/arm/v7 by @AlekSi in FerretDB#1377
  • Implement enableFreeMonitoring, disableFreeMonitoring and getFreeMonitoringStatus commands by @noisersup in FerretDB#1380

Fixed Bugs πŸ›

  • Fix SchemaStats to return empty stats by @w84thesun in FerretDB#1359
  • Fix issues for the Unix listener by @chilagrow in FerretDB#1397

Enhancements πŸ› 

  • Tweak supported wire protocol versions by @AlekSi in FerretDB#1261
  • Add more NewCommandErrorMsgWithArgument calls by @noisersup in FerretDB#1358
  • Use environment variables for configuration by @AlekSi in FerretDB#1383
  • Add missing locks when update settings table by @rumyantseva in FerretDB#1381

Documentation πŸ“„

  • Make telemetry page visible in documentation sidebar by @Fashander in FerretDB#1393
  • Add documentation for dot notation in arrays, objects, and embedded documents by @Fashander in FerretDB#1382
  • Start supported commands table by @AlekSi in FerretDB#1406
  • Add aggregation section (collection stages) to the docs by @rumyantseva in FerretDB#1411
  • Add query and write operation commands to the docs by @b1ron in FerretDB#1409
  • Add aggregation section (database stages, operators) to the docs by @rumyantseva in FerretDB#1448
  • Use colored emoji by @AlekSi in FerretDB#1485
  • Add update operators to the docs by @b1ron in FerretDB#1481
  • Reorganize a list of supported commands by @AlekSi in FerretDB#1490
  • Add changelog draft by @AlekSi in FerretDB#1479
  • Add user management commands to the docs by @b1ron in FerretDB#1489
  • Fix information about delete's comment argument inside "supported commands" reference by @noisersup in FerretDB#1498
  • Add query plan cache commands to the docs by @b1ron in FerretDB#1501
  • Add documentation for embedded/nested documents query by @Fashander in FerretDB#1478

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v0.6.1 (2022-11-07)

Enhancements πŸ› 

  • Deprecate dotted fields in data documents by @w84thesun in FerretDB#1313
  • Forbid regex types and arrays in document's _id field by @noisersup in FerretDB#1326
  • Make users know about telemetry via startupWarnings by @rumyantseva in FerretDB#1336
  • Deprecate nested arrays by @w84thesun in FerretDB#1334

Documentation πŸ“„

  • Fix syntax highlighting by @AlekSi in FerretDB#1340
  • Add text for empty pages by @Fashander in FerretDB#1338
  • Update dark and light theme logo for documentation by @Fashander in FerretDB#1368
  • Add documentation for configuring telemetry service by @Fashander in FerretDB#1342

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v0.6.0 (2022-10-27)

What's Changed

We are pleased to announce our first Alpha release!

New Features πŸŽ‰

  • Support $max field update operator by @noisersup in FerretDB#1124
  • Migrate FerretDB to Kong by @noisersup in FerretDB#1184
  • Make embedded FerretDB's address configurable by @AlekSi in FerretDB#1199
  • tjson: Support null by @rumyantseva in FerretDB#1005
  • Add simple query pushdown for PostgreSQL by @w84thesun in FerretDB#1207
  • Run tests on CockroachDB by @noisersup in FerretDB#1260
  • Add support for Unix domain sockets by @zhiburt in FerretDB#1214
  • Add basic telemetry by @AlekSi in FerretDB#1299
  • Deprecate infinity values in data documents by @noisersup in FerretDB#1296
  • Explicitly disallow duplicate keys in data documents by @rumyantseva in FerretDB#1293

Fixed Bugs πŸ›

  • Allow empty document field names by @AlekSi in FerretDB#1196
  • Fix test helpers for the nil case by @rumyantseva in FerretDB#1241
  • Fix error messages for invalid $and/$or/$nor arguments by @ronaudinho in FerretDB#1234
  • Fix explain command by @w84thesun in FerretDB#1294
  • Fix tjson schema unmarshalling by @AlekSi in FerretDB#1304

Enhancements πŸ› 

  • Add support for Tigris auth parameters by @AlekSi in FerretDB#1177
  • Use single transaction per msg_insert request by @rumyantseva in FerretDB#1213
  • Improve buildInfo and serverStatus commands by @AlekSi in FerretDB#1197
  • Add UUID to log messages by @AlekSi in FerretDB#1208
  • Add update operators data document fields order test by @w84thesun in FerretDB#1238
  • Add UUID to Prometheus metrics if requested by @AlekSi in FerretDB#1240
  • Add simplest validation to check data documents by @rumyantseva in FerretDB#1246
  • Add β€œmetrics” section to serverStatus response by @noisersup in FerretDB#1231
  • Call data document validation when insert or update documents in Tigris by @rumyantseva in FerretDB#1290
  • Add support for empty command documents by @w84thesun in FerretDB#1277
  • Make _id field required in data documents by @noisersup in FerretDB#1278
  • Add more ways to disable telemetry by @AlekSi in FerretDB#1311
  • Allow dashes (-) in collection names by @noisersup in FerretDB#1312
  • Collect command metrics in telemetry by @AlekSi in FerretDB#1327
  • Include info about unimplemented arguments by @AlekSi in FerretDB#1330

Documentation πŸ“„

  • Update introduction documentation by @Fashander in FerretDB#1174
  • Add local search plugin by @AlekSi in FerretDB#1178
  • Setup documentation search by @Fashander in FerretDB#1180
  • DRY known differences documentation by @AlekSi in FerretDB#1181
  • Documentation website tweaks by @AlekSi in FerretDB#1183
  • Documentation for contributors by @Fashander in FerretDB#1194
  • Add "CRUD operations" and "Understanding FerretDB" sections by @Fashander in FerretDB#1232
  • Add documentation for the .deb package usage by @Fashander in FerretDB#1267

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v0.5.4 (2022-09-22)

Fixed Bugs πŸ›

  • Add missing $k to the schema when creating collection in Tigris by @rumyantseva in FerretDB#1136

Documentation πŸ“„

  • Remove docusaurus references and update documentation by @Fashander in FerretDB#1130
  • Deploy documentation PRs to Vercel by @AlekSi in FerretDB#1131

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v0.5.3 (2022-09-08)

New Features πŸŽ‰

  • Add support for updates with replacement objects by @fcoury in FerretDB#791
  • Add support for $update's $set and $setOnInsert operators dot notation by @w84thesun in FerretDB#1008
  • Support $pop array update operator by @w84thesun in FerretDB#1020
  • Add support for $update's $unset operators dot notation by @w84thesun in FerretDB#1028
  • tjson: Implement regex by @noisersup in FerretDB#1050
  • Implement MsgDataSize for Tigris by @polldo in FerretDB#1060
  • Support ordered argument for delete command by @noisersup in FerretDB#1004
  • Implement simple query pushdown for Tigris by @AlekSi in FerretDB#1091
  • Implement MsgFindAndModify for Tigris by @rumyantseva in FerretDB#1065
  • implement timestamp type for tigris by @noisersup in FerretDB#1117

Fixed Bugs πŸ›

  • Improve TestCommandsAdministrationServerStatus by @rumyantseva in FerretDB#1062
  • Fix ModifiedCount for updates with an empty replacement document by @nicolascb in FerretDB#1067
  • Fix $inc update operator int64-max issue by @w84thesun in FerretDB#1071
  • Handle findAndModify and update correctly when collection doesn't exist by @noisersup in FerretDB#1087
  • Require limit parameter in delete command by @noisersup in FerretDB#1066

Enhancements πŸ› 

  • Fix update operation for Tigris handler by @w84thesun in FerretDB#1041
  • Collect sizes in MsgListDatabases for Tigris by @w84thesun in FerretDB#1043

Documentation πŸ“„

  • Add GitHub Pages with documentation by @AlekSi in FerretDB#1100
  • Improve contribution guidelines and documentation website by @Fashander in FerretDB#1114
  • Fix macOS spelling by @AlekSi in FerretDB#1127

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v0.5.2 (2022-08-09)

New Features πŸŽ‰

  • Support comment and $comment update's arguments by @noisersup in FerretDB#937
  • Support multi update's argument by @fcoury in FerretDB#790
  • Support comment and $comment findAndModify's argument by @noisersup in FerretDB#958
  • Support comment and $comment delete's arguments by @noisersup in FerretDB#954
  • Support maxTimeMS argument for find and findAndModify methods by @DoodgeMatvey in FerretDB#608
  • Add support for update's $inc operator dot notation by @w84thesun in FerretDB#915

Fixed Bugs πŸ›

  • Fix nModified count for update's $set operator with the same value by @w84thesun in FerretDB#949

Other Changes πŸ€–

  • tjson: Fix schema comparison by @rumyantseva in FerretDB#944
  • Make compat error messages better by @AlekSi in FerretDB#950
  • Enable wsl linter for new and changed code by @AlekSi in FerretDB#856
  • Fix some collection names breaking listDatabases by @AlekSi in FerretDB#953
  • Remove some tests to make next PRs smaller by @AlekSi in FerretDB#959
  • Add SkipForTigris helper, use it by @AlekSi in FerretDB#960
  • Add setup for compatibility tests by @AlekSi in FerretDB#961
  • Add compatibility tests for $and by @AlekSi in FerretDB#963
  • Bump igorshubovych/markdownlint-cli from v0.32.0 to v0.32.1 in /build/deps by @dependabot in FerretDB#955
  • tjson: Check how we support binary by @rumyantseva in FerretDB#967
  • Move logic operators tests to compatibility tests by @AlekSi in FerretDB#965
  • Add compatibility tests for $inc by @AlekSi in FerretDB#964
  • Add test case for an empty update path by @AlekSi in FerretDB#976
  • Bump golang from 1.18.4 to 1.18.5 by @dependabot in FerretDB#977
  • Improve Document's Path API by @w84thesun in FerretDB#973
  • tjson: Add unit tests for ObjectID by @rumyantseva in FerretDB#971
  • Make linter to enforce our preferred types order in type switch by @fenogentov in FerretDB#654
  • Add back task env-data by @AlekSi in FerretDB#983
  • Insert test data in random order by @AlekSi in FerretDB#862
  • tjson: Improve ObjectID test by @rumyantseva in FerretDB#992
  • Bump deps by @AlekSi in FerretDB#995
  • Bump Tigris Docker image to alpha.26 by @AlekSi in FerretDB#997
  • Tigris: simplify ObjectID and filter usage by @rumyantseva in FerretDB#968
  • Add more scalar values to tests by @AlekSi in FerretDB#984
  • Implement aggregate command stub by @AlekSi in FerretDB#981
  • Reformat with Go 1.19 by @AlekSi in FerretDB#1003
  • tjson: Cover document (object) type with tests by @rumyantseva in FerretDB#957
  • Add compatibility delete test for Tigris by @AlekSi in FerretDB#1002

New Contributors

All closed issues and pull requests. All commits.

v0.5.1 (2022-07-26)

New Features πŸŽ‰

  • Validate database names by @seeforschauer in FerretDB#913
  • Support $all array query operator by @rumyantseva in FerretDB#724
  • Support getLog diagnostic command by @fenogentov in FerretDB#711
  • Implement MsgCount for Tigris by @rumyantseva in FerretDB#928
  • Support explain diagnostic command by @seeforschauer in FerretDB#909

Fixed Bugs πŸ›

  • Fix edge cases in drop and dropDatabase handlers by @AlekSi in FerretDB#891
  • Fix ModifyCount for update operators by @w84thesun in FerretDB#939

Enhancements πŸ› 

  • Support gt lt operator comparison for Array type by @ribaraka in FerretDB#819
  • Optimize documents fetching / filtering by @rumyantseva in FerretDB#808
  • Add test for a database name border case by @seeforschauer in FerretDB#921

Documentation πŸ“„

  • Add a tip to limit concurrent tasks by @rumyantseva in FerretDB#883

Other Changes πŸ€–

  • Add a few testing helpers by @AlekSi in FerretDB#874
  • Add support for no ci label by @AlekSi in FerretDB#876
  • Bump deps by @AlekSi in FerretDB#880
  • Bump golang from 1.18.3 to 1.18.4 by @dependabot in FerretDB#881
  • Extract two more helpers by @AlekSi in FerretDB#875
  • Set pprof label for client connections by @AlekSi in FerretDB#885
  • Cancel request's context when request processed by @rumyantseva in FerretDB#884
  • Simplify dbStats tests a bit, add TODOs by @AlekSi in FerretDB#886
  • Disable logs during test setup by @AlekSi in FerretDB#888
  • Use InsertMany instead of InsertOne in tests by @AlekSi in FerretDB#882
  • Restart development containers faster by @AlekSi in FerretDB#889
  • Cover more logic in transactions by @rumyantseva in FerretDB#887
  • Disconnect client in embedded tests by @AlekSi in FerretDB#890
  • Stop tests on the first data race by @AlekSi in FerretDB#893
  • Wait for Tigris backend to be ready by @seeforschauer in FerretDB#894
  • Handle 42P07 PostgreSQL error to fix the tests by @rumyantseva in FerretDB#895
  • Build .rpm and .deb packages by @fenogentov in FerretDB#739
  • Add setup for compatibility tests by @AlekSi in FerretDB#901
  • Extract parameter list into one variable in QueryDocuments by @seeforschauer in FerretDB#910
  • Add first compatibility tests by @AlekSi in FerretDB#863
  • Use v instead of value in tests by @AlekSi in FerretDB#916
  • Tweak codecov settings by @AlekSi in FerretDB#920
  • Remove deprecated functions from pgdb.Pool by @seeforschauer in FerretDB#922
  • Extract integration tests setup to own package by @AlekSi in FerretDB#923
  • Bump deps by @AlekSi in FerretDB#927
  • comment url.Values to prevent test failing by @noisersup in FerretDB#930
  • Add a comment to the setup function about database and collection creation when provider list is empty by @seeforschauer in FerretDB#929
  • Bump golangci-lint, remove old hacks by @AlekSi in FerretDB#932
  • Fix tests for $all by @AlekSi in FerretDB#934
  • Add Path tests by @w84thesun in FerretDB#936
  • Build packages on CI by @AlekSi in FerretDB#938
  • Tweak linter settings by @AlekSi in FerretDB#942
  • Port and sync unit testing approach from fjson to tjson by @rumyantseva in FerretDB#935
  • Ensure that update operators are in sync by @AlekSi in FerretDB#946

All closed issues and pull requests. All commits.

v0.5.0 (2022-07-11)

What's Changed

This release enables the usage of FerretDB as a Go library. See this blog post.

New Features πŸŽ‰

  • Support embedded use-case by @seeforschauer in FerretDB#754
  • Validate collection names by @seeforschauer in FerretDB#844

Fixed Bugs πŸ›

  • Fix embedded usage by @AlekSi in FerretDB#798
  • Fix whatsmyuri command by @rumyantseva in FerretDB#796
  • Handle null value for nameOnly in listDatabases handler by @DoodgeMatvey in FerretDB#738
  • pgdb: cover transactions with inTransaction function to simplify error handling by @rumyantseva in FerretDB#833

Enhancements πŸ› 

  • Support all valid collection names by @w84thesun in FerretDB#778
  • Remove MongoDB driver "dependency" by @AlekSi in FerretDB#853

Documentation πŸ“„

  • Update contributing docs and PR template according to our best practices by @rumyantseva in FerretDB#779
  • Update contributing documentation by @AlekSi in FerretDB#843
  • Document that NUL (\0) strings is not supported by @w84thesun in FerretDB#865

Other Changes πŸ€–

All closed issues and pull requests. All commits.

v0.4.0 (2022-06-27)

What's Changed

This release adds preliminary support for the Tigris backend. We plan to reach parity with our PostgreSQL backend in the next release.

New Features πŸŽ‰

  • Support $setOnInsert field update operator by @seeforschauer in FerretDB#644
  • Support $unset field update operator by @seeforschauer in FerretDB#691
  • Support $currentDate field update operator by @seeforschauer in FerretDB#662
  • Support array querying by @w84thesun in FerretDB#618
  • Support $elemMatch array query operator by @w84thesun in FerretDB#707
  • Implement getFreeMonitoringStatus stub by @noisersup in FerretDB#751
  • Implement setFreeMonitoring stub by @noisersup in FerretDB#759
  • Implement tigris handler by @AlekSi in FerretDB#690

Fixed Bugs πŸ›

  • Handle both buildinfo and buildInfo commands by @AlekSi in FerretDB#688
  • Fix a bug with proxy response logs by @rumyantseva in FerretDB#705
  • Handle find, count and delete correctly when collection doesn't exist by @rumyantseva in FerretDB#710
  • Fix default values for flags by @AlekSi in FerretDB#743
  • Fix embedded array query bug by @ribaraka in FerretDB#736

Enhancements πŸ› 

  • Array comparison substitution by @ribaraka in FerretDB#676
  • Build tigris handler only if tag is present by @AlekSi in FerretDB#681
  • Support getParameter's showDetails, allParameters by @fenogentov in FerretDB#606
  • Make log level configurable by @fenogentov in FerretDB#687
  • $currentDate Timestamp fix DateTime seconds and milliseconds bug by @seeforschauer in FerretDB#701

Documentation πŸ“„

Other Changes πŸ€–

  • Use " instead of ' in all .yml files by @AlekSi in FerretDB#675
  • Add empty Tigris handler by @AlekSi in FerretDB#671
  • Do not test a global list of databases in parallel by @AlekSi in FerretDB#678
  • Enable revive linter by @seeforschauer in FerretDB#672
  • More tests for dot notation support by @w84thesun in FerretDB#660
  • Use circular buffer for zap logs by @fenogentov in FerretDB#585
  • Fix build by @AlekSi in FerretDB#703
  • Add tjson package by @AlekSi in FerretDB#682
  • Improve function comment by @AlekSi in FerretDB#712
  • Use separate encodings for ObjectID and binary by @AlekSi in FerretDB#713
  • Add the default Task target by @AlekSi in FerretDB#716
  • Add workaround for Dependabot by @AlekSi in FerretDB#717
  • Bump deps by @AlekSi in FerretDB#723
  • Always install Go and skip test cache by @AlekSi in FerretDB#718
  • Bump mongo from 5.0.8 to 5.0.9 in /build/deps by @dependabot in FerretDB#719
  • Better dummy handler errors by @AlekSi in FerretDB#715
  • Add task run-proxy command by @AlekSi in FerretDB#725
  • Add Min and Max methods to types.Array by @ribaraka in FerretDB#726
  • Add arrays with NaN, double and nested empty array to tests' shared data by @rumyantseva in FerretDB#728
  • Bump github.com/go-task/task/v3 from 3.12.1 to 3.13.0 in /tools by @dependabot in FerretDB#741
  • Disable "free monitoring" to simplify tests by @AlekSi in FerretDB#748
  • Re-enable TestStatisticsCommands tests by @seeforschauer in FerretDB#704
  • Fix lint-golangci-lint task for Windows systems by @w84thesun in FerretDB#752
  • Remove outdated comment by @AlekSi in FerretDB#755
  • Skip -race flag on Windows by @w84thesun in FerretDB#753
  • Fix fluky test by @AlekSi in FerretDB#757
  • tjson improvements by @AlekSi in FerretDB#760
  • Unify similar code in pg handler by @AlekSi in FerretDB#762
  • Add Tigris environment by @AlekSi in FerretDB#761
  • Bump postgres from 14.3 to 14.4 in /build/deps by @dependabot in FerretDB#768
  • Use forked golangci-lint by @AlekSi in FerretDB#758
  • Update conform-pr action by @AlekSi in FerretDB#783
  • Drop test_db by @AlekSi in FerretDB#788
  • Add task init-clean target by @AlekSi in FerretDB#756
  • Add godoc to tools by @AlekSi in FerretDB#789

New Contributors

All closed issues and pull requests. All commits.

v0.3.0 (2022-06-01)

New Features πŸŽ‰

  • Support findAndModify by @w84thesun in FerretDB#548
  • Support $inc field update operator by @w84thesun in FerretDB#596
  • Support $set field update operator by @seeforschauer in FerretDB#634

Fixed Bugs πŸ›

Enhancements πŸ› 

  • Added support for sorting scalar data types by @ribaraka in FerretDB#607

Other Changes πŸ€–

  • Better -0 handling in tests by @AlekSi in FerretDB#616
  • Bump github.com/golangci/golangci-lint from 1.46.1 to 1.46.2 in /tools by @dependabot in FerretDB#617
  • Bump PostgreSQL and MongoDB versions by @AlekSi in FerretDB#599
  • Rename OP_* constants to OpCode* constants by @seeforschauer in FerretDB#620
  • Bump gopkg.in/yaml.v3 by @AlekSi in FerretDB#646
  • Bump gopkg.in/yaml.v3 in tools by @AlekSi in FerretDB#648
  • Make Path type by @w84thesun in FerretDB#635
  • Fix incorrect test for $mod operator by @fenogentov in FerretDB#645
  • Skip test on all ARM64 OSes by @AlekSi in FerretDB#652
  • Add more visibility for the router/proxy error log levels by @rumyantseva in FerretDB#650
  • Update CODEOWNERS by @AlekSi in FerretDB#655
  • Sync dummy and pg handlers by @AlekSi in FerretDB#641
  • Panic on unexpected order values by @AlekSi in FerretDB#668
  • Add some comments to the functions and variables by @seeforschauer in FerretDB#619
  • Remove dead code by @AlekSi in FerretDB#669

All closed issues and pull requests. All commits.

v0.2.1 (2022-05-17)

New Features πŸŽ‰

  • Support $slice projection query operator by @GinGin3203 in FerretDB#518
  • Support $comment query operator by @ribaraka in FerretDB#563
  • Support basic connectionStatus diagnostic command by @fenogentov in FerretDB#572
  • Support $regex evaluation query operator by @w84thesun in FerretDB#588

Enhancements πŸ› 

  • Support querying documents by @w84thesun in FerretDB#573
  • Improve comparison of arrays and documents by @ribaraka in FerretDB#589
  • Support getParameter's parameters by @fenogentov in FerretDB#535
  • Add stubs to make VSCode plugin work by @AlekSi in FerretDB#603

Documentation πŸ“„

  • Add conform CI workflow, improve docs by @AlekSi in FerretDB#566
  • Update CONTRIBUTING.md with typo fix and a tiny correction by @rumyantseva in FerretDB#574
  • Add note about forks by @AlekSi in FerretDB#575

Other Changes πŸ€–

  • Bump go.mongodb.org/mongo-driver from 1.9.0 to 1.9.1 in /integration by @dependabot in FerretDB#555
  • Add missing //nolint by @AlekSi in FerretDB#556
  • Set the handler to use via a command-line flag and remove debug handlers from interface by @seeforschauer in FerretDB#534
  • Add tests for RemoveByPath by @seeforschauer in FerretDB#549
  • Add altMessage to AssertEqualError by @w84thesun in FerretDB#550
  • Add documentation for values comparision by @AlekSi in FerretDB#559
  • Add debug and panic msg handlers to Command map by @seeforschauer in FerretDB#561
  • Add RemoveByPath for Array and CompositeTypeInterface by @seeforschauer in FerretDB#560
  • Bump docker/login-action from 1 to 2 by @dependabot in FerretDB#565
  • Bump pgx version by @AlekSi in FerretDB#570
  • Use float64(x) for ok everywhere by @AlekSi in FerretDB#577
  • Improve AssertEqualAltError documentation by @AlekSi in FerretDB#578
  • Remove types.MustNewDocument in some places by @AlekSi in FerretDB#579
  • Remove MustNewDocument by @AlekSi in FerretDB#581
  • Remove MustNewArray by @AlekSi in FerretDB#582
  • Remove MustConvertDocument by @AlekSi in FerretDB#583
  • Enable staticcheck by @AlekSi in FerretDB#580
  • Enable gosimple by @AlekSi in FerretDB#584
  • Change the way linters work by @AlekSi in FerretDB#586
  • Merge BigNumbersData into Scalars by @AlphaB in FerretDB#595
  • Set GOLANGCI_LINT_CACHE by @AlekSi in FerretDB#597
  • Increase golangci-lint timeout by @AlekSi in FerretDB#598
  • Bump deps by @AlekSi in FerretDB#604

New Contributors

All closed issues and pull requests. All commits.

v0.2.0 (2022-05-04)

What's Changed

This release implements all required functionality to support CLA Assistant. More details will be available shortly in our blog.

New Features πŸŽ‰

  • Add support for $nin operator by @ribaraka in FerretDB#459
  • Support querying with dot notation for documents by @GinGin3203 in FerretDB#483
  • Add support for $ne operator by @ribaraka in FerretDB#464
  • Add basic findAndModify implementation by @AlekSi in FerretDB#501
  • Add support for $in operator by @ribaraka in FerretDB#499

Fixed Bugs πŸ›

  • Fix large numbers comparision by @DoodgeMatvey in FerretDB#466
  • Fix panic on receiving a filter query with unknown operator by @GinGin3203 in FerretDB#517
  • Fix bitwise operators by @w84thesun in FerretDB#488

Enhancements πŸ› 

  • Return better errors for unimplemented operations by @AlekSi in FerretDB#504
  • Implement nameOnly for listDatabases by @AlekSi in FerretDB#524
  • Improve hostInfo command's os response by @DoodgeMatvey in FerretDB#509

Documentation πŸ“„

Other Changes πŸ€–

  • Stabilize tests by always sorting results by @AlekSi in FerretDB#490
  • Skip one test for now by @AlekSi in FerretDB#494
  • Bump MongoDB version by @AlekSi in FerretDB#495
  • Use goimports to group imports on task fmt by @AlekSi in FerretDB#498
  • Make default Docker arguments a bit more useful by @AlekSi in FerretDB#502
  • Export helpers that will be used in other package by @AlekSi in FerretDB#505
  • Correctly override FUZZTIME on CI by @AlekSi in FerretDB#506
  • Pass context to PostgreSQL pool by @AlekSi in FerretDB#507
  • Bump dependencies by @AlekSi in FerretDB#514
  • Remove Array.Subslice method by @AlekSi in FerretDB#515
  • Remove types.CString by @AlekSi in FerretDB#529
  • Make test helpers harder to misuse by @AlekSi in FerretDB#530
  • Move existing comparision code to types by @AlekSi in FerretDB#531
  • Extract common interface for handlers by @seeforschauer in FerretDB#521
  • Move all handler test to integration tests by @w84thesun in FerretDB#523
  • Use nil errors instead of empty values by @fenogentov in FerretDB#542
  • Delete old tests by @AlekSi in FerretDB#543
  • Add tests for sort and find parameters type by @w84thesun in FerretDB#544

New Contributors

  • @DoodgeMatvey made their first contribution in FerretDB#466

All closed issues and pull requests. All commits.

v0.1.1 (2022-04-19)

New Features πŸŽ‰

Enhancements πŸ› 

  • Ping database in some commands by @AlekSi in FerretDB#435
  • Ensure that _id fields are always the first by @AlekSi in FerretDB#476

Documentation πŸ“„

  • Improve contributing guidelines by @AlekSi in FerretDB#480

Other Changes πŸ€–

  • Integration tests improvements by @AlekSi in FerretDB#441
  • Add test stub for bitwise operators by @AlekSi in FerretDB#443
  • Add tests for collections create and drop by @AlekSi in FerretDB#444
  • Add tests for more diagnostic commands by @AlekSi in FerretDB#448
  • Transfer existing comparison tests by @ribaraka in FerretDB#445
  • Move getParameter tests by @AlekSi in FerretDB#450
  • Improve envtool diagnostics by @w84thesun in FerretDB#426
  • Fix Postgres port check for envtool by @w84thesun in FerretDB#451
  • Add support for $gte, $lt, $lte operators by @ribaraka in FerretDB#452
  • Add tests for null values by @w84thesun in FerretDB#458
  • Bump actions/upload-artifact from 2 to 3 by @dependabot in FerretDB#460
  • Update tests for the latest mongo-driver by @AlekSi in FerretDB#463
  • Rearrange tests by @AlekSi in FerretDB#467
  • Do not invoke Dance tests by @AlekSi in FerretDB#468
  • Minor unification of tests style by @AlekSi in FerretDB#469
  • Add helpers that generate ObjectID by @AlekSi in FerretDB#474
  • Add deep copy helpers by @AlekSi in FerretDB#475
  • Allow the usage of proxy/diff mode in tests by @AlekSi in FerretDB#477
  • Bump codecov/codecov-action from 2 to 3 by @dependabot in FerretDB#461
  • Composite data type find handling by @ribaraka in FerretDB#471
  • Fix failing tests by @w84thesun in FerretDB#482
  • Rename q to filter in tests by @seeforschauer in FerretDB#484
  • Supress linter warning by @AlekSi in FerretDB#485

All closed issues and pull requests. All commits.

v0.1.0 (2022-04-04)

What's Changed

In this release, we made a big change in the way FerretDB fetches data from PostgreSQL.

Previously, we generated a single SQL query that extensively used json/jsonb PostgreSQL functions for each incoming MongoDB request, then converted fetched data. All the filtering was performed by PostgreSQL. Unfortunately, the semantics of those functions do not match MongoDB behavior in edge cases like comparison or sorting of different types. That resulted in a difference in behavior between FerretDB and MongoDB, and that is a problem we wanted to fix.

So starting from this release we fetch more data from PostgreSQL and perform filtering on the FerretDB side. This allows us to match MongoDB behavior in all cases. Of course, that also greatly reduces performance. We plan to address it in future releases by pushing down parts of filtering queries that can be made fully compatible with MongoDB. For example, a simple query like db.collection.find({_id: 'some-id-value'}) can be converted to SQL WHERE condition relatively easy and be compatible even with weird values like IEEE 754 NaNs, infinities, etc.

In short, we want FerretDB to be compatible with MongoDB first and fast second, and we are still working towards the first goal.

New Features πŸŽ‰

  • Implement $bitsAllClear by @w84thesun in FerretDB#394
  • Support $elemMatch projection query operator by @seeforschauer in FerretDB#383
  • Support all bitwise query operators by @w84thesun in FerretDB#400
  • Support $eq comparision operator by @ribaraka in FerretDB#309

Fixed Bugs πŸ›

Enhancements πŸ› 

  • Update insert command's help by @narqo in FerretDB#321
  • Return correct error codes for projections by @seeforschauer in FerretDB#384
  • Add SortDocuments by @w84thesun in FerretDB#378

Documentation πŸ“„

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v0.0.6 (2022-02-10)

New Features πŸŽ‰

Fixed Bugs πŸ›

Enhancements πŸ› 

  • Add buildEnvironment and debug to buildInfo command by @GinGin3203 in FerretDB#218
  • Add helper for checking for unimplemented fields by @AlekSi in FerretDB#267
  • Ignore authorizedXXX parameters for now by @AlekSi in FerretDB#311

Documentation πŸ“„

  • Update documentation about fjson package by @AlekSi in FerretDB#262
  • Update tutorial ,add depends_on in docker-compose by @muyouming in FerretDB#275

Other Changes πŸ€–

New Contributors

All closed issues and pull requests. All commits.

v0.0.5 (2022-01-04)

New Features πŸŽ‰

Fixed Bugs πŸ›

  • Accept $ and . in object field names by @AlekSi in FerretDB#127
  • Make checkConnection less strict for common UTF8 localizations by @klokar in FerretDB#135
  • Wait for PostgreSQL on make env-up by @agneum in FerretDB#149
  • Fix build info parsing by @AlekSi in FerretDB#205
  • Fix GetLog & add missed test for it by @ekalinin in FerretDB#211

Enhancements πŸ› 

  • Return version in serverStatus command by @AlekSi in FerretDB#121
  • Improve output of buildInfo command by @GinGin3203 in FerretDB#204

Documentation πŸ“„

  • CONTRIBUTING.md: fix typo & add clonning section by @ekalinin in FerretDB#114
  • CONTRIBUTING.md: fix "/user/.../" -> "/usr/.../" by @GinGin3203 in FerretDB#137
  • Add community links by @AlekSi in FerretDB#180

Other Changes πŸ€–

  • Add convention for Decimal128 by @AlekSi in FerretDB#103
  • Bump github.com/jackc/pgx/v4 from 4.14.0 to 4.14.1 by @dependabot in FerretDB#99
  • Build multi-arch Docker images by @AlekSi in FerretDB#107
  • Verify modules on make init by @AlekSi in FerretDB#123
  • Enable go-consistent linter by @AlekSi in FerretDB#124
  • Use composite GitHub Action for Go setup in FerretDB#126
  • Use shared setup-go action by @AlekSi in FerretDB#131
  • Add an option to use read-only user in tests by @AlekSi in FerretDB#132
  • Refactor handler tests by @AlekSi in FerretDB#136
  • Bump MongoDB and test_db versions by @AlekSi in FerretDB#139
  • Remove old hack by @AlekSi in FerretDB#144
  • Enable goheader linter by @AlekSi in FerretDB#145
  • Cleanups and fixes by @AlekSi in FerretDB#146
  • Use any instead of interface{} by @AlekSi in FerretDB#147
  • Tweak storage by @AlekSi in FerretDB#148
  • Add helpers for accessing objects by paths by @AlekSi in FerretDB#140
  • Bump mvdan.cc/gofumpt from 0.2.0 to 0.2.1 in /tools by @dependabot in FerretDB#186
  • Add and use schema and table helpers by @AlekSi in FerretDB#191
  • Refactor / cleanup tests by @AlekSi in FerretDB#192
  • Add missed test for buildInfo command by @ekalinin in FerretDB#187
  • Refactor slice / types.Array type by @AlekSi in FerretDB#202
  • Bump golang.org/x/text from 0.3.6 to 0.3.7 by @dependabot in FerretDB#208
  • Setup changelog generation by @ekalinin in FerretDB#209
  • Build containers for branches as well by @pboros in FerretDB#213
  • Container builds for PRs and tags by @pboros in FerretDB#215
  • Use our own action for extracting Docker tag by @AlekSi in FerretDB#219

New Contributors

All closed issues and pull requests. All commits.

v0.0.4 (2021-12-01)

  • A new name in FerretDB#100
  • Added support for databases sizes in listDatabases command (#61, thanks to Leigh).

All closed issues and pull requests. All commits.

v0.0.3 (2021-11-19)

  • Added support for $regex evaluation query operator in FerretDB#28
  • Fixed handling of Infinity, -Infinity, NaN BSON Double values in FerretDB#29
  • Improved documentation for contributors (thanks to Leigh).

All closed issues and pull requests. All commits.

v0.0.2 (2021-11-13)

  • Added support for comparison query operators: $eq,$gt,$gte,$in,$lt,$lte,$ne,$nin in FerretDB#26
  • Added support for logical query operators: $and, $not, $nor, $or in FerretDB#27

All closed issues and pull requests. All commits.

v0.0.1 (2021-11-01)

  • Initial public release!