{"action":"created","issue":{"url":"https://api.github.com/repos/prestodb/presto/issues/10709","repository_url":"https://api.github.com/repos/prestodb/presto","labels_url":"https://api.github.com/repos/prestodb/presto/issues/10709/labels{/name}","comments_url":"https://api.github.com/repos/prestodb/presto/issues/10709/comments","events_url":"https://api.github.com/repos/prestodb/presto/issues/10709/events","html_url":"https://github.com/prestodb/presto/pull/10709","id":326500591,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkwNTcxMDcz","number":10709,"title":"Add support for NullValueBlock","user":{"login":"Praveen2112","id":8536261,"node_id":"MDQ6VXNlcjg1MzYyNjE=","avatar_url":"https://avatars0.githubusercontent.com/u/8536261?v=4","gravatar_id":"","url":"https://api.github.com/users/Praveen2112","html_url":"https://github.com/Praveen2112","followers_url":"https://api.github.com/users/Praveen2112/followers","following_url":"https://api.github.com/users/Praveen2112/following{/other_user}","gists_url":"https://api.github.com/users/Praveen2112/gists{/gist_id}","starred_url":"https://api.github.com/users/Praveen2112/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Praveen2112/subscriptions","organizations_url":"https://api.github.com/users/Praveen2112/orgs","repos_url":"https://api.github.com/users/Praveen2112/repos","events_url":"https://api.github.com/users/Praveen2112/events{/privacy}","received_events_url":"https://api.github.com/users/Praveen2112/received_events","type":"User","site_admin":false},"labels":[{"id":196992743,"node_id":"MDU6TGFiZWwxOTY5OTI3NDM=","url":"https://api.github.com/repos/prestodb/presto/labels/CLA%20Signed","name":"CLA Signed","color":"ededed","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2018-05-25T12:19:11Z","updated_at":"2018-06-05T18:06:16Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/prestodb/presto/pulls/10709","html_url":"https://github.com/prestodb/presto/pull/10709","diff_url":"https://github.com/prestodb/presto/pull/10709.diff","patch_url":"https://github.com/prestodb/presto/pull/10709.patch"},"body":"We have created a NullValueBlock which effectively represents a block in which **all the entries are null**. If we have a LongArrayBlock of size 7168 in which all the entries are null, we have a long array of same size which we don't require.  When such type of blocks are replaced with a NullValueBlock (which maintains only the positionCount) we can reduce the memory consumed by those blocks. Serialization/DeSerialization of the NullValueblocks are also simple as we use only the positionCount. In future we can also add tweak the project and filter operators when working on the NullValueBlocks(Similar to RunLengthEncodedBlock and DictionaryBlock)."},"comment":{"url":"https://api.github.com/repos/prestodb/presto/issues/comments/394806047","html_url":"https://github.com/prestodb/presto/pull/10709#issuecomment-394806047","issue_url":"https://api.github.com/repos/prestodb/presto/issues/10709","id":394806047,"node_id":"MDEyOklzc3VlQ29tbWVudDM5NDgwNjA0Nw==","user":{"login":"haozhun","id":2020503,"node_id":"MDQ6VXNlcjIwMjA1MDM=","avatar_url":"https://avatars3.githubusercontent.com/u/2020503?v=4","gravatar_id":"","url":"https://api.github.com/users/haozhun","html_url":"https://github.com/haozhun","followers_url":"https://api.github.com/users/haozhun/followers","following_url":"https://api.github.com/users/haozhun/following{/other_user}","gists_url":"https://api.github.com/users/haozhun/gists{/gist_id}","starred_url":"https://api.github.com/users/haozhun/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haozhun/subscriptions","organizations_url":"https://api.github.com/users/haozhun/orgs","repos_url":"https://api.github.com/users/haozhun/repos","events_url":"https://api.github.com/users/haozhun/events{/privacy}","received_events_url":"https://api.github.com/users/haozhun/received_events","type":"User","site_admin":false},"created_at":"2018-06-05T18:06:16Z","updated_at":"2018-06-05T18:06:16Z","author_association":"CONTRIBUTOR","body":"Why is RunLengthEncodedBlock not sufficient for your use case?"}}
{"actor":{"display_login":"haozhun"}}