v0.5.4 (2022-09-22)
- Add missing
$k
to the schema when creating collection in Tigris by @rumyantseva in #1136
- Remove docusaurus references and update documentation by @Fashander in #1130
- Deploy documentation PRs to Vercel by @AlekSi in #1131
- Add transaction to
msg_drop
by @w84thesun in #1129 - Add transaction to
pg
'smsg_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
- @si3nloong made their first contribution in #1165
All closed issues and pull requests. All commits.
v0.5.3 (2022-09-08)
- 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
: Implementregex
by @noisersup in #1050- Implement
MsgDataSize
for Tigris by @polldo in #1060 - Support
ordered
argument fordelete
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
- 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
andupdate
correctly when collection doesn't exist by @noisersup in #1087 - Require
limit
parameter indelete
command by @noisersup in #1066
- Fix
update
operation for Tigris handler by @w84thesun in #1041 - Collect sizes in
MsgListDatabases
for Tigris by @w84thesun in #1043
- 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
- 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
: Implementdatetime
by @noisersup in #1027tjson
: 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
- @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)
- 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 forfind
andfindAndModify
methods by @DoodgeMatvey in #608 - Add support for
update
's$inc
operator dot notation by @w84thesun in #915
- Fix
nModified
count forupdate
's$set
operator with the same value by @w84thesun in #949
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 supportbinary
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 forObjectID
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
: Coverdocument
(object
) type with tests by @rumyantseva in #957- Add compatibility
delete
test for Tigris by @AlekSi in #1002
- @fcoury made their first contribution in #790
All closed issues and pull requests. All commits.
v0.5.1 (2022-07-26)
- 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
- Fix edge cases in
drop
anddropDatabase
handlers by @AlekSi in #891 - Fix
ModifyCount
for update operators by @w84thesun in #939
- 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
- Add a tip to limit concurrent tasks by @rumyantseva in #883
- 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 ofInsertOne
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 ofvalue
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
totjson
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)
This release enables the usage of FerretDB as a Go library. See this blog post.
- Support embedded use-case by @seeforschauer in #754
- Validate collection names by @seeforschauer in #844
- Fix embedded usage by @AlekSi in #798
- Fix
whatsmyuri
command by @rumyantseva in #796 - Handle
null
value fornameOnly
inlistDatabases
handler by @DoodgeMatvey in #738 - pgdb: cover transactions with
inTransaction
function to simplify error handling by @rumyantseva in #833
- Support all valid collection names by @w84thesun in #778
- Remove MongoDB driver "dependency" by @AlekSi in #853
- 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
- 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 ofgithub.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)
This release adds preliminary support for the Tigris backend. We plan to reach parity with our PostgreSQL backend in the next release.
- 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
- Handle both
buildinfo
andbuildInfo
commands by @AlekSi in #688 - Fix a bug with proxy response logs by @rumyantseva in #705
- Handle
find
,count
anddelete
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
- 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 fixDateTime
seconds and milliseconds bug by @seeforschauer in #701
- 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
andMax
methods totypes.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
- @noisersup made their first contribution in #751
All closed issues and pull requests. All commits.
v0.3.0 (2022-06-01)
- Support
findAndModify
by @w84thesun in #548 - Support
$inc
fieldupdate
operator by @w84thesun in #596 - Support
$set
field update operator by @seeforschauer in #634
- Improve negative zero handling by @AlekSi in #613
- Added support for sorting scalar data types by @ribaraka in #607
- 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 toOpCode*
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)
- 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
- 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
- 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
- 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
toAssertEqualError
by @w84thesun in #550 - Add documentation for values comparision by @AlekSi in #559
- Add
debug
andpanic
msg handlers toCommand
map by @seeforschauer in #561 - Add
RemoveByPath
forArray
andCompositeTypeInterface
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)
forok
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
intoScalars
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
All closed issues and pull requests. All commits.
v0.2.0 (2022-05-04)
This release implements all required functionality to support CLA Assistant. More details will be available shortly in our blog.
- 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
- 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
- Return better errors for unimplemented operations by @AlekSi in #504
- Implement
nameOnly
forlistDatabases
by @AlekSi in #524 - Improve
hostInfo
command'sos
response by @DoodgeMatvey in #509
- Mention force pushes by @AlekSi in #500
- Update guidelines by @seeforschauer in #496
- Document
task env-pull
target by @AlekSi in #528
- 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 ontask 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
andfind
parameters type by @w84thesun in #544
- @DoodgeMatvey made their first contribution in #466
All closed issues and pull requests. All commits.
v0.1.1 (2022-04-19)
- 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
- Ping database in some commands by @AlekSi in #435
- Ensure that
_id
fields are always the first by @AlekSi in #476
- Improve contributing guidelines by @AlekSi in #480
- Integration tests improvements by @AlekSi in #441
- Add test stub for bitwise operators by @AlekSi in #443
- Add tests for collections
create
anddrop
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
tofilter
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)
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.
- 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
- 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
- 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
- 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
withTaskfile
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
tointernal/handlers/pg/pgdb
by @AlekSi in #401 - Move
handlers/jsonb1
tohandlers/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
- @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)
- 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
- 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 frommongosh
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
- Add
buildEnvironment
anddebug
tobuildInfo
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
- Update documentation about
fjson
package by @AlekSi in #262 - Update tutorial ,add depends_on in docker-compose by @muyouming in #275
- 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 ofnil
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
- @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)
- 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
- 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
- Return version in
serverStatus
command by @AlekSi in #121 - Improve output of buildInfo command by @GinGin3203 in #204
- 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
- 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 ofinterface{}
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
- @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!