본문 바로가기

MySQL

MySQL 버그 리포트 찾는 방법(MySQL 8.0 Default Collation)

MySQL 서버의 릴리즈 노트를 보면, 워크로그나 (WL #1232) 버그 리포트 번호 (Bug #2123432) 가 릴리즈된 내용 뒤에 적혀있는 것을 본적이 있을 것이다.

그런데 이 워크로그나 버그리포트 내용을 찾으려고 할 때, 사이트에서는 해당 내용을 찾을 수 없는 경우가 대다수이다.

예를 들어 MySQL 8.0.1 버전에 다음과 같은 내용이 릴리즈 되어서 버그 리포트 사이트에서 관련 내용을 검색하고자 한다. 나올까? 안나온다.

 

The default collation for the `utf8mb4` character set has changed from `utf8mb4_general_ci` to `utf8mb4_0900_ai_ci`; `utf8mb4_general_ci` does not handle characters outside the Basic Multilingual Plane (BMP) correctly. (Bug #24742157)

 

아래처럼 모든 조건으로 검색해도,

 

해당 버그 리포트가 없거나, 오라클 버그 시스템에서 참조된다고 한다.

(사실 이 말이 잘 이해되지 않는다. 해당 버그가 콜드 스토리지로 넘어갔다는 말인지..)

 

더 웃긴 것은,

아무 번호나 검색하면 그냥 관련 버그가 없다고 나온다.

 

대신에 이 문제를 어느정도 해결할 수 있는 방법이 하나 있다. MySQL 서버 깃헙을 클론해서 해당 버그 리포트를 찾는 것이다.

아래처럼 MySQL 서버 깃헙을 Clone하면 git log 명령으로 bug fix된 사항에 대해서 확인해볼 수 있다.

 

git clone https://github.com/mysql/mysql-server.git
cd mysql-server
git log | grep 'Bug #24742157'

 

그리고 이 커밋 id로 이전 커밋과의 diff를 통해서 코드의 어떤 부분이 수정되었는지 확인 가능하다.

 

git diff를 수행하면 수정 내역이 반영되어 있는 디렉터리도 함께 출력되는데, 이 디렉터리 정보를 가지고 MySQL 깃헙으로 가서 히스토리를 확인해볼 수도 있다. (git diff c60aa910b2b93e3b57f5ecd0296e79e080ebc4c6 9794a47a7cbce7a62ba90a6685d1d91a309031ca)

아래 그림을 보면 MySQL 8.0.1 이전에는 utf8mb4_general_ci를 기본 콜레이션으로 사용하고 있다가,

 

MySQL 8.0.1 부터 utf8mb4_0900_ai_ci를 기본 콜레이션으로 변경한 것을 확인할 수 있다.

(소스상의 MY_CS_PRIMARY는 MySQL 서버의 기본 콜레이션을 의미한다.)

 

사실 깃헙 UI로 찾아보는 것이 더 편리하긴 하다.

 

 

결론

MySQL 서버 릴리즈 노트에 표시되는 워크로그 번호나, 버그 리포트 번호는 사이트에서 검색이 되지 않을 수도 있다. 대신 워크로그나 버그 리포트 번호는 깃헙 로그 상에 항상 기록되어 있기 때문에 깃헙 변경 내용을 추적해서 내용을 찾을 수 있다.