{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":98463536,"defaultBranch":"main","name":"nodejs-datastore","ownerLogin":"googleapis","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2017-07-26T20:32:42.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/16785467?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1717534809.0","currentOid":""},"activityList":{"items":[{"before":"7b6b095c0936e958c4ce9bc701beb6bf5d14f777","after":"16ee4240a662cf1000bff511f9d81ad4185c46d0","ref":"refs/heads/owl-bot-update-lock-68e1cece0d6d3336c4f1cb9d2857b020af5574dff6da6349293d1c6d4eea82d8","pushedAt":"2024-06-06T18:18:52.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"sofisl","name":null,"path":"/sofisl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55454395?s=80&v=4"},"commit":{"message":"Merge branch 'main' into owl-bot-update-lock-68e1cece0d6d3336c4f1cb9d2857b020af5574dff6da6349293d1c6d4eea82d8","shortMessageHtmlLink":"Merge branch 'main' into owl-bot-update-lock-68e1cece0d6d3336c4f1cb9d…"}},{"before":"a8464804e0a9f7159078d77d948b69c5149818db","after":"ddb9fcb8c8590a3ef03b63f190d6a5d02c6a6071","ref":"refs/heads/release-please--branches--main--components--datastore","pushedAt":"2024-06-04T21:00:34.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 9.0.1","shortMessageHtmlLink":"chore(main): release 9.0.1"}},{"before":"c6c7881d53c64e2e2820df38db4699d97c530fba","after":null,"ref":"refs/heads/owl-bot-copy","pushedAt":"2024-06-04T21:00:09.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"}},{"before":"b7ff5c86306f80d93f678a0638892c58a3b2088c","after":"fb82e1c8bbaf5834448166d4e52737bc4203cb0f","ref":"refs/heads/main","pushedAt":"2024-06-04T21:00:08.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"},"commit":{"message":"build: update gapic generator to allow individual location mixin generation (#1251)\n\n* feat: New PropertyMask field which allows partial commits, lookups, and query results\r\n\r\nPiperOrigin-RevId: 635449160\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/dde0ec1f36cb8cbf9036dd0f1e8e5eda7882db4e\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/8caa60d9aea82964a19cdf8faf91384911db8bdd\r\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGNhYTYwZDlhZWE4Mjk2NGExOWNkZjhmYWY5MTM4NDkxMWRiOGJkZCJ9\r\n\r\n* 🦉 Updates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n* build: update gapic generator to allow individual location mixin generation\r\n\r\nPiperOrigin-RevId: 638462084\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/e5d56361fda138e2432f73504c7fd6e1cf4cce14\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/d02b2f9239c3e1de647ef37fb10a5e424aa0b7a5\r\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZDAyYjJmOTIzOWMzZTFkZTY0N2VmMzdmYjEwYTVlNDI0YWEwYjdhNSJ9\r\n\r\n* 🦉 Updates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot \r\nCo-authored-by: danieljbruce ","shortMessageHtmlLink":"build: update gapic generator to allow individual location mixin gene…"}},{"before":"9a8b3f2d96930c0b74576cacede264d000712293","after":"7b6b095c0936e958c4ce9bc701beb6bf5d14f777","ref":"refs/heads/owl-bot-update-lock-68e1cece0d6d3336c4f1cb9d2857b020af5574dff6da6349293d1c6d4eea82d8","pushedAt":"2024-06-04T00:22:07.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"sofisl","name":null,"path":"/sofisl","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/55454395?s=80&v=4"},"commit":{"message":"Update package.json","shortMessageHtmlLink":"Update package.json"}},{"before":"ac63e65140b4d400029674456506f4c19af2b3fb","after":"c6c7881d53c64e2e2820df38db4699d97c530fba","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-06-03T17:24:28.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"},"commit":{"message":"Merge branch 'main' into owl-bot-copy","shortMessageHtmlLink":"Merge branch 'main' into owl-bot-copy"}},{"before":null,"after":"9a8b3f2d96930c0b74576cacede264d000712293","ref":"refs/heads/owl-bot-update-lock-68e1cece0d6d3336c4f1cb9d2857b020af5574dff6da6349293d1c6d4eea82d8","pushedAt":"2024-05-31T15:52:10.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"chore: [node] add auto-approve templates, and install dependencies with engines-strict\n\nchore: add auto-approve templates, and install dependencies with engines-strict\n\nSource-Link: https://github.com/googleapis/synthtool/commit/4a02d97333d1c1642d1b19b00645afdcf4ab36a4\nPost-Processor: gcr.io/cloud-devrel-public-resources/owlbot-nodejs:latest@sha256:68e1cece0d6d3336c4f1cb9d2857b020af5574dff6da6349293d1c6d4eea82d8","shortMessageHtmlLink":"chore: [node] add auto-approve templates, and install dependencies wi…"}},{"before":"3fdd57ede3e82d60072ae3e4d3a875d57fad1fea","after":"ac63e65140b4d400029674456506f4c19af2b3fb","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-30T02:00:54.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"🦉 Updates from OwlBot post-processor\n\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md","shortMessageHtmlLink":"🦉 Updates from OwlBot post-processor"}},{"before":"8f0086128106926eb5138e5aba066e235738e3dc","after":"3fdd57ede3e82d60072ae3e4d3a875d57fad1fea","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-30T01:56:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"build: update gapic generator to allow individual location mixin generation\n\nPiperOrigin-RevId: 638462084\n\nSource-Link: https://github.com/googleapis/googleapis/commit/e5d56361fda138e2432f73504c7fd6e1cf4cce14\n\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/d02b2f9239c3e1de647ef37fb10a5e424aa0b7a5\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiZDAyYjJmOTIzOWMzZTFkZTY0N2VmMzdmYjEwYTVlNDI0YWEwYjdhNSJ9","shortMessageHtmlLink":"build: update gapic generator to allow individual location mixin gene…"}},{"before":"b7ff5c86306f80d93f678a0638892c58a3b2088c","after":"a8464804e0a9f7159078d77d948b69c5149818db","ref":"refs/heads/release-please--branches--main--components--datastore","pushedAt":"2024-05-27T20:46:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 9.0.1","shortMessageHtmlLink":"chore(main): release 9.0.1"}},{"before":null,"after":"b7ff5c86306f80d93f678a0638892c58a3b2088c","ref":"refs/heads/release-please--branches--main--components--datastore","pushedAt":"2024-05-27T20:46:54.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"fix(deps): update dependency sinon to v18 (#1250)","shortMessageHtmlLink":"fix(deps): update dependency sinon to v18 (#1250)"}},{"before":"32329d2f26b269bda996fc2787e5882107c276e4","after":"b7ff5c86306f80d93f678a0638892c58a3b2088c","ref":"refs/heads/main","pushedAt":"2024-05-27T20:46:34.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"},"commit":{"message":"fix(deps): update dependency sinon to v18 (#1250)","shortMessageHtmlLink":"fix(deps): update dependency sinon to v18 (#1250)"}},{"before":"9b913b453b038efea1bc5620f35e853a8d94d0c7","after":"8f0086128106926eb5138e5aba066e235738e3dc","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-27T15:44:37.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"},"commit":{"message":"Merge branch 'main' into owl-bot-copy","shortMessageHtmlLink":"Merge branch 'main' into owl-bot-copy"}},{"before":"b665bd567f5f05db200a9a50f933d4efd0808cde","after":null,"ref":"refs/heads/release-please--branches--main--components--datastore","pushedAt":"2024-05-27T15:25:47.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"}},{"before":"414dec4e1548f551be06df914d6b56362bdc1790","after":"32329d2f26b269bda996fc2787e5882107c276e4","ref":"refs/heads/main","pushedAt":"2024-05-27T15:25:46.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"},"commit":{"message":"chore(main): release 9.0.0 (#1247)\n\nCo-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>","shortMessageHtmlLink":"chore(main): release 9.0.0 (#1247)"}},{"before":"8c1128f56a13c688a3ab1fb7c264c07beca1d48e","after":"9b913b453b038efea1bc5620f35e853a8d94d0c7","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-20T16:56:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"🦉 Updates from OwlBot post-processor\n\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md","shortMessageHtmlLink":"🦉 Updates from OwlBot post-processor"}},{"before":null,"after":"8c1128f56a13c688a3ab1fb7c264c07beca1d48e","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-20T16:53:42.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"feat: New PropertyMask field which allows partial commits, lookups, and query results\n\nPiperOrigin-RevId: 635449160\n\nSource-Link: https://github.com/googleapis/googleapis/commit/dde0ec1f36cb8cbf9036dd0f1e8e5eda7882db4e\n\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/8caa60d9aea82964a19cdf8faf91384911db8bdd\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiOGNhYTYwZDlhZWE4Mjk2NGExOWNkZjhmYWY5MTM4NDkxMWRiOGJkZCJ9","shortMessageHtmlLink":"feat: New PropertyMask field which allows partial commits, lookups, a…"}},{"before":"39a90b5381b8a7aee7f4aced50939c3000857f6a","after":null,"ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-16T02:05:36.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"}},{"before":"cca7bff05ab4de7b2876dc335b756c8fba2f4dc8","after":"39a90b5381b8a7aee7f4aced50939c3000857f6a","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-16T02:05:24.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"🦉 Updates from OwlBot post-processor\n\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md","shortMessageHtmlLink":"🦉 Updates from OwlBot post-processor"}},{"before":null,"after":"cca7bff05ab4de7b2876dc335b756c8fba2f4dc8","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-16T02:00:29.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"feat: update Nodejs generator to send API versions in headers for GAPICs\n\nPiperOrigin-RevId: 634109303\n\nSource-Link: https://github.com/googleapis/googleapis/commit/998ade8d5e34d18df5ce36ce2baefdd57f4da375\n\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/000ca6f00801f65b847e6029cb05111404df21ec\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiMDAwY2E2ZjAwODAxZjY1Yjg0N2U2MDI5Y2IwNTExMTQwNGRmMjFlYyJ9","shortMessageHtmlLink":"feat: update Nodejs generator to send API versions in headers for GAPICs"}},{"before":"7ebdd84b4aa1f7f104c98222dae59455031a093a","after":"b665bd567f5f05db200a9a50f933d4efd0808cde","ref":"refs/heads/release-please--branches--main--components--datastore","pushedAt":"2024-05-09T20:52:54.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 9.0.0","shortMessageHtmlLink":"chore(main): release 9.0.0"}},{"before":"ba79118ac00ccc3bb0380ee5693c3b687a7ae9c7","after":"414dec4e1548f551be06df914d6b56362bdc1790","ref":"refs/heads/main","pushedAt":"2024-05-09T20:52:31.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"},"commit":{"message":"feat: Query profiling feature (#1221)\n\n* Add the right files from the preview branch\r\n\r\nCopy paste over the files from the preview branch\r\n\r\n* Thread Query mode through the library\r\n\r\nThread the query mode through the client library. Allow calls to get made using the query mode.\r\n\r\n* Create a basic workflow for testing profiling grpc\r\n\r\nThis code allows basic query profiling to work and creates a basic code snippet that can be used to make it work.\r\n\r\n* This test makes a call to the mock server\r\n\r\nThis will be useful for debugging grpc issues.\r\n\r\n* Now the test works with the mock server in repo\r\n\r\nThis mock server will be super useful for ensuring that the right data gets transmitted in private preview so that we can confirm the client library is working correctly.\r\n\r\n* Delete js file\r\n\r\nWe use the ts file instead.\r\n\r\n* Try explain\r\n\r\nSee if Explain gets passed along to the mock server.\r\n\r\n* Update protos.json\r\n\r\nProtos.json is needed to pass the plan along.\r\n\r\n* Try an aggregate query\r\n\r\n* Add test to catch breaking change to return type\r\n\r\nMake sure changes don’t break the use of this callback by adding this test.\r\n\r\n* Try redefining RunQueryCallback\r\n\r\nDefine it with a more general data structure.\r\n\r\n* Revert Gapic changes to match head branch\r\n\r\nThe merge caused generated files to have a diff. The diff should not be in the PR.\r\n\r\n* Remove only\r\n\r\nonly should not be used here\r\n\r\n* Add data structures for return values\r\n\r\nData structures need to be added for the return values that contain stats.\r\n\r\n* Add plumbing to send stats info back\r\n\r\nAdd stats to info if it is available. If there are no results then end the stream and send the info back. This way, stats will always be sent in info if they are available and the program won ’t break if there are no results.\r\n\r\n* Set test to only that we intend to explore\r\n\r\n* Add a comment about stats\r\n\r\nExplain what happens when the result set is empty. Just send the stats back.\r\n\r\n* Delete the mock server code\r\n\r\nThe mock server code was used for debugging and now we don’t need it since the service is working.\r\n\r\n* Remove calls to nightly\r\n\r\nCalls to nightly don’t have a second database to work with. Regular calls work now so nightly calls are not necessary.\r\n\r\n* Introduce profiling tests again\r\n\r\nBring the query profiling tests back.\r\n\r\n* Revert \"Remove calls to nightly\"\r\n\r\nThis reverts commit 040d0a5718e913b1a5b31e37a13b0a5daa74f4a1.\r\n\r\n* Stats are optional\r\n\r\nStats do not necessarily come from the server.\r\n\r\n* Write some tests to test each mode\r\n\r\nEach query profiling mode needs to be explored.\r\n\r\n* Add code for parsing the stats returned\r\n\r\nStats returned needs to be parsed by a special library that will remove the complexities of the Struct object.\r\n\r\n* Add dependencies necessary for parsing\r\n\r\nA library is needed for parsing the Struct values. Add the libraries and use them.\r\n\r\n* Add assertions for the expected plan/stats\r\n\r\nExpected plan and expected stats should be used in the tests. This ensures the tests check for the proper stats values.\r\n\r\n* Refactor info with stats build and add info to cb\r\n\r\nAdd a specific type for the runAggregationQuery callback so that it can now support the info parameter. In order to allow runAggregationQuery to make use of creating info, we also refactor info construction into a separate function.\r\n\r\n* Modify the parser for runAggregationQuery\r\n\r\nThe parser for runAggregationQuery should have a deterministic process for computing results.\r\n\r\n* Add asserts for the return values of runAggregate\r\n\r\nMake sure that the entities and the plan are correct.\r\n\r\n* Complete tests for runQuery and aggregation query\r\n\r\nThe assertion checks for runQuery and runAggregationQuery should be done and they test each mode.\r\n\r\n* Add tests for Query and AggregateQuery\r\n\r\nTests should ensure run functions work properly for the run function on both of these objects.\r\n\r\n* Add initial transaction tests for runQuery\r\n\r\nThe runQuery tests have been added which get the right results. Next the right assert statements and info collection will be added to the tests.\r\n\r\n* Add checks on info to the transaction tests\r\n\r\nChecks against info are needed to be sure that stats are passed back to the caller properly.\r\n\r\n* Fix tests for aggregate queries in transactions\r\n\r\nAdd tests for running aggregate queries inside transactions.\r\n\r\n* Ran linter, added all tests for runQueryStream\r\n\r\nAdded a temporary test for runQueryStream. Also ran the linter.\r\n\r\n* Change parsing of return values\r\n\r\nReturn values are going to look different for users. Change the code so that the parsing is done differently.\r\n\r\n* Reformat the info function\r\n\r\nThis function is more readable if we eliminate some of the tertiary arguments and complex logic for building the info object.\r\n\r\n* Change tests as a result of structure changes\r\n\r\nThe structure of the QueryInfo object is changed. Modify the tests to work with the new structure.\r\n\r\n* Use import and not require\r\n\r\nimport is better for catching compile time errors and is more customary.\r\n\r\n* Better spacing for imports\r\n\r\nChange the spacing so that the imports are all in one place.\r\n\r\n* Introduce a single function for checking the execution stats. Make sure all the tests use this function. Pull out the run query plan and the run aggregation query plan.\r\n\r\n* Fix the tests so that they call the right fns\r\n\r\nAdd assertion checks to check the query plan against some expected value and make sure the right assertion checks are done for the right tests.\r\n\r\n* Finish the tests for the streaming call\r\n\r\nFinish the tests for specifying no mode, specifying normal mode, EXPLAIN mode and EXPLAIN_ANALYZE mode. Make sure the tests pass.\r\n\r\n* Delete code that will not be used anymore\r\n\r\nThere is a lot of boilerplate code that was needed for the streaming call. Get rid of it here.\r\n\r\n* Make changes to match new proto\r\n\r\nCode change to use new proto was made so that code will compile.\r\n\r\n* Add Explain Metrics interface\r\n\r\nMake slight change to withBeginTransaction so that code compiles under new structure. Also group plan and statistics under the new explainMetrics interface.\r\n\r\n* Remove bytesReturned from test\r\n\r\nProto should not be passing along bytesReturned anymore.\r\n\r\n* Fix system tests to use values matching new struct\r\n\r\n* Remove calls to nightly\r\n\r\nFeature is now fully ready so nightly tests should not be done because the feature is expected to work in production.\r\n\r\n* Query profiling\r\n\r\nAdd test for runQuery. Send back plan summary and execution stats.\r\n\r\n* Add a test for runAggregationQuery\r\n\r\nrunAggregationQuery needs a unit test to validate request/return data.\r\n\r\n* Parameterize the query profiling tests\r\n\r\n* run the linter\r\n\r\n* Export Query Mode in index.ts\r\n\r\nQuery mode needs to be exported so that it can be accessed by the user.\r\n\r\n* Change data structure types to match return values\r\n\r\n* Remove TODO\r\n\r\n* remove import\r\n\r\n* delete the query profiling samples\r\n\r\n* Remove abstraction for RunQueryCallback\r\n\r\n* Change the comment to describe new data types\r\n\r\n* Remove TODO\r\n\r\n* linting fixes\r\n\r\n* Update type to include runAggregationQuery\r\n\r\n* Put else back in\r\n\r\nThis change is actually simpler because it doesn’t introduce a let. It is also a much smaller diff.\r\n\r\n* mode is not needed in sharedQueryOptions\r\n\r\n* Revert \"mode is not needed in sharedQueryOptions\"\r\n\r\nThis reverts commit b8d0c63aed8ea0dec18efe61ae5022e853a70c78.\r\n\r\n* Rearrange imports\r\n\r\nrearrange the imports to simplify the diff.\r\n\r\n* Revert imports to simplify diff\r\n\r\n* Don’t change Entities position\r\n\r\nSimplify diff\r\n\r\n* Move timestamp import back\r\n\r\n* This interface is only needed once\r\n\r\nDefine the interface inline\r\n\r\n* Remove QueryMode and replace with explainOptions\r\n\r\n* A few system tests\r\n\r\nAdd a few tests for the different explain options cases.\r\n\r\n* Add a few tests for the false case\r\n\r\n* Add more specific types to introduced function\r\n\r\n* mode parameter is no longer required\r\n\r\n* This signature change is no longer required\r\n\r\n* Update the comment for getInfoFromStats\r\n\r\n* GapicExplainOptions are no longer needed.\r\n\r\n* Set analyze to false to match description\r\n\r\n* Add a test for runQueryStream and analyze set fals\r\n\r\n* Add a test for analyze set to false\r\n\r\n* Import ExplainOptions\r\n\r\n* Remove bytesReturned from the interface\r\n\r\n* Make types in test more specific\r\n\r\n* name as string\r\n\r\n* Rely on 2 dependencies from google-gax instead\r\n\r\n* Change expectations in the test to reflect new val\r\n\r\n* Ran linter\r\n\r\n* Remove extraneous import\r\n\r\n* Modify stats return type","shortMessageHtmlLink":"feat: Query profiling feature (#1221)"}},{"before":"d6375419b590b16f08f14d4b2ba1b77e8c3efafd","after":"7ebdd84b4aa1f7f104c98222dae59455031a093a","ref":"refs/heads/release-please--branches--main--components--datastore","pushedAt":"2024-05-08T17:25:21.000Z","pushType":"force_push","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 9.0.0","shortMessageHtmlLink":"chore(main): release 9.0.0"}},{"before":"21616c329720d6d5628a0769a9185106eaa1eab9","after":null,"ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-08T17:24:58.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"}},{"before":"73a0a39b4c0423a5b4802076cdce80fce7c9adda","after":"ba79118ac00ccc3bb0380ee5693c3b687a7ae9c7","ref":"refs/heads/main","pushedAt":"2024-05-08T17:24:57.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"},"commit":{"message":"fix!: An existing method `UpdateVehicleLocation` is removed from service `VehicleService` (#1248)\n\n* fix!: An existing method `UpdateVehicleLocation` is removed from service `VehicleService`\r\nfix!: An existing method `SearchFuzzedVehicles` is removed from service `VehicleService`\r\nfix!: An existing message `UpdateVehicleLocationRequest` is removed\r\n\r\nPiperOrigin-RevId: 631557549\r\n\r\nSource-Link: https://github.com/googleapis/googleapis/commit/3d50414a7ff3f0b8ffe8ad7858257396e4f18131\r\n\r\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/5ce63d4e636a975175bde2d16c15e70dd5a81ff4\r\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNWNlNjNkNGU2MzZhOTc1MTc1YmRlMmQxNmMxNWU3MGRkNWE4MWZmNCJ9\r\n\r\n* 🦉 Updates from OwlBot post-processor\r\n\r\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md\r\n\r\n---------\r\n\r\nCo-authored-by: Owl Bot ","shortMessageHtmlLink":"fix!: An existing method UpdateVehicleLocation is removed from serv…"}},{"before":"92ebe9ca2efa9e896c18d5965c8aff03b5a6c9fc","after":"21616c329720d6d5628a0769a9185106eaa1eab9","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-08T03:05:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"🦉 Updates from OwlBot post-processor\n\nSee https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md","shortMessageHtmlLink":"🦉 Updates from OwlBot post-processor"}},{"before":null,"after":"92ebe9ca2efa9e896c18d5965c8aff03b5a6c9fc","ref":"refs/heads/owl-bot-copy","pushedAt":"2024-05-08T03:00:37.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"gcf-owl-bot[bot]","name":null,"path":"/apps/gcf-owl-bot","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/99011?s=80&v=4"},"commit":{"message":"fix!: An existing method `UpdateVehicleLocation` is removed from service `VehicleService`\nfix!: An existing method `SearchFuzzedVehicles` is removed from service `VehicleService`\nfix!: An existing message `UpdateVehicleLocationRequest` is removed\n\nPiperOrigin-RevId: 631557549\n\nSource-Link: https://github.com/googleapis/googleapis/commit/3d50414a7ff3f0b8ffe8ad7858257396e4f18131\n\nSource-Link: https://github.com/googleapis/googleapis-gen/commit/5ce63d4e636a975175bde2d16c15e70dd5a81ff4\nCopy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNWNlNjNkNGU2MzZhOTc1MTc1YmRlMmQxNmMxNWU3MGRkNWE4MWZmNCJ9","shortMessageHtmlLink":"fix!: An existing method UpdateVehicleLocation is removed from serv…"}},{"before":"73a0a39b4c0423a5b4802076cdce80fce7c9adda","after":"d6375419b590b16f08f14d4b2ba1b77e8c3efafd","ref":"refs/heads/release-please--branches--main--components--datastore","pushedAt":"2024-04-04T19:16:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"chore(main): release 8.7.1","shortMessageHtmlLink":"chore(main): release 8.7.1"}},{"before":null,"after":"73a0a39b4c0423a5b4802076cdce80fce7c9adda","ref":"refs/heads/release-please--branches--main--components--datastore","pushedAt":"2024-04-04T19:16:57.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"release-please[bot]","name":null,"path":"/apps/release-please","primaryAvatarUrl":"https://avatars.githubusercontent.com/in/40688?s=80&v=4"},"commit":{"message":"fix: read time should be used for transaction reads (#1171)\n\n* Allow datastore projectId to be fetched from clien\r\n\r\nLatency is caused by the call to getProjectId from Google auth. This change allows the project id to be retrieved if it is set in the client at creation time thereby reducing call latency.\r\n\r\n* Create a file for mocking out commits\r\n\r\nA test file is created where we mock out commit in the Gapic layer. The mock allows us to get the results passed to the commit endpoint in the Gapic layer.\r\n\r\n* Create a test to measure latency of call.\r\n\r\nTo prove that the change works to reduce latency, a test is written. The test checks to see that the amount of time that passes between the time when the initial call is made in the user’s code and the time when the call reaches the gapic layer is sufficiently small. It will be a very small amount of time if the program does not need to do an auth lookup.\r\n\r\n* Run the linting fixes\r\n\r\nRun the linter so that spacing in the PR gets fixed for some of the lines of code.\r\n\r\n* Add license header to top of test file\r\n\r\nThe license header needs to be added to the top of the new test file that is used for mocking out commit.\r\n\r\n* Add comment for test for now\r\n\r\nThis is going to be a test for investigating the latency of the client.\r\n\r\n* Add a test for the mock server\r\n\r\nMeasure the latency between the original call and the mock server.\r\n\r\n* Set current retry attempt to 0\r\n\r\n* Add a log for call time\r\n\r\nDo check external to function after async call. Add log for call time.\r\n\r\n* Add another mock\r\n\r\nOther mock doesn’t require lazy client initialization.\r\n\r\n* Eliminate code from the mock file\r\n\r\nEliminate the fake datastore client because we need to do assertion checks that are specific to each test. This means there is no point in defining runQuery once in a mock because each test will mock it out differently.\r\n\r\n* Start off by adding read time to read options\r\n\r\nAdd the code change that will add read time to read options for transactions.\r\n\r\n# Conflicts:\r\n#\ttest/transaction.ts\r\n\r\n* Update the test to use transactions\r\n\r\nThe idea is to test that read time got passed along for transactions specifically. This will be necessary for snapshot reads to work.\r\n\r\n* Remove only\r\n\r\nNeed the entire test suite to run\r\n\r\n* Remove the before hook\r\n\r\nThe before hook is not necessary. Just mock out the data client at the start.\r\n\r\n* Remove unnecessary cherry picked files\r\n\r\nFiles were cherry-picked that weren’t helpful for solving the problem. Remove them.\r\n\r\n* Clean up PR diff\r\n\r\n* clean up PR diff\r\n\r\n* Update the test so that it is run as a transaction\r\n\r\nRight now, providing a transaction id is necessary to run the request as a transaction.\r\n\r\n* Add an integration test\r\n\r\nThe integration test looks at the data from the snapshot read time for transactions and ensures that the read has no data thereby exercising the read time parameter.\r\n\r\n* Linting fixing indents\r\n\r\nFix the indents in the system test folder\r\n\r\n* Update the header\r\n\r\n* Fix unit test\r\n\r\nbeginTransaction needs to be mocked out now that a transaction will begin if runQuery is called.\r\n\r\n* System test changes.\r\n\r\nAdd a sleep. Instead of changing the current test, add a new test because it means the reader of the PR can be sure that test coverage wasn’t reduced which is better.\r\n\r\n* Modify test\r\n\r\nModify the test so that sleeps are long enough to create predictable results and tests actually check for the right values.\r\n\r\n* Replace with less precise assert\r\n\r\nThe test setup sometimes prepares before data with 0 entries and sometimes prepares before data with 1 entry so a less restrictive test is required in order for it to consistently pass.","shortMessageHtmlLink":"fix: read time should be used for transaction reads (#1171)"}},{"before":"10f85fdb49a51187943ce46eaff617d8c5e67b59","after":"73a0a39b4c0423a5b4802076cdce80fce7c9adda","ref":"refs/heads/main","pushedAt":"2024-04-04T19:16:35.000Z","pushType":"pr_merge","commitsCount":1,"pusher":{"login":"danieljbruce","name":null,"path":"/danieljbruce","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/8935272?s=80&v=4"},"commit":{"message":"fix: read time should be used for transaction reads (#1171)\n\n* Allow datastore projectId to be fetched from clien\r\n\r\nLatency is caused by the call to getProjectId from Google auth. This change allows the project id to be retrieved if it is set in the client at creation time thereby reducing call latency.\r\n\r\n* Create a file for mocking out commits\r\n\r\nA test file is created where we mock out commit in the Gapic layer. The mock allows us to get the results passed to the commit endpoint in the Gapic layer.\r\n\r\n* Create a test to measure latency of call.\r\n\r\nTo prove that the change works to reduce latency, a test is written. The test checks to see that the amount of time that passes between the time when the initial call is made in the user’s code and the time when the call reaches the gapic layer is sufficiently small. It will be a very small amount of time if the program does not need to do an auth lookup.\r\n\r\n* Run the linting fixes\r\n\r\nRun the linter so that spacing in the PR gets fixed for some of the lines of code.\r\n\r\n* Add license header to top of test file\r\n\r\nThe license header needs to be added to the top of the new test file that is used for mocking out commit.\r\n\r\n* Add comment for test for now\r\n\r\nThis is going to be a test for investigating the latency of the client.\r\n\r\n* Add a test for the mock server\r\n\r\nMeasure the latency between the original call and the mock server.\r\n\r\n* Set current retry attempt to 0\r\n\r\n* Add a log for call time\r\n\r\nDo check external to function after async call. Add log for call time.\r\n\r\n* Add another mock\r\n\r\nOther mock doesn’t require lazy client initialization.\r\n\r\n* Eliminate code from the mock file\r\n\r\nEliminate the fake datastore client because we need to do assertion checks that are specific to each test. This means there is no point in defining runQuery once in a mock because each test will mock it out differently.\r\n\r\n* Start off by adding read time to read options\r\n\r\nAdd the code change that will add read time to read options for transactions.\r\n\r\n# Conflicts:\r\n#\ttest/transaction.ts\r\n\r\n* Update the test to use transactions\r\n\r\nThe idea is to test that read time got passed along for transactions specifically. This will be necessary for snapshot reads to work.\r\n\r\n* Remove only\r\n\r\nNeed the entire test suite to run\r\n\r\n* Remove the before hook\r\n\r\nThe before hook is not necessary. Just mock out the data client at the start.\r\n\r\n* Remove unnecessary cherry picked files\r\n\r\nFiles were cherry-picked that weren’t helpful for solving the problem. Remove them.\r\n\r\n* Clean up PR diff\r\n\r\n* clean up PR diff\r\n\r\n* Update the test so that it is run as a transaction\r\n\r\nRight now, providing a transaction id is necessary to run the request as a transaction.\r\n\r\n* Add an integration test\r\n\r\nThe integration test looks at the data from the snapshot read time for transactions and ensures that the read has no data thereby exercising the read time parameter.\r\n\r\n* Linting fixing indents\r\n\r\nFix the indents in the system test folder\r\n\r\n* Update the header\r\n\r\n* Fix unit test\r\n\r\nbeginTransaction needs to be mocked out now that a transaction will begin if runQuery is called.\r\n\r\n* System test changes.\r\n\r\nAdd a sleep. Instead of changing the current test, add a new test because it means the reader of the PR can be sure that test coverage wasn’t reduced which is better.\r\n\r\n* Modify test\r\n\r\nModify the test so that sleeps are long enough to create predictable results and tests actually check for the right values.\r\n\r\n* Replace with less precise assert\r\n\r\nThe test setup sometimes prepares before data with 0 entries and sometimes prepares before data with 1 entry so a less restrictive test is required in order for it to consistently pass.","shortMessageHtmlLink":"fix: read time should be used for transaction reads (#1171)"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEXn9apQA","startCursor":null,"endCursor":null}},"title":"Activity · googleapis/nodejs-datastore"}