Skip to content

Latest commit

Β 

History

History
825 lines (710 loc) Β· 62.7 KB

CHANGELOG.md

File metadata and controls

825 lines (710 loc) Β· 62.7 KB

Changelog

v0.5.4 (2022-09-22)

Fixed Bugs πŸ›

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

Documentation πŸ“„

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

Other Changes πŸ€–

  • Add transaction to msg_drop by @w84thesun in #1129
  • Add transaction to pg's msg_listcollections by @w84thesun in #1135
  • Fix tests for Tigris by @AlekSi in #1134
  • Use fixed -test-record directory in Task targets by @AlekSi in #1139
  • Fix a typo in Readme by @rumyantseva in #1141
  • Use transaction in more pgdb functions by @AlekSi in #1143
  • Bump deps by @AlekSi in #1158
  • Use transaction in more pgdb functions by @AlekSi in #1144
  • Refactor msg_delete handlers by @w84thesun in #1152
  • Improve contributing guidelines by @AlekSi in #1146
  • Update process documentation by @AlekSi in #1153
  • Update issues and PR templates by @AlekSi in #1155
  • Fix typo by @si3nloong in #1165
  • Migrate fuzztool to Kong by @noisersup in #1159

New Contributors

  • @si3nloong made their first contribution in #1165

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

  • Bump deps by @AlekSi in #1014
  • Fix Run linters job in Taskfile.yml by @w84thesun in #1022
  • Improve and document integration tests by @AlekSi in #1021
  • Add missing MaxTimeMS support for Tigris by @rumyantseva in #1026
  • Expose delete problem by @AlekSi in #1030
  • Bump Tigris version to 1.0.0-alpha.27 by @rumyantseva in #1032
  • Bump postgres from 14.4 to 14.5 in /build/deps by @dependabot in #1033
  • tjson: Implement datetime by @noisersup in #1027
  • tjson: Add package documentation for types mapping by @rumyantseva in #1031
  • Rework database and collection creation for Tigris by @rumyantseva in #1038
  • Add a few more tests for logical query operators by @AlekSi in #1049
  • Ensure that database and collection names are unique by @AlekSi in #1046
  • Implement MsgDBStats for Tigris by @rumyantseva in #1047
  • Bump Tigris version to 1.0.0-alpha.29 by @rumyantseva in #1054
  • Add tests for update with replacement by @AlekSi in #1044
  • Small pgdb cleanup by @AlekSi in #1055
  • Bump deps by @AlekSi in #1059
  • Less strict delta for dataSize in tests by @rumyantseva in #1053
  • Add collMod command stub by @ravilushqa in #1037
  • Add a linter for Semantic Line Breaks in Markdown files by @GrandShow in #998
  • Fix data race in test by @AlekSi in #1072
  • Use CODECOV_TOKEN if available by @AlekSi in #1073
  • Bump dependencies by @AlekSi in #1084
  • Add integration tests for logical operators by @AlekSi in #1085
  • Implement MsgCollStats for Tigris by @rumyantseva in #1063
  • Implement MsgCreate for Tigris by @rumyantseva in #1048
  • Use npm lock files for tools by @folex in #1093
  • Bump deps by @AlekSi in #1099
  • Simplify/sync delete a bit by @AlekSi in #1104
  • Enable errorlint for new code by @AlekSi in #1105
  • Add missing TODO by @AlekSi in #1108
  • Migrate to MongoDB 6 by @AlekSi in #1074
  • Switch to Go 1.19, bump dependencies by @AlekSi in #1123
  • Record incoming data for fuzzing by @noisersup in #1107
  • Add transaction to msg_drop_database by @w84thesun in #1126

New Contributors

  • @polldo made their first contribution in #1060
  • @ravilushqa made their first contribution in #1037
  • @GrandShow made their first contribution in #998
  • @nicolascb made their first contribution in #1067
  • @folex made their first contribution in #1093
  • @Fashander made their first contribution in #1114

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

Fixed Bugs πŸ›

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

Other Changes πŸ€–

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

New Contributors

  • @fcoury made their first contribution in #790

All closed issues and pull requests. All commits.

