{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":457946259,"defaultBranch":"main","name":"tigris-client-go","ownerLogin":"tigrisdata-archive","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2022-02-10T21:02:11.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/144292783?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1685839944.653856","currentOid":""},"activityList":{"items":[{"before":"9a3757cb618777955cba2ba0f6a5301864c2024c","after":"ecdb5e858d1fba6dee64bbd4f102a5d48d435a9f","ref":"refs/heads/noql","pushedAt":"2023-06-07T08:24:28.177Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Native Query Language","shortMessageHtmlLink":"feat: Native Query Language"}},{"before":"94d80764e03498a3771f0ff815d5a923ae29100d","after":"ff7f73f881b6c34cb4f48ca7cc9f3561c9f4a901","ref":"refs/heads/joins","pushedAt":"2023-06-06T00:13:03.462Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Client side in-memory joins\n\nAPI:\n\nFirst, join object need to be created, which specifies collections and\njoin condition:\n```\njoin := tigris.GetJoin[LeftCollModel, RightCollModel](db, \"{left field}\", \"{right field}\", [options])\n```\nThis creates a join between LeftCollModel and RightCollModel on\nequality of `{left field}` to `{right field}`.\n\nCreated object then can be used to issue one or multiple read requests:\n\n```\nit, err := join.Read(ctx, filter.Eq(\"Field1\", 1))\n```\n\nfilter condition of read API is applied to the left table.\nIterator then returns of the rows matching the condition along with the\ncorresponding rows from the right table, which satisfies the join\ncondition.\n\nvar l LeftCollModel\nvar r []*RightCollModel\n\nfor it.Next(&l, &r) {\n fmt.Printf(\"l=%v r=%v\\n\", l, r)\n}\n\nBy default the documents which doesn't have matching documents in the right\ntable returned in the results. These results can be skipped by providing\n`&JoinOptions{Type: tigris.InnerJoin}` option to GetJoin API.\n\nIt is not required for the left field values or right field values to be unique.\n\nThe value of the array fields are matched as is by default, by using\n`&JoinOptions{ArrayUnroll: true}` option individual array items can be\nmatched in the right table.\n\nImplementation details:\n\nFirst request is issued to the left table with filter provided to Read API.\nResult is read into memory and request is prepared for the right table.\nWhich will have the following filter `filter.Or(filter.Eq(\"{right field}\", {left field value fetched by left query}), ...)`.\n\nResult from the first query is put in the map with {left field} value as the key,\nwhile reading the result from second query we append it to the corresponding map bucket.\n\nSo as merge is done in the memory joins should be used for relatively small\nresult sets only.","shortMessageHtmlLink":"feat: Client side in-memory joins"}},{"before":"0402397b3d42ff2313e3ba257bad77de1c4c1a10","after":null,"ref":"refs/heads/implement_insert","pushedAt":"2023-06-04T00:52:24.653Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"}},{"before":"c02118c6d774c3109b05ba733993d7b624fd1673","after":"94d80764e03498a3771f0ff815d5a923ae29100d","ref":"refs/heads/joins","pushedAt":"2023-06-04T00:46:37.271Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Client side in memory joins\n\nAPI:\n\nFirst join object need to be created, which specifies collections and\njoin condition:\n```\njoin := tigris.GetJoin[LeftCollModel, RightCollModel](db, \"{left field}\", \"{right field}\")\n```\nThis creates a join between LeftCollModel and RightCollModel on\nequality of `{left field}` to `{right field}`.\n\nCreated object then can be used to issue one or multiple read requests:\n\n```\nit, err := join.Read(ctx, filter.Eq(\"Field1\", 1))\n```\n\nfilter condition of read API is applied to the left table.\nIterator then returns of the rows matching the condition along with the\ncorresponding rows from the right table, which satisfies the join\ncondition.\n\nvar l LeftCollModel\nvar r []*RightCollModel\n\nfor it.Next(&l, &r) {\n fmt.Printf(\"l=%v r=%v\\n\", l, r)\n}\n\nBy default the documents which doesn't have matching documents in the right\ntable returned in the results. This result can be skipped by providing\n`&JoinResult{Type: tigris.InnerJoin}` option.\n\nIt is not required for the left field values or right field values to be unique.\n\nThe value of the array fields are matched as is by default, by using\n`&JoinOptions{ArrayUnroll: true}` option individual array items can be\nmatched in the right table.\n\nImplementation details:\n\nFirst request is issued to the left table with filter provided to Read API.\nResult is read into memory and request is prepared for the right table.\nWhich will have the following filter `filter.Or(filter.Eq(\"user_id\", {value of id field}), ....)`.\n\nResult from the first query is put in the map with ID as the key, while reading the result\nfrom second query we append it to the corresponding map bucket.\n\nSo as merge is done in the memory joins should be used for relatively small\nresult sets only.","shortMessageHtmlLink":"feat: Client side in memory joins"}},{"before":"dc2e9123baa12f172a5b0bbe6c7ad54993c7ec7a","after":"c02118c6d774c3109b05ba733993d7b624fd1673","ref":"refs/heads/joins","pushedAt":"2023-06-04T00:42:22.343Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Client side in memory joins\n\nAPI:\n\nFirst join object need to be created, which specifies collections and\njoin condition:\n```\njoin := tigris.GetJoin[LeftCollModel, RightCollModel](db, \"{left field}\", \"{right field}\")\n```\nThis creates a join between LeftCollModel and RightCollModel on\nequality of `{left field}` to `{right field}`.\n\nCreated object then can be used to issue one or multiple read requests:\n\n```\nit, err := join.Read(ctx, filter.Eq(\"Field1\", 1))\n```\n\nfilter condition of read API is applied to the left table.\nIterator then returns of the rows matching the condition along with the\ncorresponding rows from the right table, which satisfies the join\ncondition.\n\nvar l LeftCollModel\nvar r []*RightCollModel\n\nfor it.Next(&l, &r) {\n fmt.Printf(\"l=%v r=%v\\n\", l, r)\n}\n\nBy default the documents which doesn't have matching documents in the right\ntable returned in the results. This result can be skipped by providing\n`&JoinResult{Type: tigris.InnerJoin}` option.\n\nIt is not required for the left field values or right field values to be unique.\n\nThe value of the array fields are matched as is by default, by using\n`&JoinOptions{ArrayUnroll: true}` option individual array items can be\nmatched in the right table.\n\nImplementation details:\n\nFirst request is issued to the left table with filter provided to Read API.\nResult is read into memory and request is prepared for the right table.\nWhich will have the following filter `filter.Or(filter.Eq(\"user_id\", {value of id field}), ....)`.\n\nResult from the first query is put in the map with ID as the key, while reading the result\nfrom second query we append it to the corresponding map bucket.\n\nSo as merge is done in the memory joins should be used for relatively small\nresult sets only.","shortMessageHtmlLink":"feat: Client side in memory joins"}},{"before":"5d004b746f8dff202d48547edf6212677c790472","after":"dc2e9123baa12f172a5b0bbe6c7ad54993c7ec7a","ref":"refs/heads/joins","pushedAt":"2023-06-04T00:34:04.951Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Client side in memory joins\n\nAPI:\n\nFirst join object need to be created, which specifies collections and\njoin condition:\n```\njoin := tigris.GetJoin[LeftCollModel, RightCollModel](db, \"{left field}\", \"{right field}\")\n```\nThis creates a join between LeftCollModel and RightCollModel on\nequality of `{left field}` to `{right field}`.\n\nCreated object then can be used to issue one or multiple read requests:\n\n```\nit, err := join.Read(ctx, filter.Eq(\"Field1\", 1))\n```\n\nfilter condition of read API is applied to the left table.\nIterator then returns of the rows matching the condition along with the\ncorresponding rows from the right table, which satisfies the join\ncondition.\n\nvar l LeftCollModel\nvar r []*RightCollModel\n\nfor it.Next(&l, &r) {\n fmt.Printf(\"l=%v r=%v\\n\", l, r)\n}\n\nBy default the documents which doesn't have matching documents in the right\ntable returned in the results. This result can be skipped by providing\n`&JoinResult{Type: tigris.InnerJoin}` option.\n\nIt is not required for the left field values or right field values to be unique.\n\nThe value of the array fields are matched as is by default, by using\n`&JoinOptions{ArrayUnroll: true}` option individual array items can be\nmatched in the right table.\n\nImplementation details:\n\nFirst request is issued to the left table with filter provided to Read API.\nResult is read into memory and request is prepared for the right table.\nWhich will have the following filter `filter.Or(filter.Eq(\"user_id\", {value of id field}), ....)`.\n\nResult from the first query is put in the map with ID as the key, while reading the result\nfrom second query we append it to the corresponding map bucket.\n\nSo as merge is done in the memory joins should be used for relatively small\nresult sets only.","shortMessageHtmlLink":"feat: Client side in memory joins"}},{"before":"71086bf2d5494d7942f2306380fbc5a11d5f7ae1","after":"5d004b746f8dff202d48547edf6212677c790472","ref":"refs/heads/joins","pushedAt":"2023-06-04T00:13:15.336Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Client side in memory joins\n\nAPI:\n\nFirst join object need to be created, which specifies collections and\njoin condition:\n```\njoin := tigris.GetJoin[LeftCollModel, RightCollModel](db, \"{left field}\", \"{right field}\")\n```\nThis creates a join between LeftCollModel and RightCollModel on\nequality of `{left field}` to `{right field}`.\n\nCreated object then can be used to issue one or multiple read requests:\n\n```\nit, err := join.Read(ctx, filter.Eq(\"Field1\", 1))\n```\n\nfilter condition of read API is applied to the left table.\nIterator then returns of the rows matching the condition along with the\ncorresponding rows from the right table, which satisfies the join\ncondition.\n\nvar l LeftCollModel\nvar r []*RightCollModel\n\nfor it.Next(&l, &r) {\n fmt.Printf(\"l=%v r=%v\\n\", l, r)\n}\n\nBy default the documents which doesn't have matching documents in the right\ntable returned in the results. This result can be skipped by providing\n`&JoinResult{Type: tigris.InnerJoin}` option.\n\nIt is not required for the left field values or right field values to be unique.\n\nThe value of the array fields are matched as is by default, by using\n`&JoinOptions{ArrayUnroll: true}` option individual array items can be\nmatched in the right table.\n\nImplementation details:\n\nFirst request is issued to the left table with filter provided to Read API.\nResult is read into memory and request is prepared for the right table.\nWhich will have the following filter `filter.Or(filter.Eq(\"user_id\", {value of id field}), ....)`.\n\nResult from the first query is put in the map with ID as the key, while reading the result\nfrom second query we append it to the corresponding map bucket.\n\nSo as merge is done in the memory joins should be used for relatively small\nresult sets only.","shortMessageHtmlLink":"feat: Client side in memory joins"}},{"before":"19993ca04b5d4e7e6176fe64124b73261d7ea01b","after":"d1a4583a2473e32d3d3cf228d183c7932b609ec6","ref":"refs/heads/main","pushedAt":"2023-06-03T21:40:50.843Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"refactor: Replace standard JSON with jsoniter (#318)\n\nCo-authored-by: Yevgeniy Firsov ","shortMessageHtmlLink":"refactor: Replace standard JSON with jsoniter (#318)"}},{"before":"19993ca04b5d4e7e6176fe64124b73261d7ea01b","after":null,"ref":"refs/heads/fix_json","pushedAt":"2023-06-03T21:31:40.786Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"}},{"before":"cba2e33cff68ef6f978079b1dbdf3683c5fb1ff4","after":"19993ca04b5d4e7e6176fe64124b73261d7ea01b","ref":"refs/heads/main","pushedAt":"2023-06-03T21:31:37.818Z","pushType":"push","commitsCount":1,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"chore: Improve JSON matching in tests","shortMessageHtmlLink":"chore: Improve JSON matching in tests"}},{"before":null,"after":"19993ca04b5d4e7e6176fe64124b73261d7ea01b","ref":"refs/heads/fix_json","pushedAt":"2023-06-03T20:38:34.812Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"chore: Improve JSON matching in tests","shortMessageHtmlLink":"chore: Improve JSON matching in tests"}},{"before":"cba2e33cff68ef6f978079b1dbdf3683c5fb1ff4","after":null,"ref":"refs/heads/quick_fix","pushedAt":"2023-06-02T23:32:55.817Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"}},{"before":"b104100ffdd5865caacfd11cc1b3d9ccf83fc6d3","after":"cba2e33cff68ef6f978079b1dbdf3683c5fb1ff4","ref":"refs/heads/main","pushedAt":"2023-06-02T23:32:53.161Z","pushType":"push","commitsCount":1,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"chore: Fix tests","shortMessageHtmlLink":"chore: Fix tests"}},{"before":null,"after":"cba2e33cff68ef6f978079b1dbdf3683c5fb1ff4","ref":"refs/heads/quick_fix","pushedAt":"2023-06-02T23:13:39.938Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"chore: Fix tests","shortMessageHtmlLink":"chore: Fix tests"}},{"before":"b104100ffdd5865caacfd11cc1b3d9ccf83fc6d3","after":null,"ref":"refs/heads/fix_linters","pushedAt":"2023-06-02T22:50:33.182Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"}},{"before":"12e3c25053d5561ed19c9194dd35ac1df43bfbb4","after":"b104100ffdd5865caacfd11cc1b3d9ccf83fc6d3","ref":"refs/heads/main","pushedAt":"2023-06-02T22:50:30.852Z","pushType":"push","commitsCount":1,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"chore: Fix for depguard and tagalign linters","shortMessageHtmlLink":"chore: Fix for depguard and tagalign linters"}},{"before":null,"after":"b104100ffdd5865caacfd11cc1b3d9ccf83fc6d3","ref":"refs/heads/fix_linters","pushedAt":"2023-06-02T22:41:06.763Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"chore: Fix for depguard and tagalign linters","shortMessageHtmlLink":"chore: Fix for depguard and tagalign linters"}},{"before":"0617f7b20075a3e18f492f831f3340a576cbfedc","after":"d6612f8b0f29258bb729dc9a323fd8c1ff360f09","ref":"refs/heads/jsoniter","pushedAt":"2023-06-01T18:45:11.492Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"refactor: Replace standard JSON with jsoniter","shortMessageHtmlLink":"refactor: Replace standard JSON with jsoniter"}},{"before":"9e612240191860ef12e7a550b6a7c747ed213d6f","after":"0617f7b20075a3e18f492f831f3340a576cbfedc","ref":"refs/heads/jsoniter","pushedAt":"2023-05-31T23:17:08.229Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"fix: Fix jsoniter","shortMessageHtmlLink":"fix: Fix jsoniter"}},{"before":null,"after":"9e612240191860ef12e7a550b6a7c747ed213d6f","ref":"refs/heads/jsoniter","pushedAt":"2023-05-31T23:14:56.139Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"fix: Fix jsoniter","shortMessageHtmlLink":"fix: Fix jsoniter"}},{"before":null,"after":"31a5ae833e2467be70b0d2fe96fec6dd7b40e762","ref":"refs/heads/pr/318","pushedAt":"2023-05-31T23:03:46.038Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"refactor: use jsoniter in remaining packages after pulling latest changes","shortMessageHtmlLink":"refactor: use jsoniter in remaining packages after pulling latest cha…"}},{"before":"02eb5a53a23058031baf41fede10fd9760839b66","after":"91b9ce305b35bc935ecfbab75a371cc2403c6c3f","ref":"refs/heads/next","pushedAt":"2023-05-31T22:40:20.304Z","pushType":"pr_merge","commitsCount":2,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"Merge pull request #325 from tigrisdata/main\n\nNext release","shortMessageHtmlLink":"Merge pull request #325 from tigrisdata/main"}},{"before":"12e3c25053d5561ed19c9194dd35ac1df43bfbb4","after":null,"ref":"refs/heads/unix_socket","pushedAt":"2023-05-31T16:19:07.982Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"}},{"before":"c14c9bbe08b58c6f909af7301511daa15c4c4399","after":"12e3c25053d5561ed19c9194dd35ac1df43bfbb4","ref":"refs/heads/main","pushedAt":"2023-05-31T16:19:05.201Z","pushType":"push","commitsCount":1,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Support connecting to local isntances using unix domain sockets\n\nGRPC do not allow to pass the token on unsecured channel.\nIt only considers unix domain socket local connection as secure.","shortMessageHtmlLink":"feat: Support connecting to local isntances using unix domain sockets"}},{"before":null,"after":"12e3c25053d5561ed19c9194dd35ac1df43bfbb4","ref":"refs/heads/unix_socket","pushedAt":"2023-05-31T06:54:52.506Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Support connecting to local isntances using unix domain sockets\n\nGRPC do not allow to pass the token on unsecured channel.\nIt only considers unix domain socket local connection as secure.","shortMessageHtmlLink":"feat: Support connecting to local isntances using unix domain sockets"}},{"before":"ea151521a721b991e0fa935074ba7c3f793d2b9f","after":"71086bf2d5494d7942f2306380fbc5a11d5f7ae1","ref":"refs/heads/joins","pushedAt":"2023-05-30T18:01:30.573Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"feat: Client side in memory joins\n\nTo simplify explanation the proposal below uses this specific example models:\n```\ntype User struct {\n ID uuid.UUID `json:\"id\"`\n Name string `json:\"name\"`\n}\n\ntype Order struct {\n ID uuid.UUID\n UserID uuid.UUID `json:\"user_id\"` // references User's ID field\n Quantity int\n}\n```\n\nThe API would allow to join two tables based on field equality:\n```\nuserOrders, err := tigris.GetJoin[User, Order](db, \"id\", \"user_id\")\n```\nNow results can be read by:\n```\nit, err := userOrders.Read(ctx, filter.Eq(\"name\"))\n```\nwhere filter is applied to the left table.\n\nResults could be iterated as:\n```\nvar user User\nvar orders []*Order\n\nfor it.Next(&user, &orders) {\n fmt.Printf(\"user=%v orders=%v\\n\", user, orders)\n}\n```\n\nImplementation details:\n\nFirst request is issued to the left table with filter provided to Read API.\nResult is read into memory and request is prepared for the right table.\nWhich will have the following filter `filter.Or(filter.Eq(\"user_id\", {value of id field}), ....)`.\n\nResult from the first query is put in the map with ID as the key, while reading the result from second query we append it to the corresponding map bucket.\n\nSo as merge is done in the memory, this approach is not effective for very large results.","shortMessageHtmlLink":"feat: Client side in memory joins"}},{"before":"a3f108266912aa120196b2d1a6a308c8b5868e42","after":"9a3757cb618777955cba2ba0f6a5301864c2024c","ref":"refs/heads/noql","pushedAt":"2023-05-30T05:05:45.444Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"fix: wip","shortMessageHtmlLink":"fix: wip"}},{"before":"a0f75e4b1a7a0ca88eab181714e2938257d9451d","after":"02eb5a53a23058031baf41fede10fd9760839b66","ref":"refs/heads/next","pushedAt":"2023-05-25T16:42:00.568Z","pushType":"pr_merge","commitsCount":4,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"Merge pull request #323 from tigrisdata/main\n\nNext release","shortMessageHtmlLink":"Merge pull request #323 from tigrisdata/main"}},{"before":"c14c9bbe08b58c6f909af7301511daa15c4c4399","after":null,"ref":"refs/heads/fix_grpc_skip_tls","pushedAt":"2023-05-25T04:48:22.632Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"}},{"before":"583a482faa94eaf05ca4c54638f366b610a1d999","after":"c14c9bbe08b58c6f909af7301511daa15c4c4399","ref":"refs/heads/main","pushedAt":"2023-05-25T04:48:20.159Z","pushType":"push","commitsCount":1,"pusher":{"login":"efirs","name":"Yevgeniy Firsov","path":"/efirs","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/3436058?s=80&v=4"},"commit":{"message":"fix: Fix skip local TLS for GRPC","shortMessageHtmlLink":"fix: Fix skip local TLS for GRPC"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAADPF6kDgA","startCursor":null,"endCursor":null}},"title":"Activity · tigrisdata-archive/tigris-client-go"}