{"action":"created","comment":{"url":"https://api.github.com/repos/hyrise/hyrise/pulls/comments/220723418","pull_request_review_id":159185039,"id":220723418,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIyMDcyMzQxOA==","diff_hunk":"@@ -0,0 +1,206 @@\n+#include \"equal_element_count_histogram.hpp\"\n+\n+#include <memory>\n+#include <numeric>\n+#include <string>\n+#include <utility>\n+#include <vector>\n+\n+#include \"histogram_utils.hpp\"\n+\n+namespace opossum {\n+\n+template <typename T>\n+EqualElementCountHistogram<T>::EqualElementCountHistogram(const std::vector<T>& mins, const std::vector<T>& maxs,\n+                                                          const std::vector<HistogramCountType>& heights,\n+                                                          const HistogramCountType distinct_count_per_bin,\n+                                                          const BinID bin_count_with_extra_value)\n+    : AbstractHistogram<T>(),\n+      _mins(mins),\n+      _maxs(maxs),\n+      _heights(heights),\n+      _distinct_count_per_bin(distinct_count_per_bin),\n+      _bin_count_with_extra_value(bin_count_with_extra_value) {\n+  DebugAssert(mins.size() > 0, \"Cannot have histogram without any bins.\");\n+  DebugAssert(mins.size() == maxs.size(), \"Must have the same number of lower as upper bin edges.\");\n+  DebugAssert(mins.size() == heights.size(), \"Must have the same number of edges and heights.\");\n+  DebugAssert(distinct_count_per_bin > 0, \"Cannot have bins with no distinct values.\");\n+  DebugAssert(bin_count_with_extra_value < mins.size(), \"Cannot have more bins with extra value than bins.\");\n+\n+  for (auto bin_id = 0u; bin_id < mins.size(); bin_id++) {\n+    DebugAssert(heights[bin_id] > 0, \"Cannot have empty bins.\");\n+    DebugAssert(mins[bin_id] <= maxs[bin_id], \"Cannot have overlapping bins.\");\n+\n+    if (bin_id < maxs.size() - 1) {\n+      DebugAssert(mins[bin_id] < mins[bin_id + 1], \"Bins must be sorted and cannot overlap.\");\n+      DebugAssert(maxs[bin_id] < maxs[bin_id + 1], \"Bins must be sorted and cannot overlap.\");\n+    }\n+  }\n+}\n+\n+template <>\n+EqualElementCountHistogram<std::string>::EqualElementCountHistogram(const std::vector<std::string>& mins,\n+                                                                    const std::vector<std::string>& maxs,\n+                                                                    const std::vector<HistogramCountType>& heights,\n+                                                                    const HistogramCountType distinct_count_per_bin,\n+                                                                    const BinID bin_count_with_extra_value,\n+                                                                    const std::string& supported_characters,\n+                                                                    const uint32_t string_prefix_length)\n+    : AbstractHistogram<std::string>(supported_characters, string_prefix_length),\n+      _mins(mins),\n+      _maxs(maxs),\n+      _heights(heights),\n+      _distinct_count_per_bin(distinct_count_per_bin),\n+      _bin_count_with_extra_value(bin_count_with_extra_value) {\n+  DebugAssert(mins.size() > 0, \"Cannot have histogram without any bins.\");\n+  DebugAssert(mins.size() == maxs.size(), \"Must have the same number of lower as upper bin edges.\");\n+  DebugAssert(mins.size() == heights.size(), \"Must have the same number of edges and heights.\");\n+  DebugAssert(distinct_count_per_bin > 0, \"Cannot have bins with no distinct values.\");\n+  DebugAssert(bin_count_with_extra_value < mins.size(), \"Cannot have more bins with extra value than bins.\");\n+\n+  for (auto bin_id = 0u; bin_id < mins.size(); bin_id++) {\n+    DebugAssert(heights[bin_id] > 0, \"Cannot have empty bins.\");\n+    DebugAssert(mins[bin_id].find_first_not_of(supported_characters) == std::string::npos, \"Unsupported characters.\");\n+    DebugAssert(maxs[bin_id].find_first_not_of(supported_characters) == std::string::npos, \"Unsupported characters.\");\n+    DebugAssert(mins[bin_id] <= maxs[bin_id], \"Cannot have upper bin edge higher than lower bin edge.\");\n+\n+    if (bin_id < maxs.size() - 1) {\n+      DebugAssert(mins[bin_id] < mins[bin_id + 1], \"Bins must be sorted and cannot overlap.\");\n+      DebugAssert(maxs[bin_id] < maxs[bin_id + 1], \"Bins must be sorted and cannot overlap.\");\n+    }\n+  }\n+}\n+\n+template <typename T>\n+EqualElementCountBinStats<T> EqualElementCountHistogram<T>::_get_bin_stats(\n+    const std::vector<std::pair<T, HistogramCountType>>& value_counts, const BinID max_bin_count) {\n+  // If there are fewer distinct values than the number of desired bins use that instead.\n+  const auto bin_count = value_counts.size() < max_bin_count ? static_cast<BinID>(value_counts.size()) : max_bin_count;\n+\n+  // Split values evenly among bins.\n+  const HistogramCountType distinct_count_per_bin = static_cast<HistogramCountType>(value_counts.size() / bin_count);\n+  const BinID bin_count_with_extra_value = value_counts.size() % bin_count;\n+\n+  std::vector<T> mins;\n+  std::vector<T> maxs;\n+  std::vector<HistogramCountType> heights;\n+  mins.reserve(bin_count);\n+  maxs.reserve(bin_count);\n+  heights.reserve(bin_count);\n+\n+  auto begin_index = 0ul;\n+  for (BinID bin_index = 0; bin_index < bin_count; bin_index++) {\n+    auto end_index = begin_index + distinct_count_per_bin - 1;\n+    if (bin_index < bin_count_with_extra_value) {\n+      end_index++;\n+    }\n+\n+    mins.emplace_back(value_counts[begin_index].first);\n+    maxs.emplace_back(value_counts[end_index].first);\n+    heights.emplace_back(std::accumulate(\n+        value_counts.cbegin() + begin_index, value_counts.cbegin() + end_index + 1, HistogramCountType{0},\n+        [](HistogramCountType a, const std::pair<T, HistogramCountType>& b) { return a + b.second; }));\n+\n+    begin_index = end_index + 1;\n+  }\n+\n+  return {mins, maxs, heights, distinct_count_per_bin, bin_count_with_extra_value};\n+}\n+\n+template <typename T>\n+std::shared_ptr<EqualElementCountHistogram<T>> EqualElementCountHistogram<T>::from_segment(\n+    const std::shared_ptr<const BaseSegment>& segment, const BinID max_bin_count,\n+    const std::optional<std::string>& supported_characters, const std::optional<uint32_t>& string_prefix_length) {\n+  const auto value_counts = AbstractHistogram<T>::_value_counts_in_segment(segment);\n+\n+  if (value_counts.empty()) {\n+    return nullptr;\n+  }\n+\n+  const auto bin_stats = EqualElementCountHistogram<T>::_get_bin_stats(value_counts, max_bin_count);\n+\n+  if constexpr (std::is_same_v<T, std::string>) {\n+    const auto [characters, prefix_length] =  // NOLINT (Extra space before [)\n+        get_default_or_check_prefix_settings(supported_characters, string_prefix_length);\n+    return std::make_shared<EqualElementCountHistogram<T>>(\n+        bin_stats.mins, bin_stats.maxs, bin_stats.heights, bin_stats.distinct_count_per_bin,\n+        bin_stats.bin_count_with_extra_value, characters, prefix_length);\n+  } else {\n+    DebugAssert(!static_cast<bool>(supported_characters) && !static_cast<bool>(string_prefix_length),\n+                \"Do not provide string prefix prefix arguments for non-string histograms.\");","path":"src/lib/statistics/chunk_statistics/histograms/equal_element_count_histogram.cpp","position":130,"original_position":130,"commit_id":"bd764212bdeebd5992f7b7819e85c24349c24c6b","original_commit_id":"bd764212bdeebd5992f7b7819e85c24349c24c6b","user":{"login":"mrzzzrm","id":2679018,"node_id":"MDQ6VXNlcjI2NzkwMTg=","avatar_url":"https://avatars3.githubusercontent.com/u/2679018?v=4","gravatar_id":"","url":"https://api.github.com/users/mrzzzrm","html_url":"https://github.com/mrzzzrm","followers_url":"https://api.github.com/users/mrzzzrm/followers","following_url":"https://api.github.com/users/mrzzzrm/following{/other_user}","gists_url":"https://api.github.com/users/mrzzzrm/gists{/gist_id}","starred_url":"https://api.github.com/users/mrzzzrm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mrzzzrm/subscriptions","organizations_url":"https://api.github.com/users/mrzzzrm/orgs","repos_url":"https://api.github.com/users/mrzzzrm/repos","events_url":"https://api.github.com/users/mrzzzrm/events{/privacy}","received_events_url":"https://api.github.com/users/mrzzzrm/received_events","type":"User","site_admin":false},"body":"Okay, these runtime checks for string/non-string are ugly... I'll think of something.","created_at":"2018-09-26T21:05:39Z","updated_at":"2018-09-26T21:16:27Z","html_url":"https://github.com/hyrise/hyrise/pull/1118#discussion_r220723418","pull_request_url":"https://api.github.com/repos/hyrise/hyrise/pulls/1118","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/hyrise/hyrise/pulls/comments/220723418"},"html":{"href":"https://github.com/hyrise/hyrise/pull/1118#discussion_r220723418"},"pull_request":{"href":"https://api.github.com/repos/hyrise/hyrise/pulls/1118"}}},"pull_request":{"url":"https://api.github.com/repos/hyrise/hyrise/pulls/1118","id":214990690,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE0OTkwNjkw","html_url":"https://github.com/hyrise/hyrise/pull/1118","diff_url":"https://github.com/hyrise/hyrise/pull/1118.diff","patch_url":"https://github.com/hyrise/hyrise/pull/1118.patch","issue_url":"https://api.github.com/repos/hyrise/hyrise/issues/1118","number":1118,"state":"open","locked":false,"title":"Add histograms for segment statistics","user":{"login":"timzimmermann","id":5834455,"node_id":"MDQ6VXNlcjU4MzQ0NTU=","avatar_url":"https://avatars2.githubusercontent.com/u/5834455?v=4","gravatar_id":"","url":"https://api.github.com/users/timzimmermann","html_url":"https://github.com/timzimmermann","followers_url":"https://api.github.com/users/timzimmermann/followers","following_url":"https://api.github.com/users/timzimmermann/following{/other_user}","gists_url":"https://api.github.com/users/timzimmermann/gists{/gist_id}","starred_url":"https://api.github.com/users/timzimmermann/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/timzimmermann/subscriptions","organizations_url":"https://api.github.com/users/timzimmermann/orgs","repos_url":"https://api.github.com/users/timzimmermann/repos","events_url":"https://api.github.com/users/timzimmermann/events{/privacy}","received_events_url":"https://api.github.com/users/timzimmermann/received_events","type":"User","site_admin":false},"body":"This PR introduces three histogram types with the ability to prune and estimate cardinalities.\r\nThe histograms are intended to be built on a per-segment basis.\r\nAs of now, the histograms are not used because there will be a major rewrite of the statistics component.\r\n\r\nThere is quite some special handling required for string histograms.\r\nI have started writing down some thoughts for my thesis [here](https://github.com/hyrise/hyrise/files/2375627/string_histograms.pdf), which might help understand the way things are done.\r\nOtherwise, just ask, of course.","created_at":"2018-09-12T14:51:00Z","updated_at":"2018-09-26T21:16:26Z","closed_at":null,"merged_at":null,"merge_commit_sha":"da8d43e23bcab4cc9c1c391f30bd064c2a400e91","assignee":null,"assignees":[],"requested_reviewers":[{"login":"Bensk1","id":1655756,"node_id":"MDQ6VXNlcjE2NTU3NTY=","avatar_url":"https://avatars2.githubusercontent.com/u/1655756?v=4","gravatar_id":"","url":"https://api.github.com/users/Bensk1","html_url":"https://github.com/Bensk1","followers_url":"https://api.github.com/users/Bensk1/followers","following_url":"https://api.github.com/users/Bensk1/following{/other_user}","gists_url":"https://api.github.com/users/Bensk1/gists{/gist_id}","starred_url":"https://api.github.com/users/Bensk1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Bensk1/subscriptions","organizations_url":"https://api.github.com/users/Bensk1/orgs","repos_url":"https://api.github.com/users/Bensk1/repos","events_url":"https://api.github.com/users/Bensk1/events{/privacy}","received_events_url":"https://api.github.com/users/Bensk1/received_events","type":"User","site_admin":false},{"login":"Bouncner","id":1745857,"node_id":"MDQ6VXNlcjE3NDU4NTc=","avatar_url":"https://avatars2.githubusercontent.com/u/1745857?v=4","gravatar_id":"","url":"https://api.github.com/users/Bouncner","html_url":"https://github.com/Bouncner","followers_url":"https://api.github.com/users/Bouncner/followers","following_url":"https://api.github.com/users/Bouncner/following{/other_user}","gists_url":"https://api.github.com/users/Bouncner/gists{/gist_id}","starred_url":"https://api.github.com/users/Bouncner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Bouncner/subscriptions","organizations_url":"https://api.github.com/users/Bouncner/orgs","repos_url":"https://api.github.com/users/Bouncner/repos","events_url":"https://api.github.com/users/Bouncner/events{/privacy}","received_events_url":"https://api.github.com/users/Bouncner/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/hyrise/hyrise/pulls/1118/commits","review_comments_url":"https://api.github.com/repos/hyrise/hyrise/pulls/1118/comments","review_comment_url":"https://api.github.com/repos/hyrise/hyrise/pulls/comments{/number}","comments_url":"https://api.github.com/repos/hyrise/hyrise/issues/1118/comments","statuses_url":"https://api.github.com/repos/hyrise/hyrise/statuses/bd764212bdeebd5992f7b7819e85c24349c24c6b","head":{"label":"hyrise:feature/histograms","ref":"feature/histograms","sha":"bd764212bdeebd5992f7b7819e85c24349c24c6b","user":{"login":"hyrise","id":3465095,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NjUwOTU=","avatar_url":"https://avatars2.githubusercontent.com/u/3465095?v=4","gravatar_id":"","url":"https://api.github.com/users/hyrise","html_url":"https://github.com/hyrise","followers_url":"https://api.github.com/users/hyrise/followers","following_url":"https://api.github.com/users/hyrise/following{/other_user}","gists_url":"https://api.github.com/users/hyrise/gists{/gist_id}","starred_url":"https://api.github.com/users/hyrise/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyrise/subscriptions","organizations_url":"https://api.github.com/users/hyrise/orgs","repos_url":"https://api.github.com/users/hyrise/repos","events_url":"https://api.github.com/users/hyrise/events{/privacy}","received_events_url":"https://api.github.com/users/hyrise/received_events","type":"Organization","site_admin":false},"repo":{"id":87414843,"node_id":"MDEwOlJlcG9zaXRvcnk4NzQxNDg0Mw==","name":"hyrise","full_name":"hyrise/hyrise","private":false,"owner":{"login":"hyrise","id":3465095,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NjUwOTU=","avatar_url":"https://avatars2.githubusercontent.com/u/3465095?v=4","gravatar_id":"","url":"https://api.github.com/users/hyrise","html_url":"https://github.com/hyrise","followers_url":"https://api.github.com/users/hyrise/followers","following_url":"https://api.github.com/users/hyrise/following{/other_user}","gists_url":"https://api.github.com/users/hyrise/gists{/gist_id}","starred_url":"https://api.github.com/users/hyrise/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyrise/subscriptions","organizations_url":"https://api.github.com/users/hyrise/orgs","repos_url":"https://api.github.com/users/hyrise/repos","events_url":"https://api.github.com/users/hyrise/events{/privacy}","received_events_url":"https://api.github.com/users/hyrise/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/hyrise/hyrise","description":"Hyrise is a research in-memory database.","fork":false,"url":"https://api.github.com/repos/hyrise/hyrise","forks_url":"https://api.github.com/repos/hyrise/hyrise/forks","keys_url":"https://api.github.com/repos/hyrise/hyrise/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hyrise/hyrise/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hyrise/hyrise/teams","hooks_url":"https://api.github.com/repos/hyrise/hyrise/hooks","issue_events_url":"https://api.github.com/repos/hyrise/hyrise/issues/events{/number}","events_url":"https://api.github.com/repos/hyrise/hyrise/events","assignees_url":"https://api.github.com/repos/hyrise/hyrise/assignees{/user}","branches_url":"https://api.github.com/repos/hyrise/hyrise/branches{/branch}","tags_url":"https://api.github.com/repos/hyrise/hyrise/tags","blobs_url":"https://api.github.com/repos/hyrise/hyrise/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hyrise/hyrise/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hyrise/hyrise/git/refs{/sha}","trees_url":"https://api.github.com/repos/hyrise/hyrise/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hyrise/hyrise/statuses/{sha}","languages_url":"https://api.github.com/repos/hyrise/hyrise/languages","stargazers_url":"https://api.github.com/repos/hyrise/hyrise/stargazers","contributors_url":"https://api.github.com/repos/hyrise/hyrise/contributors","subscribers_url":"https://api.github.com/repos/hyrise/hyrise/subscribers","subscription_url":"https://api.github.com/repos/hyrise/hyrise/subscription","commits_url":"https://api.github.com/repos/hyrise/hyrise/commits{/sha}","git_commits_url":"https://api.github.com/repos/hyrise/hyrise/git/commits{/sha}","comments_url":"https://api.github.com/repos/hyrise/hyrise/comments{/number}","issue_comment_url":"https://api.github.com/repos/hyrise/hyrise/issues/comments{/number}","contents_url":"https://api.github.com/repos/hyrise/hyrise/contents/{+path}","compare_url":"https://api.github.com/repos/hyrise/hyrise/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hyrise/hyrise/merges","archive_url":"https://api.github.com/repos/hyrise/hyrise/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hyrise/hyrise/downloads","issues_url":"https://api.github.com/repos/hyrise/hyrise/issues{/number}","pulls_url":"https://api.github.com/repos/hyrise/hyrise/pulls{/number}","milestones_url":"https://api.github.com/repos/hyrise/hyrise/milestones{/number}","notifications_url":"https://api.github.com/repos/hyrise/hyrise/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hyrise/hyrise/labels{/name}","releases_url":"https://api.github.com/repos/hyrise/hyrise/releases{/id}","deployments_url":"https://api.github.com/repos/hyrise/hyrise/deployments","created_at":"2017-04-06T10:03:31Z","updated_at":"2018-09-24T19:21:33Z","pushed_at":"2018-09-26T18:31:35Z","git_url":"git://github.com/hyrise/hyrise.git","ssh_url":"git@github.com:hyrise/hyrise.git","clone_url":"https://github.com/hyrise/hyrise.git","svn_url":"https://github.com/hyrise/hyrise","homepage":"https://hpi.de/plattner/projects/hyrise.html","size":29666,"stargazers_count":111,"watchers_count":111,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":29,"mirror_url":null,"archived":false,"open_issues_count":72,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":29,"open_issues":72,"watchers":111,"default_branch":"master"}},"base":{"label":"hyrise:master","ref":"master","sha":"c070d231ebf1ec3e4af468c8265c720e5f720932","user":{"login":"hyrise","id":3465095,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NjUwOTU=","avatar_url":"https://avatars2.githubusercontent.com/u/3465095?v=4","gravatar_id":"","url":"https://api.github.com/users/hyrise","html_url":"https://github.com/hyrise","followers_url":"https://api.github.com/users/hyrise/followers","following_url":"https://api.github.com/users/hyrise/following{/other_user}","gists_url":"https://api.github.com/users/hyrise/gists{/gist_id}","starred_url":"https://api.github.com/users/hyrise/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyrise/subscriptions","organizations_url":"https://api.github.com/users/hyrise/orgs","repos_url":"https://api.github.com/users/hyrise/repos","events_url":"https://api.github.com/users/hyrise/events{/privacy}","received_events_url":"https://api.github.com/users/hyrise/received_events","type":"Organization","site_admin":false},"repo":{"id":87414843,"node_id":"MDEwOlJlcG9zaXRvcnk4NzQxNDg0Mw==","name":"hyrise","full_name":"hyrise/hyrise","private":false,"owner":{"login":"hyrise","id":3465095,"node_id":"MDEyOk9yZ2FuaXphdGlvbjM0NjUwOTU=","avatar_url":"https://avatars2.githubusercontent.com/u/3465095?v=4","gravatar_id":"","url":"https://api.github.com/users/hyrise","html_url":"https://github.com/hyrise","followers_url":"https://api.github.com/users/hyrise/followers","following_url":"https://api.github.com/users/hyrise/following{/other_user}","gists_url":"https://api.github.com/users/hyrise/gists{/gist_id}","starred_url":"https://api.github.com/users/hyrise/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/hyrise/subscriptions","organizations_url":"https://api.github.com/users/hyrise/orgs","repos_url":"https://api.github.com/users/hyrise/repos","events_url":"https://api.github.com/users/hyrise/events{/privacy}","received_events_url":"https://api.github.com/users/hyrise/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/hyrise/hyrise","description":"Hyrise is a research in-memory database.","fork":false,"url":"https://api.github.com/repos/hyrise/hyrise","forks_url":"https://api.github.com/repos/hyrise/hyrise/forks","keys_url":"https://api.github.com/repos/hyrise/hyrise/keys{/key_id}","collaborators_url":"https://api.github.com/repos/hyrise/hyrise/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/hyrise/hyrise/teams","hooks_url":"https://api.github.com/repos/hyrise/hyrise/hooks","issue_events_url":"https://api.github.com/repos/hyrise/hyrise/issues/events{/number}","events_url":"https://api.github.com/repos/hyrise/hyrise/events","assignees_url":"https://api.github.com/repos/hyrise/hyrise/assignees{/user}","branches_url":"https://api.github.com/repos/hyrise/hyrise/branches{/branch}","tags_url":"https://api.github.com/repos/hyrise/hyrise/tags","blobs_url":"https://api.github.com/repos/hyrise/hyrise/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/hyrise/hyrise/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/hyrise/hyrise/git/refs{/sha}","trees_url":"https://api.github.com/repos/hyrise/hyrise/git/trees{/sha}","statuses_url":"https://api.github.com/repos/hyrise/hyrise/statuses/{sha}","languages_url":"https://api.github.com/repos/hyrise/hyrise/languages","stargazers_url":"https://api.github.com/repos/hyrise/hyrise/stargazers","contributors_url":"https://api.github.com/repos/hyrise/hyrise/contributors","subscribers_url":"https://api.github.com/repos/hyrise/hyrise/subscribers","subscription_url":"https://api.github.com/repos/hyrise/hyrise/subscription","commits_url":"https://api.github.com/repos/hyrise/hyrise/commits{/sha}","git_commits_url":"https://api.github.com/repos/hyrise/hyrise/git/commits{/sha}","comments_url":"https://api.github.com/repos/hyrise/hyrise/comments{/number}","issue_comment_url":"https://api.github.com/repos/hyrise/hyrise/issues/comments{/number}","contents_url":"https://api.github.com/repos/hyrise/hyrise/contents/{+path}","compare_url":"https://api.github.com/repos/hyrise/hyrise/compare/{base}...{head}","merges_url":"https://api.github.com/repos/hyrise/hyrise/merges","archive_url":"https://api.github.com/repos/hyrise/hyrise/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/hyrise/hyrise/downloads","issues_url":"https://api.github.com/repos/hyrise/hyrise/issues{/number}","pulls_url":"https://api.github.com/repos/hyrise/hyrise/pulls{/number}","milestones_url":"https://api.github.com/repos/hyrise/hyrise/milestones{/number}","notifications_url":"https://api.github.com/repos/hyrise/hyrise/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/hyrise/hyrise/labels{/name}","releases_url":"https://api.github.com/repos/hyrise/hyrise/releases{/id}","deployments_url":"https://api.github.com/repos/hyrise/hyrise/deployments","created_at":"2017-04-06T10:03:31Z","updated_at":"2018-09-24T19:21:33Z","pushed_at":"2018-09-26T18:31:35Z","git_url":"git://github.com/hyrise/hyrise.git","ssh_url":"git@github.com:hyrise/hyrise.git","clone_url":"https://github.com/hyrise/hyrise.git","svn_url":"https://github.com/hyrise/hyrise","homepage":"https://hpi.de/plattner/projects/hyrise.html","size":29666,"stargazers_count":111,"watchers_count":111,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":29,"mirror_url":null,"archived":false,"open_issues_count":72,"license":{"key":"mit","name":"MIT License","spdx_id":"MIT","url":"https://api.github.com/licenses/mit","node_id":"MDc6TGljZW5zZTEz"},"forks":29,"open_issues":72,"watchers":111,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/hyrise/hyrise/pulls/1118"},"html":{"href":"https://github.com/hyrise/hyrise/pull/1118"},"issue":{"href":"https://api.github.com/repos/hyrise/hyrise/issues/1118"},"comments":{"href":"https://api.github.com/repos/hyrise/hyrise/issues/1118/comments"},"review_comments":{"href":"https://api.github.com/repos/hyrise/hyrise/pulls/1118/comments"},"review_comment":{"href":"https://api.github.com/repos/hyrise/hyrise/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/hyrise/hyrise/pulls/1118/commits"},"statuses":{"href":"https://api.github.com/repos/hyrise/hyrise/statuses/bd764212bdeebd5992f7b7819e85c24349c24c6b"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"mrzzzrm"}}