v0.5.1 (2022-07-26)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

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

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

  • Tweak schedule of daily builds by @AlekSi in #794
  • Do not import pg handler explicitly by @AlekSi in #799
  • Add TODO item by @AlekSi in #804
  • Fix task env-pull target by @AlekSi in #810
  • Improve contributing documentation for Windows development by @w84thesun in #795
  • Fix Docker image build by @AlekSi in #805
  • Make it easier to trigger rebuilds by @AlekSi in #815
  • Use github.head_ref instead of github.ref by @AlekSi in #814
  • Bump deps by @AlekSi in #817
  • Install QEMU for building Docker images by @AlekSi in #820
  • Use multi-stage docker build by @AlphaB in #605
  • Unify update tests by @seeforschauer in #809
  • Add TODOs for all update operators by @AlekSi in #832
  • Add env-data Taskfile target by @AlekSi in #834
  • Tweak tests by @AlekSi in #837
  • Export integration tests helpers by @AlekSi in #838
  • Remove old style of +build tags where possible by @AlekSi in #839
  • Export fields by @AlekSi in #840
  • Update Tigris version by @AlekSi in #841
  • Create Tigris databases by @AlekSi in #842
  • Add basic CI for Tigris by @AlekSi in #784
  • Test with the main version of Tigris too by @AlekSi in #846
  • Wait for Tigris to be fully up by @AlekSi in #854
  • Fill MongoDB on task env-data too by @AlekSi in #860
  • Add CI job for short tests without environment by @AlekSi in #855
  • Add TODOs by @AlekSi in #852
  • Fix task run on Windows by @AlekSi in #867
  • Fix invalid variable names by @AlekSi in #868
  • Add ferretdb_ prefix to our custom build tags by @AlekSi in #869

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 #644
  • Support $unset field update operator by @seeforschauer in #691
  • Support $currentDate field update operator by @seeforschauer in #662
  • Support array querying by @w84thesun in #618
  • Support $elemMatch array query operator by @w84thesun in #707
  • Implement getFreeMonitoringStatus stub by @noisersup in #751
  • Implement setFreeMonitoring stub by @noisersup in #759
  • Implement tigris handler by @AlekSi in #690

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

  • Be explicit about MongoDB version by @AlekSi in #679
  • Fix pull request template by @AlekSi in #746

Other Changes πŸ€–

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

New Contributors

  • @noisersup made their first contribution in #751

All closed issues and pull requests. All commits.

v0.3.0 (2022-06-01)

New Features πŸŽ‰

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

Fixed Bugs πŸ›

  • Improve negative zero handling by @AlekSi in #613

Enhancements πŸ› 

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

Other Changes πŸ€–

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

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

New Contributors

  • @rumyantseva made their first contribution in #574
  • @AlphaB made their first contribution in #595

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 #459
  • Support querying with dot notation for documents by @GinGin3203 in #483
  • Add support for $ne operator by @ribaraka in #464
  • Add basic findAndModify implementation by @AlekSi in #501
  • Add support for $in operator by @ribaraka in #499

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

  • Mention force pushes by @AlekSi in #500
  • Update guidelines by @seeforschauer in #496
  • Document task env-pull target by @AlekSi in #528

Other Changes πŸ€–

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

New Contributors

  • @DoodgeMatvey made their first contribution in #466

All closed issues and pull requests. All commits.

v0.1.1 (2022-04-19)

New Features πŸŽ‰

  • Support $gt comparision operator by @ribaraka in #330
  • Support $exists element query operator by @w84thesun in #446
  • Add basic upsert support by @AlekSi in #473
  • Add $type operator by @w84thesun in #453
  • Support $mod evaluation query operator by @fenogentov in #440
  • Support logical operators by @w84thesun in #465

Enhancements πŸ› 

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

Documentation πŸ“„

  • Improve contributing guidelines by @AlekSi in #480

Other Changes πŸ€–

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

Fixed Bugs πŸ›

  • Fix a few issues found by fuzzing by @AlekSi in #345
  • More fixes for bugs found by fuzzing by @AlekSi in #346
  • Commands are case-sensitive by @AlekSi in #369
  • Make updates work by @AlekSi in #385
  • Handle any number type for limit by @AlekSi in #399
  • Fix numbers comparision by @ribaraka in #356
  • Fix finding zero documents with FindOne by @AlekSi in #409
  • Fix sort for arrays and documents by @AlekSi in #424
  • Fix pgdb helpers by @AlekSi in #425

Enhancements πŸ› 

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

