{"action":"created","comment":{"url":"https://api.github.com/repos/percona/percona-server/pulls/comments/167191084","pull_request_review_id":95370933,"id":167191084,"diff_hunk":"@@ -205,6 +215,158 @@ struct row_log_t {\n \t\t\t\tlog operation */\n };\n \n+struct crypt_info_t {\n+\n+\t/** Encryption algorithm */\n+\tEncryption::Type\tencryption_type;\n+\n+\t/** Encryption key */\n+\tbyte\t\t\tencryption_key[ENCRYPTION_KEY_LEN];\n+\n+\t/** Encryption key length*/\n+\tulint\t\t\tencryption_klen;\n+};\n+\n+my_bool\tsrv_encrypt_online_alter_logs = FALSE;\n+\n+crypt_info_t crypt_info = crypt_info_t();\n+\n+/** Find out if temporary log files encrypted.\n+@return true if temporary log file should be encrypted, false if not */\n+bool\n+log_tmp_is_encrypted()\n+{\n+\treturn (crypt_info.encryption_type != Encryption::NONE);\n+}\n+\n+/** Check the row log encryption is enabled or not.\n+It will enable the row log encryption. */\n+void\n+log_tmp_enable_encryption_if_set()\n+{\n+\tif (srv_encrypt_online_alter_logs) {\n+\t\tif (crypt_info.encryption_type == Encryption::NONE) {\n+\t\t\tcrypt_info.encryption_type = Encryption::AES;\n+\t\t\tcrypt_info.encryption_klen = ENCRYPTION_KEY_LEN;\n+\t\t\tmy_rand_buffer(crypt_info.encryption_key,\n+\t\t\t\t       ENCRYPTION_KEY_LEN);\n+\t\t}\n+\t}\n+}\n+\n+/** Encrypt a temporary file block.\n+@param[in]\tsrc\t\tblock to encrypt or decrypt\n+@param[in]\tsize\t\tsize of the block\n+@param[out]\tdst\t\tdestination block\n+@param[in]\toffs\t\toffset to block\n+@param[in]\tspace_id\ttablespace id\n+@return whether the operation succeeded */\n+bool\n+log_tmp_block_encrypt(\n+/*==================*/\n+\tconst byte*\t\tsrc_block,\n+\tulint\t\t\tsize,\n+\tbyte*\t\t\tdst_block,\n+\tos_offset_t\t\toffs,\n+\tulint\t\t\tspace_id)\n+{\n+\tsize_t dst_len;\n+\tbyte iv[MY_AES_BLOCK_SIZE];\n+\n+\tmemset(iv, 0, MY_AES_BLOCK_SIZE);\n+\n+\tmach_write_to_8(iv, space_id);\n+\tmach_write_to_8(iv + 8, offs);\n+\n+\tint res = my_aes_crypt(MY_AES_ECB,\n+\t\tENCRYPTION_FLAG_ENCRYPT | ENCRYPTION_FLAG_NOPAD,\n+\t\tiv, MY_AES_BLOCK_SIZE, iv, &dst_len,\n+\t\tcrypt_info.encryption_key, crypt_info.encryption_klen,\n+\t\tNULL, 0);\n+\n+\tif (res != MY_AES_OK) {\n+\t\tib::error() << \"Unable to encrypt IV\";\n+\t\treturn false;\n+\t}\n+\n+\tut_ad(dst_len == MY_AES_BLOCK_SIZE);\n+\n+\tres = my_aes_crypt(MY_AES_CBC,\n+\t\tENCRYPTION_FLAG_ENCRYPT | ENCRYPTION_FLAG_NOPAD,\n+\t\tsrc_block, size, dst_block, &dst_len,\n+\t\tcrypt_info.encryption_key, crypt_info.encryption_klen,\n+\t\tiv, MY_AES_BLOCK_SIZE);\n+\n+\tif (res != MY_AES_OK) {\n+\t\tib::error()\n+\t\t\t<< \"Unable to encrypt data-block \"\n+\t\t\t\" src: \" << static_cast<const void*>(src_block)\n+\t\t\t<< \" srclen: \" << size\n+\t\t\t<< \" buf: \" << static_cast<const void*>(dst_block)\n+\t\t\t<< \" buflen: \" << dst_len\n+\t\t\t<< \".\";\n+\t\treturn false;\n+\t}\n+\n+\treturn true;\n+}\n+\n+/** Decrypt a temporary file block.\n+@param[in]\tsrc\t\tblock to encrypt or decrypt\n+@param[in]\tsize\t\tsize of the block\n+@param[out]\tdst\t\tdestination block\n+@param[in]\toffs\t\toffset to block\n+@param[in]\tspace_id\ttablespace id\n+@return whether the operation succeeded */\n+bool\n+log_tmp_block_decrypt(\n+/*==================*/\n+\tconst byte*\t\tsrc_block,\n+\tulint\t\t\tsize,\n+\tbyte*\t\t\tdst_block,\n+\tos_offset_t\t\toffs,\n+\tulint\t\t\tspace_id)\n+{\n+\tsize_t dst_len;\n+\tbyte iv[MY_AES_BLOCK_SIZE];\n+\n+\tmemset(iv, 0, MY_AES_BLOCK_SIZE);\n+\n+\tmach_write_to_8(iv, space_id);\n+\tmach_write_to_8(iv + 8, offs);\n+\n+\tint res = my_aes_crypt(MY_AES_ECB,\n+\t\tENCRYPTION_FLAG_ENCRYPT | ENCRYPTION_FLAG_NOPAD,\n+\t\tiv, MY_AES_BLOCK_SIZE, iv, &dst_len,\n+\t\tcrypt_info.encryption_key, crypt_info.encryption_klen,\n+\t\tNULL, 0);\n+\n+\tif (res != MY_AES_OK) {\n+\t\tib::error() << \"Unable to encrypt IV\";\n+\t\treturn false;\n+\t}\n+\n+\tut_ad(dst_len == MY_AES_BLOCK_SIZE);\n+\n+\tres = my_aes_crypt(MY_AES_CBC,\n+\t\tENCRYPTION_FLAG_DECRYPT | ENCRYPTION_FLAG_NOPAD,\n+\t\tsrc_block, size, dst_block, &dst_len,\n+\t\tcrypt_info.encryption_key, crypt_info.encryption_klen,\n+\t\tiv, MY_AES_BLOCK_SIZE);\n+\n+\tif (res != MY_AES_OK) {\n+\t\tib::error()\n+\t\t\t<< \"Unable to decrypt data-block \"","path":"storage/innobase/row/row0log.cc","position":178,"original_position":178,"commit_id":"b78adfd326dc89a3c7aa2f0fbe9891fb192c9214","original_commit_id":"b78adfd326dc89a3c7aa2f0fbe9891fb192c9214","user":{"login":"laurynas-biveinis","id":58894,"avatar_url":"https://avatars3.githubusercontent.com/u/58894?v=4","gravatar_id":"","url":"https://api.github.com/users/laurynas-biveinis","html_url":"https://github.com/laurynas-biveinis","followers_url":"https://api.github.com/users/laurynas-biveinis/followers","following_url":"https://api.github.com/users/laurynas-biveinis/following{/other_user}","gists_url":"https://api.github.com/users/laurynas-biveinis/gists{/gist_id}","starred_url":"https://api.github.com/users/laurynas-biveinis/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/laurynas-biveinis/subscriptions","organizations_url":"https://api.github.com/users/laurynas-biveinis/orgs","repos_url":"https://api.github.com/users/laurynas-biveinis/repos","events_url":"https://api.github.com/users/laurynas-biveinis/events{/privacy}","received_events_url":"https://api.github.com/users/laurynas-biveinis/received_events","type":"User","site_admin":false},"body":"Likewise","created_at":"2018-02-09T10:27:28Z","updated_at":"2018-02-09T10:30:20Z","html_url":"https://github.com/percona/percona-server/pull/1933#discussion_r167191084","pull_request_url":"https://api.github.com/repos/percona/percona-server/pulls/1933","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/percona/percona-server/pulls/comments/167191084"},"html":{"href":"https://github.com/percona/percona-server/pull/1933#discussion_r167191084"},"pull_request":{"href":"https://api.github.com/repos/percona/percona-server/pulls/1933"}}},"pull_request":{"url":"https://api.github.com/repos/percona/percona-server/pulls/1933","id":141774331,"html_url":"https://github.com/percona/percona-server/pull/1933","diff_url":"https://github.com/percona/percona-server/pull/1933.diff","patch_url":"https://github.com/percona/percona-server/pull/1933.patch","issue_url":"https://api.github.com/repos/percona/percona-server/issues/1933","number":1933,"state":"open","locked":false,"title":"InnoDB temporary files and temporary tables encryption","user":{"login":"gl-sergei","id":371194,"avatar_url":"https://avatars3.githubusercontent.com/u/371194?v=4","gravatar_id":"","url":"https://api.github.com/users/gl-sergei","html_url":"https://github.com/gl-sergei","followers_url":"https://api.github.com/users/gl-sergei/followers","following_url":"https://api.github.com/users/gl-sergei/following{/other_user}","gists_url":"https://api.github.com/users/gl-sergei/gists{/gist_id}","starred_url":"https://api.github.com/users/gl-sergei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gl-sergei/subscriptions","organizations_url":"https://api.github.com/users/gl-sergei/orgs","repos_url":"https://api.github.com/users/gl-sergei/repos","events_url":"https://api.github.com/users/gl-sergei/events{/privacy}","received_events_url":"https://api.github.com/users/gl-sergei/received_events","type":"User","site_admin":false},"body":"InnoDB is using temporary files for merge sort for online alter table.\r\nIt also creates temporary tables for online alter.\r\n\r\nWhen destination table for online alter operation is encrypted merge\r\nfile will also be encrypted. InnoDB writing and reading merge files in\r\nblocks. Each block encrypted with tablespace key of target tablespace.\r\nKey version used to encrypt this block prepended to each block. Since\r\nPercona Server does not support key rotation currently, key version is\r\nalways 0. Block encrypted with AES256 in CBC mode with IV consisting of\r\nspace_id+offset. IV is encrypted to make it non-predictable. Since CBC\r\ncan only encrypt data in multiples of block size, remainder of the\r\nbuffer is XOR'ed with encrypted IV.\r\n\r\nWhen InnoDB needs to create temporary table for online alter operation\r\non encrypted table, temp table will be encrypted as well.\r\n\r\nhttps://blueprints.launchpad.net/percona-server/+spec/innodb-temp-files\r\n\r\nhttp://jenkins.percona.com/view/5.7/job/mysql-5.7-param/1211/","created_at":"2017-09-19T07:20:33Z","updated_at":"2018-02-09T10:30:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b381f329058ea70d17c59f6a2a3077879100211a","assignee":{"login":"gl-sergei","id":371194,"avatar_url":"https://avatars3.githubusercontent.com/u/371194?v=4","gravatar_id":"","url":"https://api.github.com/users/gl-sergei","html_url":"https://github.com/gl-sergei","followers_url":"https://api.github.com/users/gl-sergei/followers","following_url":"https://api.github.com/users/gl-sergei/following{/other_user}","gists_url":"https://api.github.com/users/gl-sergei/gists{/gist_id}","starred_url":"https://api.github.com/users/gl-sergei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gl-sergei/subscriptions","organizations_url":"https://api.github.com/users/gl-sergei/orgs","repos_url":"https://api.github.com/users/gl-sergei/repos","events_url":"https://api.github.com/users/gl-sergei/events{/privacy}","received_events_url":"https://api.github.com/users/gl-sergei/received_events","type":"User","site_admin":false},"assignees":[{"login":"gl-sergei","id":371194,"avatar_url":"https://avatars3.githubusercontent.com/u/371194?v=4","gravatar_id":"","url":"https://api.github.com/users/gl-sergei","html_url":"https://github.com/gl-sergei","followers_url":"https://api.github.com/users/gl-sergei/followers","following_url":"https://api.github.com/users/gl-sergei/following{/other_user}","gists_url":"https://api.github.com/users/gl-sergei/gists{/gist_id}","starred_url":"https://api.github.com/users/gl-sergei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gl-sergei/subscriptions","organizations_url":"https://api.github.com/users/gl-sergei/orgs","repos_url":"https://api.github.com/users/gl-sergei/repos","events_url":"https://api.github.com/users/gl-sergei/events{/privacy}","received_events_url":"https://api.github.com/users/gl-sergei/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"milestone":null,"commits_url":"https://api.github.com/repos/percona/percona-server/pulls/1933/commits","review_comments_url":"https://api.github.com/repos/percona/percona-server/pulls/1933/comments","review_comment_url":"https://api.github.com/repos/percona/percona-server/pulls/comments{/number}","comments_url":"https://api.github.com/repos/percona/percona-server/issues/1933/comments","statuses_url":"https://api.github.com/repos/percona/percona-server/statuses/b78adfd326dc89a3c7aa2f0fbe9891fb192c9214","head":{"label":"gl-sergei:5.7-ps-merge-file-encryption","ref":"5.7-ps-merge-file-encryption","sha":"b78adfd326dc89a3c7aa2f0fbe9891fb192c9214","user":{"login":"gl-sergei","id":371194,"avatar_url":"https://avatars3.githubusercontent.com/u/371194?v=4","gravatar_id":"","url":"https://api.github.com/users/gl-sergei","html_url":"https://github.com/gl-sergei","followers_url":"https://api.github.com/users/gl-sergei/followers","following_url":"https://api.github.com/users/gl-sergei/following{/other_user}","gists_url":"https://api.github.com/users/gl-sergei/gists{/gist_id}","starred_url":"https://api.github.com/users/gl-sergei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gl-sergei/subscriptions","organizations_url":"https://api.github.com/users/gl-sergei/orgs","repos_url":"https://api.github.com/users/gl-sergei/repos","events_url":"https://api.github.com/users/gl-sergei/events{/privacy}","received_events_url":"https://api.github.com/users/gl-sergei/received_events","type":"User","site_admin":false},"repo":{"id":30882614,"name":"percona-server","full_name":"gl-sergei/percona-server","owner":{"login":"gl-sergei","id":371194,"avatar_url":"https://avatars3.githubusercontent.com/u/371194?v=4","gravatar_id":"","url":"https://api.github.com/users/gl-sergei","html_url":"https://github.com/gl-sergei","followers_url":"https://api.github.com/users/gl-sergei/followers","following_url":"https://api.github.com/users/gl-sergei/following{/other_user}","gists_url":"https://api.github.com/users/gl-sergei/gists{/gist_id}","starred_url":"https://api.github.com/users/gl-sergei/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/gl-sergei/subscriptions","organizations_url":"https://api.github.com/users/gl-sergei/orgs","repos_url":"https://api.github.com/users/gl-sergei/repos","events_url":"https://api.github.com/users/gl-sergei/events{/privacy}","received_events_url":"https://api.github.com/users/gl-sergei/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/gl-sergei/percona-server","description":null,"fork":true,"url":"https://api.github.com/repos/gl-sergei/percona-server","forks_url":"https://api.github.com/repos/gl-sergei/percona-server/forks","keys_url":"https://api.github.com/repos/gl-sergei/percona-server/keys{/key_id}","collaborators_url":"https://api.github.com/repos/gl-sergei/percona-server/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/gl-sergei/percona-server/teams","hooks_url":"https://api.github.com/repos/gl-sergei/percona-server/hooks","issue_events_url":"https://api.github.com/repos/gl-sergei/percona-server/issues/events{/number}","events_url":"https://api.github.com/repos/gl-sergei/percona-server/events","assignees_url":"https://api.github.com/repos/gl-sergei/percona-server/assignees{/user}","branches_url":"https://api.github.com/repos/gl-sergei/percona-server/branches{/branch}","tags_url":"https://api.github.com/repos/gl-sergei/percona-server/tags","blobs_url":"https://api.github.com/repos/gl-sergei/percona-server/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/gl-sergei/percona-server/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/gl-sergei/percona-server/git/refs{/sha}","trees_url":"https://api.github.com/repos/gl-sergei/percona-server/git/trees{/sha}","statuses_url":"https://api.github.com/repos/gl-sergei/percona-server/statuses/{sha}","languages_url":"https://api.github.com/repos/gl-sergei/percona-server/languages","stargazers_url":"https://api.github.com/repos/gl-sergei/percona-server/stargazers","contributors_url":"https://api.github.com/repos/gl-sergei/percona-server/contributors","subscribers_url":"https://api.github.com/repos/gl-sergei/percona-server/subscribers","subscription_url":"https://api.github.com/repos/gl-sergei/percona-server/subscription","commits_url":"https://api.github.com/repos/gl-sergei/percona-server/commits{/sha}","git_commits_url":"https://api.github.com/repos/gl-sergei/percona-server/git/commits{/sha}","comments_url":"https://api.github.com/repos/gl-sergei/percona-server/comments{/number}","issue_comment_url":"https://api.github.com/repos/gl-sergei/percona-server/issues/comments{/number}","contents_url":"https://api.github.com/repos/gl-sergei/percona-server/contents/{+path}","compare_url":"https://api.github.com/repos/gl-sergei/percona-server/compare/{base}...{head}","merges_url":"https://api.github.com/repos/gl-sergei/percona-server/merges","archive_url":"https://api.github.com/repos/gl-sergei/percona-server/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/gl-sergei/percona-server/downloads","issues_url":"https://api.github.com/repos/gl-sergei/percona-server/issues{/number}","pulls_url":"https://api.github.com/repos/gl-sergei/percona-server/pulls{/number}","milestones_url":"https://api.github.com/repos/gl-sergei/percona-server/milestones{/number}","notifications_url":"https://api.github.com/repos/gl-sergei/percona-server/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/gl-sergei/percona-server/labels{/name}","releases_url":"https://api.github.com/repos/gl-sergei/percona-server/releases{/id}","deployments_url":"https://api.github.com/repos/gl-sergei/percona-server/deployments","created_at":"2015-02-16T18:46:24Z","updated_at":"2016-02-26T07:27:16Z","pushed_at":"2018-02-08T07:49:37Z","git_url":"git://github.com/gl-sergei/percona-server.git","ssh_url":"git@github.com:gl-sergei/percona-server.git","clone_url":"https://github.com/gl-sergei/percona-server.git","svn_url":"https://github.com/gl-sergei/percona-server","homepage":null,"size":579741,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0"},"forks":1,"open_issues":0,"watchers":0,"default_branch":"5.6"}},"base":{"label":"percona:5.7","ref":"5.7","sha":"cba6357ded0ae9503cc925a96ce503b653205a2e","user":{"login":"percona","id":1683025,"avatar_url":"https://avatars0.githubusercontent.com/u/1683025?v=4","gravatar_id":"","url":"https://api.github.com/users/percona","html_url":"https://github.com/percona","followers_url":"https://api.github.com/users/percona/followers","following_url":"https://api.github.com/users/percona/following{/other_user}","gists_url":"https://api.github.com/users/percona/gists{/gist_id}","starred_url":"https://api.github.com/users/percona/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/percona/subscriptions","organizations_url":"https://api.github.com/users/percona/orgs","repos_url":"https://api.github.com/users/percona/repos","events_url":"https://api.github.com/users/percona/events{/privacy}","received_events_url":"https://api.github.com/users/percona/received_events","type":"Organization","site_admin":false},"repo":{"id":30753733,"name":"percona-server","full_name":"percona/percona-server","owner":{"login":"percona","id":1683025,"avatar_url":"https://avatars0.githubusercontent.com/u/1683025?v=4","gravatar_id":"","url":"https://api.github.com/users/percona","html_url":"https://github.com/percona","followers_url":"https://api.github.com/users/percona/followers","following_url":"https://api.github.com/users/percona/following{/other_user}","gists_url":"https://api.github.com/users/percona/gists{/gist_id}","starred_url":"https://api.github.com/users/percona/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/percona/subscriptions","organizations_url":"https://api.github.com/users/percona/orgs","repos_url":"https://api.github.com/users/percona/repos","events_url":"https://api.github.com/users/percona/events{/privacy}","received_events_url":"https://api.github.com/users/percona/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/percona/percona-server","description":"Percona Server","fork":false,"url":"https://api.github.com/repos/percona/percona-server","forks_url":"https://api.github.com/repos/percona/percona-server/forks","keys_url":"https://api.github.com/repos/percona/percona-server/keys{/key_id}","collaborators_url":"https://api.github.com/repos/percona/percona-server/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/percona/percona-server/teams","hooks_url":"https://api.github.com/repos/percona/percona-server/hooks","issue_events_url":"https://api.github.com/repos/percona/percona-server/issues/events{/number}","events_url":"https://api.github.com/repos/percona/percona-server/events","assignees_url":"https://api.github.com/repos/percona/percona-server/assignees{/user}","branches_url":"https://api.github.com/repos/percona/percona-server/branches{/branch}","tags_url":"https://api.github.com/repos/percona/percona-server/tags","blobs_url":"https://api.github.com/repos/percona/percona-server/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/percona/percona-server/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/percona/percona-server/git/refs{/sha}","trees_url":"https://api.github.com/repos/percona/percona-server/git/trees{/sha}","statuses_url":"https://api.github.com/repos/percona/percona-server/statuses/{sha}","languages_url":"https://api.github.com/repos/percona/percona-server/languages","stargazers_url":"https://api.github.com/repos/percona/percona-server/stargazers","contributors_url":"https://api.github.com/repos/percona/percona-server/contributors","subscribers_url":"https://api.github.com/repos/percona/percona-server/subscribers","subscription_url":"https://api.github.com/repos/percona/percona-server/subscription","commits_url":"https://api.github.com/repos/percona/percona-server/commits{/sha}","git_commits_url":"https://api.github.com/repos/percona/percona-server/git/commits{/sha}","comments_url":"https://api.github.com/repos/percona/percona-server/comments{/number}","issue_comment_url":"https://api.github.com/repos/percona/percona-server/issues/comments{/number}","contents_url":"https://api.github.com/repos/percona/percona-server/contents/{+path}","compare_url":"https://api.github.com/repos/percona/percona-server/compare/{base}...{head}","merges_url":"https://api.github.com/repos/percona/percona-server/merges","archive_url":"https://api.github.com/repos/percona/percona-server/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/percona/percona-server/downloads","issues_url":"https://api.github.com/repos/percona/percona-server/issues{/number}","pulls_url":"https://api.github.com/repos/percona/percona-server/pulls{/number}","milestones_url":"https://api.github.com/repos/percona/percona-server/milestones{/number}","notifications_url":"https://api.github.com/repos/percona/percona-server/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/percona/percona-server/labels{/name}","releases_url":"https://api.github.com/repos/percona/percona-server/releases{/id}","deployments_url":"https://api.github.com/repos/percona/percona-server/deployments","created_at":"2015-02-13T11:32:01Z","updated_at":"2018-02-07T07:26:44Z","pushed_at":"2018-02-09T10:25:11Z","git_url":"git://github.com/percona/percona-server.git","ssh_url":"git@github.com:percona/percona-server.git","clone_url":"https://github.com/percona/percona-server.git","svn_url":"https://github.com/percona/percona-server","homepage":"https://www.percona.com/software/mysql-database/percona-server","size":583058,"stargazers_count":393,"watchers_count":393,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":167,"mirror_url":null,"archived":false,"open_issues_count":45,"license":{"key":"other","name":"Other","spdx_id":null,"url":null},"forks":167,"open_issues":45,"watchers":393,"default_branch":"5.7"}},"_links":{"self":{"href":"https://api.github.com/repos/percona/percona-server/pulls/1933"},"html":{"href":"https://github.com/percona/percona-server/pull/1933"},"issue":{"href":"https://api.github.com/repos/percona/percona-server/issues/1933"},"comments":{"href":"https://api.github.com/repos/percona/percona-server/issues/1933/comments"},"review_comments":{"href":"https://api.github.com/repos/percona/percona-server/pulls/1933/comments"},"review_comment":{"href":"https://api.github.com/repos/percona/percona-server/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/percona/percona-server/pulls/1933/commits"},"statuses":{"href":"https://api.github.com/repos/percona/percona-server/statuses/b78adfd326dc89a3c7aa2f0fbe9891fb192c9214"}},"author_association":"MEMBER"}}
{"actor":{"display_login":"laurynas-biveinis"}}