{"action":"created","issue":{"url":"https://api.github.com/repos/Azure/azure-storage-node/issues/441","repository_url":"https://api.github.com/repos/Azure/azure-storage-node","labels_url":"https://api.github.com/repos/Azure/azure-storage-node/issues/441/labels{/name}","comments_url":"https://api.github.com/repos/Azure/azure-storage-node/issues/441/comments","events_url":"https://api.github.com/repos/Azure/azure-storage-node/issues/441/events","html_url":"https://github.com/Azure/azure-storage-node/issues/441","id":317957075,"number":441,"title":"Pagination for table storage queries","user":{"login":"snoopdouglas","id":4892574,"avatar_url":"https://avatars0.githubusercontent.com/u/4892574?v=4","gravatar_id":"","url":"https://api.github.com/users/snoopdouglas","html_url":"https://github.com/snoopdouglas","followers_url":"https://api.github.com/users/snoopdouglas/followers","following_url":"https://api.github.com/users/snoopdouglas/following{/other_user}","gists_url":"https://api.github.com/users/snoopdouglas/gists{/gist_id}","starred_url":"https://api.github.com/users/snoopdouglas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/snoopdouglas/subscriptions","organizations_url":"https://api.github.com/users/snoopdouglas/orgs","repos_url":"https://api.github.com/users/snoopdouglas/repos","events_url":"https://api.github.com/users/snoopdouglas/events{/privacy}","received_events_url":"https://api.github.com/users/snoopdouglas/received_events","type":"User","site_admin":false},"labels":[{"id":97877936,"url":"https://api.github.com/repos/Azure/azure-storage-node/labels/question","name":"question","color":"cc317c","default":true}],"state":"open","locked":false,"assignee":{"login":"XiaoningLiu","id":6889160,"avatar_url":"https://avatars2.githubusercontent.com/u/6889160?v=4","gravatar_id":"","url":"https://api.github.com/users/XiaoningLiu","html_url":"https://github.com/XiaoningLiu","followers_url":"https://api.github.com/users/XiaoningLiu/followers","following_url":"https://api.github.com/users/XiaoningLiu/following{/other_user}","gists_url":"https://api.github.com/users/XiaoningLiu/gists{/gist_id}","starred_url":"https://api.github.com/users/XiaoningLiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/XiaoningLiu/subscriptions","organizations_url":"https://api.github.com/users/XiaoningLiu/orgs","repos_url":"https://api.github.com/users/XiaoningLiu/repos","events_url":"https://api.github.com/users/XiaoningLiu/events{/privacy}","received_events_url":"https://api.github.com/users/XiaoningLiu/received_events","type":"User","site_admin":false},"assignees":[{"login":"XiaoningLiu","id":6889160,"avatar_url":"https://avatars2.githubusercontent.com/u/6889160?v=4","gravatar_id":"","url":"https://api.github.com/users/XiaoningLiu","html_url":"https://github.com/XiaoningLiu","followers_url":"https://api.github.com/users/XiaoningLiu/followers","following_url":"https://api.github.com/users/XiaoningLiu/following{/other_user}","gists_url":"https://api.github.com/users/XiaoningLiu/gists{/gist_id}","starred_url":"https://api.github.com/users/XiaoningLiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/XiaoningLiu/subscriptions","organizations_url":"https://api.github.com/users/XiaoningLiu/orgs","repos_url":"https://api.github.com/users/XiaoningLiu/repos","events_url":"https://api.github.com/users/XiaoningLiu/events{/privacy}","received_events_url":"https://api.github.com/users/XiaoningLiu/received_events","type":"User","site_admin":false}],"milestone":null,"comments":1,"created_at":"2018-04-26T09:54:38Z","updated_at":"2018-04-27T06:34:29Z","closed_at":null,"author_association":"NONE","body":"Would it be possible to implement either one of:\r\n\r\n* An offset parameter for `top`, such that I can call `query.top(M, N)` to get the top `M` results, offset by `N`, similar to SQL `LIMIT`/`OFFSET`;\r\n* Or, a method that could be called like `query.from(rowKey)` that returns results starting from (but possibly excluding) the given `rowKey` (which may be better for very dynamic datasets)\r\n\r\nFor context, I'm trying to implement an Azure Functions CRUD REST API with pagination such that minimal amounts of memory, bandwidth, etc. are needed."},"comment":{"url":"https://api.github.com/repos/Azure/azure-storage-node/issues/comments/384878410","html_url":"https://github.com/Azure/azure-storage-node/issues/441#issuecomment-384878410","issue_url":"https://api.github.com/repos/Azure/azure-storage-node/issues/441","id":384878410,"user":{"login":"XiaoningLiu","id":6889160,"avatar_url":"https://avatars2.githubusercontent.com/u/6889160?v=4","gravatar_id":"","url":"https://api.github.com/users/XiaoningLiu","html_url":"https://github.com/XiaoningLiu","followers_url":"https://api.github.com/users/XiaoningLiu/followers","following_url":"https://api.github.com/users/XiaoningLiu/following{/other_user}","gists_url":"https://api.github.com/users/XiaoningLiu/gists{/gist_id}","starred_url":"https://api.github.com/users/XiaoningLiu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/XiaoningLiu/subscriptions","organizations_url":"https://api.github.com/users/XiaoningLiu/orgs","repos_url":"https://api.github.com/users/XiaoningLiu/repos","events_url":"https://api.github.com/users/XiaoningLiu/events{/privacy}","received_events_url":"https://api.github.com/users/XiaoningLiu/received_events","type":"User","site_admin":false},"created_at":"2018-04-27T06:34:29Z","updated_at":"2018-04-27T06:34:29Z","author_association":"COLLABORATOR","body":"Hi @snoopdouglas \r\n\r\n`Query entity` REST API doesn't provide `offset` query parameter. In order to provide `offset` support, Azure Functions need to downloads the whole `M` results and filter `N` results.\r\nhttps://docs.microsoft.com/en-us/rest/api/storageservices/query-entities\r\n\r\nHowever,  `continuationToken` maybe not `safe`. \r\nhttps://stackoverflow.com/questions/21548597/azure-table-storage-continuation-token-lifetime\r\n\r\n>From what I understand about continuation token is that it is a marker which if used in a query against table storage will return next set of results from that marker. If I'm not mistaken, you could keep these tokens as long as you want however there's no guarantee that same results will be returned. For example, if new entities are added or some old entities are deleted then you may get different set of result back. Furthermore, table storage service keeps on rearranging the data. If that happens, even though you have not added/removed any entities you may get different set of result back.\r\n"}}
{"actor":{"display_login":"XiaoningLiu"}}