Documentation πŸ“„

  • Add Docker badge by @AlekSi in #305
  • Tweak Markdown linter a bit by @AlekSi in #393

Other Changes πŸ€–

  • Remove Docker volumes on make env-down by @AlekSi in #315
  • Update deps by @AlekSi in #320
  • Build static binaries by @AlekSi in #322
  • Integrate with dance PRs by @AlekSi in #324
  • Bump Docker images by @AlekSi in #325
  • Bump github.com/golangci/golangci-lint from 1.44.0 to 1.44.2 in /tools by @dependabot in #327
  • Bump mvdan.cc/gofumpt from 0.2.1 to 0.3.0 in /tools by @dependabot in #329
  • Bump actions/checkout from 2 to 3 by @dependabot in #333
  • Various small cleanups by @AlekSi in #334
  • Rewrite generate.sh in Go by @w84thesun in #338
  • Add helper for getting required parameters by @AlekSi in #339
  • Use safe type assertions for inputs by @AlekSi in #341
  • Fix seed fuzz corpus collection by @AlekSi in #340
  • Add fuzzing tests for handlers by @AlekSi in #328
  • Add bin/task to tools by @AlekSi in #349
  • Add more checks for Go versions by @AlekSi in #350
  • Improve Windows tooling by @w84thesun in #348
  • Add assertions for BSON values comparision by @AlekSi in #352
  • Replace Makefile with Taskfile by @w84thesun in #358
  • Fix Taskfile by @w84thesun in #365
  • Remove OS-specific Taskfiles, cleanup by @AlekSi in #366
  • Remove SQL storage by @w84thesun in #367
  • Use square brackets for nicer logs by @AlekSi in #373
  • Fix build tags by @AlekSi in #374
  • Add converter from types.Regex to regexp.Regexp by @AlekSi in #375
  • Log test failures for updates and deletes by @AlekSi in #376
  • Filter documents using Go code by @AlekSi in #370
  • Projection: <field>: <1 or true> and <field>: <0 or false> by @seeforschauer in #377
  • Fix small issues after rewrite by @AlekSi in #380
  • Projection: <field>: <1 or true> and <field>: <0 or false>: error messages formatting by @seeforschauer in #382
  • Bump dependecnies by @AlekSi in #387
  • Fix some fluky tests by @AlekSi in #351
  • Minor CI and build tweaks by @AlekSi in #390
  • Add Markdown linter by @fenogentov in #386
  • Do not cache modules by @AlekSi in #392
  • Fix more fluky tests by @AlekSi in #391
  • Fix the last fluky test by @AlekSi in #395
  • Allow access to actual listener's address by @AlekSi in #397
  • Add a new way to write integration tests by @AlekSi in #389
  • Move internal/pg to internal/handlers/pg/pgdb by @AlekSi in #401
  • Move handlers/jsonb1 to handlers/pg by @AlekSi in #402
  • Move handler to pg by @AlekSi in #403
  • Move tests back for now by @AlekSi in #404
  • Use testutil.AssertEqual helper by @AlekSi in #407
  • Move $size tests to integration tests by @AlekSi in #410
  • Improve logging in integration tests by @AlekSi in #412
  • Tweak hello/ismaster/isMaster responses by @AlekSi in #418
  • Fix named loggers by @AlekSi in #427
  • Add tests for getLog by @AlekSi in #421
  • Bump deps by @AlekSi in #430

New Contributors

  • @narqo made their first contribution in #321
  • @w84thesun made their first contribution in #338
  • @seeforschauer made their first contribution in #377
  • @fenogentov made their first contribution in #386
  • @ribaraka made their first contribution in #356

All closed issues and pull requests. All commits.

v0.0.6 (2022-02-10)

New Features πŸŽ‰

  • Support projections by @ekalinin in #212
  • Support dbStats by @ekalinin in #232
  • Support dataSize by @ekalinin in #246
  • Implement listCommands by @OpenSauce in #203
  • Support serverStatus by @ekalinin in #289
  • Add more metrics by @AlekSi in #298
  • Implement $size query operator by @taaraora in #296

