{"action":"created","comment":{"url":"https://api.github.com/repos/VoltDB/voltdb/pulls/comments/27085478","id":27085478,"diff_hunk":"@@ -310,4 +316,211 @@ public void testCaseWhenIndex()\n         System.out.println(pn.toExplainPlanString());\n         assertTrue(pn.toExplainPlanString().contains(\"using its primary key index (for deterministic order only)\"));\n     }\n+\n+    public void testPartialIndexNULLPredicate() {\n+        {\n+            AbstractPlanNode pn = compile(\"select * from c where a > 0;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"Z_FULL_IDX_A\\\"\");\n+        }\n+        {\n+            // CREATE INDEX partial_idx_null_e ON c (a) where e is null;\n+            AbstractPlanNode pn = compile(\"select * from c where a > 0 and e is NULL;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_NULL_E\\\"\");\n+            checkIndexPredicateIsNull(pn);\n+        }\n+        {\n+            // CREATE INDEX a_partial_idx_not_null_e ON c (a) where e is not null;\n+            AbstractPlanNode pn = compile(\"select * from c where a > 0 and e is not NULL;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"A_PARTIAL_IDX_NOT_NULL_E\\\"\");\n+            checkIndexPredicateIsNull(pn);\n+        }\n+        {\n+            // CREATE INDEX a_partial_idx_not_null_e ON c (a) where e is not null;\n+            // range-scan covering from (A > 0) to end Z_FULL_IDX_A has higher cost\n+            AbstractPlanNode pn = compile(\"select * from c where a > 0 and e = 0;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"A_PARTIAL_IDX_NOT_NULL_E\\\"\");\n+            String[] columns = {\"E\"};\n+            checkIndexPredicateContains(pn, columns);\n+        }\n+        {\n+            // CREATE INDEX a_partial_idx_not_null_d_e ON c (a+b) where (d + e) is not null;\n+            AbstractPlanNode pn = compile(\"select * from c where a + b > 0 and 0 = abs(e + d);\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"A_PARTIAL_IDX_NOT_NULL_D_E\\\"\");\n+            String[] columns = {\"E\", \"D\"};\n+            checkIndexPredicateContains(pn, columns);\n+        }\n+        {\n+            // CREATE INDEX a_partial_idx_not_null_e ON c (a) where e is not null;\n+            AbstractPlanNode pn = compile(\"select * from c where a > 0 and 0 = abs(e + b);\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"A_PARTIAL_IDX_NOT_NULL_E\\\"\");\n+            String[] columns = {\"E\", \"B\"};\n+            checkIndexPredicateContains(pn, columns);\n+        }\n+        {\n+            // CREATE INDEX a_partial_idx_not_null_e ON c (a) where e is not null;\n+            // uniquely match (A = 0) Z_FULL_IDX_A has the lowest cost\n+            AbstractPlanNode pn = compile(\"select * from c where a = 0 and e = 0;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"Z_FULL_IDX_A\\\"\");\n+            String[] columns = {\"E\"};\n+            checkIndexPredicateContains(pn, columns);\n+        }\n+    }\n+\n+    public void testPartialIndexArbitraryPredicate()\n+    {\n+        {\n+            // CREATE INDEX partial_idx_or_expr ON c (f) where e > 0 or d < 5;\n+            AbstractPlanNode pn = compile(\"select * from c where f > 0 and (e > 0 or d < 5);\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_OR_EXPR\\\"\");\n+            checkIndexPredicateIsNull(pn);\n+        }\n+    }\n+\n+    public void testPartialIndexComparisonPredicateExactMatch()\n+    {\n+        {\n+            // CREATE INDEX partial_idx_or_expr ON c (a) where e > 0 or d < 5; -- expression trees differ\n+            AbstractPlanNode pn = compile(\"select * from c where a > 0 and e > 0 or d < 5;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"Z_FULL_IDX_A\\\"\");\n+        }\n+        {\n+            // CREATE INDEX partial_idx_1 ON c (b) where abs(e) > 1;\n+            AbstractPlanNode pn = compile(\"select * from c where b = 0 and abs(e) > 1;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_1\\\"\");\n+            checkIndexPredicateIsNull(pn);\n+        }\n+        {\n+            // CREATE INDEX partial_idx_1 ON c (b) where abs(e) > 1;\n+            AbstractPlanNode pn = compile(\"select * from c where b > 0 and 1 < abs(e);\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_1\\\"\");\n+            checkIndexPredicateIsNull(pn);\n+        }\n+        {\n+            // CREATE INDEX partial_idx_2 ON c (b) where d > 0 and d < 5;\n+            // CREATE INDEX partial_idx_3 ON c (b) where d > 0; is also a match\n+            // but has higher cost because of the extra post filter\n+            AbstractPlanNode pn = compile(\"select * from c where b > 0 and d > 0 and d < 5;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_2\\\"\");\n+            checkIndexPredicateIsNull(pn);\n+        }\n+        {\n+            // CREATE INDEX partial_idx_2 ON c (b) where d > 0 and d < 5;\n+            AbstractPlanNode pn = compile(\"select * from c where b > 0 and d < 5 and 0 < d;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_2\\\"\");\n+            checkIndexPredicateIsNull(pn);\n+        }\n+        {\n+            // CREATE INDEX partial_idx_4 ON c (a, b) where 0 < f;\n+            AbstractPlanNode pn = compile(\"select * from c where a > 0 and b > 0 and f > 0;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_4\\\"\");\n+            String[] columns = {\"F\"};\n+            checkIndexPredicateDoesNotHave(pn, columns);\n+        }\n+        {\n+            // CREATE INDEX partial_idx_4 ON c (a, b) where 0 < f;\n+            AbstractPlanNode pn = compile(\"select * from c where a > 0 and b > 0 and 0 < f;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_4\\\"\");\n+            String[] columns = {\"F\"};\n+            checkIndexPredicateDoesNotHave(pn, columns);\n+        }\n+        {\n+            // CREATE INDEX partial_idx_5 ON c (b) where d > f;\n+            AbstractPlanNode pn = compile(\"select * from c where b > 0 and d > f;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_5\\\"\");\n+            String[] columns = {\"F\"};\n+            checkIndexPredicateIsNull(pn);\n+        }\n+        {\n+            // CREATE INDEX partial_idx_5 ON c (b) where d > f;\n+            AbstractPlanNode pn = compile(\"select * from c where b > 0 and f < d;\");\n+            checkIndexName(pn, \"\\\"TARGET_INDEX_NAME\\\":\\\"PARTIAL_IDX_5\\\"\");\n+            String[] columns = {\"F\"};\n+            checkIndexPredicateIsNull(pn);\n+        }\n+    }\n+\n+    public void testPartialIndexComparisonPredicateNonExactMatch()\n+        {","path":"tests/frontend/org/voltdb/planner/TestIndexSelection.java","position":149,"original_position":149,"commit_id":"63b95f77784a83bdcee81f11e525d44688fc37e2","original_commit_id":"63b95f77784a83bdcee81f11e525d44688fc37e2","user":{"login":"alexeevm","id":1646199,"avatar_url":"https://avatars.githubusercontent.com/u/1646199?v=3","gravatar_id":"","url":"https://api.github.com/users/alexeevm","html_url":"https://github.com/alexeevm","followers_url":"https://api.github.com/users/alexeevm/followers","following_url":"https://api.github.com/users/alexeevm/following{/other_user}","gists_url":"https://api.github.com/users/alexeevm/gists{/gist_id}","starred_url":"https://api.github.com/users/alexeevm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alexeevm/subscriptions","organizations_url":"https://api.github.com/users/alexeevm/orgs","repos_url":"https://api.github.com/users/alexeevm/repos","events_url":"https://api.github.com/users/alexeevm/events{/privacy}","received_events_url":"https://api.github.com/users/alexeevm/received_events","type":"User","site_admin":false},"body":"Corrected","created_at":"2015-03-25T00:03:52Z","updated_at":"2015-03-25T00:03:52Z","html_url":"https://github.com/VoltDB/voltdb/pull/2140#discussion_r27085478","pull_request_url":"https://api.github.com/repos/VoltDB/voltdb/pulls/2140","_links":{"self":{"href":"https://api.github.com/repos/VoltDB/voltdb/pulls/comments/27085478"},"html":{"href":"https://github.com/VoltDB/voltdb/pull/2140#discussion_r27085478"},"pull_request":{"href":"https://api.github.com/repos/VoltDB/voltdb/pulls/2140"}}},"pull_request":{"url":"https://api.github.com/repos/VoltDB/voltdb/pulls/2140","id":31275859,"html_url":"https://github.com/VoltDB/voltdb/pull/2140","diff_url":"https://github.com/VoltDB/voltdb/pull/2140.diff","patch_url":"https://github.com/VoltDB/voltdb/pull/2140.patch","issue_url":"https://api.github.com/repos/VoltDB/voltdb/issues/2140","number":2140,"state":"open","locked":false,"title":"Eng 5990 partial index","user":{"login":"jxchinaren","id":1305380,"avatar_url":"https://avatars.githubusercontent.com/u/1305380?v=3","gravatar_id":"","url":"https://api.github.com/users/jxchinaren","html_url":"https://github.com/jxchinaren","followers_url":"https://api.github.com/users/jxchinaren/followers","following_url":"https://api.github.com/users/jxchinaren/following{/other_user}","gists_url":"https://api.github.com/users/jxchinaren/gists{/gist_id}","starred_url":"https://api.github.com/users/jxchinaren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jxchinaren/subscriptions","organizations_url":"https://api.github.com/users/jxchinaren/orgs","repos_url":"https://api.github.com/users/jxchinaren/repos","events_url":"https://api.github.com/users/jxchinaren/events{/privacy}","received_events_url":"https://api.github.com/users/jxchinaren/received_events","type":"User","site_admin":false},"body":"DO NOT MERGE!!! Code review ONLY!!!","created_at":"2015-03-16T19:26:28Z","updated_at":"2015-03-25T00:03:52Z","closed_at":null,"merged_at":null,"merge_commit_sha":"717b4451193aa6bde08511cc5ac74e49338edc85","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/VoltDB/voltdb/pulls/2140/commits","review_comments_url":"https://api.github.com/repos/VoltDB/voltdb/pulls/2140/comments","review_comment_url":"https://api.github.com/repos/VoltDB/voltdb/pulls/comments{/number}","comments_url":"https://api.github.com/repos/VoltDB/voltdb/issues/2140/comments","statuses_url":"https://api.github.com/repos/VoltDB/voltdb/statuses/63b95f77784a83bdcee81f11e525d44688fc37e2","head":{"label":"VoltDB:ENG-5990-partial-index","ref":"ENG-5990-partial-index","sha":"63b95f77784a83bdcee81f11e525d44688fc37e2","user":{"login":"VoltDB","id":703910,"avatar_url":"https://avatars.githubusercontent.com/u/703910?v=3","gravatar_id":"","url":"https://api.github.com/users/VoltDB","html_url":"https://github.com/VoltDB","followers_url":"https://api.github.com/users/VoltDB/followers","following_url":"https://api.github.com/users/VoltDB/following{/other_user}","gists_url":"https://api.github.com/users/VoltDB/gists{/gist_id}","starred_url":"https://api.github.com/users/VoltDB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VoltDB/subscriptions","organizations_url":"https://api.github.com/users/VoltDB/orgs","repos_url":"https://api.github.com/users/VoltDB/repos","events_url":"https://api.github.com/users/VoltDB/events{/privacy}","received_events_url":"https://api.github.com/users/VoltDB/received_events","type":"Organization","site_admin":false},"repo":{"id":2445970,"name":"voltdb","full_name":"VoltDB/voltdb","owner":{"login":"VoltDB","id":703910,"avatar_url":"https://avatars.githubusercontent.com/u/703910?v=3","gravatar_id":"","url":"https://api.github.com/users/VoltDB","html_url":"https://github.com/VoltDB","followers_url":"https://api.github.com/users/VoltDB/followers","following_url":"https://api.github.com/users/VoltDB/following{/other_user}","gists_url":"https://api.github.com/users/VoltDB/gists{/gist_id}","starred_url":"https://api.github.com/users/VoltDB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VoltDB/subscriptions","organizations_url":"https://api.github.com/users/VoltDB/orgs","repos_url":"https://api.github.com/users/VoltDB/repos","events_url":"https://api.github.com/users/VoltDB/events{/privacy}","received_events_url":"https://api.github.com/users/VoltDB/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/VoltDB/voltdb","description":"VoltDB","fork":false,"url":"https://api.github.com/repos/VoltDB/voltdb","forks_url":"https://api.github.com/repos/VoltDB/voltdb/forks","keys_url":"https://api.github.com/repos/VoltDB/voltdb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/VoltDB/voltdb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/VoltDB/voltdb/teams","hooks_url":"https://api.github.com/repos/VoltDB/voltdb/hooks","issue_events_url":"https://api.github.com/repos/VoltDB/voltdb/issues/events{/number}","events_url":"https://api.github.com/repos/VoltDB/voltdb/events","assignees_url":"https://api.github.com/repos/VoltDB/voltdb/assignees{/user}","branches_url":"https://api.github.com/repos/VoltDB/voltdb/branches{/branch}","tags_url":"https://api.github.com/repos/VoltDB/voltdb/tags","blobs_url":"https://api.github.com/repos/VoltDB/voltdb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/VoltDB/voltdb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/VoltDB/voltdb/git/refs{/sha}","trees_url":"https://api.github.com/repos/VoltDB/voltdb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/VoltDB/voltdb/statuses/{sha}","languages_url":"https://api.github.com/repos/VoltDB/voltdb/languages","stargazers_url":"https://api.github.com/repos/VoltDB/voltdb/stargazers","contributors_url":"https://api.github.com/repos/VoltDB/voltdb/contributors","subscribers_url":"https://api.github.com/repos/VoltDB/voltdb/subscribers","subscription_url":"https://api.github.com/repos/VoltDB/voltdb/subscription","commits_url":"https://api.github.com/repos/VoltDB/voltdb/commits{/sha}","git_commits_url":"https://api.github.com/repos/VoltDB/voltdb/git/commits{/sha}","comments_url":"https://api.github.com/repos/VoltDB/voltdb/comments{/number}","issue_comment_url":"https://api.github.com/repos/VoltDB/voltdb/issues/comments{/number}","contents_url":"https://api.github.com/repos/VoltDB/voltdb/contents/{+path}","compare_url":"https://api.github.com/repos/VoltDB/voltdb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/VoltDB/voltdb/merges","archive_url":"https://api.github.com/repos/VoltDB/voltdb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/VoltDB/voltdb/downloads","issues_url":"https://api.github.com/repos/VoltDB/voltdb/issues{/number}","pulls_url":"https://api.github.com/repos/VoltDB/voltdb/pulls{/number}","milestones_url":"https://api.github.com/repos/VoltDB/voltdb/milestones{/number}","notifications_url":"https://api.github.com/repos/VoltDB/voltdb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/VoltDB/voltdb/labels{/name}","releases_url":"https://api.github.com/repos/VoltDB/voltdb/releases{/id}","created_at":"2011-09-23T18:46:12Z","updated_at":"2015-03-24T15:18:06Z","pushed_at":"2015-03-24T21:46:45Z","git_url":"git://github.com/VoltDB/voltdb.git","ssh_url":"git@github.com:VoltDB/voltdb.git","clone_url":"https://github.com/VoltDB/voltdb.git","svn_url":"https://github.com/VoltDB/voltdb","homepage":"http://community.voltdb.com/","size":609561,"stargazers_count":473,"watchers_count":473,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":138,"mirror_url":null,"open_issues_count":30,"forks":138,"open_issues":30,"watchers":473,"default_branch":"master"}},"base":{"label":"VoltDB:master","ref":"master","sha":"13e50062f482a201bef5ede6bd98ead7e304bf3c","user":{"login":"VoltDB","id":703910,"avatar_url":"https://avatars.githubusercontent.com/u/703910?v=3","gravatar_id":"","url":"https://api.github.com/users/VoltDB","html_url":"https://github.com/VoltDB","followers_url":"https://api.github.com/users/VoltDB/followers","following_url":"https://api.github.com/users/VoltDB/following{/other_user}","gists_url":"https://api.github.com/users/VoltDB/gists{/gist_id}","starred_url":"https://api.github.com/users/VoltDB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VoltDB/subscriptions","organizations_url":"https://api.github.com/users/VoltDB/orgs","repos_url":"https://api.github.com/users/VoltDB/repos","events_url":"https://api.github.com/users/VoltDB/events{/privacy}","received_events_url":"https://api.github.com/users/VoltDB/received_events","type":"Organization","site_admin":false},"repo":{"id":2445970,"name":"voltdb","full_name":"VoltDB/voltdb","owner":{"login":"VoltDB","id":703910,"avatar_url":"https://avatars.githubusercontent.com/u/703910?v=3","gravatar_id":"","url":"https://api.github.com/users/VoltDB","html_url":"https://github.com/VoltDB","followers_url":"https://api.github.com/users/VoltDB/followers","following_url":"https://api.github.com/users/VoltDB/following{/other_user}","gists_url":"https://api.github.com/users/VoltDB/gists{/gist_id}","starred_url":"https://api.github.com/users/VoltDB/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VoltDB/subscriptions","organizations_url":"https://api.github.com/users/VoltDB/orgs","repos_url":"https://api.github.com/users/VoltDB/repos","events_url":"https://api.github.com/users/VoltDB/events{/privacy}","received_events_url":"https://api.github.com/users/VoltDB/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/VoltDB/voltdb","description":"VoltDB","fork":false,"url":"https://api.github.com/repos/VoltDB/voltdb","forks_url":"https://api.github.com/repos/VoltDB/voltdb/forks","keys_url":"https://api.github.com/repos/VoltDB/voltdb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/VoltDB/voltdb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/VoltDB/voltdb/teams","hooks_url":"https://api.github.com/repos/VoltDB/voltdb/hooks","issue_events_url":"https://api.github.com/repos/VoltDB/voltdb/issues/events{/number}","events_url":"https://api.github.com/repos/VoltDB/voltdb/events","assignees_url":"https://api.github.com/repos/VoltDB/voltdb/assignees{/user}","branches_url":"https://api.github.com/repos/VoltDB/voltdb/branches{/branch}","tags_url":"https://api.github.com/repos/VoltDB/voltdb/tags","blobs_url":"https://api.github.com/repos/VoltDB/voltdb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/VoltDB/voltdb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/VoltDB/voltdb/git/refs{/sha}","trees_url":"https://api.github.com/repos/VoltDB/voltdb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/VoltDB/voltdb/statuses/{sha}","languages_url":"https://api.github.com/repos/VoltDB/voltdb/languages","stargazers_url":"https://api.github.com/repos/VoltDB/voltdb/stargazers","contributors_url":"https://api.github.com/repos/VoltDB/voltdb/contributors","subscribers_url":"https://api.github.com/repos/VoltDB/voltdb/subscribers","subscription_url":"https://api.github.com/repos/VoltDB/voltdb/subscription","commits_url":"https://api.github.com/repos/VoltDB/voltdb/commits{/sha}","git_commits_url":"https://api.github.com/repos/VoltDB/voltdb/git/commits{/sha}","comments_url":"https://api.github.com/repos/VoltDB/voltdb/comments{/number}","issue_comment_url":"https://api.github.com/repos/VoltDB/voltdb/issues/comments{/number}","contents_url":"https://api.github.com/repos/VoltDB/voltdb/contents/{+path}","compare_url":"https://api.github.com/repos/VoltDB/voltdb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/VoltDB/voltdb/merges","archive_url":"https://api.github.com/repos/VoltDB/voltdb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/VoltDB/voltdb/downloads","issues_url":"https://api.github.com/repos/VoltDB/voltdb/issues{/number}","pulls_url":"https://api.github.com/repos/VoltDB/voltdb/pulls{/number}","milestones_url":"https://api.github.com/repos/VoltDB/voltdb/milestones{/number}","notifications_url":"https://api.github.com/repos/VoltDB/voltdb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/VoltDB/voltdb/labels{/name}","releases_url":"https://api.github.com/repos/VoltDB/voltdb/releases{/id}","created_at":"2011-09-23T18:46:12Z","updated_at":"2015-03-24T15:18:06Z","pushed_at":"2015-03-24T21:46:45Z","git_url":"git://github.com/VoltDB/voltdb.git","ssh_url":"git@github.com:VoltDB/voltdb.git","clone_url":"https://github.com/VoltDB/voltdb.git","svn_url":"https://github.com/VoltDB/voltdb","homepage":"http://community.voltdb.com/","size":609561,"stargazers_count":473,"watchers_count":473,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":138,"mirror_url":null,"open_issues_count":30,"forks":138,"open_issues":30,"watchers":473,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/VoltDB/voltdb/pulls/2140"},"html":{"href":"https://github.com/VoltDB/voltdb/pull/2140"},"issue":{"href":"https://api.github.com/repos/VoltDB/voltdb/issues/2140"},"comments":{"href":"https://api.github.com/repos/VoltDB/voltdb/issues/2140/comments"},"review_comments":{"href":"https://api.github.com/repos/VoltDB/voltdb/pulls/2140/comments"},"review_comment":{"href":"https://api.github.com/repos/VoltDB/voltdb/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/VoltDB/voltdb/pulls/2140/commits"},"statuses":{"href":"https://api.github.com/repos/VoltDB/voltdb/statuses/63b95f77784a83bdcee81f11e525d44688fc37e2"}}}}