{"action":"created","comment":{"url":"https://api.github.com/repos/pingcap/tidb/pulls/comments/317051081","pull_request_review_id":278894533,"id":317051081,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDMxNzA1MTA4MQ==","diff_hunk":"@@ -161,6 +161,83 @@ func (p *PhysicalApply) attach2Task(tasks ...task) task {\n \t}\n }\n \n+func (p *PhysicalIndexMergeJoin) attach2Task(tasks ...task) task {\n+\tinnerTask := p.innerTask\n+\touterTask := finishCopTask(p.ctx, tasks[p.OuterIndex].copy())\n+\tif p.OuterIndex == 0 {\n+\t\tp.SetChildren(outerTask.plan(), innerTask.plan())\n+\t} else {\n+\t\tp.SetChildren(innerTask.plan(), outerTask.plan())\n+\t}\n+\tp.schema = buildPhysicalJoinSchema(p.JoinType, p)\n+\treturn &rootTask{\n+\t\tp:   p,\n+\t\tcst: p.GetCost(outerTask, innerTask),\n+\t}\n+}\n+\n+// GetCost computes the cost of index merge join operator and its children.\n+func (p *PhysicalIndexMergeJoin) GetCost(outerTask, innerTask task) float64 {\n+\tvar cpuCost float64\n+\touterCnt, innerCnt := outerTask.count(), innerTask.count()\n+\t// Add the cost of evaluating outer filter, since inner filter of index join\n+\t// is always empty, we can simply tell whether outer filter is empty using the\n+\t// summed length of left/right conditions.\n+\tif len(p.LeftConditions)+len(p.RightConditions) > 0 {\n+\t\tcpuCost += cpuFactor * outerCnt\n+\t\touterCnt *= selectionFactor\n+\t}\n+\t// Cost of extracting lookup keys.\n+\tinnerCPUCost := cpuFactor * outerCnt\n+\t// Cost of sorting and removing duplicate lookup keys:\n+\t// (outerCnt / batchSize) * (sortFactor + 1.0) * batchSize * cpuFactor\n+\t// If `p.NeedOuterSort` is true, the sortFactor is batchSize * Log2(batchSize).\n+\t// Otherwise, it's 0.\n+\tbatchSize := math.Min(float64(p.ctx.GetSessionVars().IndexJoinBatchSize), outerCnt)\n+\tsortFactor := 0.0\n+\tif p.NeedOuterSort {\n+\t\tsortFactor = math.Log2(float64(batchSize))\n+\t}\n+\tif batchSize > 2 {\n+\t\tinnerCPUCost += outerCnt * (sortFactor + 1.0) * cpuFactor\n+\t}\n+\t// Add cost of building inner executors. CPU cost of building copTasks:\n+\t// (outerCnt / batchSize) * (batchSize * distinctFactor) * cpuFactor\n+\t// Since we don't know the number of copTasks built, ignore these network cost now.\n+\tinnerCPUCost += outerCnt * distinctFactor * cpuFactor\n+\tinnerConcurrency := float64(p.ctx.GetSessionVars().IndexLookupJoinConcurrency)\n+\tcpuCost += innerCPUCost / innerConcurrency\n+\t// Cost of merge join in inner worker.\n+\tnumPairs := outerCnt * innerCnt\n+\tif p.JoinType == SemiJoin || p.JoinType == AntiSemiJoin ||\n+\t\tp.JoinType == LeftOuterSemiJoin || p.JoinType == AntiLeftOuterSemiJoin {\n+\t\tif len(p.OtherConditions) > 0 {\n+\t\t\tnumPairs *= 0.5\n+\t\t} else {\n+\t\t\tnumPairs = 0\n+\t\t}\n+\t}\n+\tavgProbeCnt := numPairs / outerCnt\n+\tvar probeCost float64\n+\t// Inner workers do merge join parallelly. But they can only save ONE outer batch\n+\t// results. So as the number of outer batch is exceed inner concurrency, it degenerates","path":"planner/core/task.go","position":63,"original_position":63,"commit_id":"a94acf7bb24f961d33059e2819addadaebba1340","original_commit_id":"a94acf7bb24f961d33059e2819addadaebba1340","user":{"login":"eurekaka","id":6261973,"node_id":"MDQ6VXNlcjYyNjE5NzM=","avatar_url":"https://avatars2.githubusercontent.com/u/6261973?v=4","gravatar_id":"","url":"https://api.github.com/users/eurekaka","html_url":"https://github.com/eurekaka","followers_url":"https://api.github.com/users/eurekaka/followers","following_url":"https://api.github.com/users/eurekaka/following{/other_user}","gists_url":"https://api.github.com/users/eurekaka/gists{/gist_id}","starred_url":"https://api.github.com/users/eurekaka/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/eurekaka/subscriptions","organizations_url":"https://api.github.com/users/eurekaka/orgs","repos_url":"https://api.github.com/users/eurekaka/repos","events_url":"https://api.github.com/users/eurekaka/events{/privacy}","received_events_url":"https://api.github.com/users/eurekaka/received_events","type":"User","site_admin":false},"body":"```suggestion\r\n\t// results. So as the number of outer batch exceeds inner concurrency, it would fall back to\r\n```","created_at":"2019-08-23T09:33:10Z","updated_at":"2019-08-23T09:36:29Z","html_url":"https://github.com/pingcap/tidb/pull/11338#discussion_r317051081","pull_request_url":"https://api.github.com/repos/pingcap/tidb/pulls/11338","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/pingcap/tidb/pulls/comments/317051081"},"html":{"href":"https://github.com/pingcap/tidb/pull/11338#discussion_r317051081"},"pull_request":{"href":"https://api.github.com/repos/pingcap/tidb/pulls/11338"}}},"pull_request":{"url":"https://api.github.com/repos/pingcap/tidb/pulls/11338","id":299306550,"node_id":"MDExOlB1bGxSZXF1ZXN0Mjk5MzA2NTUw","html_url":"https://github.com/pingcap/tidb/pull/11338","diff_url":"https://github.com/pingcap/tidb/pull/11338.diff","patch_url":"https://github.com/pingcap/tidb/pull/11338.patch","issue_url":"https://api.github.com/repos/pingcap/tidb/issues/11338","number":11338,"state":"open","locked":false,"title":"planner: support index_lookup_merge_join in physical plan.","user":{"login":"lzmhhh123","id":26040259,"node_id":"MDQ6VXNlcjI2MDQwMjU5","avatar_url":"https://avatars3.githubusercontent.com/u/26040259?v=4","gravatar_id":"","url":"https://api.github.com/users/lzmhhh123","html_url":"https://github.com/lzmhhh123","followers_url":"https://api.github.com/users/lzmhhh123/followers","following_url":"https://api.github.com/users/lzmhhh123/following{/other_user}","gists_url":"https://api.github.com/users/lzmhhh123/gists{/gist_id}","starred_url":"https://api.github.com/users/lzmhhh123/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lzmhhh123/subscriptions","organizations_url":"https://api.github.com/users/lzmhhh123/orgs","repos_url":"https://api.github.com/users/lzmhhh123/repos","events_url":"https://api.github.com/users/lzmhhh123/events{/privacy}","received_events_url":"https://api.github.com/users/lzmhhh123/received_events","type":"User","site_admin":false},"body":"<!--\r\nThank you for contributing to TiDB! Please read TiDB's [CONTRIBUTING](https://github.com/pingcap/tidb/blob/master/CONTRIBUTING.md) document **BEFORE** filing this PR.\r\n-->\r\n\r\n### What problem does this PR solve? <!--add issue link with summary if exists-->\r\nA split pull request for #9571 .\r\n\r\n### What is changed and how it works?\r\nMove the index_merge_join in planner.\r\n\r\n### Check List <!--REMOVE the items that are not applicable-->\r\n\r\nTests <!-- At least one of them must be included. -->\r\n\r\n - Unit test\r\n - Integration test\r\n - Manual test (add detailed scripts or steps below)\r\n\r\nCode changes\r\n\r\n - Has exported function/method change\r\n - Has exported variable/fields change\r\n - Has interface methods change\r\n - Has persistent data change\r\n\r\nSide effects\r\n\r\n - Possible performance regression\r\n - Increased code complexity\r\n\r\nRelated changes\r\n\r\n - None\r\n","created_at":"2019-07-19T12:04:07Z","updated_at":"2019-08-23T09:36:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ada641dce5c9c4160d5a5eaf5a3f946430675580","assignee":null,"assignees":[],"requested_reviewers":[{"login":"zz-jason","id":5268763,"node_id":"MDQ6VXNlcjUyNjg3NjM=","avatar_url":"https://avatars0.githubusercontent.com/u/5268763?v=4","gravatar_id":"","url":"https://api.github.com/users/zz-jason","html_url":"https://github.com/zz-jason","followers_url":"https://api.github.com/users/zz-jason/followers","following_url":"https://api.github.com/users/zz-jason/following{/other_user}","gists_url":"https://api.github.com/users/zz-jason/gists{/gist_id}","starred_url":"https://api.github.com/users/zz-jason/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zz-jason/subscriptions","organizations_url":"https://api.github.com/users/zz-jason/orgs","repos_url":"https://api.github.com/users/zz-jason/repos","events_url":"https://api.github.com/users/zz-jason/events{/privacy}","received_events_url":"https://api.github.com/users/zz-jason/received_events","type":"User","site_admin":false},{"login":"qw4990","id":7499936,"node_id":"MDQ6VXNlcjc0OTk5MzY=","avatar_url":"https://avatars3.githubusercontent.com/u/7499936?v=4","gravatar_id":"","url":"https://api.github.com/users/qw4990","html_url":"https://github.com/qw4990","followers_url":"https://api.github.com/users/qw4990/followers","following_url":"https://api.github.com/users/qw4990/following{/other_user}","gists_url":"https://api.github.com/users/qw4990/gists{/gist_id}","starred_url":"https://api.github.com/users/qw4990/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qw4990/subscriptions","organizations_url":"https://api.github.com/users/qw4990/orgs","repos_url":"https://api.github.com/users/qw4990/repos","events_url":"https://api.github.com/users/qw4990/events{/privacy}","received_events_url":"https://api.github.com/users/qw4990/received_events","type":"User","site_admin":false},{"login":"winoros","id":7846227,"node_id":"MDQ6VXNlcjc4NDYyMjc=","avatar_url":"https://avatars1.githubusercontent.com/u/7846227?v=4","gravatar_id":"","url":"https://api.github.com/users/winoros","html_url":"https://github.com/winoros","followers_url":"https://api.github.com/users/winoros/followers","following_url":"https://api.github.com/users/winoros/following{/other_user}","gists_url":"https://api.github.com/users/winoros/gists{/gist_id}","starred_url":"https://api.github.com/users/winoros/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/winoros/subscriptions","organizations_url":"https://api.github.com/users/winoros/orgs","repos_url":"https://api.github.com/users/winoros/repos","events_url":"https://api.github.com/users/winoros/events{/privacy}","received_events_url":"https://api.github.com/users/winoros/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":667671533,"node_id":"MDU6TGFiZWw2Njc2NzE1MzM=","url":"https://api.github.com/repos/pingcap/tidb/labels/component/planner","name":"component/planner","color":"1d76db","default":false},{"id":1482175488,"node_id":"MDU6TGFiZWwxNDgyMTc1NDg4","url":"https://api.github.com/repos/pingcap/tidb/labels/status/PTAL","name":"status/PTAL","color":"2cbe4e","default":false},{"id":770872605,"node_id":"MDU6TGFiZWw3NzA4NzI2MDU=","url":"https://api.github.com/repos/pingcap/tidb/labels/status/all%20tests%20passed","name":"status/all tests passed","color":"2cbe4e","default":false},{"id":256872088,"node_id":"MDU6TGFiZWwyNTY4NzIwODg=","url":"https://api.github.com/repos/pingcap/tidb/labels/type/enhancement","name":"type/enhancement","color":"84b6eb","default":false},{"id":1144191230,"node_id":"MDU6TGFiZWwxMTQ0MTkxMjMw","url":"https://api.github.com/repos/pingcap/tidb/labels/type/new-feature","name":"type/new-feature","color":"e2e876","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/pingcap/tidb/pulls/11338/commits","review_comments_url":"https://api.github.com/repos/pingcap/tidb/pulls/11338/comments","review_comment_url":"https://api.github.com/repos/pingcap/tidb/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pingcap/tidb/issues/11338/comments","statuses_url":"https://api.github.com/repos/pingcap/tidb/statuses/a94acf7bb24f961d33059e2819addadaebba1340","head":{"label":"lzmhhh123:dev/support_index_merge_join_in_physical_plan","ref":"dev/support_index_merge_join_in_physical_plan","sha":"a94acf7bb24f961d33059e2819addadaebba1340","user":{"login":"lzmhhh123","id":26040259,"node_id":"MDQ6VXNlcjI2MDQwMjU5","avatar_url":"https://avatars3.githubusercontent.com/u/26040259?v=4","gravatar_id":"","url":"https://api.github.com/users/lzmhhh123","html_url":"https://github.com/lzmhhh123","followers_url":"https://api.github.com/users/lzmhhh123/followers","following_url":"https://api.github.com/users/lzmhhh123/following{/other_user}","gists_url":"https://api.github.com/users/lzmhhh123/gists{/gist_id}","starred_url":"https://api.github.com/users/lzmhhh123/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lzmhhh123/subscriptions","organizations_url":"https://api.github.com/users/lzmhhh123/orgs","repos_url":"https://api.github.com/users/lzmhhh123/repos","events_url":"https://api.github.com/users/lzmhhh123/events{/privacy}","received_events_url":"https://api.github.com/users/lzmhhh123/received_events","type":"User","site_admin":false},"repo":{"id":131932920,"node_id":"MDEwOlJlcG9zaXRvcnkxMzE5MzI5MjA=","name":"tidb","full_name":"lzmhhh123/tidb","private":false,"owner":{"login":"lzmhhh123","id":26040259,"node_id":"MDQ6VXNlcjI2MDQwMjU5","avatar_url":"https://avatars3.githubusercontent.com/u/26040259?v=4","gravatar_id":"","url":"https://api.github.com/users/lzmhhh123","html_url":"https://github.com/lzmhhh123","followers_url":"https://api.github.com/users/lzmhhh123/followers","following_url":"https://api.github.com/users/lzmhhh123/following{/other_user}","gists_url":"https://api.github.com/users/lzmhhh123/gists{/gist_id}","starred_url":"https://api.github.com/users/lzmhhh123/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lzmhhh123/subscriptions","organizations_url":"https://api.github.com/users/lzmhhh123/orgs","repos_url":"https://api.github.com/users/lzmhhh123/repos","events_url":"https://api.github.com/users/lzmhhh123/events{/privacy}","received_events_url":"https://api.github.com/users/lzmhhh123/received_events","type":"User","site_admin":false},"html_url":"https://github.com/lzmhhh123/tidb","description":"TiDB is a distributed HTAP database compatible with the MySQL protocol ","fork":true,"url":"https://api.github.com/repos/lzmhhh123/tidb","forks_url":"https://api.github.com/repos/lzmhhh123/tidb/forks","keys_url":"https://api.github.com/repos/lzmhhh123/tidb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lzmhhh123/tidb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lzmhhh123/tidb/teams","hooks_url":"https://api.github.com/repos/lzmhhh123/tidb/hooks","issue_events_url":"https://api.github.com/repos/lzmhhh123/tidb/issues/events{/number}","events_url":"https://api.github.com/repos/lzmhhh123/tidb/events","assignees_url":"https://api.github.com/repos/lzmhhh123/tidb/assignees{/user}","branches_url":"https://api.github.com/repos/lzmhhh123/tidb/branches{/branch}","tags_url":"https://api.github.com/repos/lzmhhh123/tidb/tags","blobs_url":"https://api.github.com/repos/lzmhhh123/tidb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lzmhhh123/tidb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lzmhhh123/tidb/git/refs{/sha}","trees_url":"https://api.github.com/repos/lzmhhh123/tidb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lzmhhh123/tidb/statuses/{sha}","languages_url":"https://api.github.com/repos/lzmhhh123/tidb/languages","stargazers_url":"https://api.github.com/repos/lzmhhh123/tidb/stargazers","contributors_url":"https://api.github.com/repos/lzmhhh123/tidb/contributors","subscribers_url":"https://api.github.com/repos/lzmhhh123/tidb/subscribers","subscription_url":"https://api.github.com/repos/lzmhhh123/tidb/subscription","commits_url":"https://api.github.com/repos/lzmhhh123/tidb/commits{/sha}","git_commits_url":"https://api.github.com/repos/lzmhhh123/tidb/git/commits{/sha}","comments_url":"https://api.github.com/repos/lzmhhh123/tidb/comments{/number}","issue_comment_url":"https://api.github.com/repos/lzmhhh123/tidb/issues/comments{/number}","contents_url":"https://api.github.com/repos/lzmhhh123/tidb/contents/{+path}","compare_url":"https://api.github.com/repos/lzmhhh123/tidb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lzmhhh123/tidb/merges","archive_url":"https://api.github.com/repos/lzmhhh123/tidb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lzmhhh123/tidb/downloads","issues_url":"https://api.github.com/repos/lzmhhh123/tidb/issues{/number}","pulls_url":"https://api.github.com/repos/lzmhhh123/tidb/pulls{/number}","milestones_url":"https://api.github.com/repos/lzmhhh123/tidb/milestones{/number}","notifications_url":"https://api.github.com/repos/lzmhhh123/tidb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lzmhhh123/tidb/labels{/name}","releases_url":"https://api.github.com/repos/lzmhhh123/tidb/releases{/id}","deployments_url":"https://api.github.com/repos/lzmhhh123/tidb/deployments","created_at":"2018-05-03T02:49:12Z","updated_at":"2018-11-26T07:46:40Z","pushed_at":"2019-08-23T06:59:34Z","git_url":"git://github.com/lzmhhh123/tidb.git","ssh_url":"git@github.com:lzmhhh123/tidb.git","clone_url":"https://github.com/lzmhhh123/tidb.git","svn_url":"https://github.com/lzmhhh123/tidb","homepage":"https://pingcap.com","size":80623,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"pingcap:master","ref":"master","sha":"8b679ed3e2d31adabce71f6fdb6df6596678eed1","user":{"login":"pingcap","id":11855343,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExODU1MzQz","avatar_url":"https://avatars3.githubusercontent.com/u/11855343?v=4","gravatar_id":"","url":"https://api.github.com/users/pingcap","html_url":"https://github.com/pingcap","followers_url":"https://api.github.com/users/pingcap/followers","following_url":"https://api.github.com/users/pingcap/following{/other_user}","gists_url":"https://api.github.com/users/pingcap/gists{/gist_id}","starred_url":"https://api.github.com/users/pingcap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pingcap/subscriptions","organizations_url":"https://api.github.com/users/pingcap/orgs","repos_url":"https://api.github.com/users/pingcap/repos","events_url":"https://api.github.com/users/pingcap/events{/privacy}","received_events_url":"https://api.github.com/users/pingcap/received_events","type":"Organization","site_admin":false},"repo":{"id":41986369,"node_id":"MDEwOlJlcG9zaXRvcnk0MTk4NjM2OQ==","name":"tidb","full_name":"pingcap/tidb","private":false,"owner":{"login":"pingcap","id":11855343,"node_id":"MDEyOk9yZ2FuaXphdGlvbjExODU1MzQz","avatar_url":"https://avatars3.githubusercontent.com/u/11855343?v=4","gravatar_id":"","url":"https://api.github.com/users/pingcap","html_url":"https://github.com/pingcap","followers_url":"https://api.github.com/users/pingcap/followers","following_url":"https://api.github.com/users/pingcap/following{/other_user}","gists_url":"https://api.github.com/users/pingcap/gists{/gist_id}","starred_url":"https://api.github.com/users/pingcap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pingcap/subscriptions","organizations_url":"https://api.github.com/users/pingcap/orgs","repos_url":"https://api.github.com/users/pingcap/repos","events_url":"https://api.github.com/users/pingcap/events{/privacy}","received_events_url":"https://api.github.com/users/pingcap/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/pingcap/tidb","description":"TiDB is an open source distributed HTAP database compatible with the MySQL protocol ","fork":false,"url":"https://api.github.com/repos/pingcap/tidb","forks_url":"https://api.github.com/repos/pingcap/tidb/forks","keys_url":"https://api.github.com/repos/pingcap/tidb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pingcap/tidb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pingcap/tidb/teams","hooks_url":"https://api.github.com/repos/pingcap/tidb/hooks","issue_events_url":"https://api.github.com/repos/pingcap/tidb/issues/events{/number}","events_url":"https://api.github.com/repos/pingcap/tidb/events","assignees_url":"https://api.github.com/repos/pingcap/tidb/assignees{/user}","branches_url":"https://api.github.com/repos/pingcap/tidb/branches{/branch}","tags_url":"https://api.github.com/repos/pingcap/tidb/tags","blobs_url":"https://api.github.com/repos/pingcap/tidb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pingcap/tidb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pingcap/tidb/git/refs{/sha}","trees_url":"https://api.github.com/repos/pingcap/tidb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pingcap/tidb/statuses/{sha}","languages_url":"https://api.github.com/repos/pingcap/tidb/languages","stargazers_url":"https://api.github.com/repos/pingcap/tidb/stargazers","contributors_url":"https://api.github.com/repos/pingcap/tidb/contributors","subscribers_url":"https://api.github.com/repos/pingcap/tidb/subscribers","subscription_url":"https://api.github.com/repos/pingcap/tidb/subscription","commits_url":"https://api.github.com/repos/pingcap/tidb/commits{/sha}","git_commits_url":"https://api.github.com/repos/pingcap/tidb/git/commits{/sha}","comments_url":"https://api.github.com/repos/pingcap/tidb/comments{/number}","issue_comment_url":"https://api.github.com/repos/pingcap/tidb/issues/comments{/number}","contents_url":"https://api.github.com/repos/pingcap/tidb/contents/{+path}","compare_url":"https://api.github.com/repos/pingcap/tidb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pingcap/tidb/merges","archive_url":"https://api.github.com/repos/pingcap/tidb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pingcap/tidb/downloads","issues_url":"https://api.github.com/repos/pingcap/tidb/issues{/number}","pulls_url":"https://api.github.com/repos/pingcap/tidb/pulls{/number}","milestones_url":"https://api.github.com/repos/pingcap/tidb/milestones{/number}","notifications_url":"https://api.github.com/repos/pingcap/tidb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pingcap/tidb/labels{/name}","releases_url":"https://api.github.com/repos/pingcap/tidb/releases{/id}","deployments_url":"https://api.github.com/repos/pingcap/tidb/deployments","created_at":"2015-09-06T04:01:52Z","updated_at":"2019-08-23T09:11:30Z","pushed_at":"2019-08-23T09:34:06Z","git_url":"git://github.com/pingcap/tidb.git","ssh_url":"git@github.com:pingcap/tidb.git","clone_url":"https://github.com/pingcap/tidb.git","svn_url":"https://github.com/pingcap/tidb","homepage":"https://pingcap.com","size":139186,"stargazers_count":20290,"watchers_count":20290,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2957,"mirror_url":null,"archived":false,"disabled":false,"open_issues_count":960,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":2957,"open_issues":960,"watchers":20290,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pingcap/tidb/pulls/11338"},"html":{"href":"https://github.com/pingcap/tidb/pull/11338"},"issue":{"href":"https://api.github.com/repos/pingcap/tidb/issues/11338"},"comments":{"href":"https://api.github.com/repos/pingcap/tidb/issues/11338/comments"},"review_comments":{"href":"https://api.github.com/repos/pingcap/tidb/pulls/11338/comments"},"review_comment":{"href":"https://api.github.com/repos/pingcap/tidb/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pingcap/tidb/pulls/11338/commits"},"statuses":{"href":"https://api.github.com/repos/pingcap/tidb/statuses/a94acf7bb24f961d33059e2819addadaebba1340"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"eurekaka"}}