{"action":"created","issue":{"url":"https://api.github.com/repos/prestodb/presto/issues/8691","repository_url":"https://api.github.com/repos/prestodb/presto","labels_url":"https://api.github.com/repos/prestodb/presto/issues/8691/labels{/name}","comments_url":"https://api.github.com/repos/prestodb/presto/issues/8691/comments","events_url":"https://api.github.com/repos/prestodb/presto/issues/8691/events","html_url":"https://github.com/prestodb/presto/pull/8691","id":248493855,"number":8691,"title":"Merge tiny pages returned from PageProcessor","user":{"login":"arhimondr","id":5570988,"avatar_url":"https://avatars3.githubusercontent.com/u/5570988?v=4","gravatar_id":"","url":"https://api.github.com/users/arhimondr","html_url":"https://github.com/arhimondr","followers_url":"https://api.github.com/users/arhimondr/followers","following_url":"https://api.github.com/users/arhimondr/following{/other_user}","gists_url":"https://api.github.com/users/arhimondr/gists{/gist_id}","starred_url":"https://api.github.com/users/arhimondr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arhimondr/subscriptions","organizations_url":"https://api.github.com/users/arhimondr/orgs","repos_url":"https://api.github.com/users/arhimondr/repos","events_url":"https://api.github.com/users/arhimondr/events{/privacy}","received_events_url":"https://api.github.com/users/arhimondr/received_events","type":"User","site_admin":false},"labels":[{"id":196992743,"url":"https://api.github.com/repos/prestodb/presto/labels/CLA%20Signed","name":"CLA Signed","color":"ededed","default":false}],"state":"open","locked":false,"assignee":{"login":"cawallin","id":3652644,"avatar_url":"https://avatars3.githubusercontent.com/u/3652644?v=4","gravatar_id":"","url":"https://api.github.com/users/cawallin","html_url":"https://github.com/cawallin","followers_url":"https://api.github.com/users/cawallin/followers","following_url":"https://api.github.com/users/cawallin/following{/other_user}","gists_url":"https://api.github.com/users/cawallin/gists{/gist_id}","starred_url":"https://api.github.com/users/cawallin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cawallin/subscriptions","organizations_url":"https://api.github.com/users/cawallin/orgs","repos_url":"https://api.github.com/users/cawallin/repos","events_url":"https://api.github.com/users/cawallin/events{/privacy}","received_events_url":"https://api.github.com/users/cawallin/received_events","type":"User","site_admin":false},"assignees":[{"login":"cawallin","id":3652644,"avatar_url":"https://avatars3.githubusercontent.com/u/3652644?v=4","gravatar_id":"","url":"https://api.github.com/users/cawallin","html_url":"https://github.com/cawallin","followers_url":"https://api.github.com/users/cawallin/followers","following_url":"https://api.github.com/users/cawallin/following{/other_user}","gists_url":"https://api.github.com/users/cawallin/gists{/gist_id}","starred_url":"https://api.github.com/users/cawallin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cawallin/subscriptions","organizations_url":"https://api.github.com/users/cawallin/orgs","repos_url":"https://api.github.com/users/cawallin/repos","events_url":"https://api.github.com/users/cawallin/events{/privacy}","received_events_url":"https://api.github.com/users/cawallin/received_events","type":"User","site_admin":false}],"milestone":null,"comments":13,"created_at":"2017-08-07T18:31:54Z","updated_at":"2017-08-24T20:56:30Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/prestodb/presto/pulls/8691","html_url":"https://github.com/prestodb/presto/pull/8691","diff_url":"https://github.com/prestodb/presto/pull/8691.diff","patch_url":"https://github.com/prestodb/presto/pull/8691.patch"},"body":"FilterAndProject and ScanFilterAndProject operators may produce\r\ntiny pages (few rows) in case of highly selective filter.\r\n\r\nSuch tiny pages introduce considerable synchronization overhead\r\nin subsequent operators. In particular HashBuilderOperator\r\ndoes memory reservations for every single page. Considering that\r\nmemory manager is all the way synchronized - most of the time spent\r\nby worker thread is just waiting for a lock."},"comment":{"url":"https://api.github.com/repos/prestodb/presto/issues/comments/324755328","html_url":"https://github.com/prestodb/presto/pull/8691#issuecomment-324755328","issue_url":"https://api.github.com/repos/prestodb/presto/issues/8691","id":324755328,"user":{"login":"arhimondr","id":5570988,"avatar_url":"https://avatars3.githubusercontent.com/u/5570988?v=4","gravatar_id":"","url":"https://api.github.com/users/arhimondr","html_url":"https://github.com/arhimondr","followers_url":"https://api.github.com/users/arhimondr/followers","following_url":"https://api.github.com/users/arhimondr/following{/other_user}","gists_url":"https://api.github.com/users/arhimondr/gists{/gist_id}","starred_url":"https://api.github.com/users/arhimondr/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arhimondr/subscriptions","organizations_url":"https://api.github.com/users/arhimondr/orgs","repos_url":"https://api.github.com/users/arhimondr/repos","events_url":"https://api.github.com/users/arhimondr/events{/privacy}","received_events_url":"https://api.github.com/users/arhimondr/received_events","type":"User","site_admin":false},"created_at":"2017-08-24T20:56:30Z","updated_at":"2017-08-24T20:56:30Z","body":"@highker I've noticed a very sneaky side effect. When you call `hasNext` on `PageProcessorOutput` when the `YieldSignal` is set - the next element will be `empty()`. But when you delay the `hasNext` call until the `YieldSignal` is reset - the next element will be a page. I would suggest to drop the `Iterator` interface declaration and change the method names to avoid unnecessary confusions. Although there is no clear convention of how should you implement an iterator - everything what starts with `has*` `is*` and so on suggests that there will be no side effects when calling this method."}}
{"actor":{"display_login":"arhimondr"}}