Fixed Bugs πŸ›

  • Forbid short document keys like $k by @AlekSi in #234
  • Fix benchmarks by @AlekSi in #236
  • Move handler tests by @AlekSi in #239
  • Fix and enable fuzzing by @AlekSi in #240
  • Make db.collection.stats() & .dataSize() work from mongosh by @ekalinin in #243
  • fix: remove amd-v2 limit by @Junnplus in #282
  • Catch concurrent schema/table creation by @AlekSi in #283
  • Ignore some parameters by @AlekSi in #310

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

  • Bump github.com/reviewdog/reviewdog from 0.13.0 to 0.13.1 in /tools by @dependabot in #222
  • Fix Docker workflow by @AlekSi in #225
  • Extract fjson package by @AlekSi in #207
  • Fix test for collstats by @ekalinin in #233
  • Bump go.uber.org/zap from 1.19.1 to 1.20.0 by @dependabot in #241
  • Use generics for CompositeType by @AlekSi in #245
  • Enable go-consistent by @AlekSi in #248
  • Unexport fjson types by @AlekSi in #231
  • Remove JSON methods from bson package by @AlekSi in #259
  • Fix make gen by @AlekSi in #264
  • Add fuzztool by @ferretdb-bot in #56
  • Use FerretDB/github-actions/linters by @AlekSi in #265
  • Make PRs from forks work by @AlekSi in #266
  • Use types.Null instead of nil by @AlekSi in #268
  • Add make fuzz-corpus target by @AlekSi in #279
  • Pass Documents by pointer by @AlekSi in #272
  • Unexport some bson types by @AlekSi in #280
  • Rename receivers by @AlekSi in #284
  • Bump github.com/prometheus/client_golang from 1.11.0 to 1.12.0 by @dependabot in #285
  • Introduce generics for types by @AlekSi in #287
  • Fix some typos and style by @ekalinin in #286
  • Add Docker workflow stub by @AlekSi in #288
  • Split Docker Build and Push by @AlekSi in #290
  • Securely build and push Docker images by @AlekSi in #292
  • Update golangci-lint by @AlekSi in #294
  • Make fuzztool less verbose by @AlekSi in #295
  • Fix compilation with the latest go tip by @AlekSi in #300
  • Use values MongoDB database by @AlekSi in #299
  • Spend less time fuzzing pull requests by @AlekSi in #302
  • Detect matching PR by @AlekSi in #303
  • Add detection action by @AlekSi in #304
  • Remove extra allocation by @peakle in #307
  • Micro fixes: type assert order, strings.Split -> strings.Cut by @peakle in #308
  • Bump github.com/prometheus/client_golang from 1.12.0 to 1.12.1 by @dependabot in #306

New Contributors

  • @Junnplus made their first contribution in #282
  • @muyouming made their first contribution in #275
  • @peakle made their first contribution in #307
  • @taaraora made their first contribution in #296

All closed issues and pull requests. All commits.

v0.0.5 (2022-01-04)

New Features πŸŽ‰

  • Add basic metrics by @AlekSi in #108
  • Implement serverStatus command by @jyz0309 in #116
  • Implement dropDatabase command by @radmirnovii in #117
  • Support count function by @thuan1412 in #97
  • Implement getParameter command by @jyz0309 in #142
  • Support limit parameter in delete by @OpenSauce in #141
  • Implement basic create command by @ekalinin in #184
  • Build Docker image with GitHub Actions by @pboros in #189
  • Automatically create databases by @AlekSi in #185
  • Support hello command by @AlekSi in #195
  • Add stub for createindexes command by @AlekSi in #196
  • Support basic hostInfo command by @ekalinin in #188
  • Support collStats command by @ekalinin in #206

Fixed Bugs πŸ›

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

Enhancements πŸ› 

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

Documentation πŸ“„

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

Other Changes πŸ€–

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

New Contributors

  • @AlekSi made their first contribution in #103
  • @ekalinin made their first contribution in #114
  • @jyz0309 made their first contribution in #116
  • @radmirnovii made their first contribution in #117
  • @klokar made their first contribution in #126
  • @GinGin3203 made their first contribution in #137
  • @agneum made their first contribution in #149
  • @pboros made their first contribution in #189

All closed issues and pull requests. All commits.

v0.0.4 (2021-12-01)

  • A new name! (see here)
  • 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. (#28)
  • Fixed handling of Infinity, -Infinity, NaN BSON Double values. (#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. (#26)
  • Added support for logical query operators: $and, $not, $nor, $or. (#27)

All closed issues and pull requests. All commits.

v0.0.1 (2021-11-01)

  • Initial public release!