{"issue":{"milestone":{"title":"0.9.4","created_at":"2011-12-30T02:11:04Z","open_issues":0,"creator":{"login":"dynamobi-build","id":1123017,"url":"https://api.github.com/users/dynamobi-build","avatar_url":"https://secure.gravatar.com/avatar/cb215b3d786be20761071a562a56af64?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"cb215b3d786be20761071a562a56af64"},"state":"closed","due_on":null,"closed_issues":18,"number":8,"description":null,"url":"https://api.github.com/repos/dynamobi/dynamobi/milestones/8"},"title":"[LDB-225] push down count(*) into LcsRowScanExecStream","created_at":"2011-12-30T02:13:04Z","user":{"login":"dynamobi-build","id":1123017,"url":"https://api.github.com/users/dynamobi-build","avatar_url":"https://secure.gravatar.com/avatar/cb215b3d786be20761071a562a56af64?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"cb215b3d786be20761071a562a56af64"},"labels":[{"name":"LCS","url":"https://api.github.com/repos/dynamobi/dynamobi/labels/LCS","color":"a84325"},{"name":"LDB","url":"https://api.github.com/repos/dynamobi/dynamobi/labels/LDB","color":"e2b9bd"}],"updated_at":"2011-12-30T02:13:07Z","state":"closed","id":2685244,"closed_at":"2011-12-30T02:13:05Z","html_url":"https://github.com/dynamobi/dynamobi/issues/98","pull_request":{"patch_url":null,"html_url":null,"diff_url":null},"body":"<b><i>[reporter=\"jvs\", created=\"Sun, 20 Jun 2010 01:34:42 -0500 (GMT-05:00)\"]</i></b>\nI'm working on a somewhat different approach than Rushan in <a href=\"http://jira.eigenbase.org/browse/LDB-196\" title=\"Optimize to aggregate values from compressed column store segments\">LDB-196</a>.\n<br/>\n\n<br/>\nI'm going to implement something which can handle any count(*), with no other aggs, and no GROUP BY, but with WHERE clause allowed.  (And star joins as well if the dimension tables can be completely projected away after bitmap filtering, leaving just a count on the filtered fact table.)\n<br/>\n\n<br/>\nBasically, I'm just doing all the counting inside of the LcsRowScanExecStream, so it only produces one final tuple (the count at the end).  But other than that, it executes in exactly the same way as any other scan, including all of the filtering logic for WHERE clause, deleted rows, etc.\n<br/>\n\n<br/>\nThis is not as optimal as it could be, since it still has to iterate over every row (instead of just summing up RID's).  But it cuts out the expensive unmarshal+marshal required when the counting is done in a separate SortedAggExecStream.  In my prototype test counting 16 million BIGINT rows, this reduced the time from 14 seconds to 3.6 seconds on my laptop, a speedup of almost 4x.\n<br/>\n","number":98,"url":"https://api.github.com/repos/dynamobi/dynamobi/issues/98","comments":2,"assignee":null},"comment":{"created_at":"2011-12-30T02:13:06Z","user":{"login":"dynamobi-build","id":1123017,"url":"https://api.github.com/users/dynamobi-build","avatar_url":"https://secure.gravatar.com/avatar/cb215b3d786be20761071a562a56af64?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"cb215b3d786be20761071a562a56af64"},"updated_at":"2011-12-30T02:13:06Z","id":3308684,"body":"<b><i>[author=\"jvs\", created=\"Sun, 20 Jun 2010 01:39:20 -0500 (GMT-05:00)\"]</i></b>\nPushing down GROUP BY and more optimized counting will require a new ExecStream, to be addressed in a different JIRA issue.\n<br/>\n","url":"https://api.github.com/repos/dynamobi/dynamobi/issues/comments/3308684"},"action":"created"}