{"action":"created","comment":{"url":"https://api.github.com/repos/influxdata/influxdb/pulls/comments/84345025","pull_request_review_id":5128898,"id":84345025,"diff_hunk":"@@ -1235,6 +1235,71 @@ func (s *SelectStatement) RewriteFields(ic IteratorCreator) (*SelectStatement, e\n \treturn other, nil\n }\n \n+var (\n+\t// Exactly matches ^foo$ or ^$\n+\texactMatchRegex = regexp.MustCompile(`^\\^.*\\$$`)\n+)\n+\n+// RewriteRegexExprs rewrites regex conditions to make beter use of the database\n+// index.\n+//\n+// Conditions that can currently be simplified are:\n+//\n+//     - host ~= /^foo$/ becomes host = 'foo'\n+//     - host ~! /^foo$/ becomes host != 'foo'\n+//\n+// Note: If a backslash (\\) is detected in the condition's value, then the\n+// regex will *not* be rewritten. In order to support rewriting regexes with\n+// escaped characters we need to write a parser, rather than try to match with\n+// a regex.\n+func (s *SelectStatement) RewriteRegexConditions() {\n+\ts.Condition = RewriteExpr(s.Condition, func(e Expr) Expr {\n+\t\tbe, ok := e.(*BinaryExpr)\n+\t\tif !ok || (be.Op != EQREGEX && be.Op != NEQREGEX) {\n+\t\t\t// This expression is not a binary condition or doesn't have a\n+\t\t\t// regex based operator.\n+\t\t\treturn e\n+\t\t}\n+\n+\t\t// Handle regex-based condition.\n+\t\tvar matched bool\n+\t\tdefer func() {\n+\t\t\t// If we rewrote a regex then we'll need to update the condition's\n+\t\t\t// operator.\n+\t\t\tif !matched {\n+\t\t\t\treturn\n+\t\t\t}\n+\t\t\tswitch be.Op {","path":"influxql/ast.go","position":38,"original_position":38,"commit_id":"91f8257b22467ac196f4b67157d6adf68da96197","original_commit_id":"3d82e13206d6c622616ab3e67cb96d45532cadb5","user":{"login":"stevenh","id":104239,"avatar_url":"https://avatars.githubusercontent.com/u/104239?v=3","gravatar_id":"","url":"https://api.github.com/users/stevenh","html_url":"https://github.com/stevenh","followers_url":"https://api.github.com/users/stevenh/followers","following_url":"https://api.github.com/users/stevenh/following{/other_user}","gists_url":"https://api.github.com/users/stevenh/gists{/gist_id}","starred_url":"https://api.github.com/users/stevenh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/stevenh/subscriptions","organizations_url":"https://api.github.com/users/stevenh/orgs","repos_url":"https://api.github.com/users/stevenh/repos","events_url":"https://api.github.com/users/stevenh/events{/privacy}","received_events_url":"https://api.github.com/users/stevenh/received_events","type":"User","site_admin":false},"body":"This can be optimised to:\r\n```golang\r\nif be.Op == EQREGEX {\r\n   be.op = EQ\r\n} else {\r\n   be.op = NEQ\r\n}","created_at":"2016-10-20T18:17:47Z","updated_at":"2016-10-20T18:17:47Z","html_url":"https://github.com/influxdata/influxdb/pull/7495#discussion_r84345025","pull_request_url":"https://api.github.com/repos/influxdata/influxdb/pulls/7495","_links":{"self":{"href":"https://api.github.com/repos/influxdata/influxdb/pulls/comments/84345025"},"html":{"href":"https://github.com/influxdata/influxdb/pull/7495#discussion_r84345025"},"pull_request":{"href":"https://api.github.com/repos/influxdata/influxdb/pulls/7495"}}},"pull_request":{"url":"https://api.github.com/repos/influxdata/influxdb/pulls/7495","id":90238537,"html_url":"https://github.com/influxdata/influxdb/pull/7495","diff_url":"https://github.com/influxdata/influxdb/pull/7495.diff","patch_url":"https://github.com/influxdata/influxdb/pull/7495.patch","issue_url":"https://api.github.com/repos/influxdata/influxdb/issues/7495","number":7495,"state":"open","locked":false,"title":"Rewrite some regex conditions to use index-compatible conditions","user":{"login":"e-dard","id":501993,"avatar_url":"https://avatars.githubusercontent.com/u/501993?v=3","gravatar_id":"","url":"https://api.github.com/users/e-dard","html_url":"https://github.com/e-dard","followers_url":"https://api.github.com/users/e-dard/followers","following_url":"https://api.github.com/users/e-dard/following{/other_user}","gists_url":"https://api.github.com/users/e-dard/gists{/gist_id}","starred_url":"https://api.github.com/users/e-dard/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/e-dard/subscriptions","organizations_url":"https://api.github.com/users/e-dard/orgs","repos_url":"https://api.github.com/users/e-dard/repos","events_url":"https://api.github.com/users/e-dard/events{/privacy}","received_events_url":"https://api.github.com/users/e-dard/received_events","type":"User","site_admin":false},"body":"###### Required for all non-trivial PRs\r\n- [x] Rebased/mergable\r\n- [x] Tests pass\r\n- [x] CHANGELOG.md updated\r\n\r\nFixes #7486.\r\n\r\nThis PR adds support for replacing regexes with non-regex conditions\r\nwhen possible. Currently the following regexes are supported:\r\n\r\n - `host =~ /^server1$/` will be converted into `host = 'server1'`\r\n - `host !~ /^server1$/` will be converted into `host != 'server1'`\r\n\r\n*Note*: if the regex expression contains one or more backslashes, then rewriting will\r\nnot take place. For example, the condition: `name =~ /^Ma\\$e$/` will not\r\nbe rewritten to `name = 'Ma$e'`. Support for this may arrive in the\r\nfuture.\r\n\r\nRegexes that can be converted into simpler expression will be able to\r\ntake advantage of the tsdb index, making them significantly faster.\r\n\r\n#### Benchmarks\r\n\r\nThe following benchmarks run a query along the lines of:\r\n \r\n```\r\nSELECT count(value) FROM cpu WHERE host = 'server1'\r\n``` \r\n\r\nfor the non-regex ones, and: \r\n\r\n```\r\nSELECT count(value) FROM cpu WHERE host =~ /^server1$/\r\n```\r\n\r\n for the regex ones.\r\n\r\n`master` 6fd74a6a\r\n\r\n```\r\nBenchmarkServer_Query_Count_Where_500-4          \t    1000\t   1392067 ns/op\t  909527 B/op\t     572 allocs/op\r\nBenchmarkServer_Query_Count_Where_1K-4           \t    1000\t   1349177 ns/op\t  909332 B/op\t     571 allocs/op\r\nBenchmarkServer_Query_Count_Where_10K-4          \t    1000\t   1564794 ns/op\t  908493 B/op\t     569 allocs/op\r\nBenchmarkServer_Query_Count_Where_100K-4         \t    1000\t   2161792 ns/op\t  906965 B/op\t     566 allocs/op\r\nBenchmarkServer_Query_Count_Where_Regex_500-4    \t     100\t  21228299 ns/op\t 1717204 B/op\t     642 allocs/op\r\nBenchmarkServer_Query_Count_Where_Regex_1K-4     \t     100\t  22877996 ns/op\t 1717317 B/op\t     642 allocs/op\r\nBenchmarkServer_Query_Count_Where_Regex_10K-4    \t      50\t  20535616 ns/op\t 1717303 B/op\t     642 allocs/op\r\nBenchmarkServer_Query_Count_Where_Regex_100K-4   \t     100\t  18272231 ns/op\t 1717068 B/op\t     641 allocs/op\r\nPASS\r\nok  \tgithub.com/influxdata/influxdb/cmd/influxd/run\t21.132s\r\n```\r\n\r\nThis PR produces the following results:\r\n\r\n```\r\nBenchmarkServer_Query_Count_Where_500-4          \t    1000\t   1272334 ns/op\t  909657 B/op\t     572 allocs/op\r\nBenchmarkServer_Query_Count_Where_1K-4           \t    1000\t   1316998 ns/op\t  909420 B/op\t     571 allocs/op\r\nBenchmarkServer_Query_Count_Where_10K-4          \t    1000\t   1770097 ns/op\t  908471 B/op\t     569 allocs/op\r\nBenchmarkServer_Query_Count_Where_100K-4         \t    1000\t   2368152 ns/op\t  906952 B/op\t     566 allocs/op\r\nBenchmarkServer_Query_Count_Where_Regex_500-4    \t    1000\t   2053715 ns/op\t  913136 B/op\t     635 allocs/op\r\nBenchmarkServer_Query_Count_Where_Regex_1K-4     \t    1000\t   2823591 ns/op\t  913161 B/op\t     635 allocs/op\r\nBenchmarkServer_Query_Count_Where_Regex_10K-4    \t     500\t   2273258 ns/op\t  913110 B/op\t     635 allocs/op\r\nBenchmarkServer_Query_Count_Where_Regex_100K-4   \t    1000\t   2327778 ns/op\t  913072 B/op\t     635 allocs/op\r\nPASS\r\nok  \tgithub.com/influxdata/influxdb/cmd/influxd/run\t24.178s\r\n```\r\n\r\nSo you can see that the regexes have been rewritten and are now effectively running the same benchmarks.\r\n\r\n##### Ratings repo\r\n\r\nA real world query on the [ratings](github.com/jwilder/ratings) dataset:\r\n\r\n`1.0.2`\r\n```\r\n⇒  time influx -database ML1M -execute \"SELECT mean(rating) FROM movielens WHERE userid =~ /^48$/\"\r\nname: movielens\r\n---------------\r\ntime\tmean\r\n0\t3.068561872909699\r\n\r\ninflux -database ML1M -execute   0.00s user 0.01s system 0% cpu 1.945 total\r\n```\r\n\r\n`PR`\r\n```\r\n⇒  time influx -database ML1M -execute \"SELECT mean(rating) FROM movielens WHERE userid =~ /^48$/\"\r\nname: movielens\r\n---------------\r\ntime\tmean\r\n0\t3.068561872909699\r\n\r\ninflux -database ML1M -execute   0.00s user 0.01s system 0% cpu 1.399 total\r\n```\r\n\r\n@jwilder @jsternberg ","created_at":"2016-10-20T16:45:49Z","updated_at":"2016-10-20T18:20:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e5f3e36bc46fa3c7a48bd951445e60580283c5bd","assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/influxdata/influxdb/milestones/56","html_url":"https://github.com/influxdata/influxdb/milestones/1.1.0","labels_url":"https://api.github.com/repos/influxdata/influxdb/milestones/56/labels","id":1807337,"number":56,"title":"1.1.0","description":"Point release to come 2 months after 1.0","creator":{"login":"pauldix","id":4331,"avatar_url":"https://avatars.githubusercontent.com/u/4331?v=3","gravatar_id":"","url":"https://api.github.com/users/pauldix","html_url":"https://github.com/pauldix","followers_url":"https://api.github.com/users/pauldix/followers","following_url":"https://api.github.com/users/pauldix/following{/other_user}","gists_url":"https://api.github.com/users/pauldix/gists{/gist_id}","starred_url":"https://api.github.com/users/pauldix/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pauldix/subscriptions","organizations_url":"https://api.github.com/users/pauldix/orgs","repos_url":"https://api.github.com/users/pauldix/repos","events_url":"https://api.github.com/users/pauldix/events{/privacy}","received_events_url":"https://api.github.com/users/pauldix/received_events","type":"User","site_admin":false},"open_issues":11,"closed_issues":65,"state":"open","created_at":"2016-06-03T14:53:39Z","updated_at":"2016-10-20T18:15:16Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/influxdata/influxdb/pulls/7495/commits","review_comments_url":"https://api.github.com/repos/influxdata/influxdb/pulls/7495/comments","review_comment_url":"https://api.github.com/repos/influxdata/influxdb/pulls/comments{/number}","comments_url":"https://api.github.com/repos/influxdata/influxdb/issues/7495/comments","statuses_url":"https://api.github.com/repos/influxdata/influxdb/statuses/91f8257b22467ac196f4b67157d6adf68da96197","head":{"label":"influxdata:er-reg-match","ref":"er-reg-match","sha":"91f8257b22467ac196f4b67157d6adf68da96197","user":{"login":"influxdata","id":5713248,"avatar_url":"https://avatars.githubusercontent.com/u/5713248?v=3","gravatar_id":"","url":"https://api.github.com/users/influxdata","html_url":"https://github.com/influxdata","followers_url":"https://api.github.com/users/influxdata/followers","following_url":"https://api.github.com/users/influxdata/following{/other_user}","gists_url":"https://api.github.com/users/influxdata/gists{/gist_id}","starred_url":"https://api.github.com/users/influxdata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/influxdata/subscriptions","organizations_url":"https://api.github.com/users/influxdata/orgs","repos_url":"https://api.github.com/users/influxdata/repos","events_url":"https://api.github.com/users/influxdata/events{/privacy}","received_events_url":"https://api.github.com/users/influxdata/received_events","type":"Organization","site_admin":false},"repo":{"id":13124802,"name":"influxdb","full_name":"influxdata/influxdb","owner":{"login":"influxdata","id":5713248,"avatar_url":"https://avatars.githubusercontent.com/u/5713248?v=3","gravatar_id":"","url":"https://api.github.com/users/influxdata","html_url":"https://github.com/influxdata","followers_url":"https://api.github.com/users/influxdata/followers","following_url":"https://api.github.com/users/influxdata/following{/other_user}","gists_url":"https://api.github.com/users/influxdata/gists{/gist_id}","starred_url":"https://api.github.com/users/influxdata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/influxdata/subscriptions","organizations_url":"https://api.github.com/users/influxdata/orgs","repos_url":"https://api.github.com/users/influxdata/repos","events_url":"https://api.github.com/users/influxdata/events{/privacy}","received_events_url":"https://api.github.com/users/influxdata/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/influxdata/influxdb","description":"Scalable datastore for metrics, events, and real-time analytics","fork":false,"url":"https://api.github.com/repos/influxdata/influxdb","forks_url":"https://api.github.com/repos/influxdata/influxdb/forks","keys_url":"https://api.github.com/repos/influxdata/influxdb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/influxdata/influxdb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/influxdata/influxdb/teams","hooks_url":"https://api.github.com/repos/influxdata/influxdb/hooks","issue_events_url":"https://api.github.com/repos/influxdata/influxdb/issues/events{/number}","events_url":"https://api.github.com/repos/influxdata/influxdb/events","assignees_url":"https://api.github.com/repos/influxdata/influxdb/assignees{/user}","branches_url":"https://api.github.com/repos/influxdata/influxdb/branches{/branch}","tags_url":"https://api.github.com/repos/influxdata/influxdb/tags","blobs_url":"https://api.github.com/repos/influxdata/influxdb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/influxdata/influxdb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/influxdata/influxdb/git/refs{/sha}","trees_url":"https://api.github.com/repos/influxdata/influxdb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/influxdata/influxdb/statuses/{sha}","languages_url":"https://api.github.com/repos/influxdata/influxdb/languages","stargazers_url":"https://api.github.com/repos/influxdata/influxdb/stargazers","contributors_url":"https://api.github.com/repos/influxdata/influxdb/contributors","subscribers_url":"https://api.github.com/repos/influxdata/influxdb/subscribers","subscription_url":"https://api.github.com/repos/influxdata/influxdb/subscription","commits_url":"https://api.github.com/repos/influxdata/influxdb/commits{/sha}","git_commits_url":"https://api.github.com/repos/influxdata/influxdb/git/commits{/sha}","comments_url":"https://api.github.com/repos/influxdata/influxdb/comments{/number}","issue_comment_url":"https://api.github.com/repos/influxdata/influxdb/issues/comments{/number}","contents_url":"https://api.github.com/repos/influxdata/influxdb/contents/{+path}","compare_url":"https://api.github.com/repos/influxdata/influxdb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/influxdata/influxdb/merges","archive_url":"https://api.github.com/repos/influxdata/influxdb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/influxdata/influxdb/downloads","issues_url":"https://api.github.com/repos/influxdata/influxdb/issues{/number}","pulls_url":"https://api.github.com/repos/influxdata/influxdb/pulls{/number}","milestones_url":"https://api.github.com/repos/influxdata/influxdb/milestones{/number}","notifications_url":"https://api.github.com/repos/influxdata/influxdb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/influxdata/influxdb/labels{/name}","releases_url":"https://api.github.com/repos/influxdata/influxdb/releases{/id}","deployments_url":"https://api.github.com/repos/influxdata/influxdb/deployments","created_at":"2013-09-26T14:31:10Z","updated_at":"2016-10-20T16:18:35Z","pushed_at":"2016-10-20T18:15:08Z","git_url":"git://github.com/influxdata/influxdb.git","ssh_url":"git@github.com:influxdata/influxdb.git","clone_url":"https://github.com/influxdata/influxdb.git","svn_url":"https://github.com/influxdata/influxdb","homepage":"https://influxdata.com","size":62584,"stargazers_count":9062,"watchers_count":9062,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1274,"mirror_url":null,"open_issues_count":419,"forks":1274,"open_issues":419,"watchers":9062,"default_branch":"master"}},"base":{"label":"influxdata:master","ref":"master","sha":"6fd74a6a2ad8aa96a41660a0075098fc33bbf21f","user":{"login":"influxdata","id":5713248,"avatar_url":"https://avatars.githubusercontent.com/u/5713248?v=3","gravatar_id":"","url":"https://api.github.com/users/influxdata","html_url":"https://github.com/influxdata","followers_url":"https://api.github.com/users/influxdata/followers","following_url":"https://api.github.com/users/influxdata/following{/other_user}","gists_url":"https://api.github.com/users/influxdata/gists{/gist_id}","starred_url":"https://api.github.com/users/influxdata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/influxdata/subscriptions","organizations_url":"https://api.github.com/users/influxdata/orgs","repos_url":"https://api.github.com/users/influxdata/repos","events_url":"https://api.github.com/users/influxdata/events{/privacy}","received_events_url":"https://api.github.com/users/influxdata/received_events","type":"Organization","site_admin":false},"repo":{"id":13124802,"name":"influxdb","full_name":"influxdata/influxdb","owner":{"login":"influxdata","id":5713248,"avatar_url":"https://avatars.githubusercontent.com/u/5713248?v=3","gravatar_id":"","url":"https://api.github.com/users/influxdata","html_url":"https://github.com/influxdata","followers_url":"https://api.github.com/users/influxdata/followers","following_url":"https://api.github.com/users/influxdata/following{/other_user}","gists_url":"https://api.github.com/users/influxdata/gists{/gist_id}","starred_url":"https://api.github.com/users/influxdata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/influxdata/subscriptions","organizations_url":"https://api.github.com/users/influxdata/orgs","repos_url":"https://api.github.com/users/influxdata/repos","events_url":"https://api.github.com/users/influxdata/events{/privacy}","received_events_url":"https://api.github.com/users/influxdata/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/influxdata/influxdb","description":"Scalable datastore for metrics, events, and real-time analytics","fork":false,"url":"https://api.github.com/repos/influxdata/influxdb","forks_url":"https://api.github.com/repos/influxdata/influxdb/forks","keys_url":"https://api.github.com/repos/influxdata/influxdb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/influxdata/influxdb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/influxdata/influxdb/teams","hooks_url":"https://api.github.com/repos/influxdata/influxdb/hooks","issue_events_url":"https://api.github.com/repos/influxdata/influxdb/issues/events{/number}","events_url":"https://api.github.com/repos/influxdata/influxdb/events","assignees_url":"https://api.github.com/repos/influxdata/influxdb/assignees{/user}","branches_url":"https://api.github.com/repos/influxdata/influxdb/branches{/branch}","tags_url":"https://api.github.com/repos/influxdata/influxdb/tags","blobs_url":"https://api.github.com/repos/influxdata/influxdb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/influxdata/influxdb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/influxdata/influxdb/git/refs{/sha}","trees_url":"https://api.github.com/repos/influxdata/influxdb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/influxdata/influxdb/statuses/{sha}","languages_url":"https://api.github.com/repos/influxdata/influxdb/languages","stargazers_url":"https://api.github.com/repos/influxdata/influxdb/stargazers","contributors_url":"https://api.github.com/repos/influxdata/influxdb/contributors","subscribers_url":"https://api.github.com/repos/influxdata/influxdb/subscribers","subscription_url":"https://api.github.com/repos/influxdata/influxdb/subscription","commits_url":"https://api.github.com/repos/influxdata/influxdb/commits{/sha}","git_commits_url":"https://api.github.com/repos/influxdata/influxdb/git/commits{/sha}","comments_url":"https://api.github.com/repos/influxdata/influxdb/comments{/number}","issue_comment_url":"https://api.github.com/repos/influxdata/influxdb/issues/comments{/number}","contents_url":"https://api.github.com/repos/influxdata/influxdb/contents/{+path}","compare_url":"https://api.github.com/repos/influxdata/influxdb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/influxdata/influxdb/merges","archive_url":"https://api.github.com/repos/influxdata/influxdb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/influxdata/influxdb/downloads","issues_url":"https://api.github.com/repos/influxdata/influxdb/issues{/number}","pulls_url":"https://api.github.com/repos/influxdata/influxdb/pulls{/number}","milestones_url":"https://api.github.com/repos/influxdata/influxdb/milestones{/number}","notifications_url":"https://api.github.com/repos/influxdata/influxdb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/influxdata/influxdb/labels{/name}","releases_url":"https://api.github.com/repos/influxdata/influxdb/releases{/id}","deployments_url":"https://api.github.com/repos/influxdata/influxdb/deployments","created_at":"2013-09-26T14:31:10Z","updated_at":"2016-10-20T16:18:35Z","pushed_at":"2016-10-20T18:15:08Z","git_url":"git://github.com/influxdata/influxdb.git","ssh_url":"git@github.com:influxdata/influxdb.git","clone_url":"https://github.com/influxdata/influxdb.git","svn_url":"https://github.com/influxdata/influxdb","homepage":"https://influxdata.com","size":62584,"stargazers_count":9062,"watchers_count":9062,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1274,"mirror_url":null,"open_issues_count":419,"forks":1274,"open_issues":419,"watchers":9062,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/influxdata/influxdb/pulls/7495"},"html":{"href":"https://github.com/influxdata/influxdb/pull/7495"},"issue":{"href":"https://api.github.com/repos/influxdata/influxdb/issues/7495"},"comments":{"href":"https://api.github.com/repos/influxdata/influxdb/issues/7495/comments"},"review_comments":{"href":"https://api.github.com/repos/influxdata/influxdb/pulls/7495/comments"},"review_comment":{"href":"https://api.github.com/repos/influxdata/influxdb/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/influxdata/influxdb/pulls/7495/commits"},"statuses":{"href":"https://api.github.com/repos/influxdata/influxdb/statuses/91f8257b22467ac196f4b67157d6adf68da96197"}}}}
{"actor":{"display_login":"stevenh"}}