{"action":"created","comment":{"url":"https://api.github.com/repos/druid-io/druid/pulls/comments/65633595","id":65633595,"diff_hunk":"@@ -327,7 +394,34 @@ public Cursor apply(final Long input)\n                   {\n                     private final Offset initOffset = offset.clone();\n                     private final DateTime myBucket = gran.toDateTime(input);\n-                    private Offset cursorOffset = offset;\n+                    private final CursorOffsetHolder cursorOffsetHolder = new CursorOffsetHolder();\n+                    {\n+                      cursorOffsetHolder.set(offset);\n+                    }\n+\n+                    private final CursorOffsetHolderValueMatcherFactory valueMatcherFactory;\n+                    private final RowOffsetMatcherFactory rowOffsetMatcherFactory;\n+                    {\n+                      valueMatcherFactory = new CursorOffsetHolderValueMatcherFactory(cursorOffsetHolder, this);","path":"processing/src/main/java/io/druid/segment/QueryableIndexStorageAdapter.java","position":null,"original_position":177,"commit_id":"ad403f6bdc532871e24a69a9e43eb6a497bef3f0","original_commit_id":"d83817544d1673f6cb32ea4f54d2551e03676a1f","user":{"login":"jon-wei","id":8729063,"avatar_url":"https://avatars.githubusercontent.com/u/8729063?v=3","gravatar_id":"","url":"https://api.github.com/users/jon-wei","html_url":"https://github.com/jon-wei","followers_url":"https://api.github.com/users/jon-wei/followers","following_url":"https://api.github.com/users/jon-wei/following{/other_user}","gists_url":"https://api.github.com/users/jon-wei/gists{/gist_id}","starred_url":"https://api.github.com/users/jon-wei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jon-wei/subscriptions","organizations_url":"https://api.github.com/users/jon-wei/orgs","repos_url":"https://api.github.com/users/jon-wei/repos","events_url":"https://api.github.com/users/jon-wei/events{/privacy}","received_events_url":"https://api.github.com/users/jon-wei/received_events","type":"User","site_admin":false},"body":"Moved *MatcherFactory creation to within the postFilter != null block","created_at":"2016-06-02T23:00:09Z","updated_at":"2016-06-02T23:00:09Z","html_url":"https://github.com/druid-io/druid/pull/3018#discussion_r65633595","pull_request_url":"https://api.github.com/repos/druid-io/druid/pulls/3018","_links":{"self":{"href":"https://api.github.com/repos/druid-io/druid/pulls/comments/65633595"},"html":{"href":"https://github.com/druid-io/druid/pull/3018#discussion_r65633595"},"pull_request":{"href":"https://api.github.com/repos/druid-io/druid/pulls/3018"}}},"pull_request":{"url":"https://api.github.com/repos/druid-io/druid/pulls/3018","id":71445735,"html_url":"https://github.com/druid-io/druid/pull/3018","diff_url":"https://github.com/druid-io/druid/pull/3018.diff","patch_url":"https://github.com/druid-io/druid/pull/3018.patch","issue_url":"https://api.github.com/repos/druid-io/druid/issues/3018","number":3018,"state":"open","locked":false,"title":"Two-stage filtering","user":{"login":"jon-wei","id":8729063,"avatar_url":"https://avatars.githubusercontent.com/u/8729063?v=3","gravatar_id":"","url":"https://api.github.com/users/jon-wei","html_url":"https://github.com/jon-wei","followers_url":"https://api.github.com/users/jon-wei/followers","following_url":"https://api.github.com/users/jon-wei/following{/other_user}","gists_url":"https://api.github.com/users/jon-wei/gists{/gist_id}","starred_url":"https://api.github.com/users/jon-wei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jon-wei/subscriptions","organizations_url":"https://api.github.com/users/jon-wei/orgs","repos_url":"https://api.github.com/users/jon-wei/repos","events_url":"https://api.github.com/users/jon-wei/events{/privacy}","received_events_url":"https://api.github.com/users/jon-wei/received_events","type":"User","site_admin":false},"body":"Implements the proposal in https://github.com/druid-io/druid/issues/2742\r\n\r\nThis PR adds support for filtering without bitmap indexes, by adding a new filtering step during Cursor iteration in the QueryableIndexStorageAdapter.\r\n\r\nThe linked proposal contains details about the approach taken, with the exception that filter match result caching is not implemented (can be a later PR).\r\n\r\n-------\r\n\r\nBenchmarks, using the benchmarks in #2875 \r\n\r\nMaster:\r\n```\r\nGroupByBenchmark.queryMultiQueryableIndex                  N/A              4                N/A            100000       N/A           basic.A          N/A  avgt   50   420317.283 ±  9960.026  us/op\r\nGroupByBenchmark.querySingleIncrementalIndex               N/A              4                N/A            100000       N/A           basic.A          N/A  avgt   50   237684.936 ±  4982.999  us/op\r\nGroupByBenchmark.querySingleQueryableIndex                 N/A              4                N/A            100000       N/A           basic.A          N/A  avgt   50   192516.042 ±  1247.105  us/op\r\nSearchBenchmark.queryMultiQueryableIndex                  1000              1                N/A            750000       N/A           basic.A          N/A  avgt   50    18569.254 ±   130.116  us/op\r\nSearchBenchmark.querySingleIncrementalIndex               1000              1                N/A            750000       N/A           basic.A          N/A  avgt   50   252040.937 ±  5094.427  us/op\r\nSearchBenchmark.querySingleQueryableIndex                 1000              1                N/A            750000       N/A           basic.A          N/A  avgt   50    18522.747 ±    96.640  us/op\r\nSelectBenchmark.queryIncrementalIndex                      N/A              1               1000             25000       N/A           basic.A          N/A  avgt   50    59077.585 ±   775.733  us/op\r\nSelectBenchmark.queryMultiQueryableIndex                   N/A              1               1000             25000       N/A           basic.A          N/A  avgt   50    84701.323 ±   591.074  us/op\r\nSelectBenchmark.queryQueryableIndex                        N/A              1               1000             25000       N/A           basic.A          N/A  avgt   50    86754.784 ±   536.997  us/op\r\nTimeseriesBenchmark.queryFilteredSingleQueryableIndex      N/A              1                N/A            750000       N/A           basic.A          N/A  avgt   50    15513.263 ±    34.824  us/op\r\nTimeseriesBenchmark.queryMultiQueryableIndex               N/A              1                N/A            750000       N/A           basic.A          N/A  avgt   50   141221.807 ±   922.429  us/op\r\nTimeseriesBenchmark.querySingleIncrementalIndex            N/A              1                N/A            750000       N/A           basic.A          N/A  avgt   50  1491135.435 ± 16168.599  us/op\r\nTimeseriesBenchmark.querySingleQueryableIndex              N/A              1                N/A            750000       N/A           basic.A          N/A  avgt   50   142651.506 ±   734.796  us/op\r\nTopNBenchmark.queryMultiQueryableIndex                     N/A              1                N/A            750000       N/A           basic.A           10  avgt   50   183568.518 ±   929.395  us/op\r\nTopNBenchmark.querySingleIncrementalIndex                  N/A              1                N/A            750000       N/A           basic.A           10  avgt   50  1459638.382 ± 27925.835  us/op\r\nTopNBenchmark.querySingleQueryableIndex                    N/A              1                N/A            750000       N/A           basic.A           10  avgt   50   177885.035 ±  2059.651  us/op\r\n```\r\n\r\nPatch:\r\n```\r\nGroupByBenchmark.queryMultiQueryableIndex                  N/A              4                N/A            100000       N/A           basic.A          N/A  avgt   50   420551.348 ± 11068.949  us/op\r\nGroupByBenchmark.querySingleIncrementalIndex               N/A              4                N/A            100000       N/A           basic.A          N/A  avgt   50   236782.135 ±  3202.881  us/op\r\nGroupByBenchmark.querySingleQueryableIndex                 N/A              4                N/A            100000       N/A           basic.A          N/A  avgt   50   189351.535 ±  1380.639  us/op\r\nSearchBenchmark.queryMultiQueryableIndex                  1000              1                N/A            750000       N/A           basic.A          N/A  avgt   50    18736.458 ±   105.849  us/op\r\nSearchBenchmark.querySingleIncrementalIndex               1000              1                N/A            750000       N/A           basic.A          N/A  avgt   50   264567.899 ± 10273.822  us/op\r\nSearchBenchmark.querySingleQueryableIndex                 1000              1                N/A            750000       N/A           basic.A          N/A  avgt   50    19094.593 ±   106.586  us/op\r\nSelectBenchmark.queryIncrementalIndex                      N/A              1               1000             25000       N/A           basic.A          N/A  avgt   50    58308.211 ±   701.460  us/op\r\nSelectBenchmark.queryMultiQueryableIndex                   N/A              1               1000             25000       N/A           basic.A          N/A  avgt   50    92289.845 ±   554.533  us/op\r\nSelectBenchmark.queryQueryableIndex                        N/A              1               1000             25000       N/A           basic.A          N/A  avgt   50    90106.811 ±  1279.810  us/op\r\nTimeseriesBenchmark.queryFilteredSingleQueryableIndex      N/A              1                N/A            750000       N/A           basic.A          N/A  avgt   50    15630.082 ±    44.293  us/op\r\nTimeseriesBenchmark.queryMultiQueryableIndex               N/A              1                N/A            750000       N/A           basic.A          N/A  avgt   50   147457.735 ±   809.870  us/op\r\nTimeseriesBenchmark.querySingleIncrementalIndex            N/A              1                N/A            750000       N/A           basic.A          N/A  avgt   50  1501032.924 ± 17434.899  us/op\r\nTimeseriesBenchmark.querySingleQueryableIndex              N/A              1                N/A            750000       N/A           basic.A          N/A  avgt   50   146991.206 ±   730.135  us/op\r\nTopNBenchmark.queryMultiQueryableIndex                     N/A              1                N/A            750000       N/A           basic.A           10  avgt   50   182814.804 ±   886.252  us/op\r\nTopNBenchmark.querySingleIncrementalIndex                  N/A              1                N/A            750000       N/A           basic.A           10  avgt   50  1452732.920 ± 22950.601  us/op\r\nTopNBenchmark.querySingleQueryableIndex                    N/A              1                N/A            750000       N/A           basic.A           10  avgt   50   177240.105 ±  1274.023  us/op\r\n```\r\n\r\nBenchmark that reads 750,000 rows with no filter from a QueryableIndexStorageAdapter:\r\nMaster\r\n```\r\nFilterPartitionBenchmark.read                              N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50    87098.678 ±  2167.394  us/op\r\n```\r\n\r\nPatch:\r\n```\r\nFilterPartitionBenchmark.read                              N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50    86685.989 ±  2527.736  us/op\r\n```\r\n\r\nBenchmark that applies a single selector filter to a 750,000 row segment:\r\nMaster\r\n```\r\nFilterPartitionBenchmark.readWithPreFilter                 N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50     5713.381 ±     6.405  us/op\r\n```\r\nPatch\r\n```\r\nFilterPartitionBenchmark.readWithPreFilter                 N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50     5998.602 ±   567.914  us/op\r\n```\r\n\r\n\r\nBenchmark only applicable to this patch, using:\r\nhttps://github.com/jon-wei/druid/blob/twostage_filter_bench2/benchmarks/src/main/java/io/druid/benchmark/FilterPartitionBenchmark.java\r\n\r\n```\r\nBenchmark                                              (limit)  (numSegments)  (pagingThreshold)  (rowsPerSegment)  (schema)  (schemaAndQuery)  (threshold)  Mode  Cnt        Score       Error  Units\r\nFilterPartitionBenchmark.read                              N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50    86685.989 ±  2527.736  us/op\r\nFilterPartitionBenchmark.readComplexOrFilter               N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50   146191.670 ±  4729.374  us/op\r\nFilterPartitionBenchmark.readComplexOrFilterCNF            N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50   311313.464 ±  8236.178  us/op\r\nFilterPartitionBenchmark.readOrFilter                      N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50    55773.384 ±  1535.890  us/op\r\nFilterPartitionBenchmark.readOrFilterCNF                   N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50    56118.700 ±  1776.188  us/op\r\nFilterPartitionBenchmark.readWithExFnPostFilter            N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50   157097.469 ±   924.321  us/op\r\nFilterPartitionBenchmark.readWithExFnPreFilter             N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50     6164.133 ±   168.969  us/op\r\nFilterPartitionBenchmark.readWithPostFilter                N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50    20585.535 ±   691.102  us/op\r\nFilterPartitionBenchmark.readWithPreFilter                 N/A            N/A                N/A            750000     basic               N/A          N/A  avgt   50     5998.602 ±   567.914  us/op\r\n```","created_at":"2016-05-25T19:05:04Z","updated_at":"2016-06-02T23:00:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d8294884c3a478a51a81d324429f5d307290c49f","assignee":null,"milestone":{"url":"https://api.github.com/repos/druid-io/druid/milestones/20","html_url":"https://github.com/druid-io/druid/milestones/0.9.2","labels_url":"https://api.github.com/repos/druid-io/druid/milestones/20/labels","id":1571409,"number":20,"title":"0.9.2","description":"","creator":{"login":"fjy","id":428325,"avatar_url":"https://avatars.githubusercontent.com/u/428325?v=3","gravatar_id":"","url":"https://api.github.com/users/fjy","html_url":"https://github.com/fjy","followers_url":"https://api.github.com/users/fjy/followers","following_url":"https://api.github.com/users/fjy/following{/other_user}","gists_url":"https://api.github.com/users/fjy/gists{/gist_id}","starred_url":"https://api.github.com/users/fjy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fjy/subscriptions","organizations_url":"https://api.github.com/users/fjy/orgs","repos_url":"https://api.github.com/users/fjy/repos","events_url":"https://api.github.com/users/fjy/events{/privacy}","received_events_url":"https://api.github.com/users/fjy/received_events","type":"User","site_admin":false},"open_issues":31,"closed_issues":9,"state":"open","created_at":"2016-02-08T22:01:21Z","updated_at":"2016-06-02T17:09:21Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/druid-io/druid/pulls/3018/commits","review_comments_url":"https://api.github.com/repos/druid-io/druid/pulls/3018/comments","review_comment_url":"https://api.github.com/repos/druid-io/druid/pulls/comments{/number}","comments_url":"https://api.github.com/repos/druid-io/druid/issues/3018/comments","statuses_url":"https://api.github.com/repos/druid-io/druid/statuses/ad403f6bdc532871e24a69a9e43eb6a497bef3f0","head":{"label":"jon-wei:twostage_filter","ref":"twostage_filter","sha":"ad403f6bdc532871e24a69a9e43eb6a497bef3f0","user":{"login":"jon-wei","id":8729063,"avatar_url":"https://avatars.githubusercontent.com/u/8729063?v=3","gravatar_id":"","url":"https://api.github.com/users/jon-wei","html_url":"https://github.com/jon-wei","followers_url":"https://api.github.com/users/jon-wei/followers","following_url":"https://api.github.com/users/jon-wei/following{/other_user}","gists_url":"https://api.github.com/users/jon-wei/gists{/gist_id}","starred_url":"https://api.github.com/users/jon-wei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jon-wei/subscriptions","organizations_url":"https://api.github.com/users/jon-wei/orgs","repos_url":"https://api.github.com/users/jon-wei/repos","events_url":"https://api.github.com/users/jon-wei/events{/privacy}","received_events_url":"https://api.github.com/users/jon-wei/received_events","type":"User","site_admin":false},"repo":{"id":41450391,"name":"druid","full_name":"jon-wei/druid","owner":{"login":"jon-wei","id":8729063,"avatar_url":"https://avatars.githubusercontent.com/u/8729063?v=3","gravatar_id":"","url":"https://api.github.com/users/jon-wei","html_url":"https://github.com/jon-wei","followers_url":"https://api.github.com/users/jon-wei/followers","following_url":"https://api.github.com/users/jon-wei/following{/other_user}","gists_url":"https://api.github.com/users/jon-wei/gists{/gist_id}","starred_url":"https://api.github.com/users/jon-wei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jon-wei/subscriptions","organizations_url":"https://api.github.com/users/jon-wei/orgs","repos_url":"https://api.github.com/users/jon-wei/repos","events_url":"https://api.github.com/users/jon-wei/events{/privacy}","received_events_url":"https://api.github.com/users/jon-wei/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jon-wei/druid","description":"Column oriented distributed data store ideal for powering interactive applications","fork":true,"url":"https://api.github.com/repos/jon-wei/druid","forks_url":"https://api.github.com/repos/jon-wei/druid/forks","keys_url":"https://api.github.com/repos/jon-wei/druid/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jon-wei/druid/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jon-wei/druid/teams","hooks_url":"https://api.github.com/repos/jon-wei/druid/hooks","issue_events_url":"https://api.github.com/repos/jon-wei/druid/issues/events{/number}","events_url":"https://api.github.com/repos/jon-wei/druid/events","assignees_url":"https://api.github.com/repos/jon-wei/druid/assignees{/user}","branches_url":"https://api.github.com/repos/jon-wei/druid/branches{/branch}","tags_url":"https://api.github.com/repos/jon-wei/druid/tags","blobs_url":"https://api.github.com/repos/jon-wei/druid/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jon-wei/druid/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jon-wei/druid/git/refs{/sha}","trees_url":"https://api.github.com/repos/jon-wei/druid/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jon-wei/druid/statuses/{sha}","languages_url":"https://api.github.com/repos/jon-wei/druid/languages","stargazers_url":"https://api.github.com/repos/jon-wei/druid/stargazers","contributors_url":"https://api.github.com/repos/jon-wei/druid/contributors","subscribers_url":"https://api.github.com/repos/jon-wei/druid/subscribers","subscription_url":"https://api.github.com/repos/jon-wei/druid/subscription","commits_url":"https://api.github.com/repos/jon-wei/druid/commits{/sha}","git_commits_url":"https://api.github.com/repos/jon-wei/druid/git/commits{/sha}","comments_url":"https://api.github.com/repos/jon-wei/druid/comments{/number}","issue_comment_url":"https://api.github.com/repos/jon-wei/druid/issues/comments{/number}","contents_url":"https://api.github.com/repos/jon-wei/druid/contents/{+path}","compare_url":"https://api.github.com/repos/jon-wei/druid/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jon-wei/druid/merges","archive_url":"https://api.github.com/repos/jon-wei/druid/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jon-wei/druid/downloads","issues_url":"https://api.github.com/repos/jon-wei/druid/issues{/number}","pulls_url":"https://api.github.com/repos/jon-wei/druid/pulls{/number}","milestones_url":"https://api.github.com/repos/jon-wei/druid/milestones{/number}","notifications_url":"https://api.github.com/repos/jon-wei/druid/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jon-wei/druid/labels{/name}","releases_url":"https://api.github.com/repos/jon-wei/druid/releases{/id}","deployments_url":"https://api.github.com/repos/jon-wei/druid/deployments","created_at":"2015-08-26T21:18:05Z","updated_at":"2016-01-12T02:23:00Z","pushed_at":"2016-06-02T22:10:41Z","git_url":"git://github.com/jon-wei/druid.git","ssh_url":"git@github.com:jon-wei/druid.git","clone_url":"https://github.com/jon-wei/druid.git","svn_url":"https://github.com/jon-wei/druid","homepage":"http://druid.io","size":107872,"stargazers_count":0,"watchers_count":0,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"druid-io:master","ref":"master","sha":"474286bbce500cf7195919396128a752acc7704a","user":{"login":"druid-io","id":4203474,"avatar_url":"https://avatars.githubusercontent.com/u/4203474?v=3","gravatar_id":"","url":"https://api.github.com/users/druid-io","html_url":"https://github.com/druid-io","followers_url":"https://api.github.com/users/druid-io/followers","following_url":"https://api.github.com/users/druid-io/following{/other_user}","gists_url":"https://api.github.com/users/druid-io/gists{/gist_id}","starred_url":"https://api.github.com/users/druid-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/druid-io/subscriptions","organizations_url":"https://api.github.com/users/druid-io/orgs","repos_url":"https://api.github.com/users/druid-io/repos","events_url":"https://api.github.com/users/druid-io/events{/privacy}","received_events_url":"https://api.github.com/users/druid-io/received_events","type":"Organization","site_admin":false},"repo":{"id":6358188,"name":"druid","full_name":"druid-io/druid","owner":{"login":"druid-io","id":4203474,"avatar_url":"https://avatars.githubusercontent.com/u/4203474?v=3","gravatar_id":"","url":"https://api.github.com/users/druid-io","html_url":"https://github.com/druid-io","followers_url":"https://api.github.com/users/druid-io/followers","following_url":"https://api.github.com/users/druid-io/following{/other_user}","gists_url":"https://api.github.com/users/druid-io/gists{/gist_id}","starred_url":"https://api.github.com/users/druid-io/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/druid-io/subscriptions","organizations_url":"https://api.github.com/users/druid-io/orgs","repos_url":"https://api.github.com/users/druid-io/repos","events_url":"https://api.github.com/users/druid-io/events{/privacy}","received_events_url":"https://api.github.com/users/druid-io/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/druid-io/druid","description":"Column oriented distributed data store ideal for powering interactive applications","fork":false,"url":"https://api.github.com/repos/druid-io/druid","forks_url":"https://api.github.com/repos/druid-io/druid/forks","keys_url":"https://api.github.com/repos/druid-io/druid/keys{/key_id}","collaborators_url":"https://api.github.com/repos/druid-io/druid/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/druid-io/druid/teams","hooks_url":"https://api.github.com/repos/druid-io/druid/hooks","issue_events_url":"https://api.github.com/repos/druid-io/druid/issues/events{/number}","events_url":"https://api.github.com/repos/druid-io/druid/events","assignees_url":"https://api.github.com/repos/druid-io/druid/assignees{/user}","branches_url":"https://api.github.com/repos/druid-io/druid/branches{/branch}","tags_url":"https://api.github.com/repos/druid-io/druid/tags","blobs_url":"https://api.github.com/repos/druid-io/druid/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/druid-io/druid/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/druid-io/druid/git/refs{/sha}","trees_url":"https://api.github.com/repos/druid-io/druid/git/trees{/sha}","statuses_url":"https://api.github.com/repos/druid-io/druid/statuses/{sha}","languages_url":"https://api.github.com/repos/druid-io/druid/languages","stargazers_url":"https://api.github.com/repos/druid-io/druid/stargazers","contributors_url":"https://api.github.com/repos/druid-io/druid/contributors","subscribers_url":"https://api.github.com/repos/druid-io/druid/subscribers","subscription_url":"https://api.github.com/repos/druid-io/druid/subscription","commits_url":"https://api.github.com/repos/druid-io/druid/commits{/sha}","git_commits_url":"https://api.github.com/repos/druid-io/druid/git/commits{/sha}","comments_url":"https://api.github.com/repos/druid-io/druid/comments{/number}","issue_comment_url":"https://api.github.com/repos/druid-io/druid/issues/comments{/number}","contents_url":"https://api.github.com/repos/druid-io/druid/contents/{+path}","compare_url":"https://api.github.com/repos/druid-io/druid/compare/{base}...{head}","merges_url":"https://api.github.com/repos/druid-io/druid/merges","archive_url":"https://api.github.com/repos/druid-io/druid/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/druid-io/druid/downloads","issues_url":"https://api.github.com/repos/druid-io/druid/issues{/number}","pulls_url":"https://api.github.com/repos/druid-io/druid/pulls{/number}","milestones_url":"https://api.github.com/repos/druid-io/druid/milestones{/number}","notifications_url":"https://api.github.com/repos/druid-io/druid/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/druid-io/druid/labels{/name}","releases_url":"https://api.github.com/repos/druid-io/druid/releases{/id}","deployments_url":"https://api.github.com/repos/druid-io/druid/deployments","created_at":"2012-10-23T19:08:07Z","updated_at":"2016-06-02T10:19:53Z","pushed_at":"2016-06-02T22:34:29Z","git_url":"git://github.com/druid-io/druid.git","ssh_url":"git@github.com:druid-io/druid.git","clone_url":"https://github.com/druid-io/druid.git","svn_url":"https://github.com/druid-io/druid","homepage":"http://druid.io","size":130840,"stargazers_count":3293,"watchers_count":3293,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":734,"mirror_url":null,"open_issues_count":452,"forks":734,"open_issues":452,"watchers":3293,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/druid-io/druid/pulls/3018"},"html":{"href":"https://github.com/druid-io/druid/pull/3018"},"issue":{"href":"https://api.github.com/repos/druid-io/druid/issues/3018"},"comments":{"href":"https://api.github.com/repos/druid-io/druid/issues/3018/comments"},"review_comments":{"href":"https://api.github.com/repos/druid-io/druid/pulls/3018/comments"},"review_comment":{"href":"https://api.github.com/repos/druid-io/druid/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/druid-io/druid/pulls/3018/commits"},"statuses":{"href":"https://api.github.com/repos/druid-io/druid/statuses/ad403f6bdc532871e24a69a9e43eb6a497bef3f0"}}}}
{"actor":{"display_login":"jon-wei"}}