{"action":"created","comment":{"url":"https://api.github.com/repos/prestodb/presto/pulls/comments/66042306","id":66042306,"diff_hunk":"@@ -345,38 +376,83 @@ private void print(int indent, String format, Object... args)\n         output.append(indentString(indent)).append(value).append('\\n');\n     }\n \n-    private void printStats(int indent, PlanNodeId planNodeId)\n+    private void print(int indent, String format, List<Object> args)\n+    {\n+        print(indent, format, args.toArray(new Object[args.size()]));\n+    }\n+\n+    private void printStats(int intent, PlanNodeId planNodeId)\n+    {\n+        printStats(intent, planNodeId, false, false);\n+    }\n+\n+    private void printStats(int indent, PlanNodeId planNodeId, boolean printInput, boolean printFiltered)\n     {\n         if (!stats.isPresent()) {\n             return;\n         }\n+\n         long totalMillis = stats.get().values().stream()\n                 .mapToLong(node -> node.getWallTime().toMillis())\n                 .sum();\n-        PlanNodeStats stats = this.stats.get().get(planNodeId);\n-        if (stats == null) {\n-            output.append(indentString(indent))\n-                    .append(\"Cost: unknown, Output: unknown \\n\");\n+\n+        PlanNodeStats nodeStats = stats.get().get(planNodeId);\n+        if (nodeStats == null) {\n+            output.append(indentString(indent));\n+            output.append(\"Cost: ?\");\n+            if (printInput) {\n+                output.append(\", Input: ? lines (?B)\");\n+            }\n+            output.append(\", Output: ? lines (?B)\");\n+            if (printFiltered) {\n+                output.append(\", Filtered: ? %\");\n+            }\n+            output.append('\\n');\n             return;\n         }\n-        double fraction = (stats.getWallTime().toMillis()) / (double) totalMillis;\n+\n+        double fraction = (nodeStats.getWallTime().toMillis()) / (double) totalMillis;\n         String fractionString;\n         if (isFinite(fraction)) {\n-            fractionString = format(\"%.2f%%\", 100.0 * fraction);\n+            fractionString = format(Locale.US, \"%.2f%%\", 100.0 * fraction);\n         }\n         else {\n-            fractionString = \"unknown\";\n+            fractionString = \"?\";\n+        }\n+\n+        output.append(indentString(indent));\n+        output.append(\"Cost: \" + fractionString);\n+        if (printInput) {\n+            output.append(format(\", Input: %s (%s)\",\n+                    formatPositions(nodeStats.getInputPositions()),\n+                    nodeStats.getInputDataSize().toString()));\n+        }\n+        output.append(format(\", Output: %s (%s)\",\n+                formatPositions(nodeStats.getOutputPositions()),\n+                nodeStats.getOutputDataSize().toString()));\n+        if (printFiltered) {\n+            double filtered = 100.0 * (nodeStats.getInputPositions() - nodeStats.getOutputPositions()) / nodeStats.getInputPositions();\n+            String filteredString;\n+            if (isFinite(filtered)) {\n+                filteredString = format(Locale.US, \"%.2f%%\", filtered);\n+            }\n+            else {\n+                filteredString = \"?\";\n+            }\n+\n+            output.append(\", Filtered: \" + filteredString);\n         }\n+        output.append('\\n');\n+    }\n \n-        String outputString;\n-        if (stats.getOutputPositions().isPresent() && stats.getOutputDataSize().isPresent()) {\n-            outputString = format(\"%s rows (%s)\", stats.getOutputPositions().get(), stats.getOutputDataSize().get());\n+    private static String formatPositions(long positions)\n+    {\n+        if (positions == 1) {\n+            return \"1 line\";","path":"presto-main/src/main/java/com/facebook/presto/sql/planner/PlanPrinter.java","position":null,"original_position":246,"commit_id":"37fd100b93e34dce239b3d8530a5d8a30e289d8d","original_commit_id":"b666a919daff6702f8dafe87ac8e67d293ac00e2","user":{"login":"sopel39","id":5989165,"avatar_url":"https://avatars.githubusercontent.com/u/5989165?v=3","gravatar_id":"","url":"https://api.github.com/users/sopel39","html_url":"https://github.com/sopel39","followers_url":"https://api.github.com/users/sopel39/followers","following_url":"https://api.github.com/users/sopel39/following{/other_user}","gists_url":"https://api.github.com/users/sopel39/gists{/gist_id}","starred_url":"https://api.github.com/users/sopel39/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sopel39/subscriptions","organizations_url":"https://api.github.com/users/sopel39/orgs","repos_url":"https://api.github.com/users/sopel39/repos","events_url":"https://api.github.com/users/sopel39/events{/privacy}","received_events_url":"https://api.github.com/users/sopel39/received_events","type":"User","site_admin":false},"body":"done","created_at":"2016-06-07T10:01:37Z","updated_at":"2016-06-07T10:01:37Z","html_url":"https://github.com/prestodb/presto/pull/5291#discussion_r66042306","pull_request_url":"https://api.github.com/repos/prestodb/presto/pulls/5291","_links":{"self":{"href":"https://api.github.com/repos/prestodb/presto/pulls/comments/66042306"},"html":{"href":"https://github.com/prestodb/presto/pull/5291#discussion_r66042306"},"pull_request":{"href":"https://api.github.com/repos/prestodb/presto/pulls/5291"}}},"pull_request":{"url":"https://api.github.com/repos/prestodb/presto/pulls/5291","id":70346616,"html_url":"https://github.com/prestodb/presto/pull/5291","diff_url":"https://github.com/prestodb/presto/pull/5291.diff","patch_url":"https://github.com/prestodb/presto/pull/5291.patch","issue_url":"https://api.github.com/repos/prestodb/presto/issues/5291","number":5291,"state":"open","locked":false,"title":"Feature explain analyze","user":{"login":"sopel39","id":5989165,"avatar_url":"https://avatars.githubusercontent.com/u/5989165?v=3","gravatar_id":"","url":"https://api.github.com/users/sopel39","html_url":"https://github.com/sopel39","followers_url":"https://api.github.com/users/sopel39/followers","following_url":"https://api.github.com/users/sopel39/following{/other_user}","gists_url":"https://api.github.com/users/sopel39/gists{/gist_id}","starred_url":"https://api.github.com/users/sopel39/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sopel39/subscriptions","organizations_url":"https://api.github.com/users/sopel39/orgs","repos_url":"https://api.github.com/users/sopel39/repos","events_url":"https://api.github.com/users/sopel39/events{/privacy}","received_events_url":"https://api.github.com/users/sopel39/received_events","type":"User","site_admin":false},"body":"FYI: @cberner \r\n\r\nAdded support for:\r\n- input skewness (average, std dev) for operators\r\n- number of collisions (average, % expected, std dev) for hash operators for join and aggregation\r\n- ScanFilterProject operator\r\n- input statistics\r\n\r\nExplain analyze examples\r\n```\r\npresto:sf1> EXPLAIN ANALYZE SELECT count(*), clerk FROM orders GROUP BY clerk;\r\n                                                            Query Plan                                                             \r\n-----------------------------------------------------------------------------------------------------------------------------------\r\n Fragment 1 [SINGLE]                                                                                                               \r\n     Cost: CPU 23.00us, Input: 0 lines (0B), Output: 0 lines (0B)                                                                  \r\n     Output layout: [count]                                                                                                        \r\n     Output partitioning: SINGLE []                                                                                                \r\n     - Output[Query Plan] => [count:bigint]                                                                                        \r\n             Cost: ?%, Output: 0 lines (0B)                                                                                        \r\n             TaskOutputOperator := Drivers: 1, Input avg.: 0.00 lines, Input std.dev.: ?%                                          \r\n             TaskOutputOperator := Collisions avg.: ? (?% est.), Collisions std.dev.: ?%                                           \r\n             Query Plan := count                                                                                                   \r\n         - RemoteSource[2] => [count:bigint]                                                                                       \r\n                 Cost: ?%, Output: 0 lines (0B)                                                                                    \r\n                 ExchangeOperator := Drivers: 1, Input avg.: 0.00 lines, Input std.dev.: ?%                                        \r\n                 ExchangeOperator := Collisions avg.: ? (?% est.), Collisions std.dev.: ?%                                         \r\n                                                                                                                                   \r\n Fragment 2 [HASH]                                                                                                                 \r\n     Cost: CPU 59.00us, Input: 0 lines (0B), Output: 0 lines (0B)                                                                  \r\n     Output layout: [count]                                                                                                        \r\n     Output partitioning: SINGLE []                                                                                                \r\n     - ScanFilterAndProject[] => [count:bigint]                                                                                    \r\n             Cost: ?%, Input: 0 lines (0B), Output: 0 lines (0B), Filtered: ?%                                                     \r\n             TaskOutputOperator := Drivers: 1, Input avg.: 0.00 lines, Input std.dev.: ?%                                          \r\n             TaskOutputOperator := Collisions avg.: ? (?% est.), Collisions std.dev.: ?%                                           \r\n             FilterAndProjectOperator := Drivers: 1, Input avg.: 0.00 lines, Input std.dev.: ?%                                    \r\n             FilterAndProjectOperator := Collisions avg.: ? (?% est.), Collisions std.dev.: ?%                                     \r\n         - Aggregate(FINAL)[clerk] => [clerk:varchar, $hashvalue:bigint, count:bigint]                                             \r\n                 Cost: ?%, Output: 0 lines (0B)                                                                                    \r\n                 HashAggregationOperator := Drivers: 1, Input avg.: 0.00 lines, Input std.dev.: ?%                                 \r\n                 HashAggregationOperator := Collisions avg.: ? (?% est.), Collisions std.dev.: ?%                                  \r\n                 count := \"count\"(\"count_8\")                                                                                       \r\n             - RemoteSource[3] => [clerk:varchar, count_8:bigint, $hashvalue:bigint]                                               \r\n                     Cost: ?%, Output: 0 lines (0B)                                                                                \r\n                     ExchangeOperator := Drivers: 1, Input avg.: 0.00 lines, Input std.dev.: ?%                                    \r\n                     ExchangeOperator := Collisions avg.: ? (?% est.), Collisions std.dev.: ?%                                     \r\n                                                                                                                                   \r\n Fragment 3 [tpch:orders:1500000]                                                                                                  \r\n     Cost: CPU 3.65s, Input: 1402556 lines (38.79MB), Output: 0 lines (0B)                                                         \r\n     Output layout: [clerk, count_8, $hashvalue_9]                                                                                 \r\n     Output partitioning: HASH [clerk]                                                                                             \r\n     - Aggregate(PARTIAL)[clerk] => [clerk:varchar, $hashvalue_9:bigint, count_8:bigint]                                           \r\n             Cost: 4.52%, Output: 0 lines (0B)                                                                                     \r\n             HashAggregationOperator := Drivers: 4, Input avg.: 349819.75 lines, Input std.dev.: 1.39%                             \r\n             HashAggregationOperator := Collisions avg.: 9789.79 (30169.73% est.), Collisions std.dev.: 1.89%                      \r\n             PartitionedOutputOperator := Drivers: 4, Input avg.: 0.00 lines, Input std.dev.: ?%                                   \r\n             PartitionedOutputOperator := Collisions avg.: ? (?% est.), Collisions std.dev.: ?%                                    \r\n             count_8 := \"count\"(*)                                                                                                 \r\n         - ScanFilterAndProject[table = tpch:tpch:orders:sf1.0, originalConstraint = true] => [clerk:varchar, $hashvalue_9:bigint] \r\n                 Cost: 95.48%, Input: 1402556 lines (0B), Output: 1402556 lines (38.79MB), Filtered: 0.00%                         \r\n                 ScanFilterAndProjectOperator := Drivers: 4, Input avg.: 350639.00 lines, Input std.dev.: 1.32%                    \r\n                 $hashvalue_9 := \"combine_hash\"(BIGINT '0', COALESCE(\"$operator$hash_code\"(\"clerk\"), 0))                           \r\n                 clerk := tpch:clerk                                                                                               \r\n                                                                                                                                   \r\n                                                                                                                                   \r\n(1 row)\r\n\r\nQuery 20160517_120933_00018_r7b5b, FINISHED, 1 node\r\nSplits: 7 total, 7 done (100,00%)\r\n0:02 [1,5M rows, 0B] [750K rows/s, 0B/s]\r\n```\r\n\r\n```\r\npresto:sf1> EXPLAIN ANALYZE SELECT * FROM orders a JOIN orders b ON a.orderkey = b.orderkey;\r\n                                                              Query Plan                                                               \r\n---------------------------------------------------------------------------------------------------------------------------------------\r\n Fragment 1 [SINGLE]                                                                                                                   \r\n     Cost: CPU 25.76ms, Input: 1441836 lines (12.38MB), Output: 1441836 lines (12.38MB)                                                \r\n     Output layout: [orderkey]                                                                                                         \r\n     Output partitioning: SINGLE []                                                                                                    \r\n     - Output[Query Plan] => [orderkey:bigint]                                                                                         \r\n             Cost: 83.33%, Output: 1441836 lines (12.38MB)                                                                             \r\n             TaskOutputOperator := Drivers: 1, Input avg.: 1441836.00 lines, Input std.dev.: 0.00%                                     \r\n             Query Plan := orderkey                                                                                                    \r\n         - RemoteSource[2] => [orderkey:bigint]                                                                                        \r\n                 Cost: 16.67%, Output: 1441836 lines (12.38MB)                                                                         \r\n                 ExchangeOperator := Drivers: 1, Input avg.: 1441836.00 lines, Input std.dev.: 0.00%                                   \r\n                                                                                                                                       \r\n Fragment 2 [tpch:orders:1500000]                                                                                                      \r\n     Cost: CPU 6.61s, Input: 2890862 lines (49.62MB), Output: 1390862 lines (11.94MB)                                                  \r\n     Output layout: [orderkey]                                                                                                         \r\n     Output partitioning: SINGLE []                                                                                                    \r\n     - ScanFilterAndProject[] => [orderkey:bigint]                                                                                     \r\n             Cost: 0.98%, Input: 1390862 lines (47.75MB), Output: 1390862 lines (11.94MB), Filtered: 0.00%                             \r\n             TaskOutputOperator := Drivers: 4, Input avg.: 347715.50 lines, Input std.dev.: 2.28%                                      \r\n             FilterAndProjectOperator := Drivers: 4, Input avg.: 347715.50 lines, Input std.dev.: 2.28%                                \r\n         - InnerJoin[(\"orderkey\" = \"orderkey_0\")] => [orderkey:bigint, $hashvalue:bigint, orderkey_0:bigint, $hashvalue_83:bigint]     \r\n                 Cost: 22.13%, Output: 1390862 lines (47.75MB)                                                                         \r\n                 LookupJoinOperator := Drivers: 4, Input avg.: 347715.50 lines, Input std.dev.: 2.28%                                  \r\n                 HashBuilderOperator := Drivers: 1, Input avg.: 1500000.00 lines, Input std.dev.: 0.00%                                \r\n                 HashBuilderOperator := Collisions avg.: 1896606.00 (100.81% est.), Collisions std.dev.: 0.00%                         \r\n             - ScanFilterAndProject[table = tpch:tpch:orders:sf1.0, originalConstraint = true] => [orderkey:bigint, $hashvalue:bigint] \r\n                     Cost: 76.82%, Input: 1390862 lines (0B), Output: 1390862 lines (23.88MB), Filtered: 0.00%                         \r\n                     ScanFilterAndProjectOperator := Drivers: 4, Input avg.: 347715.50 lines, Input std.dev.: 2.28%                    \r\n                     $hashvalue := \"combine_hash\"(BIGINT '0', COALESCE(\"$operator$hash_code\"(\"orderkey\"), 0))                          \r\n                     orderkey := tpch:orderkey                                                                                         \r\n             - RemoteSource[3] => [orderkey_0:bigint, $hashvalue_83:bigint]                                                            \r\n                     Cost: 0.07%, Output: 1500000 lines (25.75MB)                                                                      \r\n                     ExchangeOperator := Drivers: 1, Input avg.: 1500000.00 lines, Input std.dev.: 0.00%                               \r\n                                                                                                                                       \r\n Fragment 3 [tpch:orders:1500000]                                                                                                      \r\n     Cost: CPU 6.64s, Input: 1500000 lines (25.75MB), Output: 1500000 lines (25.75MB)                                                  \r\n     Output layout: [orderkey_0, $hashvalue_84]                                                                                        \r\n     Output partitioning: tpch:orders:1500000 [orderkey_0]                                                                             \r\n     - ScanFilterAndProject[table = tpch:tpch:orders:sf1.0, originalConstraint = true] => [orderkey_0:bigint, $hashvalue_84:bigint]    \r\n             Cost: 100.00%, Input: 1500000 lines (0B), Output: 1500000 lines (25.75MB), Filtered: 0.00%                                \r\n             PartitionedOutputOperator := Drivers: 4, Input avg.: 375000.00 lines, Input std.dev.: 0.00%                               \r\n             ScanFilterAndProjectOperator := Drivers: 4, Input avg.: 375000.00 lines, Input std.dev.: 0.00%                            \r\n             $hashvalue_84 := \"combine_hash\"(BIGINT '0', COALESCE(\"$operator$hash_code\"(\"orderkey_0\"), 0))                             \r\n             orderkey_0 := tpch:orderkey                                                                                               \r\n                                                                                                                                       \r\n                                                                                                                                       \r\n(1 row)\r\n\r\nQuery 20160517_121032_00019_r7b5b, FINISHED, 1 node\r\nSplits: 11 total, 11 done (100,00%)\r\n0:05 [4,5M rows, 25,8MB] [871K rows/s, 4,98MB/s]\r\n```","created_at":"2016-05-17T12:18:02Z","updated_at":"2016-06-07T10:01:37Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3d2f7ec5224e72f52ec101eca9d0fa25945f6502","assignee":{"login":"sopel39","id":5989165,"avatar_url":"https://avatars.githubusercontent.com/u/5989165?v=3","gravatar_id":"","url":"https://api.github.com/users/sopel39","html_url":"https://github.com/sopel39","followers_url":"https://api.github.com/users/sopel39/followers","following_url":"https://api.github.com/users/sopel39/following{/other_user}","gists_url":"https://api.github.com/users/sopel39/gists{/gist_id}","starred_url":"https://api.github.com/users/sopel39/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sopel39/subscriptions","organizations_url":"https://api.github.com/users/sopel39/orgs","repos_url":"https://api.github.com/users/sopel39/repos","events_url":"https://api.github.com/users/sopel39/events{/privacy}","received_events_url":"https://api.github.com/users/sopel39/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/prestodb/presto/pulls/5291/commits","review_comments_url":"https://api.github.com/repos/prestodb/presto/pulls/5291/comments","review_comment_url":"https://api.github.com/repos/prestodb/presto/pulls/comments{/number}","comments_url":"https://api.github.com/repos/prestodb/presto/issues/5291/comments","statuses_url":"https://api.github.com/repos/prestodb/presto/statuses/37fd100b93e34dce239b3d8530a5d8a30e289d8d","head":{"label":"Teradata:feature_explain_analyze","ref":"feature_explain_analyze","sha":"37fd100b93e34dce239b3d8530a5d8a30e289d8d","user":{"login":"Teradata","id":1615979,"avatar_url":"https://avatars.githubusercontent.com/u/1615979?v=3","gravatar_id":"","url":"https://api.github.com/users/Teradata","html_url":"https://github.com/Teradata","followers_url":"https://api.github.com/users/Teradata/followers","following_url":"https://api.github.com/users/Teradata/following{/other_user}","gists_url":"https://api.github.com/users/Teradata/gists{/gist_id}","starred_url":"https://api.github.com/users/Teradata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Teradata/subscriptions","organizations_url":"https://api.github.com/users/Teradata/orgs","repos_url":"https://api.github.com/users/Teradata/repos","events_url":"https://api.github.com/users/Teradata/events{/privacy}","received_events_url":"https://api.github.com/users/Teradata/received_events","type":"Organization","site_admin":false},"repo":{"id":36903368,"name":"presto","full_name":"Teradata/presto","owner":{"login":"Teradata","id":1615979,"avatar_url":"https://avatars.githubusercontent.com/u/1615979?v=3","gravatar_id":"","url":"https://api.github.com/users/Teradata","html_url":"https://github.com/Teradata","followers_url":"https://api.github.com/users/Teradata/followers","following_url":"https://api.github.com/users/Teradata/following{/other_user}","gists_url":"https://api.github.com/users/Teradata/gists{/gist_id}","starred_url":"https://api.github.com/users/Teradata/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Teradata/subscriptions","organizations_url":"https://api.github.com/users/Teradata/orgs","repos_url":"https://api.github.com/users/Teradata/repos","events_url":"https://api.github.com/users/Teradata/events{/privacy}","received_events_url":"https://api.github.com/users/Teradata/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Teradata/presto","description":"Teradata's Certified Version of Presto -- A Distributed SQL Query Engine for Big Data","fork":true,"url":"https://api.github.com/repos/Teradata/presto","forks_url":"https://api.github.com/repos/Teradata/presto/forks","keys_url":"https://api.github.com/repos/Teradata/presto/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Teradata/presto/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Teradata/presto/teams","hooks_url":"https://api.github.com/repos/Teradata/presto/hooks","issue_events_url":"https://api.github.com/repos/Teradata/presto/issues/events{/number}","events_url":"https://api.github.com/repos/Teradata/presto/events","assignees_url":"https://api.github.com/repos/Teradata/presto/assignees{/user}","branches_url":"https://api.github.com/repos/Teradata/presto/branches{/branch}","tags_url":"https://api.github.com/repos/Teradata/presto/tags","blobs_url":"https://api.github.com/repos/Teradata/presto/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Teradata/presto/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Teradata/presto/git/refs{/sha}","trees_url":"https://api.github.com/repos/Teradata/presto/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Teradata/presto/statuses/{sha}","languages_url":"https://api.github.com/repos/Teradata/presto/languages","stargazers_url":"https://api.github.com/repos/Teradata/presto/stargazers","contributors_url":"https://api.github.com/repos/Teradata/presto/contributors","subscribers_url":"https://api.github.com/repos/Teradata/presto/subscribers","subscription_url":"https://api.github.com/repos/Teradata/presto/subscription","commits_url":"https://api.github.com/repos/Teradata/presto/commits{/sha}","git_commits_url":"https://api.github.com/repos/Teradata/presto/git/commits{/sha}","comments_url":"https://api.github.com/repos/Teradata/presto/comments{/number}","issue_comment_url":"https://api.github.com/repos/Teradata/presto/issues/comments{/number}","contents_url":"https://api.github.com/repos/Teradata/presto/contents/{+path}","compare_url":"https://api.github.com/repos/Teradata/presto/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Teradata/presto/merges","archive_url":"https://api.github.com/repos/Teradata/presto/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Teradata/presto/downloads","issues_url":"https://api.github.com/repos/Teradata/presto/issues{/number}","pulls_url":"https://api.github.com/repos/Teradata/presto/pulls{/number}","milestones_url":"https://api.github.com/repos/Teradata/presto/milestones{/number}","notifications_url":"https://api.github.com/repos/Teradata/presto/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Teradata/presto/labels{/name}","releases_url":"https://api.github.com/repos/Teradata/presto/releases{/id}","deployments_url":"https://api.github.com/repos/Teradata/presto/deployments","created_at":"2015-06-05T00:38:37Z","updated_at":"2016-06-07T02:11:19Z","pushed_at":"2016-06-07T07:55:59Z","git_url":"git://github.com/Teradata/presto.git","ssh_url":"git@github.com:Teradata/presto.git","clone_url":"https://github.com/Teradata/presto.git","svn_url":"https://github.com/Teradata/presto","homepage":"http://www.teradata.com/presto","size":141679,"stargazers_count":50,"watchers_count":50,"language":"Java","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":8,"mirror_url":null,"open_issues_count":6,"forks":8,"open_issues":6,"watchers":50,"default_branch":"master"}},"base":{"label":"prestodb:master","ref":"master","sha":"8746108c79e3d64444b67f5836c3a302253e812c","user":{"login":"prestodb","id":6882181,"avatar_url":"https://avatars.githubusercontent.com/u/6882181?v=3","gravatar_id":"","url":"https://api.github.com/users/prestodb","html_url":"https://github.com/prestodb","followers_url":"https://api.github.com/users/prestodb/followers","following_url":"https://api.github.com/users/prestodb/following{/other_user}","gists_url":"https://api.github.com/users/prestodb/gists{/gist_id}","starred_url":"https://api.github.com/users/prestodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prestodb/subscriptions","organizations_url":"https://api.github.com/users/prestodb/orgs","repos_url":"https://api.github.com/users/prestodb/repos","events_url":"https://api.github.com/users/prestodb/events{/privacy}","received_events_url":"https://api.github.com/users/prestodb/received_events","type":"Organization","site_admin":false},"repo":{"id":5349565,"name":"presto","full_name":"prestodb/presto","owner":{"login":"prestodb","id":6882181,"avatar_url":"https://avatars.githubusercontent.com/u/6882181?v=3","gravatar_id":"","url":"https://api.github.com/users/prestodb","html_url":"https://github.com/prestodb","followers_url":"https://api.github.com/users/prestodb/followers","following_url":"https://api.github.com/users/prestodb/following{/other_user}","gists_url":"https://api.github.com/users/prestodb/gists{/gist_id}","starred_url":"https://api.github.com/users/prestodb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/prestodb/subscriptions","organizations_url":"https://api.github.com/users/prestodb/orgs","repos_url":"https://api.github.com/users/prestodb/repos","events_url":"https://api.github.com/users/prestodb/events{/privacy}","received_events_url":"https://api.github.com/users/prestodb/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/prestodb/presto","description":"Distributed SQL query engine for big data","fork":false,"url":"https://api.github.com/repos/prestodb/presto","forks_url":"https://api.github.com/repos/prestodb/presto/forks","keys_url":"https://api.github.com/repos/prestodb/presto/keys{/key_id}","collaborators_url":"https://api.github.com/repos/prestodb/presto/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/prestodb/presto/teams","hooks_url":"https://api.github.com/repos/prestodb/presto/hooks","issue_events_url":"https://api.github.com/repos/prestodb/presto/issues/events{/number}","events_url":"https://api.github.com/repos/prestodb/presto/events","assignees_url":"https://api.github.com/repos/prestodb/presto/assignees{/user}","branches_url":"https://api.github.com/repos/prestodb/presto/branches{/branch}","tags_url":"https://api.github.com/repos/prestodb/presto/tags","blobs_url":"https://api.github.com/repos/prestodb/presto/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/prestodb/presto/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/prestodb/presto/git/refs{/sha}","trees_url":"https://api.github.com/repos/prestodb/presto/git/trees{/sha}","statuses_url":"https://api.github.com/repos/prestodb/presto/statuses/{sha}","languages_url":"https://api.github.com/repos/prestodb/presto/languages","stargazers_url":"https://api.github.com/repos/prestodb/presto/stargazers","contributors_url":"https://api.github.com/repos/prestodb/presto/contributors","subscribers_url":"https://api.github.com/repos/prestodb/presto/subscribers","subscription_url":"https://api.github.com/repos/prestodb/presto/subscription","commits_url":"https://api.github.com/repos/prestodb/presto/commits{/sha}","git_commits_url":"https://api.github.com/repos/prestodb/presto/git/commits{/sha}","comments_url":"https://api.github.com/repos/prestodb/presto/comments{/number}","issue_comment_url":"https://api.github.com/repos/prestodb/presto/issues/comments{/number}","contents_url":"https://api.github.com/repos/prestodb/presto/contents/{+path}","compare_url":"https://api.github.com/repos/prestodb/presto/compare/{base}...{head}","merges_url":"https://api.github.com/repos/prestodb/presto/merges","archive_url":"https://api.github.com/repos/prestodb/presto/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/prestodb/presto/downloads","issues_url":"https://api.github.com/repos/prestodb/presto/issues{/number}","pulls_url":"https://api.github.com/repos/prestodb/presto/pulls{/number}","milestones_url":"https://api.github.com/repos/prestodb/presto/milestones{/number}","notifications_url":"https://api.github.com/repos/prestodb/presto/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/prestodb/presto/labels{/name}","releases_url":"https://api.github.com/repos/prestodb/presto/releases{/id}","deployments_url":"https://api.github.com/repos/prestodb/presto/deployments","created_at":"2012-08-09T01:03:37Z","updated_at":"2016-06-07T09:42:15Z","pushed_at":"2016-06-07T07:56:00Z","git_url":"git://github.com/prestodb/presto.git","ssh_url":"git@github.com:prestodb/presto.git","clone_url":"https://github.com/prestodb/presto.git","svn_url":"https://github.com/prestodb/presto","homepage":"https://prestodb.io","size":154231,"stargazers_count":4800,"watchers_count":4800,"language":"Java","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1429,"mirror_url":null,"open_issues_count":545,"forks":1429,"open_issues":545,"watchers":4800,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/prestodb/presto/pulls/5291"},"html":{"href":"https://github.com/prestodb/presto/pull/5291"},"issue":{"href":"https://api.github.com/repos/prestodb/presto/issues/5291"},"comments":{"href":"https://api.github.com/repos/prestodb/presto/issues/5291/comments"},"review_comments":{"href":"https://api.github.com/repos/prestodb/presto/pulls/5291/comments"},"review_comment":{"href":"https://api.github.com/repos/prestodb/presto/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/prestodb/presto/pulls/5291/commits"},"statuses":{"href":"https://api.github.com/repos/prestodb/presto/statuses/37fd100b93e34dce239b3d8530a5d8a30e289d8d"}}}}
{"actor":{"display_login":"sopel39"}}