Compare commits

...
1993 Commits
Author SHA1 Message Date
NotAlexNoyle c645ed1adf Exclude CODEOWNERS from language statistics 2026-11-01 09:18:32 -05:00
NotAlexNoyle 87234d9f76 Add CODEOWNERS (one staff approval) 2026-11-01 09:18:32 -05:00
Alexey Palazhchenko 0d5eb3343a Prepare v2.7.0 release (#5538) 2025-11-10 21:18:24 +04:00
Alexey Palazhchenko 52ad11f0af Bump deps (#5537) 2025-11-10 20:45:21 +04:00
Alexey Palazhchenko 71b6eb3a08 Bump DocumentDB (#5536) 2025-11-09 22:46:54 +04:00
5cb62a1155 Add MCP tools (#5452)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-11-09 20:36:10 +04:00
Alexey Palazhchenko 867537dd01 Use Go 1.25.4 (#5534) 2025-11-08 09:35:59 +04:00
487880fd19 Add basic MCP server (#5279)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-11-06 09:08:44 +04:00
Chi FujiiandAlexey Palazhchenko 3b29cece0c Refactor DataAPI with graceful shutdown and add OpenAPI specification endpoint (#5357)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-10-27 18:55:12 +04:00
Alexey Palazhchenko c1bb0b6db6 Update DocumentDB (#5528) 2025-10-22 18:46:58 +04:00
Alexey Palazhchenko a04b20a58f Use forked lazyerrors (#5527) 2025-10-22 16:13:02 +04:00
Josh Soref 2b2ce550d4 Fix CODEOWNERS grammar (#5495)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-10-21 12:51:38 +04:00
Alexey Palazhchenko 87293d3434 Skip flaky test for now (#5526) 2025-10-21 12:50:19 +04:00
Alexey Palazhchenko 7b0d200262 Use Go 1.25.3 (#5525) 2025-10-21 11:43:35 +04:00
Patryk KwiatekandAlexey Palazhchenko d1d037a030 Add a test for *documentdb.Conn finalizing (#5484)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-10-21 11:28:03 +04:00
Alexey Palazhchenko c37a62b0a2 Bump dependencies (#5519) 2025-10-09 17:57:31 +04:00
Alexey Palazhchenko cff1577d19 Improve proxy mode observability (#5440) 2025-10-03 19:53:25 +04:00
Alexey Palazhchenko efa50d4877 Add tracing of SQL queries (#5514) 2025-10-02 21:02:46 +04:00
Alexey Palazhchenko 067eb2f143 Rename OpenTelemetry spans (#5512) 2025-09-29 14:58:13 +04:00
Alexey Palazhchenko 4e8e51751d Minor observability cleanup (#5511) 2025-09-28 22:32:36 +03:00
Alexey Palazhchenko ae0b94de12 Bump deps (#5509) 2025-09-28 20:56:00 +03:00
Alexey Palazhchenko 2c24483c06 Use Go 1.25.1 (#5508) 2025-09-28 15:48:00 +03:00
Josh Soref 221d5cbd08 Fix spelling in .go files (#5492)
Signed-off-by: Josh Soref <2119212+jsoref@users.noreply.github.com>
2025-09-08 10:33:12 +09:00
Alexey Palazhchenko 62ce1019b1 Simplify licensing 2025-09-07 12:08:29 +04:00
Josh Soref ef9934e3ed Replace malicious container registry references with ghcr (#5486) 2025-09-03 20:05:21 +04:00
Alexey Palazhchenko e78eaffb58 Finalize PostgreSQL metrics (#5485) 2025-09-03 15:25:44 +04:00
Chi FujiiandAlexey Palazhchenko 370b1586c5 Add PostgreSQL metrics (#5427)
Closes #5402.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-09-02 14:50:16 +04:00
Alexander Tobi FashakinandCopilot 1f8d160296 Update cloud installation docs (#5466)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-09-01 19:52:16 +04:00
3656ebd1c4 Use generated structs in Data API (#5382)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-09-01 13:24:21 +04:00
Patryk KwiatekandAlexey Palazhchenko e3a7406b9e Update wire dependency (#5465)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-09-01 12:48:10 +04:00
Alexey Palazhchenko 4847e59e25 Update dependencies (#5479) 2025-09-01 11:55:26 +04:00
Alexey Palazhchenko b6fa806add Move to documentdb/documentdb (#5468) 2025-08-27 12:35:57 +04:00
Chi FujiiandAlexey Palazhchenko 5394f00550 Avoid hijacking connections from the pool and immediately closing them (#5443)
Closes #5402.
Closes FerretDB/FerretDB-DocumentDB#270.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-08-27 11:37:26 +04:00
Alexey Palazhchenko 9a48b7132c Add helpers for lazy logging (#5467) 2025-08-27 10:26:35 +04:00
Alexey Palazhchenko 4cea93524d Fix FerretDB Cloud link 🤦 2025-08-26 19:38:39 +04:00
Alexey Palazhchenko 3cd4554d87 Add Cease and Desist Notice (#5462) 2025-08-25 18:50:08 +04:00
Alexey Palazhchenko 2e6ca25078 Add FerretDB Cloud blog post (#5461) 2025-08-25 17:04:31 +04:00
Alexey Palazhchenko 901a8f6030 Add MongoDB's complaint (#5460) 2025-08-25 12:45:03 +04:00
Alexey Palazhchenko b1feb6377d Add documentation page stub for MCP server (#5451) 2025-08-22 07:49:36 +00:00
Alexey Palazhchenko 3fd8c982a5 Bump deps (#5455) 2025-08-22 11:32:52 +04:00
Alexander Tobi FashakinandCopilot c05de8bdea Document cloud instance deployment and setup (#5424)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-21 20:15:06 +04:00
Alexey Palazhchenko d97f2612b8 Add TODO comment about Debian 13 Trixie (#5450)
Refs FerretDB/FerretDB#5449.
2025-08-21 13:42:59 +04:00
Alexey Palazhchenko 6d8e86b774 Remove flaky test (#5444) 2025-08-20 12:17:35 +04:00
Alexander Tobi Fashakin 7a117e768d Update compatible apps (#5442) 2025-08-20 05:51:21 +00:00
Alexander Tobi FashakinandCopilot bfd1650ee2 Update content guide (#5441)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-19 19:09:52 +04:00
Alexey Palazhchenko d9a14c883e Add comments to supervisord config (#5430) 2025-08-19 14:07:17 +04:00
Alexey Palazhchenko 2b652dae20 Use middleware (#5377) 2025-08-19 13:57:06 +04:00
Alexey Palazhchenko 6631594402 Add middleware (#5437) 2025-08-19 07:38:31 +04:00
c5f69fe962 Add blog post on Formio (#5395)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-08-18 22:39:46 +04:00
Alexey Palazhchenko a65042d381 Update expected PostgreSQL version (#5438) 2025-08-18 20:12:33 +04:00
Alexey Palazhchenko 24981ad991 Tweak conninfo (#5435) 2025-08-18 12:23:23 +04:00
Alexey Palazhchenko 2078f859f3 Make Run wait for all Handle calls to finish (#5434) 2025-08-18 11:52:42 +04:00
Chi FujiiandAlexey Palazhchenko 16670ff34f Upload YugabyteDB log files (#5401)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-08-18 09:27:56 +04:00
Alexey Palazhchenko b994d18792 Update DocumentDB (#5431) 2025-08-14 19:21:04 +04:00
Alexey Palazhchenko 4ea90be4aa Use QEMU on arm64 for Yugabyte for now (#5429) 2025-08-14 12:32:49 +04:00
3770c1e4eb Add release blog post for FerretDB v2.5.0 (#5412)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-08-14 12:06:53 +04:00
Chi Fujii 5fd75c160a Bump YugabyteDB to stable version (#5428) 2025-08-14 10:55:16 +04:00
Alexey Palazhchenko c60131a69c Update documentation to point to the next release (#5423) 2025-08-14 10:54:45 +04:00
Alexey Palazhchenko b4eda04f37 Prepare v2.5.0 release (#5414) 2025-08-12 15:06:25 +04:00
Alexey Palazhchenko 6e2d3affd9 Update DocumentDB (#5411) 2025-08-12 10:25:34 +04:00
Alexey Palazhchenko 2cbf8cac53 Update Prometheus metrics (#5403) 2025-08-11 19:51:18 +04:00
Patryk Kwiatek b933b1f365 Test flaky tests detection (#5393) 2025-08-06 14:12:10 +04:00
Alexey Palazhchenko 96d34a4615 Enable MongoDB test commands (#5400) 2025-08-04 11:17:26 +04:00
Alexey Palazhchenko 1a5a6ec3c3 Update DocumentDB (#5398) 2025-08-01 18:29:12 +04:00
Chi Fujii 997c02f379 Run all YugabyteDB integration tests (#5283) 2025-08-01 14:31:33 +04:00
Alexey Palazhchenko 2412bf3595 Make a resource.Untrack thread-safe (#5396) 2025-08-01 12:10:01 +04:00
Alexey Palazhchenko 20697b6b74 Small tweaks (#5394) 2025-07-31 09:53:28 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko cb18c69dcc Add WeKan blog post (#5381)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-30 19:32:21 +04:00
Alexey Palazhchenko e99a07db05 Bump DocumentDB version (#5392) 2025-07-30 19:13:25 +04:00
Chi FujiiandAlexey Palazhchenko b1189f2594 Add YugabyteDB integration tests (#5274)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-30 16:53:31 +04:00
Alexey Palazhchenko 783d39086c Encapsulate PostgreSQL pool in the Handler (#5389) 2025-07-30 11:28:47 +04:00
Alexey Palazhchenko c87f9e3c18 Small cleanup (#5388) 2025-07-30 11:02:43 +04:00
Patryk Kwiatek e5615b35ca Use Codecov for flaky integration tests detection (#5361) 2025-07-30 05:51:39 +00:00
Alexey PalazhchenkoandCopilot 327a8fb759 Extract wiring into a separate package (#5383)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-30 09:23:06 +04:00
Alexander Tobi Fashakin 319128c43f Enable full visibility for images on zoom (#5346) 2025-07-28 20:21:27 +04:00
Alexey Palazhchenko bccd6276dd Update DocumentDB (#5380) 2025-07-28 12:17:48 +04:00
Alexey Palazhchenko 1b5913f2bf Simplify flags handling (#5378) 2025-07-28 09:16:48 +04:00
Chi Fujii 66f9bc149d Make accessing YugabyteDB logs easier (#5362)
Closes #85.
2025-07-25 08:12:33 +00:00
Chi Fujii f06bf851a9 Skip YugabyteDB setup for arm64 (#5372)
Closes #85.
2025-07-25 07:06:06 +00:00
Alexey Palazhchenko c891abbdf6 Refactor normal and error responses (#5326) 2025-07-24 19:24:29 +04:00
Alexey PalazhchenkoandChi Fujii f65c7b643a Tweak Ollama and MCPHost setup (#5375)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-07-24 09:06:14 +04:00
Alexander Tobi Fashakin bc0e9128e3 Add Vault blog post (#5368)
Closes #5152.
2025-07-23 19:44:59 +04:00
Patryk Kwiatek e1ea96acf4 Add components in codecov (#5364) 2025-07-23 11:06:56 +04:00
Alexey Palazhchenko f64490cf94 Update DocumentDB (#5353) 2025-07-17 12:14:08 +04:00
Alexander Tobi Fashakin 5a05644fed Add release blogpost for 2.4.0 (#5354) 2025-07-16 19:56:04 +04:00
Alexey Palazhchenko 9a45f6bc26 Prepare v2.4.0 release (#5344) 2025-07-16 11:31:22 +04:00
d9d3a9f8dd Add HyperDX blog post (#5334)
Closes #5226.

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-15 20:19:07 +04:00
Alexey Palazhchenko 91feb6e54a Update DocumentDB (#5342) 2025-07-15 17:13:59 +04:00
Alexander Tobi Fashakin fc1ec1ad61 Add compatible applications (#5335) 2025-07-10 08:06:09 +00:00
Chi Fujii b1afd1f15a Add YugabyteDB to local setup (#5258)
Closes #85.
2025-07-09 09:44:12 +00:00
Alexey PalazhchenkoandCopilot 746c84a0d6 Split command handling and handlers (#5328)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-09 11:05:44 +04:00
2936407d35 Add DBeaver compatibility blogpost (#5321)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-08 20:06:47 +04:00
Alexey Palazhchenko 07449f2391 Avoid extra marshaling (#5327) 2025-07-08 19:28:47 +04:00
Chi FujiiandAlexey Palazhchenko c62a0ec6ba Allow users to perform user management commands (#5314)
Closes #85.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-08 09:11:38 +04:00
Alexander Tobi Fashakin 9ae0a666e9 Add GrowthBook to compatible apps (#5319) 2025-07-04 08:10:04 +00:00
Chi Fujii 13b36b44ef Update TODO URL for dropUsers test (#5324) 2025-07-04 11:59:07 +04:00
Alexey Palazhchenko 1916b89173 Remove must.NotFail(wire[bson].NewXXX( pattern (#5318) 2025-07-04 08:49:53 +09:00
d558f38ee8 Add Heyform compatibility blog post (#5316)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-07-03 18:39:38 +04:00
Alexey Palazhchenko 7eacf8cefc Refactor responses handling (#5310) 2025-07-03 14:57:18 +04:00
Chi Fujii d6245127ac Update TODO URLs (#5317) 2025-07-02 09:43:56 +04:00
Alexey Palazhchenko f23e436f39 Do not use deprecated method (#5312) 2025-07-01 19:57:09 +04:00
Alexey Palazhchenko a630f68a9f Refactor requests handling (#5292) 2025-06-30 13:22:54 +04:00
Alexey Palazhchenko 7f7072c83a Bump deps (#5307) 2025-06-29 16:25:31 +02:00
Alexander Tobi Fashakin f248bb1356 Add Growthbook blogpost (#5304) 2025-06-27 17:57:33 +02:00
Alexey Palazhchenko b4bd17b678 Minor refactoring of Data API (#5302) 2025-06-27 11:23:57 +02:00
Alexey PalazhchenkoandCopilot 2f974ee36e Extend middleware requests and responses (#5301)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-06-27 08:47:14 +02:00
Chi Fujii cec3175583 Cleanup NodeBB blog post (#5294) 2025-06-26 10:53:19 +00:00
Alexey Palazhchenko 969cf59ef3 Add Dependabot configuration for mcphost (#5296) 2025-06-26 11:02:38 +02:00
Chi Fujii 169e5d3800 Bring back Codecov and Coveralls integration (#5276) 2025-06-26 09:57:18 +02:00
Chi Fujii 1618cf7b19 Add mcphost as tool (#5287) 2025-06-26 09:56:31 +02:00
Alexander Tobi Fashakin 0d84f2c324 Add NodeBB to compatible apps (#5293) 2025-06-25 16:52:11 +02:00
Alexander Tobi Fashakin 871f60d169 Add NodeBB compatibility blog post (#5285) 2025-06-25 14:39:00 +02:00
Alexander Tobi Fashakin e66693f38b Add Librechat to compatibility section (#5286) 2025-06-25 09:30:36 +02:00
Alexander Tobi Fashakin 30bdf62714 Add blog post on setting up LibreChat with FerretDB (#4999) 2025-06-23 16:42:37 +02:00
Alexander Tobi Fashakin c4b9de7f45 Add PayloadCMS to compatible apps (#5270) 2025-06-23 12:22:54 +00:00
Alexey Palazhchenko 211b1348a5 Update DocumentDB (#5282) 2025-06-20 16:38:45 +04:00
Alexey Palazhchenko eb59f61d73 Wrap long lines in a blog post (#5280) 2025-06-20 13:44:29 +04:00
Alexander Tobi Fashakin d539b13641 Add Compass to compatible apps (#5275) 2025-06-19 12:29:17 +04:00
Alexander Tobi Fashakin 117d335fa3 Add blog post on using Compass GUI (#5263) 2025-06-18 19:43:51 +04:00
Alexey Palazhchenko 0dc0844eb3 Use debug-level log messages for continuations (#5266)
Closes #5265.
2025-06-17 13:35:06 +00:00
Alexey Palazhchenko c58bcdb8e8 Remove skipping of bypassEmptyTsReplacement (#5267) 2025-06-17 11:19:38 +00:00
Alexander Tobi Fashakin c765a2fb06 Add blog post for Payload CMS (#5257) 2025-06-17 10:20:03 +04:00
Alexey Palazhchenko 89eb76043c Update DocumentDB (#5268) 2025-06-16 17:35:10 +04:00
Alexander Tobi Fashakin 84f3b9cf7c Fix social links (#5264) 2025-06-16 07:05:48 +00:00
Alexey Palazhchenko 51335dc57f Update DocumentDB (#5261) 2025-06-16 10:21:56 +04:00
Alexey Palazhchenko 0ad2ad90fa Revert "Remove hack for bypassEmptyTsReplacement (#5217)" (#5256) 2025-06-12 17:03:53 +04:00
Alexey Palazhchenko a3132614c4 Prepare v2.3.0 release (#5254) 2025-06-11 15:33:19 +04:00
Alexey Palazhchenko 761df3603b Improve telemetry settings for embedded package (#5252) 2025-06-11 14:52:45 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 6adbbf8847 Create compatible apps section (#5108)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-06-11 14:39:27 +04:00
Alexey Palazhchenko e089a11124 Remove hack for bypassEmptyTsReplacement (#5217) 2025-06-11 13:35:30 +04:00
Alexey Palazhchenko 14f728e94c Build production Docker images for PRs (#5251) 2025-06-11 12:57:58 +04:00
Alexey Palazhchenko 7a8bb089ad Use DocumentDB's compat command (#5242) 2025-06-11 12:38:00 +04:00
Alexey Palazhchenko b16ee73b52 Update DocumentDB (#5240) 2025-06-10 11:40:22 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 416c6384fa Add blog post for Novu compatibility (#5195)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-06-06 16:50:20 +04:00
Alexey Palazhchenko a6c9a8e731 Bump Go and deps (#5236) 2025-06-06 12:44:50 +04:00
Alexey Palazhchenko 74448bee91 Update TODO comments (#5223) 2025-06-05 22:42:55 +04:00
Alexander Tobi Fashakin 7fdf7b333a Add blog post on Mongo Express compatibility (#5194) 2025-06-04 21:03:38 +04:00
Alexey Palazhchenko e10e211fb7 Small documentation tweaks (#5218) 2025-06-04 15:39:34 +04:00
Alexey Palazhchenko 1c8b3650a3 Use Ollama in local setup (#5215) 2025-06-04 12:13:49 +04:00
Alexey Palazhchenko 41a3a30976 Update CTS tool to wrap long lines (#5202) 2025-06-04 05:45:38 +00:00
Alexey Palazhchenko 6a3bb8b22d Disable Markdownlint rule that clashes with MDX (#5210) 2025-06-04 09:35:42 +04:00
Alexey Palazhchenko 04255c2385 Unskip test (#5211) 2025-06-04 09:59:09 +09:00
Alexey Palazhchenko 77d1db5833 Refactor resource tracking tests (#5208) 2025-06-03 15:15:37 +02:00
Alexey Palazhchenko 6231d4efe7 Add test for inserting zero timestamp (#5199) 2025-05-30 10:10:29 +09:00
Alexey Palazhchenko f68073e012 Update DocumentDB (#5201) 2025-05-29 16:55:21 +04:00
Alexey Palazhchenko 92e1c5de00 Update DocumentDB (#5197) 2025-05-28 20:27:57 +04:00
Alexey Palazhchenko 7add88cda3 Do not format MDX as Markdown (#5186) 2025-05-27 20:00:56 +04:00
Alexey Palazhchenko 639484df81 Add permissions to GitHub Actions workflows (#5182) 2025-05-27 08:25:20 +04:00
Alexander Tobi Fashakin a6364fc036 Improve insert operations in guides (#5131)
Closes #5130.
2025-05-26 23:20:31 +04:00
Alexey Palazhchenko a313e974ff Add Dependabot configuration for main-v1 (#5098) 2025-05-26 21:36:07 +04:00
Alexey Palazhchenko 21aeda399f Bump deps (#5170) 2025-05-26 21:12:50 +04:00
Alexey Palazhchenko cb89e5e021 Revert "Update CODEOWNERS" (#5169) 2025-05-26 13:25:39 +04:00
Chi Fujii 2095a33886 Make conninfo a resource (#5166)
Closes #5048.
2025-05-26 08:39:14 +09:00
Balou9 7222581d61 Enable onInlineAuthors in blog settings (#5079)
Closes #4587.
2025-05-23 09:04:30 +09:00
Şahin AKYOL 968d8e5600 Use runtime.Cleanup for resource tracking (#5077)
Closes #5047.
2025-05-22 06:15:36 +00:00
YiandAlexey Palazhchenko a2369501ef Add enableTelemetry config for embedded FerretDB (#5109)
Signed-off-by: jyz0309 <45495947@qq.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-05-22 11:37:33 +09:00
Chi Fujii 0858ca0c3b Bump deps (#5159) 2025-05-21 14:57:44 +02:00
Alexander Tobi Fashakin 14feeaaf71 Update tags for next release (#5157) 2025-05-14 17:07:11 +02:00
Alexander Tobi Fashakin 5a94d0f11c Update docker tags in docs (#5156) 2025-05-14 12:31:13 +00:00
Alexey Palazhchenko 4757a853ce Update CODEOWNERS 2025-05-14 16:17:54 +04:00
Alexey Palazhchenko 21fa2fa078 Update versions to point to the next release (#5144) 2025-05-11 15:52:00 +04:00
Alexander Tobi Fashakin 7a4dbf27fd Publish FerretDB v2.2.0 release blog post (#5136) 2025-05-09 22:50:37 +04:00
Alexey Palazhchenko d2d96a7c5e Prepare v2.2.0 release (#5138) 2025-05-09 22:03:55 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko bef234172f Document update of FerretDB image (#5124)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-05-09 17:27:03 +00:00
Alexander Tobi Fashakin 3329903a8f Document Data API usage (#5063)
Closes #4734.
2025-05-09 15:30:17 +00:00
Alexey Palazhchenko 2235b122f5 Update DocumentDB (#5142) 2025-05-09 19:20:02 +04:00
Alexey Palazhchenko 66d2226c83 Update DocumentDB (#5141) 2025-05-09 16:16:07 +04:00
Alexey Palazhchenko 3ccbcf0a8b Remove old TODOs (#5132)
Closes #4726.
2025-05-07 12:42:48 +00:00
Alexey Palazhchenko cc6805ee14 Add full arm64 support (#5113)
Closes #4726.
2025-05-07 16:23:58 +04:00
Patryk KwiatekandAlexey Palazhchenko e1c72fc798 Hook CTS into CI (#5120)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-05-06 16:24:52 +04:00
Patryk Kwiatek f972bbec4a Run CTS tests against Vector Search guide examples (#5122) 2025-05-05 20:54:39 +04:00
Patryk Kwiatek bcd9bbcd10 Run CTS tests against Full Text Search guide examples (#5121) 2025-05-05 17:05:01 +04:00
Patryk Kwiatek eb09b681f0 Run CTS tests against TTL Indexes guide examples (#5123) 2025-05-05 12:37:11 +04:00
Chi Fujii 3bee9cdae9 Decode dropIndexes response (#5117)
Closes #5116.
2025-05-02 14:28:00 +04:00
Vartan Babayan 2396a6caf1 Rename binaries and packages (#5078) 2025-05-01 12:27:04 +00:00
Alexey Palazhchenko b42906983a Update DocumentDB (#5115) 2025-05-01 08:18:14 +04:00
Patryk Kwiatek e1a0d1c6fc Reorgonize cts output files (#5082) 2025-04-25 11:24:20 +00:00
Chi Fujii 383cdf9dac Cleanup evaluation docker image (#5076)
Closes #4976.
2025-04-25 15:14:11 +04:00
Alexey Palazhchenko 908651fc64 Document required features (#5086) 2025-04-25 06:39:42 +04:00
Chi Fujii 8ceec7963e Use volume for state directory (#5083)
Closes #4976.
2025-04-24 16:06:26 +04:00
Alexey Palazhchenko a48f8344be Fix Docker tags for pre-release git tags (#5099) 2025-04-24 12:47:07 +02:00
Alexey Palazhchenko cb364f9c3b Use new wire helpers (#5094) 2025-04-24 00:29:23 +00:00
Alexey Palazhchenko e2f6cf9cf4 Update DocumentDB (#5096) 2025-04-23 16:59:20 +04:00
Alexey Palazhchenko c6a392e062 Revert "Use new wire helpers (#5056)"
This reverts commit 206acd429f.
2025-04-23 10:50:13 +04:00
Alexey Palazhchenko 206acd429f Use new wire helpers (#5056) 2025-04-22 16:11:32 +04:00
Alexey Palazhchenko fb60e03502 Skip bypassEmptyTsReplacement parameters for now (#5080) 2025-04-22 16:10:01 +04:00
Chi Fujii ba5729d60b Unexport handlers (#5084)
Closes #5046.
2025-04-22 12:17:56 +02:00
Chi Fujii c609724261 Use Handle function in clientconn (#5070)
Closes #5046.
2025-04-21 11:14:04 +00:00
Patryk Kwiatek accf86b4df Unconvert syntax examples in documentation (#5072) 2025-04-21 08:36:56 +00:00
Chi Fujii d70dba9c91 Use Handle function in Data API (#5069)
Closes #5046.
2025-04-21 07:20:59 +00:00
Chi Fujii da64b62c31 Define docker tags for ferretdb-eval image (#5068)
Closes #4976.
2025-04-21 10:53:51 +04:00
Chi Fujii 9a79f7e1f4 Implement handler Handle function (#5055)
Closes #5046.
2025-04-17 23:49:52 +00:00
Alexey Palazhchenko 3b8b13f322 Update DocumentDB (#5074) 2025-04-17 18:27:45 +04:00
Chi Fujii 38e619706e Create ferretdb-eval docker image with production build (#5051)
Closes #4976.
2025-04-17 13:30:44 +00:00
Chi Fujii 4ae2259179 Fix docker health check on evaluation image (#5067)
Closes #4976.
2025-04-17 11:21:08 +00:00
Alexander Tobi Fashakin 1739460adc Backport .deb installation guide (#5066) 2025-04-17 12:29:29 +04:00
Alexander Tobi Fashakin 75bc1130b4 Update DocumentDB debian packages (#4959)
Closes #4954.
2025-04-16 20:06:51 +04:00
Alexander Tobi Fashakin 3cad4c3236 Add blog post on migrating to FerretDB with dsync (#5033) 2025-04-16 19:40:24 +04:00
Alexey Palazhchenko 5baca45a6d Update OpenAPI spec description (#5062) 2025-04-16 15:31:24 +00:00
Alexey Palazhchenko a60bba2c20 Rename and move code files in guides (#5057) 2025-04-16 15:20:21 +00:00
Alexey Palazhchenko 0e8fa61a69 Update redirects (#5060) 2025-04-16 17:19:21 +04:00
Patryk Kwiatek 9f7d281d23 Hook CTS tool into documentation building (#4990) 2025-04-16 11:14:56 +00:00
Chi Fujii 459a9fd904 Supervise services in evaluation image (#5041)
Closes #4976.
2025-04-16 15:02:56 +04:00
Alexander Tobi Fashakin 4829440254 Backport Kubernetes docs to 2.1 (#5053) 2025-04-15 23:52:38 +00:00
Alexey Palazhchenko f64f75a60f Update DocumentDB (#5054) 2025-04-15 22:35:29 +04:00
55ddc4bbd4 Remove MongoDB driver v1 (#4961)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2025-04-14 16:18:21 +00:00
Chi Fujii 7b5830d298 Rename evaluation image to eval-dev (#5040) 2025-04-14 11:06:04 +00:00
a549d79a4d Add Kubernetes installation guide (#4971)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-04-11 20:53:30 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 878728bdae Add blog post on FerretDB and CNPG (#4998)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-04-11 20:25:37 +04:00
Alexey Palazhchenko 503e59c531 Use "PostgreSQL with DocumentDB extension" phrase (#5050) 2025-04-11 19:19:26 +04:00
Alexey Palazhchenko d4e0978b3f Update DocumentDB (#5045) 2025-04-11 15:49:34 +04:00
Alexey Palazhchenko da2006bef6 Update wire (#5042) 2025-04-11 07:04:34 +00:00
Alexey Palazhchenko 1bf9d907a0 Make proxy handler implement an interface (#5036) 2025-04-10 08:12:19 +00:00
Alexey Palazhchenko a2499f6b66 Bump deps (#5027) 2025-04-09 18:52:20 +00:00
Alexey Palazhchenko bbab5c4b6f Move findAndModify integration tests (#5037) 2025-04-09 17:23:37 +00:00
Alexey Palazhchenko 1941560800 Merge Msg and Query into a single type (#5032) 2025-04-08 09:41:02 +04:00
Alexey Palazhchenko fb76e21b64 Minor tweaks for proxy code (#5025) 2025-04-08 09:05:56 +04:00
Alexey Palazhchenko 526554e081 Update deps (#5024) 2025-04-08 09:05:39 +04:00
Alexey Palazhchenko fe980d0bcd Move tests for sessions (#5026) 2025-04-08 09:05:16 +04:00
Alexey Palazhchenko d6757ee63a Update DocumentDB (#5020) 2025-04-07 11:36:11 +04:00
Alexey Palazhchenko 29556167bc Do not send zero values to telemetry (#5016) 2025-04-07 09:49:54 +04:00
Alexey Palazhchenko a89ba41c53 Update Docker images (#5015) 2025-04-04 14:11:51 +04:00
Alexander Tobi Fashakin ffe987aa75 Add blogpost on FerretDB v2.1.0 release (#5004) 2025-04-03 22:12:41 +04:00
Alexey Palazhchenko 05ed2b952c Prepare v2.1.0 release (#5013) 2025-04-03 19:34:04 +04:00
Alexey Palazhchenko 1187aac976 Update changelog generator (#4810) 2025-04-03 18:53:51 +04:00
Alexey Palazhchenko 1630cbd4a2 Disable commit check for now (#5012) 2025-04-03 14:11:34 +04:00
Alexey Palazhchenko d95475ba57 Create redirects for /v2.0/ documentation URLs (#5011) 2025-04-03 13:21:22 +04:00
Alexey Palazhchenko f78160a69d Remove error middleware for now (#5008)
Closes #4965.
2025-04-03 08:44:01 +04:00
Alexey Palazhchenko 5f890da6ac Use Go 1.24.2 (#5005) 2025-04-02 17:11:16 +04:00
Alexey Palazhchenko 6f86e9098d Partially revert middleware changes (#4995) 2025-04-02 11:42:06 +04:00
Alexey Palazhchenko b962266a1a Fix version detection for embeddable package (#4936)
Closes #4889.
2025-04-01 18:18:46 +04:00
Alexey Palazhchenko 3ff4172ee9 Add more tests for error handling (#4996) 2025-04-01 07:18:35 +04:00
Alexander Tobi Fashakin 869b4cf727 Update feature blog post (#4991) 2025-03-27 21:41:15 +04:00
Alexey Palazhchenko b1277aea38 Add basic documentation for supported commands (#4970) 2025-03-27 21:38:16 +04:00
a520043a58 Add post on MongoDB queries and operations on FerretDB (#4732)
Closes FerretDB/engineering#235.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-03-27 21:20:48 +04:00
Alexey Palazhchenko f320ffb026 Do not decode incoming document twice (#4981) 2025-03-27 17:54:26 +04:00
Alexey Palazhchenko c3a8118d86 Add TODOs (#4986) 2025-03-27 11:22:06 +04:00
Alexey Palazhchenko 2c0cadf502 Update DocumentDB (#4982) 2025-03-26 13:16:12 +04:00
Alexey Palazhchenko 09eddc89b2 Disable tracing in benchmarks for now (#4980)
Closes #4934.
2025-03-26 11:14:00 +04:00
Alexey Palazhchenko f501409464 Update DocumentDB (#4975) 2025-03-25 13:58:00 +04:00
Alexey PalazhchenkoandChi Fujii 5d7626b627 Update DocumentDB (#4941)
Closes #4966.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-03-25 12:26:56 +04:00
Alexey Palazhchenko 077b782f31 Use ERROR level logging for failed tests (#4974) 2025-03-25 10:58:50 +04:00
Chi Fujii 82604f8b51 Implement error middleware (#4951)
Closes #1997.
2025-03-24 23:39:25 +04:00
Alexey Palazhchenko 9c1ce6280e Backport documentation changes to v2.0 (#4952) 2025-03-21 16:42:53 +04:00
Alexander Tobi Fashakin 4d0e2eb47f Update deb and rpm installation docs (#4927) 2025-03-21 10:35:32 +00:00
krishna sindhur a3cba3361d Add support for reading PostgreSQL URL from a file (#4937)
Closes #4877.
2025-03-21 10:00:49 +00:00
Alexey Palazhchenko fc64cd0de5 Update/backport full-text and TTL indexes guides (#4948) 2025-03-21 01:03:48 +00:00
Chi Fujii 6e03fb1b0a Handle OP_QUERY in middleware using interface (#4947)
Closes #1997.
2025-03-20 23:39:50 +04:00
Alexey Palazhchenko d89cfc980f Add a note to documentation about PR titles (#4944) 2025-03-20 00:18:22 +00:00
Alexander Tobi Fashakin b444c5a778 Add TTL index guide (#4926) 2025-03-19 19:06:17 +04:00
Alexey Palazhchenko df3c5d52ce Improve integration benchmarks (#4925) 2025-03-18 21:15:22 +04:00
Alexey PalazhchenkoandChi Fujii fa3d68f682 Change the way OP_MSG handlers are invoked (#4923)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-03-18 21:12:32 +04:00
Alexey Palazhchenko 150ecb8186 Sync flags grouping with docs (#4933)
Closes #4746.
2025-03-18 15:11:00 +04:00
krishna sindhur 96bb7392cd refactored: help command flags into groups (#4918) 2025-03-17 17:01:23 +04:00
Alexey Palazhchenko 2809469f2a Configure connection pool size in tests (#4932) 2025-03-17 10:50:04 +04:00
Alexander Tobi Fashakin 9a706578a2 Add guide for Compass as a compatible app (#4906) 2025-03-14 19:54:09 +04:00
Patryk Kwiatek e814886570 Add colorized levels to console logger (#4904) 2025-03-14 00:17:17 +00:00
Chi Fujii 1b78786599 Move message processing in clientconn to a function (#4919)
Closes #1997.
2025-03-14 00:07:38 +00:00
Alexander Tobi Fashakin f0bcec5e09 Add full text search guide (#4886) 2025-03-13 23:03:52 +04:00
Alexey Palazhchenko b2816b362f Add basic structure for middlewares (#4908) 2025-03-13 12:22:00 +04:00
Alexey Palazhchenko 553741c8ed Bump deps (#4916) 2025-03-13 12:21:23 +04:00
Chi Fujii ec52fef14b Refactor clientconn (#4907)
Closes #1997.
2025-03-12 19:46:42 +04:00
Alexey Palazhchenko 125e16c240 Make production builds of the main branch (#4911) 2025-03-12 05:43:23 +04:00
Alexey Palazhchenko fd460f08fe Add TODO comments for observability tasks (#4896) 2025-03-10 16:15:55 +04:00
Alexey Palazhchenko c1e0a595ba Add example telemetry report to documentation (#4861)
Closes #4721.
2025-03-08 11:35:15 +00:00
Chi Fujii a5eb60bdb4 Check issue URLs in documentation (#4890)
Closes #4715.
2025-03-07 12:20:54 +01:00
Patryk Kwiatek 27b210bbda Update TODO URLs for listDatabase tests (#4863)
Closes #4722.
2025-03-07 14:49:54 +04:00
Patryk Kwiatek c7ee74e83c Document non-enforced format of log messages in envtool package (#4867) 2025-03-07 10:51:59 +04:00
Alexey Palazhchenko ebd085685f Start working on a new release (#4885) 2025-03-06 22:32:57 +04:00
Alexey Palazhchenko fb4d59f6a9 Adjust pool connection timeout (#4888)
Closes #4876.
2025-03-06 10:21:18 +04:00
Alexey Palazhchenko a9c0b5bd5f Add FerretDB v2 GA blog post (#4884) 2025-03-05 19:08:29 +04:00
Alexey Palazhchenko 2214721e51 Prepare 2.0.0 GA release! (#4881) 2025-03-05 16:26:16 +04:00
Alexey Palazhchenko 84fc64c1a6 Final preparations (#4874) 2025-03-05 15:47:35 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko aad81dcf9d Add basic troubleshooting guide (#4854)
Closes #4844.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-05 14:48:21 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 2c9143eb37 Add migration guide from v1.x to v2.x (#4850)
Closes #4789.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-05 14:27:06 +04:00
Alexey Palazhchenko 077887e634 Bump Go and safe deps (#4875) 2025-03-05 10:07:54 +04:00
Chi Fujii 14e72a10b2 Skip flaky currentOp test and add TODO (#4872) 2025-03-05 09:12:01 +04:00
Alexey Palazhchenko cebdfb845e Use GitHub-hosted CI runners (#4866) 2025-03-04 21:53:11 +04:00
Alexey Palazhchenko 4051629d92 Unskip tests that refer to closed issue (#4865) 2025-03-04 20:28:24 +04:00
Alexey Palazhchenko 224ad9242b Prepare release (#4859) 2025-03-04 16:45:04 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko ae554b683f Recommend using full tags/versions (#4834)
Closes #4833.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-04 15:37:39 +04:00
Alexey Palazhchenko f32f80a771 Improve messages about DocumentDB version (#4832)
Closes #4724.
2025-03-04 15:08:06 +04:00
Chi FujiiandAlexey Palazhchenko 942ee8d3b4 Implement currentOp command (#4855)
Closes #4794.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-04 14:31:42 +04:00
Chi FujiiandAlexey Palazhchenko 5a144ed783 Remove DocumentDB building from this repo (#4852)
Closes #4725.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-04 13:25:25 +04:00
Alexey PalazhchenkoandPatryk Kwiatek 64ff290f79 Use new DocumentDB API for listDatabases (#4841)
Closes #4722.

Co-authored-by: Patryk Kwiatek <patryk.kwiatek@ferretdb.io>
2025-03-04 12:45:08 +04:00
Alexey PalazhchenkoandChi Fujii ee32bc86ed Remove old code for tracking operations (#4842)
Closes #4794.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-03-04 12:43:15 +04:00
Chi FujiiandAlexey Palazhchenko 7773990627 Update DocumentDB Docker image (#4853)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-03-04 11:50:29 +04:00
Alexey Palazhchenko 0882beff7b Update URL to join Slack (#4851) 2025-03-03 15:36:24 -05:00
a0936cb7e6 Add Data API blogpost (#4739)
Closes FerretDB/engineering#237.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-02-28 20:33:37 +04:00
Alexey Palazhchenko de87a39474 Make Data API without authentication if requested (#4849) 2025-02-28 20:24:25 +04:00
Alexey Palazhchenko 044ab23b9e Filter out sensitive information from debug archive (#4836)
`cmdline` may include credentials in PostgreSQL URL, etc.

Closes #4838.
2025-02-28 11:24:31 +00:00
Alexey Palazhchenko da89bec0d3 Move comment in docs to fix DocCard (#4845) 2025-02-28 11:07:48 +00:00
Patryk Kwiatek e61766b6db Enforce log messages format for debug build and integration tests (#4754) 2025-02-28 08:09:26 +04:00
Alexey Palazhchenko 375b23c4e5 Publush build info, state, and CLI flags in expvar (#4837)
Those expvars are added to the debug archive that we could ask users to give us for debugging.

Closes #4838.
2025-02-27 13:55:48 +01:00
Alexey Palazhchenko 584dde053c Bump DocumentDB for development (#4839)
Unblocks `currentOp` implementation.

Closes #4794.
2025-02-27 13:32:46 +01:00
Alexey Palazhchenko a6806efd1d Update TODO comment (#4831) 2025-02-26 17:07:06 +04:00
Patryk KwiatekandAlexey Palazhchenko 84b3efd41c Change dbStats tests TODO links (#4823)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-02-26 09:38:28 +04:00
6267c4eb64 Add blog post for rc2 release (#4817)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-25 22:35:41 +04:00
Alexey Palazhchenko eb1ef1ed2c Prepare v2.0.0-rc.2 release (#4816) 2025-02-25 21:43:26 +04:00
Alexander Tobi Fashakin d170db2b07 Update blogs to use js instead of json5 (#4801) 2025-02-24 18:29:39 +04:00
Alexey Palazhchenko 1453898cbc Enable Docker Hub and quay.io (#4815) 2025-02-24 18:16:31 +04:00
Alexey Palazhchenko 6c958980bb Update Docker tags (#4812) 2025-02-24 17:45:54 +04:00
Alexey Palazhchenko c927df3df1 Update DocumentDB (#4811) 2025-02-24 17:19:35 +04:00
Alexey Palazhchenko 840308b6b4 Enable building FerretDB as PostgreSQL background worker (#4802) 2025-02-24 13:23:57 +04:00
Patryk Kwiatek 04de99a54d Implement dbStats command (#4804) 2025-02-24 13:20:20 +04:00
Alexey PalazhchenkoandCopilot b330166403 Fix envtool for Go 1.24 (#4809)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-02-24 13:07:18 +04:00
Chi FujiiandAlexey Palazhchenko 210cafb4b5 Update release checklist and .deb installation guide (#4767)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-02-24 11:40:51 +04:00
Alexey Palazhchenko e8bb57932b Make embeddable package logging configurable (#4807) 2025-02-24 09:58:54 +04:00
Alexey Palazhchenko 3a9706658a Tweak Docusaurus configuration (#4805) 2025-02-24 09:38:03 +04:00
Alexey Palazhchenko 39c4ab5552 Re-introduce embeddable package (#4778) 2025-02-21 14:26:47 +00:00
Alexey Palazhchenko e3039ac2c9 Bump Go deps (#4803) 2025-02-21 14:45:53 +04:00
Patryk Kwiatek 04c2cfb016 Add mongo slog format (#4716) 2025-02-21 06:49:35 +00:00
Alexander Tobi Fashakin ddbfc7260b Convert json5 to js responses with single quotes (#4800) 2025-02-21 05:57:20 +00:00
Alexey Palazhchenko 63c1f21a22 Add test helper (#4799) 2025-02-21 09:50:11 +04:00
Alexey Palazhchenko 174b472cbc Make handler take over the pool (#4795) 2025-02-21 09:49:52 +04:00
Alexey Palazhchenko cfe9f56456 Update Docker image tag in v1 docs (#4796) 2025-02-20 19:23:23 +04:00
Alexey Palazhchenko 6f38b9a26b Reformat request/response .js files (#4787) 2025-02-20 18:49:04 +04:00
Alexey PalazhchenkoandChi Fujii ca39e0c41f Update DocumentDB (#4788)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2025-02-20 11:50:17 +04:00
Alexey Palazhchenko c1f0fef933 Use directories instead of files for state and telemetry (#4784) 2025-02-19 10:05:15 +09:00
Alexey Palazhchenko 6adc30a2bc Tweak CLI for disabling interfaces (#4781) 2025-02-18 09:32:25 -05:00
Alexey Palazhchenko f812de58e1 Use Go 1.24.0 (#4775) 2025-02-17 19:20:13 +04:00
Alexey Palazhchenko d94e91b1fd Consistently use / in MongoDB URIs (#4759) 2025-02-13 02:31:10 +00:00
Alexey Palazhchenko 6bc29eb0b6 Set GOARM64 explicitly (#4760) 2025-02-13 00:34:18 +00:00
Alexey Palazhchenko 00aff27c5c Remove golang.org/x/exp/maps package (#4711) 2025-02-13 00:25:21 +00:00
Alexey Palazhchenko 524394fafb Add/update TODO comments for some issues (#4723) 2025-02-12 15:28:21 +01:00
Alexander Tobi Fashakin 04f5c06df0 Update TLS docs (#4752) 2025-02-12 06:36:44 +00:00
Alexander Tobi Fashakin 9b4720b550 Update config flags (#4740) 2025-02-12 06:27:56 +00:00
Chi Fujii e561e88d78 Implement reIndex command (#4735)
Closes #1516.
2025-02-12 10:20:14 +04:00
Tomáš Linhart a9c4b8c639 Add missing space in command (#4753) 2025-02-11 12:45:02 +04:00
Alexey Palazhchenko b085d709b5 Remove "all backends" from the issue template (#4751) 2025-02-11 00:29:03 +00:00
Alexey Palazhchenko ae1d2ccfea Add explicit platform: linux/amd64 to docs (#4749) 2025-02-10 21:17:17 +00:00
Alexander Tobi Fashakin 95eb803046 Add replication blog post (#4717) 2025-02-10 18:29:05 +04:00
Chi Fujii aac25390a7 Use wireclient for readiness probe to avoid calling endsessions on unauthenticated client (#4718)
Closes #4692.
2025-02-10 12:39:17 +00:00
Chi FujiiandAlexey Palazhchenko f569ea500b Check DocumentDB issues in checkcomments and checkdocs (#4714)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2025-02-10 16:29:47 +04:00
Chi Fujii 06697e2db9 Refactor and generate using genwrap tool (#4705)
Closes #4700.
2025-02-10 09:38:10 +00:00
Alexey Palazhchenko 2976b96d70 Bump deps (#4743) 2025-02-07 17:05:58 +04:00
Alexey Palazhchenko 0cf6ca0344 Do not use a global variable for logging (#4727) 2025-02-03 01:18:14 +00:00
Patryk Kwiatek 8cfa10ebc1 Introduce smoke test for Data API (#4712) 2025-02-02 07:12:19 +01:00
Chi Fujii fc7d64802e Refactor extract and convert in genwrap tool (#4703)
Closes #4700.
2025-01-29 05:58:33 +00:00
Alexey Palazhchenko adc44a2f03 Do not use Git LFS for Go files (#4713) 2025-01-29 09:50:45 +04:00
Patryk Kwiatek ff0ac6e749 Fix error mapping generation (#4691) 2025-01-29 05:42:10 +00:00
Alexey Palazhchenko bc19b5b451 Fix Dependabot config (#4708) 2025-01-28 14:49:15 +04:00
Chi Fujii dd0ab00897 Skip private issue links in checkcomments by a flag (#4695) 2025-01-28 12:39:12 +04:00
Alexey Palazhchenko 9305598b5f Disable xfail CI configuration for now (#4698) 2025-01-27 10:11:52 +04:00
Alexey Palazhchenko 279cbfd9b3 Tweak documentation 2025-01-23 21:12:41 +04:00
Alexey Palazhchenko a289181298 Fix Docker image names 2025-01-23 20:59:51 +04:00
Alexey Palazhchenko f69b9a10b5 Revert docs build changes 2025-01-23 20:45:11 +04:00
Alexey Palazhchenko 35095d7c0e Skip Docker Hub and Quay.io for now 2025-01-23 20:40:52 +04:00
Alexey Palazhchenko e7173c3d8d Add FerretDB v2 (#4689) 2025-01-23 20:29:50 +04:00
Alexey Palazhchenko 046d266506 Bump Go (#4687) 2025-01-23 12:24:28 +04:00
Alexey Palazhchenko 1966e833ec Reformat with settings from v2 (#4686) 2025-01-23 09:42:49 +04:00
Alexey Palazhchenko f80bbd84da Fix old blog post 2025-01-16 23:52:10 +04:00
Alexander Tobi Fashakin 8f32f6d406 Add blogpost for managed FerretDB on Taikun (#4658) 2025-01-16 23:24:29 +04:00
Alexey Palazhchenko a43fcb805e Update URLs for FerretDB v1 (#4677) 2025-01-16 23:08:00 +04:00
Alexey Palazhchenko c22b535047 Bump deps (#4678) 2025-01-16 18:56:39 +04:00
Alexey Palazhchenko b0f80f3584 Remove old docs and fix linking to the rest (#4654) 2024-12-12 15:01:54 +04:00
Alexander Tobi Fashakin 57000ea92e Add blog post (#4639) 2024-11-29 15:12:57 +00:00
Alexander Tobi Fashakin 0d469d04e7 Add blog post on running MongoDB workloads on pgEdge Postgres (#4620) 2024-11-18 19:23:31 +04:00
Alexey Palazhchenko dc148b6789 Add workaround for Trivy failures (#4631) 2024-11-18 18:44:36 +04:00
Alexander Tobi Fashakin dc1afc414c Add blog post on document databases vs relational databases (#4621)
Closes FerretDB/engineering#227.
2024-11-14 20:39:35 +04:00
Alexey Palazhchenko ee4899866c pngcrush images (#4623) 2024-11-14 18:59:35 +04:00
Alexey Palazhchenko e090e532e6 Update handling of all-in-one Docker images (#4608) 2024-10-09 17:05:25 +04:00
Alexey Palazhchenko 7b0c6916d8 Update definedockertag logic and use it (#4603) 2024-10-09 16:13:48 +04:00
Alexey Palazhchenko 5107906fe3 Add separate CI job for defining Docker tags (#4607) 2024-10-09 13:50:50 +04:00
Alexey Palazhchenko a4c259a974 Port tools from v2 (#4602) 2024-10-09 12:05:36 +04:00
chuangjinglu e68a82bf80 Fix stats for MySQL backend (#4598) 2024-10-02 14:21:51 +00:00
Alexey Palazhchenko 4bfcf2264d Bump Go version (#4599) 2024-10-02 14:39:22 +04:00
8532355778 Add blog post on running FerretDB with CyberTec Postgres on Kubernetes (#4583)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2024-09-30 21:43:10 +04:00
Elena Grahovac 0bafe7b4a5 Add blog post on OTel context propagation (#4512) 2024-09-19 14:49:01 +04:00
Elena GrahovacandAlexey Palazhchenko 91500bddd7 Update Mermaid diagrams (#4582)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-09-18 16:42:59 +04:00
Alexander Tobi Fashakin d1f8d4a240 Add blog post on importance of open source software (#4580) 2024-09-16 12:49:02 +04:00
Alexander Tobi Fashakin 60a0d6a982 Add blog post on deploying managed FerretDB on Elestio (#4568) 2024-09-06 12:08:41 +04:00
Alexey Palazhchenko c21661df96 Bump deps (#4564) 2024-08-29 22:00:27 +04:00
Timur Tukaev 55058fba95 Add Cozystack to README (#4563) 2024-08-29 21:46:10 +04:00
Alexander Tobi Fashakin 2207312073 Add blog post for v1.24 (#4562) 2024-08-28 21:57:50 +04:00
Alexey Palazhchenko 7d9c7b9922 Prepare v1.24.0 release (#4560) 2024-08-28 18:41:28 +04:00
4702d9d4ed Implement our own changelog generator (#4219)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
2024-08-28 17:51:58 +04:00
Alexander Tobi Fashakin 8ab955813c Add docs for new authentication (#4557)
Closes #3008.
2024-08-28 17:09:50 +04:00
Alexey Palazhchenko 788f3b9b82 Pass GITHUB_TOKEN to tools tests (#4558) 2024-08-28 16:47:37 +04:00
Chi Fujii 50345397ce Fix saslContinue completing handshake too early (#4552) 2024-08-27 12:11:46 +04:00
Chi Fujii a81ac88967 Support saslStart and saslContinue OpQuery (#4550) 2024-08-26 18:30:20 +04:00
Alexey Palazhchenko f76a8f8760 Remove wireconn tests for now (#4548) 2024-08-26 13:32:41 +00:00
Chi Fujii 06881d7cf9 Fix duplicate field on hello op query (#4549)
Closes #4065.
2024-08-26 10:52:34 +02:00
Kaiwalya Koparkar 6c5aec31dd Added Elestio as one-click deploy option (#4546)
Closes #4545.
2024-08-23 19:52:01 +04:00
Hajo Möller b446a6530f Fix Docker's HEALTHCHECK in production image (#4547) 2024-08-23 11:41:09 +04:00
Alexey Palazhchenko c1b96d56d9 Bump Docusaurus (#4544) 2024-08-21 09:54:32 +04:00
Evengard 95b184f56c Ignore apiVersion field from StableAPI (#4067)
Closes #3121.
2024-08-19 11:20:26 +04:00
Chi Fujii ba46217c0e Ignore Stable API fields (#4537)
Closes #3121.
2024-08-16 12:27:25 +00:00
Alexey Palazhchenko 8429581b88 Fix critical typo in telemetry documentation (#4536) 2024-08-15 17:03:45 +00:00
Alexey Palazhchenko 226f50f39a Fix Mergifty configuration 2024-08-15 17:41:42 +04:00
Alexey Palazhchenko 7ce5098b03 Minor cleanup (#4535) 2024-08-14 20:21:12 +04:00
Alexander Tobi Fashakin 0fcbc0ec73 Fix broken links (#4525) 2024-08-13 07:10:22 +00:00
Alexey Palazhchenko c464231115 Update changelog 2024-08-13 10:20:28 +04:00
Alexey Palazhchenko d007d62d39 Fix building with go build -trimpath (#4526) 2024-08-12 19:03:22 +04:00
Chi Fujii 6649ce8f63 Use wire and wirebson packages (#4490) 2024-08-09 11:32:22 +00:00
Alexey Palazhchenko 50630f9e21 Use Go 1.22.6 (#4523) 2024-08-09 15:22:05 +04:00
Alexander Tobi Fashakin 79b1f9606b Update missing image (#4522) 2024-08-09 15:31:51 +09:00
Chi Fujii 6fe9484cea Remove fuzzing from sjson (#4520)
Closes FerretDB/engineering#179.
2024-08-08 15:34:35 +00:00
Chi Fujii 4bf4a7fd0a Close connection upon NaN value (#4521)
Closes FerretDB/engineering#179.
2024-08-08 15:24:17 +00:00
Alexey Palazhchenko a1d8820d34 Add Taskfile target to pngcrush all new images (#4519) 2024-08-07 15:28:15 +04:00
Alexander Tobi Fashakin a8d73db001 Add blog post on building a RESTful API with Deno (#4517) 2024-08-07 13:29:22 +04:00
Alexey Palazhchenko a3ad409806 Fix CI for documentation preview (#4518) 2024-08-07 12:19:27 +04:00
Chi Fujii 1d27990d59 Convert BSON values of wirebson to types (#4501)
Closes FerretDB/engineering#179.
2024-08-06 18:33:41 +00:00
Elena Grahovac e2e16afe62 Prototype OTel context propagation (#4483)
Closes #4456.
2024-08-06 19:48:33 +04:00
Alexey Palazhchenko d9e77a86bf Document logging changes (#4510) 2024-08-02 14:54:59 +00:00
Chi Fujii efe2130968 Use wireclient package (#4502)
Closes FerretDB/engineering#182.
2024-08-01 21:33:13 +02:00
Chi Fujii 9a45a2b983 Fix log message (#4503) 2024-08-01 07:24:45 +00:00
Alexander Tobi Fashakin 4256d684a8 Enable zoom on images (#4508) 2024-07-31 14:41:55 +00:00
Patryk Kwiatek a05cafefb6 Fix checkdocs Github cache on CI (#4509) 2024-07-31 15:41:04 +04:00
Wojciech KropidlowskiandPatryk Kwiatek 9011dbeb16 Add open issues check in checkdocs (#4258)
Closes #4171.

Co-authored-by: Patryk Kwiatek <patryk.kwiatek@ferretdb.io>
2024-07-31 14:57:56 +04:00
Anton Zhiyanov 22c0906b6a Fix Terser plugin build error (#4506)
Closes #4505.
2024-07-31 09:41:47 +01:00
Chi Fujii a4f567047d Update listDatabases integration test filter input (#4499)
Closes FerretDB/engineering#179.
2024-07-30 14:25:47 +04:00
Alexander Tobi Fashakin bb581a3fff Add blog post for FerretDB v1.23 release (#4498) 2024-07-26 18:05:59 +04:00
Alexey Palazhchenko 219c8035f3 Remove zap remnants (#4497)
Closes #4496.
2024-07-26 03:37:44 +00:00
Alexey Palazhchenko 44b6754e60 Port small things from v2 (#4495) 2024-07-26 06:48:19 +04:00
Alexey Palazhchenko e4e65b712f Bump deps (#4496) 2024-07-25 22:48:08 +02:00
yonarw e763cc8689 Alignment and Bugfixes for SAP HANA backend (#4491) 2024-07-25 16:12:10 +04:00
Alexey Palazhchenko 291ae911a9 Prepare v1.23.0 release (#4492) 2024-07-25 09:17:19 +04:00
Chi Fujii 400b82da64 Cleanup logging (#4489) 2024-07-24 13:23:12 +04:00
Chi Fujii 858324e068 Use slog in envtool (#4480)
Closes #4013.
2024-07-24 07:54:41 +00:00
f859bb1ca6 Provide systemd unit file in .deb and .rpm packages (#4478)
Closes #2287.

Co-authored-by: Alexander Tobi Fashakin <fashakinalexander@gmail.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-07-24 07:04:34 +00:00
Alexey Palazhchenko b20325873d Refactor and document /debug/archive handler (#4485)
Closes #3584.
2024-07-24 10:48:40 +04:00
Alexey Palazhchenko ba6510a9af Drop old dependency (#4486) 2024-07-24 00:24:45 +00:00
Chi Fujii 8825076e88 Use slog in handler (#4470)
Closes #4013.
2024-07-23 17:32:33 +00:00
Alexey Palazhchenko 6d62d9a8dd Enable and document OTLP configuration (#4484)
Closes #3244.
2024-07-23 20:32:42 +04:00
979840162f Implement /debug/archive handler (#3895)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Henrique Vicente <henriquevicente@gmail.com>
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2024-07-23 14:58:04 +00:00
Chi Fujii 3f1e013f58 Use slog in fsql (#4464)
Closes #4013.
2024-07-23 08:04:22 +00:00
Chi Fujii ca5345b6de Use slog in main.go and embedded ferretdb package (#4462)
Closes #4013.
2024-07-23 11:21:33 +04:00
Chi Fujii 6312dab972 Use slog in integration tests (#4481)
Closes #4013.
2024-07-22 13:10:42 +02:00
Chi Fujii a4b7e704af Implement slog.LogValuer interface for types package (#4479)
Closes #4013.
2024-07-22 07:40:56 +00:00
Chi Fujii ddd5169ea0 Use slog in debug package (#4473)
Closes #4013.
2024-07-22 07:07:21 +00:00
Alexey Palazhchenko 1a28bb67af Add OTel spans (#4477) 2024-07-19 10:33:35 +00:00
Chi Fujii 150f1d3deb Use slog in otel (#4474)
Closes #4013.
2024-07-19 05:30:31 +00:00
Chi Fujii b971577bb3 Use slog in oplog and cursor packages (#4471)
Closes #4013.
2024-07-19 05:19:30 +00:00
Chi Fujii a2c4a0f9d7 Use slog in mysql and hana backends (#4463)
Closes #4013.
2024-07-19 05:04:38 +00:00
Alexey Palazhchenko 035827afb7 Remove FuncCall (#4476) 2024-07-18 17:53:06 +04:00
Chi Fujii 8fdcfd98e2 Use slog in sqlite backend (#4467)
Closes #4013.
2024-07-18 01:11:05 +00:00
Chi Fujii 2e60284c42 Use slog in postgresql backend (#4466)
Closes #4013.
2024-07-17 23:45:19 +00:00
Chi Fujii d7cd1b499f Use slog in clientconn package (#4457)
Closes #4013.
2024-07-17 20:36:58 +04:00
Alexey Palazhchenko 42e52c4fc0 Clarify the meaning of the passed context (#4455) 2024-07-15 16:44:25 +04:00
Chi Fujii 65afb924e7 Use single definition of order for checkswitch (#4452)
Closes #4082.
2024-07-13 04:17:48 +00:00
Chi Fujii ed8f5f1929 Test authSource in low level driver (#4449) 2024-07-12 11:16:06 +00:00
Alexey Palazhchenko 40e88a1ae3 Port pgx logger (#4450) 2024-07-12 03:32:28 +00:00
Alexey Palazhchenko 12a7b60ec2 Increase setup timeout in tests (#4454) 2024-07-12 07:21:53 +04:00
Chi Fujii 0bd26a5d70 Add support for named slog loggers (#4435)
Closes #4431.
2024-07-11 11:44:19 +00:00
Alexey Palazhchenko 484e763705 Update linters configuration (#4451) 2024-07-11 10:51:12 +04:00
Alexey Palazhchenko 85590b9758 Document logging (#4436) 2024-07-10 13:57:50 +00:00
Patryk Kwiatek 8b4ec3df46 Readiness probe cleanup (#4447) 2024-07-10 17:45:11 +04:00
Patryk Kwiatek 204ec7f237 Extract ping cli subcommand logic (#4426) 2024-07-10 11:48:54 +02:00
Alexey Palazhchenko 9cf961ec75 Ignore $readPreferences for insert (#4440) 2024-07-10 06:24:54 +00:00
Alexey Palazhchenko b8d1f607a5 Bump deps (#4446) 2024-07-10 10:03:21 +04:00
Alexey Palazhchenko f89bbe64d0 Crush .png images (#4441) 2024-07-09 22:28:08 +04:00
Alexander Tobi Fashakin 82c244561c Add blogpost on "monitoring FerretDB performance using Coroot" (#4279) 2024-07-09 22:23:11 +04:00
Alexey Palazhchenko ef7f275975 Remove broken links (#4433) 2024-07-09 17:48:37 +04:00
Chi Fujii a62cbf9c69 Cleanup checkSwitch (#4434)
Closes #4082.
2024-07-09 17:10:33 +04:00
Alexey PalazhchenkoandChi Fujii 24b78531e9 Add stub for named slog logger helper (#4432)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2024-07-09 07:43:37 +04:00
PaveenV 2aa742c694 Implement checkswitch to handle regular switches (#4381)
Closes #4082.
2024-07-09 07:15:37 +04:00
Chi Fujii 8212d866ac Return connectionStatus command db field (#4419) 2024-07-09 00:55:21 +00:00
Chi Fujii 5a93ea5c5b Test authSource (#4407) 2024-07-08 20:41:05 +00:00
Chi Fujii be64b345d4 Include OpReply error handling (#4420) 2024-07-08 20:30:03 +00:00
Alexey Palazhchenko 49b2dd19ba Stop Otel exporter gracefully in envtool (#4425) 2024-07-05 17:23:03 +09:00
Alexey Palazhchenko 8758722532 Document Kubernetes probes (#4424) 2024-07-05 12:03:11 +04:00
Elena Grahovac 1a5e5fe022 Disable OTEL in tests where collection name might have non-UTF-8 symbols (#4423)
Closes #4345.
2024-07-05 09:42:50 +09:00
Patryk Kwiatek 507f7d6ce7 Implement Kubernetes startup probe (#4399) 2024-07-03 07:37:45 +00:00
Alexey Palazhchenko fcc5c93b63 Bump Go and deps (#4416) 2024-07-03 11:25:15 +04:00
Alexey Palazhchenko a28d03d435 Extract types and zap code into separate files (#4408) 2024-07-03 00:46:22 +00:00
Patryk Kwiatek 7845441273 Implement Docker healthcheck (#4364) 2024-07-02 12:44:36 +00:00
Elena Grahovac 79834b0893 Setup OpenTelemetry exporter for FerretDB (#4380)
Closes #4345.
2024-07-02 07:49:55 +00:00
Alexey Palazhchenko bcb3ee11a8 Add tests for ctxutil.Sigterm (#4406) 2024-07-02 05:09:16 +00:00
Alexey Palazhchenko de1d61ccbd Refactor runnables (#4404)
Closes #4403.
2024-07-01 19:29:52 +04:00
Chi Fujii b757daa745 Check database name for authentication (#4402)
Closes #4392.
2024-07-01 11:13:17 +02:00
Alexey Palazhchenko ab00498219 Update comments about interfaces (#4405) 2024-07-01 09:33:24 +04:00
Alexander Tobi Fashakin fa0edadafd Add blog post on running FerretDB and CloudNativePG on Kubernetes (#4377)
Closes FerretDB/engineering#177.
2024-06-28 15:29:30 +04:00
Alexander Tobi Fashakin ee7a8b186f Add release blog post for FerretDB v.1.22.0 (#4401) 2024-06-27 18:47:35 +04:00
Patryk Kwiatek 300fbc35ef Add Kubernetes probes stubs (#4378) 2024-06-27 04:30:52 +00:00
Alexey Palazhchenko e1258e37a8 Replace deprecated syntax in Dockerfiles (#4397) 2024-06-26 15:55:44 +00:00
Alexey Palazhchenko de509c50cb Prepare v1.22.0 release 2024-06-26 16:12:57 +04:00
Chi FujiiandAlexey Palazhchenko 95d81dec9b Fix saslContinue prematurely returning done (#4391)
Closes #4385.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-06-26 15:02:03 +04:00
Chi Fujii 7e419c5704 Include SpeculativeAuthenticate changes (#4390)
Closes #4385.
2024-06-26 13:10:00 +04:00
Alexey Palazhchenko 748862f4b1 Port password changes (#4388) 2024-06-25 18:46:50 +04:00
Alexey Palazhchenko 7c92996c46 Port wire package changes (#4386) 2024-06-25 13:56:54 +04:00
Alexey Palazhchenko 6dc69f6348 Fix typo in migration guide (#4384) 2024-06-25 09:00:07 +04:00
Alexey Palazhchenko 2caffcebf0 Revert codecov version fix (#4383) 2024-06-24 20:23:58 +04:00
Pirate Praveen ArimbrathodiyilandAlexey Palazhchenko 5c15e52071 Add restart: on-failure to all containers (#4309)
Closes #4296.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-06-24 14:42:41 +04:00
Chi Fujii 9c2a943514 Remove ambiguous comment (#4382) 2024-06-24 12:25:27 +04:00
Chi Fujii f87a2c2946 Handle supported mechanisms in hello and getParameters commands (#4368)
Closes #4365.
2024-06-22 13:46:05 +04:00
Alexey Palazhchenko 0dfd9c567f Add TestMain to each integration test package (#4366)
Closes #4367.
2024-06-21 15:36:21 +02:00
Alexey Palazhchenko 42b3dbe7f0 Fix codecov CLI version (#4379) 2024-06-21 08:55:22 +04:00
Alexey Palazhchenko 049e962b79 Update codecov token 2024-06-21 07:58:12 +04:00
Chi Fujii fa750ce88e Remove PLAIN mechanism from new authentication (#4373)
Closes #4365.
2024-06-20 19:56:29 +04:00
Alexey Palazhchenko b3a021cf94 Bump deps (#4375) 2024-06-20 17:23:14 +04:00
Patryk Kwiatek 6e3f7b2085 Implement FerretDB health check (#4355) 2024-06-19 12:35:46 +04:00
Alexander Tobi Fashakin 519317b387 Add blog post on Adding MongoDB compatibility to Aiven for PostgreSQL (#4349) 2024-06-17 17:36:30 +04:00
Alexey Palazhchenko 453e7312a5 Fix task docker-local command (#4363) 2024-06-12 16:04:34 +04:00
Alexey Palazhchenkoandb1ron 798e6670d9 Allow database and user setup with CLI flags (#4310)
Closes #4243.

Co-authored-by: b1ron <goldingbyron@gmail.com>
2024-06-07 09:13:55 +09:00
(老外) Dougds c0bf829e50 Update example in documentation (#4305) 2024-06-03 19:01:17 +04:00
Chi Fujii e8d125b761 Populate env-data for running FerretDB (#4319) 2024-05-31 09:29:17 +04:00
Alexey Palazhchenkoandb1ron 5656ccc38b Extract user creation and move to backends package (#4311)
Closes #4243.

Co-authored-by: b1ron <goldingbyron@gmail.com>
2024-05-30 10:00:56 +09:00
Alexey Palazhchenko ba1c914938 Port some changes from v2 (#4307) 2024-05-29 13:40:49 +02:00
Alexander Tobi Fashakin 23d1e94fdf Add blog post about deploying FerretDB on Taikun CloudWorks (#4297) 2024-05-28 12:14:04 +04:00
Alexey Palazhchenko 5ff9f6d6ed Bump deps (#4302) 2024-05-28 10:16:16 +09:00
Chi Fujii 0811dd79a4 Fix env-data (#4289) 2024-05-24 14:46:17 +00:00
Chi Fujii 76f766402a Make maximum document size configurable (#4294)
Closes #4233.
2024-05-23 15:44:17 +09:00
Patryk Kwiatek def90a13a3 Fix embedded package panic (#4278) 2024-05-16 23:37:32 +02:00
Wazir Ahmed 266567196b Sort new fields in lexicographic order during update (#4223)
Closes #2038.
2024-05-15 12:18:01 +04:00
Alexey Palazhchenko fb4f384a2b Update linters configuration (#4277) 2024-05-08 13:28:17 +04:00
Alexey Palazhchenko dcdfe47ec6 Bump Go to 1.22.3 and deps (#4272) 2024-05-08 12:14:00 +04:00
Alexey Palazhchenko 1805131538 Use more shards on CI (#4266) 2024-05-07 21:36:24 +04:00
Alexey Palazhchenko 3903b99803 Move tools cache directory (#4265) 2024-05-07 14:03:29 +02:00
Alexey Palazhchenko f95b5d2478 Port BSON changes (#4263) 2024-05-01 16:14:52 +04:00
Alexey Palazhchenko e63d35760f Remove old BSON implementation (#4262) 2024-05-01 15:31:43 +04:00
Alexander Tobi Fashakin 7912d98f3e Add KubeDB blogpost on deploying FerretDB on Kubernetes (#4253) 2024-04-30 11:27:08 +04:00
Alexey Palazhchenko a84136f4bc Improve error message for state.json (#4251)
Closes #4234.
2024-04-28 14:24:04 +00:00
dockercui 89f22e47b4 Fix some comments (#4257)
Signed-off-by: dockercui <dockercui@aliyun.com>
2024-04-25 08:18:19 +04:00
b1ron 2da27aa8e2 Add dummy setup flags (#4247) 2024-04-19 11:29:34 +00:00
Alexey Palazhchenko 60220be7c8 Fix broken code blocks in documentation (#4239) 2024-04-17 09:18:31 +04:00
deferdeter a5155f53a7 Fix some comments (#4237)
Signed-off-by: deferdeter <deferdeter@outlook.com>
2024-04-16 18:57:56 +04:00
Alexey Palazhchenko db9988eb41 Bump deps (#4238) 2024-04-16 18:13:07 +04:00
Alexey Palazhchenko a92e1fa07c Add toolchain to make CodeQL happy 2024-04-15 15:15:16 +04:00
Alexey Palazhchenko 6cda9ad89a Fix website exclusion 2024-04-06 14:02:40 +04:00
Alexey Palazhchenko e98188452d Use Go 1.22.2 2024-04-06 13:47:41 +04:00
Alexey Palazhchenko fd75e502b2 Move Open Office Hours 2024-04-01 22:06:43 +04:00
Alexey Palazhchenko c299c531fd Fix TCP port for debug handler in Docker images (#4218) 2024-03-29 11:47:18 +04:00
Elena Grahovac 8b1adb023d Use a non-privileged user to run FerretDB (production docker image) (#4211)
Closes #3992.
2024-03-26 12:02:21 +01:00
Alexey Palazhchenko 407fbb8dfd Remove old TODOs 2024-03-22 20:59:21 +04:00
Patryk Kwiatek 445c9b3c0b Make our own low-level driver for testing (#4193)
Closes #4146.
2024-03-22 20:43:06 +04:00
Alexander Tobi Fashakin 87e70825db Add blog post for Openziti (#4194) 2024-03-22 14:13:00 +00:00
Alexey Palazhchenko e4052d249c Bump deps (#4201) 2024-03-22 09:30:17 +09:00
Alexander Tobi FashakinandAlexey Palazhchenko 5421602a17 Add blog post for FerretDB v1.21 release (#4202)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-03-21 22:59:38 +04:00
Alexey Palazhchenko a3fb274d25 Prepare v1.21.0 release (#4195) 2024-03-20 10:51:32 +04:00
Wojciech Kropidlowski 60fcd0933d Make batch sizes configurable (#4149)
Closes #3708.
2024-03-19 18:37:02 +04:00
Wazir Ahmed aea56ea1e0 Improve capped collection cleanup (#4118)
Signed-off-by: Wazir Ahmed <wazirahmedf@gmail.com>
2024-03-19 13:10:26 +00:00
Alexey Palazhchenko 419f9a0576 Bump pgx (#4190) 2024-03-15 10:12:01 +04:00
Chi Fujii 1bfc54997a Cleanup integration test for setting up user (#4160)
Closes #4100.
2024-03-14 08:19:44 +00:00
Alexey Palazhchenko 58ff7b0fa3 Bump protobuf dependency to make CI happy (#4187) 2024-03-14 11:59:07 +04:00
Alexey Palazhchenko 346fe7a8fc Move Docker build files (#4180) 2024-03-13 21:41:45 +04:00
Alexey Palazhchenko 64bd8caa74 Rename bson2 to bson (#4179) 2024-03-13 17:38:47 +04:00
Alexey Palazhchenko 365a3dd54f Move old bson package (#4177) 2024-03-13 12:08:15 +00:00
Chi Fujii 8483f0439e Fix speculativeAuthenticate panic on empty database (#4178)
Closes #4100.
2024-03-13 11:31:13 +00:00
Alexey Palazhchenko ea9c5bda8f Remove fjson package (#4176)
Closes #4157.
2024-03-13 12:26:38 +04:00
Alexey Palazhchenko 34a6fa5988 Do not use fjson (#4175)
Closes #4157.
2024-03-13 11:59:46 +04:00
Alexey Palazhchenko c89b88e019 Remove some closed issues from documentation (#4172) 2024-03-13 09:55:17 +04:00
Alexey Palazhchenko 9993f430f1 Do not use the flow style in the diff output (#4170)
Closes #4157.
2024-03-13 09:03:55 +04:00
Chi Fujii 75f5a741b2 Support localhost exception (#4156)
Closes #4100.
2024-03-12 15:28:53 +00:00
Alexey Palazhchenko eb93ab1468 Add Tembo to README (#4168) 2024-03-12 19:08:50 +04:00
Alexey Palazhchenko a8fc6423ff Fix logging of deeply nested documents (#4167)
Closes #3759.
2024-03-12 17:11:21 +04:00
Alexey Palazhchenko 4281187e85 Improve bson2 and wire logging (#4148)
Closes #3759.
2024-03-12 11:10:50 +04:00
Chi Fujii f460194f7d Fix PLAIN mechanism authentication incorrectly working (#4163)
Closes #1877.
2024-03-11 19:14:07 +00:00
Salman Shah e98d5361d9 Add linter to check truncate tag in blog posts (#4139)
Closes #4048.
2024-03-08 00:03:21 +00:00
Henrique Vicente 892780af24 Advertise SCRAM / SASL support in addition to PLAIN (#4113) 2024-03-07 09:18:58 +04:00
Alexey Palazhchenko 5a5ca29f20 Use Go 1.22.1 (#4155) 2024-03-06 14:19:39 +04:00
Samuel Adetunji b2a48398ed Fix MySQL collection stats (#4145)
Closes #3413.
2024-03-06 09:21:12 +00:00
Chi Fujii 4a677344a1 Cleanup TODO for speculative authenticate (#4143)
https://github.com/FerretDB/FerretDB/issues/4141
2024-03-06 09:04:01 +00:00
Henrique Vicente 25e6b46f9d Fix saslContinue crashing due to not found authentication conversation (#4129) 2024-03-05 20:27:45 +01:00
Samuel Adetunji dc757b9d59 Add MySQL backend (#4137)
Closes #3413.
2024-03-04 14:10:57 +00:00
Chi Fujii 1615d26d6a Support speculative authenticate (#4111)
Closes #3777.
2024-03-04 09:17:09 +00:00
Alexey Palazhchenko ef2798eb43 Improve OP_MSG validity checks (#4135) 2024-02-29 15:28:17 +05:30
Alexey Palazhchenko a8cfbb5150 Replace bson with bson2 in wire (#4110) 2024-02-28 17:56:59 +05:30
Chi Fujii 910c351704 Enforce new authentication (#4075)
Closes #1877.
2024-02-28 08:06:17 +00:00
Chi Fujii ad053476aa Skip stuck tailable cursor test (#4131) 2024-02-28 13:21:52 +05:30
Alexey Palazhchenko c31fa71165 Bump tests timeout 2024-02-28 11:06:38 +05:30
Alexey Palazhchenko 5eb9bdedc8 Use correct salt length (#4126) 2024-02-27 10:23:04 +00:00
Alexander Tobi Fashakin 35350b447b Add Pulumi blog post (#4102) 2024-02-27 07:18:38 +00:00
Farit Shamardanov 2c26f285c6 Add ignoring maxTimeMS argument in count, insert, update, delete (#4121)
Closes #4114.
2024-02-27 06:10:02 +00:00
Samuel Adetunji 91ff0956f8 Add MySQL backend collection (#4083)
Closes #3413.
2024-02-27 11:25:22 +05:30
Henrique Vicente 81e0be85e7 Fix envtool run test -run and -skip flags (#4101) 2024-02-26 11:04:57 +01:00
Alexander Tobi Fashakin 0aad83ae68 Update correct image link (#4116) 2024-02-23 13:45:48 +04:00
Artyom Fadeyevandnoisersup b6fd73b429 Make logger configurable in the embedded ferretdb package (#4028)
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2024-02-22 14:42:58 +01:00
Alexey Palazhchenko 033dfef045 Use bson2 package for wire queries and replies (#4108) 2024-02-22 10:23:35 +09:00
Alexey Palazhchenko 9de2931375 Refactor bson2 package (#4105) 2024-02-21 20:18:13 +04:00
Alexander Tobi Fashakin 8d9b234cae Add Tembo QA blog post (#4081) 2024-02-21 20:14:41 +04:00
Alexander Tobi Fashakin 6893544193 Fix Codapi file error (#4077)
Closes #4058.
2024-02-21 19:57:54 +04:00
Alexey Palazhchenko cd6a993542 Revert SQLite version bump (#4106) 2024-02-21 09:39:55 +01:00
Wazir Ahmed 4956f29fa8 Reorganize and fix update/upsert logic (#4069)
Closes #3040.
Closes #3017.
Closes #3856.
Closes #2630.
Closes #3843.
2024-02-21 01:59:56 +00:00
Elena Grahovac a1dc6c7aef Add more fields to requests and responses (#4096)
Closes #153.
2024-02-20 07:36:22 +00:00
Alexey Palazhchenko eb8f0b20ee Disable golangci-lint's whole-file options 2024-02-20 07:44:33 +04:00
Alexey Palazhchenko 74d6428912 Use Go 1.22 and bump deps (#4094) 2024-02-19 20:56:37 +04:00
Henrique Vicente 47819e24f4 Add SCRAM-SHA-1 authentication support (#4078) 2024-02-19 14:21:17 +00:00
Alexey Palazhchenko 2bf37ef9d6 Revert Docker image changes
Refs #3992.
2024-02-19 18:03:48 +04:00
Alexey Palazhchenko be98b9f9c7 Prepare v1.20.0 release 2024-02-19 15:58:51 +04:00
Alexey Palazhchenko 9547b1ee5d Update telemetry host (#4085) 2024-02-19 11:26:29 +04:00
Henrique Vicente a86b0c6d6a Remove SCRAM-SHA-256 implementation TODO links (#4086) 2024-02-16 13:26:31 +01:00
Henrique Vicenteandb1ron 92378e70f6 Add SCRAM-SHA-256 authentication support (#3989)
Co-authored-by: b1ron <80292536+b1ron@users.noreply.github.com>
2024-02-15 20:23:48 +00:00
Alexey Palazhchenko 5c76609b65 Add helper for decoding document sequences (#4080) 2024-02-15 11:48:02 +01:00
Alexey Palazhchenko e1eaaad891 Implement bson2.RawDocument checking (#4076) 2024-02-14 17:31:59 +01:00
Samuel Adetunji e54842a158 Prepare query statements for MySQL (#4064)
Closes #3413.
2024-02-14 09:50:26 +09:00
Alexander Tobi Fashakin 5f69d919a1 Add blogpost on FerretDB stack on Tembo (#4037)
Closes FerretDB/engineering#152.
2024-02-13 22:20:00 +04:00
Ahmet Hakan BeşelandAlexey Palazhchenko b4b9813730 Use rootless scratch containers for production Docker images (#4004)
Closes #3992.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-02-12 17:10:48 +00:00
Henrique Vicente b00e27cd52 Add utility for hashing SCRAM-SHA-256 password (#4031) 2024-02-12 16:31:55 +00:00
Alexey Palazhchenko 19dc041212 Bump Go to 1.21.7 (#4059) 2024-02-12 15:26:04 +00:00
Alexander Tobi Fashakin 3748cea863 Update Codapi (#4039)
Closes #4058.
2024-02-12 19:07:27 +04:00
Alexander Tobi Fashakin d5e8bdbdb5 Add blog post on Disaster Recovery for FerretDB with Elotl Nova (#4038)
Closes FerretDB/engineering#151.
2024-02-12 18:57:52 +04:00
Patryk Kwiatek e92ded7b8b Add experimental pushdown for dot notation (#4049) 2024-02-12 14:51:22 +00:00
Alexey Palazhchenko 282c8e16c4 Minor cleanups (#4046) 2024-02-08 10:09:09 +04:00
Samuel Adetunji fed2380477 Implement database.Stats for MySQL backend (#4034)
Closes #3413.
2024-02-08 10:43:42 +09:00
Alexander Tobi Fashakin 8213741ae1 Truncate release blog post (#4047) 2024-02-07 16:45:01 +04:00
Alexey Palazhchenko 56f52bc599 Fix for linter 2024-02-07 10:49:52 +04:00
Alexey Palazhchenko f5f46cd235 Use Ubicloud for CI runners (#4027) 2024-02-07 08:57:08 +04:00
Artyom FadeyevandPatryk Kwiatek 5536dace20 Display envtool run test progress with run and/or skip flags (#3999)
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2024-02-05 01:12:31 +00:00
Alexey Palazhchenko fa7e262950 Bump deps and speed-up checkcomments (#4030) 2024-02-01 14:14:29 +04:00
Alexey Palazhchenko 10190789bf Expose new authentication enabling flag (#4029) 2024-02-01 09:02:16 +04:00
Alexander Tobi Fashakin 2f83c2ef25 Add release blog post for v1.19.0 (#4020) 2024-01-31 21:31:24 +04:00
Alexander Tobi Fashakin 775e135b71 Add blog post on Ubicloud managed postgres (#4010) 2024-01-31 12:21:49 +00:00
Teej4y de8e38dc14 Setup MySQL backend (#4003)
Closes #3413.
2024-01-31 17:12:49 +09:00
Alexey Palazhchenko 0d3eb76b38 Add bson2 helpers for conversions and logging (#4019) 2024-01-30 00:48:46 +00:00
Alexey Palazhchenko 83024e9731 Add TODO comments for logging (#4015) 2024-01-29 16:36:50 +00:00
Henrique Vicente e685304062 Add tests for new SCRAM-SHA-256 authentication support (#4012) 2024-01-29 13:24:43 +00:00
Alexey Palazhchenko 0e7b048346 Prepare v1.19.0 release 2024-01-29 14:43:13 +04:00
Alexey Palazhchenko 7561893d8b Prepare release (#4016) 2024-01-29 14:40:14 +04:00
Alexey Palazhchenko a7d770d845 Expose raw documents in the wire package (#4011) 2024-01-25 16:05:22 +01:00
Alexey Palazhchenko eab159af39 Add deep bson2 decoding (#3997)
Closes #3759.
2024-01-24 07:58:35 +00:00
Alexey Palazhchenko 2729421fca Hide *types.Document from wire struct fields (#4000) 2024-01-23 18:05:09 +04:00
b1ron 0e2d108076 Ignore $readPreference field (#3996) 2024-01-23 17:22:44 +04:00
Alexey Palazhchenko 5201cabbc7 Prepare CI to having multiple main branches (#4002) 2024-01-23 16:01:52 +04:00
Wojciech Kropidlowski d282fb1366 Fix validation process for creating duplicate _id index (#3990) 2024-01-23 09:05:08 +00:00
Artyom Fadeyev 10815ae35f Support creating an index on nested fields for SQLite (#3972)
Closes #3506.
2024-01-23 10:54:33 +04:00
Teej4y 32ee1950ff Add tests for MySQL registry (#3993)
Closes #3413.
2024-01-22 12:00:21 +00:00
Sachin Puranik dc0db5db1a Use ListCollection with a filter (#3995)
Closes #3601.
2024-01-22 11:58:26 +01:00
Alexey Palazhchenko ea03c1386f Update contributing documentation (#3994) 2024-01-22 10:58:35 +01:00
Alexey Palazhchenko 2b45f90046 Improve bson2 fuzzing (#3988)
Closes #3759.
2024-01-19 13:00:17 +04:00
Henrique Vicente 3eddac3054 tests: on createUser and dropUser use usersInfo to verify database state (#3980) 2024-01-17 20:53:23 +00:00
Alexey Palazhchenko a822bfc1d1 Refactor bson2 encoding/decoding (#3987) 2024-01-17 19:10:00 +04:00
Alexey Palazhchenko 562d76711a Add new BSON decoding package (#3905)
Closes #3759.
2024-01-17 10:02:27 +00:00
Teej4y 21ebe3aba8 Add MySQL backend Registry (#3967) 2024-01-16 11:40:26 +00:00
Alexey Palazhchenko c9798c97a2 Small assorted tweaks (#3979) 2024-01-16 15:26:42 +04:00
Henrique Vicente 857df1b943 Implement updateUser command (#3973)
Closes #1496.
2024-01-16 07:55:31 +00:00
Alexander Tobi Fashakin cb3d689fec Fix search queries (#3976)
Closes #2051.
2024-01-15 19:42:33 +04:00
Alexey Palazhchenko 3eb9ee6f79 Small fixes and tweaks (#3971) 2024-01-12 19:11:01 +04:00
Alexey Palazhchenko 0804f2b8a4 Shard extra CI configurations (#3946) 2024-01-12 18:20:56 +04:00
Wazir Ahmed 2797a9c6ba Fix upsert with $setOnInsert operator (#3931) 2024-01-12 15:44:16 +04:00
Alexey Palazhchenko 8d37e8cdc9 Use PBKDF2 for storing PLAIN passwords (#3970)
Closes #3938.
2024-01-12 15:19:50 +04:00
69db2676da Store passwords for PLAIN authentication mechanism (#3928)
Closes #3785.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2024-01-12 13:26:28 +04:00
Patryk Kwiatek 1e736b9d4a Run more maxTimeMS tests (#3940) 2024-01-12 11:22:56 +04:00
Patryk KwiatekandAlexey Palazhchenko 44500e7610 Fix maxTimeMS for getMore command (#3919)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2024-01-11 09:09:51 +00:00
Alexey Palazhchenko eca668dd85 Speed-up Docker builds (#3965)
Closes #2170.
2024-01-10 15:27:11 +04:00
Alexey Palazhchenko 53b7e4df22 Fix Taskfile.yml indentation (#3964) 2024-01-10 13:03:37 +04:00
Alexander Tobi Fashakin 8edda5518e Add documentation for oplog (#3960) 2024-01-09 17:14:27 +04:00
Alexey Palazhchenko d05bc2c52d Bump deps (#3955) 2024-01-09 10:47:04 +04:00
Alexey Palazhchenko 220edc435d Tweak blog post a bit (#3951) 2024-01-09 10:46:23 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 3c038d272e Add blog post for FerretDB release v1.18.0 (#3950)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
2024-01-08 22:49:08 +04:00
Alexey Palazhchenko e3f6c3a624 Prepare v1.18.0 release (#3947) 2024-01-08 17:48:00 +04:00
Teej4y 0b08b30d65 Allow Native Passwords for testcase (#3941)
Closes #3413.
2024-01-08 12:29:31 +04:00
Henrique Vicente 38fb5e4ffa Use usersInfo in dropAllUsersFromDatabase tests (#3932)
Closes #1492.
2024-01-05 14:19:53 +00:00
Patryk Kwiatek c42b731f70 Fix awaitData cursor panic (#3935) 2024-01-05 13:43:48 +01:00
Elena Grahovac 15c0d0c301 Add the necessary for replica set fields to ismaster response (#3925)
Closes #3861.
Closes #3556.
2024-01-05 12:06:40 +00:00
Teej4y 970c017825 Disallow native passwords for MySQL (#3937)
Closes #3413.
2024-01-05 12:12:57 +01:00
74d7272581 Implement usersInfo command (#3897)
Closes #1497


Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
2024-01-04 21:56:34 +00:00
Patryk Kwiatek ca5677d273 Disallow maxTimeMS for non-awaitData cursors in getMore command (#3917) 2024-01-04 21:17:01 +00:00
6a17ca12c7 Allow filtering by name in ListDatabases and ListCollections (#3851)
Closes #3601.

Co-authored-by: Henrique Vicente <henriquevicente@gmail.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2024-01-04 20:35:29 +00:00
Alexey Palazhchenko c8f8c6851e Ignore sparse index parameter for now (#3934) 2024-01-04 15:37:22 +01:00
Elena Grahovac 1e3c826fb5 Implement and test OpLog for update operations (#3899)
Closes #3861.
Closes #3556.
2024-01-04 14:35:01 +01:00
Elena Grahovac 718078ada1 Cleanup a closed issue (#3924) 2024-01-04 11:07:57 +01:00
Patryk Kwiatek 8c865ff773 Cleanup awaitData tailable cursor (#3915) 2024-01-02 14:50:25 +01:00
Patryk Kwiatek f8d94bdcba Implement awaitData tailable cursors (#3900) 2023-12-28 13:20:44 +00:00
Alexey Palazhchenko ca744983aa Drop test users on cleanup (#3914) 2023-12-28 12:01:04 +01:00
Elena Grahovac 1b1167e56f Don't cleanup capped collections if there is nothing to cleanup (#3909) 2023-12-28 10:21:00 +00:00
Alexey Palazhchenko 2c17e05dd6 Make AssertEqual helper handle duplicate keys (#3911) 2023-12-27 18:28:38 +00:00
Alexey Palazhchenko af36e33d59 Bump deps (#3912) 2023-12-27 18:15:50 +01:00
Alexey Palazhchenko a4abf17185 Forbid bson.E/D/M/A, except integration tests (#3908) 2023-12-27 11:16:47 +01:00
Elena GrahovacandAlexey Palazhchenko e36e848e7a Add some small improvements to the linter that checks open issues (#3756)
Closes #2733.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-25 17:43:28 +01:00
Alexey Palazhchenko 235a208fad Refactor ConnInfo in preparation for new auth (#3901) 2023-12-21 23:38:54 +01:00
Patryk Kwiatek b9eafc5819 Add more cursor tests (#3893)
Closes #3739.
2023-12-21 19:02:09 +04:00
Elena Grahovac cc2fb19ef6 Add integration tests for OpLog entries of insert and delete operations (#3862)
Closes #3861.
2023-12-21 19:01:18 +04:00
yonarw 9e23f878ff Add basic SAP HANA backend (#3719) 2023-12-21 17:10:25 +04:00
Alexey Palazhchenko c5e44a7b33 Small clean-ups (#3896) 2023-12-21 13:23:54 +04:00
krishna sindhur df1499d952 Add support for --skip in envtool tests run (#3805)
Closes #3787.
2023-12-21 11:41:10 +04:00
Alexey Palazhchenko 3db735b985 Add utilities for working with passwords (#3890)
Closes #3785.
2023-12-20 22:38:30 +00:00
Patryk Kwiatek 0bac9ed1ed Add awaitData tests (#3872)
Closes #3818.
2023-12-20 21:56:46 +00:00
Henrique Vicente 52c0f0ffe2 Use dropAllUsersFromDatabase in tests (#3891)
Closes #1492.
2023-12-20 20:34:28 +04:00
Alexey Palazhchenko 1976ea2263 Fix clean-up on aggregate errors (#3892) 2023-12-20 16:11:58 +00:00
fc1163b1f2 Implement dropAllUsersFromDatabase (#3867)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-12-20 12:44:43 +00:00
Alexey Palazhchenko ac3f26fdb0 Enable OpLog and tailable cursors (#3887)
Closes #76.
2023-12-20 15:54:25 +04:00
Alexander Tobi Fashakin 86d8023dd7 Update blog links (#3889) 2023-12-20 13:48:33 +04:00
Alexey Palazhchenko 533e15c6c3 Fix local MySQL setup (#3886) 2023-12-20 10:21:18 +04:00
Henrique Vicente eefeb0d6b7 Implement dropUser command (#3866)
Closes #1493.
2023-12-20 07:39:29 +04:00
Alexander Tobi Fashakin 6a29fa932a Add blog post on "How to Add MongoDB Compatibility to Neon" (#3863) 2023-12-19 19:30:03 +04:00
Alexey Palazhchenko 13884ccded Add support for tailable cursors (#3799)
Closes #2283.
2023-12-19 19:01:41 +04:00
Teej4y 8a329498af Add MySQL backend registry (#3850)
Closes #3413.
2023-12-19 14:32:39 +00:00
Alexander Tobi Fashakin cd2296061d Add release blogpost for v1.17.0 (#3883) 2023-12-19 18:00:56 +04:00
Alexey Palazhchenko 5ae90d467d Fix tests (#3871)
Previous tests might create capped collections in other databases.
2023-12-19 12:15:08 +00:00
Alexey Palazhchenko 23714a4675 Bump deps (#3880) 2023-12-19 06:54:27 -05:00
Henrique VicenteandAlexey Palazhchenko 2917fc5722 Implement createUser command (#3848)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-19 05:41:15 -05:00
Alexey Palazhchenko c2b2c1d521 Add CI configuration for Citus (#3865)
Closes #3099.
2023-12-18 13:57:39 +00:00
Alexey Palazhchenko 4de769a5d6 Prepare v1.17.0 release (#3869) 2023-12-18 14:26:53 +04:00
Patryk Kwiatek eb04508e3f Add cursor tests (#3859) 2023-12-18 08:03:28 +00:00
Wazir Ahmed 82143ff202 Add upsert tests (#3864)
Closes #3856.
2023-12-17 23:45:26 -05:00
Alexey Palazhchenko 39aee11532 Simplify tailable cursor tests (#3854) 2023-12-15 08:14:04 +04:00
9a15f1af08 Use MongoDB 7 (#3824)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-12-14 22:54:10 +00:00
Elena GrahovacandAlexey Palazhchenko b2b0aaf21d Support capped collection cleanup (#3831)
Closes #3459.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
2023-12-14 23:40:26 +01:00
Patryk Kwiatek bff43069d0 Test cross-session cursors (#3849) 2023-12-14 23:20:52 +04:00
Alexey Palazhchenko c4b84a3909 Add missing logging parameter (#3847) 2023-12-14 08:05:05 +01:00
Patryk Kwiatek c0201395cd Add tests for tailable cursors (#3833) 2023-12-13 19:52:53 +04:00
Alexey Palazhchenko b26d394e2f Allow bypassing authentication (#3840) 2023-12-12 20:12:19 +04:00
Alexey Palazhchenko 6737d3260e Clean-up tests a bit (#3835) 2023-12-11 21:25:55 +04:00
Alexey Palazhchenko 008b88e4a9 Add documentation for older versions (#3834) 2023-12-11 18:30:49 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 62062ba71b Enable versioning on documentation (#3821)
Closes #2776.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-11 16:54:22 +04:00
Teej4y 1290378fd5 Add MySQL backend metadata (#3828) 2023-12-11 16:53:53 +04:00
Patryk Kwiatek c0eace04c2 Disallow $natural in compound sort (#3832) 2023-12-08 12:38:37 +01:00
Henrique Vicente 26b27de451 Add fields to listCollections.cursor response (#3809)
Closes #2815.
2023-12-08 14:21:05 +04:00
Patryk Kwiatek 13d2680d71 Allow sorting by $natural (#3822)
Closes #3638.
2023-12-07 22:28:19 +04:00
Alexey Palazhchenko d8de8afc06 Ignore $clusterTime (#3830) 2023-12-07 17:20:56 +01:00
Elena GrahovacandAlexey Palazhchenko 514acee577 Fix tests for MongoDB with enabled replica set (#3807)
Closes #3310.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-07 12:17:46 +00:00
Alexey Palazhchenko fe268cb74d Extract find helper functions (#3826) 2023-12-07 14:18:23 +04:00
Alexander Tobi Fashakin c04dfb2725 Change release blogpost image (#3825) 2023-12-07 08:16:18 +04:00
Hungai AmuhindaandAlexey Palazhchenko f8141899f1 Add tracing to envtool tests run (#3695)
Closes #3665.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-12-06 21:25:03 +04:00
Patryk Kwiatek 504c5674a6 Use single flag to disable all pushdowns (#3793) 2023-12-06 16:41:44 +01:00
Alexey Palazhchenko 9823d7580f Refactor cursor creation (#3820) 2023-12-06 14:05:51 +01:00
Alexey Palazhchenko b6e42b4f81 Bump deps (#3817) 2023-12-06 11:12:28 +04:00
Alexander Tobi Fashakin d3cc6919fe Add new release FerretDB v1.16.0 blog post (#3808) 2023-12-06 08:02:45 +04:00
Alexey Palazhchenko 2aa02651ca Move tests for tailbable cursors (#3811) 2023-12-05 22:17:30 +04:00
Alexey Palazhchenko 4e47318ede Support subdirectories for integration tests (#3810) 2023-12-05 13:58:52 +01:00
Anunaya Srivastava 7aefd7da00 Allow building without PostgreSQL or SQLite backend (#3803)
Closes #3629.
2023-12-04 23:16:37 +00:00
b1ron 126b59d70d Improve validate diagnostic command (#3804)
Closes #419.
2023-12-04 21:14:43 +04:00
Henrique Vicente f4c289f3d2 Fix MsgListDatabases handler filtering when using nameOnly (#3788) 2023-12-04 16:37:11 +00:00
Wazir Ahmed 38d1d9aa0c Generate collection UUIDs (#3791)
Closes #3613.
2023-12-04 20:15:56 +04:00
Alexey Palazhchenko 651b93f86f Prepare v1.16.0 release 2023-12-04 15:58:29 +04:00
Alexey Palazhchenko c7de1c4c5b Set GOARM explicitly (#3796) 2023-12-04 12:39:30 +04:00
Alexey Palazhchenko ced8ce0d8b Log batches for find, aggregate, getMore (#3800) 2023-12-03 22:39:17 +04:00
Alexey Palazhchenko a1cf79c659 Update domain name in more places (#3802) 2023-12-01 18:26:59 +04:00
Alexander Tobi Fashakin 71bae17f20 Update Docusaurus to v3 (#3772)
Closes #3748.
2023-12-01 17:36:15 +04:00
Alexey Palazhchenko 4dbe2f4925 Ignore go-consistent failures (#3794) 2023-12-01 16:24:39 +04:00
Alexey Palazhchenko c127482a85 Remove done TODOs (#3795) 2023-12-01 12:39:18 +01:00
Patryk Kwiatek e073f9d49c Remove commoncommands package (#3780)
Closes #3662.
2023-12-01 13:43:00 +04:00
Patryk Kwiatek 38e0d3d019 Move getParameter out of common package (#3789) 2023-12-01 05:32:51 +00:00
Alexey Palazhchenko 4992933ac6 Add stubs for authentication commands (#3776) 2023-12-01 09:06:53 +04:00
Patryk Kwiatek 9c42561864 Return information about sort pushdown for find and aggregate (#3754) 2023-11-30 17:49:31 +01:00
Alexey Palazhchenko 8ebe4c22fe Add TLS support to proxy mode (#3783) 2023-11-30 19:23:12 +04:00
Patryk Kwiatek 90ca80859b Rename commonerrors and commonparams (#3779) 2023-11-30 14:20:54 +04:00
Teej4y aad8a21e8a Setup MySQL integration tests (#3758)
Closes #3413.
2023-11-29 17:44:05 +00:00
Alexey Palazhchenko 491f4c5ba6 Allow system. prefix for collections for now (#3775) 2023-11-29 15:21:32 +01:00
Alexey Palazhchenko d09f9cd8bf Add TODOs (#3771) 2023-11-28 19:03:28 +04:00
Alexey Palazhchenko 0e22913e7c Move some commands from common to the handler (#3766) 2023-11-28 08:45:31 +04:00
Alexey Palazhchenko 1a93e47611 Add TODOs (#3764) 2023-11-27 19:02:28 +04:00
Alexey Palazhchenko f4dd136c9d Clean-up old code for multiple handlers (#3763) 2023-11-27 17:27:09 +04:00
Alexey Palazhchenko 364907cdae Add TODOs about pushdowns (#3762) 2023-11-27 16:02:04 +04:00
Elena Grahovac 2664b9a5dd Move sqlite/*.go to internal/handler (#3755)
Closes #3662.
2023-11-25 10:09:25 +04:00
Alexey Palazhchenko a93ce5319a Update domain name in docs (#3757) 2023-11-24 16:33:23 +04:00
Alexey Palazhchenko aa05f0fb6b Add startup warning for debug builds (#3735) 2023-11-23 17:11:20 +00:00
Elena Grahovac 7936b3ae2a Support DeleteAll for capped collections (#3718)
Closes #3498.
2023-11-23 17:00:10 +00:00
Patryk Kwiatek 75ebdfb7b3 Remove unsafe pushdown (#3752) 2023-11-23 20:48:43 +04:00
Alexey Palazhchenko e60e99bbee Remove common handlers.Interface (#3753)
Closes #3662.
2023-11-23 17:25:26 +01:00
Alexey Palazhchenko 3d03b51cd0 Add MySQL backend to CI (#3751) 2023-11-23 14:26:14 +04:00
Teej4y c119f9ecc4 Add MySQL into the build system (#3736) 2023-11-23 13:51:51 +04:00
Alexey Palazhchenko 7948d19136 Bump deps (#3747) 2023-11-23 11:37:37 +04:00
Alexey Palazhchenko dc76d334ec Make RecordID a signed value (#3740) 2023-11-23 11:37:20 +04:00
Alexander Tobi Fashakin cbec9f8b01 Add blogpost for release v.1.15 (#3728) 2023-11-21 13:04:16 +04:00
Patryk Kwiatek c1dbb63800 Cleanup pushdown terminology (#3691)
Closes #3688.
2023-11-20 13:44:23 +00:00
Alexey Palazhchenko 23103e2682 Clarify MongoDB version (#3653) 2023-11-20 17:33:23 +04:00
Alexey Palazhchenko d14700191a Prepare v1.15.0 release 2023-11-20 14:35:12 +04:00
Alexey Palazhchenko 925e739dd0 Small assorted tweaks (#3724) 2023-11-17 16:34:01 +01:00
d96606ca73 Move diff tests from dance to integration tests (#3525)
Closes #3383.

Signed-off-by: Shankeerthan Kasilingam <shankeerthan1995@gmail.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: noisersup <patryk@kwiatek.xyz>
Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-11-17 16:18:10 +04:00
Alexey Palazhchenko 8e27db3432 Add TODOs and fix URLs (#3723) 2023-11-17 12:49:11 +04:00
Alexander Tobi Fashakin 3ed16c6fda Add migration blog post (#3709) 2023-11-17 12:38:44 +04:00
Chuma Umenzeandnoisersup 05fb80644e Generate SQL queries with comments for find operations (#3697)
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2023-11-17 07:39:57 +00:00
Alexander Tobi Fashakin 532787d758 Fix Codapi error on blog post (#3721) 2023-11-16 18:12:15 +04:00
e17d6a4ceb Add issue tracking to checkcomments analyzer (#3632)
Closes #2733.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
2023-11-15 18:15:51 +00:00
Elena Grahovac 07a145fca7 Make handler accept constructed backend (#3710)
Closes #3662.
2023-11-15 17:52:43 +00:00
Alexander Tobi Fashakin 6c5c7090e3 Test interactive blog (#3659) 2023-11-15 21:19:08 +04:00
Alexey Palazhchenko b7fa5c309f Allow the usage of existing PostgreSQL schema (#3717) 2023-11-15 15:54:43 +00:00
Alexander Tobi Fashakin 5281e6178c Add blogpost for "How to Package and Deploy FerretDB with Acorn" (#3679) 2023-11-15 18:27:35 +04:00
Alexey Palazhchenko 7d5c3f2f0a Handle panicking tests (#3711) 2023-11-15 09:03:41 +04:00
Elena Grahovac 74009c0361 Fix tests for MongoDB with enabled replica set (#3604)
Closes #3310.
2023-11-14 08:12:58 +00:00
Alexey Palazhchenko d743808d04 Use the standard *mongo.WriteError type (#3705) 2023-11-14 01:58:03 +04:00
Alexey Palazhchenko a58d9f83dd Use - in addition to the empty string (#3704) 2023-11-14 00:02:10 +04:00
Alexey Palazhchenko db7342abc0 Allow usage without state dir (#3703)
Closes #3699.
2023-11-13 21:30:21 +04:00
Luke Kuzmish 3b937b115e Add option to disable --debug-addr (#3698)
Closes #3517.
2023-11-13 14:23:47 +04:00
Patryk Kwiatek e4eed05dfd Add test for tailable cursor with non-capped collection (#3677) 2023-11-13 10:22:38 +00:00
Alexey Palazhchenko 1f18df076d Use separate PostgreSQL databases in tests (#3622)
Closes #3409.
2023-11-10 19:01:46 +04:00
Alexander Tobi Fashakin c3031940b0 Fix content error (#3694) 2023-11-10 07:44:30 +04:00
Alexey Palazhchenko 10844cf621 Bump deps (#3690) 2023-11-09 17:10:14 +00:00
Alexey Palazhchenko 8a18837dd0 Add JSON format for logging (#3689) 2023-11-09 08:23:51 +04:00
Alexander Tobi Fashakin 4bd76006af Add blog post on FastNetMon (#3676) 2023-11-08 21:12:50 +04:00
Alexey Palazhchenko 22421e7e4e Update URLs 2023-11-08 11:02:33 +04:00
mrusme 1d9339e296 Update README.md to include Vultr (#3675) 2023-11-08 10:45:00 +04:00
Alexander Tobi Fashakin c664e70768 Add release blogpost for FerretDB v.1.14.0 (#3681) 2023-11-08 10:29:48 +04:00
Chi FujiiandAlexey Palazhchenko 3232afdfab Support showRecordId in find (#3637)
Closes #3467.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-11-08 10:27:18 +04:00
Alexey Palazhchenko b31b8e29ab Make tests stable on CI (#3678) 2023-11-07 14:15:38 +04:00
Alexander Tobi Fashakin 051e963891 Mention proxy flag in docs (#3673) 2023-11-07 07:37:25 +00:00
Alexey Palazhchenko a60bc00f78 Prepare v1.14.0 release 2023-11-07 10:45:21 +04:00
Andrew Minkin 76ea246cb7 Rename main_postgeresql to main_postgresql (#3668) 2023-11-02 11:55:27 +00:00
Alexey Palazhchenko c3f7da0d40 Remove old SAP HANA handler (#3674) 2023-11-01 21:24:37 +04:00
Alexey Palazhchenko b604b6b555 Add timing information to envtool output (#3664) 2023-10-31 19:52:43 +04:00
PRINCE JHAandChi Fujii ba384d9d1c Optimize insert performance by batching (#3621)
Closes #3271.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-10-31 19:16:12 +04:00
Chi Fujii ebf46cf045 Add blog post on MongoDB sorting for scalar values (#3200) 2023-10-31 14:53:29 +04:00
Alexander Tobi Fashakin 60a9bcc38b Update blog post on Ubuntu (#3658) 2023-10-30 15:43:40 +00:00
Doni RubiagatraandAlexey Palazhchenko 09ec58cda8 Add integration tests progress reporting (#3471)
Closes #3055.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-30 19:31:34 +04:00
Alexander Tobi Fashakin c68710e1d5 Add Vultr blog post (#3646) 2023-10-30 17:50:36 +04:00
Alexey Palazhchenko 6a273333ac Enable GOMAXPROCS autotuning (#3105) 2023-10-30 14:30:50 +04:00
Chi Fujii ce26a01893 Support InsertAll and FindAll for capped collections (#3610)
Closes #3490.
2023-10-29 20:29:16 +00:00
Chi Fujii e180e61bc9 Add test for capped collection in aggregate $collStats (#3643)
Closes #2447.
2023-10-28 08:25:18 +00:00
Alexey Palazhchenko a3f9ed8f39 Disable new linters for now 2023-10-28 12:13:14 +04:00
Alexey Palazhchenko 767c6e7751 Remove old pg handler (#3661) 2023-10-27 22:07:23 +04:00
Shahriar Shatilandnoisersup 2715338b02 Remove pgdb from envtool (#3586)
Closes #3452.

Co-authored-by: noisersup <patryk@kwiatek.xyz>
2023-10-27 17:25:57 +04:00
Alexey Palazhchenko b73400880d Update golangci-lint (#3651) 2023-10-26 19:47:44 +00:00
Alexey Palazhchenko d6d3a43fc8 Run backend tests for SAP HANA (#3657) 2023-10-26 19:24:42 +02:00
Alexey Palazhchenko ebe7cd17d9 Optimize detection of duplicate fields (#3645) 2023-10-26 10:27:35 +09:00
Alexander Tobi Fashakin 329efdf9b7 Add blogpost for FerretDB v1.13.0 (#3639) 2023-10-24 18:56:15 +04:00
Alexey Palazhchenko 689c4b0baf Disallow capped collection creation when disabled (#3636) 2023-10-24 10:32:19 +00:00
Teej4yandChi Fujii 78e20904f3 Implement compact command (#3559)
Closes #3466.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-10-24 10:00:59 +00:00
Elena GrahovacandChi Fujii a8880e8323 Support create for capped collections (#3614)
Closes #3458.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-10-24 13:19:49 +04:00
Alexey Palazhchenko 1026d86fdb Fix incorrect schema (#3635) 2023-10-24 11:23:11 +04:00
Alexey Palazhchenko 8c7cb035bd Prepare v1.13.0 release 2023-10-23 17:03:31 +04:00
Alexey Palazhchenko ea7f26aa0e Prepare v1.13.0 release (#3628) 2023-10-23 16:43:37 +04:00
Patryk Kwiatek 0a526c008a Implement pushdown for aggregate (#3607) 2023-10-23 14:02:56 +04:00
codenoid 05a2ee3e7c Make listIndexes return a sorted list (#3602)
Closes #3589.
2023-10-20 17:38:02 +00:00
Alexander Tobi Fashakin 19c361a271 Add links to blog (#3623) 2023-10-20 18:38:15 +04:00
Alexey Palazhchenko 55d333314e Do not create OpLog database/collection on a fly (#3625) 2023-10-20 18:37:38 +04:00
Alexey Palazhchenko d1aad784a9 Fix some tests for SQLite backend (#3617)
Closes #3409.
2023-10-20 17:49:13 +04:00
Alexey Palazhchenko 10e186c42e Keep envtool's version always up-to-date (#3609) 2023-10-19 19:03:26 +00:00
Alexander Tobi Fashakin 24498a4cc8 Update ILLA blog post (#3620) 2023-10-19 22:51:15 +04:00
Alexander Tobi Fashakin 19a6bd5131 Add "How to Install FerretDB on Ubuntu" blog post (#2802) 2023-10-19 17:51:58 +04:00
384c284fee Call ANALYZE less often (#3563)
Closes #3518.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-10-19 14:52:50 +09:00
Alexander Tobi Fashakin 9a5654435c Add SQLite set up docs (#3568) 2023-10-19 01:26:01 +00:00
Chi Fujii e82aefb9ed Implement free storage in collStats, dbStats and aggregate $collStats (#3594)
Closes #2342.
2023-10-18 23:33:42 +02:00
Patryk Kwiatek f433e25b1f Unskip filter pushdown integration tests (#3605) 2023-10-18 16:14:19 +00:00
Alexey Palazhchenko 6650ab5479 Fix checkcomments test 2023-10-18 20:03:27 +04:00
Patryk Kwiatek ae0bca1575 Implement limit pushdown for PostgreSQL (#3580)
Closes #3416.
2023-10-18 20:03:07 +04:00
Alexey Palazhchenko 0f08f616db Fix tool compilation 2023-10-18 18:49:13 +04:00
Alexey Palazhchenko f1b8354962 Do not skip invalid TODOs (#3597)
Closes #2733.
2023-10-18 18:41:35 +04:00
Alexey Palazhchenko f711ba1780 Crush PNG images 2023-10-18 18:28:28 +04:00
Alexander Tobi Fashakin 30831300ec Add blog post on using Illa Cloud with FerretDB (#3516) 2023-10-18 18:23:00 +04:00
Elena Grahovac 84d054ba3e Implement Collection.Compact for PostgreSQL (#3603)
Closes #3484.
2023-10-18 13:13:05 +00:00
Prabhanjan Vinoda Bharadwaj 0d9e48c85f Add SQLite info to glossary list (#3593)
Closes #3427.
2023-10-18 17:01:31 +04:00
chanon-mike d7493f75f0 Enable linters to accept exclamation marks in headers (#3578) 2023-10-18 10:13:19 +00:00
Alexey Palazhchenko 7243c9c924 Make it easier to run old PG handler (#3598) 2023-10-18 03:22:42 +00:00
Alexey Palazhchenko 65f5d136d5 Add filter pushdown for _id: <string> for SQLite (#3599) 2023-10-18 02:22:16 +00:00
codenoidandAlexey Palazhchenko d8ac329267 Improve /debug page (#3592)
Closes #3583.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-17 17:27:27 +04:00
Patryk Kwiatek a7cc841aae Implement sort pushdown for PostgreSQL (#3504) 2023-10-17 11:46:51 +00:00
krishna sindhurandAlexey Palazhchenko 3d3eb82e6e Check that linked issues are open (#3277)
Closes #2733.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-17 13:09:11 +04:00
Chi Fujii 5034b84b3c Remove done TODO (#3596) 2023-10-17 11:46:53 +04:00
Alexey Palazhchenko a04c27f772 Use stdlib's slices package (#3590) 2023-10-17 11:23:47 +04:00
Alexey Palazhchenko 29402967fc Remove old TODOs (#3595) 2023-10-17 11:23:25 +04:00
codenoidandAlexey Palazhchenko eb63b1101f Integrate Statsviz (#3591)
Closes #3529.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-17 09:05:42 +04:00
Alexey Palazhchenko 6131bf4d21 Do not return stats in Backend.ListDatabases (#3588) 2023-10-17 01:44:59 +00:00
Chi Fujii c3888f1f60 Update dataSize and dbStats integration tests (#3585)
Closes #727.
2023-10-17 10:02:16 +09:00
Chi Fujii 11ae05e6aa Implement indexSizes for collStats (#3575)
Closes #2447.
2023-10-16 16:50:53 +04:00
Chi Fujii b4446936ab Add more data to output of collStats and dbStats (#3538)
Closes #2447.
Closes #3521.
2023-10-16 15:21:49 +04:00
Slava 9d3a3e1ed8 Add tests for insertion of documents with invalid _id fields (#3579) 2023-10-16 19:07:25 +09:00
Alexey Palazhchenko 4685aa7f8a Build arm/v7 .deb and .rpm packages and binaries (#3576) 2023-10-16 06:14:55 +02:00
Sidharth SreejilandAlexey Palazhchenko ff92b037cb Enable Mermaid diagrams in Docusaurus (#3532)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-10-13 19:33:03 +03:00
Chi Fujii ce4945da53 Add capped collection counts in ServerStatus (#3566)
Closes #2342.
2023-10-13 14:00:18 +00:00
Chi Fujii 90415f4af6 Add more tests and fix bugs for $collStats aggregation stage (#3565)
Closes #2349.
2023-10-13 15:44:55 +02:00
Alexey Palazhchenko 30a1c91d60 Build arm/v7 binaries (#3577) 2023-10-13 12:09:52 +00:00
Alexey Palazhchenko 5d4a0d2d79 Do not create databases during local setup (#3572) 2023-10-13 11:48:37 +00:00
Alexey Palazhchenko 06681c6b90 Change SQLite directory for Docker images (#3571) 2023-10-13 11:27:22 +00:00
Alexey Palazhchenko 633b8274fa Report actual backend name (#3570) 2023-10-13 10:54:45 +00:00
Alexey Palazhchenko 52fe84782d Add basic logging for PostgreSQL backend (#3560) 2023-10-13 13:03:40 +04:00
Patryk Kwiatek f748ba9a9b Fix explain panic for non-existent collection on PostgreSQL (#3541) 2023-10-13 10:39:41 +09:00
Alexey Palazhchenko 1ea4ff41a8 Use self-hosted runner for packages building (#3569) 2023-10-12 16:32:46 +04:00
Slava 4801d37a5f Fix invalid validation for _id field (#3523)
Closes #2804.
2023-10-12 10:50:49 +00:00
Alexey Palazhchenko 29f7fe6418 Use new PostgreSQL backend by default (#3539) 2023-10-12 14:21:04 +04:00
Akhil-2001 2d57d3ff41 Implement Collection.Compact for SQLite (#3536)
Closes #3469.
2023-10-11 22:31:02 +00:00
Chi Fujii 57e283c278 Make collStats calculate collection size accurately for PostgreSQL statistics (#3513)
Closes #3483.
2023-10-11 18:39:56 +00:00
Alexey Palazhchenko d4e74d6420 Crush images (#3561) 2023-10-11 21:29:26 +04:00
Alexander Tobi Fashakin daca6ba6ee Add release blog post for FerretDB v1.12 (#3555) 2023-10-11 17:04:49 +04:00
Alexey Palazhchenko 44ee460fdf Use separate PostgreSQL databases in tests (#3553) 2023-10-11 16:06:26 +04:00
PRINCE JHA 9475382b59 Improve embedded package documentation (#3537)
Closes #2326.
2023-10-11 16:13:37 +09:00
Alexey Palazhchenko d1486f2b5d Prepare v1.12.1 release 2023-10-10 16:15:18 +04:00
Alexey Palazhchenko 6901b7b96a Fix production image building 2023-10-10 15:49:30 +04:00
Alexey Palazhchenko 6a997b4249 Prepare v1.12.0 release 2023-10-10 14:38:57 +04:00
Alexey Palazhchenko 99c646baae Update documentation (#3530) 2023-10-10 14:27:33 +04:00
Elena Grahovac 313f94841c Add info about indexes to dbStats response (#3534)
Closes #3394.
2023-10-10 03:08:33 +00:00
Elena Grahovac 7db2372f0b Make new PostgreSQL backend tests pass (#3522) 2023-10-09 23:19:50 +04:00
Chi Fujii be0f7b6a9c Fix _id restriction in aggregation $project stage (#3508)
Closes #2826.
2023-10-09 17:20:11 +00:00
Elena Grahovac b932d0f6c2 Fix unit tests for indexes (#3531)
Closes #3375.
2023-10-09 17:04:41 +00:00
Alexey Palazhchenko fb130969b8 Add mermaid diagrams (#3524) 2023-10-09 20:06:26 +04:00
Patryk Kwiatek 35f5849b58 Implement filter pushdown for PostgreSQL (#3482)
Closes #3414.
2023-10-09 18:31:31 +04:00
Elena Grahovac 4ac2235479 Fix index name generation (#3511)
Closes #3375.
2023-10-09 13:33:41 +04:00
Alexey Palazhchenko 3502cc0da6 Use Ping for checking connection (#3519) 2023-10-07 09:01:45 +04:00
Alexey Palazhchenko 50fc27d37a Disable auto_vacuum for SQLite (#3496) 2023-10-06 16:10:26 +00:00
Jose Ramon Mañes 40026770c2 Fix typo in contributing documentation (#3507) 2023-10-06 15:47:44 +00:00
Alexey Palazhchenko bfa7300daa Disallow importing handlers code from backends (#3512) 2023-10-06 14:58:02 +00:00
Alexey Palazhchenko ee729a049d Bump Go version (#3510) 2023-10-06 14:07:03 +00:00
Alexander Tobi Fashakin 85673bf45f Fix blog post formatting (#3515) 2023-10-06 16:42:20 +04:00
Alexey Palazhchenko ae1c2019ae Tweak tests timeouts (#3514) 2023-10-06 16:38:13 +04:00
Alexey Palazhchenko c52cfc2c5c Add TODOs for capped collections (#3461) 2023-10-06 16:32:39 +04:00
Elena Grahovac 360e1474a0 Implement CreateIndexes, DropIndexes, ListIndexes (#3468)
Closes #3394.
Closes #3397.
Closes #3399.
2023-10-06 10:25:20 +00:00
Chi Fujii 177a7ae16c Implement collection.Stats (#3478)
Closes #3389.
2023-10-06 09:34:21 +00:00
Alexander Tobi Fashakin e5b58eacd0 Improve definitions for aggregation stages (#3499) 2023-10-06 18:08:17 +09:00
PRINCE JHA e5e2485df5 Relax restrictions when _id is not the first field in projection (#3491)
Closes #2826.
2023-10-05 15:53:50 +00:00
Elena Grahovac f1a1b5be6d Store indexes metadata (#3434)
Closes #3375.
2023-10-05 19:12:48 +04:00
Alexey Palazhchenko 3e69f59208 Fix concurrent Docker builds (#3503) 2023-10-05 15:55:30 +04:00
Rohit ChaudhariandAlexander Tobi Fashakin 2ee74c8b77 Added Operation mode in Glossary.md (#3472)
Co-authored-by: Alexander Tobi Fashakin <alexander.fashakin@ferretdb.io>
2023-10-05 10:16:53 +00:00
Alexey Palazhchenko 77409eb35e Fix stress tests (#3502) 2023-10-05 14:01:21 +04:00
Alexey Palazhchenko a2f93bc6bc Extract ReservedPrefix constant (#3497) 2023-10-05 10:45:39 +02:00
Alexey Palazhchenko 0a56f5ba7c Add RecordID to types.Document (#3495) 2023-10-05 07:39:09 +00:00
Azal KhaledandAlexander Tobi Fashakin f9f5e9a6dc Add $project and $unset to aggregation stages section (#3450)
Co-authored-by: Alexander Tobi Fashakin <tobyton2008@yahoo.co.uk>
2023-10-04 14:19:42 +00:00
Chi Fujii d05546d224 Revive logic for lower cased key for collection name (#3494)
Closes #2786.
2023-10-04 12:46:14 +00:00
Chi Fujii 68ac650571 Implement database.Stats (#3464)
Closes #3402.
2023-10-04 14:23:00 +04:00
Patryk Kwiatek bc7888e11e Implement explain for new postgresql backend (#3465) 2023-10-04 03:24:39 +00:00
Teej4y 25ea2df8a5 Process collection name param using collection tag (#3476)
Closes #2786.
2023-10-04 07:06:45 +04:00
Alexey Palazhchenko 531f91c3a1 Add stubs for Collection.Compact (#3485) 2023-10-03 13:48:40 +04:00
Alexey Palazhchenko dd6e9ddb18 Add a workaround for Docker build failures (#3480) 2023-10-02 14:25:26 +04:00
Alexey Palazhchenko 2c8d2b641d Fix running a subset of tests (#3479) 2023-10-02 13:08:46 +04:00
Alexey Palazhchenko 85626b859f Build arm64 binaries and packages (#3477) 2023-10-02 11:25:08 +04:00
Alexey Palazhchenko b9c8dd8161 Speed-up Docker image building (#3470)
Closes #2179.
2023-10-02 09:18:07 +04:00
Alexander Tobi Fashakin b10af0a822 Add blog post on Enmeshed (#3448) 2023-09-29 17:23:30 +04:00
Alexey Palazhchenko a25c3a7e3d Add tests for backends contract (#3456) 2023-09-29 11:36:25 +04:00
Alexey Palazhchenko 1182de2cd8 Tweak SQLite backend tests (#3460) 2023-09-29 01:52:01 +00:00
Chi Fujii 3572f9b1b4 Implement ListCollections, CreateCollection and DropCollection (#3444)
Closes #3406.
2023-09-28 16:06:47 +00:00
Alexey Palazhchenko 5a6881d812 Remove unused expected failures (#3455) 2023-09-28 15:42:28 +00:00
Alexey Palazhchenko 437aeed18c Run tests with envtool tests run (#3453) 2023-09-28 14:57:31 +00:00
Chi Fujii a29e4fb87d Implement UpdateAll (#3449)
Closes #3391.
2023-09-28 14:25:15 +00:00
Chi Fujii 490c8f62c0 Implement DropDatabase and Status (#3451)
Closes #3404.
2023-09-28 14:09:39 +00:00
Alexander Tobi Fashakin 7efc2650a7 Republish Hacktobest blog post (#3429) 2023-09-28 16:41:43 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 4db6de2de8 Fix RSS feed issue with images (#3417)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-28 16:22:08 +04:00
Patryk Kwiatek bdffc74bc7 Mark pushdown results based on tested backend (#3446)
Closes #3235.
2023-09-28 16:19:42 +04:00
Wojciech Kropidlowski 8788b9212f Verify that client metadata not being mutated (#3194)
Closes #2989.
2023-09-28 09:21:11 +00:00
Chi Fujii 7ca090ff2c Fix fluky RenameCollection tests (#3438)
Closes #3409.
2023-09-28 09:04:17 +00:00
Alexey Palazhchenko ff4a3b6a80 Remove extra function (#3447) 2023-09-28 06:05:10 +00:00
Chi Fujii b7a6330574 Implement DeleteAll (#3441)
Closes #3400.
2023-09-27 17:05:47 +00:00
Chi Fujii 6b5b4f1fc2 Implement InsertAll for PostgreSQL (#3419)
Closes #3395.
2023-09-27 18:42:50 +02:00
Elena Grahovac 71496413dd Implement validation for createIndexes and dropIndexes commands for SQLite (#3373)
Closes #3320.
2023-09-27 02:46:55 +00:00
Alexey Palazhchenko 01bbf29e3d Bump deps (#3437) 2023-09-26 20:54:41 +04:00
Alexander Tobi Fashakin f94090267d Add release blog post for FerretDB v1.11.0 (#3439) 2023-09-26 17:19:25 +04:00
Alexey Palazhchenko 0703337e8d Implement RenameCollection (#3440)
Closes #3393.
2023-09-26 17:05:26 +04:00
Alexey Palazhchenko 606e326cbd Add SAP HANA backend stub (#3433) 2023-09-26 14:07:09 +04:00
Alexey Palazhchenko 6ef88d0812 Fix CI configuration and add TODOs (#3436) 2023-09-26 13:13:37 +04:00
Alexey Palazhchenko 895ad868ef Add CI configurations (#3423) 2023-09-25 21:59:23 +04:00
Mihai Țimbota-Belin e7cf6303d0 Implement metrics collection for PostgreSQL backend (#3430)
Closes #3392.
2023-09-25 16:57:15 +00:00
Alexey Palazhchenko 46f2b8af06 pngcrush images 2023-09-25 19:43:10 +04:00
Alexander Tobi Fashakin 352925e8fa Add blog post on Using MajorM as MongoDB GUI for FerretDB (#3387) 2023-09-25 19:37:59 +04:00
Alexander Tobi Fashakin 15cd43f914 Update writing guide (#3424) 2023-09-25 19:27:30 +04:00
Alexey Palazhchenko b8f85e605e Prepare v1.11.0 release 2023-09-25 14:47:42 +04:00
Chi Fujii dabbeb3321 Implement Query in new PostgreSQL backend (#3411)
Closes #3388.
2023-09-22 15:19:53 +02:00
Alexey Palazhchenko d976d8c579 Run new PostgreSQL backend tests (#3407)
Closes #3126.
2023-09-22 09:22:33 +04:00
Alexey Palazhchenko 1813a6b766 Add TODOs (#3412) 2023-09-22 09:21:55 +04:00
Chi Fujii 4e6b8691f4 Store PostgreSQL metadata (#3356)
Closes #3335.
2023-09-21 21:57:47 +04:00
Peter Farkas 02ae206a4c Mention SQLite in docs (#3408) 2023-09-21 16:56:14 +03:00
Chi Fujii 0496e21080 Reorder codebase in SQLite registry (#3382) 2023-09-21 09:27:10 +00:00
Alexander Tobi Fashakin f98a6f6c3c Add docs for migrating to MongoDB from FerretDB (#3374)
Closes #3229.
2023-09-21 12:59:48 +04:00
Alexey Palazhchenko 33cdbc4eba Enforce valid types usage (#3384) 2023-09-21 08:53:31 +00:00
Alexey Palazhchenko 05747ae727 Add CI configuration for SQLite without pushdown (#3381) 2023-09-20 20:27:54 +04:00
Alexey Palazhchenko 8a2a098e58 Add small tweaks (#3377) 2023-09-20 08:34:21 +00:00
Elena Grahovac 8425016692 Return statistics of indexes for collStats and dbStats for SQLite backend (#3361)
Closes #3293.
2023-09-20 12:12:56 +04:00
Alexey Palazhchenko c844bccc1d Remove the need to close conninfo (#3376) 2023-09-19 09:34:42 +00:00
Elena Grahovac 9f8f895b9a Fix metadata updates for dropIndexes (#3358)
Closes #3328.
Closes #3366.
2023-09-18 14:06:12 +04:00
Teej4y 1cdf743661 Replace deprecated Jaeger exporter (#3368)
Closes #3341.
2023-09-18 05:45:46 +00:00
Chi FujiiandAlexey Palazhchenko 58772a7a6a Use filter and insert more documents in BenchmarkReplaceSettingsDocument (#3343)
Closes #2340.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-18 09:24:04 +04:00
Alexey Palazhchenko 05fd6a8633 Add a blog post for v1.10 (#3346) 2023-09-15 08:49:06 +00:00
Alexey Palazhchenko 22de2805f4 Use consistent spelling (#3365) 2023-09-15 08:03:42 +00:00
Chi Fujii 8c9b68198d Fix collStats to return correct count of documents for SQLite (#3363)
Closes #3355.
2023-09-15 11:36:10 +04:00
Alexey Palazhchenko 19f0906df3 Recreate test directory (#3364)
Closes #3362.
2023-09-15 06:50:24 +00:00
Alexander Tobi Fashakin ecf2b6577e Improve blog format (#3359) 2023-09-15 10:21:36 +04:00
Patryk Kwiatek 1c9cc3a311 Add test for inserting different data types (#3345)
Closes #3235.
2023-09-15 05:08:10 +00:00
Alexey Palazhchenko c8c8ee26d3 Remove broken arm/v6 Docker images 2023-09-14 16:39:57 +04:00
Alexey Palazhchenko 8a59caa25b Prepare v1.10.0 release 2023-09-14 16:09:22 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko 95b232aa01 Update category links in writing guide (#3323)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-14 15:56:13 +04:00
Alexey Palazhchenko df2754959c Build Docker images for arm/v6 (#3357)
Closes #3354.
2023-09-14 12:44:17 +04:00
Elena Grahovac 3681c4c063 Return correct response if unique index violation happened on SQLite backend (#3353)
Closes #3183.
2023-09-14 11:17:31 +09:00
Elena Grahovac 481bc96541 More accurate handling of params for dropIndexes implementation for SQLite (#3350)
Closes #3287.
2023-09-13 12:31:58 +02:00
82c19191d7 Implement dropIndexes for SQLite (#3329)
Closes #3287.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-09-13 10:04:53 +04:00
Teej4y 8faca75cef Do not ConsumeValues in the $group aggregation stage (#3344)
Closes #2863.
2023-09-12 12:35:43 +00:00
Chi FujiiandAlexey Palazhchenko ee5304e131 Add more tests (#3336)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-11 22:25:28 +04:00
Alexey Palazhchenko a459ba5813 Update blog authors (#3338) 2023-09-11 15:59:05 +04:00
Chi Fujii ee5e0e8217 Support _id implicit filter for ObjectID in SQLite (#3330)
Closes #2340.
2023-09-11 10:27:25 +00:00
b1ron 17aed11e93 Document how to test for compatibility (#3268)
Closes #3242.
2023-09-11 11:25:25 +04:00
Elena GrahovacandAlexey Palazhchenko 684177a064 Implement createIndexes for SQLite (#3304)
Closes #3176.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-09-11 00:47:45 +04:00
Alexey Palazhchenko 4af1da0318 Add new PostgreSQL backend stub (#3319) 2023-09-10 17:06:05 +04:00
Chi Fujii 1871dc90e8 Implement renameCollection for SQLite (#3321)
Closes #2760.
2023-09-08 09:45:41 +00:00
Elena Grahovac b032cd71e6 Implement listDatabases for SQLite (#3269)
Closes #3260.
2023-09-08 15:00:57 +09:00
Alexey Palazhchenko f3c46220b8 Remove Database.Close (#3327) 2023-09-08 08:40:35 +04:00
Alexey Palazhchenko fb91ab141c Use pkgsite instead of godoc (#3326) 2023-09-07 20:58:28 +04:00
Alexey Palazhchenko f10ed5a904 Use Go 1.21 (#3324) 2023-09-07 19:26:31 +04:00
Alexey Palazhchenko 82bca28341 Add backend decorators and OpLog stub (#3303) 2023-09-07 15:30:17 +04:00
Chi Fujii 9669f0f719 Add tests for $bit update operator (#3315)
Closes #821.
2023-09-07 06:50:31 +00:00
Elena Grahovac 586e27b062 Support listIndexes for SQLite backend (#3301)
Closes #3175.
2023-09-07 09:59:43 +09:00
Alexander Tobi Fashakin 91ddcc9306 Update the writing guide (#3311) 2023-09-06 16:34:53 +04:00
Chi Fujii 1f62ae4cff Implement serverStatus and dataSize commands for SQLite (#3316)
Closes #2775.
2023-09-06 11:57:06 +00:00
Chi Fujii ed54533eef Implement findAndModify for SQLite (#3302)
Closes #3049.
2023-09-06 10:55:49 +00:00
Chi Fujii 128fa84b08 Skip tests for enable setFreeMonitoring for MongoDB (#3318) 2023-09-06 14:38:44 +04:00
Alexey Palazhchenko 302ef223b6 pngcrush new images 2023-09-06 12:53:48 +04:00
Alexander Tobi Fashakin de1cc3faac Add blog post on "Using PgManage as PostgreSQL GUI Admin for FerretDB" (#3249) 2023-09-06 12:46:58 +04:00
Alexey Palazhchenko 7fe8ece598 Tweak MongoDB initialization process (#3307) 2023-09-06 09:00:58 +04:00
Teej4y bb446c5efa Support $bit bitwise update operator (#3266)
Closes #821.
2023-09-05 22:27:39 +04:00
Alexey Palazhchenko 1262111c66 Clean-up *types.Timestamp a bit (#3305) 2023-09-05 12:53:53 +04:00
Chi Fujii 4e8aba94ae Implement collStats for SQLite (#3295)
Closes #3259.
2023-09-04 14:52:28 +04:00
Alexey Palazhchenko 76c3b68715 Do not change search_path parameter (#3299) 2023-09-04 07:48:20 +00:00
Patryk Kwiatek e3774a9b57 Implement explain command for SQLite (#3264)
Closes #3050.
2023-09-04 04:55:26 +00:00
Elena Grahovac 122a57c0e6 Implement getLog for SQLite (#3279)
Closes #3261.
2023-09-04 08:27:33 +04:00
Chi Fujii 65db99f136 Add backend interface for collStats (#3294)
Closes #3259.
2023-09-01 14:38:32 +04:00
Alexey Palazhchenko de672528e6 Make updates atomic for SQLite (#3296)
Closes #3079.
2023-09-01 10:53:15 +09:00
Chi Fujii 2be310a4b1 Implement dbStats for SQLite (#3270)
Closes #3259.
2023-08-31 14:22:21 +04:00
Alexey Palazhchenko 37c183ea7d Make registry return full collection info (#3292) 2023-08-31 09:04:22 +02:00
Alexey Palazhchenko bdfdace4ca Make deletes atomic for SQLite (#3291)
Closes #3085.
2023-08-31 07:48:56 +04:00
Alexey Palazhchenko 8548d92874 Expand architecture docs, add comments (#3288) 2023-08-30 21:20:51 +04:00
athkishore d7f31ea91f Update deb.md - minor grammar correction (#3289) 2023-08-30 21:20:27 +04:00
Alexey Palazhchenko c2e5228441 Add tests for validation bug (#3286) 2023-08-30 17:49:14 +04:00
Alexey Palazhchenko a6591d29db Bump deps (#3284) 2023-08-30 11:41:38 +00:00
Alexey Palazhchenko 25770735c7 pngcrush images 2023-08-30 15:24:38 +04:00
Alexander Tobi Fashakin ef0d5e81da Add release blog post on FerretDB v1.9.0 (#3274) 2023-08-30 15:18:29 +04:00
krishna sindhur c8681a72d0 Add ability to freeze *types.Document and *types.Array (#3253)
Closes #3112.
2023-08-30 13:26:39 +04:00
Alexey Palazhchenko b16fe1f85d Support ordered inserts for SQLite (#3223)
Closes #2750.
2023-08-30 06:06:27 +00:00
Chi Fujii 0f9101721b Add backend interface used by dbStats (#3267)
Closes #3259.
2023-08-30 04:36:21 +00:00
Alexey Palazhchenko e9f6e90af0 Add transactions to fsql (#3278) 2023-08-30 10:34:56 +09:00
Chi Fujii 2e847f06d2 Implement distinct for SQLite (#3265)
Closes #3157.
2023-08-29 09:44:54 +00:00
Chi Fujii 43b5a56d73 Implement aggregate for SQLite (#3256)
Closes #3148.
2023-08-29 11:18:13 +02:00
Alexey Palazhchenko 7d4a15e416 Simplify and deprecate commonerrors.WriteErrors (#3258)
Closes #2750.
2023-08-29 09:41:32 +04:00
Patryk Kwiatek eccf40de45 Update TODO comments (#3262) 2023-08-29 04:43:13 +00:00
Chi Fujii e0b4073216 Update blog writing guide documentation (#3209) 2023-08-28 15:58:14 +04:00
Chi Fujii 7457c98e40 Remove duplicated $expr tests (#3255) 2023-08-28 15:51:08 +04:00
Chi Fujii 62809bb18e Add tests for accessing aggregation variable $$ROOT field (#3254)
Closes #1992.
2023-08-28 15:49:31 +04:00
Alexey Palazhchenko a2fa17548d Prepare v1.9.0 release 2023-08-28 14:46:58 +04:00
Patryk Kwiatek a71936d844 Cleanup SQLite tests (#3246)
Closes #3131.
2023-08-25 17:54:37 +04:00
Alexey Palazhchenko 6601d821d8 Add new PostgreSQL backend stub (#3251) 2023-08-25 15:43:28 +04:00
Patryk Kwiatek 13240bfea2 Refactor aggregation accumulators (#3203)
Closes #3129.
2023-08-25 14:39:55 +04:00
Alexey Palazhchenko 2b1b75d05b Publish Docker images on quay.io (#3250) 2023-08-24 21:37:50 +04:00
Alexander Tobi Fashakin 12315f8636 Add Civo Navigate event blog post (#3201) 2023-08-24 16:29:22 +04:00
Alexey Palazhchenko 73cba72185 Simplify commonerrors package (#3227) 2023-08-24 16:01:04 +04:00
krishna sindhurandKrishnaSindhur 093be9878f Add linter for issue comments (#3154)
Closes #2733.

Co-authored-by: KrishnaSindhur <krishnasindhur@gmail.com>
2023-08-24 15:52:27 +04:00
Alexey Palazhchenko 3d33c03c3e Bump deps (#3248) 2023-08-24 12:33:05 +04:00
Alexey Palazhchenko 2f55169b7d Add stubs for explain (#3236)
Closes #3050.
2023-08-23 15:40:52 +04:00
Slava a78b98a4fe Add more metrics for *sql.DB (#3230)
Closes #2909.
2023-08-23 15:38:52 +04:00
Alexey Palazhchenko 7049116c74 Update issue links (#3234)
Closes #3161.
2023-08-22 16:29:22 +04:00
Alexey Palazhchenko c3925166d2 Add stubs for renameCollection (#3233)
Closes #2760.
2023-08-22 16:28:28 +04:00
Alexander Tobi Fashakin 36ce153cd3 Add Postgres Ibiza event blog post (#3210) 2023-08-18 17:21:40 +04:00
Alexander Tobi Fashakin 862d9fee7a Add blogpost on Leafcloud (#3153) 2023-08-18 17:20:41 +04:00
Patryk Kwiatek ed077f3d1c Refactor aggregation operators (#3188) 2023-08-18 11:14:38 +04:00
Alexey Palazhchenko 30dc9fca5d Fix concurrent SQLite tests (#3222)
Closes #3172.
2023-08-17 20:24:41 +00:00
Palakurthi Durga Kiran KumarandAlexey Palazhchenko 39e53edff6 Improve building with test coverage information (#3059)
Closes #2102.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-08-17 15:11:57 +00:00
Patryk KwiatekandAlexey Palazhchenko f1f284ea30 Add another stress test for SQLite (#3195)
Closes #3172.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-08-17 12:34:21 +00:00
Alexey Palazhchenko a35f4e1a66 Make the writing guide accessible but unlisted (#3221) 2023-08-17 15:45:37 +04:00
Alexey Palazhchenko 31078f4c82 Bump deps (#3215) 2023-08-17 11:26:31 +00:00
Pratik Mota 515a964490 Fix typos in documentation (#3217) 2023-08-17 10:56:28 +00:00
aenkya 76e3b2e9c8 Update go-hdb to v1.4.1 (#3213)
Closes #3211.
2023-08-17 07:51:06 +04:00
Alexey Palazhchenko 57d71489b2 Fix settings.yml syntax 2023-08-16 09:00:12 +04:00
Alexey PalazhchenkoandYaroslav Sizikov 07d3085a4d Configure repo settings with files (#3208)
Closes #1172.

Co-authored-by: Yaroslav Sizikov <ya.sizkov@gmail.com>
2023-08-16 08:53:11 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko f4c5a78102 Add blog post for FerretDB v1.8.0 (#3198)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-08-15 14:17:09 +04:00
Alexey Palazhchenko 0aceab5d9a Prepare v1.8.0 release 2023-08-14 14:53:23 +04:00
Chi Fujii 911d58349e Add tests for $$ROOT (#3187)
Closes #1992.
2023-08-11 10:31:43 +02:00
Chi Fujii 74844b1c0f Do not return immutable _id error from findAndModify for upserting same _id (#3171)
Closes #2803.
2023-08-10 21:37:12 +00:00
Patryk KwiatekandElena Grahovac cdd2f829dd Make update integration tests pass for SQLite (#3184)
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
2023-08-10 16:58:26 +02:00
Patryk Kwiatek 4384a3ecf1 Make getMore integration tests pass for SQLite (#3174) 2023-08-10 16:37:55 +02:00
Chi Fujii cc3e3ff25f Add tests for $$ROOT aggregation expression variable (#3180)
Closes #1992.
2023-08-10 08:05:47 +00:00
Patryk Kwiatek 65a4379132 Make index integration tests pass for SQLite (#3185) 2023-08-10 07:52:17 +00:00
Patryk Kwiatek 46897b4f99 Make findAndModify integration tests pass for SQLite (#3173) 2023-08-10 07:38:21 +00:00
Patryk Kwiatek f00c4d7f41 Make query integration tests pass for SQLite (#3182) 2023-08-10 10:29:21 +09:00
Chi Fujii 9a77e92eb0 Implement $expr query operator (#3163)
Closes #414.
2023-08-09 13:16:42 +02:00
Patryk Kwiatek b2aa1d319a Make aggregate documents compat tests pass for SQLite (#3150) 2023-08-08 08:34:02 +02:00
Chi Fujii 658b8e23a9 Use one implementation for finding path values (#3087)
Closes #2348.
2023-08-04 14:26:04 +04:00
Alexey Palazhchenko 60ae858f10 Use lock for SQLite metadata (#3146)
Closes #2747.
2023-08-03 21:29:32 +00:00
Patryk Kwiatek c90c01c4d1 Make distinct and explain command integration tests pass for SQLite (#3159) 2023-08-03 20:19:59 +00:00
Alexey Palazhchenko 5680884bd9 Simplify tests a bit (#3149) 2023-08-03 18:33:07 +00:00
Chi Fujii 89de046fe9 Implement $group stage _id expression (#3138)
Closes #2165.
2023-08-03 17:36:23 +02:00
Patryk Kwiatek cb8a799736 Make aggregate stats integration tests pass for SQLite (#3151) 2023-08-03 13:34:25 +00:00
Alexey Palazhchenko 957a563232 Bump deps, including Go (#3160) 2023-08-03 17:14:27 +04:00
Patryk Kwiatek 58fc918739 Make administration command integration tests pass for SQLite (#3152) 2023-08-03 15:04:04 +02:00
Alexey Palazhchenko 7809e6ef73 Expect some aggregate and insert tests to fail for SQLite (#3147) 2023-08-02 15:03:22 +04:00
Alexey Palazhchenko eb84addbcd Improve MongoDB/FerretDB error checking in tests (#3143) 2023-08-02 08:19:16 +00:00
Alexey Palazhchenko 9673b2d951 Bump deps (#3142) 2023-08-01 14:14:44 +02:00
Alexey Palazhchenko 1bc1488554 Cache SQLite tables metadata (#3124)
Closes #2747.
2023-07-31 16:12:59 +04:00
Alexey Palazhchenko e6f325f5c7 Prepare v1.7.0 release (#3132) 2023-07-31 14:56:35 +04:00
Patryk Kwiatek 66304b785b Support recursive operator calls for $sum aggregation accumulator (#3116) 2023-07-31 09:10:17 +00:00
Alexey Palazhchenko 48dad105f7 Fix blog post date 2023-07-28 15:51:11 +04:00
Alexey Palazhchenko 8c7ae89d85 Crush PNG images 2023-07-28 15:49:07 +04:00
Alexander Tobi FashakinandElena Grahovac e6e791eb82 Add blog post on Grafana Monitoring for FerretDB (#3106)
Closes FerretDB/engineering#77.

Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-07-28 15:48:10 +04:00
Alexey Palazhchenko fb189e8414 Tweak and document SQLite URI parameters (#3128)
Closes #3084.
2023-07-28 14:20:45 +04:00
Alexey PalazhchenkoandChi Fujii 972aa85167 Backport v1.6.1 fixes (#3107)
Closes #3113.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-07-27 14:39:29 +04:00
Alexey Palazhchenko 16d53f4ec7 Add basic metrics, logging and tracing for SQLite (#3123)
Closes #2909.
2023-07-27 11:32:35 +02:00
a398e3129d Validate database and collection names for SQLite handler (#2868)
Co-authored-by: Dmitry <dmitry.eremenko@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>

Closes #2749.
2023-07-26 18:52:51 +04:00
Alexey Palazhchenko ee41035602 Tweak blog post formatting 2023-07-26 17:59:08 +04:00
dependabot[bot] a5b79007cb Bump the tools group in /tools with 1 update (#3109)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-26 17:37:31 +04:00
Peter Farkas 16e700f118 Update MongoDB comparision blog post (#3119) 2023-07-26 17:23:06 +04:00
Peter Farkas ffc5c2e10c Update MongoDB comparision blog post (#3117) 2023-07-26 16:58:23 +04:00
Alexey Palazhchenko d422a4f3f1 Update changelog 2023-07-26 15:01:59 +04:00
Patryk Kwiatek 777222a290 Support _id aggregation operators for $group stage (#3096) 2023-07-26 01:42:24 +00:00
Elena Grahovac 19e1cdbfde Add daily progress principle to PROCESS.md (#3098) 2023-07-24 18:20:16 +00:00
Alexey Palazhchenko 192491358c Simplify checkdocs linter (#3104)
Closes #3078.
2023-07-24 22:06:30 +04:00
Wojciech Kropidlowskiandnoisersup c4b09c3aeb Add validating max nested document/array depth (#2882)
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2023-07-24 15:53:26 +00:00
Alexander Tobi Fashakin bb934e05fb Add blog post on "Using Mingo with FerretDB" (#3074) 2023-07-24 19:39:28 +04:00
krishna sindhur 76578f5988 Improve checkdocs linter (#3095)
Closes #3078.
2023-07-24 16:44:34 +04:00
b1ron 253c72f6ad Fix PLAIN auth with C# driver (#3012)
Closes #2516.
2023-07-24 16:28:08 +04:00
Alexander Tobi Fashakin bac7da5bd4 Update tags formatting in writing guide (#3097)
Closes #2847.
2023-07-24 10:48:35 +04:00
Patryk Kwiatek 68e566344e Replace test doubles with constants (#3024) 2023-07-24 10:46:10 +04:00
Alexey Palazhchenko 110cfa0d37 Allow to change SQLite URI in tests (#3092) 2023-07-20 20:31:05 +04:00
Alexey Palazhchenko a17dccf4b5 Remove dead code (#3093) 2023-07-20 20:30:40 +04:00
Alexander Tobi Fashakin eb5addc316 Update Blog Post (#3086) 2023-07-20 09:29:54 +04:00
Alexey Palazhchenko 2f80b0f541 Do not import commonerrors in tests (#3081) 2023-07-20 01:57:56 +00:00
Chi Fujii 4d534d602e Implement $sum aggregation standard operator (#3063)
Closes #2680.
2023-07-19 19:03:02 +02:00
Alexander Tobi Fashakin 9ac03afb02 Add blog post on "Community matters: fireside chat with Artem Ervits, CockroachDB" (#3066) 2023-07-19 18:09:29 +04:00
Alexander Tobi FashakinandAlexey Palazhchenko c9ec84a739 Tweak documentation and blog (#2992)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-07-19 14:11:44 +04:00
Alexander Tobi Fashakin 3e99c38565 Update blog post for FerretDB v1.6.0 (#3073) 2023-07-19 13:45:46 +04:00
Aditya salunkheandAlexey Palazhchenko f4d396e098 Merges fuzztool into envtool (#2645)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-07-19 09:57:11 +02:00
quasilyte 4106994cb0 Improve sjson package fuzzing (#3071)
Previously, only FuzzDocument was reaching the marshal+unmarshal
steps due to the document type assertion. If it wasn't a documentType,
the rest of the fuzzing function was skipped.

Since data validation is available only via `types.Document.ValidateData`,
a helper `isValidDocumentData` function is introduced. It may go
away in the future. But for now, it allows all sjson types to pass
the validation.

The other change is related to the way we fuzz sjson.
Instead of generating both values and schemes at the same time,
focus on one thing at the time: a fixed scheme against the generated
and fixed documents against the generated schemes.

This approach can be further improved by the increased number
of relevant corpus seed entries, but that's a different issue (#3067).

To answer the question is it any better: yes, it is.
The old approach skipped any cases where either of those two
was invalid; it was a very rare occasion for a fuzz runner
to generate a valid JSON for both document and scheme.
It's even more rare to get both of them even remotely compatible.

Closes #1273
2023-07-19 07:07:35 +00:00
Alexey Palazhchenko fbe7748d57 Update changelog (#3072) 2023-07-19 10:06:48 +04:00
Alexey Palazhchenko 873e07a212 Mark some tests as failing for SQLite (#3051) 2023-07-18 12:48:16 +00:00
Alexey Palazhchenko c5f38c1d8e Bump deps (#3064) 2023-07-18 07:31:53 +00:00
Alexander Tobi Fashakin 93944d62b5 Add blog post for FerretDB v1.6.0 (#3058) 2023-07-17 22:21:21 +04:00
Alexey Palazhchenko 2b469b4659 Prepare v1.6.0 release (#3056) 2023-07-17 16:54:03 +04:00
Chi Fujii fed08e6172 Clean up integration test provider setup (#3052)
Closes #2184.
2023-07-17 11:55:32 +00:00
Chi Fujii 70f33edca9 Fix update with query operator for upsert option (#3028)
Closes #2945.
2023-07-14 08:47:20 +00:00
Alexey Palazhchenko 21f9faf755 Ignore count.fields argument (#3048) 2023-07-14 07:19:54 +00:00
Chi Fujii c6eccb44f5 Remove Type() interface from aggregation stage (#3045)
Closes #2423.
2023-07-14 01:37:50 +00:00
b1ron 1352a471a6 Update database naming restrictions (#3042) 2023-07-13 14:08:57 +00:00
Alexey Palazhchenko 4bab468f42 Fix blog post formatting (#3047) 2023-07-13 17:49:14 +04:00
Alexander Tobi Fashakin 8622e585b6 Add blog post on "How to run FerretDB on top of StackGres" (#2869) 2023-07-13 17:38:01 +04:00
b1ronandAlexander Tobi Fashakin 8e2abca349 Add a note about setting the stable API version (#3035)
Co-authored-by: Alexander Tobi Fashakin <tobyton2008@yahoo.co.uk>
2023-07-13 12:50:44 +00:00
Alexey Palazhchenko 2540a9fabc Bump deps (#3034) 2023-07-12 09:39:55 +02:00
Alexey Palazhchenko a718823d9b Fix error checking in backend contracts (#3031) 2023-07-12 05:51:38 +00:00
Alexey Palazhchenko f38331f74d Fix killCursors edge case (#3030)
Closes #1514.
2023-07-12 05:35:04 +00:00
Chi Fujii f5deeb7288 Apply pushdown for limit (#2993)
Closes #2921.
2023-07-11 18:09:23 +00:00
Alexey Palazhchenko 9fc79b630e Expect renameCollection tests failures (#3007) 2023-07-11 17:47:23 +02:00
Alexander Tobi Fashakin 0c0f463966 Update blog post image (#3029) 2023-07-11 16:54:07 +04:00
Chi Fujii 19cf543057 Unskip findAndModify $set integration test for _id (#3025)
Closes #2741.
2023-07-11 10:30:11 +00:00
Chi Fujii d4af935d77 Update closed issue links (#3027) 2023-07-11 10:10:01 +00:00
Chi Fujii e834ee5177 Implement getParameters for authenticationMechanisms and featureCompatibilityVersion (#2985)
Closes #2822.
2023-07-11 07:58:11 +00:00
Alexey Palazhchenko db7fecf6e2 Make task all run only unit tests (#3023) 2023-07-11 07:38:06 +00:00
Alexey Palazhchenko c31e595492 Move logout to commoncommands (#3019) 2023-07-11 02:46:49 +00:00
Alexey Palazhchenko 8b32b84b3b Move testutil.TB to testtb.TB (#3022) 2023-07-11 00:56:32 +00:00
Alexey Palazhchenko 7f4d831cda Update issue URL (#3021) 2023-07-10 16:09:45 +00:00
Chi Fujii d50e794f4b Fix $set operator for updating _id (#3009)
Closes #2803.
2023-07-10 15:29:37 +00:00
quasilyte 7d70c74d68 Remove double decoding in unmarshalSingleValue
Remove double decoding in unmarshalSingleValue()

The callers of unmarshalSingleValue() always unmarshal
the inputs of this function into `json.RawMessage`.

These `json.RawMessage` contain valid JSON data
that can be parsed directly. Doing an Unmarshal of
`json.RawMessage` into `json.RawMessage` looks confusing
and not very useful.

This change is mostly about readability and code clarity.

As a side note, it also improves `sjson` unmarshalling performance.

    name                             old time/op    new time/op    delta
    Array/array_all/UnmarshalJSON-8    34.6µs ± 1%    21.7µs ± 1%  -37.36%  (p=0.000 n=10+9)
    Document/all/UnmarshalJSON-8        120µs ± 0%      77µs ± 1%  -36.04%  (p=0.000 n=9+10)
    [Geo mean]                         64.5µs         40.8µs       -36.70%

    name                             old speed      new speed      delta
    Array/array_all/UnmarshalJSON-8  1.62MB/s ± 1%  2.58MB/s ± 1%        ~  (p=0.000 n=10+9)
    Document/all/UnmarshalJSON-8     2.15MB/s ± 1%  3.37MB/s ± 1%  +56.37%  (p=0.000 n=9+10)
    [Geo mean]                       1.87MB/s       2.95MB/s       +57.97%

    name                             old alloc/op   new alloc/op   delta
    Array/array_all/UnmarshalJSON-8    41.4kB ± 0%    22.0kB ± 0%  -46.92%  (p=0.000 n=10+10)
    Document/all/UnmarshalJSON-8        117kB ± 0%      62kB ± 0%  -46.89%  (p=0.000 n=10+10)
    [Geo mean]                         69.6kB         37.0kB       -46.91%

    name                             old allocs/op  new allocs/op  delta
    Array/array_all/UnmarshalJSON-8       184 ± 0%       119 ± 0%  -35.33%  (p=0.000 n=10+10)
    Document/all/UnmarshalJSON-8          580 ± 0%       374 ± 0%  -35.52%  (p=0.000 n=10+10)
    [Geo mean]                            327            211       -35.42%
2023-07-10 14:47:19 +00:00
b1ron c35473a3e3 Ignore lsid field in all commands (#3010) 2023-07-10 14:05:42 +00:00
Alexey Palazhchenko c8e3fd1717 Crush PNG files to make them smaller (#3020) 2023-07-10 17:20:10 +04:00
Alexander Tobi Fashakin 7286b18c2d Add blog post about using NoSQLBooster with FerretDB (#2962) 2023-07-10 13:06:13 +00:00
Chi Fujii eb2943e67f Add MongoDB integration tests for maxTimeMS in find, aggregate and getMore (#2953)
Closes #1808.
2023-07-10 11:58:44 +02:00
Patryk Kwiatek 040b9eda40 Implement ping command for SQLite (#2965) 2023-07-07 15:33:27 +00:00
Alexey Palazhchenko ea31cf5200 Remove Tigris from tests (#3002)
Closes #2253.
2023-07-06 14:53:46 +00:00
Alexey Palazhchenko 5ee5a5b147 Remove Tigris code (#3001) 2023-07-06 15:22:46 +02:00
Alexey Palazhchenko 33e56119d2 Remove Tigris from documentation and builds (#2999) 2023-07-06 14:46:25 +02:00
Alexey Palazhchenko 265d72e739 Bump deps (#2998) 2023-07-06 14:46:05 +02:00
Alexey Palazhchenko 708d90a7b5 Implement killCursors command (#2939)
Closes #1514.
2023-07-06 10:24:20 +02:00
Alexey Palazhchenko 6b1a0324d7 Make a copy of the testing.TB interface (#2987) 2023-07-05 15:05:51 +02:00
Alexey Palazhchenko 78cfe4e7fe Mention SQLite in README.md (#2968) 2023-07-04 20:32:38 +02:00
Alexander Tobi Fashakin 86591eebbe Add blog post on FerretDB release v1.5.0 (#2958) 2023-07-04 14:25:15 +02:00
Alexey Palazhchenko 66bf3531fd Upload coverage results even for failed tests 2023-07-04 13:48:39 +02:00
Chi Fujii cbd9e06a33 Move find and aggregation cursor integration tests to getMore (#2952)
Closes #1733.
2023-07-04 00:30:49 +00:00
Alexey Palazhchenko f939bd2f8d Prepare v1.5.0 release 2023-07-03 12:26:35 +03:00
Alexey Palazhchenko 7fbc583180 Do not break fuzzing initialization (#2951)
Closes #2940.
Refs #1636.
2023-07-03 10:52:09 +03:00
0b347ae499 Convert SQLite directory to URI (#2922)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-07-03 10:49:59 +03:00
Dmitry 206abe8edb Add insert documents type validation (#2946) 2023-06-30 16:13:23 +00:00
Patryk Kwiatek 11a2389b35 Validate database names for SQLite handler (#2924) 2023-06-30 15:53:05 +00:00
Dmitry e78942e996 Re-implement DELETE for SQLite backend (#2907)
Closes #2751.
2023-06-30 15:29:12 +00:00
Elena Grahovac a2d3e43ff4 Implement proper response for createIndexes (#2936)
Closes #2845.
2023-06-30 18:32:09 +04:00
Chi Fujii a5cc636fab Use cursors with iterator in aggregate command (#2929)
Closes #2877.
Closes #1733.
2023-06-30 14:07:22 +04:00
Alexey Palazhchenko 5f0ddcbec8 Add better metrics for connections (#2938) 2023-06-29 09:55:09 +01:00
Alexey Palazhchenko d3fd02a625 Use cursors in find command (#2933)
Closes #1733.
2023-06-29 09:20:13 +04:00
Chi Fujii 7b6ccf3ac9 Run getMore integration test in one connection pool (#2878)
Closes #1807.
2023-06-29 01:31:24 +00:00
Alexey Palazhchenko 2d8f797e01 Set minWireVersion to 0 (#2937) 2023-06-28 20:57:32 +04:00
Alexey Palazhchenko f47f33dc90 Crush PNG images (#2931) 2023-06-28 16:29:12 +04:00
Alexey Palazhchenko 6161e73086 Update benchmark to use cursors (#2932) 2023-06-28 16:28:59 +04:00
Patryk Kwiatek ed330f74c4 Fix integration tests after bumping deps (#2934) 2023-06-28 14:24:32 +02:00
Alexey Palazhchenko 81312f9077 Disable permissions monitoring for now 2023-06-28 13:54:48 +04:00
Alexey Palazhchenko 483f927ade Bump deps, add permissions monitoring (#2930) 2023-06-28 12:50:38 +04:00
Alexander Tobi Fashakin 5b1e6b6154 Update incorrect blog post image (#2920) 2023-06-27 13:00:18 +04:00
Chi Fujii a15bb132ba Improve validation for createIndexes and dropIndexes (#2884)
Closes #2311.
2023-06-27 07:33:01 +00:00
Alexey Palazhchenko 4768f4706f Enable cursor support for PostgreSQL and SQLite (#2864) 2023-06-27 06:36:20 +00:00
Alexander Tobi Fashakin 9355acc652 Add blog post on "How to Configure FerretDB to work on Percona Distribution for PostgreSQL" 2023-06-27 09:34:01 +04:00
Patryk Kwiatek 49d338c5cd Fix collection name starting with dot validation (#2912) 2023-06-26 20:35:36 +02:00
Alexey Palazhchenko eb6170cb3f Fix cancelation signals propagation (#2908) 2023-06-26 12:29:04 +02:00
Alexey Palazhchenko 362758a1e3 Clean-up some code and comments (#2904) 2023-06-23 21:40:34 +04:00
Alexey Palazhchenko d2219f2d88 Add handler's metrics registration (#2895) 2023-06-23 19:28:56 +04:00
Chi Fujii 82f54cda49 Support cursors for aggregation pipelines (#2861)
Closes #1892.
2023-06-23 13:41:01 +00:00
Matt Cornillon a1ff494a25 Fix Github link for Dance repository (#2887) 2023-06-23 13:18:10 +00:00
Alexey Palazhchenko bbed64014d Tweak contributing guidelines (#2886) 2023-06-23 12:12:06 +00:00
Alexey Palazhchenko 00aeea87da Unskip test that passes now (#2885)
All TLS parameters are now a part of URI.

Closes #1759.
2023-06-23 10:17:54 +02:00
Patryk Kwiatek 72df2bc39d Add operators support for all aggregation stages (#2850) 2023-06-23 02:55:46 +00:00
Alexey Palazhchenko ced475653a Improve wire and sjson fuzzing (#2883) 2023-06-22 16:15:39 +02:00
Alexey Palazhchenko 0c6f3a5d32 Fix blog post's social preview 2023-06-21 18:54:28 +04:00
Alexander Tobi Fashakin 258bad366a Add blog post "FerretDB Demo: Launch and Test a Database in Minutes" (#2851) 2023-06-21 18:40:55 +04:00
Alexey Palazhchenko f4bb3f3950 Update contributing docs (#2828) 2023-06-21 13:50:17 +00:00
643b387baf Implement basic insert support for SAP HANA (#2732)
Co-authored-by: Lorant Polya <lorant.polya@sap.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-06-21 17:20:40 +04:00
Alexey Palazhchenko 93b80a4de2 Add basic tests for iterators (#2880) 2023-06-21 12:55:01 +00:00
Chi Fujii 24683b652a Update supported commands (#2876) 2023-06-21 12:33:59 +00:00
Alexey Palazhchenko c68c93681c Fix fuzzing corpus collection (#2879) 2023-06-21 11:16:30 +00:00
Alexey Palazhchenko f5edff7af1 Bump deps (#2875) 2023-06-21 10:49:52 +00:00
Alexey Palazhchenko 9d75840bea Implement count for SQLite (#2865) 2023-06-21 08:43:11 +00:00
Alexander Tobi Fashakin e653182d20 Add blog post on "Meet FerretDB at Percona University in Casablanca and Belgrade" (#2870) 2023-06-21 10:11:01 +04:00
Alexey Palazhchenko 6d3967c44d Unify tests for indexes (#2866) 2023-06-21 01:39:08 +00:00
Chi Fujii e3c51507c4 Support find singleBatch and validate getMore parameters (#2855)
Closes #2005.
2023-06-20 15:29:54 +00:00
Alexey Palazhchenko bc14e2422b Make it easier to debug GitHub Actions (#2860) 2023-06-20 15:02:29 +02:00
Chi Fujii 4d40b2b217 Add more validation and tests for $unset (#2853)
Closes #1432.
2023-06-19 18:49:52 +00:00
Alexander Tobi Fashakin 2b077d5236 Add blogpost on FerretDB v1.4.0 (#2858) 2023-06-19 22:34:02 +04:00
Alexey Palazhchenko 9a8085b7fd Prepare v1.4.0 release 2023-06-19 17:04:22 +04:00
Elena Grahovac 2e5997c85c Add user documentation about unique index creation (#2856)
Closes #2045.
2023-06-19 16:18:21 +04:00
Dmitry d38ab72dcb Implement createIndexes for unique indexes (#2814)
Closes #2045.
2023-06-16 21:07:30 +01:00
Patryk Kwiatek 846c0b9e67 Handle $type aggregation operator errors properly (#2829) 2023-06-16 10:18:04 +00:00
Alexey Palazhchenko de32c1cee3 Improve benchmarks (#2833) 2023-06-16 09:25:56 +01:00
Chi Fujii 1aa046527c Add more tests for $set and $addFields aggregation stages (#2844)
Validate
2023-06-16 03:12:06 +00:00
Alexey Palazhchenko c22588de74 Bump deps (#2849) 2023-06-16 02:39:09 +00:00
Dmitry 16465cd00b Fix unimplemented-non-default tag usages (#2848) 2023-06-16 11:18:51 +09:00
Alexey Palazhchenko 1ab2bf7cb1 Prevent tests deadlock when backend is down (#2846) 2023-06-15 16:58:25 +00:00
Dmitry 263c3fe70b Refactor getWholeParamStrict and GetScaleParam functions (#2831)
Closes #2812.
2023-06-15 14:25:26 +01:00
Shibasis Patel d4fa206bec Implement simple $addFields/$set aggregation pipeline stages (#2783)
Closes #2590.
2023-06-15 08:45:01 +09:00
Shibasis Patel bdfd6b1461 Implement $unset aggregation pipeline stage (#2676)
Closes #1432.
2023-06-14 15:58:48 +02:00
Dmitry 89d6562620 Fix running single test with task (#2832) 2023-06-13 18:47:52 +04:00
Patryk Kwiatek 9536babb87 Implement $type aggregation operator (#2789) 2023-06-13 13:08:12 +00:00
Elena Grahovac 8ad2489606 Add more test cases for index validation (#2752)
Closes #2311.
2023-06-13 06:41:31 +00:00
Chi Fujii 513efa677c Add skipped tests for find batchSize (#2825)
Closes #2005.
2023-06-12 15:23:02 +00:00
Alexey Palazhchenko 439fc693ea Fix blog post formatting 2023-06-09 17:46:19 +04:00
Alexander Tobi Fashakin 77d55860f7 Add Blog Post on Document Databases (#2204) 2023-06-09 15:23:35 +02:00
Elena Grahovac 345488deda Describe current test naming conventions in the contributing guidelines (#2821)
Closes FerretDB/engineering#66.
2023-06-09 17:07:24 +04:00
Alexey Palazhchenko 0f8f663ea3 Add textlint rules for en dashes and em dashes (#2823) 2023-06-09 08:16:35 +04:00
Alexey Palazhchenko c2fd309310 Shard integration tests (#2820) 2023-06-08 15:31:58 +00:00
Chi Fujii 38776c61be Check error message in non compat integration tests (#2806)
Closes #2599.
2023-06-08 16:17:58 +02:00
Wojciech Kropidlowski 1c1c43515c Implement envtool tests shard command (#2773)
Closes #2692.
2023-06-08 11:38:14 +00:00
Alexey Palazhchenko 33865a6dab Bump MongoDB Go driver (#2817) 2023-06-08 10:20:34 +00:00
Alexey Palazhchenko 3fddc41e10 Bump MongoDB to 6.0.6 (#2727) 2023-06-08 09:40:25 +01:00
Jeremy Phua 1b7ff7eee4 Fix free monitoring tests for MongoDB 6.0.6 (#2784)
Closes #2735.
2023-06-07 10:27:12 +00:00
Alexey Palazhchenko c6685e6580 Bump Go to 1.20.5 (#2810) 2023-06-07 10:07:52 +02:00
Chi Fujii 1bfc450dd3 Use iterator in $sum aggregation accumulator (#2799)
Closes #2706.
2023-06-07 00:48:46 +00:00
Patryk Kwiatek 834d75bf8a Improve testDistinctCompat (#2782) 2023-06-06 14:05:40 +00:00
Alexey Palazhchenko 5c385010fa Fix workflow concurrency group 2023-06-06 17:05:20 +04:00
Alexey Palazhchenko 1c3df01f9b Merge test workflows to fix coverage calculation (#2801) 2023-06-06 16:52:02 +04:00
Alexey Palazhchenko 6ddbc37d8f Refactor SQLite handler (#2731) 2023-06-06 08:45:17 +00:00
Alexey Palazhchenko 27dab486e0 Bump deps (#2798) 2023-06-06 11:50:15 +04:00
Alexey Palazhchenko 96f3046069 Remove old temporary edit 2023-06-05 21:41:49 +04:00
Alexey Palazhchenko 60c84b9185 Add release tag to release blog post (#2792) 2023-06-05 21:39:49 +04:00
Alexander Tobi Fashakin 5d57282ff1 Add blog post for FerretDB v1.3.0 (#2791) 2023-06-05 20:55:20 +04:00
Alexey Palazhchenko 2397140f0c Make testutil.Logger easier to use (#2790) 2023-06-05 19:18:34 +04:00
Alexey Palazhchenko 200c42a65e Prepare v1.3.0 release (#2787) 2023-06-05 16:28:22 +04:00
Chi Fujii 4db2ad02ec Improve authentication documentation (#2737)
Closes #2663.
2023-06-05 16:14:28 +04:00
Chi Fujii 90a70a11f5 Remove findAndModify integration tests with $ prefixed key for MongoDB 6.0.6 compatibility (#2785)
Closes #2736.
2023-06-05 11:58:03 +00:00
Dmitry a2a4ddbdc5 Add more handler tests (#2769)
Closes #2704.
2023-06-05 00:32:30 +00:00
Alexey Palazhchenko 8c818a49b2 Implement a few command stubs (#2777) 2023-06-02 12:10:16 +00:00
Chi Fujii 1d6997b4e3 Fix findAndModify tests for MongoDB 6.0.6 (#2779)
Closes #2736.
2023-06-02 11:36:31 +01:00
4fae741430 Document aggregation operations (#2672)
Closes #2603.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-06-02 08:56:47 +00:00
Patryk Kwiatek 325c19cfab Replace document slices with iterators (#2730) 2023-06-02 08:19:36 +00:00
Patryk Kwiatek 96858fdaaa Fix path collisions for multiple update operators (#2713) 2023-06-02 07:43:51 +00:00
Alexey Palazhchenko ede2468010 Clean-up lazyerrors, use them in more places (#2770) 2023-06-02 07:06:39 +00:00
Alexey Palazhchenko 70d692c989 Remove the need to call DeepCopy in some places (#2774)
Closes #2754.
2023-06-02 08:30:02 +02:00
Alexey Palazhchenko 40fa532cbf Update golangci-lint config (#2772) 2023-06-02 04:46:39 +00:00
Alexey Palazhchenko c60534b005 Trigger GC to run finalizers (#2771) 2023-06-02 10:10:32 +09:00
Alexey Palazhchenko bddfa9ee15 Check for nil values in iterators explicitly (#2758) 2023-06-01 10:31:12 +00:00
Alexey Palazhchenko 14534a5ed0 Simplify CountIterator (#2759) 2023-06-01 13:54:14 +04:00
b1ron 4a69d97753 Allow query to be type null in distinct command (#2658)
Closes #2236.
2023-06-01 09:40:06 +09:00
Elena Grahovac ad0e824a37 Call ListSpecifications driver's method in tests to check indexes (#2746)
Closes #2332.
2023-05-31 15:47:44 +02:00
Alexey Palazhchenko d58fb17b93 Bump deps (#2745) 2023-05-31 09:41:57 +00:00
Elena Grahovac a97233654a Make testFindAndModifyCompat work with compatTestCaseResultType (#2739)
Closes #2734.
2023-05-31 09:16:04 +01:00
Alexey Palazhchenko e4b218517b Reformat and lint more documentation files (#2740)
Closes #2738.
2023-05-30 20:20:50 +04:00
Dmitry f98814547c Unify test file names (#2709) 2023-05-30 15:01:30 +00:00
Elena Grahovac 6cca151853 Add formatter for markdown tables (#2693)
Closes #1846.
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-05-30 14:15:55 +00:00
Patryk Kwiatek f22f5e1175 Don't use sjson.GetTypeOfValue where it shouldn't be used (#2728) 2023-05-30 13:39:50 +00:00
Elena Grahovac 978278c472 Add more consistency to table tests' field names (#2717)
Closes #2599.
2023-05-30 14:34:02 +02:00
Chi Fujii d924c67d70 Add aggregation operator tests (#2724)
Refs #2679.
2023-05-30 09:45:14 +00:00
Wojciech Kropidlowski 439ec96798 Add supported aggregations to the buildInfo output (#2716)
Closes #2650.
2023-05-30 04:19:59 +00:00
Alexey Palazhchenko c905be6498 Fix telemetry reporter logging (#2707) 2023-05-30 07:42:11 +04:00
Chi Fujii ba0005b237 Add logout test for all backend (#2726)
Closes #2639.
2023-05-29 17:56:35 +00:00
Alexander Tobi Fashakin 3d14095db6 Update $project in Supported Commands (#2710) 2023-05-29 12:39:14 +00:00
Alexey Palazhchenko 4641e0092b Fix .deb and .rpm package versions (#2725) 2023-05-29 10:43:40 +00:00
Alexey Palazhchenko 59a9620477 Bump deps (#2702) 2023-05-29 10:02:11 +00:00
Lorant PolyaandLorant Polya 631580d043 Include Hana in integration tests (#2715)
Co-authored-by: Lorant Polya <lorant.polya@sap.com>
2023-05-29 09:32:38 +00:00
Wojciech Kropidlowski 6a63df5d66 Implement logout command (#2639)
Closes #1750.
2023-05-29 07:51:28 +00:00
Alexey Palazhchenko 0992e5f8a4 Make go test -list=. work (#2718) 2023-05-29 01:11:23 +00:00
Jeremy Phua 43a40249ae Implement envtool version command (#2714)
Closes #2684.
2023-05-26 16:30:02 +00:00
Chi Fujii 94537f32c2 Implement positional operator in projection (#2688)
Closes #1709.
2023-05-26 15:16:02 +02:00
Patryk Kwiatek d0022fb2c3 Fix _id formatting in update error messages (#2711) 2023-05-25 12:00:44 +00:00
Patryk KwiatekandChi Fujii 9da78855dc Aggregation operators refactor (#2664)
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-05-25 11:19:26 +02:00
Alexey Palazhchenko c80629d25a Update changelog 2023-05-24 16:59:11 +04:00
Alexey Palazhchenko 7a2bc4ce37 Return a better error for authentication problems (#2703)
Closes #2663.
2023-05-24 16:27:00 +04:00
Alexey Palazhchenko 68917806d2 Run workflows for release branches 2023-05-24 16:07:11 +04:00
77f169060b Fix reporting of updates availability (#2653)
Closes #2624.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-05-24 15:50:45 +04:00
Elena Grahovac fef76e137a Clarify what's left in handling OP_MSG checksum (#2677)
Closes #2691.
2023-05-24 11:58:38 +02:00
Dmitry 72503d4ad2 Add distinct command errors test (#2687)
Closes #2231.
2023-05-24 08:44:25 +00:00
Dmitry 896d530025 Refactor gitBinaryMaskParam function (#2634)
Closes #2465.
2023-05-23 01:36:59 +00:00
Alexander Tobi Fashakin f9e8a4de28 Add release blog post for FerretDB version 1.2.0 (#2686) 2023-05-22 19:53:26 +04:00
Alexey Palazhchenko 6170f970a6 Bump timeout for building packages 2023-05-22 17:46:23 +04:00
Alexey Palazhchenko 3153c8fbf1 Prepare v1.2.0 release 2023-05-22 16:39:45 +04:00
Dmitry d07d80b086 Implement SQLite update and delete commands (#2674) 2023-05-22 09:52:35 +04:00
wqhhust cc02a656db Fix index creation on nested fields (#2637)
Closes #2606.
2023-05-19 15:42:42 +00:00
Chi Fujii bd5274f653 findAndModify returns command error (#2646)
Closes #1903.
2023-05-19 17:07:20 +02:00
Alexey Palazhchenko faddeeb9ec Create SQLite directory if needed (#2673) 2023-05-19 16:20:21 +04:00
Alexey Palazhchenko a075023aa5 Bump deps (#2671) 2023-05-19 08:19:28 +00:00
Alexey Palazhchenko 65982dc47b Run integration tests for sqlite handler (#2666) 2023-05-19 05:26:38 +00:00
wqhhust 002d3759b6 Add test case for read in envtools (#2657)
Closes #2615.
2023-05-19 05:57:06 +08:00
Dmitry 4da644d09c Implement query request for SQLite backend (#2665) 2023-05-18 22:15:54 +04:00
Alexander Tobi Fashakin 156ffa973a Add blog post on "Meteor and FerretDB" (#2654) 2023-05-18 22:14:43 +04:00
Alexey Palazhchenko 50862eb6e5 Add Query to the common backend interface (#2662)
Closes #2387.
2023-05-18 19:51:42 +04:00
Dmitry a32335b090 Implement metadata storage (#2656)
Closes #2387.
2023-05-18 17:55:19 +04:00
Alexey Palazhchenko acba50c2f2 Add basic observability into backend interfaces (#2661)
Closes #2387.
2023-05-18 15:39:27 +04:00
Alexey Palazhchenko 43be3d2d3b Move common commands to commoncommands (#2660)
Refs #2650.
2023-05-18 09:40:23 +01:00
Patryk Kwiatek 1c6136f023 Aggregation expression refactor (#2644) 2023-05-18 01:40:48 +00:00
Chi FujiiandAlexey Palazhchenko 2716382103 Fix tests to assert correct error (#2546)
Closes #2545.
Closes #2345.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-05-18 00:51:38 +04:00
Alexey Palazhchenko 749aee04af Implement some SQLite backend commands (#2655) 2023-05-17 17:37:17 +00:00
Elena Grahovac 5ed655bcb8 Add tests for aggregation expressions with dots in $group aggregation stage (#2636)
Closes #2166.
2023-05-17 16:06:09 +00:00
Alexey Palazhchenko c06753704d Add SQLite handler flags (#2651)
Closes #2387.
2023-05-17 13:33:10 +04:00
Alexey Palazhchenko a7c6d2441c Update documentation formatting (#2640) 2023-05-17 10:42:30 +04:00
Alexey Palazhchenko 1d81e46de0 Add common backend interface prototype (#2619)
Closes #1095.
2023-05-17 00:57:53 +00:00
Chi Fujii 26196388d7 Cleanup projection (#2641)
Closes #2430.
2023-05-16 19:42:43 +00:00
wqhhust 5b96bd84e6 Implement envtool shell read subcommand (#2626)
Closes #2615.
2023-05-16 16:37:45 +00:00
Alexey Palazhchenko b863106afd Return int64 values for dbStats and collStats (#2642) 2023-05-16 16:59:06 +01:00
Elena Grahovac 0e853c9714 Fix a bug with unset field sorting (#2638) 2023-05-15 19:28:11 +01:00
Chi Fujii 93a6eb6e47 Separate codebase for aggregation $project and query projection (#2631)
Closes #2430.
2023-05-15 13:32:30 +00:00
Teej4y 89c2880ebd Verify message checksum (#2540) 2023-05-15 12:30:26 +00:00
Dmitry 87b0a6ee02 Use ExtractParameters in handlers (#2620)
Closes #2465.
2023-05-15 09:20:05 +00:00
Christiano Anderson bab38aeab4 Fix typo on RPM package file name (#2628) 2023-05-13 22:24:55 +04:00
Alexey Palazhchenko 3ba16377d8 Fix a typo in a blog post (#2611) 2023-05-12 15:19:12 +00:00
b1ron 9a52d87ad9 Add a README.md file for assertions (#2569)
Closes #2543.
2023-05-12 14:44:17 +00:00
Chi Fujii 2516bb192e Support dot notation in projection (#2536)
Closes #2430.
2023-05-12 14:08:08 +00:00
Dmitry f98dc956e7 Fix count's query parameter (#2622) 2023-05-12 12:52:50 +00:00
Patryk Kwiatek 11a979fa49 Fix exponential backoff minimum duration (#2578)
Closes #1720.
2023-05-12 15:08:51 +04:00
Patryk Kwiatek 16c6a18ec6 Cleanup insert command (#2609)
Closes #2510.
2023-05-12 09:24:45 +00:00
wqhhust 9249bc4775 Cleanup old Docker images (#2533)
Closes #353.
2023-05-12 10:38:59 +04:00
Alexey Palazhchenko de38f7992d Simplify envtool shell subcommands (#2614) 2023-05-12 01:05:20 +00:00
b1ron 1a3a30102e Fix compatibility with C# driver (#2613)
Closes #2516.
2023-05-11 19:19:45 +00:00
Alexey Palazhchenko 3bcad09dd6 Make protocol-level crashes easier to understand (#2610)
Closes #2516.
2023-05-11 19:44:13 +01:00
Alexey Palazhchenko d2547608d0 Add sqlite handler stub (#2608)
Closes #1095.
2023-05-11 19:58:15 +04:00
Alexey Palazhchenko 22716341fb Add basic postcondition checker for errors (#2607)
Closes #1095.
2023-05-11 15:45:02 +00:00
Wojciech Kropidlowski 0665e99b6a Add shell subcommands (mkdir, rmdir) in envtool (#2596)
Closes #2548.
2023-05-11 12:37:10 +00:00
Dmitry 7aa13c34b9 Extract handler parameters from corresponding structure (#2513)
Closes #2465.
2023-05-11 14:01:54 +02:00
Alexey Palazhchenko e62ea7ff33 Add documentation for .rpm packages (#2604) 2023-05-11 07:30:10 +00:00
Alexey Palazhchenko 62625872f1 Relax PostgreSQL connection checks (#2602) 2023-05-11 06:56:04 +00:00
Patryk Kwiatek 136df12b6a Add experimental integration test flag for pushdown sorting (#2595) 2023-05-11 00:42:11 +00:00
raeidish 09298acb14 Perform insertMany in a single transaction (#2532) 2023-05-10 15:42:09 +00:00
Alexey Palazhchenko 05d493a525 Update blog post image for 1.1.0 (#2601) 2023-05-10 15:19:10 +04:00
Teej4y 0485ea348e Remove TODO comment for closed issue (#2573) 2023-05-10 05:18:32 +00:00
ccaf200fb6 Add FerretDB v1.1.0 release blog post (#2594)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Peter Farkas <53900920+ptrfarkas@users.noreply.github.com>
2023-05-09 17:10:42 +02:00
Alexey Palazhchenko 91525918be Bump deps (#2592) 2023-05-09 15:08:13 +01:00
Alexey Palazhchenko 3344cbb98b Prepare v1.1.0 release (#2576) 2023-05-09 13:32:57 +04:00
Alexey Palazhchenko c92033d723 Merge no ci label into not ready (#2580) 2023-05-09 09:43:31 +04:00
0ffed3856e Implement renameCollection command (#2343)
Closes #1517.

Co-authored-by: noisersup <patryk@kwiatek.xyz>
Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
Co-authored-by: Dmitry <dmitry.eremenko@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-05-08 23:27:15 +04:00
Alexey Palazhchenko 021a4b6510 Small refactoring (#2575) 2023-05-08 18:58:26 +00:00
Elena Grahovac 050702e34a Stop listener in integration tests if connection can't be established (#2577) 2023-05-08 18:24:14 +00:00
Wojciech Kropidlowski 5386d51248 Fix runCommand's inserts of documents without _ids (#2574)
Closes #1714 .
2023-05-08 18:50:21 +01:00
Alexey Palazhchenkoandnoisersup 2d6c82e975 Refactor integration benchmarks (#2537)
Co-authored-by: noisersup <patryk@kwiatek.xyz>
2023-05-08 16:23:31 +00:00
Alexey Palazhchenko 0dd5c8c0cd Tweak issue templates and contributing docs (#2572) 2023-05-08 15:47:24 +00:00
Alexey Palazhchenko ce7ca66ab2 Recover from more errors, close connection less often (#2564)
Closes #2394.
Refs #2545.
Refs #2412.
2023-05-05 16:59:30 +04:00
Alexander Tobi Fashakin 4bf7563b52 Document createIndexes, listIndexes, and dropIndexes commands (#2488)
Closes #2271.
2023-05-05 10:08:04 +04:00
Wojciech Kropidlowski 27fc560b20 Add proper CLI to envtool - envtool setup subcommand (#2570)
Closes #2550.
2023-05-04 23:17:57 +01:00
Wojciech Kropidlowski 71b70aafdc Improve handling of os-release files (#2553)
Closes #2500.
2023-05-04 18:58:04 +00:00
fenogentov 9884aecfc9 Improve fuzzing with recorded seed data (#2392)
Closes #2100.
2023-05-04 20:53:46 +04:00
Alexey Palazhchenko 5a7465c12f Use our own Prettier Docker image (#2535) 2023-05-04 14:58:34 +00:00
Dmitry 4141270b78 Refactor handlers params (#2529)
Closes #2465.
2023-05-04 08:15:17 +00:00
Dmitry 03575a72f0 Fix empty projections panic (#2562)
Closes #2551.
2023-05-03 16:13:51 +00:00
Chi Fujii a1aee0233f Paths with dollar signs in sort returns error (#2534)
Closes #2259.
2023-05-03 12:46:00 +00:00
Patryk KwiatekandElena Grahovac 5aca87b024 Pushdown simplest sorting for aggregate command (#2530)
Closes #2438.

Co-authored-by: Elena Grahovac <elena@grahovac.me>
2023-05-03 12:02:18 +00:00
Alexey Palazhchenko 717f0fa34d Do various small cleanups (#2561) 2023-05-03 11:16:02 +00:00
Alexey Palazhchenko 30dd84203a Add helpers for iterators and generators (#2542) 2023-05-03 14:47:35 +04:00
raeidish ff10e0e85e Remove version and name assertions in integration tests (#2552)
Closes #2500.
2023-05-02 13:37:49 +00:00
Alexey Palazhchenko 93e6981b7c Document not ready issues label (#2544) 2023-05-02 12:30:20 +00:00
Wojciech KropidlowskiandAlexey Palazhchenko 91377b90c1 Handle absent os-release file (#2541)
Closes #2500.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-05-02 09:48:23 +01:00
Alexey Palazhchenko cf0328f6db Set carryforward flags 2023-05-01 12:10:34 +04:00
Chi Fujii 93190b778c Check test database name length in compat test setup (#2527)
Closes #2065.
2023-05-01 10:01:24 +09:00
Craig Pastro 6e0bd57931 Move handlers/pg/pjson to handlers/sjson (#2531)
Closes #2495.
2023-04-30 12:37:23 +02:00
Patryk Kwiatekandmergify[bot] 9b053712e8 Pushdown simplest sorting for find command (#2506)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-04-28 18:52:02 +02:00
Chi Fujii 203467c837 Minor cleanup of blog post linter for slug (#2526)
Closes #2459.
2023-04-28 12:18:09 +00:00
Wojciech Kropidlowski 5e8b75e811 Add identifying Arch Linux version in hostInfo command (#2525)
Closes #2500.
2023-04-28 09:39:00 +00:00
Elena Grahovac f46ca4ca93 Small addition to YAML formatter usage (#2524)
Closes #1301.
2023-04-28 08:59:47 +02:00
Elena Grahovac eaaa9b5b37 Fix collStats for Tigris (#2520)
Closes #2505.
2023-04-27 14:55:31 +02:00
Chi Fujii c2c1d1f089 Update on conflicting dot notation path returns error (#2521)
Closes #1922.
2023-04-27 11:51:21 +01:00
Yaroslav Sizikov 408876202f Allow database name contain uppercase characters (#2504)
Closes #2451.
2023-04-26 20:46:03 +00:00
wqhhust 11eb71d735 Add a YAML formatter (#2485)
Closes #1301 .
2023-04-26 17:24:04 +00:00
Chi Fujii 91de3dbaf7 findAndModify returns error on $set operator setting _id (#2507)
Closes #2461.
2023-04-26 16:49:36 +00:00
Lorant Polya 438fcea15d Handle create and drop commands in Hana handler (#2458) 2023-04-26 16:12:48 +00:00
raeidish 4c8078382e Add linter for checking blog posts (#2459)
Closes #2432.
2023-04-26 15:02:43 +00:00
Patryk Kwiatek cf67017998 Add coveralls.io integration (#2483) 2023-04-26 14:11:08 +00:00
raeidish a8cd6b8f8d add InsertMany benchmark (#2518) 2023-04-26 13:34:00 +00:00
Elena Grahovac fc0dac8ede Increase timeout for tests (#2508) 2023-04-26 14:57:56 +02:00
Chi Fujii ca200f5b0e Aggregation stages uses iterator (#2480)
Closes #1889.
2023-04-26 09:22:31 +00:00
Chi Fujii ce28270101 New version notification uses update_available from telemetry (#2496)
Closes #1751.
2023-04-25 16:58:00 +00:00
Dmitry 02eb177b9b Return unsupported operator error for $ projection operator (#2512)
Closes #2492.
2023-04-25 16:24:23 +00:00
Elena Grahovac e44c4d390b Add more documentation-related items to definition of done (#2494) 2023-04-24 10:21:00 +00:00
Patryk Kwiatek 2c858f696d Add benchmark for replacing large document (#2482) 2023-04-24 04:44:37 +00:00
Chi Fujii 1875ff9f7b Update blog file names to match with slug (#2497)
Closes #2432.
2023-04-24 04:11:25 +00:00
Craig Pastro a7e36aaa2d Enable debugging tracing of SQL queries (#2467)
Closes #2389.
2023-04-21 19:07:41 +00:00
Dmitry 2cddf07178 Implement $project pipeline aggregation stage (#2383)
Closes #2382.
2023-04-21 16:51:40 +00:00
Yaroslav Sizikov b1cc4e8b11 Handle envtool panic on timeout (#2499)
Closes #2486.
2023-04-21 13:23:11 +01:00
Dmitry 1479b0c3a5 Implement projection fields assignment (#2484)
Closes #2446.
2023-04-20 11:03:26 +00:00
Alexey Palazhchenko f0958a9e21 Restore Go caches for packages building 2023-04-19 19:06:39 +04:00
Dmitry ef29eb5091 Fix query projection for top level fields (#2386)
Closes #2299.
Closes #537.
2023-04-19 10:46:27 +00:00
Alexey Palazhchenko 3f0e29071a Small documentation tweaks (#2452) 2023-04-19 13:56:37 +04:00
Chi Fujii c2a90d3d77 Refactor aggregation (#2463) 2023-04-19 18:25:47 +09:00
Alexey Palazhchenko cb6bf40647 Bump deps (#2479) 2023-04-19 08:25:26 +00:00
Alexey Palazhchenko dfb96498da Use separate environments for blog and docs 2023-04-19 11:44:28 +04:00
Chi Fujii 6be6685d2a Add tests to findAndModify on $exists operator (#2422) 2023-04-19 06:12:28 +00:00
4404e499f9 Introduce integration benchmarks (#2381)
Closes #2378.

Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-04-18 23:27:38 +04:00
Patryk Kwiatek f1b35e1f4f Implement blog posts previews (#2433) 2023-04-18 13:47:45 +00:00
Elena Grahovac e3c6cf8a91 Fix SchemaStats to return correct data (#2426)
Closes #1346.
Closes #1068.
2023-04-18 13:17:07 +00:00
Alexey Palazhchenko fa07a7784a Add workaround for CockroachDB issue (#2464)
Refs cockroachdb/cockroach#101715.
2023-04-18 09:09:44 +00:00
Chi Fujii ec496f041d Minor cleanup of exponential backoff with jitter (#2443) 2023-04-18 08:38:30 +00:00
Elena Grahovac 548114fdab Validate scale param for dbStats and collStats correctly (#2418)
Closes #1346.
2023-04-18 09:44:27 +02:00
Alexander Tobi Fashakin f901668c14 Update blog post on Using FerretDB with Studio3T (#2457) 2023-04-17 23:19:00 +04:00
Aleksander Alekseev 155f4d6c4a -race is not supported on riscv64 (#2456) 2023-04-17 22:22:24 +04:00
Alexey Palazhchenko b4f6f7e5fc Rename testing flag (#2437) 2023-04-17 18:10:48 +00:00
Alexey Palazhchenko 0a3a45c388 Fix YAML indentation (#2455) 2023-04-17 21:41:04 +04:00
547fc46ac3 Add blogpost - Using FerretDB with Studio 3T (#2454)
Co-authored-by: Alexander Tobi Fashakin <alexander.fashakin@ferretdb.io>
Co-authored-by: Peter Farkas <53900920+ptrfarkas@users.noreply.github.com>
2023-04-17 21:17:31 +04:00
Alexey Palazhchenko 65105ba99c Add image for a future blog post (#2453) 2023-04-17 20:58:59 +04:00
Alexey Palazhchenko cc34dfc541 Update PR template (#2441) 2023-04-17 09:31:15 +00:00
Alexey Palazhchenko 06b2fa33f6 Make it harder to misuse iterators (#2428) 2023-04-17 09:01:20 +00:00
Alexey Palazhchenko 53a76ecb87 Remove a few double spaces (#2431) 2023-04-17 11:45:12 +04:00
Craig Pastro d7e609cc24 Migrate to pgx/v5 (#2439)
Closes #1717.
2023-04-17 15:08:14 +09:00
AuruTus 4d47717a1e Add more detailed PR guides in CONTRIBUTING.md (#2435)
Closes #2427.
2023-04-16 17:39:01 +04:00
Alexey Palazhchenko 193c9d4249 Add Mergify rules for blog posts (#2434) 2023-04-14 21:22:10 +04:00
Alexey Palazhchenko a7073d700e Improve documentation for Docker (#2396)
Closes FerretDB/engineering#27.
2023-04-14 16:22:20 +04:00
Ruben Klink 12342c7bea Use exponential backoff with jitter (#2419)
Closes #1720.
2023-04-14 05:48:03 +00:00
Peter Farkas 486709fa68 Update README.md
Added Managed FerretDB at Cloud providers
2023-04-14 01:24:27 +02:00
Patryk Kwiatek 5adf466b7f Compress CI artifacts (#2424)
Closes #2086.
2023-04-13 18:31:04 +02:00
Eric Gallager 669baef762 Update README.md to link to SSPL (#2420) 2023-04-13 06:24:16 +00:00
Patryk Kwiatek 85cc55f5d9 Add query pushdown documentation (#2339)
Closes #1956.
2023-04-12 23:02:31 +00:00
Peter Farkas 6934d0f45f Update 2023-04-11-ferretdb-1-0-ga-opensource-mongodb-alternative.md 2023-04-12 20:29:17 +02:00
Peter Farkas fd7c76b63a Update 2023-04-11-ferretdb-1-0-ga-opensource-mongodb-alternative.md 2023-04-12 20:20:06 +02:00
Chi Fujii bd57de7e7f Parallel tests are consistently used in integration tests (#2409)
Closes #2394.
2023-04-12 14:51:04 +00:00
Alexey Palazhchenko 5d8faeb876 Update documentation for index options (#2417) 2023-04-12 14:20:25 +00:00
Chi Fujii 15f35e0754 Fix findAndModify for $exists query operator (#2385) 2023-04-12 14:44:49 +01:00
Alexey Palazhchenko d220682d36 Bump deps (#2408) 2023-04-12 15:11:49 +02:00
Chi Fujii 0eb2d8f188 Deprecated error cleanup (#2411) 2023-04-12 08:26:08 +00:00
3530ddf17d Add blogpost: Announcing FerretDB 1.0 GA - a truly Open Source MongoDB alternative (#2397)
Co-authored-by: Alexander Tobi Fashakin <alexander.fashakin@ferretdb.io>
Co-authored-by: Peter Farkas <53900920+ptrfarkas@users.noreply.github.com>
2023-04-11 16:15:39 +04:00
Alexey Palazhchenko 25491180f5 Fix types order linter (#2391)
Closes #1630.
2023-04-11 11:27:44 +01:00
Alexey Palazhchenko f2027f1185 Disable integration tests for Tigris for now 2023-04-10 12:58:58 +04:00
Alexey Palazhchenko f9065d1f15 Add comments to our documentation workflow (#2390) 2023-04-07 20:58:08 +01:00
Alexey Palazhchenko e2e95e5819 Fix version.txt generation for git tags (#2388)
Closes #2368.
2023-04-07 15:22:14 +00:00
Alexander Tobi Fashakin e1693ddd87 Update writing guide (#2373) 2023-04-06 08:04:56 +00:00
Chi Fujii 90aace9487 Document how to get logs (#2355) 2023-04-05 18:40:28 +00:00
Patryk Kwiatek 309e97009f Make example docker compose file restart on failure (#2376) 2023-04-05 15:34:36 +00:00
Alexey Palazhchenko 29343ad90a Bump dependencies (#2367) 2023-04-05 16:35:21 +04:00
Alexey Palazhchenko a1ad7cfd7f Make Docker Compose flags compatible (#2377) 2023-04-05 16:33:35 +04:00
Alexey Palazhchenko c94b1363ae Do not mark released binaries as dirty (#2371)
Closes #2368.
2023-04-05 11:35:59 +00:00
Alexey Palazhchenko 972391d0fc Use draft instead of unlisted (#2372)
Closes #2370.
2023-04-05 10:10:40 +00:00
Alexey Palazhchenko 37f0565eb9 Make it easier to use Docker-related Task targets (#2358) 2023-04-04 13:35:53 +00:00
Alexey Palazhchenko 207ba25572 Allow setting "package" variable with a testing flag (#2357) 2023-04-04 13:22:27 +00:00
Alexey Palazhchenko eafe7f508f Third time's a charm 2023-04-04 16:59:27 +04:00
Alexey Palazhchenko 3f0f473150 Fix URL in the bug template (again) 2023-04-04 16:58:07 +04:00
Alexey Palazhchenko 612b0a8523 Fix URL in the bug template 2023-04-04 16:55:52 +04:00
Chi Fujii 2a5f745171 Document test script (#2353) 2023-04-04 16:54:01 +04:00
Alexey Palazhchenko 6734769da7 Prepare v1.0.0 release! 🎉
Closes #1.
2023-04-03 21:19:58 +04:00
Elena Grahovac 6cd610fa10 Describe supported fields for $collStats aggregation stage (#2352)
Closes #1416.
2023-04-03 15:40:10 +00:00
Alexey Palazhchenko 36adeea64d Improve flags documentation (#2331)
Closes #2327.
2023-04-03 15:25:32 +00:00
Alexey Palazhchenko ccdf60dde7 Apply skip before limit (#2351) 2023-04-03 18:52:58 +04:00
Elena GrahovacandChi Fujii 3059e501aa Support count and storageStats fields in $collStats aggregation pipeline stage (#2338)
Closes #1416.

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-04-03 18:28:01 +04:00
Alexey Palazhchenko 720da6344e Ignore unique index option for now (#2350) 2023-04-03 13:18:28 +00:00
Alexey Palazhchenko 2028c58ed0 Use runner groups instead of labels 2023-04-03 17:03:15 +04:00
Patryk Kwiatek 518b4f2835 Implement $unwind aggregation pipeline stage (#2294)
Closes #1442.
2023-04-03 12:44:53 +00:00
Alexey PalazhchenkoandPeter Farkas a2e584db8e Update FerretDB descriptions (#2281)
Co-authored-by: Peter Farkas <53900920+ptrfarkas@users.noreply.github.com>
2023-04-03 15:29:12 +04:00
Alexander Tobi Fashakin b7f75fbd79 Update documentation sidebar (#2347)
Closes #2266.
2023-04-03 14:30:03 +04:00
Dmitry 3b6fc9fd3e Implement $skip aggregation pipeline stage (#2310)
Closes #1438.
2023-04-03 12:39:58 +04:00
Patryk Kwiatek f0d6f83e4e Improve large numbers initialization in test data (#2324) 2023-03-31 15:41:21 +00:00
Alexey PalazhchenkoandElena Grahovac cc6c47338a Add partial support for collStats, dbStats and dataSize (#2322)
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
2023-03-31 16:07:53 +01:00
Patryk Kwiatek 86cc70a39a Implement $limit aggregation pipeline stage (#2270)
Closes #1425.
2023-03-31 18:18:54 +04:00
Chi Fujii e7f512467f Implement dropIndexes command (#2313) 2023-03-31 11:28:24 +00:00
Alexey Palazhchenko 538de1b1eb Close iterator properly (#2333)
Closes #2330.
2023-03-31 11:58:09 +01:00
Dmitry 307c5164ad Add tests for find's and count's skip argument (#2325)
Closes #2255.
2023-03-31 10:54:47 +02:00
Alexey Palazhchenko 915ec41936 Add basic getMore command (#2309)
Closes #1733.
2023-03-30 14:58:40 +00:00
Alexey Palazhchenko 5b72f8552d Use dashes instead of underscores or spaces (#2329)
Closes #2265.
2023-03-30 18:27:53 +04:00
Alexander Tobi Fashakin 01ef98ffb4 Publish FerretDB v0.9.4 blog post (#2268) 2023-03-30 13:44:31 +02:00
Elena Grahovac ca6160d0b8 Implement createIndexes command (#2244)
Closes #1509.
2023-03-30 12:05:56 +04:00
Alexey Palazhchenko b5f96c2ab8 Improve resource tracking (#2319)
Closes #2309.
Closes #2314.
2023-03-29 19:26:14 +04:00
Alexey Palazhchenkoandb1ron d21a0122d3 Add supported shells and GUIs images (#2323)
Co-authored-by: b1ron <goldingbyron@gmail.com>
2023-03-29 17:02:57 +04:00
Chi Fujii 43c5feb14b Update supported command for $sum aggregation operator (#2318) 2023-03-29 10:33:07 +00:00
Chi Fujii 4c840780e7 Support $sum accumulator of $group aggregation (#2292) 2023-03-29 10:05:30 +00:00
Dmitry 777263693d Fix dot notation negative index errors (#2246)
Closes #2050.
2023-03-29 09:41:36 +00:00
Alexey Palazhchenko 2b3dcbc0e0 Bump integration timeout 2023-03-29 09:33:36 +04:00
Alexey Palazhchenko 7d318673dc Bump dependencies (#2307) 2023-03-29 02:01:08 +00:00
Alexey Palazhchenko ccc09cb230 Use iterators for sort, limit, and skip (#2254)
Closes #1733.
2023-03-28 10:27:32 +00:00
Alexey Palazhchenko 7112cca21f Update codecov config 2023-03-28 14:03:25 +04:00
Alexey Palazhchenko b7bd32f205 Prepare v0.9.4 release 2023-03-27 17:39:07 +04:00
Chi Fujii 190f4f010f Extract dollar path field expression to types package (#2263) 2023-03-27 11:39:23 +00:00
Wojciech Kropidlowski 18a06782ee Implement nameOnly for listCollections command (#2247)
Closes #301.
2023-03-27 14:29:18 +04:00
Alexey Palazhchenko 2ab3bf12e9 Bump Tigris to 1.0.0-beta.51 (#2277) 2023-03-24 18:31:57 +04:00
Alexey Palazhchenko 5dbf86942a Remove indexes from DocumentsIterator (#2278) 2023-03-24 14:28:35 +00:00
Patryk Kwiatek ce3b48f686 Fix pushdown for large double values (#2163)
Closes #2057.
2023-03-24 11:10:51 +00:00
Chi Fujii c3adaf2c6d Update diff.md for database name differences (#2274) 2023-03-24 09:09:44 +00:00
Elena Grahovac aa3515aaeb Collection deletion refactoring (#2224)
Closes #1509.
2023-03-24 07:03:50 +00:00
Alexey Palazhchenko 8c62623ea8 Bump timeout 2023-03-24 10:05:01 +04:00
Alexey Palazhchenko 8f513b97f1 Add hard timeouts to all CI jobs
To prevent them from being stuck and spend a lot of money.
2023-03-24 09:37:13 +04:00
Alexey Palazhchenko 436c2416cc Bump deps (#2264)
Closes #1977.
2023-03-23 23:34:18 +04:00
Alexey Palazhchenko 086622bdef Cleanup unimplemented and ignored parameters (#2258) 2023-03-23 18:48:45 +01:00
Alexey Palazhchenko fe97eea3f5 Tweak Mergify configuration 2023-03-23 20:56:06 +04:00
Alexey Palazhchenko 0ee34cbeae Fix traffic recording (#2267) 2023-03-23 16:42:37 +00:00
Alexander Tobi FashakinandChi Fujii 70ca6ac0c2 Document array update operator (#2237)
# Description

Closes #2157.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.

---------

Co-authored-by: Chi Fujii <chi.fujii@ferretdb.io>
2023-03-23 14:13:09 +00:00
Alexey Palazhchenko 802be48775 Add a few query tests (#2260) 2023-03-23 14:14:38 +01:00
Chi Fujii 990eb9f6e9 Change collection names mangling for PostgreSQL (#2239) 2023-03-23 13:53:42 +04:00
Chi Fujii 07134cfffe Rework integration test setup for validator (#2225) 2023-03-22 14:29:49 +04:00
Patryk Kwiatek 5705db7778 Fix long overflow detection on $mul (#2232)
Closes #2057.
2023-03-21 18:16:17 +00:00
Alexander Tobi Fashakin 07771d7ab3 Add new blog post - MongoDB vs PostgreSQL (#2146)
Closes FerretDB/engineering#48.
2023-03-21 11:36:09 +00:00
Alexey Palazhchenko 956f02d668 Filter documents with iterators (#2245)
Closes #1733.
2023-03-21 11:13:33 +00:00
Dmitry 08a4a9016b Add support for $push array update operator (#2222)
Closes #826.
2023-03-21 09:38:34 +00:00
Alexey Palazhchenko 3af3e3e359 Add basic security policy (#2242)
Closes #1679.
2023-03-21 05:15:29 +00:00
Alexander Tobi Fashakin cb3389e3ea Update telemetry information (#2243)
# Description

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [x] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-03-20 16:43:10 +00:00
Alexey Palazhchenko 68b018796b Fix hana and tigris handlers initialization (#2234) 2023-03-20 02:24:38 +00:00
Alexey Palazhchenko 4aa8316d77 Tweak dependabot config (#2233) 2023-03-17 17:14:13 +00:00
Elena Grahovac 0c267e5fa2 Make listIndexes use data from the database (#2214)
Closes #1509.
2023-03-17 17:40:47 +01:00
Alexander Tobi Fashakin 029b19440a Add section about field update operators (#2180)
# Description

Closes #2157.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [x] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-03-17 12:04:57 +00:00
Chi Fujii dae2814de4 Fix env-data Taskfile (#2211) 2023-03-17 10:22:31 +00:00
Alexey Palazhchenko c159edfa93 Tweak Docker docs a bit (#2228) 2023-03-17 13:57:17 +04:00
Alexey Palazhchenko 2c0ecc7070 Add documentation for all-in-one Docker image (#2215)
Closes #1987.
2023-03-17 10:53:59 +04:00
Chi Fujii 3e7140f8c7 Support query pushdown for $match aggregation stage (#2199) 2023-03-16 22:04:02 +00:00
Elena Grahovac c54f7fd100 Skip a $mod test for arm64 (#2223) 2023-03-16 21:37:34 +00:00
Alexey Palazhchenko 8667e7e215 Pass structs by pointers (#2221) 2023-03-16 15:36:14 +00:00
Dmitry dd2c960307 Add support for $each modifier to $push update operator (#2202)
Closes #828.
2023-03-16 16:06:35 +03:00
Dmitry 105c0d6bfe Add support for $each modifier to $addToSet array update operator (#2187)
Closes #828.
2023-03-16 09:10:19 +09:00
Alexander Tobi Fashakin 1efad9052b Add new FerretDB v0.9.3 release blogpost (#2201)
Closes FerretDB/engineering#50.
2023-03-15 22:22:30 +04:00
Elena Grahovac 0b1ddb8b5b Support skip argument for find and count (#2193)
Closes #1445.
2023-03-15 19:54:19 +03:00
Alexey Palazhchenko e9d43ea19c Prevent confusing messages for embedded FerretDB (#2209) 2023-03-15 12:05:27 +00:00
Alexey Palazhchenko aca0952ffc Use runit for all-in-one Docker image (#2203)
Horrible hacks 😬, but good enough for all-in-one Docker image that
should not be used for anything serious.

Closes #1987.
2023-03-15 15:46:27 +04:00
Alexey Palazhchenko 22f67ecef6 Add CI configuration for Hana (#2194) 2023-03-14 21:12:27 +04:00
Alexey Palazhchenko 69b76fcbdf Improve build cache usage (#2197)
Closes #1987.
2023-03-14 20:51:45 +04:00
Elena Grahovac 128d7cd233 Support dot notation in sorting (#2156)
Closes #2101.
2023-03-14 11:21:00 +01:00
Chi Fujii 3ccedd2596 Fix telemetry tag and improve unimplemented error in aggregation (#2198) 2023-03-14 09:04:42 +00:00
Chi Fujii 344c4a3cf1 Split TestQueryCompatRunner back into separate tests (#2189) 2023-03-14 12:23:39 +04:00
Alexey Palazhchenko 40a7244ad4 Improve logging of retries (#2192) 2023-03-13 21:01:22 +01:00
Alexey Palazhchenko e9d18a93c5 Provide "all-in-one" Docker image (#2183)
Closes #1987.
2023-03-13 23:02:16 +04:00
Alexey Palazhchenko 24fb0d600c Merge and speedup packages building (#2195)
Merge all Docker builds together and re-use Go build and modules caches.
Speed-ups build times significantly.
2023-03-13 20:39:41 +04:00
Alexey Palazhchenko 215ba1c467 Prepare v0.9.3 release 2023-03-13 16:22:43 +04:00
Chi Fujii 2344c04c5a Update supported command document for $group aggregation operator (#2188) 2023-03-13 09:38:43 +00:00
Chi Fujii abf6cf9f04 Support $group aggregation stage (#2151) 2023-03-13 18:04:52 +09:00
Alexey Palazhchenko a5cb3ea195 Disable race detector on arm64 (#2182) 2023-03-10 19:58:14 +04:00
Alexey Palazhchenko ee535f5861 Rework build (#2177) 2023-03-10 19:01:41 +04:00
Alexey Palazhchenko 6082cbd222 Use stringer for "enums" (#2144) 2023-03-10 12:09:31 +01:00
Alexey Palazhchenko 3e2a5ae8aa Refactor common saslStart code (#2181) 2023-03-10 09:29:33 +00:00
Alexey Palazhchenko 566611dc77 Bump deps, minor cleanup (#2176) 2023-03-10 09:03:14 +04:00
Alexey Palazhchenko 6f9ef0d558 Document explicit telemetry sharing (#2169) 2023-03-10 05:02:11 +00:00
Yureka 7dd09fdd82 Fix saslStart for particular clients (#2164)
Closes #2161.
2023-03-10 08:34:26 +04:00
b1ron ffece7e1db Make $pullAll remove all instances from the existing array (#2066)
Closes #2109
2023-03-09 17:27:57 +00:00
Patryk Kwiatek cf86bdf1f5 Pushdown date values (#2162)
Closes #2114.
2023-03-09 09:25:50 +00:00
Lucas Bojer 178e30a711 Add connection to HANA (#2120) 2023-03-09 09:18:18 +01:00
Elena Grahovac 803818cd5d Create unqiue index for _id automatically (#2048)
Closes #2044, #1384.
2023-03-08 21:01:32 +04:00
Patryk Kwiatek 14edaa107e Pushdown $ne query operator for PostgreSQL (#2145)
Closes #1840.
2023-03-08 17:13:41 +04:00
Chi Fujii c13fb578d3 Update supported aggregation pipeline user document (#2154) 2023-03-08 09:48:08 +00:00
Dmitry b5e6e33619 Fix dot notation errors (#2122)
Closes #1744.
2023-03-07 16:17:26 +00:00
Patryk Kwiatek e21079a342 Pushdown $eq and $ne query operators for PostgreSQL (#1880)
Closes #1840.
2023-03-07 20:00:52 +04:00
Alexey Palazhchenko cfaa6fc7dc Test that version is set correctly (#2152) 2023-03-07 12:37:54 +00:00
Chi Fujii 27df75374f Add aggregation pipeline compat tests and fix errors (#2099) 2023-03-07 11:45:11 +00:00
Alexey Palazhchenko 78bf6afa37 Bump deps (#2148) 2023-03-07 10:55:30 +00:00
Patryk Kwiatek 470a9d86d6 Pushdown bool values (#2143)
Closes #2115.
2023-03-07 09:56:43 +00:00
Chi Fujii a0cd2e5c5b Fix querying an embedded field in array (#2030) 2023-03-06 10:53:32 +09:00
b1ronandmergify[bot] 9d29cc56a1 Add lowercase variant of dbstats (#2119)
# Description

I stumbled upon this whilst testing Studio 3T.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.

---------

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-03-03 18:01:52 +00:00
Dmitry 3c953af882 Fix $mul operator handling dot notation (#2094)
Closes #1744.
2023-03-03 15:20:50 +00:00
Alexey Palazhchenko 1f076a5d8b Remove CI optimization that does not work (#2113)
See #1589 and comments there.
Closes #1800.
2023-03-03 15:02:08 +04:00
Patryk Kwiatek 852ebf4002 Allow empty strings pushdown for Tigris (#2110)
Closes #1940.
2023-03-03 11:05:20 +04:00
Dmitry b86480fe31 Skip docs build if no docs were changed (#2095) 2023-03-03 00:37:22 +04:00
Alexey Palazhchenko 1a92884d1f Checkout named branch (#2112)
Closes #1800.
2023-03-03 00:31:12 +04:00
Lucas Bojer 092fbff65b Initial setup of hana handler (#2071) 2023-03-02 15:27:25 +00:00
Alexey Palazhchenko 989c640ccb Update CODEOWNERS for the Hana handler (#2096) 2023-03-02 19:13:13 +04:00
Alexey Palazhchenko dbca2b115f Small cleanups (#2107) 2023-03-02 19:07:59 +04:00
Alexey Palazhchenko a14c1a996f Use Go 1.20 (#2098) 2023-03-02 16:07:43 +04:00
Chi Fujii 40f26c5594 Support aggregation pipeline for Tigris (#2085) 2023-03-02 11:07:12 +00:00
Alexey Palazhchenko d9b3fb9b97 Improve social preview for Security page (#2091) 2023-03-02 10:39:20 +04:00
Dmitry fa84f12705 Add dot notation support for $max and $min (#2072)
Closes #1744.
2023-03-02 10:57:53 +09:00
Alexey Palazhchenko 73716eb502 Bump deps (#2041) 2023-03-01 19:50:39 +01:00
Chi Fujii dfd46b344f Implement $sort aggregation pipeline stage (#2093) 2023-03-01 12:48:13 +00:00
Alexey Palazhchenko 1fa849f521 Relax validation rules a bit (#2009)
Closes #2088.
Closes #2089.
2023-03-01 13:50:51 +03:00
Alexey Palazhchenko d98da2bdbb Set retention-days for all CI artifacts (#2087)
Refs #2086.
2023-03-01 09:56:30 +00:00
Alexander Tobi Fashakin 83756f7534 Restructure documentation (#2073)
# Description

Closes #1996.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-03-01 09:01:15 +00:00
Patryk Kwiatek 970cdf27fc Temporarily remove pushdown for dot notation (#2068)
Closes #2055.
2023-03-01 01:59:42 +00:00
Alexander Tobi Fashakin fa396d40e0 Add blog post on FerretDB v0.92 (#2067)
# Description

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-02-28 19:32:04 +01:00
Alexey Palazhchenko 60dc7f1047 Push Docker images to Docker Hub (#2059) 2023-02-28 17:10:21 +04:00
Dmitry 52dcec732a Add dot notation test cases for update operators (#2047)
Closes #1744.
2023-02-28 11:34:01 +04:00
Dmitry 73457ccb53 Fix SkipForTigrisWithReason helper (#2061)
This fixes bug in `SkipForTigrisWithReason`.
2023-02-27 17:12:02 +00:00
Alexey Palazhchenko 6389781aec Prepare v0.9.2 release (#2058) 2023-02-27 17:17:01 +04:00
Elena Grahovac ad1cea3f08 Disable query pushdown if the corresponding flag is set (#2003)
Closes #1912.
2023-02-23 16:42:48 +01:00
Elena Grahovac 3b11fcae19 Create primary key index for _id field automatically (#2024)
Closes #1384.
2023-02-23 12:44:32 +00:00
Alexander Tobi Fashakin 13358b781e Update documentation definitions for operators (#2016)
# Description

Closes #2015.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-02-22 21:09:22 +00:00
Alexey Palazhchenko 5db1f43134 Run task testjs on CI (#2031) 2023-02-22 14:51:49 +00:00
Alexander Tobi Fashakin f0388447e9 Document bitwise query operators (#2042)
# Description

Closes #1868.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [x] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-02-22 14:37:53 +00:00
Alexey Palazhchenko 07cab1caaf Add Tigris authentication support (#2040)
Closes #1789.
2023-02-22 15:54:51 +04:00
Dmitry eee9698143 Add $pullAll array update operator (#2032)
Closes #827.
2023-02-22 12:03:07 +01:00
Alexey Palazhchenko 9b147af6b0 Simplify fields sorting, add TODO (#2039) 2023-02-22 09:43:29 +00:00
Alexey Palazhchenko 102b27d65f Refactor integration tests (#1925)
Closes #1568.
2023-02-21 15:27:19 +04:00
Dmitry 32a7bc5271 Add support for $addToSet array update operator (#2004)
Closes #825.
2023-02-21 06:26:25 +03:00
Alexey Palazhchenko b69594387f Do not specify Docker Compose version (#2023) 2023-02-20 21:32:17 +04:00
Alexey Palazhchenko 0a27f1cc6d Bump deps (#2022) 2023-02-20 14:51:03 +04:00
Elena Grahovac 990ec0a870 Embedded FerretDB documentation examples improvements (#2017) 2023-02-20 14:04:37 +04:00
Chi Fujii 8de7a8e091 Bump golang.org/x/net version to 0.7.0 in tools/go.mod (#2018) 2023-02-20 13:06:13 +04:00
Dmitry a62245efb0 Refactor types.NewPathFromString to return (Path, error) (#1994)
Closes #1954.
2023-02-20 11:00:37 +09:00
Alexander Tobi Fashakin b20778f1dd Add section for evaluation query operators - $mod and $regex (#1941)
# Description

Closes #1869.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-02-17 20:32:39 +00:00
Alexander Tobi Fashakin 1112866d9c Set up analytics for documentation and blog (#2010)
# Description

Closes FerretDB/engineering#32.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-02-17 16:10:02 +00:00
Elena Grahovac 4060617ba8 Bump Tigris version to 1.0.0-beta.38 (#2011) 2023-02-17 15:37:17 +04:00
Alexey Palazhchenko 18422542bd Extract more find command parameters (#2006) 2023-02-16 14:29:37 +04:00
Alexey Palazhchenko 23c574f5a7 Simplify pushdown disabling logic (#2008) 2023-02-16 14:29:19 +04:00
Alexey Palazhchenko 32238eee86 Bump more deps, update Dependabot config (#2002) 2023-02-15 17:55:36 +04:00
Alexey Palazhchenko f44224a90c Bump more dependencies (#1981) 2023-02-15 16:50:28 +04:00
Alexey Palazhchenko f18814d40f Bump Go to 1.19.6 (#1999) 2023-02-15 12:49:06 +00:00
Patryk Kwiatek 3c78861078 Add a flag for disabling query pushdown (#1963)
Closes #1912.
2023-02-15 12:32:20 +00:00
Alexey PalazhchenkoandDmitry 8e1e926d17 Store cursors in ConnInfo (#1998)
Extracted from #1769.

Closes #1733.

Co-authored-by: Dmitry <dmitry.eremenko@ferretdb.io>
2023-02-15 13:08:47 +01:00
Dmitry 1ceb65e637 Enable array tests for Tigris (#1966)
Closes #1834.
2023-02-15 09:42:03 +00:00
Elena Grahovac 10399ee6fa Support listIndexes command (#1960)
Closes #278.
2023-02-14 21:36:44 +04:00
Alexey Palazhchenko 12a702e0b9 Build multiple Docker images for git tags (#1991)
Closes #70.
2023-02-14 16:34:05 +00:00
Alexey Palazhchenko a3a53485d5 Do not log the latest version if it's unknown (#1967) 2023-02-14 19:25:39 +04:00
Alexander Tobi Fashakin b066cb57b6 Add blog post on FerretDB v0.9.1 (#1965)
# Description

Closes FerretDB/engineering#45

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-02-14 11:34:22 +01:00
Alexey Palazhchenko 2028dc51d2 Add support for create with capped: false (#1978)
Java driver requires it.
2023-02-14 10:05:12 +00:00
Alexey Palazhchenko 526b9ec2be Bump deps (#1976) 2023-02-14 09:32:40 +00:00
Alexey Palazhchenko 392a5e57a6 Prepare v0.9.1 release (#1958) 2023-02-13 15:09:04 +04:00
Patryk Kwiatek c8763375cc Remove skipTigrisPushdown from tests (#1957)
Closes #1913.
2023-02-13 14:39:00 +04:00
Alexey Palazhchenko de54dd3454 Rename function, add TODO (#1955)
Closes #1954.
2023-02-13 09:38:56 +00:00
Patryk Kwiatek 09eb7ee5ca Fix key ordering on document replacing (#1946)
Closes #1736.
2023-02-10 17:03:23 +00:00
Alexey Palazhchenko 458bc77112 Tweak CI settings (#1948)
Do not run everything on every small push.
2023-02-09 15:40:01 +01:00
b1ron 0da05ad664 Fix SASL response for PLAIN authentication (#1942) 2023-02-09 12:57:39 +00:00
Alexey Palazhchenko 6cbcad61b9 Add iterator.WithClose helper (#1947)
It could be used to track both rows and transaction in a single iterator.
2023-02-09 11:51:08 +00:00
Patryk Kwiatek 8a410703f0 Pushdown Tigris queries with dot notation (#1908)
Closes #1841.
2023-02-09 10:40:40 +00:00
Dmitry 31858eeef2 Implement Tigris query iterator (#1924)
Closes #1733.
2023-02-09 11:06:15 +04:00
Patryk Kwiatek 8245744b92 Support Tigris pushdowns for numbers (#1842)
Closes #1755.
2023-02-08 09:34:13 +00:00
Alexander Tobi Fashakin 5bf2d73eac Add blog post on "MongoDB Alternative: 5 Open Source Database alternatives to MongoDB in 2022" (#1911)
# Description

Closes FerretDB/engineering#16.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-02-07 18:01:24 +01:00
Chi Fujii e4126947e5 Rework on integration test setup (#1857) 2023-02-07 09:44:16 +00:00
Chi Fujii 4545f5ce76 Pop returns error on prefix partially used (#1907) 2023-02-07 09:32:05 +01:00
Peter Farkas 01d152e3c2 Update 2023-01-31-ferretdb-v-0-9-0-developer-preview.md
formatting
2023-02-04 18:17:34 +01:00
Peter Farkas a5f3cf6236 Update 2023-01-31-ferretdb-v-0-9-0-developer-preview.md
Minor fixes, and an extra note added to the article indicating that the list of changes is not exhaustive in the blog post
2023-02-04 18:16:54 +01:00
Alexey Palazhchenko 41332adc27 Remove unused parameter (#1919) 2023-02-04 14:59:58 +00:00
Alexander Tobi Fashakin 56a2dd17b7 Fix broken link (#1918) 2023-02-03 15:37:28 +01:00
Elena GrahovacandAlexey Palazhchenko 6df7e84784 Add simple otel tracing to collect data from tests (#1863)
Closes FerretDB/engineering#33.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-02-03 12:38:52 +00:00
Alexey Palazhchenko 2a5143add8 Bump Tigris (#1916) 2023-02-03 12:16:56 +01:00
Alexey Palazhchenko 415d1469c1 Assorted internal tweaks (#1909) 2023-02-02 09:34:56 +01:00
chilagrow c044fd4d2c Use multiple Tigris instances to run tests (#1878)
Closes #1568.
2023-02-01 21:11:48 +01:00
Alexey Palazhchenko 1a1fbbcb0b Bump deps (#1902) 2023-02-01 11:47:25 +00:00
Alexander Tobi Fashakin aa8ce14bb7 Add blog post on new FerretDB release (#1893) 2023-02-01 11:51:22 +01:00
Alexey Palazhchenko d6506f74b9 Prepare v0.9.0 release (#1895) 2023-01-31 14:59:32 +00:00
Alexey Palazhchenko 8e5913fb92 Initial support for aggregation pipelines (#1860)
Closes #1410.
2023-01-31 14:30:08 +01:00
Alexey Palazhchenko 57e1adacfa Make iterator interface more strict (#1882) 2023-01-31 11:52:00 +01:00
Patryk Kwiatek 918bb31e5d Pushdown SQL queries with dot notation (#1864)
Closes #1841.
2023-01-31 08:11:19 +00:00
Alexey Palazhchenko 991ba17869 Unify reply code in handlers (#1883) 2023-01-30 10:56:43 +00:00
Elena Grahovac 6422385ec4 Improve insert in Tigris by using single query for multiple documents (#1871)
Closes FerretDB/engineering/issues/37.
2023-01-30 10:00:33 +00:00
Alexey Palazhchenko a71846ceff Fix InTransaction helper's edge case (#1881) 2023-01-30 09:35:57 +00:00
Alexander Tobi Fashakin aee70029b9 Truncate blog post display (#1874)
# Description

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-01-27 13:57:52 +00:00
Alexey Palazhchenko 44b7b0a274 Mention that there is no configuration file (#1879) 2023-01-27 12:19:03 +00:00
Alexander Tobi Fashakin 52e13f6c80 Add content creation process for documentation and blog (#1859)
# Description

Closes #1825.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [x] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-01-27 12:14:05 +04:00
chilagrow 12caf294fa Run query compat tests on same collection (#1870) 2023-01-26 19:01:36 +09:00
Alexey Palazhchenko 34e5f272e1 Extract handler errors into own package (#1872) 2023-01-26 02:14:35 +00:00
Alexey Palazhchenko 53419958a8 Ensure that we don't import extra dependencies (#1856)
## Readiness checklist

* [x] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [x] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [x] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-01-26 10:32:14 +09:00
Patryk Kwiatek bfd6f7aad8 Support PostgreSQL pushdowns for numbers (#1809)
Closes #1755.
2023-01-25 17:13:33 +00:00
eec19a02ff Add blog post on "How FerretDB fetches data (About query pushdown)" (#1853)
# Description

Closes FerretDB/engineering#17

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added/updated unit tests.
* [ ] I added/updated integration/compatibility tests.
* [ ] I added/updated comments and checked rendering.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [x] I ensured that PR title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.

Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2023-01-25 16:41:54 +00:00
Alexey Palazhchenko 2de3f2e72a Clarify what command statistics we gather (#1861) 2023-01-25 15:57:15 +04:00
Patryk Kwiatek ba9c0dfcd8 Make proper port visible on blog development server (#1862) 2023-01-24 22:04:49 +00:00
Alexander Tobi Fashakin 8ee1f264d5 Reformat blog and documentation setup (#1839)
# Description

Closes #1824.

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added unit tests for new functionality or bug fixes.
* [ ] I added integration tests for new functionality or bug fixes.
* [ ] I added compatibility tests for new functionality or bug fixes.
* [ ] I made spot refactorings.
* [x] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [ ] I added/updated comments for both exported and unexported
top-level declarations (functions, types, etc).
* [ ] I checked comments rendering with `task godocs`.
* [x] I ensured that the title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-01-24 14:53:02 +01:00
Julian König c68831c98f Set default pool_max_conns to 20 for PostgreSQL (#1852)
Closes #1844.
2023-01-23 21:52:00 +04:00
Alexey Palazhchenko b77b7e84e6 Update development documentation (#1851) 2023-01-23 09:27:29 +00:00
Alexey Palazhchenko cc7b47db1e Tiny cleanups (#1849) 2023-01-23 11:05:45 +04:00
Alexey Palazhchenko e0292802cf Reformat Markdown tables (#1847)
Please keep them this way until #1846 is resolved.
2023-01-23 04:48:30 +00:00
chilagrow 62039bf08d Update CONTRIBUTING.md for testing information (#1832) 2023-01-23 04:17:59 +00:00
Patryk Kwiatek f0ca7811ed Update docker deployment documentation (#1817)
Closes #1801.
2023-01-20 17:21:43 +00:00
Elena Grahovac 0a991441be Support $push array update operator (#1819)
Closes #503.
2023-01-20 16:19:14 +01:00
Alexey Palazhchenko d479051013 Remove ListenerOpts from another ListenerOpts (#1837) 2023-01-20 12:34:01 +00:00
Elena Grahovac b996cff36d Migrate to Tigris beta.27 (#1810)
Closes #1802.
2023-01-20 10:32:05 +00:00
Alexey Palazhchenko d1040f2a88 Add basic documentation writing guide (#1826)
Closes #1825.
2023-01-20 09:59:10 +00:00
Alexander Tobi Fashakin 56a79de714 Add blog post on FerretDB beta release 0.8.0 (#1815) 2023-01-19 15:25:28 +00:00
Alexander Tobi Fashakin ab63ef95de Add blog post about FerretDB v0.8.1 release (#1813) 2023-01-19 15:42:08 +01:00
chilagrow 55180a0605 Fix $set operator to apply correct comparison (#1814) 2023-01-19 11:46:56 +00:00
Alexey Palazhchenko 135a2d92de Tweak documentation about flags (#1820) 2023-01-18 12:26:06 +01:00
dependabot[bot]andAlexey Palazhchenko b348a249df Bump ferretdb/docusaurus-docs from 2.2.0-2 to 2.2.0-3 in /build/deps (#1823)
Bumps ferretdb/docusaurus-docs from 2.2.0-2 to 2.2.0-3.


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ferretdb/docusaurus-docs&package-manager=docker&previous-version=2.2.0-2&new-version=2.2.0-3)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-01-18 08:20:06 +00:00
Alexey Palazhchenko 3041e6e4b7 Retry transaction more times and log retries (#1818) 2023-01-18 05:20:12 +00:00
Alexey Palazhchenko adc772d23d Add Go execution tracing for tests (#1804)
Closes #1507.
2023-01-18 04:31:41 +00:00
chilagrow 71ba4d0c57 Fix $inc operator panics for non-existing array index (#1787) 2023-01-17 11:06:31 +00:00
Alexander Tobi Fashakin f569805f1a Fix internal links and images (#1796)
# Description

<!--
Write a short description to explain changes that are not mentioned in
the initial issue.
    What were the reasons for those changes?
    Which decisions did you make and why?
    What else should reviewers know about your changes?
-->

## Readiness checklist

<!--
    If you want your changes to be merged quickly,
    please follow CONTRIBUTING.md.
-->

* [ ] I added unit tests for new functionality or bug fixes.
* [ ] I added integration tests for new functionality or bug fixes.
* [ ] I added compatibility tests for new functionality or bug fixes.
* [ ] I made spot refactorings.
* [ ] I updated user documentation.
* [ ] I ran `task all`, and it passed.
* [ ] I added/updated comments for both exported and unexported
top-level declarations (functions, types, etc).
* [ ] I checked comments rendering with `task godocs`.
* [x] I ensured that the title is good enough for the changelog.
* [x] (for maintainers only) I set Reviewers
([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [x] I marked all done items in this checklist.
2023-01-17 17:10:41 +09:00
chilagrow a5b3e979b4 Support $mul operator (#1760) 2023-01-17 10:13:30 +03:00
Alexey Palazhchenko 4adbc3fc19 Remove lazy connection pools (#1812)
Refs #1789.
Refs #1507.
2023-01-16 22:05:09 +00:00
Elena Grahovac bdfb38ee2d Blog and documentation configuration improvements (#1799) 2023-01-16 13:34:53 +00:00
Alexey Palazhchenko b53f6f8602 Add package.txt stub (#1806)
Closes #1805.
2023-01-16 13:04:51 +00:00
Elena Grahovac 1a492272f9 Fix error types and array handling when dot notation is used with $set operator (#1795)
Closes #1661.
2023-01-16 12:26:42 +01:00
Patryk Kwiatek 1910224956 Integrate explain into tests (#1790)
Closes #1279.
2023-01-16 19:47:10 +09:00
Dmitry add2444a63 Simplify types.Array Append signature (#1793)
In this PR I remove `error` from the `Append` result parameters as it's
always nil.
2023-01-16 09:49:39 +00:00
Alexey Palazhchenko b6a1c4e386 Prepare v0.8.1 release 2023-01-16 12:34:11 +04:00
Alexey Palazhchenko ff57199988 Add comments about Git LFS and lfs-warning (#1798) 2023-01-16 12:24:56 +04:00
Alexey Palazhchenko cd52bc7620 Reformat documentation (#1792) 2023-01-13 22:12:35 +04:00
Elena Grahovac 136ee741b7 Enable support for arrays in Tigris (#1778)
Closes #1704.
2023-01-13 17:05:15 +00:00
Elena Grahovac f8bfe855d3 Fix links from docs to blog (#1794) 2023-01-13 16:35:34 +00:00
Patryk Kwiatek 41fe3d5334 Support $rename field update operator (#1753)
Closes #626.
2023-01-13 09:58:26 +00:00
3c1a9fe4bf Prepare configuration and data for docusaurus-based blog (#1756)
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2023-01-13 13:05:47 +04:00
Alexey Palazhchenko f050fb5295 Build Docker images for tags (#1788)
Refs #70.
2023-01-12 18:53:58 +04:00
Alexey Palazhchenko d48b4fa526 Bump deps (#1785) 2023-01-12 14:32:08 +00:00
Alexey Palazhchenko 167dcd13d5 Minor cleanups (#1786) 2023-01-12 12:10:36 +00:00
Elena Grahovac 877215da88 Fix filterering in distinct for Tigris handler (#1766)
Closes #1704.
2023-01-10 12:12:14 +01:00
Elena Grahovac 8ad51023b6 Skip incompatible tests on arm64 (#1770) 2023-01-09 18:12:57 +00:00
Dmitry 5fe88b8e05 Validate client's TLS certificate when root CA certificate is provided (#1740)
Closes #1707.
2023-01-06 15:27:27 +01:00
chilagrow 0a9f86b1db Move $mod to compat test (#1748) 2023-01-06 12:25:40 +09:00
Elena Grahovac 6990d98671 Implement distinct command (#1739)
Closes #945.
2023-01-05 16:42:40 +01:00
Patryk Kwiatek 654f7281a5 Report availability of newer versions in mongosh (#1738)
Closes #1443.
2023-01-05 11:35:04 +09:00
Patryk Kwiatek 049f456aab Add documentation about CLI flags and environment variables (#1737)
Closes #1706.
2023-01-03 22:14:30 +01:00
Elena Grahovac 6ad9ee513e Support arrays in tjson (#1721)
Closes #908.
2023-01-03 17:51:58 +00:00
b1ron a6f86f6436 Add findandmodify to MsgListCommands (#1730)
Closes #1727.
2023-01-03 09:17:07 +00:00
Alexey Palazhchenko c3230915b4 Add documentation, prepare release (#1732)
Closes #1694.
2023-01-02 16:18:01 +04:00
Patryk Kwiatek e6fac0f0b9 Run govulncheck on CI (#1729)
Closes #1451.
2022-12-30 15:42:47 +01:00
Alexey Palazhchenko 3e28163606 Implement authentication for PostgreSQL (#1725)
Closes #1694.
2022-12-30 15:26:19 +01:00
Alexander Tobi Fashakin 47e22465c8 Enable blog post section (#1700)
Closes #1696.
2022-12-30 15:21:38 +04:00
Elena Grahovac 2252d023b0 Add compat tests for InsertOne in addition to InsertMany (#1726)
Closes #940.
2022-12-30 15:18:38 +04:00
Alexey Palazhchenko 5ec7b54e9f Add stub for getting client-specific connection (#1723) 2022-12-29 22:55:20 +04:00
Elena Grahovac 8ac94387d8 Test ordered argument validation (#1719)
Closes #940.
2022-12-29 21:27:57 +04:00
Alexey Palazhchenko f06f646787 Minor refactorings of iterators (#1718) 2022-12-29 20:41:13 +04:00
Patryk KwiatekandElena Grahovac af17fa7f61 Support ordered argument for insert command (#1673)
Closes #940.

Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
2022-12-29 14:15:35 +01:00
Alexey Palazhchenko 268860bc28 Fix Docker build (#1715) 2022-12-29 16:20:28 +04:00
Alexey Palazhchenko 9d41b26c9d Enable authentication in PostgreSQL (#1716)
Closes #1693.
2022-12-29 16:20:07 +04:00
Alexander Tobi Fashakin 8d267fcd0f Add documentation for array query operator (#1695)
Closes #1314
2022-12-29 12:06:35 +03:00
Alexey Palazhchenko 1293a5eea4 Update building documentation (#1713)
Closes #735.
Closes #1447.
2022-12-28 21:20:02 +04:00
Patryk Kwiatek c50e8344f1 Init benchmark for query pushdowns (#1689) 2022-12-28 13:20:18 +00:00
chilagrow fed0319039 Add currentOp stub (#1708) 2022-12-28 08:49:38 +00:00
chilagrow a80b5a98db Remove $elemMatch and $slice projection operators (#1698) 2022-12-28 17:19:19 +09:00
Alexey Palazhchenko cd8df65c4a Improve issue template (#1692)
Replaces 3 possible states (absent, present unchecked, present checked) with 2.
2022-12-27 13:51:03 +04:00
Dmitry 5e2d29a7c2 Implement iterator.Interface for types.Document and types.Array (#1683)
Closes #1655.
2022-12-26 00:06:46 +01:00
Elena Grahovac 6fd43687c7 Improve the way of storing data about collections (#1650)
Closes #1347.
2022-12-26 00:03:09 +04:00
chilagrow dd2e78cc65 Fix unset document being updated by invalid value of $inc (#1685) 2022-12-23 18:40:36 +01:00
Dmitry cc9bf1c28f Add saslStart stub (#1649)
Closes #1593.

We cannot enable authorization to run both FerretDB and MongoDB with `PLAIN` authorization mechanism because it is not available for MongoDB. Implemented stub was tested locally with FerretDB.
2022-12-23 16:19:10 +04:00
Alexey Palazhchenko c8579faba7 Add TODO comments (#1687)
Refs #1639.
2022-12-23 09:11:54 +00:00
chilagrow 1c4aebbdb0 move update tests to compat tests (#1659) 2022-12-23 17:58:34 +09:00
Alexey Palazhchenko 53f9c03f86 Bump Tigris version (#1680) 2022-12-23 04:02:19 +00:00
Dmitry 33535b0b07 Update issue templates (#1671)
Closes #1160.
2022-12-22 16:32:29 +00:00
Alexander Tobi Fashakin fc7c64a422 Add documentation for element query operators (#1675)
Closes #1314
2022-12-22 19:33:43 +04:00
Alexey Palazhchenko 495f54f00f Tweak CI routing 2022-12-22 15:11:02 +04:00
Alexey Palazhchenko f2db4eb7e9 Use faster runner instances (#1678) 2022-12-22 14:56:31 +04:00
Alexey Palazhchenko 57a03ba733 Add mongo test script example (#1600) 2022-12-22 09:59:21 +00:00
Elena Grahovac fc168c2eb5 Add InTransactionRetry helper (#1670)
Closes #1618.

 Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2022-12-21 15:54:36 +00:00
Alexander Tobi Fashakin 64d86875bc Add section for comparison query operators (#1647)
Closes #1314
2022-12-21 04:16:07 +01:00
Patryk Kwiatek d8af79bb74 Remove leading space from SELECT queries (#1665) 2022-12-20 14:28:42 +00:00
Alexey Palazhchenko 82f83c8e67 Bump deps (#1664) 2022-12-20 10:53:25 +00:00
chilagrow 9e8e2b153f Support $min field update operator (#1652) 2022-12-20 11:44:17 +01:00
Elena Grahovac a41a9471b8 Modify pjson format (#1620)
Closes #1581.
2022-12-20 08:53:00 +00:00
Alexey Palazhchenko b4f603a69f Simplify release procedure (#1657)
Build and push all Docker images at once.
2022-12-20 10:03:59 +04:00
Alexey Palazhchenko 2bf1e63aa9 Rename variable
Refs #1657.
2022-12-19 18:38:07 +04:00
Alexey Palazhchenko cb77b5f965 Prepare v0.7.1 release 2022-12-19 16:35:18 +04:00
chilagrow c6ac9e5a84 Remove Incomparable (#1646) 2022-12-19 09:54:29 +09:00
Alexey Palazhchenko 14fb59a9f3 Bump Tigris deps (#1651) 2022-12-16 09:06:11 +00:00
Alexey Palazhchenko e8768d7925 Add validate command stub (#1645)
It is needed for tests.

Plus a few spot refactorings for unification.

Refs #419.
2022-12-14 10:10:25 +00:00
Alexey Palazhchenko 8f4c6b0440 Bump deps (#1644) 2022-12-14 09:02:29 +00:00
Dmitry d26492fef4 Add basic TLS support (#1586)
Closes #38.
2022-12-14 12:19:21 +04:00
chilagrow 7157890379 Fix comparison with unset fields (#1634) 2022-12-13 18:31:21 +00:00
DmitryandAlexey Palazhchenko 028f9e7c3b Use TLS for MongoDB in integration tests (#1623)
Closes #1615.
Closes #1594.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2022-12-12 16:31:48 +04:00
Elena Grahovac c5db263021 Introduce schema for pjson format (#1635)
Closes #1581.
2022-12-11 11:11:14 +00:00
Alexey Palazhchenko a5969c92d4 Bump golang.org/x/net (#1640)
To make `task security` happy.
2022-12-11 15:02:45 +04:00
chilagrow d32683942c Compare documents (#1597) 2022-12-08 10:33:13 +00:00
Alexey Palazhchenko a17433709e Fix parsing of OP_MSG packets with multiple sections (#1633)
Sections of kind 0 should be considered first.

Closes #1632.
2022-12-07 20:01:28 +00:00
Alexey Palazhchenko 88e6bb2204 Fix .deb/.rpm package testing (#1631) 2022-12-07 13:40:35 +01:00
Dmitry 3f35b80364 Refactor integration tests setup functions (#1625)
We need this change in order to simplify setup functions code and add TLS later on in #1615.
2022-12-07 08:43:17 +00:00
Alexey Palazhchenko 83c7f03783 Bump Go and other deps (#1629) 2022-12-07 05:10:20 +00:00
b1ron d715de2711 Add test cases for multiple sections in an OpMsg (#1611)
Closes #264.
2022-12-06 22:21:41 +01:00
chilagrow 73761a7a43 Compare unit tests for edge cases (#1624) 2022-12-06 13:07:54 +00:00
Elena Grahovac 8521c1e4e3 Infinity values are not allowed in documents (#1622) 2022-12-06 12:09:45 +04:00
Alexey Palazhchenko df54de4761 Update release checklist (#1621) 2022-12-05 17:58:07 +04:00
Alexey Palazhchenko b13e7bbfc4 Bump deps (#1609) 2022-12-05 14:55:42 +01:00
Alexey Palazhchenko edbb1e713c Prepare v0.7.0 release 2022-12-05 15:45:18 +04:00
Alexey Palazhchenko 0e3f76c5c1 Add test certificates (#1612) 2022-12-05 10:50:14 +00:00
chilagrow dcf1ecaa00 Fix greater and less operators on array value comparison (#1585) 2022-12-05 19:13:07 +09:00
Alexey Palazhchenko b616b0dc38 Build Docker images on a faster runner 2022-12-02 18:46:09 +04:00
Elena Grahovac da0dd2a092 Fix validation for documents with duplicate keys (#1602) 2022-12-01 12:07:13 +00:00
Alexey Palazhchenko e07124001c Replace docker-compose with docker compose (#1606)
So we all use the same modern Docker Compose.
2022-12-01 12:57:11 +01:00
Alexander Tobi Fashakin 8713edb7a7 Add glossary section to documentation (#1583)
Closes #1394
2022-12-01 12:32:22 +01:00
Alexey Palazhchenko 373d939957 Improve envtool (#1598)
Closes #1590.
2022-11-30 16:06:03 +00:00
Alexey Palazhchenko 0cbcd6d98a Fix Conform PR workflow (#1599) 2022-11-30 17:05:59 +04:00
Elena Grahovac 330d07a8f7 Refactor pg's MsgListDatabases and pgdb (#1596)
Closes #1056.
2022-11-30 11:13:22 +00:00
Elena Grahovac 5efc745ad5 Improve iterator.Interface implementation for pgdb.queryIterator (#1592)
Closes #898 .
2022-11-30 11:04:04 +00:00
Elena Grahovac 0a63e58b8f Simplify documents fetching for find, findAndModify, and update (#1538)
Closes #898.
2022-11-30 10:05:02 +00:00
Alexey Palazhchenko 3af9dab7f4 Support more default find parameters (#1588)
For example, `find` should not fail when `returnKey` is explicitly set to `false`, not omitted.
That's useful for some drivers.

Some type checking, particularly around numerical parameters, looks a bit strange, but refactoring of that will be done later.
2022-11-30 06:13:37 +00:00
Alexey Palazhchenko d5213443d8 Add TODOs (#1595) 2022-11-30 06:02:55 +00:00
chilagrow 3cdd0bee25 Move query tests to compat by comparing the error code instead of the error message (#1579) 2022-11-30 09:47:04 +09:00
Patryk Kwiatek 05fa28a8e4 Fix listIndexes stub (#1591) 2022-11-29 17:21:50 +01:00
Elena Grahovac e126c1e8cd Simplify documents fetching for delete (#1584)
Closes #898.
2022-11-29 09:33:52 +01:00
Dmitry babb750c6f Allow - in database names (#1582)
Closes #1321.
2022-11-28 19:26:45 +01:00
Elena GrahovacandAlexey Palazhchenko 278ac31b74 Offer iterator interface for fetching documents - count operator (#1487)
Closes #898.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2022-11-28 18:53:44 +01:00
Alexey Palazhchenko 379ca19e79 Update documentation for types, add aliases (#1580) 2022-11-28 13:41:21 +00:00
Patryk Kwiatek 796e4b4779 Fix test names to make them more consistent (#1575) 2022-11-28 09:43:08 +00:00
Alexey Palazhchenko 34c6ba60b3 Add filter support to listCollections (#1567)
Closes #1405.
2022-11-28 10:35:24 +01:00
Dmitry 51c305bd5a Add documents validation to wire package (#1401)
Closes #1151.
2022-11-27 17:52:27 +00:00
Dmitry 59bb8164bc Add msg_explain implementation for Tigris (#1574)
Closes #1253.
2022-11-27 21:45:12 +04:00
chilagrow db6f43cece Move remaining compat query tests (#1570) 2022-11-25 18:25:01 +04:00
chilagrow 85325a5398 Move more query tests to compat and change filter bad value check order (#1560) 2022-11-25 18:12:20 +04:00
Alexey Palazhchenko 3c4b2a6180 Auto-merge is required now (#1563) 2022-11-25 18:01:02 +04:00
Alexey Palazhchenko 022ae48650 Sync label descriptions and issue templates (#1573) 2022-11-25 18:00:27 +04:00
Alexey Palazhchenko 466023081d Add Mastodon links (#1555) 2022-11-25 10:39:13 +00:00
Alexey Palazhchenko 4db0c5e5ef Do not record partial files (#1566) 2022-11-25 10:31:10 +00:00
Alexey Palazhchenko 6eb2a00518 Make default telemetry state a bit more clear (#1561)
Before:

```
--telemetry=                                                      Enable or disable basic telemetry. See https://beacon.ferretdb.io ($FERRETDB_TELEMETRY).
```

After:

```
--telemetry=undecided                                             Enable or disable basic telemetry. See https://beacon.ferretdb.io ($FERRETDB_TELEMETRY).
```
2022-11-25 09:39:27 +00:00
Alexey Palazhchenko 32652e7166 Downgrade min wire protocol version to 13 / 5.0 (#1571)
Requested by community.
2022-11-25 10:28:54 +01:00
Patryk Kwiatek 7c94741bae Implement listIndexes command stub (#1565)
Closes FerretDB/dance#149.
2022-11-24 19:41:21 +00:00
Alexey Palazhchenko 77b9ebb308 Bump deps (#1562) 2022-11-24 18:03:56 +00:00
Dmitry d3cbadfa98 Move _id field check to separate function (#1544)
Refs #1151.
2022-11-24 11:36:08 +00:00
Patryk Kwiatek bc6df04a34 Fix parallel collection inserts for PostgreSQL (#1513)
Closes #1488.
2022-11-24 15:25:23 +04:00
b1ron c96bb12d62 Add session and free monitoring commands to the docs (#1546)
Closes #1399.
2022-11-24 09:46:28 +01:00
chilagrow 62f343a3fe Move array query tests to compat tests (#1526) 2022-11-24 09:36:25 +09:00
Alexander Tobi Fashakin 9ec62bcebe Add section for diagnostic command buildInfo and collStats (#1480)
Closes #1399.
2022-11-23 22:52:38 +04:00
Alexey Palazhchenko 8bc6b5dd22 Add path to record loading error message (#1543) 2022-11-23 09:58:45 +00:00
b1ron 8029b86ae0 Add authentication and role management commands to the docs (#1527)
Closes #1399.
2022-11-22 17:08:47 +00:00
Alexey Palazhchenko e17c0ec74d Add placeholder for testing scripts (#1525) 2022-11-22 10:13:01 +00:00
Elena Grahovac db50df5f4f Disable CockroachDB on GitHub Actions (#1524) 2022-11-22 10:39:22 +09:00
chilagrow c14c2ca79a Simplify array comparison, remove []CompareResult (#1499)
Closes #1449.
2022-11-21 16:04:47 +00:00
Alexey Palazhchenko f6dda284af Prepare v0.6.2 release 2022-11-21 18:55:02 +04:00
Alexander Tobi Fashakinandmergify[bot] c01083dced Add documentation for embedded/nested documents query (#1478)
* query nested documents

* dot notations

Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2022-11-21 09:05:51 +01:00
chilagrow 4f538092f1 Fix issues for the Unix listener (#1397)
Closes #1295.
2022-11-18 17:41:20 +00:00
b1ron 1a1885eb77 Add query plan cache commands to the docs (#1501)
Refs #1399.
2022-11-18 16:27:35 +04:00
Alexey Palazhchenko 0d1ece0f18 Use - in test collection names (#1325)
Closes #1280.
2022-11-18 09:18:05 +00:00
Alexey Palazhchenko 1dc24a1ea1 Bump Tigris version (#1379) 2022-11-18 09:09:55 +00:00
Patryk Kwiatek 3e1a98c497 Fix information about delete's comment argument inside "supported commands" reference (#1498) 2022-11-18 16:13:08 +09:00
b1ron af2554ad14 Add user management commands to the docs (#1489) 2022-11-17 21:44:42 +01:00
Elena Grahovac ec06c3ea2d Use primitive.Regex to test that regex _id is not allowed (#1486)
Closes #1396.
2022-11-17 23:22:18 +04:00
Alexey Palazhchenko da3daeacec Enable more textlint rules (#1484) 2022-11-17 19:10:46 +00:00
Alexey Palazhchenko 9e843bf7a1 Add changelog draft (#1479) 2022-11-17 19:01:43 +00:00
Alexey Palazhchenko 564b5b2221 Record integration tests connections (#1482)
Feed more data to fuzzer.
2022-11-17 22:19:13 +04:00
Alexey Palazhchenko feae33b15e Reorganize a list of supported commands (#1490) 2022-11-17 21:25:12 +04:00
b1ron c01a35acf8 Add update operators to the docs (#1481)
Refs #1399.
2022-11-17 19:19:36 +04:00
Alexey Palazhchenko f54239f259 Use colored emoji (#1485) 2022-11-17 13:52:43 +01:00
Alexey Palazhchenko f572fecab5 Update some TODOs (#1452) 2022-11-17 12:32:30 +00:00
Patryk Kwiatek 5919507463 Implement debugError command (#1402)
Closes #640.
2022-11-17 10:49:28 +00:00
Alexey Palazhchenko 34412b386f Reformat Code of Conduct 2022-11-17 14:41:26 +04:00
Elena Grahovac 164cbc76f4 Allow duplicates in bson documents (#1391)
Closes #1263.
2022-11-17 13:13:14 +04:00
Elena Grahovac bd747b9e14 Add aggregation section (database stages, operators) to the docs (#1448)
Refs #1399.
2022-11-17 08:35:22 +00:00
Alexey Palazhchenko 315051de73 Update CODEOWNERS 2022-11-17 12:26:10 +04:00
Alexey Palazhchenko 2026d0d7d0 Bump deps (#1477) 2022-11-17 10:02:18 +04:00
Alexey Palazhchenko c6d9b6baab Minor telemetry cleanup (#1446)
Refs #1323.
Refs #1443.
2022-11-17 09:32:37 +04:00
b1ron ca4a67ce6a Add query and write operation commands to the docs (#1409) 2022-11-16 20:51:37 +03:00
Elena Grahovac 833a84bd15 Add aggregation section (collection stages) to the docs (#1411)
Refs #1399.
2022-11-16 20:46:53 +04:00
Patryk Kwiatek 40bfaf238d Implement enableFreeMonitoring, disableFreeMonitoring and getFreeMonitoringStatus commands (#1380)
Closes #1323.
2022-11-16 19:51:52 +04:00
Alexey Palazhchenko c4b8343bc9 Use lowercase directory names (#1408) 2022-11-16 11:35:39 +00:00
Alexey Palazhchenko a30ba779f6 Ignore website problems for now (#1404) 2022-11-16 12:27:57 +01:00
Alexey Palazhchenko 439b3f4c1a Start supported commands table (#1406)
Closes #1399.
2022-11-16 12:17:58 +01:00
Alexey Palazhchenko ff0d36fc10 Restructure text, add unestimated tasks (#1374) 2022-11-15 11:46:45 +00:00
Alexander Tobi Fashakin da29fc0706 Add documentation for dot notation in arrays, objects, and embedded documents (#1382)
Closes #1310.
2022-11-15 11:39:16 +00:00
Alexander Tobi Fashakin 42a7559546 Make telemetry page visible in documentation sidebar (#1393)
Closes #1392.
2022-11-15 10:34:11 +00:00
Alexey Palazhchenko dab245dd20 Bump deps (#1400) 2022-11-15 13:45:16 +04:00
Elena Grahovac 2f6e1a767a Add missing locks when update settings table (#1381)
Closes #1206.
2022-11-14 11:45:46 +01:00
Alexey Palazhchenko b4e281e703 Use environment variables for configuration (#1383) 2022-11-14 09:55:56 +04:00
Dmitry 9e34c24711 Fix SchemaStats to return empty stats (#1359)
Closes #1317.
2022-11-09 10:15:28 +00:00
Alexey Palazhchenko 4042ecafe9 Sync and update golangci-lint configurations (#1205) 2022-11-09 11:06:41 +01:00
Patryk Kwiatek 0b83d177e7 Add more NewCommandErrorMsgWithArgument calls (#1358)
Closes #1329.
2022-11-08 12:49:03 +01:00
Alexey Palazhchenko cd6e7c4e9b Do not cancel in-progress CI runs (#1378)
That should make restarts easier.
2022-11-08 08:59:03 +00:00
Alexey Palazhchenko 816864471b Tweak supported wire protocol versions (#1261) 2022-11-08 12:52:30 +04:00
Alexey Palazhchenko 23ce3c485a Provide builds for linux/arm/v7 (#1377)
Closes #1376.
2022-11-08 03:48:30 +01:00
Alexey Palazhchenko f4de6e41fc Tweak release checklist 2022-11-07 14:28:40 +03:00
Alexey Palazhchenko 8b0b3ebe18 Prepare v0.6.1 release 2022-11-07 13:46:48 +03:00
Alexey Palazhchenko 572cd94eee Do not use created builder by default 2022-11-07 13:30:03 +03:00
chilagrow fbbbb887a3 Remove unsupported NaN and Inf from pjson package documentation (#1373) 2022-11-07 12:49:51 +03:00
Alexey Palazhchenko 43e121a9d0 Bump Tigris (#1372) 2022-11-07 12:48:54 +03:00
Alexander Tobi FashakinandAlexey Palazhchenko cacb824ed1 Add documentation for configuring telemetry service (#1342)
Closes #1335.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@gmail.com>
2022-11-05 16:20:21 +03:00
Alexander Tobi Fashakin 41b49b4726 Update dark and light theme logo for documentation (#1368)
Closes #1324.
2022-11-05 16:09:02 +03:00
James Nguyen 1176606075 Setup lfs-warning GitHub Action check (#1371)
Closes #1370.
2022-11-04 19:50:31 +03:00
Alexey Palazhchenko 088f8561a9 Remove extra nolint directives (#1348) 2022-11-04 12:57:57 +03:00
Dmitry b1e79657d0 Add "_id" string to linter exceptions (#1364)
In this PR "_id" constant was removed and linter settings were tweaked to not trigger a warning.
2022-11-04 18:21:27 +09:00
Alexey Palazhchenko 2b3100be7f Bump deps (#1367) 2022-11-04 09:30:43 +09:00
Alexey Palazhchenko 24d8bc44fc Use pre-built Docusaurus image (#1365)
That removes the need to rebuild it every time, removes node.js dependencies from the repo, etc.
2022-11-03 19:30:59 +03:00
Alexey Palazhchenko f084e6a410 Use pre-built textlint image (#1366)
That removes the need to rebuild it every time, removes node.js dependencies from the repo, etc.
2022-11-03 18:44:28 +03:00
Dmitry 39f078fccf Remove support for nested arrays (#1334)
Closes #1305.
2022-11-03 12:24:49 +00:00
Elena Grahovac be83096993 Make users know about telemetry via startupWarnings (#1336)
Closes #1328.
2022-11-02 11:58:29 +00:00
Alexey Palazhchenko 5c242d0b92 Fix ignore patterns for tools (#1349)
Even if `node_modules` directory is present on the host for any reason, it should be ignored by linters.
2022-11-02 10:55:21 +09:00
Alexander Tobi Fashakin bb57ac3709 Add text for empty pages (#1338)
Closes #1324.
2022-11-01 17:45:31 +00:00
Alexey Palazhchenko 3f3574f44c Cleanup compat tests (#1345) 2022-11-01 17:22:46 +04:00
Elena Grahovac f4974a5b33 Add stress tests for settings table and fix simple issues with transactions (#1316)
Closes #1282.
2022-10-31 19:54:04 +01:00
Alexey Palazhchenko b5b52cf413 Do not compare error strings (#1344)
We are better than that.
2022-10-31 13:09:13 +00:00
Patryk Kwiatek c55d8d4249 Forbid regex types and arrays in document's _id field (#1326) 2022-10-31 12:17:24 +01:00
Elena Grahovac 9d827c4265 Add stress tests for SchemaStats (#1318)
Refs #1282.
2022-10-31 19:40:11 +09:00
Alexey Palazhchenko 3bff9e57a6 Fix syntax highlighting (#1340)
Those documents are not valid JSON.
2022-10-28 17:31:15 +00:00
Alexey Palazhchenko 01031f8196 A minor clarification about diff tests (#1339) 2022-10-28 18:21:20 +01:00
Dmitry 05be2d5813 Deprecate dotted fields in data documents (#1313)
Closes #659.
2022-10-28 15:47:29 +04:00
Kartik Jolapara f996a912cd Switch from markdownlint-cli to markdownlint-cli2 (#1319) 2022-10-27 19:33:07 +04:00
Alexey Palazhchenko 17918701a4 Bump deps (#1337) 2022-10-27 14:14:06 +01:00
Alexey Palazhchenko e7d29c0b2a Prepare v0.6.0 release 2022-10-27 01:27:04 +04:00
Alexey Palazhchenko 68364a7605 Include info about unimplemented arguments (#1330) 2022-10-27 01:15:40 +04:00
Alexey Palazhchenkoandw84thesun 6ffe677740 Collect command metrics in telemetry (#1327)
Co-authored-by: w84thesun <dmitry.eremenko@ferretdb.io>
2022-10-27 00:48:24 +04:00
Patryk Kwiatek 97d8407025 Allow dashes (-) in collection names (#1312) 2022-10-25 19:32:28 +02:00
Alexey Palazhchenko 1df8ad63de Add more ways to disable telemetry (#1311) 2022-10-25 16:48:57 +00:00
Alexey Palazhchenko 9c05583bf8 Refactor handler errors (#1322) 2022-10-25 14:36:41 +01:00
Elena Grahovac 552683e558 Explicitly disallow duplicate keys in data documents (#1293)
Closes #364.
2022-10-25 16:43:04 +04:00
Patryk Kwiatek 38b30b5c00 Deprecate infinity values in data documents (#1296)
Refs #1151.
2022-10-25 02:36:48 +02:00
Alexey Palazhchenko e757e4bd1a Add comment about diff tests (#1302) 2022-10-24 11:42:24 +00:00
Alexey Palazhchenko e0635a3dd7 Add basic telemetry (#1299) 2022-10-24 14:39:35 +04:00
Alexey Palazhchenko fcf3fbd159 Expand debugError stub (#1303)
Refs #640.
2022-10-24 13:03:58 +04:00
Alexey Palazhchenko fc12d29422 Bump deps (#1309) 2022-10-24 08:05:18 +00:00
Alexey Palazhchenko 508815f135 Fix tjson schema unmarshalling (#1304)
Found by fuzzing.
2022-10-24 09:53:32 +02:00
Dmitry cdb6c36cb6 Fix explain command (#1294)
Closes #1257.
2022-10-21 14:59:31 +00:00
Alexey Palazhchenko ce9fead644 Disable Unix sockets in tests for now (#1298) 2022-10-21 14:51:29 +00:00
Alexey Palazhchenko d8044289f1 Disallow usage of old context package (#1292) 2022-10-21 11:39:47 +00:00
Patryk Kwiatek 0a8f40177e Make _id field required in data documents (#1278)
Closes #1150.
2022-10-21 13:29:14 +02:00
Elena Grahovac ea39dff2d2 Fix a typo in the types package docs (#1297) 2022-10-21 10:23:51 +00:00
chilagrow 2555b097f3 Move tjson into internal/handlers/tigris/tjson
Closes #1252.
2022-10-21 10:20:21 +01:00
Dmitry 7ca4464ed0 Add support for empty command documents (#1277)
Closes #1000.
2022-10-20 15:58:29 +01:00
Maxim ZhiburtandAlexey Palazhchenko 7e62c57fa5 Add support for Unix domain sockets (#1214)
Closes #737.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2022-10-20 18:33:08 +04:00
aprpandAlexey Palazhchenko 4058308d3b Fix error messages for invalid $and/$or/$nor arguments (#1234)
Closes #962.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2022-10-20 15:03:10 +04:00
Elena Grahovac 8991ec6288 Call data document validation when insert or update documents in Tigris (#1290)
Closes #1248.
2022-10-20 10:49:08 +02:00
Alexey Palazhchenkoandmergify[bot] 9f55c6dce4 Add ability to subscribe to state changes (#1265)
Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
2022-10-20 07:27:30 +04:00
3943acf1da Migrate to a newer Tigris version and fix relevant tests (#1239)
Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Alexander Tobi Fashakin <tobyton2008@yahoo.co.uk>
2022-10-19 19:46:03 +01:00
dependabot[bot] 9a4b9e78c6 Bump cockroachdb/cockroach from v22.1.8 to v22.1.9 in /build/deps (#1285)
Bumps cockroachdb/cockroach from v22.1.8 to v22.1.9.

---
updated-dependencies:
- dependency-name: cockroachdb/cockroach
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-19 22:25:40 +04:00
Alexey Palazhchenko 1ea94c3cb6 Run CockroachDB tests on CI (#1289)
They are not required to pass yet.
2022-10-19 16:57:02 +01:00
Alexey Palazhchenko 4ea7e9ddaf Remove implicit mergify rules (#1288) 2022-10-19 16:45:09 +02:00
Alexey Palazhchenko 645c0e8e03 Improve tests cleanup (#1287) 2022-10-19 14:21:51 +00:00
Alexey Palazhchenko a51aa2ddfa Add experimental mergify configuration (#1281)
See https://mergify.com
and https://docs.mergify.com/configuration/

That configuration should remove the need to constantly click the "Update branch" button.

It probably will be replaced by a GitHub-native merge queue
(https://github.com/features/merge-queue/signup)
when we get access to it.
2022-10-19 09:06:20 +00:00
Patryk Kwiatek 0c29ff7aa4 Run tests on CockroachDB (#1260)
Closes #98.
2022-10-19 08:56:37 +00:00
Alexey Palazhchenko 1c697c588f Fix documentation for linking PRs and issues (#1268) 2022-10-19 05:02:02 +00:00
Alexey Palazhchenko 656055ca6d Update docs for the dummy handler (#1276) 2022-10-18 17:28:37 +02:00
Alexander Tobi Fashakin 8a9a7af756 Add documentation for the .deb package usage (#1267)
Closes #1202.
2022-10-18 12:47:50 +00:00
Alexey Palazhchenko c51a42ec81 Bump deps (#1275) 2022-10-18 13:37:07 +01:00
Dmitry 16c7736670 Add schema-related test cases to tjson package (#1247)
Closes #943.
2022-10-18 13:25:43 +02:00
91005ccf87 Add "CRUD operations" and "Understanding FerretDB" sections (#1232)
Closes #1215.
Closes #1216.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: chilagrow <chi.fujii@ferretdb.io>
Co-authored-by: Dmitry <dmitry.eremenko@ferretdb.io>
Co-authored-by: Elena Grahovac <elena.grahovac@ferretdb.io>
Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2022-10-18 14:51:19 +04:00
Alexey Palazhchenko 7095b189d9 Skip pjson fuzzing of invalid documents for now (#1274)
Refs #1273.
2022-10-18 12:18:40 +04:00
Patryk Kwiatek 12171888c1 Add “metrics” section to serverStatus response (#1231)
Closes #1201.
2022-10-17 23:39:31 +04:00
Alexey Palazhchenko b17948631d fjson and fuzzing cleanup (#1262) 2022-10-17 20:51:18 +04:00
Elena Grahovac 68d11f745e Add simplest validation to check data documents (#1246)
Closes #693.
2022-10-17 05:31:44 +00:00
Alexey Palazhchenko c363ece46e Minor handlers refactoring (#1264) 2022-10-15 17:12:13 +02:00
chilagrow b45db81e09 Cleanup types/fjson package (#1254)
This closes #1236
2022-10-14 13:47:17 +02:00
Alexey Palazhchenko bcd44e9b49 Remove forked golangci-lint (#1258) 2022-10-13 12:09:11 +00:00
Alexey Palazhchenko 7ffcfa6517 Fix CLI flags for Tigris (#1256)
That fixes `task run-tigris`.
2022-10-13 14:01:04 +02:00
Alexey Palazhchenko c72a85e2d7 Fix flag name (#1255)
It should stay `--postgresql-url`.
2022-10-13 10:09:25 +01:00
Alexey Palazhchenko fb8e590ed0 Update internal process docs (#1249) 2022-10-13 07:46:19 +02:00
Alexey Palazhchenko 2d366086f2 Add UUID to Prometheus metrics if requested (#1240)
Closes #1209.
2022-10-12 23:47:36 +02:00
Alexey Palazhchenko ddaee74bb1 Bump deps (#1245)
Makes Trivy (`task security`) happy.
2022-10-12 08:24:09 +01:00
Elena Grahovac feb0ee6998 Cleanup old validation (#1179)
Refs #693.
2022-10-12 07:05:16 +00:00
Dmitry 8ab516d050 Add update operators data document fields order test (#1238)
This PR closes #1138.
2022-10-11 21:55:56 +00:00
Alexey Palazhchenko 470940be1b Add UUID to log messages (#1208)
Refs #1209.
2022-10-11 18:19:05 +00:00
Elena Grahovac 51eeb829c0 Fix test helpers for the nil case (#1241)
Refs #693.
2022-10-11 20:11:16 +02:00
Elena Grahovac ab452bb84b Use single transaction for listDatabases command (#1237) 2022-10-11 10:51:49 +02:00
Alexey Palazhchenko a1f77e9d2a Improve buildInfo and serverStatus commands (#1197) 2022-10-10 16:09:47 +01:00
DmitryandAlexey Palazhchenko 40e520ecda Split fjson into pjson and types/fjson (#1219)
Closes #1162.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2022-10-10 13:36:36 +02:00
Dmitry 7911c7fcd8 Add simple query pushdown (#1207)
This PR closes #896.
2022-10-10 09:10:54 +02:00
Alexey Palazhchenko 3e3237330a Improve task env-data (#1220) 2022-10-07 15:15:34 +01:00
Elena Grahovac e22072f33e Use single transaction per msg_findandmodify request (#1217)
Closes #1203.
2022-10-06 07:47:52 +00:00
Alexey Palazhchenko 6d98fb321e Bump deps (#1230) 2022-10-06 09:09:14 +02:00
Alexey Palazhchenko 74d6f83366 Fix running pg and tigris tests in parallel (#1218) 2022-10-05 22:23:24 +02:00
Alexander Tobi Fashakin 66777147d4 Documentation for contributors (#1194)
Closes #1164.
2022-10-05 18:15:29 +02:00
Alexey Palazhchenko 14c042a905 Use Go 1.19.2 (#1211) 2022-10-05 10:53:12 +00:00
Elena Grahovac fb8c056583 Use single transaction per msg_insert request (#1213)
Refs #1203.
2022-10-05 12:46:29 +02:00
Elena Grahovac c349a2be77 Use single transaction per msg_update request (#1212)
Refs #1203.
2022-10-05 11:37:23 +01:00
Elena Grahovac 4a60da1bbd tjson: Support null (#1005)
Closes #906.
2022-10-04 19:42:06 +02:00
Alexey PalazhchenkoandNicolas Barbosa 068cf0d13b Add security scan (#1142)
Co-authored-by: Nicolas Barbosa <ndevbarbosa@gmail.com>
2022-10-04 08:57:24 +02:00
Alexey Palazhchenko 81463b1ec8 Use codecov upload token (#1204)
Refs codecov/codecov-action#837.
2022-10-03 20:04:49 +02:00
ravilushqa d35df617aa Run linters on integration tests folder (#1200)
Closes #557.
2022-10-03 18:55:48 +02:00
Alexey Palazhchenko 308fdda337 Make embedded FerretDB's address configurable (#1199) 2022-09-30 16:18:37 +02:00
Alexey Palazhchenko dca16857fa Allow empty document field names (#1196) 2022-09-30 14:01:49 +00:00
Patryk Kwiatek b27e6b32b2 Migrate FerretDB to Kong (#1184)
Closes #1156.
2022-09-30 13:25:47 +01:00
Dmitry ae2d4984d8 Cleanup pgdb SQL statements (#1193) 2022-09-29 16:02:57 +00:00
Alexey Palazhchenko fb319758f3 Bump deps (#1195) 2022-09-29 14:38:07 +01:00
Alexey Palazhchenko d3465d742e Enable verbose codecov output 2022-09-28 20:20:06 +02:00
Dmitry ff46f665a7 Replace pgxtype.Querier with pgx.Tx (#1188)
Closes #1161.
2022-09-28 16:18:03 +02:00
Patryk Kwiatek e91908395f Migrate envtool to Kong (#1190)
Refs #1156.
2022-09-28 15:37:57 +02:00
Elena Grahovac 91186e7f2a Setup Tigris test cases with explicit schemas (#1167)
Refs #906.
2022-09-28 14:56:28 +02:00
Alexey Palazhchenko c2fba8ee75 Simplify / unify similar cases (#1187) 2022-09-27 20:16:18 +01:00
Alexey Palazhchenko bc00013ee1 Fix fluky test, refactor it (#1185) 2022-09-27 14:52:26 +02:00
Alexey Palazhchenko cdcf9b613f Make "Edit this page" links work (#1183) 2022-09-27 10:07:12 +01:00
Alexey Palazhchenko 9c1e6840db DRY known differences documentation (#1181) 2022-09-26 23:53:30 +02:00
Alexander Tobi Fashakin a55d3a785e Setup documentation search (#1180)
Closes #1110.
2022-09-26 20:50:24 +02:00
Alexey Palazhchenko ed68ca2c5b Add support for Tigris auth parameters (#1177) 2022-09-26 20:49:50 +02:00
Patryk Kwiatek 97981105e5 Fuzz wire package with recorded data (#1168)
Closes #1140.
2022-09-26 20:25:17 +02:00
Alexey Palazhchenko fb6600a2d7 Add local search plugin (#1178)
Refs #1110.
2022-09-26 11:53:33 +03:00
Alexander Tobi Fashakin 2262e30b3b Update introduction documentation (#1174) 2022-09-23 12:16:10 +04:00
Alexey Palazhchenko 33a94873e6 Bump deps (#1175) 2022-09-23 02:23:06 +02:00
Alexey Palazhchenko acad0aa608 Add task targets for offline work (#1171) 2022-09-22 11:27:01 +00:00
Alexey Palazhchenko 3025fa2727 Use transactions in more pgdb functions (#1157) 2022-09-22 14:53:46 +04:00
Patryk Kwiatek a8ba10a34c Support $max field update operator (#1124)
Closes #624.
2022-09-22 07:58:42 +00:00
Alexey Palazhchenko d2bdcb45ea Prepare v0.5.4 release 2022-09-22 10:54:52 +04:00
Alexey Palazhchenko da7a5790f2 Tweak changelog generation 2022-09-22 10:36:59 +04:00
Patryk Kwiatek 4116718879 Migrate fuzztool to Kong (#1159)
Closes #1103.
2022-09-20 16:54:24 +02:00
SianLoong 4507491115 Fix typo (#1165) 2022-09-20 12:35:34 +03:00
Alexey Palazhchenko a4aa509f3a Update issues and PR templates (#1155)
Closes #1154.
2022-09-19 13:56:10 +02:00
Alexey Palazhchenko fa3fa70d06 Update process documentation (#1153) 2022-09-19 09:33:17 +00:00
Alexey Palazhchenko c7796c3720 Improve contributing guidelines (#1146)
* document `task env-reset`;
* mention useful `GOFLAGS`.
2022-09-19 09:27:33 +00:00
Dmitry be84709aa9 Refactor msg_delete handlers (#1152)
This PR closes #1106.
2022-09-16 12:06:55 +00:00
Alexey Palazhchenko 2e5d9b1ad0 Use transaction in more pgdb functions (#1144) 2022-09-16 14:00:05 +02:00
Alexey Palazhchenko 5987f317ea Bump deps (#1158) 2022-09-16 14:52:14 +03:00
Alexey Palazhchenko 4765ae2bf3 Use transaction in more pgdb functions (#1143) 2022-09-15 08:33:56 +03:00
Elena Grahovac 17b7dcc117 Add missing $k to the schema when creating collection in Tigris (#1136) 2022-09-13 15:19:06 +04:00
Elena Grahovac 07776f38aa Fix a typo in Readme (#1141) 2022-09-12 23:32:57 +04:00
Alexey Palazhchenko f7329f40ce Use fixed -test-record directory in Task targets (#1139) 2022-09-12 15:43:56 +00:00
Alexey Palazhchenko 780099f1e2 Fix tests for Tigris (#1134) 2022-09-12 15:16:30 +00:00
Dmitry c994392f1a Add transaction to pg's msg_listcollections (#1135)
Closes #1116.
2022-09-12 19:07:38 +04:00
Dmitry 86c0c7c1a5 Add transaction to msg_drop (#1129)
Refs #1116.
2022-09-09 13:09:15 +00:00
Alexey Palazhchenko d2edcae937 Deploy documentation PRs to Vercel (#1131)
Close #1092.
2022-09-09 17:02:43 +04:00
Alexander Tobi Fashakin 31b4fb7bad Remove docusaurus references and update documentation (#1130)
Closes #1115.
2022-09-09 13:53:32 +04:00
Alexey Palazhchenko 9dbb4e5bf5 Prepare v0.5.3 release 2022-09-08 19:58:02 +04:00
Dmitry 37a5316abf Add transaction to msg_drop_database (#1126)
Refs #1116.
2022-09-08 19:13:54 +04:00
Alexey Palazhchenko 23321326e9 Fix macOS spelling (#1127) 2022-09-08 13:14:46 +01:00
Alexander Tobi Fashakin cb55c3cf71 Improve contribution guidelines and documentation website (#1114) 2022-09-08 15:32:06 +04:00
Patryk Kwiatek 3c7a6add25 implement timestamp type for tigris (#1117)
Closes #1007.
2022-09-08 15:23:16 +04:00
ffd61f3698 Record incoming data for fuzzing (#1107)
Closes #1102.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
Co-authored-by: Dmitry <dmitry.eremenko@ferretdb.io>
2022-09-07 18:46:35 +04:00
Alexey Palazhchenko cdde2b1cf1 Switch to Go 1.19, bump dependencies (#1123)
* Switch to Go 1.19, bump dependencies

* Bump Trim

https://github.com/advisories/GHSA-w5p7-h5w8-2hfq

* Bump Got

https://github.com/advisories/GHSA-pfrx-2q88-qq97
2022-09-07 18:32:33 +04:00
Elena Grahovac 81a23d6a71 Implement MsgFindAndModify for Tigris (#1065)
Closes #775.
2022-09-05 22:24:04 +03:00
Alexey Palazhchenko 0d60b65611 Add GitHub Pages with documentation (#1100)
Closes #974.
Closes #1109.
2022-09-03 16:22:25 +03:00
Alexey Palazhchenko 957d8f5014 Update CODEOWNERS 2022-09-03 00:08:14 +03:00
Alexey PalazhchenkoandDmitry c2987f0cf8 Migrate to MongoDB 6 (#1074)
Closes #1083.

Co-authored-by: Dmitry <dmitry.eremenko@ferretdb.io>
2022-09-02 19:33:12 +02:00
Alexey Palazhchenko c57e53dab7 Add missing TODO (#1108)
Refs #1106.
2022-09-02 11:00:22 +00:00
Alexey Palazhchenko 9beff2d741 Enable errorlint for new code (#1105) 2022-09-01 19:54:56 +00:00
Alexey Palazhchenko cf4aeaa787 Simplify/sync delete a bit (#1104) 2022-09-01 22:44:18 +03:00
Alexey Palazhchenko edad1f8853 Implement simple query pushdown for Tigris (#1091)
Closes #897.
2022-09-01 17:55:25 +02:00
Patryk Kwiatek 84c5a8956a Require limit parameter in delete command (#1066)
Closes #982.
2022-09-01 15:27:05 +03:00
Alexey Palazhchenko 2b61063978 Bump deps (#1099) 2022-09-01 13:59:57 +02:00
folex 11c1a243d4 Use npm lock files for tools (#1093) 2022-09-01 10:34:00 +03:00
Patryk Kwiatek 0c96f230f5 Handle findAndModify and update correctly when collection doesn't exist (#1087)
This PR closes #651.
2022-08-31 17:30:26 +03:00
Dmitry 9d991404a5 Fix $inc update operator int64-max issue (#1071)
This PR closes #972.
2022-08-31 10:58:34 +03:00
Patryk Kwiatek 80b7cb7393 Support ordered argument for delete command (#1004)
Closes #848.
2022-08-26 18:00:40 +00:00
Elena Grahovac eacca14a58 Implement MsgCreate for Tigris (#1048)
Closes #772.
2022-08-26 20:47:46 +03:00
Elena Grahovac 520e98deff Implement MsgCollStats for Tigris (#1063)
Closes #770.
2022-08-25 20:44:34 +03:00
Alexey Palazhchenko e200acbda4 Add integration tests for logical operators (#1085) 2022-08-25 15:56:19 +03:00
Alexey Palazhchenko 24cfc480e5 Bump dependencies (#1084) 2022-08-25 11:01:32 +00:00
Alexey Palazhchenko eb9acfa55c Use CODECOV_TOKEN if available (#1073) 2022-08-25 12:50:10 +02:00
Alexey Palazhchenko 4a950e3f3e Fix data race in test (#1072) 2022-08-24 19:07:14 +03:00
Nicolas Barbosa 3f13625bee Fix ModifiedCount for updates with an empty replacement document (#1067)
Closes #1045.
2022-08-24 17:24:42 +03:00
Elena Grahovac 4f1991329d Improve TestCommandsAdministrationServerStatus (#1062)
Closes #1001.
2022-08-24 16:10:21 +03:00
Andriy 939bfcba92 Add a linter for Semantic Line Breaks in Markdown files (#998)
Closes #396.
2022-08-23 18:15:11 +03:00
ravilushqa a652ffd347 Add collMod command stub (#1037)
Closes #1034.
2022-08-23 17:39:28 +03:00
Elena Grahovac fa84214a1e Less strict delta for dataSize in tests (#1053) 2022-08-22 18:12:35 +03:00
DmitryandAlexey Palazhchenko cb59786298 Collect sizes in MsgListDatabases for Tigris (#1043)
Closes #776.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2022-08-22 16:39:40 +02:00
Paolo Calao 935a7c8203 Implement MsgDataSize for Tigris (#1060)
Closes #773.
2022-08-22 13:52:28 +03:00
Alexey Palazhchenko 62583c3a38 Bump deps (#1059) 2022-08-19 15:50:45 +03:00
Patryk Kwiatek 41b30a0c1d tjson: Implement regex (#1050)
Closes #911.
2022-08-19 10:14:54 +03:00
Alexey Palazhchenko d5a871f918 Small pgdb cleanup (#1055) 2022-08-18 21:11:21 +03:00
Alexey Palazhchenko 4ff5c27aad Add tests for update with replacement (#1044) 2022-08-18 11:45:13 +00:00
Elena Grahovac ce8aa604e0 Bump Tigris version to 1.0.0-alpha.29 (#1054) 2022-08-18 11:44:10 +02:00
Elena Grahovac cb89ab336f Implement MsgDBStats for Tigris (#1047)
Closes #774.
2022-08-17 18:32:28 +00:00
Alexey Palazhchenko 1533c4bf89 Ensure that database and collection names are unique (#1046) 2022-08-17 17:35:34 +02:00
Alexey Palazhchenko a67e091757 Add a few more tests for logical query operators (#1049) 2022-08-17 16:14:59 +03:00
Elena Grahovac d8deab6044 Rework database and collection creation for Tigris (#1038)
Closes #787.
2022-08-17 09:17:07 +02:00
Dmitry dac329ef76 Fix update operation for Tigris handler (#1041)
This PR closes #803.
2022-08-16 15:42:20 +03:00
Dmitry 2786a4d33e Add support for $update's $unset operators dot notation (#1028)
Closes #803.
2022-08-15 08:45:27 +02:00
Elena Grahovac 8d3027ebd8 tjson: Add package documentation for types mapping (#1031)
Closes #917.
2022-08-12 19:37:24 +03:00
Patryk KwiatekandAlexey Palazhchenko c8f6b78135 tjson: Implement datetime (#1027)
Closes #905.

Co-authored-by: Alexey Palazhchenko <alexey.palazhchenko@ferretdb.io>
2022-08-12 15:23:01 +00:00
dependabot[bot] e6a4e8f611 Bump postgres from 14.4 to 14.5 in /build/deps (#1033)
Bumps postgres from 14.4 to 14.5.

---
updated-dependencies:
- dependency-name: postgres
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-08-12 18:11:23 +03:00
Elena Grahovac 9e4b33d684 Bump Tigris version to 1.0.0-alpha.27 (#1032) 2022-08-12 13:32:31 +03:00
Alexey Palazhchenko 06a3525af6 Expose delete problem (#1030)
Refs #1029.
2022-08-11 18:00:43 +03:00
Dmitry 717d44403d Support $pop array update operator (#1020)
Closes #621.
2022-08-11 13:02:28 +00:00
Elena Grahovac 3d36f468b1 Add missing MaxTimeMS support for Tigris (#1026) 2022-08-11 15:56:02 +03:00
Alexey Palazhchenko 443b0e3280 Improve and document integration tests (#1021)
Closes #914.
2022-08-10 21:33:01 +03:00
Dmitry 38c37dc72c Fix Run linters job in Taskfile.yml (#1022) 2022-08-10 12:13:42 +00:00
DmitryandPatryk Kwiatek 8194070e58 Add support for $update's $set and $setOnInsert operators dot notation (#1008)
Refs #803.

Co-authored-by: Patryk Kwiatek <patryk@kwiatek.xyz>
2022-08-10 14:23:34 +03:00
Alexey Palazhchenko b71c3d63a8 Bump deps (#1014) 2022-08-10 12:26:41 +03:00
Felipe Couryandw84thesun 90c90e6886 Add support for updates with replacement objects (#791)
Closes #697.

Co-authored-by: w84thesun <dmitry.eremenko@ferretdb.io>
2022-08-09 16:46:08 +00:00
1624 changed files with 143587 additions and 41502 deletions

No files matched your search

-34
View File
@@ -1,34 +0,0 @@
---
# https://docs.codecov.com/docs/codecovyml-reference
codecov:
require_ci_to_pass: true
notify:
after_n_builds: 4 # 1 for unit tests + 3 for integration tests with different handlers
wait_for_ci: true
# https://docs.codecov.com/docs/coverage-configuration
coverage:
range: "50...65"
# https://docs.codecov.com/docs/commit-status
status:
project:
default:
target: auto
threshold: 1%
patch:
default:
target: 50%
# https://docs.codecov.com/docs/ignoring-paths
ignore:
- cmd
# https://docs.codecov.com/docs/pull-request-comments
comment:
layout: reach,diff,files,flags
# https://docs.codecov.com/docs/github-checks
# Annotations may be hidden by pressing the "a" key or by unselecting "Show annotations" in the top right of the file.
github_checks:
annotations: true
+13
View File
@@ -1,5 +1,18 @@
**
# Go code
!build/version
!cmd
!internal
!go.mod
!go.sum
# so `go build` could set `vcs.revision`, etc.
!.git
# so generated *.txt files do not make binaries dirty
!.gitignore
# additional files for Docker images
!build/ferretdb
!build/postgres-documentdb
+9
View File
@@ -0,0 +1,9 @@
# https://editorconfig.org
root = true
[*]
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true
charset = utf-8
+10
View File
@@ -0,0 +1,10 @@
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.go diff=golang
.gitea/CODEOWNERS linguist-detectable=false
+3
View File
@@ -0,0 +1,3 @@
# Pull requests request review from the eligible staff team(s).
# One approval from either an Admin or Developer satisfies branch protection.
* @trueog/Admins @trueog/Developers
+7 -6
View File
@@ -1,9 +1,10 @@
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners
# Order is important; the last matching pattern takes the most precedence.
# Order is important; the last matching pattern has the highest precedence.
* @AlekSi
/integration/ @FerretDB/leads
/internal/ @FerretDB/leads
* @AlekSi @chilagrow
go.mod @AlekSi
go.sum @AlekSi
/website/ @AlekSi @Fashander
# @AlekSi for engineering, @ptrfarkas for marketing.
# See also Mergify configuration.
/website/blog/ @AlekSi @ptrfarkas
-5
View File
@@ -1,5 +0,0 @@
---
name: Bug
about: Some feature works incorrectly
labels: code/bug
---
+66
View File
@@ -0,0 +1,66 @@
---
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Bug
description: Some feature works incorrectly.
assignees: ["ferretdb-bot"]
labels: ["code/bug", "not ready"]
body:
- type: markdown
attributes:
value: >
Thanks for taking the time to fill out this bug report!
Please check if a similar issue is [already filed](https://github.com/FerretDB/FerretDB/issues).
- type: textarea
id: version
attributes:
label: FerretDB, PostgreSQL, and DocumentDB versions
description: >
Please add the output of the `serverStatus` command.
value: |
```json
{
}
```
validations:
required: true
- type: textarea
attributes:
label: Environment
description: |
For example:
- **OS**: Ubuntu 24.04 x86_64
- **Deployment**: Docker using `ghcr.io/ferretdb/ferretdb:2` image
- **Deployment details**: Docker version 27.3.1
value: |
- **OS**:
- **Deployment**:
- **Deployment details**:
validations:
required: true
- type: textarea
id: do
attributes:
label: What did you do?
description: >
Include MongoDB queries or
[pull request with a test script](https://github.com/FerretDB/FerretDB/blob/main/CONTRIBUTING.md#reporting-a-bug)
if you can.
validations:
required: true
- type: textarea
id: expected
attributes:
label: What did you expect to see?
description: >
Include expected MongoDB results if you can.
validations:
required: true
- type: textarea
id: actual
attributes:
label: What did you see instead?
description: >
Please include FerretDB [logs](https://docs.ferretdb.io/configuration/observability/).
validations:
required: true
+40
View File
@@ -0,0 +1,40 @@
---
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Chore
description: Code maintenance improvements.
assignees: ["ferretdb-bot"]
labels: ["code/chore", "not ready"]
body:
- type: markdown
attributes:
value: >
Thanks for taking the time to fill out this form!
Please check if a similar issue is [already filed](https://github.com/FerretDB/FerretDB/issues).
- type: textarea
id: what
attributes:
label: What should be done?
validations:
required: true
- type: textarea
id: where
attributes:
label: Where?
description: Include permalinks if possible.
validations:
required: true
- type: textarea
id: dod
attributes:
label: Definition of Done
description: What should be done to consider this issue done? List everything that applies.
value: |
- handler updated;
- unit tests added/updated;
- integration/compatibility tests added/updated;
- spot refactorings done;
- user documentation updated (or an issue to create documentation created);
- something else?
validations:
required: true
+4 -3
View File
@@ -1,10 +1,11 @@
---
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository
blank_issues_enabled: false
contact_links:
- name: Quick question
url: https://join.slack.com/t/ferretdb/shared_invite/zt-zqe9hj8g-ZcMG3~5Cs5u9uuOPnZB8~A
about: Please join our Slack chat
url: https://slack.ferretdb.io/
about: Please join our Slack chat.
- name: General question or discussion
url: https://github.com/FerretDB/FerretDB/discussions/categories/general
about: Please use GitHub Discussions
about: Please use GitHub Discussions.
+19
View File
@@ -0,0 +1,19 @@
---
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Documentation
description: Something is badly or not documented.
assignees: ["ferretdb-bot"]
labels: ["documentation", "not ready"]
body:
- type: markdown
attributes:
value: >
Thanks for taking the time to fill out this form!
Please check if a similar issue is [already filed](https://github.com/FerretDB/FerretDB/issues).
- type: textarea
id: what
attributes:
label: What should be done?
validations:
required: true
-5
View File
@@ -1,5 +0,0 @@
---
name: Enhancement
about: Some feature could work better
labels: code/enhancement
---
+19
View File
@@ -0,0 +1,19 @@
---
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Enhancement
description: Some feature could work better.
assignees: ["ferretdb-bot"]
labels: ["code/enhancement", "not ready"]
body:
- type: markdown
attributes:
value: >
Thanks for taking the time to fill out this form!
Please check if a similar issue is [already filed](https://github.com/FerretDB/FerretDB/issues).
- type: textarea
id: what
attributes:
label: What should be done?
validations:
required: true
-5
View File
@@ -1,5 +0,0 @@
---
name: Feature
about: Some feature is not implemented yet
labels: code/feature
---
+19
View File
@@ -0,0 +1,19 @@
---
# https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema
name: Feature
description: Some feature is not implemented yet.
assignees: ["ferretdb-bot"]
labels: ["code/feature", "not ready"]
body:
- type: markdown
attributes:
value: >
Thanks for taking the time to fill out this form!
Please check if a similar issue is [already filed](https://github.com/FerretDB/FerretDB/issues).
- type: textarea
id: what
attributes:
label: What should be done?
validations:
required: true
+60 -31
View File
@@ -6,43 +6,72 @@ We will do all that for you so you can focus on what is really interesting for y
This guide tries to be short and does not mention things that are completely automated by our tooling.
## Showing progress
We want our work to be visible and transparent.
This way we can help each other and make sure that we are on the right track.
To uphold these principles, we agree to make results of our daily work available for others through various means
such as pushed commits, updated pull requests, code reviews, created issues, or any other relevant method.
### Community
We expect issues picked up by the community to be done in about two weeks.
After about a week of inactivity, we should ping contributors.
## Pull requests
For FerretDB Inc. engineers and long-term contributors,
besides the guides in [CONTRIBUTING.md](../CONTRIBUTING.md),
please follow these notes below when you working with pull request:
1. Send pull requests from forks; do not make personal branches in the main repository.
This way, we are similar to community members and could notice similar problems that we could fix for everyone,
not just for us.
2. Pull request **title** should be accurate and descriptive as it is used in the generated changelog.
It should not mention the issue number but describe the fixed issue instead.
3. Most of the time pull requests are related to some issues.
In such cases pull request **description** should mention the issue number like `#123`.
Do not use URLs like `https://github.com/org/repo/issue/123` even if they are rendered the same on GitHub.
If you propose a tiny fix, there is no needed to create a new issue.
4. We provide a pull requests template that includes suggestions and readiness checklist.
5. Please create a draft pull request as soon as you start working on an issue; that is needed for our process tooling.
2. Pull request title should be accurate and descriptive
as it is used in the generated [changelog](../CHANGELOG.md) as is.
It generally should start with imperative verb ("Fix …", not "Fixing …", "Fixed …" or other forms).
It should not have a prefix ("Fix …", not "Fix: …") (we use labels for categorization).
It should not mention the issue number.
3. It is fine to send several sequential pull requests for one issue to make them easier to review.
In that case, please still use the `Closes` word as described in [CONTRIBUTING.md](../CONTRIBUTING.md)
(because [words like "refs" do not link PR to the issue](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue#linking-a-pull-request-to-an-issue-using-a-keyword)),
but don't forget to reopen the issue once PR is merged,
but the issue as a whole is not done.
4. Please create a draft pull request as soon as you start working on an issue; that is needed for our process tooling.
Once it is ready for review, please mark it as such.
After that, there is no need to switch between draft and non-draft states.
6. Please don't forget to click "re-request review" buttons once PR is ready for re-review.
7. Commit messages (both titles and bodies) are not important and can be "WIP" or anything else.
All commits are always squashed on merge by GitHub, so there is no need to squash them manually, amend them, and/or do force pushes.
Autogenerated GitHub's squash commit's body should be manually replaced by "Refs #{issue_number}." or "Closes #{issue_number}.".
Do not leave original commit messages in the squashed commit body.
5. Pull requests should be merged by an auto-merge that the author should enable.
If the pull request is not ready to be merged for some reason (but ready to be reviewed as usual),
the description should explain why, and the `do not merge` label should be applied.
Even in that case, auto-merge should still be enabled by the author.
6. Autogenerated GitHub's squash commit's body should be manually replaced by `Closes #<issue_number>.`
with optional [trailers for co-authors](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors).
7. Ultimately, the author is responsible for doing everything to ensure that the pull request is merged and done.
## Team Performance Metrics
One can see all pull requests that await review [there](https://github.com/pulls/review-requested?q=user%3AFerretDB+is%3Aopen).
We also have [#devlog channel](https://ferretdb.slack.com/archives/C02P0MR7VJS)
in our community Slack with periodic reminders.
To make them useful,
talk with [@GitHub bot in direct messages](https://ferretdb.slack.com/archives/D02P4EJPFGV)
to link your Slack and GitHub identities,
and then configure notification only for your name.
1. We want to deliver fast and make our deliverables predictable.
2. To achieve that, we measure the flow of work and estimate tasks.
3. The flow of work is measured automatically based on GitHub's pull request workflow.
4. Tasks are measured manually by engineers during Sprint planning.
5. Task estimation depends on the following parameters:
* Scope. Are the changes required in one or multiple files, packages, components?
* Complexity. How hard is the task? Does it require to cover a lot of test cases? How many "unknowns" do we have?
* Clarity. Are the description and definition of done clear? Does the task require extra research?
6. We use the following T-Shirt Sizes to estimate tasks:
* **S**: Small simple clear task.
* **M**: Only one parameter can be changed compared to **S** (e.g. a small but not completely clear task).
* **L**: Two parameters can be changed compared to **M** (e.g. clear medium-sized somewhat complex task).
7. If the team thinks that the task is bigger than **L**, it should be decomposed into smaller tasks or
an additional research task needs to be created to clarify all the details.
8. After every Sprint, we measure how many tasks of each size we were able to complete and discuss
what went well and what could be improved.
We also look at the flows' metrics to gather more information about the team's dynamic.
### Test scripts
Pull requests that add temporary `test.js` test scripts have slightly different rules:
1. The title should start with "Add test script for".
2. The descriptions of both PR and issue should link to each other.
3. Commits must change only the `test.js` file.
Once PR with a test script is sent and verified by someone else, it is closed.
Once the linked issue is resolved, the PR should be reopened and merged with `main` to confirm that the test script pass now.
Then it should be closed again.
## Creating issues
1. Please use `Chore` type instead of `Enhancement` or `Feature` (but not `Bug`)
because its template is much more useful
(but may be too daunting for regular users, that's why templates for enhancements and features are much simpler).
After creating an issue, please change its type (label) manually.
2. Do not change other automatically applied labels, assignees, or projects.
+23 -17
View File
@@ -1,25 +1,31 @@
<!--
Please remove comments like this one, but keep and use the rest of the template.
See CONTRIBUTING.md for details.
-->
# Description
This PR closes #{issue_number}.
<!--
Write a short description to explain changes that are not mentioned in the initial issue.
What were the reasons for those changes?
Which decisions did you make and why?
What else should reviewers know about your changes?
Write a short description to explain changes that are not mentioned in the initial issue.
What were the reasons for those changes?
Which decisions did you make and why?
What else should reviewers know about your changes?
-->
<!-- Replace <issue_number> with an actual issue number. -->
Closes #<issue_number>.
## Readiness checklist
<!--
If you want your changes to be merged quickly,
please follow CONTRIBUTING.md.
-->
<!-- Please check all items in this checklist that were done. -->
* [ ] I added tests for new functionality or bugfixes.
* [ ] I ran `task all`, and it passed.
* [ ] I added/updated comments for both exported and unexported top-level declarations (functions, types, etc).
* [ ] I checked comments rendering with `task godocs`.
* [ ] (for maintainers only) I set Reviewers ([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)),
Assignee, Labels, Project and project's Sprint fields.
* [ ] I marked all done items in this checklist.
- [ ] I added/updated unit tests (and they pass).
- [ ] I added/updated integration/compatibility tests (and they pass).
- [ ] I added/updated comments and checked rendering.
- [ ] I made spot refactorings.
- [ ] I updated user documentation.
- [ ] I ran `task all`, and it passed.
- [ ] I ensured that PR title is good enough for the changelog.
- [ ] (for maintainers only) I set Reviewers ([`@FerretDB/core`](https://github.com/orgs/FerretDB/teams/core)), Milestone (`Next`), Labels, Project and project's Sprint fields.
- [ ] I marked all done items in this checklist.
+69 -26
View File
@@ -1,28 +1,71 @@
# Release Checklist
1. Check tests, linters.
2. Check issues and pull requests, update milestones and labels.
3. Create draft release on GitHub with autogenerated release notes.
4. Tweak generated release notes:
* Ensure that "This section should be empty" section does not exist.
* Add "All closed issues and pull requests" and "All commits", remove "Full Changelog".
* Tweak spacing, headers levels.
5. Update CHANGELOG.md with the same release notes:
* Check spacing, header levels.
6. Make a signed tag `vX.Y.Z` with the relevant section of the changelog using `--cleanup=verbatim`.
7. Push it!
8. Make [release](https://github.com/FerretDB/FerretDB/releases).
9. Upload .deb and .rpm packages from the CI build for the tag.
10. Refresh
* `env GOPROXY=https://proxy.golang.org go install -v github.com/FerretDB/FerretDB/cmd/ferretdb@<tag>`
* `env GOPROXY=https://proxy.golang.org go install -v github.com/FerretDB/FerretDB/ferretdb@<tag>`
(expected error message is `package github.com/FerretDB/FerretDB/ferretdb is not a main package`)
* <https://pkg.go.dev/github.com/FerretDB/FerretDB>
11. `task docker-local`
12. `task docker-push` with four tags (`X.Y.Z` without leading `v` and `latest` for both ghcr.io and Docker Hub):
* `task docker-push DOCKER_IMAGE=ferretdb/ferretdb:latest`
* `task docker-push DOCKER_IMAGE=ferretdb/ferretdb:<tag>`
* `task docker-push DOCKER_IMAGE=ghcr.io/ferretdb/ferretdb:latest`
* `task docker-push DOCKER_IMAGE=ghcr.io/ferretdb/ferretdb:<tag>`
13. Close milestone in issues.
14. Announce it!
## Preparation
1. [Release DocumentDB](https://github.com/FerretDB/documentdb/blob/ferretdb/.github/RELEASE_CHECKLIST.md).
2. Update DocumentDB image tags to point to release in:
- [eval image](../build/ferretdb/eval.Dockerfile);
- [eval-dev image](../build/ferretdb/eval-dev.Dockerfile);
- [local image](../build/deps/postgres-documentdb.Dockerfile);
- [bw image](../build/ferretdb-bw/Dockerfile).
3. Update constants in [`documentdb.go`](../build/version/documentdb.go).
4. Check DocumentDB images/tags in documentation (where we specify full tags).
5. Re-run tests, linters.
6. Check issues and pull requests, update milestones and labels.
7. Check if there are breaking changes or anything that should be reflected in the changelog and/or user documentation.
8. Create draft release on GitHub with autogenerated release notes.
9. Update CHANGELOG.md:
- Run `task changelog PREV=vX.Y.Z NEXT=vX.Y.Z` to generate release changelog for the given milestone.
- Check warnings, copy output to the `CHANGELOG.md` file.
- Sort items within sections according to importance if needed.
- Add first-time contributor credits if any (copy this data from the release draft).
- Add link to DocumentDB release page.
10. Run `task docs-version VERSION=X.Y`.
Update `versions` and `createRedirects` in `docusaurus.config.js`.
Remove the oldest version from `versioned_docs`, `versioned_sidebars`, `versions.json`.
11. Run `task docs`.
12. Commit and push changes to the PR.
13. Merge PR, pull and check `git status`.
## Git tag
1. Make a signed tag `vX.Y.Z` with the relevant section of the changelog using `--cleanup=verbatim`.
2. Check `task gen-version; git status` output.
3. Push it!
4. Refresh
- `env GOPROXY=https://proxy.golang.org go mod download -x github.com/FerretDB/FerretDB/v2@<vX.Y.Z>`
- `https://pkg.go.dev/github.com/FerretDB/FerretDB/v2@<vX.Y.Z>` from https://pkg.go.dev/github.com/FerretDB/FerretDB/v2?tab=versions.
## Release
1. Copy release notes from `CHANGELOG.md` and trim them.
2. Wait for the [packages CI build](https://github.com/FerretDB/FerretDB/actions/workflows/packages.yml?query=event%3Apush)
to finish.
3. Upload binaries and packages to the draft release.
4. Check:
- https://hub.docker.com/r/ferretdb/ferretdb/tags
- https://hub.docker.com/r/ferretdb/ferretdb-dev/tags
- https://hub.docker.com/r/ferretdb/ferretdb-eval/tags
- https://hub.docker.com/r/ferretdb/ferretdb-eval-dev/tags
- https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb
- https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb-dev
- https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb-eval
- https://github.com/FerretDB/FerretDB/pkgs/container/ferretdb-eval-dev
- https://quay.io/repository/ferretdb/ferretdb?tab=tags
- https://quay.io/repository/ferretdb/ferretdb-dev?tab=tags
- https://quay.io/repository/ferretdb/ferretdb-eval?tab=tags
- https://quay.io/repository/ferretdb/ferretdb-eval-dev?tab=tags
5. Close milestone in issues.
6. Publish release on GitHub.
7. Announce it on Slack.
## Soon after
1. Publish and announce blog post.
2. Add link to blog post to `CHANGELOG.md` and release page.
3. Bump the latest version on https://beacon.ferretdb.com and https://beacon.ferretdb.io.
4. Update DocumentDB images/tags in Dockerfiles to point back to development version.
5. Update DocumentDB images/tags in the current documentation (where we specify full tags)
to point to the next (non-existing) version.
6. Update URLs with `/refs/tags/` in them in the current documentation
to point to the next (non-existing) version.
+63
View File
@@ -0,0 +1,63 @@
---
# https://docs.codecov.com/docs/codecovyml-reference
codecov:
require_ci_to_pass: true
notify:
wait_for_ci: true
# https://docs.codecov.com/docs/coverage-configuration
coverage:
range: "50...65"
# https://docs.codecov.com/docs/commit-status
status:
project:
default:
target: auto
threshold: 1%
patch:
default:
target: 50%
# https://docs.codecov.com/docs/ignoring-paths
ignore:
- cmd
# https://docs.codecov.com/docs/flags#recommended-automatic-flag-management
flag_management:
default_rules:
carryforward: false
# https://docs.codecov.com/docs/pull-request-comments
comment:
layout: reach,diff,files,flags,components
# https://docs.codecov.com/docs/components
component_management:
default_rules:
statuses:
- type: project
target: auto
threshold: 1%
individual_components:
- component_id: clientconn
name: "clientconn"
paths:
- internal/clientconn/**
- component_id: dataapi
name: "dataapi"
paths:
- internal/dataapi/**
- component_id: documentdb
name: "documentdb"
paths:
- internal/documentdb/**
- component_id: handler
name: "handler"
paths:
- internal/handler/**
# https://docs.codecov.com/docs/github-checks
# Annotations may be hidden by pressing the "a" key or by unselecting "Show annotations" in the top right of the file.
github_checks:
annotations: true
+183 -14
View File
@@ -1,45 +1,214 @@
---
# Runs on Wednesday after deps repo.
# Apply the "not ready" label to prevent cascaded CI runs on each auto-merge.
version: 2
# Most configurations are duplicated to add main-v1 branch.
updates:
- package-ecosystem: "github-actions"
directory: "/"
labels: [deps]
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
github-actions:
patterns: ["*"]
schedule:
interval: "weekly"
day: "thursday"
day: "wednesday"
time: "01:42"
- package-ecosystem: "github-actions"
target-branch: "main-v1"
directory: "/"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
github-actions-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "docker"
directory: "/build/ferretdb"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
build-docker:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "docker"
directory: "/"
labels: [deps]
target-branch: "main-v1"
directory: "/build/ferretdb"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
build-docker-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "thursday"
day: "wednesday"
time: "01:42"
- package-ecosystem: "docker"
directory: "/build/deps"
labels: [deps]
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
build-deps:
patterns: ["*"]
schedule:
interval: "weekly"
day: "thursday"
day: "wednesday"
time: "01:42"
- package-ecosystem: "docker"
target-branch: "main-v1"
directory: "/build/deps"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
build-deps-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
directory: "/"
labels: [deps]
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
ferretdb:
patterns: ["*"]
schedule:
interval: "weekly"
day: "thursday"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
target-branch: "main-v1"
directory: "/"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
ferretdb-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
directory: "/integration"
labels: [deps]
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
integration:
patterns: ["*"]
schedule:
interval: "weekly"
day: "thursday"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
directory: "/tools"
labels: [deps]
target-branch: "main-v1"
directory: "/integration"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
integration-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "thursday"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
directory: "/tools"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
tools:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
target-branch: "main-v1"
directory: "/tools"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
tools-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
directory: "/tools/golangci"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
golangci:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
- package-ecosystem: "gomod"
target-branch: "main-v1"
directory: "/tools/golangci"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
golangci-v1:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
# no mcphost in main-v1
- package-ecosystem: "gomod"
directory: "/tools/mcphost"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
groups:
mcphost:
patterns: ["*"]
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
# no submodules in main-v1
- package-ecosystem: "gitsubmodule"
directory: "/"
labels: ["deps", "not ready"]
assignees: [AlekSi]
open-pull-requests-limit: 20
schedule:
interval: "weekly"
day: "wednesday"
time: "01:42"
+63
View File
@@ -0,0 +1,63 @@
---
# see https://docs.mergify.com/
pull_request_rules:
- name: "Update out-of-date approved PRs"
conditions:
# those rules are implicit for the update action:
# - "-closed"
# - "-conflict"
# - "#commits-behind > 0"
- "-draft"
- "-locked"
- "-merged"
- "base = main"
- "branch-protection-review-decision = APPROVED"
- "check-success = golangci-lint"
- "check-success = Test"
- "label != 'not ready'"
- "#review-threads-unresolved = 0"
actions:
update:
- name: "Request review for engineering blogs posts"
conditions:
- "label = 'blog/engineering'"
actions:
request_reviews:
users_from_teams: ["@FerretDB/core", "@FerretDB/docs"]
comment:
message: "Engineering blog posts should be reviewed by @FerretDB/core and @FerretDB/docs."
- name: "Request review for marketing blogs posts"
conditions:
- "label = 'blog/marketing'"
actions:
request_reviews:
users: ["ptrfarkas", "AlekSi"]
comment:
message: "Marketing blog posts should be reviewed by @ptrfarkas and @AlekSi."
- name: "Assign PRs"
conditions:
- "-closed"
- "#assignee = 0"
actions:
assign:
add_users: ["{{ author }}"]
- name: "Add label on conflicts"
conditions:
- "conflict"
actions:
comment:
message: "@{{author}} this pull request has merge conflicts."
label:
add: [conflict]
- name: "Remove label when conflicts were resolved"
conditions:
- "-conflict"
actions:
label:
remove: [conflict]
-30
View File
@@ -1,30 +0,0 @@
---
# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
changelog:
categories:
- title: New Features 🎉
labels:
- code/feature
- title: Fixed Bugs 🐛
labels:
- code/bug
- code/bug-regression
- title: Enhancements 🛠
labels:
- code/enhancement
- title: Documentation 📄
labels:
- documentation
- title: Other Changes 🤖
labels:
- code/chore
- deps
- title: This section should be empty
labels:
- "*"
+148
View File
@@ -0,0 +1,148 @@
---
# https://github.com/repository-settings/app
repository:
allow_squash_merge: true
allow_merge_commit: false
allow_rebase_merge: false
allow_auto_merge: true
allow_update_branch: true
delete_branch_on_merge: true
enable_automated_security_fixes: true
enable_vulnerability_alerts: true
# https://docs.github.com/en/rest/issues/labels
# Labels are being used by issues, PRs, and discussions.
labels:
# area
- name: area/admin
color: "#2931BF"
description: Issues about administration commands
- name: area/aggregations
color: "#5319E7"
description: Issues about aggregation pipelines
- name: area/auth
color: "#E4012C"
description: Issues about authentication and authorization
- name: area/build
color: "#52D58A"
description: Issues about builds and CI
- name: area/cursors
color: "#D93F0B"
description: Issues about cursors
- name: area/dataapi
color: "#D98F93"
description: Issues about Data API
- name: area/diag
color: "#909BA6"
description: Issues about diagnostic commands
- name: area/errors
color: "#DE231F"
description: Issues about MongoDB-compatible error codes and messages
- name: area/fuzz
color: "#D4C5F9"
description: Issues about fuzzing and smithing
- name: area/indexes
color: "#006B75"
description: Issues about indexes
- name: area/mcp
color: "#95921F"
description: Issues about MCP
- name: area/observability
color: "#E04D33"
description: Issues about metrics, logs, traces, pprof, etc
- name: area/performance
color: "#D02FE8"
description: Issues about performance
- name: area/wire
color: "#0354F4"
description: Issues about BSON and the wire protocol
# blog
- name: blog/engineering
color: "#FEF2C0"
description: Engineering blog posts
- name: blog/marketing
color: "#80D0C9"
description: Marketing (and releases) blog posts
# code
- name: code/bug
color: "#CC0000"
description: Some user-visible feature works incorrectly
- name: code/bug-regression
color: "#FF0000"
description: Some user-visible feature works incorrectly, but worked before
- name: code/chore
color: "#E99695"
description: Code maintenance improvements
- name: code/enhancement
color: "#FBCA04"
description: Some user-visible feature could work better
- name: code/feature
color: "#0E8A16"
description: Some user-visible feature is not implemented yet
# the rest sorted alphabetically
- name: badly estimated
color: "#FF3333"
description: Scope, difficulty and/or clarify of the issue were different
- name: community
color: "#297252"
description: Issues and PRs assigned to community members
- name: conflict
color: "#FF0000"
description: PRs that have merge conflicts
- name: deps
color: "#D4C5F9"
description: PRs that update dependencies
- name: do not merge
color: "#0052CC"
description: PRs that should not be merged
- name: documentation
color: "#0052CC"
description: Something user-visible is badly or not documented
- name: good first issue
color: "#5319E7"
description: Good issues for new external contributors
# until the next time
# - name: hacktoberfest
# color: "#FEFBA2"
# description: Good issues for Hacktoberfest
- name: help wanted
color: "#006B75"
description: Issues that require extra attention
- name: not ready
color: "#000000"
description: Issues that are not ready to be worked on; PRs that should skip CI
- name: packages
color: "#9B022C"
description: PRs that should build packages
- name: project
color: "#E99695"
description: Project maintenance
# https://hacktoberfest.com/participation/#spam
- name: spam
color: "#C5DEF5"
description: Spam issues and PRs
- name: trust
color: "#00FF00"
description: PRs that can access Actions secrets
- name: use-git-lfs
color: "#FF0000"
description: PRs that add large files without Git LFS
+163
View File
@@ -0,0 +1,163 @@
---
name: Integration # visible at https://github.com/FerretDB/FerretDB/actions
on:
workflow_call:
inputs:
task:
required: true
type: string
shard_index:
required: true
type: number
shard_total:
required: true
type: number
test_timeout:
required: false
type: string
default: 20m
no_xfail:
required: false
type: boolean
default: false
skip_flaky_check:
required: false
type: boolean
default: false
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
run:
# make it short to fit in GitHub UI; all parameters are already in the caller's name
name: Run
runs-on: ubuntu-24.04
timeout-minutes: 25
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
# for branch.txt on pull_request; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: integration
- name: Install Task
run: go generate -x
working-directory: tools
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Setup Ollama and MCPHost
run: |
mkdir -p tmp/logs
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl stop ollama
bin/task ollama > tmp/logs/ollama.log 2>&1 &
bin/task mcphost > tmp/logs/mcphost.log 2>&1 &
- name: Wait for and setup environment
run: bin/task env-setup
- name: >
Run ${{ inputs.task }} tests
(${{ inputs.shard_index }}/${{ inputs.shard_total }})
run: >
bin/task test-integration-${{ inputs.task }}
SHARD_INDEX=${{ inputs.shard_index }}
SHARD_TOTAL=${{ inputs.shard_total }}
TEST_TIMEOUT=${{ inputs.test_timeout }}
NO_XFAIL=${{ inputs.no_xfail }}
env:
ENVTOOL_DEBUG: ${{ runner.debug == '1' && 'true' || 'false' }}
- name: Collect logs
if: failure()
run: |
bin/task env-logs-collect
cp -v integration/*.json.tmp integration/*.txt.tmp tmp/logs/
- name: Compress logs before upload
if: failure()
run: zip -r -q -9 logs.zip tmp/logs
- name: Upload logs
if: failure()
uses: actions/upload-artifact@v5
with:
name: logs-${{ inputs.task }}-${{ inputs.shard_index }}-${{ inputs.shard_total }}
path: logs.zip
retention-days: 3
- name: Upload coverage information to codecov
if: always()
uses: codecov/codecov-action@v5
with:
files: ./integration/integration-${{ inputs.task }}.txt
flags: integration,${{ inputs.task }},${{ inputs.task }}-${{ inputs.shard_index }}
disable_file_fixes: true
fail_ci_if_error: true
verbose: true
- name: Upload coverage information to coveralls
if: always()
uses: coverallsapp/github-action@v2
with:
file: ./integration/integration-${{ inputs.task }}.txt
flag-name: integration-${{ inputs.task }}-${{ inputs.shard_index }}
parallel: true
- name: Convert test results to JUnit XML format
if: always() && !inputs.skip_flaky_check
run: >
./bin/go-junit-report -parser=gojson
-in ./integration/*.json.tmp
-out ./integration/${{ inputs.task }}.xml
- name: Upload test results to Codecov
if: always()
uses: codecov/test-results-action@v1
with:
flags: integration,${{ inputs.task }},${{ inputs.task }}-${{ inputs.shard_index }}
file: ./integration/${{ inputs.task }}.xml
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+43
View File
@@ -0,0 +1,43 @@
---
name: Cleanup
on:
schedule:
- cron: "10 0 * * 1"
workflow_dispatch:
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
cleanup:
name: Cleanup
runs-on: server
permissions:
contents: read
steps:
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
# no cache-key on server
- name: Install Task
run: go generate -x
working-directory: tools
- name: Run docker-cleanup
run: bin/task docker-cleanup
- name: Clean Go caches
run: go clean -cache -testcache -modcache -fuzzcache
+47 -23
View File
@@ -1,36 +1,55 @@
---
# Attention! This workflow uses `pull_request_target` event that has access to secrets.
# If you modify this workflow, make sure that you don't introduce dangerous steps.
# See also: https://securitylab.github.com/research/github-actions-preventing-pwn-requests/.
# This and other workflows that use `pull_request_target` event are dangerous
# and should be handled with a lot of care to avoid security problems.
# We use this event to give pull requests access to secrets with permissions to query projects,
# login into Docker registry, etc.
# But rogue PR authors could try to steal our secrets.
# We prevent that with the following:
#
# * We require approval for PRs from first-time contributors. That's a built-in feature for all actions.
# * For workflows that checkout source code,
# we require the `trust` label to be assigned to PRs by FerretDB maintainers after reviewing changes.
# Only a few trusted people have permission to do that.
# * Thanks to the way `pull_request_target` trigger works,
# PR changes in the workflow itself are not run until they are merged.
# * We use short-lived automatic `GITHUB_TOKEN`s instead of a long-living personal access tokens (PAT) where possible.
# * Both `GITHUB_TOKEN`s and PATs have minimal permissions.
# * We publish Docker images from PRs as separate packages that should not be run by users.
# * We limit what third-party actions can be used.
#
# Relevant GitHub documentation is a bit scattered. The first article gives a good overview:
# * https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
# * https://docs.github.com/en/actions/security-guides/automatic-token-authentication
# * https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions
name: Conform PR
on:
pull_request_target:
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target
# List all types to make it easier to enable new ones when they are needed.
types:
# - assigned
# - unassigned
# - labeled
- unlabeled # if GitHub Actions stuck, add and remove "no ci" label to force rebuild
- assigned
- unassigned
- labeled
- unlabeled
- opened
- edited
# - closed
- reopened
- synchronize
# - converted_to_draft
# - ready_for_review
- converted_to_draft
- ready_for_review
# - locked
# - unlocked
# - review_requested
# - review_request_removed
# - auto_merge_enabled
# - auto_merge_disabled
- unlocked
- review_requested
- review_request_removed
- auto_merge_enabled
- auto_merge_disabled
# Stop pending and in-progress jobs of this workflow.
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#example-using-a-fallback-value
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
env:
GOPATH: /home/runner/go
@@ -38,18 +57,23 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
CONFORM_TOKEN: ${{ secrets.CONFORM_TOKEN }} # GITHUB_TOKEN is not enough to query projects, so we use a special one
GOTOOLCHAIN: local
CONFORM_TOKEN: ${{ secrets.CONFORM_TOKEN }} # repo-scoped GITHUB_TOKEN is not enough to query org-level projects
jobs:
conform-pr:
name: Conform PR
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
timeout-minutes: 5
if: github.event_name != 'pull_request_target' || !contains(github.event.pull_request.labels.*.name, 'no ci')
# No `trust` label check because we don't checkout PR's code.
# No `not ready` label to prevent accidental auto-merges: jobs skipped with `if` conditional are considered successful.
if: github.event_name == 'pull_request_target'
steps:
# Warning! Be careful about changing the steps here as it might cause some security problems
# (see the Attention block on the top of this file).
# Do not add a source code checkout step because we don't check the `trust` label.
# See the warning at the top of the file.
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
+95
View File
@@ -0,0 +1,95 @@
---
name: CTS
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- main-*
- releases/*
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
run:
name: Run CTS tests
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: cts
- name: Install Task
run: go generate -x
working-directory: tools
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Build bin/ferretdb
run: bin/task build-host
- name: Wait for and setup environment
run: bin/task env-setup
- name: Start FerretDB (no auth) in the background
run: >
bin/ferretdb
--listen-addr=:27017
--proxy-addr=127.0.0.1:37017
--no-auth
--mode=diff-normal
--postgresql-url='postgres://username:password@127.0.0.1:5432/postgres'
2> ferretdb.log &
- name: Run CTS
if: always()
run: bin/task cts
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+74
View File
@@ -0,0 +1,74 @@
---
# Temporary workflow to debug GitHub Actions.
name: Debug
on:
pull_request:
types:
- labeled
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- main-*
- releases/*
tags:
- "*"
schedule:
- cron: "12 0 * * *"
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
jobs:
contexts:
name: Contexts
runs-on: ubuntu-24.04
timeout-minutes: 5
# comment out to enable this job
if: false
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Debug git status
run: |
git status --untracked-files --ignored
git status
- name: Dump github context
run: echo "$GITHUB_CONTEXT"
env:
GITHUB_CONTEXT: ${{ toJSON(github) }}
- name: Dump env context
run: echo "$ENV_CONTEXT"
env:
ENV_CONTEXT: ${{ toJSON(env) }}
- name: Dump vars context
run: echo "$VARS_CONTEXT"
env:
VARS_CONTEXT: ${{ toJSON(vars) }}
- name: Dump environment variables
run: env
- name: Show current directory
run: |
pwd
ls -al
-118
View File
@@ -1,118 +0,0 @@
---
# This workflow is dangerous and should be handled with a lot of care to avoid security problems.
# We use `pull_request_target` event to give pull requests access to secrets with permissions to publish Docker images, etc.
# But rogue PR authors could try to steal our secrets.
# We prevent that with the following:
#
# * We require approval for PRs from first-time contributors. That's a built-in feature for all actions.
# * After reviewing changes, we require the `trust` label to be assigned to PRs by FerretDB maintainers.
# Only a few trusted people have permission to do that.
# * Thanks to the way `pull_request_target` trigger works, PR changes in the workflow itself are not run
# until they are merged.
# * We use a short-living automatic `GITHUB_TOKEN` instead of a long-living personal access token (PAT).
# It also has minimal permissions.
# * We publish Docker images from PRs as a separate package that should not be run by users.
# * We limit what third-party actions can be used.
#
# We also tried a different approach: build Docker image in one normal, secure `pull_request` workflow,
# upload artifact, and then download and publish it in another workflow that has access to secrets, but treats
# artifact as passive data. We use buildx for building multi-platform images, and there is a way to export
# multi-platform OCI tarball: https://docs.docker.com/engine/reference/commandline/buildx_build/#output
# Unfortunately, it seems that there is no way to import that tarball in another workflow and publish it
# as a Docker image, as strange as it sounds: https://github.com/docker/buildx/issues/186
#
# Relevant GitHub documentation is scattered. The first article gives a good overview:
# * https://securitylab.github.com/research/github-actions-preventing-pwn-requests/
# * https://docs.github.com/en/actions/security-guides/automatic-token-authentication
# * https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions
# * https://docs.github.com/en/packages/learn-github-packages/configuring-a-packages-access-control-and-visibility
# * https://docs.github.com/en/packages/managing-github-packages-using-github-actions-workflows/publishing-and-installing-a-package-with-github-action
# * https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry
name: Docker
on:
pull_request_target:
types:
- labeled
- unlabeled
- opened
- reopened
- synchronize
push:
branches:
- main
schedule:
- cron: "42 2 * * *" # after Go workflow
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
jobs:
build:
name: Build
runs-on: ubuntu-20.04
if: >
github.event_name != 'pull_request_target' ||
(
!contains(github.event.pull_request.labels.*.name, 'no ci') &&
contains(github.event.pull_request.labels.*.name, 'trust')
)
permissions:
packages: write
steps:
- name: Checkout code
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Checkout pull request code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: build
- name: Install Task
run: go generate -x
working-directory: tools
- name: Run init
run: bin/task init
- name: Setup QEMU
uses: docker/setup-qemu-action@v2
- name: Initialize Docker Buildx builder
run: bin/task docker-init
- name: Extract Docker image name and tag
id: extract
uses: FerretDB/github-actions/extract-docker-tag@main
- name: Login to GitHub Container Registry
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build Docker image ${{ steps.extract.outputs.ghcr }}
run: bin/task docker-push DOCKER_IMAGE=${{ steps.extract.outputs.ghcr }}
- name: Check dirty
run: |
git status
git diff --exit-code
+128
View File
@@ -0,0 +1,128 @@
---
name: Docs
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
# Do not run this workflow in parallel for any PR change or branch push
# to prevent concurrent deployments to GitHub Pages.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
build:
name: Build docs
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: true
# This step will fail with "Error: Resource not accessible by integration"
# while trying to add label and comment to PR, that is not possible for PRs from forks.
# See https://github.com/ppremk/lfs-warning/issues/147.
# But the real issue will be right above that message: a list of files that should be added using Git LFS.
- name: Check LFS status
uses: ppremk/lfs-warning@v3.3
with:
filesizelimit: 102400b
labelName: use-git-lfs
exclusionPatterns: |
**/*.go
**/*.js
**/*.md
**/go.sum
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: docs
- name: Install Task
run: go generate -x
working-directory: tools
- name: Build tools
run: bin/task env-pull
- name: Build docs
run: bin/task docs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for checkdocs
- name: Archive docs
run: >
tar --directory website/build
--file tmp/docs.tar
--create
--verbose
.
# it has to be exactly "docs.tar" for actions/deploy-pages below
- name: Upload archive artifact
uses: actions/upload-artifact@v5
with:
name: docs
path: tmp/docs.tar
retention-days: 1
if-no-files-found: error
- name: Check dirty
run: |
git status
git diff --exit-code
github:
name: Deploy to GitHub Pages
runs-on: ubuntu-24.04
timeout-minutes: 10
# exclude pull_request and schedule
needs: build
if: github.event_name == 'push'
permissions:
pages: write
id-token: write
environment:
name: github-pages
url: ${{ steps.deploy.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deploy
uses: actions/deploy-pages@v4
with:
artifact_name: docs
timeout: 300000 # 5*60*1000 milliseconds
+70
View File
@@ -0,0 +1,70 @@
---
name: Format
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
format:
name: Format files
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: format
- name: Install Task
run: go generate -x
working-directory: tools
- name: Format Go code
run: bin/task fmt-go
- name: Format YAML files
run: bin/task fmt-yaml
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+286 -151
View File
@@ -3,15 +3,17 @@ name: Go
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "no ci" label to force rebuild
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 2 * * *"
- cron: "12 0 * * *"
env:
GOPATH: /home/runner/go
@@ -19,24 +21,43 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
short-test:
name: Short test
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
timeout-minutes: 15
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'no ci')
# Do not run this job in parallel for any PR change or branch push.
concurrency:
group: ${{ github.workflow }}-short-test-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
# for branch.txt on pull_request; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: test
cache-key: short-test
- name: Install Task
run: go generate -x
@@ -46,25 +67,52 @@ jobs:
run: bin/task init
- name: Run short unit tests
run: bin/task test-unit-short
run: bin/task test-unit-short TEST_TIMEOUT=10m
env:
GOFLAGS: ${{ runner.debug == '1' && '-v' || '' }}
GITHUB_TOKEN: invalid # to test that -short is handled correctly
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
go clean -testcache -fuzzcache
git status --untracked-files --ignored
git status
git diff --exit-code
test:
name: Test
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
timeout-minutes: 15
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'no ci')
# Do not run this job in parallel for any PR change or branch push.
concurrency:
group: ${{ github.workflow }}-test-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
# for branch.txt on pull_request; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
@@ -75,50 +123,249 @@ jobs:
run: go generate -x
working-directory: tools
# install.sh starts ollama service, stop it since we want to run with `bin/task ollama` with environment variables
- name: Setup Ollama
run: |
curl -fsSL https://ollama.com/install.sh | sudo -E sh
sudo systemctl stop ollama
- name: Start Ollama in the background
run: |
bin/task ollama &
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Pull and load Ollama model
run: |
bin/task ollama-model
- name: Run init
run: bin/task init
- name: Wait for and setup environment
run: bin/task env-setup
- name: Regenerate and reformat
run: bin/task gen
env:
# must be a SUPERUSER to ensure parameter_default is set
DOCUMENTDB_GEN_URL: postgres://username:password@127.0.0.1:5432/postgres
- name: Build bin/ferretdb
run: bin/task build-host
- name: Run unit tests
run: bin/task test-unit TEST_TIMEOUT=10m
env:
GOFLAGS: ${{ runner.debug == '1' && '-v' || '' }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for tools
- name: Upload coverage information to codecov
if: always()
uses: codecov/codecov-action@v5
with:
files: ./cover.txt
flags: unit
disable_file_fixes: true
fail_ci_if_error: true
verbose: true
- name: Upload coverage information to coveralls
if: always()
uses: coverallsapp/github-action@v2
with:
file: ./cover.txt
flag-name: unit
parallel: true
- name: Convert test results to JUnit XML format
if: always()
run: >
./bin/go-junit-report
-in ./unit.txt
-out ./unit.xml
- name: Upload test results to Codecov
if: always()
uses: codecov/test-results-action@v1
with:
flags: unit
file: ./unit.xml
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
integration:
# job name must be unique; make it unique and nice
name: ${{ matrix.task }} ${{ matrix.shard_index }}/${{ matrix.shard_total }}
# Do not run this job in parallel for any PR change or branch push
# to save some resources.
concurrency:
group: ${{ github.workflow }}-integration-${{ matrix.task }}-${{ matrix.shard_index }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
strategy:
fail-fast: false
matrix:
task: [postgresql, yugabytedb]
shard_index: [1, 2, 3, 4, 5]
shard_total: [5]
include:
- { task: "mongodb", shard_index: 1, shard_total: 1 }
- { task: "yugabytedb", skip_flaky_check: true } # Too many failures for now
uses: ./.github/workflows/_integration.yml
with:
task: ${{ matrix.task }}
shard_index: ${{ matrix.shard_index }}
shard_total: ${{ matrix.shard_total }}
skip_flaky_check: ${{ matrix.skip_flaky_check || false }}
integration-no-xfail:
name: postgresql no-xfail
# Do not run this job in parallel for any PR change or branch push
# to save some resources.
concurrency:
group: ${{ github.workflow }}-integration-no-xfail-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
# disable for now
if: false
# if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
uses: ./.github/workflows/_integration.yml
with:
task: postgresql
shard_index: 1
shard_total: 1
test_timeout: 5m
no_xfail: true
# https://github.com/lemurheavy/coveralls-public/issues/1636
submit-coveralls:
name: Submit final coveralls report
runs-on: ubuntu-24.04
needs: [test, integration]
if: always() && (github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready'))
steps:
- name: Submit coveralls
if: always()
uses: coverallsapp/github-action@v2
with:
parallel-finished: true
env-data:
name: env-data
runs-on: ubuntu-24.04
timeout-minutes: 10
# Do not run this job in parallel for any PR change or branch push.
concurrency:
group: ${{ github.workflow }}-env-data-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: env-data
- name: Install Task
run: go generate -x
working-directory: tools
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Regenerate and reformat
run: bin/task -p gen docs
- name: Build bin/ferretdb
run: bin/task build-host
- name: Wait for and setup environment
run: bin/task env-setup
- name: Run unit tests
run: bin/task test-unit
- name: Start FerretDB in the background
run: bin/task run &
- name: Upload coverage information
uses: codecov/codecov-action@v3
with:
files: ./cover.txt
flags: unit
fail_ci_if_error: true
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: |
go clean -testcache -fuzzcache
- name: Check dirty
run: |
git status
git diff --exit-code
- name: Run env-data
run: bin/task env-data
env:
GOFLAGS: ${{ runner.debug == '1' && '-v' || '' }}
golangci-lint:
name: golangci-lint
runs-on: ubuntu-20.04
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'no ci')
# Do not run this job in parallel for any PR change or branch push.
concurrency:
group: ${{ github.workflow }}-golangci-lint-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
issues: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
uses: actions/checkout@v5
with:
fetch-depth: 0
fetch-depth: 0 # for `golangci-lint run --new` to work
lfs: false # LFS is used only by website
# for branch.txt on pull_request; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
@@ -127,117 +374,5 @@ jobs:
- name: Run linters
uses: FerretDB/github-actions/linters@main
fuzz-short:
name: Fuzz short
runs-on: ubuntu-20.04
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'no ci')
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
path: source
fetch-depth: 0
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: fuzz
- name: Install Task
run: go generate -x
working-directory: source/tools
# Use deploy key instead of Personal Access Token (PAT) to limit access to one repository.
# If secrets are not available (for example, for a pull request from a fork), GITHUB_TOKEN PAT is used automatically.
- name: Checkout collected fuzz corpus
uses: actions/checkout@v3
with:
repository: FerretDB/fuzz-corpus
ssh-key: ${{ secrets.FUZZ_CORPUS_DEPLOY_KEY }}
path: fuzz-corpus
fetch-depth: 0
- name: Start environment
run: bin/task env-up-detach
working-directory: source
- name: Run init
run: bin/task init
working-directory: source
- name: Setup corpus
run: bin/task fuzz-corpus
working-directory: source
- name: Wait for and setup environment
run: bin/task env-setup
working-directory: source
# precompile tests with unset GOMAXPROCS
- name: Init fuzzers
run: bin/task fuzz-init
working-directory: source
# TODO https://github.com/FerretDB/FerretDB/issues/238
# TODO https://github.com/FerretDB/FerretDB/issues/344
- name: Run collected fuzzing corpus
run: bin/task fuzz FUZZTIME=1s
working-directory: source
env:
GOMAXPROCS: 1 # otherwise, oom-killer kills fuzzer too often
- name: Collect corpus
if: always()
run: |
bin/task fuzz-corpus
go run ./cmd/fuzztool/fuzztool.go -src=seed -dst=../fuzz-corpus
working-directory: source
# `secrets` are not supported in `if`, so we have to do this trick with environment variable:
# https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability
# https://github.com/actions/runner/issues/520
- name: Push corpus
if: ${{ always() && env.KEY != '' }}
env:
KEY: ${{ secrets.FUZZ_CORPUS_DEPLOY_KEY }}
run: |
git config user.name ferretdb-bot
git config user.email ferretdb-bot@ferretdb.io
git add --all .
git diff-index --quiet HEAD || git commit --message 'Update corpus'
git fetch
git rebase origin/main
git push
working-directory: fuzz-corpus
- name: Collect Linux logs
if: failure()
run: |
mkdir -p /tmp/logs
ls -al /var/log/
sudo cp /var/log/syslog /tmp/logs/
sudo free > /tmp/logs/free.txt
sudo chmod 0666 /tmp/logs/*
working-directory: source
- name: Upload Linux logs
if: failure()
uses: actions/upload-artifact@v3
with:
name: linux-logs
path: /tmp/logs
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: |
go clean -testcache -fuzzcache
- name: Check dirty
run: |
git status
git diff --exit-code
working-directory: source
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-84
View File
@@ -1,84 +0,0 @@
---
name: Integration
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "no ci" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
schedule:
- cron: "12 3 * * *" # after Docker workflow
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
jobs:
test:
name: Test ${{ matrix.name }}
runs-on: ubuntu-20.04
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'no ci')
strategy:
fail-fast: false
matrix:
include:
- {name: "PostgreSQL", handler: "pg"}
- {name: "Tigris", handler: "tigris"}
- {name: "Tigris main", handler: "tigris", tigris_dockerfile: "tigris_main"}
- {name: "MongoDB", handler: "mongodb"}
steps:
- name: Checkout code
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: test
- name: Install Task
run: go generate -x
working-directory: tools
- name: Start environment
run: bin/task env-up-detach
env:
TIGRIS_DOCKERFILE: ${{ matrix.tigris_dockerfile }}
- name: Run init
run: bin/task init
- name: Wait for and setup environment
run: bin/task env-setup
- name: Run ${{ matrix.handler }} tests
run: bin/task test-integration-${{ matrix.handler }}
- name: Upload coverage information
uses: codecov/codecov-action@v3
with:
files: ./integration/integration-${{ matrix.handler }}.txt
flags: integration,${{ matrix.handler }}
fail_ci_if_error: true
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: |
go clean -testcache -fuzzcache
- name: Check dirty
run: |
git status
git diff --exit-code
+155 -19
View File
@@ -1,19 +1,39 @@
---
# This workflow is dangerous and should be handled with great care to avoid security problems.
# See the warning at conform-pr.yml.
# We also tried a different approach: build Docker image in one normal, secure `pull_request` workflow,
# upload artifact, and then download and publish it in another workflow that has access to secrets, but treats
# artifact as passive data. We use buildx for building multi-platform images, and there is a way to export
# multi-platform OCI tarball: https://docs.docker.com/engine/reference/commandline/buildx_build/#output
# Unfortunately, it seems that there is no way to import that tarball in another workflow and publish it
# as a Docker image, as strange as it sounds: https://github.com/docker/buildx/issues/186
name: Packages
on:
pull_request:
pull_request_target:
types:
- unlabeled # if GitHub Actions stuck, add and remove "no ci" label to force rebuild
# not for "labeled" to prevent two builds for "labeled" and "unlabeled" when labels are changed
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- main-*
- releases/*
tags:
- "*"
schedule:
- cron: "12 2 * * *"
- cron: "10 1 * * 1" # after cleanup and DocumentDB
# Do not run this workflow in parallel for any PR change or branch/tag push
# to prevent concurrent pushes for the same Docker image tag
# and save some resources.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
env:
GOPATH: /home/runner/go
@@ -21,24 +41,59 @@ env:
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
build:
name: Build
runs-on: ubuntu-20.04
name: Build packages
runs-on: server
timeout-minutes: 40
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'no ci')
if: >
github.event_name != 'pull_request_target' ||
(
contains(github.event.pull_request.labels.*.name, 'trust') &&
!contains(github.event.pull_request.labels.*.name, 'not ready') &&
contains(github.event.pull_request.labels.*.name, 'packages')
)
permissions:
packages: write
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v3
if: github.event_name != 'pull_request_target'
uses: actions/checkout@v5
with:
fetch-depth: 0
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout pull request code
if: github.event_name == 'pull_request_target'
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
ref: ${{ github.event.pull_request.head.sha }}
# for version.txt on push tags; see https://github.com/actions/checkout/issues/290
- name: Fetch annotated tags
run: |
git fetch --tags --force
git status
# for branch.txt on pull_request_target; the correct branch is already checked out on push / schedule
- name: Name branch
if: github.event_name == 'pull_request_target'
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: packages
# no cache-key on server
- name: Install Task
run: go generate -x
@@ -47,19 +102,100 @@ jobs:
- name: Run init
run: bin/task init
- name: Build packages
- name: Setup QEMU
uses: docker/setup-qemu-action@v3
- name: Initialize Docker Buildx builder
run: bin/task docker-init
# mostly to check that this command still works
- name: Build local Docker image
run: bin/task docker-local FILE=production
- name: Define Docker image names
id: tag
run: bin/definedockertag
- name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ferretdbbot
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Login to Quay.io
uses: docker/login-action@v3
with:
registry: quay.io
username: ferretdbbot
password: ${{ secrets.QUAY_TOKEN }}
- name: Build and push evaluation development Docker images ${{ steps.tag.outputs.eval_dev_images }}
if: steps.tag.outputs.eval_dev_images != ''
run: bin/task docker-eval-dev-push DOCKER_IMAGES=${{ steps.tag.outputs.eval_dev_images }}
- name: Build and push evaluation Docker images ${{ steps.tag.outputs.eval_images }}
if: steps.tag.outputs.eval_images != ''
run: bin/task docker-eval-push DOCKER_IMAGES=${{ steps.tag.outputs.eval_images }}
- name: Build and push development Docker images ${{ steps.tag.outputs.development_images }}
if: steps.tag.outputs.development_images != ''
run: bin/task docker-development-push DOCKER_IMAGES=${{ steps.tag.outputs.development_images }}
- name: Build and push production Docker images ${{ steps.tag.outputs.production_images }}
if: steps.tag.outputs.production_images != ''
run: bin/task docker-production-push DOCKER_IMAGES=${{ steps.tag.outputs.production_images }}
- name: Build development binaries
run: bin/task build-development
- name: Upload development binaries
uses: actions/upload-artifact@v5
with:
name: bin-dev
path: tmp/bin-dev/
retention-days: 1
if-no-files-found: error
- name: Build production binaries
run: bin/task build-production
- name: Upload production binaries
uses: actions/upload-artifact@v5
with:
name: bin
path: tmp/bin/
retention-days: 1
if-no-files-found: error
- name: Build Linux packages
run: bin/task packages
- name: Upload ferretdb.deb
uses: actions/upload-artifact@v3
- name: Upload .deb packages
uses: actions/upload-artifact@v5
with:
name: ferretdb.deb
path: build/deb/ferretdb.deb
name: debs
path: tmp/debs/
retention-days: 1
if-no-files-found: error
- name: Upload ferretdb.rpm
uses: actions/upload-artifact@v3
- name: Upload .rpm packages
uses: actions/upload-artifact@v5
with:
name: ferretdb.rpm
path: build/rpm/ferretdb.rpm
name: rpms
path: tmp/rpms/
retention-days: 1
if-no-files-found: error
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+72
View File
@@ -0,0 +1,72 @@
---
name: Security
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
security-scan:
name: Security scan
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: security
- name: Install Task
run: go generate -x
working-directory: tools
# https://github.com/aquasecurity/trivy/issues?q=is%3Aissue+%22permission+denied%22
- name: Create directory
run: mkdir -p tmp/trivy/fanal
- name: Scan
run: bin/task security
# disabled until https://github.com/actions/dependency-review-action/issues/459 is resolved
- name: Check dependencies for PRs
# if: github.event_name == 'pull_request'
if: false
uses: actions/dependency-review-action@v4
with:
allow-licenses: Apache-2.0, BSD-3-Clause, MIT
+133
View File
@@ -0,0 +1,133 @@
---
name: Test scripts
on:
pull_request:
types:
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
paths:
- build/legacy-mongo-shell/*.js
- build/testscripts/*.sql
push:
branches:
- main
- main-*
- releases/*
schedule:
- cron: "12 0 * * *"
# Do not run this workflow in parallel for any PR change.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: true
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
run:
name: Run test scripts
runs-on: ubuntu-24.04
timeout-minutes: 10
if: github.event_name != 'pull_request' || !contains(github.event.pull_request.labels.*.name, 'not ready')
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for `git describe` to work
lfs: false # LFS is used only by website
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: testscripts
- name: Install Task
run: go generate -x
working-directory: tools
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Start environment
run: bin/task env-up-detach
- name: Run init
run: bin/task init
- name: Build bin/ferretdb
run: bin/task build-host
- name: Wait for and setup environment
run: bin/task env-setup
- name: Start FerretDB (no auth) in the background
run: >
bin/ferretdb
--listen-addr=:27017
--proxy-addr=127.0.0.1:37017
--no-auth
--mode=diff-normal
--postgresql-url='postgres://username:password@127.0.0.1:5432/postgres'
2> ferretdb.log &
- name: Run testsql for PostgreSQL
if: always()
run: bin/task testsql
- name: Run testjs for MongoDB (no auth)
if: always()
run: bin/task testjs TESTJS_PORT=37017
- name: Run testjs for FerretDB (no auth)
if: always()
run: bin/task testjs
- name: Compress FerretDB log before upload
if: failure()
run: zip -q -9 ferretdb-log.zip ferretdb.log
- name: Upload FerretDB log
if: failure()
uses: actions/upload-artifact@v5
with:
name: ferretdb-log
path: ferretdb-log.zip
retention-days: 1
if-no-files-found: error
- name: Show FerretDB log
if: always()
run: |
echo "::remove-matcher owner=go::"
cat ferretdb.log
rm ferretdb.log
# we don't want them on CI
- name: Clean test and fuzz caches
if: always()
run: go clean -testcache -fuzzcache
- name: Check dirty
if: always()
run: |
git status --untracked-files --ignored
git status
git diff --exit-code
+166
View File
@@ -0,0 +1,166 @@
---
name: Website Preview
on:
pull_request_target:
types:
# not for "labeled" to prevent two builds for "labeled" and "unlabeled" when labels are changed
- unlabeled # if GitHub Actions stuck, add and remove "not ready" label to force rebuild
- opened
- reopened
- synchronize
# Do not run this workflow in parallel for any PR change
# to prevent concurrent pushes for the same Cloudflare domain alias.
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}
cancel-in-progress: false
env:
GOPATH: /home/runner/go
GOCACHE: /home/runner/go/cache
GOLANGCI_LINT_CACHE: /home/runner/go/cache/lint
GOMODCACHE: /home/runner/go/mod
GOPROXY: https://proxy.golang.org
GOTOOLCHAIN: local
jobs:
blog-preview:
name: Preview blog
runs-on: ubuntu-24.04
timeout-minutes: 10
if: >
contains(github.event.pull_request.labels.*.name, 'trust') &&
!contains(github.event.pull_request.labels.*.name, 'not ready') &&
(contains(github.event.pull_request.labels.*.name, 'blog/engineering') ||
contains(github.event.pull_request.labels.*.name, 'blog/marketing'))
environment:
name: cloudflare-dev-blog
url: ${{ steps.extract.outputs.extracted_url }}
permissions:
contents: read
steps:
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for wrangler to work
lfs: true
ref: ${{ github.event.pull_request.head.sha }}
# for Wrangler / Cloudflare Pages on pull_request_target
- name: Name branch
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
# no ppremk/lfs-warning due to https://github.com/ppremk/lfs-warning/issues/150
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: website-preview
- name: Install Task
run: go generate -x
working-directory: tools
- name: Build tools
run: bin/task env-pull
- name: Build blog
run: bin/task blog
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for checkdocs
- name: Check dirty
run: |
git status
git diff --exit-code
- name: Deploy to Cloudflare Pages
run: bin/task blog-cloudflare-preview | tee deploy.txt
env:
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
- name: Set GitHub deployment URL
id: extract
uses: FerretDB/github-actions/extract-first-url@main
docs-preview:
name: Preview docs
runs-on: ubuntu-24.04
timeout-minutes: 10
if: >
contains(github.event.pull_request.labels.*.name, 'trust') &&
!contains(github.event.pull_request.labels.*.name, 'not ready') &&
contains(github.event.pull_request.labels.*.name, 'documentation')
environment:
name: cloudflare-dev-docs
url: ${{ steps.extract.outputs.extracted_url }}
permissions:
contents: read
steps:
# We can't easily download build results from the Docs workflow:
# https://github.com/actions/download-artifact/issues/172
# Just build them again instead.
# That also allows us to pass branch name, commit hash, etc from git to wrangler.
# TODO https://github.com/FerretDB/github-actions/issues/211
- name: Checkout code
uses: actions/checkout@v5
with:
fetch-depth: 0 # for wrangler to work
lfs: true
ref: ${{ github.event.pull_request.head.sha }} # TODO https://github.com/FerretDB/github-actions/issues/211
# for Wrangler / Cloudflare Pages on pull_request_target
- name: Name branch
env:
BRANCH: ${{ github.head_ref }} # see https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions#using-an-intermediate-environment-variable
run: git checkout -b $BRANCH
# no ppremk/lfs-warning due to https://github.com/ppremk/lfs-warning/issues/150
- name: Setup Go
uses: FerretDB/github-actions/setup-go@main
with:
cache-key: website-preview
- name: Install Task
run: go generate -x
working-directory: tools
- name: Build tools
run: bin/task env-pull
- name: Create directory
run: mkdir -p tmp/githubcache
- name: Build docs
run: bin/task docs
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # for checkdocs
- name: Check dirty
run: |
git status
git diff --exit-code
- name: Deploy to Cloudflare Pages
run: bin/task docs-cloudflare-preview | tee deploy.txt
env:
CLOUDFLARE_ACCOUNT_ID: ${{ vars.CLOUDFLARE_ACCOUNT_ID }}
CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
- name: Set GitHub deployment URL
id: extract
uses: FerretDB/github-actions/extract-first-url@main
+17 -20
View File
@@ -1,27 +1,24 @@
# Please use global .gitignore file for .vscode/, .idea/, etc.
# This file is used only for repository-specific patterns.
# Please use global .gitignore file for .DS_Store, .idea/, go.work, .envrc, etc.
# See https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer
# out tools
bin/
state.json
telemetry.json
# temporary `go mod vendor` directory
vendor/
*.bc
*.o
*.so
# task cache
.task/
# packages
*.deb
*.rpm
# test coverage results, generated files like commit.txt, etc.
*.out
*.tmp
*.txt
!website/static/*.txt
*.xml
# test coverage results
*.html
.task/
bin/
tmp/
vendor/
website/build/
# for now
testdata/fuzz/
# for local Docker Compse changes; see https://docs.docker.com/compose/extends/#multiple-compose-files
docker-compose.override.yml
**/testdata/fuzz/
+4
View File
@@ -0,0 +1,4 @@
[submodule "documentdb"]
path = build/postgres-documentdb/documentdb
url = https://github.com/FerretDB/documentdb.git
branch = ferretdb
+80 -34
View File
@@ -1,10 +1,44 @@
---
# New or experimental linters that should pass (or be reconfigured) for new code (compared to `origin/main`).
# New or experimental linters that should pass (or be reconfigured)
# for new FerretDB and tools code (compared to `origin/main`).
run:
timeout: 3m
# bin/golangci-lint linters -c .golangci-new.yml
linters-settings:
asasalint:
exclude:
- ^lazyerrors\.Errorf$
use-builtin-exclusions: true
ignore-test: false
copyloopvar:
check-alias: true
errcheck:
check-type-assertions: false
check-blank: false
disable-default-exclusions: false
exclude-functions:
- (*github.com/jackc/pgx/v5.Conn).Close
errorlint:
# see caveats at https://github.com/polyfloyd/go-errorlint#fmterrorf-wrapping-verb
errorf: false
asserts: true
comparison: true
govet:
enable-all: true
settings:
shadow:
strict: true
revive:
ignore-generated-header: true
severity: warning
# TODO enable-all-rules: true https://github.com/FerretDB/FerretDB/issues/2748
rules:
# https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md
- name: exported
arguments: [checkPrivateReceivers, disableStutteringCheck]
- name: package-comments
staticcheck:
checks: ["all"]
wsl:
@@ -28,7 +62,10 @@ linters:
- asciicheck
- depguard
- exhaustive
- exhaustruct
- forbidigo
- gci
- gochecksumtype
- goconst
- godot
- godox
@@ -36,93 +73,102 @@ linters:
- goimports
- gomodguard
- gosimple
- govet
- importas
- ineffassign
- lll
- misspell
- nolintlint
- revive
- sloglint
- tagalign
- unparam
- unused
- whitespace
# TODO configure and enable one by one
# TODO https://github.com/FerretDB/FerretDB/issues/2748
- bidichk
- bodyclose
- canonicalheader
- containedctx
- contextcheck
- cyclop
- deadcode
- decorder
- dogsled
- dupl
- dupword
- durationcheck
- errcheck
- err113
- errchkjson
- errname
- errorlint
- execinquery
- exhaustivestruct
- exhaustruct
- exportloopref
- forbidigo
- fatcontext
- forcetypeassert
- funlen
- ginkgolinter
- gocheckcompilerdirectives
- gochecknoglobals
- gochecknoinits
- gocognit
- gocritic
- gocyclo
- goerr113
- gofmt
- gofumpt
- gomnd
- gomoddirectives
- goprintffuncname
- gosec
- gosmopolitan
- grouper
- ifshort
- iface
- inamedparam
- interfacebloat
- intrange
- ireturn
- loggercheck
- maintidx
- makezero
- mirror
- mnd
- musttag
- nakedret
- nestif
- nilerr
- nilnil
- noctx
- nonamedreturns
- nosprintfhostport
- paralleltest
- perfsprint
- prealloc
- predeclared
- promlinter
- protogetter
- reassign
- recvcheck
- rowserrcheck
- sloglint
- spancheck
- sqlclosecheck
- stylecheck
- tagliatelle
- tenv
- testableexamples
- testifylint
- thelper
- tparallel
- typecheck
- unconvert
- varcheck
- usestdlibvars
- varnamelen
- wrapcheck
# TODO https://github.com/golangci/golangci-lint/issues/2649
- bodyclose
- contextcheck
- nilerr
- noctx
- rowserrcheck
- sqlclosecheck
- structcheck
- tparallel
- unparam
- wastedassign
- wrapcheck
- zerologlint
- golint # deprecated
- interfacer # deprecated
- maligned # deprecated
- nlreturn # too annoying
- scopelint # deprecated
- nlreturn # too annoying
- testpackage # we test internals
issues:
max-issues-per-linter: 0
max-same-issues: 0
exclude-use-default: false
new-from-rev: origin/main
# whole-files: true
exclude-use-default: false
+179 -63
View File
@@ -1,5 +1,5 @@
---
# Linters that should pass for all code.
# Linters that should pass for all FerretDB and tools code.
run:
timeout: 3m
@@ -7,28 +7,120 @@ run:
linters-settings:
# asciicheck
depguard:
list-type: blacklist
packages:
- github.com/FerretDB/FerretDB/internal/bson
- github.com/FerretDB/FerretDB/internal/fjson
- github.com/FerretDB/FerretDB/internal/tjson
- github.com/FerretDB/FerretDB/internal/handlers/pg/pgdb
- github.com/tigrisdata/tigris-client-go/api/client/v1/api
- github.com/tigrisdata/tigris-client-go/filter # We use our own filter without generics (see tigris/tigrisdb/filter)
rules:
old-packages:
files:
- $all
deny:
- pkg: golang.org/x/net/context
desc: use `context` package instead
- pkg: golang.org/x/exp/slices
desc: use `slices` package instead
- pkg: golang.org/x/exp/maps
desc: use `maps` package instead
- pkg: github.com/jackc/pgconn
desc: use `github.com/jackc/pgx/v5/pgconn` package instead
- pkg: github.com/jackc/pgproto3
desc: use `github.com/jackc/pgx/v5/pgproto3` package instead
- pkg: github.com/jackc/pgtype
desc: use `github.com/jackc/pgx/v5/pgtype` package instead
- pkg: github.com/jackc/pgx$
desc: use `github.com/jackc/pgx/v5` package instead
- pkg: github.com/jackc/pgx/v4
desc: use `github.com/jackc/pgx/v5` package instead
# TODO https://github.com/FerretDB/FerretDB/issues/4798
# - pkg: go.mongodb.org/mongo-driver/bson
# desc: use `go.mongodb.org/mongo-driver/v2/bson` package instead
# - pkg: go.mongodb.org/mongo-driver/mongo
# desc: use `go.mongodb.org/mongo-driver/v2/mongo` package instead
# - pkg: github.com/xdg-go/scram
# desc: use `github.com/FerretDB/FerretDB/v2/internal/util/scram` package instead
ferretdb-in-tools:
files:
- "**/tools/**/*.go"
deny:
- pkg: github.com/FerretDB/FerretDB/v2/internal/
desc: tools should not import FerretDB code
wirebson:
files:
- $all
- "!**/cmd/envtool/*.go"
- "!**/internal/clientconn/*.go"
- "!**/internal/dataapi/server/*.go"
- "!**/internal/documentdb/**.go"
- "!**/internal/driver/*.go"
- "!**/internal/handler/**.go"
- "!**/internal/mcp/*.go"
- "!**/internal/mongoerrors/*.go"
- "!**/internal/util/logging/*.go"
- "!**/internal/util/scram/*.go"
- "!**/internal/util/testutil/*.go"
deny:
- pkg: github.com/FerretDB/wire/wirebson
documentdb:
files:
- "**/internal/documentdb/genwrap/*.go"
deny:
- pkg: github.com/FerretDB/FerretDB/v2/internal/documentdb
cursor:
files:
- $all
- "!**/internal/documentdb/**.go"
deny:
- pkg: github.com/FerretDB/FerretDB/v2/internal/documentdb/cursor
exhaustive:
default-signifies-exhaustive: false
exhaustruct:
include:
- TODO
forbidigo:
forbid:
- p: ^\Qpgxpool.Pool.AcquireFunc\E$
pkg: ^\Qgithub.com/jackc/pgx/v5/pgxpool\E$
msg: Use `Acquire` with `defer Release()` instead.
# TODO https://github.com/FerretDB/FerretDB/issues/4798
- p: ^\Qbson.E\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/bson\E$
msg: Use `*wirebson.Document` or `*wirebson.Array` instead.
- p: ^\Qbson.D\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/bson\E$
msg: Use `*wirebson.Document` instead.
- p: ^\Qbson.M\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/bson\E$
msg: Use `*wirebson.Document` instead.
- p: ^\Qbson.A\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/bson\E$
msg: Use `*wirebson.Array` instead.
- p: ^\Qbson.E\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/v2/bson\E$
msg: Use `*wirebson.Document` or `*wirebson.Array` instead.
- p: ^\Qbson.D\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/v2/bson\E$
msg: Use `*wirebson.Document` instead.
- p: ^\Qbson.M\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/v2/bson\E$
msg: Use `*wirebson.Document` instead.
- p: ^\Qbson.A\E$
pkg: ^\Qgo.mongodb.org/mongo-driver/v2/bson\E$
msg: Use `*wirebson.Array` instead.
exclude-godoc-examples: true
analyze-types: true
gci:
sections:
- standard
- default
- prefix(github.com/FerretDB/FerretDB)
- prefix(github.com/FerretDB/FerretDB/v2/)
goconst:
min-occurrences: 5
ignore-tests: true
godot:
scope: toplevel
exclude:
- go-sumtype:decl
- check interfaces
capital: true
godox:
@@ -36,6 +128,8 @@ linters-settings:
- BUG
- FIXME
- HACK
- lala
- lalala
goheader:
# Please do not update it, including bumping a year.
template: |-
@@ -53,21 +147,41 @@ linters-settings:
See the License for the specific language governing permissions and
limitations under the License.
goimports:
local-prefixes: github.com/FerretDB/FerretDB
local-prefixes: github.com/FerretDB/FerretDB/v2
gomodguard:
blocked:
modules:
- go.mongodb.org/mongo-driver:
reason: "FerretDB should not depend on MongoDB Go driver."
- github.com/FerretDB/FerretDB:
reason: "Use `github.com/FerretDB/FerretDB/v2/...` instead."
gosimple:
checks: ["all"]
# govet
govet:
enable-all: true
disable:
- fieldalignment
- nilness
- shadow
importas:
no-unaliased: false
no-extra-aliases: true
# https://github.com/julz/importas/issues/15
no-unaliased: true
no-extra-aliases: false
alias:
- pkg: github.com/tigrisdata/tigris-client-go/api/server/v1
alias: api
- pkg: runtime/debug
alias: runtimedebug
- pkg: github.com/prometheus/client_model/go
alias: dto
- pkg: go.opentelemetry.io/otel/attribute
alias: otelattribute
- pkg: go.opentelemetry.io/otel/codes
alias: otelcodes
- pkg: go.opentelemetry.io/otel/trace
alias: oteltrace
- pkg: go.opentelemetry.io/otel/sdk/resource
alias: otelsdkresource
- pkg: go.opentelemetry.io/otel/sdk/trace
alias: otelsdktrace
- pkg: go.opentelemetry.io/otel/semconv/v1.34.0
alias: otelsemconv
# ineffassign
lll:
line-length: 130
@@ -75,21 +189,51 @@ linters-settings:
misspell:
ignore-words:
- guiness # present in the test dataset
extra-words: # https://go.dev/wiki/Spelling, https://github.com/golangci/misspell/issues/11
- typo: "iff"
correction: "if"
- typo: "cancelation"
correction: "cancellation"
nolintlint:
allow-unused: false
allow-leading-space: false
allow-no-explanation: []
require-explanation: true
require-specific: true
revive:
ignore-generated-header: true
severity: warning
enableAllRules: true
severity: error
rules: []
sloglint:
no-mixed-args: true
kv-only: false
attr-only: true
no-global: "all"
context: "scope"
static-msg: false # TODO https://github.com/FerretDB/FerretDB/issues/3421
no-raw-keys: false # TODO https://github.com/FerretDB/FerretDB/issues/3421
key-naming-case: snake
args-on-sep-lines: false
staticcheck:
checks:
- all
- -SA1019 # ignore deprecation errors in existing code; new code is checked by the other configuration
# unused
tagalign:
sort: true
order:
- name
- cmd
- arg
- default
- help
unparam:
check-exported: false
unused:
field-writes-are-uses: false
post-statements-are-reads: false
exported-fields-are-used: false
parameters-are-used: true # it should be false, TODO https://github.com/FerretDB/FerretDB-DocumentDB/issues/823
local-variables-are-used: false
generated-is-used: false
whitespace:
multi-if: false
multi-func: false
@@ -100,7 +244,10 @@ linters:
- asciicheck
- depguard
- exhaustive
- exhaustruct
- forbidigo
- gci
- gochecksumtype
- goconst
- godot
- godox
@@ -115,7 +262,10 @@ linters:
- misspell
- nolintlint
- revive
- sloglint
- staticcheck
- tagalign
- unparam
- unused
- whitespace
@@ -125,44 +275,10 @@ issues:
exclude-use-default: false
exclude-rules:
# only `wire` package can import `bson` package
- linters: [depguard]
path: internal/wire
text: bson
# we don't want to introduce that constant
- linters: [goconst]
text: "^string `_id` has \\d+ occurrences, make it a constant"
# only `pg` handler can import `pgdb` package, not other handler can do that
- linters: [depguard]
path: internal/handlers/pg
text: pgdb
- linters: [depguard]
path: cmd/envtool
text: pgdb
- linters: [depguard]
path: cmd/ferretdb
text: pgdb
- linters: [depguard]
path: internal/util/testutil
text: pgdb
- linters: [depguard]
path: internal/handlers/registry
text: pgdb
# only `pg` handler can import `fjson` package, not other handler can do that
- linters: [depguard]
path: internal/handlers/pg
text: fjson
- linters: [depguard]
path: internal/wire
text: fjson
- linters: [depguard]
path: internal/util/testutil
text: fjson
# only `tigris` handler can import `tjson` package, not other handler can do that
- linters: [depguard]
path: internal/handlers/tigris
text: tjson
# that's a valid usage of bson.D
- linters: [govet]
text: "`go.mongodb.org/mongo-driver/bson/primitive.E` composite literal uses unkeyed fields"
- linters: [forbidigo]
path: "\\Qferretdb/ferretdb_test.go"
text: "\\Quse of `bson.D` forbidden"
-13
View File
@@ -1,13 +0,0 @@
---
# https://github.com/DavidAnson/markdownlint
# https://github.com/igorshubovych/markdownlint-cli
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
default: true
MD002: false # deprecated
MD003: {style: atx}
MD004: {style: "asterisk"}
MD006: false # deprecated
MD013: false # we use https://sembr.org that could lead to long lines
MD029: {style: ordered}
+6
View File
@@ -0,0 +1,6 @@
# We can't have it in build/.prettierignore due to https://github.com/prettier/prettier/issues/15428
# Textlint uses the same format, so we re-use the file.
build/postgres-documentdb/documentdb/**
internal/dataapi/api/openapi.json
internal/dataapi/api/openapi-original.json
website/static/codapi/snippet.js
+554 -648
View File
File diff suppressed because it is too large. Load diff
+25 -32
View File
@@ -17,24 +17,19 @@ diverse, inclusive, and healthy community.
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
- The use of sexualized language or imagery, and sexual attention or advances of any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address, without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a professional setting
## Enforcement Responsibilities
@@ -60,7 +55,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
conduct@ferretdb.io.
<conduct@ferretdb.io>.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
@@ -78,28 +73,26 @@ unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
behavior was inappropriate.
A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Community Impact**: A violation through a single incident or series of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
**Consequence**: A warning with consequences for continued behavior.
No interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time.
This includes avoiding interactions in community spaces as well as external channels like social media.
Violating these terms may lead to a temporary or permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Community Impact**: A serious violation of community standards, including sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
communication with the community for a specified period of time.
No public or private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
@@ -109,8 +102,7 @@ Violating these terms may lead to a permanent ban.
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
**Consequence**: A permanent ban from any sort of public interaction within the community.
## Attribution
@@ -122,7 +114,8 @@ Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/faq][FAQ].
Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
+319 -70
View File
@@ -5,44 +5,54 @@ Thank you for your interest in making FerretDB better!
## Finding something to work on
We are interested in all contributions, big or small, in code or documentation.
But unless you are fixing a very small issue like a typo,
we kindly ask you first to [create an issue](https://github.com/FerretDB/FerretDB/issues/new/choose),
to leave a comment on an existing issue if you want to work on it,
or to [join our Slack chat](./README.md#community) and leave a message for us there.
This way, you will get help from us and avoid wasted efforts if something can't be worked on right now
or someone is already working on it.
But unless you are fixing a tiny issue like a typo,
we kindly ask you first to [create an issue](https://github.com/FerretDB/FerretDB/issues/new/choose)
or leave a comment on an existing issue if you want to work on it.
This way, we could assign the issue to you, marking it as being worked on,
preventing others from wasting efforts working on it at the same time.
Additionally, you can [join our Slack chat](./README.md#community) and leave a message for us in the `#dev` channel.
You can find a list of good issues for first-time contributors [there](https://github.com/FerretDB/FerretDB/contribute).
You can find a list of good first issues for contributors [there](https://github.com/FerretDB/FerretDB/contribute).
Once you have some experience with contributing to FerretDB,
feel free to pick any issue
[that is not assigned to anyone and doesn't have `not ready` label](https://github.com/FerretDB/FerretDB/issues?q=is%3Aissue+is%3Aopen+no%3Aassignee+-label%3A%22not+ready%22).
Still, please leave a comment on it as described above.
## Contributing code
## Setting up the environment
The supported way of developing FerretDB is to modify and run it on the host (Linux, macOS, or Windows)
### Requirements
The supported way of contributing to FerretDB is to modify and run it on the host (Linux, macOS, or Windows)
with PostgreSQL and other dependencies running inside Docker containers via Docker Compose.
On Linux, `docker` and `docker-compose` should be installed on the host.
On Linux, `docker` (with `docker compose` subcommand a.k.a. [Compose V2](https://docs.docker.com/compose/compose-v2/),
not old `docker-compose` tool) should be installed on the host.
On macOS and Windows, [Docker Desktop](https://www.docker.com/products/docker-desktop/) should be used.
On Windows, it should be [configured to use WSL 2](https://docs.docker.com/desktop/windows/wsl/) without any distro;
all commands should be run on the host.
You will need Go 1.18 or later as FerretDB extensively uses ([fuzzing](https://go.dev/doc/tutorial/fuzz))
and [generics](https://go.dev/doc/tutorial/generics)).
You will need Go 1.25 or later on the host.
If your package manager doesn't provide it yet,
please install it from [go.dev](https://go.dev/dl/).
You will also need `git` installed; the version provided by your package manager should do.
On Windows, the simplest way to install it might be <https://gitforwindows.org>.
On Windows, the simplest way to install it might be https://gitforwindows.org.
### Cloning the Repository
Finally, you will also need [git-lfs](https://git-lfs.github.com) installed and configured (`git lfs install`).
After [forking FerretDB on GitHub](https://github.com/FerretDB/FerretDB/fork),
you can clone the repository:
### Making a working copy
Fork the [FerretDB repository on GitHub](https://github.com/FerretDB/FerretDB/fork).
After that, you can clone the repository and add the upstream repository as a remote:
```sh
git clone git@github.com:<YOUR_GITHUB_USERNAME>/FerretDB.git
cd FerretDB
git remote add upstream https://github.com/FerretDB/FerretDB.git
git fetch --all --tags
```
### Setting up the development environment
The last command would fetch all Git tags from our repository that GitHub won't copy to fork by default.
`git describe` command uses them to determine the FerretDB version during the build process.
To run development commands, you should first install the [`task`](https://taskfile.dev/) tool.
You can do this by changing the directory to `tools` (`cd tools`) and running `go generate -x`.
@@ -53,23 +63,81 @@ or replace every invocation of `task` with explicit `bin/task`.
You can also [install `task` globally](https://taskfile.dev/#/installation),
but that might lead to the version skew.
With `task` installed, you may do the following:
With `task` installed,
you can see all available tasks by running `task -l` in the root of the repository
(not in the `tools` directory).
1. Install development tools with `task init`.
2. Download required Docker images with `task env-pull`.
3. Start the development environment with `task env-up`.
4. Run all tests in another terminal window with `task test`.
5. Start FerretDB with `task run`.
This will start it in a development mode where all requests are handled by FerretDB, but also routed to MongoDB.
The differences in response are then logged and the FerretDB response is sent back to the client.
6. Fill `values` collection in `test` database with data for experiments with `task env-data`.
7. Run `mongosh` with `task mongosh`.
This allows you to run commands against FerretDB.
For example, you can see what data was inserted by the previous command with `db.values.find()`.
After that, you should install development tools with `task init`
and download required Docker images with `task env-pull`.
You can see all available `task` tasks with `task -l`.
If something does not work correctly,
you can reset the environment with `task env-reset`.
### Code Overview
### Building a production release binaries
To build a production release binaries, run `task build-production`.
The results will be saved `tmp/bin`.
### Setting a GITHUB_TOKEN
Some of our development tools require access to public information on GitHub
at a rate higher than allowed for unauthenticated requests.
Those tools will report a problem in this case.
It could be solved by creating a new classic or fine-grained personal access token
[there](https://github.com/settings/tokens).
No scopes are needed for classic tokens, not even `public_repo`.
For fine-grained tokens, only read-only access to public repositories is needed without any additional permissions.
After generating a token, set the `GITHUB_TOKEN` environment variable:
```sh
export GITHUB_TOKEN=ghp_XXX
```
or
```sh
export GITHUB_TOKEN=github_pat_XXX
```
## Reporting a bug
We appreciate reporting a bug to us.
To help us accurately identify the cause, we encourage you to include a pull request with test script.
Please write the test script in [build/legacy-mongo-shell/test.js](build/legacy-mongo-shell/test.js).
You can find an overview of the available assertions [here](build/legacy-mongo-shell/README.md).
Use these assertions to validate your test's assumptions and invariants.
With `task` installed (see above), you may test your script using following steps:
1. Start the development environment with `task env-up`.
2. Start FerretDB with `task run`.
3. Run the test script with `task testjs`.
Please create a pull request and include the link of the pull request in the bug issue.
## Contributing code
### Commands for contributing code
With `task` installed (see above), you may do the following:
1. Start the development environment with `task env-up`.
2. Run all tests with `task test` (see [below](#running-tests)).
3. Start FerretDB with `task run`.
The development environment uses `diff-normal` mode as the default mode.
Set preferred mode such as `task run MODE=diff-proxy`.
(See [Operation modes](https://docs.ferretdb.io/configuration/operation-modes/) page in our documentation.)
4. Fill collections in the `test` database with data for experiments with `task env-data`.
5. Run `mongosh` with `task mongosh`.
See what collections were created by the previous command with `show collections`.
#### Commands for authenticated connection
1. Start the development environment with `task env-up`.
2. Start FerretDB with `task run-secure MODE=normal` or `task run-secure MODE=proxy`.
3. Run `task mongosh-secure` to establish an authenticated connection.
### Code overview
The directory `cmd` provides commands implementation.
Its subdirectory `ferretdb` is the main FerretDB binary; others are tools for development.
@@ -79,47 +147,72 @@ They are installed into `bin/` by `cd tools; go generate -x`.
The `internal` subpackages contain most of the FerretDB code:
* `types` package provides Go types matching BSON types that don't have built-in Go equivalents:
we use `int32` for BSON's int32, but `types.ObjectID` for BSON's ObjectId.
* `fjson` provides converters from/to FJSON for built-in and `types` types.
FJSON adds some extensions to JSON for keeping object keys in order,
preserving BSON type information in the values themselves, etc.
It is used by `pg` handler.
* `tjson` provides converters from/to JSON with JSON Schema for built-in and `types` types.
BSON type information is preserved either in the schema (where possible) or in the values themselves.
It is used by `tigris` handler.
* `bson` package provides converters from/to BSON for built-in and `types` types.
* `wire` package provides wire protocol implementation.
* `clientconn` package provides client connection implementation.
It accepts client connections, reads `wire`/`bson` protocol messages, and passes them to `handlers`.
Responses are then converted to `wire`/`bson` messages and sent back to the client.
* `handlers` handle protocol commands.
They use `fjson` package for storing data in PostgreSQL in jsonb columns, but they don't use `bson` package –
all data is represented as built-in and `types` types.
- `handler` provides implementations of command handlers.
The logic of commands like `find` and `aggregate` is there.
- `dataapi` provides an Data API wrapper for `handler`.
It allows FerretDB to be used over HTTP instead of MongoDB wire protocol.
- `clientconn` provides wire protocol server implementation.
It accepts client connections, reads wire protocol messages, and passes them to `handler`.
Responses are then converted and sent back to the client.
- `documentdb` provides DocumentDB extension integration.
- `mongoerrors` provides MongoDB-compatible error types and codes.
They are used by `handler` and `documentdb`.
Those packages are tested by "unit" tests that are placed inside those packages.
The wire protocol implementation and BSON handling code were extracted into a separate repository:
https://github.com/FerretDB/wire
#### Running tests
`internal` packages are tested by "unit" tests that are placed inside those packages.
Some of them are truly hermetic and test only the package that contains them;
you can run those "short" tests with `go test -short` or `task test-unit-short`,
but that's typically not required.
Other unit tests use real databases;
you can run those with `task test-unit` after starting the environment as described above.
We also have a set of "integration" tests in `integration` Go module that uses the Go MongoDB driver
and tests either a running MongoDB-compatible database (such as FerretDB or MongoDB itself) on a given port
or in-process FerretDB (meaning that integration tests start and stop FerretDB themselves) with given handler.
They allow us to ensure compatibility between FerretDB and MongoDB.
We also have a set of "integration" tests in the `integration` directory.
They use the Go MongoDB driver like a regular user application.
They could test any MongoDB-compatible database (such as FerretDB or MongoDB itself) via a regular TCP or TLS port
or Unix domain socket.
They also could test in-process FerretDB instances
(meaning that integration tests start and stop them themselves).
Finally, some integration tests (so-called compatibility or "compat" tests) connect to two systems
("target" for FerretDB and "compat" for MongoDB) at the same time,
send the same queries to both, and compare results.
You can run them with:
* `task test-integration-pg` for in-process FerretDB with `pg` handler;
* `task test-integration-tigris` for in-process FerretDB with `tigris` handler;
* `task test-integration-mongodb` for MongoDB running on port 37017 (as in our development environment),
* or `task test-integration` to run all in parallel.
- `task test-integration-postgresql` for in-process FerretDB and MongoDB;
- `task test-integration-mongodb` for MongoDB only, skipping compat tests;
- or `task test-integration` to run all in parallel.
Finally, you may run all tests in parallel with `task test`.
You may run all tests in parallel with `task test`.
If tests fail and the output is too confusing, try running them sequentially by using the commands above.
You can also run `task -C 1` to limit the number of concurrent tasks, which is useful for debugging.
To run a subset of integration tests and test cases, you may use Task variable `TEST_RUN`.
For example, to run all tests for the `getMore` command with in-process FerretDB
you may use `task test-integration-postgresql TEST_RUN='(?i)GetMore'`.
Finally, since all tests just run `go test` with various arguments and flags under the hood
(for example, `TEST_RUN` just provides the value for the [`-run` flag](https://pkg.go.dev/cmd/go#hdr-Testing_flags)),
you may also use all standard `go` tool facilities,
including [`GOFLAGS` environment variable](https://pkg.go.dev/cmd/go#hdr-Environment_variables).
For example:
- to run all tests for the `getMore` command sequentially,
you may use `env GOFLAGS='-parallel=1 -p=1' task test-integration-postgresql TEST_RUN='(?i)GetMore'`;
- to run all tests with MongoDB with [Go execution tracer](https://pkg.go.dev/runtime/trace) enabled
you may use `env GOFLAGS='-trace=trace.out' task test-integration-mongodb`.
<!-- textlint-disable one-sentence-per-line -->
> [!NOTE]
> It is not recommended to set `GOFLAGS` and other Go environment variables with `export GOFLAGS=...`
> or `go env -w GOFLAGS=...` because they are invisible and easy to forget about, leading to confusion.
<!-- textlint-enable one-sentence-per-line -->
In general, we prefer integration tests over unit tests,
tests using real databases over short tests
and real objects over mocks.
@@ -127,7 +220,13 @@ and real objects over mocks.
(You might disagree with our terminology for "unit" and "integration" tests;
let's not fight over it.)
We have an additional integration testing system in another repository: <https://github.com/FerretDB/dance>.
We have an additional integration testing system in another repository: https://github.com/FerretDB/dance.
#### Observability in tests
Integration tests start a debug handler with pprof profiles and execution traces on a random port
(to allow running multiple test configurations in parallel).
They also send telemetry traces to the local Jaeger instance that can be accessed at http://127.0.0.1:16686/.
### Code style and conventions
@@ -138,24 +237,174 @@ but please also tell us about it, so we can improve all of it.
If, on the other hand, you see code that is inconsistent without apparent reason (or comment),
please improve it as you work on it.
Our code most of the standard Go conventions,
documented on [CodeReviewComments wiki page](https://github.com/golang/go/wiki/CodeReviewComments).
Some of our idiosyncrasies:
Our code follows most of the standard Go conventions,
documented on [CodeReviewComments wiki page](https://go.dev/wiki/CodeReviewComments)
and some other pages such as [Spelling](https://go.dev/wiki/Spelling).
Some of our idiosyncrasies are documented below.
1. We use type switches over BSON types in many places in our code.
The order of `case`s follows this order: <https://pkg.go.dev/github.com/FerretDB/FerretDB/internal/types#hdr-Mapping>
It may seem random, but it is only pseudo-random and follows BSON spec: <https://bsonspec.org/spec.html>
The order of `case`s follows this order: https://pkg.go.dev/github.com/FerretDB/wire/wirebson#hdr-Types
It may seem random, but it is only pseudo-random and follows BSON spec: https://bsonspec.org/spec.html
2. We generally pass and return `struct`s by pointers.
There are some exceptions like `time.Time` that have value semantics, but when in doubt – use pointers.
#### Comments conventions
1. All top-level declarations, even unexported, should have documentation comments.
2. In documentation comments do not describe the name in terms of the name itself (`// Registry is a registry of …`).
Use other words instead; often, they could add additional information and make reading more pleasant (`// Registry stores …`).
3. In code comments, in general, do not describe _what_ the code does: it should be clear from the code itself
(and when it doesn't and the code is tricky, simplify it instead).
Instead, describe _why_ the code does that if it is not clear from the surrounding context, names, etc.
There is no need to add comments just because there are no comments if everything is already clear without them.
4. For code comments, write either
sentence fragments (do not start it with a capital letter, do not end it with a dot, use the simplified grammar) for short notes
or full sentences (do start them with capital letters, do end them with dots, do check their grammar) when a longer (2+ sentences)
explanation is needed (and the code could not be simplified).
#### Logging conventions
(See also our user documentation for notes about logging levels, logging sensitive information, etc.)
1. Log messages should contain a single sentence; use a semicolon if you must.
2. Log messages should not have leading/trailing spaces or end with punctuation.
3. Log field names should use `snake_case`.
4. Whatever sensitive information can be logged should be checked by calling `.Enabled(slog.LevelDebug)` on the appropriate logger,
not by directly comparing levels with `<` / `>` operators.
The same check should be applied if additional sensitive fields should be added to the log message on a different level.
#### Integration tests conventions
We prefer our integration tests to be straightforward and
branchless (with a few, if any, `if` and `switch` statements).
Ideally, the same test should work for both FerretDB and MongoDB.
If that's impossible without some branching, use helpers exported from the `setup` package,
such us `FailsForFerretDB`, `SkipForMongoDB`, etc.
Please use expected failure rather than skipping the test, whenever it's possible.
It makes tracking development progress much easier.
The bar for using other ways of branching, such as checking error codes and messages, is very high.
Writing separate tests might be much better than making a single test that checks error text.
Also, we should use driver methods as much as possible instead of testing commands directly via `RunCommand`.
In most cases, helpers such as `AssertEqualDocuments` are used to compare `bson.D` documents.
The differences in field order, types, missing fields and others should be reported.
If differences are expected such as `version` field, only the field key can be used for `bson.D` document comparison.
Use of (deprecated) `bson.D.Map()` or converting `bson.D` to other types using helpers should be avoided when possible.
The bar for adding new helpers is very high.
Please check all existing ones.
If there's a need to use any large number to test corner cases,
we create constants for them with explanation what do they represent, and refer to them.
For example:
```go
const doubleMaxPrec = float64(1<<53 - 1) // 9007199254740991.0: largest double values that could be represented as integer exactly
```
Avoid writing tests that cannot run in parallel with other tests.
The `integration` directory contains multiple test packages,
and tests from other packages may run at the same time.
Such test becomes flaky and hard to maintain.
#### Integration tests naming guidelines
<!-- https://github.com/FerretDB/FerretDB/issues/694 -->
Use `Test<Command><Operator><Scenario>` format for test names, omitting `<Operator>` and `<Scenario>` if unnecessary.
1. Include the name of the command (and the operator if any).
For example, `TestDistinct` for testing the distinct command.
2. Compatibility tests should have `Compat` in the name, following the command.
For example, `TestDistinctCompat`.
3. If the test runs a command directly via `RunCommand`, add the suffix `Command`.
For example, `TestDistinctCommand`.
4. If the test is both compat and runs a command, add the suffix `CommandCompat`.
For example, `TestInsertCommandCompat`.
5. If the file consists of compatibility tests, add the `_compat` suffix.
For example, `distinct_compat_test.go`.
6. Use descriptive test names to include the condition or the specific error being tested.
For example, `TestAggregateCompatSortDotNotation` for compatibility tests
on `aggregate` command `$sort` operator on a document field.
7. Keep test names concise, avoiding overly cryptic names.
Use abbreviations when appropriate.
8. Avoid including test data in the name to maintain clarity and prevent excessively long names.
9. Use `TitleCase` capitalization style for test case names.
No spaces, dashes or underscores should be used neither for test names nor for test case names.
10. Use [BSON notation](https://bsonspec.org/spec.html) vocabulary.
For example, use `Double` and not `float64`.
11. Keep the concatenation of test name segments (test, subtests) within 64 characters
to satisfy the maximum limit for database names.
12. Use a package for tests in the same scope.
Separating into packages can reduce binary sizes and may enhance performance.
For example, use `users` package for user management test files.
### Submitting code changes
#### Before submitting PR
Before submitting a pull request, please make sure that:
1. Tests are added for new functionality or fixed bugs.
2. `task all` passes.
3. Comments are added or updated for all new and changed top-level declarations (functions, types, etc).
Both exported and unexported declarations should have comments.
4. Comments are rendered correctly in the `task godocs` output.
1. Your changes are committed to a [new branch](https://docs.github.com/en/get-started/quickstart/github-flow)
created from the [current state](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork)
of our main branch.
2. Tests are added or updated for new functionality or fixed bugs.
Typical test cases include:
- happy paths;
- dot notation for existing and non-existent paths;
- edge cases for invalid or unexpected values or types.
3. Comments are added or updated for all new or changed code.
Please add missing comments for all (both exported and unexported)
new and changed top-level declarations (`package`, `var`, `const`, `func`, `type`).
Please also check that formatting is correct in the `task godocs` output.
4. `task all` passes.
#### Submitting PR
1. Please follow the pull request template.
2. If the pull request is related to some issue,
please mention the issue number in the pull request description like `Closes #<issue_number>.`
or `Closes FerretDB/<repo>#<issue_number>.`
Please do not use URLs like `https://github.com/FerretDB/<repo>/issue/<issue_number>`
or paths like `FerretDB/<repo>/issue/<issue_number>` even if they are rendered the same on GitHub.
If you propose a tiny fix, there is no needed to create a new issue.
3. There is no need to use draft pull requests.
If you want to get feedback on something you are working on,
please create a normal pull request, even if it is not "fully" ready yet.
4. In the pull request review conversations,
please either leave a new comment or resolve (close) the conversation,
which ensures other people can read all comments.
But do not do that simultaneously.
Conversations should typically be resolved by the conversation starter, not the PR author.
5. During development in a branch/PR,
commit messages (both titles and bodies) are not important and can be anything.
All commits are always squashed on merge by GitHub.
Please **do not** squash them manually, amend them, and/or force push them -
that makes the review process harder.
6. Please don't forget to click
["re-request review" buttons](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/requesting-a-pull-request-review)
once PR is ready for re-review.
If you have interest in becoming or are a long-term contributor,
please read [PROCESS.md](.github/PROCESS.md) for more details.
## Contributing documentation
Please format and lint documentation with `task docs`.
### Commands for contributing documentation
With `task` installed (see above), you may do the following:
1. Format and lint documentation with `task docs-fmt`.
2. Start Docusaurus development server with `task docs-dev`.
3. Build Docusaurus website with `task docs`.
### Submitting documentation changes
Before submitting a pull request, please make sure that:
1. Your changes are committed to a [new branch](https://docs.github.com/en/get-started/quickstart/github-flow)
created from the [current state](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork)
of our main branch.
2. Documentation is formatted, linted, and built with `task docs`.
3. Documentation is written according to our [writing guide](https://docs.ferretdb.io/contributing/writing-guide/).
-32
View File
@@ -1,32 +0,0 @@
ARG VERSION
ARG COMMIT
FROM golang:1.18.5 AS build
WORKDIR /src
ADD . .
ENV CGO_ENABLED=1
# split into several commands for better logging on GitHub Actions
RUN go mod download
RUN go build -v -o=bin/ferretdb -trimpath -tags=ferretdb_testcover,ferretdb_tigris -race ./cmd/ferretdb
RUN go test -c -o=bin/ferretdb -trimpath -tags=ferretdb_testcover,ferretdb_tigris -race -coverpkg=./... ./cmd/ferretdb
FROM golang:1.18.5
COPY --from=build /src/bin/ferretdb /ferretdb
EXPOSE 27017
ENTRYPOINT [ "/ferretdb" ]
CMD [ "-listen-addr=:27017", "-postgresql-url=postgres://username:password@hostname:5432/ferretdb" ]
# https://github.com/opencontainers/image-spec/blob/main/annotations.md
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.revision="${COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB"
LABEL org.opencontainers.image.url="https://ferretdb.io/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${VERSION}"
-2
View File
@@ -1,2 +0,0 @@
FerretDB database system (https://www.ferretdb.io/).
Copyright 2021 FerretDB Inc.
+88 -85
View File
@@ -1,14 +1,35 @@
# FerretDB
[![Go Reference](https://pkg.go.dev/badge/github.com/FerretDB/FerretDB/ferretdb.svg)](https://pkg.go.dev/github.com/FerretDB/FerretDB/ferretdb)
<!-- textlint-disable one-sentence-per-line -->
> [!TIP]
> Looking for FerretDB v1?
> It is [there](https://github.com/FerretDB/FerretDB/tree/main-v1).
<!-- textlint-enable one-sentence-per-line -->
[![Go Reference](https://pkg.go.dev/badge/github.com/FerretDB/FerretDB/v2/ferretdb.svg)](https://pkg.go.dev/github.com/FerretDB/FerretDB/v2/ferretdb)
[![Go](https://github.com/FerretDB/FerretDB/actions/workflows/go.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/go.yml)
[![Integration](https://github.com/FerretDB/FerretDB/actions/workflows/integration.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/integration.yml)
[![Docker](https://github.com/FerretDB/FerretDB/actions/workflows/docker.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/docker.yml)
[![codecov](https://codecov.io/gh/FerretDB/FerretDB/branch/main/graph/badge.svg?token=JZ56XFT3DM)](https://codecov.io/gh/FerretDB/FerretDB)
FerretDB (previously MangoDB) was founded to become the de-facto open-source substitute to MongoDB.
FerretDB is an open-source proxy, converting the MongoDB 5.0+ wire protocol queries to SQL -
using PostgreSQL as a database engine.
[![Security](https://github.com/FerretDB/FerretDB/actions/workflows/security.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/security.yml)
[![Packages](https://github.com/FerretDB/FerretDB/actions/workflows/packages.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/packages.yml)
[![Docs](https://github.com/FerretDB/FerretDB/actions/workflows/docs.yml/badge.svg?branch=main)](https://github.com/FerretDB/FerretDB/actions/workflows/docs.yml)
FerretDB is an open-source alternative to MongoDB.
It is a proxy that converts MongoDB 5.0+ wire protocol queries to SQL
and uses PostgreSQL with [DocumentDB extension](https://github.com/documentdb/documentdb) as a database engine.
```mermaid
flowchart LR
A["Any application<br>Any MongoDB driver"]
F{{FerretDB}}
P[(PostgreSQL<br>DocumentDB extension)]
A -- "MongoDB protocol<br>BSON" --> F
F -- "PostgreSQL protocol<br>SQL" --> P
```
## Why do we need FerretDB?
@@ -16,102 +37,84 @@ MongoDB was originally an eye-opening technology for many of us developers,
empowering us to build applications faster than using relational databases.
In its early days, its ease-to-use and well-documented drivers made MongoDB one of the simplest database solutions available.
However, as time passed, MongoDB abandoned its open-source roots;
changing the license to SSPL - making it unusable for many open source and early-stage commercial projects.
changing the license to [SSPL](https://www.ferretdb.com/sspl) - making it unusable for many open-source and early-stage commercial projects.
Most MongoDB users do not require any advanced features offered by MongoDB;
however, they need an easy-to-use open-source database solution.
however, they need an easy-to-use open-source document database solution.
Recognizing this, FerretDB is here to fill that gap.
## Scope and current state
FerretDB will be compatible with MongoDB drivers and will strive to serve as a drop-in replacement for MongoDB 5.0+.
FerretDB is compatible with MongoDB drivers and popular MongoDB tools.
It functions as a drop-in replacement for MongoDB 5.0+ in many cases.
Features are constantly being added to further increase compatibility and performance.
Currently, the project is in its early stages and welcomes all contributors.
See our [public roadmap](https://github.com/orgs/FerretDB/projects/2/views/1)
We welcome all contributors.
See our [public roadmap](https://github.com/orgs/FerretDB/projects/2/views/1),
lists of [known differences and supported commands](https://docs.ferretdb.io/migration/compatibility/),
and [contributing guidelines](CONTRIBUTING.md).
### Known differences
1. FerretDB uses the same protocol error names and codes, but the exact error messages may be different in some cases.
2. FerretDB does not support NUL (`\0`) characters in strings.
3. Database and collection names restrictions:
* name cannot start with the reserved prefix `_ferretdb_`.
* name must not include non-latin letters, spaces, dots, dollars or dashes.
* collection name length must be less or equal than 120 symbols, database name length limit is 63 symbols.
* name must not start with a number.
* database name cannot contain capital letters.
If you encounter some other difference in behavior, please [join our community](#community) to report a problem.
## Quickstart
These steps describe a quick local setup.
They are not suitable for most production use-cases because they keep all data inside containers.
<!-- markdownlint-disable MD029 -->
1. Store the following in the `docker-compose.yml` file:
```yaml
version: "3"
services:
postgres:
image: postgres:14
container_name: postgres
ports:
- 5432:5432
environment:
- POSTGRES_USER=user
- POSTGRES_DB=ferretdb
- POSTGRES_HOST_AUTH_METHOD=trust
postgres_setup:
image: postgres:14
container_name: postgres_setup
restart: on-failure
entrypoint: ["sh", "-c", "psql -h postgres -U user -d ferretdb -c 'CREATE SCHEMA IF NOT EXISTS test'"]
ferretdb:
image: ghcr.io/ferretdb/ferretdb:latest
container_name: ferretdb
restart: on-failure
ports:
- 27017:27017
command: ["-listen-addr=:27017", "-postgresql-url=postgres://user@postgres:5432/ferretdb"]
networks:
default:
name: ferretdb
```
* `postgres` container runs PostgreSQL 14 that would store data.
* `postgres_setup` container creates a PostgreSQL schema `test` that would act like a FerretDB database of the same name.
* `ferretdb` runs FerretDB.
2. Start services with `docker-compose up -d`.
3. If you have `mongosh` installed, just run it to connect to FerretDB database `test`.
If not, run the following command to run `mongosh` inside the temporary MongoDB container, attaching to the same Docker network:
Run this command to start FerretDB with PostgreSQL, make sure to update `<username>` and `<password>`:
```sh
docker run --rm -it --network=ferretdb --entrypoint=mongosh mongo:5 mongodb://ferretdb/
docker run -d --rm --name ferretdb -p 27017:27017 \
-e POSTGRES_USER=<username> \
-e POSTGRES_PASSWORD=<password> \
ghcr.io/ferretdb/ferretdb-eval:2
```
<!-- markdownlint-enable MD029 -->
This command will start a container with FerretDB, pre-packaged PostgreSQL with DocumentDB extension, and MongoDB Shell for quick testing and experiments.
However, it is unsuitable for production use cases because it keeps all data inside and loses it on shutdown.
See our [installation guides](https://docs.ferretdb.io/installation/) for instructions
that don't have those problems.
You can also install with FerretDB with the `.deb` and `.rpm` packages
provided for each [release](https://github.com/FerretDB/FerretDB/releases).
With that container running, you can:
- Connect to it with any MongoDB client application using the MongoDB URI `mongodb://<username>:<password>@127.0.0.1:27017/`.
- Connect to it using the MongoDB Shell by just running `mongosh`.
If you don't have it installed locally, you can run `docker exec -it ferretdb mongosh`.
- For PostgreSQL, connect to it by running `docker exec -it ferretdb psql -U <username> postgres`.
You can stop the container with `docker stop ferretdb`.
We also provide binaries and packages for various Linux distributions.
as well as [Go library package](https://pkg.go.dev/github.com/FerretDB/FerretDB/v2/ferretdb)
that embeds FerretDB into your application.
See [our documentation](https://docs.ferretdb.io/installation/) for more details.
## Building and packaging
<!-- textlint-disable one-sentence-per-line -->
> [!NOTE]
> We advise users not to build FerretDB themselves.
> Instead, use binaries, Docker images, or packages provided by us.
<!-- textlint-enable one-sentence-per-line -->
FerretDB could be built as any other Go program,
but a few generated files and build tags could affect it.
See [there](https://pkg.go.dev/github.com/FerretDB/FerretDB/v2/build/version) for more details.
## Managed FerretDB at cloud providers
- [FerretDB Cloud](https://cloud.ferretdb.com/)
- [Civo](https://www.civo.com/marketplace/FerretDB)
- [Tembo](https://tembo.io/docs/tembo-stacks/mongo-alternative)
- [Elestio](https://elest.io/open-source/ferretdb)
- [Cozystack](https://cozystack.io/docs/components/#managed-ferretdb)
## Community
* Website and blog: [https://ferretdb.io](https://ferretdb.io/).
* Twitter: [@ferret_db](https://twitter.com/ferret_db).
* [Slack chat](https://join.slack.com/t/ferretdb/shared_invite/zt-zqe9hj8g-ZcMG3~5Cs5u9uuOPnZB8~A) for quick questions.
* [GitHub Discussions](https://github.com/FerretDB/FerretDB/discussions) for longer topics.
* [GitHub Issues](https://github.com/FerretDB/FerretDB/issues) for bugs and missing features.
* [Open Office House meeting](https://calendar.google.com/event?action=TEMPLATE&tmeid=NjNkdTkyN3VoNW5zdHRiaHZybXFtb2l1OWtfMjAyMTEyMTNUMTgwMDAwWiBjX24zN3RxdW9yZWlsOWIwMm0wNzQwMDA3MjQ0QGc&tmsrc=c_n37tquoreil9b02m0740007244%40group.calendar.google.com&scp=ALL)
every Monday at 18:00 UTC at [Google Meet](https://meet.google.com/mcb-arhw-qbq).
- Website: https://www.ferretdb.com/.
- Blog: https://blog.ferretdb.io/.
- Documentation: https://docs.ferretdb.io/.
- X (Twitter): [@ferret_db](https://x.com/ferret_db).
- Mastodon: [@ferretdb@techhub.social](https://techhub.social/@ferretdb).
- [Slack chat](https://slack.ferretdb.io/) for quick questions.
- [GitHub Discussions](https://github.com/FerretDB/FerretDB/discussions) for longer topics.
- [GitHub Issues](https://github.com/FerretDB/FerretDB/issues) for bugs and missing features.
If you want to contact FerretDB Inc., please use [this form](https://www.ferretdb.io/contact/).
If you want to contact FerretDB Inc., please use [this form](https://www.ferretdb.com/contact/).
+13
View File
@@ -0,0 +1,13 @@
# Security Policy
## Supported Versions
We support two of the latest minor versions of FerretDB.
## Reporting a Vulnerability
Please do not use public issues for security problems.
Instead, report them [there](https://github.com/FerretDB/FerretDB/security/advisories/new).
You can also reach us by email at security@ferretdb.io.
We should respond to you within seven days.
+781 -179
View File
File diff suppressed because it is too large. Load diff
+17
View File
@@ -0,0 +1,17 @@
---
# https://github.com/DavidAnson/markdownlint-cli2#configuration
# https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md
default: true
MD002: false # deprecated
MD003: { style: atx }
MD004: { style: "dash" }
MD006: false # deprecated
MD013: false # we use https://sembr.org that could lead to long lines
MD026: { punctuation: ".,;:。,;:" } # default is .,;:!。,;:!
MD029: { style: ordered }
MD033: false # for MDX
MD034: false # autolink tags <link> no longer supported by MDX
MD037: false # clashes with MDX comments
MD059: false # not yet
+41
View File
@@ -0,0 +1,41 @@
{
"rules": {
"@0x6b/normalize-whitespaces": true,
"no-zero-width-spaces": true,
"one-sentence-per-line": true,
"@textlint-rule/pattern": {
"patterns": [
// mostly to keep JS/JSON snippets with correct
{
"message": "Use straight ASCII double quotes instead of curly double quotes",
"pattern": "/“|”/",
"replace": "\"",
"forceCode": true
},
{
"message": "Use straight ASCII single quotes instead of curly single quotes",
"pattern": "/‘|’/",
"replace": "'",
"forceCode": true
},
// to prevent --flags from being converted to en dashes or em dashes
{
"message": "Use en dashes with spaces instead of em dashes",
"pattern": "/—/",
"replace": " – ",
"forceCode": true
},
{
"message": "Use en dashes with spaces",
"pattern": "/(\\S)–([\\S])/",
"replace": "$1 – $2",
"forceCode": true
}
]
}
},
"filters": {
"comments": true
}
}
+7
View File
@@ -0,0 +1,7 @@
# https://github.com/cloudwego/eino#dependencies
# TODO https://github.com/cloudwego/eino/issues/291
CVE-2025-30153
# https://nvd.nist.gov/vuln/detail/CVE-2025-51471
# https://github.com/ollama/ollama/pull/10750
CVE-2025-51471
+5
View File
@@ -0,0 +1,5 @@
[worker.oci]
gc = false
[worker.containerd]
gc = false
+16
View File
@@ -0,0 +1,16 @@
# see https://github.com/FiloSottile/mkcert
export CAROOT=$(PWD)
export TRUST_STORES=system
HOSTS=localhost 127.0.0.1 ::1 host.docker.internal
gen:
rm -f *.pem
mkcert -install
mkcert -client -cert-file client-cert.pem -key-file client-key.pem $(HOSTS)
cat client-cert.pem client-key.pem > client.pem
mkcert -cert-file server-cert.pem -key-file server-key.pem $(HOSTS)
cat server-cert.pem server-key.pem > server.pem
mkcert -uninstall
mv rootCA.pem rootCA-cert.pem
rm -f rootCA-key.pem
+27
View File
@@ -0,0 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEkzCCAvugAwIBAgIRAJQIOW0DsoWpmhRIS6qVTMkwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTI1MDQyNDA2Mjg1NVoXDTI3MDcyNDA2Mjg1NVowXjEnMCUGA1UEChMe
bWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTMwMQYDVQQLDCphbGVrc2lA
UHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDGNj/3rcpjgu8GZHg1AS8lAEy8tbg73+9YRPJs
IAytaCmoQYbRZncrWa9hWT0568DGSWbHye4+ZFrYyW1vNb0ANWPGVd6ReqtJm0wt
plfcyzbgGN4EIYgHEUjFvVfDg6fHdV5K8z6UGGfnHHtwoj649Vw3CjAIRXufB9dD
EPAZoh2NKp+EEQiNlX8+oNIMGYmGP6QAh1l/RCrj2yhVeXqXC7s8y9HCKSa08tBO
e3AzHfWrcksVC2HugR6+/KjinOowlL4GwtpQ9clJF8Vk9ilA+PXL37CIaTkdJOsX
doacEC84NpeSyQYf8g4q5uHDTEc4kg5NQ04TizFpag1LWs/nAgMBAAGjgZcwgZQw
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAf
BgNVHSMEGDAWgBRMfF45cY0dizvyML/k08KmEEPhkjBCBgNVHREEOzA5gglsb2Nh
bGhvc3SCFGhvc3QuZG9ja2VyLmludGVybmFshwR/AAABhxAAAAAAAAAAAAAAAAAA
AAABMA0GCSqGSIb3DQEBCwUAA4IBgQBiim9kFNYL81xP6MHNJe2erc3IrpCCn7IC
WfrhqIz89o/2gYIWqwlc7IWA+y13btUAkaXVDZvZMoFMKbvUcF89OpO8G+4XpbX4
uu9Q5pC3cjnFymO8xTRNgOam6yySLbjwzZwQIZ/0hh9xCeQ64tlw/a4VT6+UJrYn
SNTPI38f/MwCFkyr4vCkCUIOIwTRfDc2BwHu1CJ820Hu3Jpr10CRzBOvsDJlDg8c
vcmbdo+jsqEFMNIZpTblZA+MALRq4eK6Bas3YQcqIGjo+lxx9eYCGzZH1ygS/K5X
501rBpLJ4OklIVTFWuo5IVwJ9RWMPgX3htl3HzpGztEV8nB9LEjKl9Lmm7xPb8+n
ytycvckVyFe5JtejNtiB+9v0jNyqvEe2B7hdGfSLchuCv0a3xsocnayxnJChKtqI
vo022s1k9k7wwJ2Qeq49HfK3yY00SgXYpUljKHLZocisYBxHmNbegzSBa2x7RU+k
YexHKXvwNHdkVNOTs9LgER0EexdK+AM=
-----END CERTIFICATE-----
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDGNj/3rcpjgu8G
ZHg1AS8lAEy8tbg73+9YRPJsIAytaCmoQYbRZncrWa9hWT0568DGSWbHye4+ZFrY
yW1vNb0ANWPGVd6ReqtJm0wtplfcyzbgGN4EIYgHEUjFvVfDg6fHdV5K8z6UGGfn
HHtwoj649Vw3CjAIRXufB9dDEPAZoh2NKp+EEQiNlX8+oNIMGYmGP6QAh1l/RCrj
2yhVeXqXC7s8y9HCKSa08tBOe3AzHfWrcksVC2HugR6+/KjinOowlL4GwtpQ9clJ
F8Vk9ilA+PXL37CIaTkdJOsXdoacEC84NpeSyQYf8g4q5uHDTEc4kg5NQ04TizFp
ag1LWs/nAgMBAAECggEBAJBcqrJFzYY0sspBGpvgROn6EenPoGNbcgMkFDxUC2ew
2cZGE18n9duI8odAa6tn3XuNsmII3JBsnw4NhrrctM8WE5k8qWHjqiVuCkmlQZD6
IPmOowT3Nw+OsyXyBZ3MocJP5WFJUGakb+iPgghC4tPrQEKGFP2xPZxSJaIfEABa
HgSYTSr+n8lJUKdld00BNSWXBxsVQ8NAw/5AFjFP4R3TeCwbd34lpMpkLvOax05j
xbdZr0MP03MT8PYMBRzqMcST0OR7bK8vyAnB/ezxhrnQaMV2NeHpisB3UbNFi+PT
63tNV/S2hCOGDZ5V+jFQ6FRyUw1gOlJK/EMGLIEt3kECgYEA1gMXqlp5w0OIBBkS
MbhY2LhVO0v3LBHtRCqFbKGdA3yrHrsq/YJKlJbEoiw9mWGgYq7h0jNAsvI/WLgo
tm4AUxRdG9YZDqNEcfcODnLqFg5D7/abSXx+An3pwZ+fQgL8STGu9up/Xl1Sss1T
JHBEOM+vqb7TQxPPvl77SUHUwX8CgYEA7RmVO6PEepnJuMGYgG9Au5SMkcFY5iK5
AqlEHio097+KsQ+K4nxW8yvtNoXnSBsfX3t78vI6zjSeFgk/MhoVUGLKIQTwq6KO
WvASeB1zIzSkfXISznMs/CxGMt9FODvM9PCJMpeFAvJNDn83vupo0oxagu+EUVoF
eGoqNEMMVZkCgYEAgx+d7lhE5miH+8rIpQIIHbDDN/ORW8UYFH3hBe/3Xd2Skt+m
tXCQ9X1yuNJWY5W3SP9RiRKx/3IBcgBToYLAXCbL7XQ+IgPSuejfCedKmXzgDzSP
bHUEV86B3IpKb42YudfhFZQTueN/+eFnoZnPkudc/6nVkvGehUt4tyfIjU0CgYAP
PebHB7cYvowmMWPRVdWOeXUz5X8GhFLqZeE4IzR2fLy4tywRdTbNuRQtvhvpGb1B
kRmdu46mNOG4vu1uFhkqqr8dskiab//AvtAhIpuFNtwgKFYnKWZJ67qziIDVpZp+
YHwhYXYug08K0IjP4BfO+TDUW/tgk23omMKPy4OeeQKBgQCiKzdHtUO6KujjueYX
lbDVbdEiXYbGzKcMmE0E/DK73xXpXT/CQ+tjB3nZKHDwkTN6h9ZZYzjhRWmHRlRh
WqGqmWr4D3I0B9jnxCTpDuZIlJ21G336RbsZD8yi+eyMwJXN4csItGSlMig04jvo
5vTIN0D0uXAvDD23TEcilpQzcA==
-----END PRIVATE KEY-----
+55
View File
@@ -0,0 +1,55 @@
-----BEGIN CERTIFICATE-----
MIIEkzCCAvugAwIBAgIRAJQIOW0DsoWpmhRIS6qVTMkwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTI1MDQyNDA2Mjg1NVoXDTI3MDcyNDA2Mjg1NVowXjEnMCUGA1UEChMe
bWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTMwMQYDVQQLDCphbGVrc2lA
UHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDGNj/3rcpjgu8GZHg1AS8lAEy8tbg73+9YRPJs
IAytaCmoQYbRZncrWa9hWT0568DGSWbHye4+ZFrYyW1vNb0ANWPGVd6ReqtJm0wt
plfcyzbgGN4EIYgHEUjFvVfDg6fHdV5K8z6UGGfnHHtwoj649Vw3CjAIRXufB9dD
EPAZoh2NKp+EEQiNlX8+oNIMGYmGP6QAh1l/RCrj2yhVeXqXC7s8y9HCKSa08tBO
e3AzHfWrcksVC2HugR6+/KjinOowlL4GwtpQ9clJF8Vk9ilA+PXL37CIaTkdJOsX
doacEC84NpeSyQYf8g4q5uHDTEc4kg5NQ04TizFpag1LWs/nAgMBAAGjgZcwgZQw
DgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcDATAf
BgNVHSMEGDAWgBRMfF45cY0dizvyML/k08KmEEPhkjBCBgNVHREEOzA5gglsb2Nh
bGhvc3SCFGhvc3QuZG9ja2VyLmludGVybmFshwR/AAABhxAAAAAAAAAAAAAAAAAA
AAABMA0GCSqGSIb3DQEBCwUAA4IBgQBiim9kFNYL81xP6MHNJe2erc3IrpCCn7IC
WfrhqIz89o/2gYIWqwlc7IWA+y13btUAkaXVDZvZMoFMKbvUcF89OpO8G+4XpbX4
uu9Q5pC3cjnFymO8xTRNgOam6yySLbjwzZwQIZ/0hh9xCeQ64tlw/a4VT6+UJrYn
SNTPI38f/MwCFkyr4vCkCUIOIwTRfDc2BwHu1CJ820Hu3Jpr10CRzBOvsDJlDg8c
vcmbdo+jsqEFMNIZpTblZA+MALRq4eK6Bas3YQcqIGjo+lxx9eYCGzZH1ygS/K5X
501rBpLJ4OklIVTFWuo5IVwJ9RWMPgX3htl3HzpGztEV8nB9LEjKl9Lmm7xPb8+n
ytycvckVyFe5JtejNtiB+9v0jNyqvEe2B7hdGfSLchuCv0a3xsocnayxnJChKtqI
vo022s1k9k7wwJ2Qeq49HfK3yY00SgXYpUljKHLZocisYBxHmNbegzSBa2x7RU+k
YexHKXvwNHdkVNOTs9LgER0EexdK+AM=
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDGNj/3rcpjgu8G
ZHg1AS8lAEy8tbg73+9YRPJsIAytaCmoQYbRZncrWa9hWT0568DGSWbHye4+ZFrY
yW1vNb0ANWPGVd6ReqtJm0wtplfcyzbgGN4EIYgHEUjFvVfDg6fHdV5K8z6UGGfn
HHtwoj649Vw3CjAIRXufB9dDEPAZoh2NKp+EEQiNlX8+oNIMGYmGP6QAh1l/RCrj
2yhVeXqXC7s8y9HCKSa08tBOe3AzHfWrcksVC2HugR6+/KjinOowlL4GwtpQ9clJ
F8Vk9ilA+PXL37CIaTkdJOsXdoacEC84NpeSyQYf8g4q5uHDTEc4kg5NQ04TizFp
ag1LWs/nAgMBAAECggEBAJBcqrJFzYY0sspBGpvgROn6EenPoGNbcgMkFDxUC2ew
2cZGE18n9duI8odAa6tn3XuNsmII3JBsnw4NhrrctM8WE5k8qWHjqiVuCkmlQZD6
IPmOowT3Nw+OsyXyBZ3MocJP5WFJUGakb+iPgghC4tPrQEKGFP2xPZxSJaIfEABa
HgSYTSr+n8lJUKdld00BNSWXBxsVQ8NAw/5AFjFP4R3TeCwbd34lpMpkLvOax05j
xbdZr0MP03MT8PYMBRzqMcST0OR7bK8vyAnB/ezxhrnQaMV2NeHpisB3UbNFi+PT
63tNV/S2hCOGDZ5V+jFQ6FRyUw1gOlJK/EMGLIEt3kECgYEA1gMXqlp5w0OIBBkS
MbhY2LhVO0v3LBHtRCqFbKGdA3yrHrsq/YJKlJbEoiw9mWGgYq7h0jNAsvI/WLgo
tm4AUxRdG9YZDqNEcfcODnLqFg5D7/abSXx+An3pwZ+fQgL8STGu9up/Xl1Sss1T
JHBEOM+vqb7TQxPPvl77SUHUwX8CgYEA7RmVO6PEepnJuMGYgG9Au5SMkcFY5iK5
AqlEHio097+KsQ+K4nxW8yvtNoXnSBsfX3t78vI6zjSeFgk/MhoVUGLKIQTwq6KO
WvASeB1zIzSkfXISznMs/CxGMt9FODvM9PCJMpeFAvJNDn83vupo0oxagu+EUVoF
eGoqNEMMVZkCgYEAgx+d7lhE5miH+8rIpQIIHbDDN/ORW8UYFH3hBe/3Xd2Skt+m
tXCQ9X1yuNJWY5W3SP9RiRKx/3IBcgBToYLAXCbL7XQ+IgPSuejfCedKmXzgDzSP
bHUEV86B3IpKb42YudfhFZQTueN/+eFnoZnPkudc/6nVkvGehUt4tyfIjU0CgYAP
PebHB7cYvowmMWPRVdWOeXUz5X8GhFLqZeE4IzR2fLy4tywRdTbNuRQtvhvpGb1B
kRmdu46mNOG4vu1uFhkqqr8dskiab//AvtAhIpuFNtwgKFYnKWZJ67qziIDVpZp+
YHwhYXYug08K0IjP4BfO+TDUW/tgk23omMKPy4OeeQKBgQCiKzdHtUO6KujjueYX
lbDVbdEiXYbGzKcMmE0E/DK73xXpXT/CQ+tjB3nZKHDwkTN6h9ZZYzjhRWmHRlRh
WqGqmWr4D3I0B9jnxCTpDuZIlJ21G336RbsZD8yi+eyMwJXN4csItGSlMig04jvo
5vTIN0D0uXAvDD23TEcilpQzcA==
-----END PRIVATE KEY-----
+29
View File
@@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIE9DCCA1ygAwIBAgIRAKmp4Hngu2VSn3W3/HbqhhcwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTI1MDQyNDA2Mjg1MFoXDTM1MDQyNDA2Mjg1MFowgZExHjAcBgNVBAoT
FW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxla3NpQFByb2Jvb2su
bG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQDDDFta2NlcnQgYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMIIBojANBgkq
hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAw/ZCWaFBwUs1uiVu5vwfx7CJKL10EvH7
rBJfUnDMoK/AYUzAhvVumi1WDmT4TnVG4MSQ/Ep5RV5HsidT8Sz75NB5Vu6rRyD1
4BVgR0R4WnyE4XQ7QX/eFvuAL1ToRWwqUtKLPaeYN1v+Xvi7HSeiwS1fPYnZ60mt
SpTOUn3c2EptKwHSZF5g5nrlX0RNEWiqZLW8zy49psDF57883DTOOvDvreH75zRy
jbaz2zXHdERct/zdnAOqPu5D/dT7Oi6ubtbqpp6Ytd0SYASf1DkMc+pq5ta1ZL6j
hs9x6a2X/INYwjXIH+TVqhW6VLR15ieT960dFeJOU2kRRDoOoFegOR5DlLgXyt4c
fap053vL5qbctAWKV0q/4oF4TNRh+9iAXm70HSfPvA8CYv2QIanmsAKlFxkw4lSY
kh2Gycbi2te8AjA8IYYo++DJiy5Y23NWYswZv/qtnZDymaYc3zVooriCie270iiN
Dwysl3saSQL2m2C6VimLJZy8CqyCt3HTAgMBAAGjRTBDMA4GA1UdDwEB/wQEAwIC
BDASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBRMfF45cY0dizvyML/k08Km
EEPhkjANBgkqhkiG9w0BAQsFAAOCAYEAKSq6dmHItnF8C4yWP6i08BHAmhqmGo/Q
PvgnnDjNMMX888dJ+cDSTi4r6ukPsjmCj16XZ2RNg2v2nYzO4S6qjuW3vPOGBugG
lCanj0AOZVcZY+te2z8hTxwLDVaRGTm9Tw8jEmjtiNwpChnkIBqAjlHbJZpHpjzv
khusNY8KKH0I/uMBQfIOMKf8fBvu2k8wYlyW1pwwgmVDWbiTv3tU9px7Lh7WSd3w
NFTC+xGAsl+tR7Z/UZB9FcI522IZm6A5LsTp4JfsQ4deUdU7iV36cqTrxG6A59BL
P/BS711oUlei3ORBloFhSXGKVPHqHu1jGGnpIFyQx6uS/0v1M6FN5wmZxAN+YVmO
7B7ttS3mN3PpALJIy+/P/EjtwVqzX+2HdJ+zo3JIHqtIQunBWAeeCZpltn3yd/35
MCa9RG7ftdfVrh2SwdZkR/bhKlgbelZ4EoxHXBiJxwZwVY8rJx/n2Bp+fp7crjhC
ZTscssX+5FbczWgIqzG5vmNescyM4XE3
-----END CERTIFICATE-----
+27
View File
@@ -0,0 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEiTCCAvGgAwIBAgIRAMa57BhiUa7ds8bjquZeuGwwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTI1MDQyNDA2Mjg1NVoXDTI3MDcyNDA2Mjg1NVowXjEnMCUGA1UEChMe
bWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTMwMQYDVQQLDCphbGVrc2lA
UHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDBYwQjUTxzptQQJQl5bSSkK8bCA6wAnuzk3lOi
h0Szk463wSsPpDWPf/NgxsB3HP2ANUtGCdCcKxCmcCJMA8+nZuvJSTdGeYMYF8Ca
eBGRyQK1ifucZp9o0F+oK02cx36v/BzjhCEyn20IZ4LBcC6dBalox8/iUcZHQpRm
Rejo07KrLSws8w/T21Lk7GURnHWZej+dicukxZlEZ/fDiYwQC0z0JJaG/+3OQG1p
gRqYD6Dn/lnB8DvMZfW+EV/zyjT292WgHr9NQ+Yb/99oPLUDL7QcEqQ0yETGTx2i
jVlN8A3DM0gwlWD7TYXorc6bTQeDiG6vJk+I11Q25TvoE0AtAgMBAAGjgY0wgYow
DgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaA
FEx8XjlxjR2LO/Iwv+TTwqYQQ+GSMEIGA1UdEQQ7MDmCCWxvY2FsaG9zdIIUaG9z
dC5kb2NrZXIuaW50ZXJuYWyHBH8AAAGHEAAAAAAAAAAAAAAAAAAAAAEwDQYJKoZI
hvcNAQELBQADggGBAMOYUQen1PpG34YcmdSNIO62/GFSNR0CID8R+1lvqZFyiaeA
HTUhDfWVopY8KuqzgXgXE2nAxLf6WSa0kIJOUIE7eLU5zMBW/rLcoa6UxhT2nXjh
gd7d2PPLSXE/ZBMkoXeQVuZVImywT7haNI0tee3ariIbXeaiaLP6NBlnFva50Tkn
qKeQpV5UPDQcEvChDtWSvsPkb9yp1CcavBEEJ8XZwgIbV4qKB0z2Q812wsPadpXE
VLy8KwYhjxBVJyAEH3qpiZH5N+nTnQwu3slWCIck5cskpXGPBX+WIY4nS/4y+idX
EhnwowfDewWGum58sdUYdyUpdC7NTw4AoZ42y9PcgXu8/qhLr0N0n5/Slmlxe7oN
zOQfOZduv8oOLW0GuccqGEPwDManU995syDOmqZbBuBt590E2Pid3dwtr/0kyLax
SyAACTQi7Q0WUPfFj13jCqGU5z99Y6W7RudUg/+snCxiSvc+x/wphjmnGO73X9+p
uH5dRdyAeGHFw9e2kQ==
-----END CERTIFICATE-----
+28
View File
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBYwQjUTxzptQQ
JQl5bSSkK8bCA6wAnuzk3lOih0Szk463wSsPpDWPf/NgxsB3HP2ANUtGCdCcKxCm
cCJMA8+nZuvJSTdGeYMYF8CaeBGRyQK1ifucZp9o0F+oK02cx36v/BzjhCEyn20I
Z4LBcC6dBalox8/iUcZHQpRmRejo07KrLSws8w/T21Lk7GURnHWZej+dicukxZlE
Z/fDiYwQC0z0JJaG/+3OQG1pgRqYD6Dn/lnB8DvMZfW+EV/zyjT292WgHr9NQ+Yb
/99oPLUDL7QcEqQ0yETGTx2ijVlN8A3DM0gwlWD7TYXorc6bTQeDiG6vJk+I11Q2
5TvoE0AtAgMBAAECggEBAJWdVGM6g0l6hVBkRxsxbIqy75fEnXrxeZdrxkrU2jsQ
avcRNI5qXaHCvPlfayH8RMe+85ihGUrpKn2J/Y7P2ATMZJka0u/sLJckMTeQsw8V
88mdkhMjdiryIz+JGQe1c/cVVwhSfhibLRC2fHvJndaPvcw54kRXPc593S/u4E3X
uc5pyoPkiyon4AzQ3piVTRrdtQRyyT1UDJ+lRyTBLuWcM50H4O50VliIrk2HVxGA
dfL8tnYOGnW7l12xCa6OoT03/qOBS1yPd8vXFAmnbEzbzvAEIDXC0GXQ5CPHOsFu
ZnviDmjt2I/OSygBqnaxCuE0cMgIvI7zf2ie43Onu4UCgYEA0STl3mC80lSg8Ddo
qGj+uPck3aOtUtI0ni94rM4YwgqDakm1aMDtVbivg3F9HLjDPxCe+iyQFOvjJ+uR
KEdp5zFmS3Sf9lB0PymCbeAicRJA6ku+9GxbYk9VNWkxrNozDn4iolio41xjZSZ4
iXHBh/s2xeZeGfW65/MOJMjvk/cCgYEA7LZh6ueBrBJkMf3imcmz7cfEkUyzioyM
3Gz8JMNINPsb8QTYLaAog0m7eQ6FVZB0lIQV9V+pTzbhCxSbAryL7aOr7vKmFlgb
tB5YqsdYHGftZAqwJzFNorAA2Yh5Z5H1+xAB3i4uB4lHwIC1Sl79vor7tccvGFPK
hWX8Mz82+/sCgYAmI3NjpQJp3JLom0ITi+n/ctofLMzbkIeV3RRFduPe5qnmRQC2
1I+zFRW0g4qMJUk9g9tpxZyUpBttWTDERpmSVljQI7lT4oIATqKBROEi+3ApCZ0N
14Cmoc7pCYDMg5HR78CDGGXb6Cob9PMAJWVkVbQ8THEWjNADojgPDzFZKwKBgGGN
tIL7z9wbZEGaEUYx8z4+gwsioieqTu8U10FLXbm/9z74MSN0it24iFOWoWqm8vS2
DtqmBv/HbS2E23FgRQa12kjKpZo1y40KqJ4RM4XZauM86GXuksFGacM81FPTup0y
dqKbQ4sFj5WNNamlxks9ugirQwRym9coNazlE4L7AoGBAMaeWaVaRbFu+jgscPud
k5J27o9zH8CS+xngOYEjGFpdR/52ZMhpQOrtFJX0mCOi9vpAQ5Ro0kk1HMPH0mGU
5b75OUy6SBfnYR7mw7imc85bP+lQoe8kmb+wrIJMYx9RGGbDatDFbxCEasqNzvFf
VQXTnh0brizumpbOfHlZXced
-----END PRIVATE KEY-----
+55
View File
@@ -0,0 +1,55 @@
-----BEGIN CERTIFICATE-----
MIIEiTCCAvGgAwIBAgIRAMa57BhiUa7ds8bjquZeuGwwDQYJKoZIhvcNAQELBQAw
gZExHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEzMDEGA1UECwwqYWxl
a3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVua28pMTowOAYDVQQD
DDFta2NlcnQgYWxla3NpQFByb2Jvb2subG9jYWwgKEFsZXhleSBQYWxhemhjaGVu
a28pMB4XDTI1MDQyNDA2Mjg1NVoXDTI3MDcyNDA2Mjg1NVowXjEnMCUGA1UEChMe
bWtjZXJ0IGRldmVsb3BtZW50IGNlcnRpZmljYXRlMTMwMQYDVQQLDCphbGVrc2lA
UHJvYm9vay5sb2NhbCAoQWxleGV5IFBhbGF6aGNoZW5rbykwggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDBYwQjUTxzptQQJQl5bSSkK8bCA6wAnuzk3lOi
h0Szk463wSsPpDWPf/NgxsB3HP2ANUtGCdCcKxCmcCJMA8+nZuvJSTdGeYMYF8Ca
eBGRyQK1ifucZp9o0F+oK02cx36v/BzjhCEyn20IZ4LBcC6dBalox8/iUcZHQpRm
Rejo07KrLSws8w/T21Lk7GURnHWZej+dicukxZlEZ/fDiYwQC0z0JJaG/+3OQG1p
gRqYD6Dn/lnB8DvMZfW+EV/zyjT292WgHr9NQ+Yb/99oPLUDL7QcEqQ0yETGTx2i
jVlN8A3DM0gwlWD7TYXorc6bTQeDiG6vJk+I11Q25TvoE0AtAgMBAAGjgY0wgYow
DgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMBMB8GA1UdIwQYMBaA
FEx8XjlxjR2LO/Iwv+TTwqYQQ+GSMEIGA1UdEQQ7MDmCCWxvY2FsaG9zdIIUaG9z
dC5kb2NrZXIuaW50ZXJuYWyHBH8AAAGHEAAAAAAAAAAAAAAAAAAAAAEwDQYJKoZI
hvcNAQELBQADggGBAMOYUQen1PpG34YcmdSNIO62/GFSNR0CID8R+1lvqZFyiaeA
HTUhDfWVopY8KuqzgXgXE2nAxLf6WSa0kIJOUIE7eLU5zMBW/rLcoa6UxhT2nXjh
gd7d2PPLSXE/ZBMkoXeQVuZVImywT7haNI0tee3ariIbXeaiaLP6NBlnFva50Tkn
qKeQpV5UPDQcEvChDtWSvsPkb9yp1CcavBEEJ8XZwgIbV4qKB0z2Q812wsPadpXE
VLy8KwYhjxBVJyAEH3qpiZH5N+nTnQwu3slWCIck5cskpXGPBX+WIY4nS/4y+idX
EhnwowfDewWGum58sdUYdyUpdC7NTw4AoZ42y9PcgXu8/qhLr0N0n5/Slmlxe7oN
zOQfOZduv8oOLW0GuccqGEPwDManU995syDOmqZbBuBt590E2Pid3dwtr/0kyLax
SyAACTQi7Q0WUPfFj13jCqGU5z99Y6W7RudUg/+snCxiSvc+x/wphjmnGO73X9+p
uH5dRdyAeGHFw9e2kQ==
-----END CERTIFICATE-----
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBYwQjUTxzptQQ
JQl5bSSkK8bCA6wAnuzk3lOih0Szk463wSsPpDWPf/NgxsB3HP2ANUtGCdCcKxCm
cCJMA8+nZuvJSTdGeYMYF8CaeBGRyQK1ifucZp9o0F+oK02cx36v/BzjhCEyn20I
Z4LBcC6dBalox8/iUcZHQpRmRejo07KrLSws8w/T21Lk7GURnHWZej+dicukxZlE
Z/fDiYwQC0z0JJaG/+3OQG1pgRqYD6Dn/lnB8DvMZfW+EV/zyjT292WgHr9NQ+Yb
/99oPLUDL7QcEqQ0yETGTx2ijVlN8A3DM0gwlWD7TYXorc6bTQeDiG6vJk+I11Q2
5TvoE0AtAgMBAAECggEBAJWdVGM6g0l6hVBkRxsxbIqy75fEnXrxeZdrxkrU2jsQ
avcRNI5qXaHCvPlfayH8RMe+85ihGUrpKn2J/Y7P2ATMZJka0u/sLJckMTeQsw8V
88mdkhMjdiryIz+JGQe1c/cVVwhSfhibLRC2fHvJndaPvcw54kRXPc593S/u4E3X
uc5pyoPkiyon4AzQ3piVTRrdtQRyyT1UDJ+lRyTBLuWcM50H4O50VliIrk2HVxGA
dfL8tnYOGnW7l12xCa6OoT03/qOBS1yPd8vXFAmnbEzbzvAEIDXC0GXQ5CPHOsFu
ZnviDmjt2I/OSygBqnaxCuE0cMgIvI7zf2ie43Onu4UCgYEA0STl3mC80lSg8Ddo
qGj+uPck3aOtUtI0ni94rM4YwgqDakm1aMDtVbivg3F9HLjDPxCe+iyQFOvjJ+uR
KEdp5zFmS3Sf9lB0PymCbeAicRJA6ku+9GxbYk9VNWkxrNozDn4iolio41xjZSZ4
iXHBh/s2xeZeGfW65/MOJMjvk/cCgYEA7LZh6ueBrBJkMf3imcmz7cfEkUyzioyM
3Gz8JMNINPsb8QTYLaAog0m7eQ6FVZB0lIQV9V+pTzbhCxSbAryL7aOr7vKmFlgb
tB5YqsdYHGftZAqwJzFNorAA2Yh5Z5H1+xAB3i4uB4lHwIC1Sl79vor7tccvGFPK
hWX8Mz82+/sCgYAmI3NjpQJp3JLom0ITi+n/ctofLMzbkIeV3RRFduPe5qnmRQC2
1I+zFRW0g4qMJUk9g9tpxZyUpBttWTDERpmSVljQI7lT4oIATqKBROEi+3ApCZ0N
14Cmoc7pCYDMg5HR78CDGGXb6Cob9PMAJWVkVbQ8THEWjNADojgPDzFZKwKBgGGN
tIL7z9wbZEGaEUYx8z4+gwsioieqTu8U10FLXbm/9z74MSN0it24iFOWoWqm8vS2
DtqmBv/HbS2E23FgRQa12kjKpZo1y40KqJ4RM4XZauM86GXuksFGacM81FPTup0y
dqKbQ4sFj5WNNamlxks9ugirQwRym9coNazlE4L7AoGBAMaeWaVaRbFu+jgscPud
k5J27o9zH8CS+xngOYEjGFpdR/52ZMhpQOrtFJX0mCOi9vpAQ5Ro0kk1HMPH0mGU
5b75OUy6SBfnYR7mw7imc85bP+lQoe8kmb+wrIJMYx9RGGbDatDFbxCEasqNzvFf
VQXTnh0brizumpbOfHlZXced
-----END PRIVATE KEY-----
+1 -1
View File
@@ -1,4 +1,4 @@
# What's this?
This directory is a workaround for the lack of support for Docker Compose in Dependabot.
See <https://github.com/dependabot/dependabot-core/issues/390#issuecomment-1062170379>.
See https://github.com/dependabot/dependabot-core/issues/390#issuecomment-1062170379.
-1
View File
@@ -1 +0,0 @@
FROM centos:7.9.2009
-1
View File
@@ -1 +0,0 @@
FROM debian:11.4
+1
View File
@@ -0,0 +1 @@
FROM ghcr.io/ferretdb/docusaurus-docs:3.7.0-4
+1
View File
@@ -0,0 +1 @@
FROM ghcr.io/ferretdb/ferretdb-prettier:3.6.2-1
+1
View File
@@ -0,0 +1 @@
FROM ghcr.io/ferretdb/ferretdb-textlint:15.2.0-1
+1
View File
@@ -0,0 +1 @@
FROM ghcr.io/ferretdb/ferretdb-wrangler:4.24.0-1
+1
View File
@@ -0,0 +1 @@
FROM jaegertracing/all-in-one:1.74.0
+2
View File
@@ -0,0 +1,2 @@
# TODO https://github.com/FerretDB/FerretDB/issues/5073
FROM ghcr.io/ferretdb/legacy-mongo-shell:7.0.8-1
+1 -1
View File
@@ -1 +1 @@
FROM ghcr.io/igorshubovych/markdownlint-cli:v0.32.1
FROM davidanson/markdownlint-cli2:v0.18.1
-1
View File
@@ -1 +0,0 @@
FROM mongo:5.0.10
-4
View File
@@ -1,4 +0,0 @@
# TODO https://github.com/docker-library/mongo/issues/552
# FROM mongo:6.0.0
FROM mongo
+16
View File
@@ -0,0 +1,16 @@
# syntax=docker/dockerfile:1
# TODO https://github.com/FerretDB/FerretDB/issues/5073
FROM mongo:7.0.8
# If you encounter an "unknown instruction" error there,
# please update Docker to the latest version.
# see https://github.com/docker-library/mongo/issues/475
RUN <<EOF
set -ex
echo 'topsecret' > /etc/mongod_keyfile.txt
chmod 0400 /etc/mongod_keyfile.txt
chown 999:999 /etc/mongod_keyfile.txt
EOF
@@ -0,0 +1,5 @@
# Use development image and full tag close to the release.
FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-0.107.0-ferretdb-2.7.0
# Use moving development image during development.
# FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-ferretdb
-1
View File
@@ -1 +0,0 @@
FROM postgres:14.4
-1
View File
@@ -1 +0,0 @@
FROM tigrisdata/tigris-local:1.0.0-alpha.26
-1
View File
@@ -1 +0,0 @@
FROM tigrisdata/tigris-local:main
+2
View File
@@ -0,0 +1,2 @@
FROM aquasec/trivy:0.67.2
WORKDIR /workdir
+1
View File
@@ -0,0 +1 @@
FROM yugabytedb/yugabyte:2025.1.1.0-b197
+27
View File
@@ -0,0 +1,27 @@
# Use production image and full tag close to the release.
FROM --platform=linux/amd64 ghcr.io/ferretdb/postgres-documentdb:17-0.107.0-ferretdb-2.7.0
# Use moving development image during development.
# FROM --platform=linux/amd64 ghcr.io/ferretdb/postgres-documentdb-dev:17-ferretdb
RUN --mount=type=cache,target=/var/cache/apt <<EOF
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash
curl -L https://pgp.mongodb.com/server-7.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list
apt update
apt install -y git-lfs mongodb-mongosh tmux nano
cd /tmp
curl -OJL https://go.dev/dl/go1.25.4.linux-amd64.tar.gz
tar -xf go1.25.4.linux-amd64.tar.gz
rm go1.25.4.linux-amd64.tar.gz
mv go /usr/local/
ln -s /usr/local/go/bin/* /usr/local/bin/
go version
EOF
WORKDIR /ferretdb/build/ferretdb-bw
+26
View File
@@ -0,0 +1,26 @@
all: ferretdb_loader ferretdb
ferretdb_loader:
$(MAKE) -C $@
ferretdb:
$(MAKE) -C $@
clean:
$(MAKE) -C ferretdb_loader clean
$(MAKE) -C ferretdb clean
install:
$(MAKE) -C ferretdb_loader install
$(MAKE) -C ferretdb install
docker:
docker buildx build --builder=ferretdb --tag=ferretdb-bw --load .
docker run --platform=linux/amd64 --name=ferretdb-bw --rm -it \
-e POSTGRES_USER=username -e POSTGRES_PASSWORD=password -e POSTGRES_DB=postgres \
-v $(shell pwd)/../..:/ferretdb ferretdb-bw /bin/bash
docker-exec:
docker exec -it ferretdb-bw /bin/bash
.PHONY: all ferretdb_loader ferretdb
+4
View File
@@ -0,0 +1,4 @@
# FerretDB as a PostgreSQL background worker
Not supported.
Do not use yet.
+21
View File
@@ -0,0 +1,21 @@
GO ?= $(shell which go)
PG_CONFIG ?= pg_config
PG_INCLUDE := $(shell $(PG_CONFIG) --includedir-server)
PG_PKGLIB := $(shell $(PG_CONFIG) --pkglibdir)
INSTALL_BIN = $(shell which install)
CGO_CFLAGS ?= "-I$(PG_INCLUDE) -Wno-implicit-function-declaration"
CGO_LDFLAGS ?= "-shared"
object = ferretdb.so
all: $(object)
$(object): ferretdb.go
CGO_CFLAGS=$(CGO_CFLAGS) CGO_LDFLAGS=$(CGO_LDFLAGS) $(GO) build -v -tags=ferretdb_bw -buildmode=c-shared -o $@ .
install: $(object)
$(INSTALL_BIN) -c -m 755 $(object) $(PG_PKGLIB)
clean:
rm -f $(object)
+77
View File
@@ -0,0 +1,77 @@
// Copyright 2021 FerretDB Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//go:build ferretdb_bw
package main
/*
#include "postgres.h"
*/
import "C"
import (
"context"
"log"
"log/slog"
"os"
"github.com/FerretDB/FerretDB/v2/build/version"
"github.com/FerretDB/FerretDB/v2/ferretdb"
"github.com/FerretDB/FerretDB/v2/internal/util/ctxutil"
)
//export BackgroundWorkerMain
func BackgroundWorkerMain(args C.Datum) {
log.SetPrefix("ferretdb: ")
log.SetFlags(0)
ctx, stop := ctxutil.SigTerm(context.Background())
defer stop()
f, err := ferretdb.New(&ferretdb.Config{
// TODO https://github.com/FerretDB/FerretDB/issues/4771
PostgreSQLURL: "postgres://username:password@127.0.0.1:5432/postgres",
ListenAddr: "127.0.0.1:27017",
StateDir: ".",
LogLevel: slog.LevelDebug,
LogOutput: os.Stderr,
})
if err != nil {
log.Fatal(err)
}
version.Get().Package = "extension"
done := make(chan struct{})
// Use WaitLatch, ResetLatch, and WL_POSTMASTER_DEATH to check if `postmaster` process died and call stop().
// TODO https://github.com/FerretDB/FerretDB/issues/4771
go func() {
f.Run(ctx)
close(done)
}()
uri := f.MongoDBURI()
log.Printf("Running at %s", uri)
<-done
return
}
func main() {
panic("not reached")
}
+86
View File
@@ -0,0 +1,86 @@
/* Code generated by cmd/cgo; DO NOT EDIT. */
/* package github.com/FerretDB/FerretDB/v2/build/ferretdb-bw/ferretdb */
#line 1 "cgo-builtin-export-prolog"
#include <stddef.h>
#ifndef GO_CGO_EXPORT_PROLOGUE_H
#define GO_CGO_EXPORT_PROLOGUE_H
#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
#endif
#endif
/* Start of preamble from import "C" comments. */
#line 3 "ferretdb.go"
#include "postgres.h"
#line 1 "cgo-generated-wrapper"
/* End of preamble from import "C" comments. */
/* Start of boilerplate cgo prologue. */
#line 1 "cgo-gcc-export-header-prolog"
#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H
typedef signed char GoInt8;
typedef unsigned char GoUint8;
typedef short GoInt16;
typedef unsigned short GoUint16;
typedef int GoInt32;
typedef unsigned int GoUint32;
typedef long long GoInt64;
typedef unsigned long long GoUint64;
typedef GoInt64 GoInt;
typedef GoUint64 GoUint;
typedef size_t GoUintptr;
typedef float GoFloat32;
typedef double GoFloat64;
#ifdef _MSC_VER
#include <complex.h>
typedef _Fcomplex GoComplex64;
typedef _Dcomplex GoComplex128;
#else
typedef float _Complex GoComplex64;
typedef double _Complex GoComplex128;
#endif
/*
static assertion to make sure the file is being used on architecture
at least with matching size of GoInt.
*/
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];
#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef _GoString_ GoString;
#endif
typedef void *GoMap;
typedef void *GoChan;
typedef struct { void *t; void *v; } GoInterface;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;
#endif
/* End of boilerplate cgo prologue. */
#ifdef __cplusplus
extern "C" {
#endif
extern void BackgroundWorkerMain(Datum args);
#ifdef __cplusplus
}
#endif
@@ -0,0 +1,4 @@
MODULES = ferretdb_loader
PG_CONFIG ?= pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
@@ -0,0 +1,53 @@
#include <dlfcn.h>
#include "postgres.h"
#include "pgstat.h"
#include "postmaster/bgworker.h"
#include "storage/ipc.h"
#include "storage/latch.h"
#include "storage/proc.h"
#include "miscadmin.h"
#include "utils/elog.h"
#include "fmgr.h"
PG_MODULE_MAGIC;
static char *ferretdb_so = "ferretdb.so";
PGDLLEXPORT void background_main(Datum main_arg);
void background_main(Datum main_arg)
{
bgworker_main_type f;
char *path;
void *h;
BackgroundWorkerUnblockSignals();
path = (char *)palloc(strlen(pkglib_path) + 1 + strlen(ferretdb_so) + 1);
join_path_components(path, pkglib_path, ferretdb_so);
elog(LOG, "ferretdb_loader: loading '%s'", path);
h = dlopen(path, RTLD_NOW | RTLD_GLOBAL);
pfree(path);
f = (bgworker_main_type)dlsym(h, "BackgroundWorkerMain");
f(main_arg);
dlclose(h);
proc_exit(0);
}
void _PG_init(void)
{
BackgroundWorker worker;
MemSet(&worker, 0, sizeof(BackgroundWorker));
snprintf(worker.bgw_name, BGW_MAXLEN, "FerretDBLoader");
worker.bgw_flags = BGWORKER_SHMEM_ACCESS;
worker.bgw_start_time = BgWorkerStart_RecoveryFinished;
worker.bgw_restart_time = BGW_NEVER_RESTART;
snprintf(worker.bgw_library_name, BGW_MAXLEN, "ferretdb_loader");
snprintf(worker.bgw_function_name, BGW_MAXLEN, "background_main");
RegisterBackgroundWorker(&worker);
}
+17
View File
@@ -0,0 +1,17 @@
[Unit]
Description=FerretDB Database
Documentation=https://docs.ferretdb.io/
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/ferretdb
Restart=on-failure
# Configure the FerretDB service with `systemctl edit ferretdb`.
# For more configuration options check https://docs.ferretdb.io/configuration/flags/
Environment="FERRETDB_POSTGRESQL_URL=postgres://127.0.0.1:5432/postgres"
[Install]
WantedBy=multi-user.target
+143
View File
@@ -0,0 +1,143 @@
# syntax=docker/dockerfile:1
# for development releases (`ferretdb-dev` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# prepare stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM --platform=$BUILDPLATFORM golang:1.25.4-bookworm AS development-prepare
# use a single directory for all Go caches to simplify RUN --mount commands below
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# remove ",direct"
ENV GOPROXY=https://proxy.golang.org
COPY go.mod go.sum /src/
WORKDIR /src
RUN --mount=type=cache,target=/cache <<EOF
set -ex
go mod download
go mod verify
EOF
# build stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS development-build
ARG TARGETARCH
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# use the same directories for Go caches as above
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# modules are already downloaded
ENV GOPROXY=off
# see .dockerignore
WORKDIR /src
COPY . .
# to add a dependency
COPY --from=development-prepare /src/go.mod /src/go.sum /src/
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# Do not raise without providing separate builds with those values
# because higher versions are problematic for some virtualization platforms and older hardware.
export GOAMD64=v1
export GOARM64=v8.0
export CGO_ENABLED=1
# Disable race detector on arm64 due to https://github.com/golang/go/issues/29948
# (and that happens on GitHub-hosted Actions runners).
RACE=false
if test "$TARGETARCH" = "amd64"
then
RACE=true
fi
go env
# Do not trim paths to make debugging with delve easier.
# check if stdlib was cached
go install -v -race=$RACE std
go build -v -o=bin/ferretdb -race=$RACE -tags=ferretdb_dev -coverpkg=./... ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# stage for binary only
FROM scratch AS development-binary
COPY --from=development-build /src/bin/ferretdb /ferretdb
# final stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS development
ENV GOCOVERDIR=/tmp/cover
ENV GORACE=halt_on_error=1,history_size=2
RUN mkdir /tmp/cover
COPY --from=development-build /src/bin/ferretdb /ferretdb
ENTRYPOINT [ "/ferretdb" ]
HEALTHCHECK --interval=1m --timeout=5s --retries=1 --start-period=30s --start-interval=5s \
CMD ["/ferretdb", "ping"]
WORKDIR /
VOLUME /state
EXPOSE 27017 27018 8088
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8088
ENV FERRETDB_STATE_DIR=/state
ARG LABEL_VERSION
ARG LABEL_COMMIT
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative (development image)"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB (development image)"
LABEL org.opencontainers.image.url="https://www.ferretdb.com/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
+149
View File
@@ -0,0 +1,149 @@
# syntax=docker/dockerfile:1
# evaluation image with development release (`ferretdb-eval-dev` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# prepare stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM --platform=$BUILDPLATFORM golang:1.25.4-bookworm AS eval-dev-prepare
# use a single directory for all Go caches to simplify RUN --mount commands below
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# remove ",direct"
ENV GOPROXY=https://proxy.golang.org
COPY go.mod go.sum /src/
WORKDIR /src
RUN --mount=type=cache,target=/cache <<EOF
set -ex
go mod download
go mod verify
EOF
# build stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS eval-dev-build
ARG TARGETARCH
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# use the same directories for Go caches as above
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# modules are already downloaded
ENV GOPROXY=off
# see .dockerignore
WORKDIR /src
COPY . .
# to add a dependency
COPY --from=eval-dev-prepare /src/go.mod /src/go.sum /src/
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# Do not raise without providing separate builds with those values
# because higher versions are problematic for some virtualization platforms and older hardware.
export GOAMD64=v1
export GOARM64=v8.0
export CGO_ENABLED=1
# Disable race detector on arm64 due to https://github.com/golang/go/issues/29948
# (and that happens on GitHub-hosted Actions runners).
RACE=false
if test "$TARGETARCH" = "amd64"
then
RACE=true
fi
go env
# Do not trim paths to make debugging with delve easier.
# check if stdlib was cached
go install -v -race=$RACE std
go build -v -o=bin/ferretdb -race=$RACE -tags=ferretdb_dev -coverpkg=./... ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# final stage
# Use development image and full tag close to the release.
FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-0.107.0-ferretdb-2.7.0 AS eval-dev
# Use moving development image during development.
# FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-ferretdb AS eval-dev
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt <<EOF
apt install -y curl supervisor
curl -L https://pgp.mongodb.com/server-7.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list
apt update
apt install -y mongodb-mongosh
mkdir /tmp/cover
EOF
COPY --from=eval-dev-build /src/bin/ferretdb /usr/local/bin/ferretdb
COPY --from=eval-dev-build /src/build/ferretdb/evaluation/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY --from=eval-dev-build /src/build/ferretdb/evaluation/entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
HEALTHCHECK --interval=1m --timeout=5s --retries=1 --start-period=30s --start-interval=5s \
CMD ["/usr/local/bin/ferretdb", "ping"]
VOLUME /state
EXPOSE 27017 27018 8088
ENV GOCOVERDIR=/tmp/cover
ENV GORACE=halt_on_error=1,history_size=2
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8088
ENV FERRETDB_STATE_DIR=/state
ARG LABEL_VERSION
ARG LABEL_COMMIT
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative (evaluation development image)"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB (evaluation development image)"
LABEL org.opencontainers.image.url="https://www.ferretdb.com/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
+136
View File
@@ -0,0 +1,136 @@
# syntax=docker/dockerfile:1
# evaluation image (formerly "all-in-one") with production release (`ferretdb-eval` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# prepare stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM --platform=$BUILDPLATFORM golang:1.25.4-bookworm AS eval-prepare
# use a single directory for all Go caches to simplify RUN --mount commands below
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# remove ",direct"
ENV GOPROXY=https://proxy.golang.org
COPY go.mod go.sum /src/
WORKDIR /src
RUN --mount=type=cache,target=/cache <<EOF
set -ex
go mod download
go mod verify
EOF
# build stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS eval-build
ARG TARGETARCH
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# use the same directories for Go caches as above
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# modules are already downloaded
ENV GOPROXY=off
# see .dockerignore
WORKDIR /src
COPY . .
# to add a dependency
COPY --from=eval-prepare /src/go.mod /src/go.sum /src/
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# Do not raise without providing separate builds with those values
# because higher versions are problematic for some virtualization platforms and older hardware.
export GOAMD64=v1
export GOARM64=v8.0
export CGO_ENABLED=0
go env
# Trim paths mostly to check that building with `-trimpath` is supported.
# check if stdlib was cached
go install -v -trimpath std
go build -v -trimpath -o=bin/ferretdb ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
EOF
# final stage
# Use production image and full tag close to the release.
FROM ghcr.io/ferretdb/postgres-documentdb:17-0.107.0-ferretdb-2.7.0 AS eval
# Use moving development image during development.
# FROM ghcr.io/ferretdb/postgres-documentdb-dev:17-ferretdb AS eval
RUN --mount=type=cache,sharing=locked,target=/var/cache/apt <<EOF
apt install -y curl supervisor
curl -L https://pgp.mongodb.com/server-7.0.asc | apt-key add -
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list
apt update
apt install -y mongodb-mongosh
EOF
COPY --from=eval-build /src/bin/ferretdb /usr/local/bin/ferretdb
COPY --from=eval-build /src/build/ferretdb/evaluation/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY --from=eval-build /src/build/ferretdb/evaluation/entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["entrypoint.sh"]
HEALTHCHECK --interval=1m --timeout=5s --retries=1 --start-period=30s --start-interval=5s \
CMD ["/usr/local/bin/ferretdb", "ping"]
VOLUME /state
EXPOSE 27017 27018 8088
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8088
ENV FERRETDB_STATE_DIR=/state
ARG LABEL_VERSION
ARG LABEL_COMMIT
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative (evaluation image)"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB (evaluation image)"
LABEL org.opencontainers.image.url="https://www.ferretdb.com/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
set -e
if [ -z "$POSTGRES_PASSWORD" ]; then
echo "Error: POSTGRES_PASSWORD must be set. See https://docs.ferretdb.io/installation/evaluation/"
exit 1
fi
if [ "${POSTGRES_DB:-postgres}" != "postgres" ]; then
echo "Error: POSTGRES_DB must be set to 'postgres' or unset. See https://docs.ferretdb.io/installation/evaluation/"
exit 1
fi
# prevent unset POSTGRES_DB using the value of POSTGRES_USER, see https://hub.docker.com/_/postgres
export POSTGRES_DB="postgres"
export FERRETDB_POSTGRESQL_URL="postgresql://${POSTGRES_USER:-postgres}:${POSTGRES_PASSWORD}@127.0.0.1:5432/${POSTGRES_DB}"
exec /usr/bin/supervisord -c /etc/supervisor/conf.d/supervisord.conf
@@ -0,0 +1,24 @@
; https://supervisord.org/configuration.html#supervisord-section-values
[supervisord]
nodaemon=true
loglevel=info
logfile=/dev/stderr
logfile_maxbytes=0
; https://supervisord.org/configuration.html#program-x-section-values
[program:postgres]
command=/usr/local/bin/docker-entrypoint.sh postgres
; lower priority postgres starts before ferretdb (default priority 999)
priority=1
; fast shutdown https://www.postgresql.org/docs/current/server-shutdown.html
stopsignal=INT
stdout_logfile=/dev/stderr
stdout_logfile_maxbytes=0
redirect_stderr=true
; https://supervisord.org/configuration.html#program-x-section-values
[program:ferretdb]
command=/usr/local/bin/ferretdb
stdout_logfile=/dev/stderr
stdout_logfile_maxbytes=0
redirect_stderr=true
+1
View File
@@ -0,0 +1 @@
ferretdb:x:1000:
+1
View File
@@ -0,0 +1 @@
ferretdb:x:1000:1000::/nonexistent:/nonexistent
+135
View File
@@ -0,0 +1,135 @@
# syntax=docker/dockerfile:1
# for production releases (`ferretdb` image)
# While we already know commit and version from commit.txt and version.txt inside image,
# it is not possible to use them in LABELs for the final image.
# We need to pass them as build arguments.
# Defining ARGs there makes them global.
ARG LABEL_VERSION
ARG LABEL_COMMIT
# prepare stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM --platform=$BUILDPLATFORM golang:1.25.4-bookworm AS production-prepare
# use a single directory for all Go caches to simplify RUN --mount commands below
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# remove ",direct"
ENV GOPROXY=https://proxy.golang.org
COPY go.mod go.sum /src/
WORKDIR /src
RUN --mount=type=cache,target=/cache <<EOF
set -ex
go mod download
go mod verify
EOF
# build stage
# TODO https://github.com/FerretDB/FerretDB/issues/5449
FROM golang:1.25.4-bookworm AS production-build
ARG TARGETARCH
ARG LABEL_VERSION
ARG LABEL_COMMIT
RUN test -n "$LABEL_VERSION"
RUN test -n "$LABEL_COMMIT"
# use the same directories for Go caches as above
ENV GOPATH=/cache/gopath
ENV GOCACHE=/cache/gocache
ENV GOMODCACHE=/cache/gomodcache
# modules are already downloaded
ENV GOPROXY=off
# see .dockerignore
WORKDIR /src
COPY . .
# to add a dependency
COPY --from=production-prepare /src/go.mod /src/go.sum /src/
RUN --mount=type=cache,target=/cache <<EOF
set -ex
git status
# Do not raise without providing separate builds with those values
# because higher versions are problematic for some virtualization platforms and older hardware.
export GOAMD64=v1
export GOARM64=v8.0
export CGO_ENABLED=0
go env
# Trim paths mostly to check that building with `-trimpath` is supported.
# check if stdlib was cached
go install -v -trimpath std
go build -v -trimpath -o=bin/ferretdb ./cmd/ferretdb
go version -m bin/ferretdb
bin/ferretdb --version
mkdir /state
EOF
# stage for binary only
FROM scratch AS production-binary
COPY --from=production-build /src/bin/ferretdb /ferretdb
# final stage
FROM scratch AS production
COPY build/ferretdb/passwd /etc/passwd
COPY build/ferretdb/group /etc/group
USER ferretdb:ferretdb
COPY --from=production-build /src/bin/ferretdb /ferretdb
COPY --from=production-build --chown=ferretdb:ferretdb /state /state
ENTRYPOINT [ "/ferretdb" ]
HEALTHCHECK --interval=1m --timeout=5s --retries=1 --start-period=30s --start-interval=5s \
CMD ["/ferretdb", "ping"]
WORKDIR /
VOLUME /state
EXPOSE 27017 27018 8088
# don't forget to update documentation if you change defaults
ENV FERRETDB_LISTEN_ADDR=:27017
# ENV FERRETDB_LISTEN_TLS=:27018
ENV FERRETDB_DEBUG_ADDR=:8088
ENV FERRETDB_STATE_DIR=/state
ARG LABEL_VERSION
ARG LABEL_COMMIT
# TODO https://github.com/FerretDB/FerretDB/issues/2212
LABEL org.opencontainers.image.description="A truly Open Source MongoDB alternative"
LABEL org.opencontainers.image.revision="${LABEL_COMMIT}"
LABEL org.opencontainers.image.source="https://github.com/FerretDB/FerretDB"
LABEL org.opencontainers.image.title="FerretDB"
LABEL org.opencontainers.image.url="https://www.ferretdb.com/"
LABEL org.opencontainers.image.vendor="FerretDB Inc."
LABEL org.opencontainers.image.version="${LABEL_VERSION}"
+277
View File
@@ -0,0 +1,277 @@
# Assertions in the `mongo` shell
See [Assertions 101](https://github.com/mongodb/mongo/wiki/Write-Tests-For-Server-Code#assertions-101) for a very brief overview.
The legacy `mongo` shell uses its own assertions which are defined [here](https://github.com/mongodb/mongo/blob/master/src/mongo/shell/assert.js).
These deviate from `mongosh`, which uses the standard Node.js [assert](https://nodejs.org/api/assert.html) module.
When you write a small reproducible test and call `task testjs` the legacy `mongo` shell will be invoked.
A useful function is `assert.commandFailedWithCode` which asserts that the command failed with the expected code as the name implies.
One should pass the result of a call to the `db.runCommand()` helper as this provides a result type that the function can parse.
This is the preferred method to issue database commands, as it provides a consistent interface between the shell and drivers.
For example, to check if the `findAndModify` command failed with the error code `ImmutableField` you would do the following:
```js
> const res = db.runCommand({findAndModify: "foo", query: {}, update: {$set: {_id: 1}}});
> assert.commandFailedWithCode(res, ErrorCodes.ImmutableField);
```
It is not always necessary use the `db.runCommand()` helper as some write methods wrap a `writeError` which the helpers can parse.
For example, `insert`, `update`, and `remove` will all return a `WriteResult` so the function can parse the result and look for a `writeError`.
See the `WriteResult` object below:
```js
// WriteResult object
> assert.commandWorked(db.foo.insert({a: 1}));
WriteResult({ "nInserted" : 1 })
> const res = db.foo.insert({a: 1});
> res.hasWriteError();
false
> Object.keys(res);
[
"ok",
"nInserted",
"nUpserted",
"nMatched",
"nModified",
"nRemoved",
"getUpsertedId",
"getRawResponse",
"getWriteError",
"hasWriteError",
"getWriteConcernError",
"hasWriteConcernError",
"tojson",
"toString",
"shellPrint"
]
> res instanceof WriteResult
true
>
```
The `find()` method will return an object, the properties of which will not be parsed by the various assert functions:
```js
> const res = db.foo.find({a: 1});
> res._filter
{ "a" : 1 }
> res._db
test
> res._batchSize
0
// all properties are private but the shell will iterate the cursor object when called
> Object.keys(res);
[
"_mongo",
"_db",
"_collection",
"_ns",
"_filter",
"_projection",
"_limit",
"_skip",
"_batchSize",
"_options",
"_additionalCmdParams",
"_cursor",
"_numReturned"
]
>
```
But a `runCommand()` result will return the correct object that can be parsed:
```js
> // use a runCommand instead
> const res = db.runCommand({find: "foo", filter: {a: 1}});
> res.ok
1
> res._commandObj
{
"find" : "foo",
"filter" : {
"a" : 1
},
"lsid" : {
"id" : UUID("cb64879f-6f69-4656-a38e-ce6dbe3ccebc")
}
}
> assert.commandFailed(res);
uncaught exception: Error: command worked when it should have failed: {
"cursor" : {
"firstBatch" : [
{
"_id" : ObjectId("6458ec7adb858f891c0b8c68"),
"a" : 1
},
{
"_id" : ObjectId("6458ec9ddb858f891c0b8c6a"),
"a" : 1
}
],
"id" : NumberLong(0),
"ns" : "test.foo"
},
"ok" : 1
} :
_getErrorWithCode@src/mongo/shell/utils.js:24:13
doassert@src/mongo/shell/assert.js:18:14
_assertCommandFailed@src/mongo/shell/assert.js:819:25
assert.commandFailed@src/mongo/shell/assert.js:877:16
@(shell):1:8
```
## Some useful functions
`assert.eq(a, b, msg)`
throws if two values are not equal (tested without strict equality).
`assert.isnull(what, msg)`
throws if `what` is not null.
`assert.commandFailed(res, msg)`
throws if the command did not fail.
`assert.commandWorked(res)`
throws if the result contained an error.
`assert.commandFailedWithCode(res, expectedCode, msg)`
throws if the command did not fail with the expected code.
`assert.sameMembers(aArr, bArr, msg, compareFn = _isDocEq)`
throws if the two arrays do not have the same members, in any order.
By default, nested arrays must have the same order to be considered equal.
Optionally accepts a `compareFn` to compare values instead of using `docEq`.
`assert.writeOK(res, msg)`
throws if write result contained an error.
`assert.docEq(expectedDoc, actualDoc, msg)`
throws if `actualDoc` object is not equal to `expectedDoc` object.
The order of fields
(properties) within objects is disregarded.
Throws if object representation in BSON exceeds 16793600 bytes.
`assert.retry(func, msg, num_attempts, intervalMS)`
calls the given function `func` repeatedly at time intervals specified by
`intervalMS` (milliseconds) until either `func()` returns true or the number of
attempted function calls is equal to `num_attempts`.
Throws an exception with
message `msg` after all attempts are used up.
If no `intervalMS` argument is passed, it defaults to 0.
## All assert functions
```js
assert.adminCommandWorkedAllowingNetworkError
assert.between
assert.betweenEx
assert.betweenIn
assert.bind
assert.call
assert.close
assert.closeWithinMS
assert.commandFailed
assert.commandFailedWithCode
assert.commandWorked
assert.commandWorkedIgnoringWriteConcernErrors
assert.commandWorkedIgnoringWriteErrors
assert.commandWorkedIgnoringWriteErrorsAndWriteConcernErrors
assert.commandWorkedOrFailedWithCode
assert.contains
assert.containsPrefix
assert.docEq
assert.doesNotThrow
assert.dropExceptionsWithCode
assert.eq
assert.gt
assert.gte
assert.hasFields
assert.includes
assert.isnull
assert.lt
assert.lte
assert.neq
assert.noAPIParams
assert.retry
assert.retryNoExcept
assert.sameMembers
assert.setEq
assert.soon
assert.soonNoExcept
assert.throws
assert.throwsWithCode
assert.time
assert.toLocaleString
assert.toString
assert.valueOf
assert.writeError
assert.writeErrorWithCode
assert.writeOK
```
## Error Codes
`ErrorCodes` is an object that is generated from various source files.
It provides error names that correspond to their respective codes.
```js
// tab in the shell after typing the below to display all 443 error codes
> ErrorCodes.
Display all 443 possibilities? (y or n)
ErrorCodes.APIDeprecationError ErrorCodes.NetworkInterfaceExceededTimeLimit
ErrorCodes.APIMismatchError ErrorCodes.NetworkTimeout
ErrorCodes.APIStrictError ErrorCodes.NewReplicaSetConfigurationIncompatible
ErrorCodes.APIVersionError ErrorCodes.NoConfigPrimary
ErrorCodes.AlarmAlreadyFulfilled ErrorCodes.NoMatchParseContext
ErrorCodes.AlreadyInitialized ErrorCodes.NoMatchingDocument
ErrorCodes.AmbiguousIndexKeyPattern ErrorCodes.NoProgressMade
ErrorCodes.AtomicityFailure ErrorCodes.NoProjectionFound
ErrorCodes.AuditingNotEnabled ErrorCodes.NoQueryExecutionPlans
ErrorCodes.AuthSchemaIncompatible ErrorCodes.NoReplicationEnabled
ErrorCodes.AuthenticationAbandoned ErrorCodes.NoShardingEnabled
ErrorCodes.AuthenticationFailed ErrorCodes.NoSuchKey
ErrorCodes.AuthenticationRestrictionUnmet ErrorCodes.NoSuchReshardCollection
ErrorCodes.BSONObjectTooLarge ErrorCodes.NoSuchSession
ErrorCodes.BackgroundOperationInProgressForDatabase ErrorCodes.NoSuchTenantMigration
ErrorCodes.BackgroundOperationInProgressForNamespace ErrorCodes.NoSuchTransaction
ErrorCodes.BackupCursorOpenConflictWithCheckpoint ErrorCodes.NodeNotElectable
ErrorCodes.BadPerfCounterPath ErrorCodes.NodeNotFound
ErrorCodes.BadValue ErrorCodes.NonConformantBSON
ErrorCodes.BalancerInterrupted ErrorCodes.NonExistentPath
ErrorCodes.BrokenPromise ErrorCodes.NonRetryableTenantMigrationConflict
ErrorCodes.CallbackCanceled ErrorCodes.NotAReplicaSet
ErrorCodes.CanRepairToDowngrade ErrorCodes.NotARetryableWriteCommand
ErrorCodes.CannotApplyOplogWhilePrimary ErrorCodes.NotExactValueField
ErrorCodes.CannotBackfillArray ErrorCodes.NotImplemented
ErrorCodes.CannotBackup ErrorCodes.NotPrimaryNoSecondaryOk
ErrorCodes.CannotBuildIndexKeys ErrorCodes.NotPrimaryOrSecondary
ErrorCodes.CannotConvertIndexToUnique ErrorCodes.NotSecondary
ErrorCodes.CannotCreateCollection ErrorCodes.NotSingleValueField
ErrorCodes.CannotCreateIndex ErrorCodes.NotWritablePrimary
ErrorCodes.CannotDowngrade ErrorCodes.NotYetInitialized
ErrorCodes.CannotDropShardKeyIndex ErrorCodes.OBSOLETE_BalancerLostDistributedLock
```
`ErrorCodeStrings` is an object with the reverse mapping of the above.
```js
> ErrorCodeStrings[0]
OK
> ErrorCodeStrings[2]
BadValue
> ErrorCodeStrings[66]
ImmutableField
```
Loaded 100 of 1624 files, more files were not shown because too many files have changed in this diff. Show more