MySQL 8.0 Release Note

8.0.12 변경 사항 (2018-07-27 GA)

Estimated reading: 6 minutes 84 views

공식 문서: Changes in MySQL 8.0.12 (2018-07-27, General Availability)

감사 로그 관련 사항

새로운 MySQL 설치의 경우, MySQL Enterprise Audit에서 사용하는 audit_log_user 테이블의 USERHOST 열 정의가 이제 mysql.user 시스템 테이블의 UserHost 열 정의와 더 잘 일치하도록 개선되었습니다.
이미 MySQL Enterprise Audit가 설치된 시스템을 업그레이드하는 경우, 다음과 같이 테이블 정의를 변경하는 것이 좋습니다:

ALTER TABLE mysql.audit_log_user
  DROP FOREIGN KEY audit_log_user_ibfk_1;
ALTER TABLE mysql.audit_log_filter
  CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
ALTER TABLE mysql.audit_log_user
  CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci;
ALTER TABLE mysql.audit_log_user
  MODIFY COLUMN USER VARCHAR(32);
ALTER TABLE mysql.audit_log_user
  ADD FOREIGN KEY (FILTERNAME) REFERENCES mysql.audit_log_filter(NAME);

(버그 #23706056)

컴파일 관련 사항

Microsoft Windows: OpenSSL 1.1을 위해 Windows에서 라이브러리 이름이 변경되었습니다. CMake 구성 코드가 이제 이를 반영합니다. 또한, 이제 Windows에서 -DWITHOUT_SERVER=1 옵션을 사용하여 32비트 클라이언트 바이너리를 빌드할 수 있습니다. (버그 #28170711, 버그 #91223)

서버 빌드를 위한 Boost 라이브러리의 최소 버전이 이제 1.67.0입니다. (버그 #27866110)

구성 관련 사항

다음 퍼포먼스 스키마 시스템 변수들의 최대값이 256에서 1024로 증가했습니다:

performance_schema_max_cond_classes
performance_schema_max_file_classes
performance_schema_max_mutex_classes
performance_schema_max_rwlock_classes
performance_schema_max_socket_classes
performance_schema_max_stage_classes
performance_schema_max_thread_classes

다음 퍼포먼스 스키마 시스템 변수의 기본값이 250에서 300으로 증가했습니다:

performance_schema_max_mutex_classes

(버그 #27647918)

Linux에서 RelWithDebInfo 빌드의 경우, REPRODUCIBLE_BUILD 옵션의 기본값이 이제 ON으로 설정됩니다. (버그 #27483447)

slave_pending_jobs_size_max 시스템 변수의 기본값이 16M에서 128M로 증가했습니다. 멀티스레드 슬레이브(즉, slave_parallel_workers > 0)의 경우, 이 값은 아직 적용되지 않은 이벤트를 보유한 슬레이브 워커 큐에 제공되는 최대 메모리 양을 설정합니다. 더 많은 메모리가 사용될 수 있으므로 멀티스레드 슬레이브를 배포할 때 필요한 자원을 계산할 때 이를 고려해야 합니다. 마스터와 단일 스레드 슬레이브는 이 설정의 영향을 받지 않습니다.
새로운 기본값은 최근 증가된 max_allowed_packet 시스템 변수의 기본값(현재 64M)의 두 배입니다. slave_pending_jobs_size_max 값은 소프트 제한이며, 이 값보다 큰 이벤트(하나 이상의 패킷으로 구성될 수 있음)도 큐에 넣고 처리할 수 있습니다. 그러나 큰 트랜잭션은 모든 슬레이브 워커의 큐가 비워질 때까지 대기한 후 처리됩니다. 이후의 모든 트랜잭션은 큰 트랜잭션이 완료될 때까지 대기 상태가 됩니다. 모든 슬레이브 워커의 큐를 비우기 위한 지연과 이후 트랜잭션을 큐에 넣기 위한 대기는 복제 슬레이브에서 지연을 유발하고 슬레이브 워커의 동시성 감소를 초래할 수 있습니다. 따라서 slave_pending_jobs_size_max 값은 대부분의 예상 이벤트 크기를 수용할 수 있을 정도로 충분히 높게 설정하는 것이 좋습니다. (WL #11348)

데이터 딕셔너리 관련 사항

다음 데이터 사전 향상이 도입되었습니다:

  • 글로벌 읽기 잠금에 대한 보호를 제공하는 내부 메서드가 추가되었습니다. 이 메서드는 데이터 사전 객체를 저장, 업데이트 또는 삭제하기 전에 호출됩니다.
  • 데이터 사전 API에 글로벌 읽기 잠금에 대한 보호를 제공하기 위한 검증 코드가 추가되었습니다. 이는 데이터 사전 객체를 저장, 업데이트 또는 삭제할 때 적용됩니다.
  • 스토리지 엔진이 독점 메타데이터 잠금을 획득할 때 이제 암묵적으로 백업 잠금 및 글로벌 읽기 잠금에 대한 보호가 획득됩니다.
  • 비용 모델 캐시 유효성 검사가 비용 모델 항목을 해제하기 전에 수행됩니다.
  • 트랜잭션을 커밋하고 롤백하며 트랜잭션 메타데이터 잠금을 해제하기 위한 데이터 사전 API 함수가 추가되었습니다.

(버그 #27937059)

사용 중단 및 제거 관련 사항

GROUP BY 절에 대한 명시적인 ASC 또는 DESC 한정자는 이제 사용이 중단되었으며, 향후 MySQL 버전에서 제거될 예정입니다. (WL #11459)

방화벽 관련 사항

MySQL Enterprise Firewall의 firewall_whitelist 테이블에 ID라는 기본 키 열이 추가되었습니다. (버그 #27164826)

SQL 함수 및 연산자 관련 사항

BIT_AND(), BIT_OR(), BIT_XOR() 집계 함수는 이제 OVER 절이 있는 경우 윈도우 함수로 사용할 수 있습니다. 자세한 내용은 집계 함수 설명을 참조하십시오. (WL #11573)

로깅 관련 사항

이전에는 dragnet.log_error_filter_rules 시스템 변수에 성공적으로 할당된 경우 Note와 경고 카운트가 증가했습니다. 성공적인 작업에 대해 진단 메시지를 생성하지 않도록 이 Note는 더 이상 생성되지 않습니다. 대신 dragnet.Status 상태 변수를 참조하여 최근 dragnet.log_error_filter_rules 할당 결과를 확인할 수 있습니다. (버그 #27910708, 버그 #90571)

이전에는 log_error_services 시스템 변수에 나열된 로그 구성 요소들이 세미콜론으로 구분되어야 했습니다. 이제 구성 요소는 쉼표로 구분될 수 있습니다. 한 설정에서 세미콜론과 쉼표 구분자를 동시에 사용할 수는 없습니다. (버그 #27788925, 버그 #90268)

옵티마이저 관련 사항

인덱스를 사용할 수 없는 경우 ORDER BY 절을 만족시키기 위해 옵티마이저가 사용하는 filesort 알고리즘이 이제 메모리를 더 효율적으로 사용합니다. 주요 변경 사항은 옵티마이저가 sort_buffer_size 시스템 변수로 표시된 크기까지 메모리 버퍼를 필요한 만큼 점진적으로 할당한다는 점입니다. 이전에는 고정된 크기의 sort_buffer_size 바이트를 사전에 할당했었습니다. 이로 인해 사용자는 작은 정렬의 경우 과도한 메모리 사용에 대한 걱정 없이 큰 정렬을 가속화하기 위해 sort_buffer_size를 더 크게 설정할 수 있게 되었습니다. (이 이점은 멀티스레드 malloc이 약한 Windows에서 여러 동시 정렬의 경우 발생하지 않을 수 있습니다.)
추가로, filesort는 이제 최악의 시나리오에 덜 비관적입니다. 이전에는 병합 작업이나 정렬 키 생성이 실패할 가능성이 있으면 filesort가 시작되지 않고 오류를 발생시켰습니다. 이제는 최악의 시나리오가 실제로 발생할 가능성이 낮기 때문에, filesort는 예상되는 실패가 아닌 실제 실패에 대해서만 오류를 발생시킵니다. (WL #11590)

이전에는 확장된 EXPLAIN 출력이 오직 SELECT 문에만 생성되었습니다. 이제 확장된 출력이 INSERT, REPLACE, UPDATE, DELETE 문에도 생성됩니다. 확장된 출력을 표시하려면 EXPLAIN 이후 SHOW WARNINGS를 사용하십시오. 자세한 내용은 확장된 EXPLAIN 출력 형식을 참조하십시오. (WL #6033)

패키징 관련 사항

Linux의 경우, 일반 바이너리 배포 압축 알고리즘이 Gzip에서 XZ로 변경되었으며, 파일 확장자가 .tar.gz에서 .tar.xz로 변경되었습니다. (버그 #28450941, 버그 #91889)

Docker는 기본적으로 NUMA 관련 작업을 비활성화하므로, Docker 이미지에 포함된 mysqld는 NUMA 지원이 비활성화되어 있으며, 이를 통해 오류 로그가 NUMA 경고로 가득 차는 것을 방지합니다. (버그 #28081363)

RPM .spec 파일이 yaSSL 제거 및 OpenSSL이 모든 빌드의 기본 SSL 라이브러리임을 반영하도록 업데이트되었습니다. (버그 #28025427)

일반 Linux .tar.gz 배포판의 경우, mysqlxtest 클라이언트가 서버 패키지에서 테스트 패키지로 이동되었습니다. (버그 #27744137)

Oracle Linux 7에서 ARM 64비트(aarch64) MySQL 서버 바이너리를 설치하기 위한 RPM 패키지가 이제 MySQL Yum 저장소에서 사용할 수 있으며 직접 다운로드도 가능합니다.
이 ARM 릴리스에 대한 알려진 제한 사항: 이 패키지를 설치하려면 Oracle Linux 7 소프트웨어 컬렉션 저장소(ol7_software_collections)를 활성화해야 하며, libstdc++7 경로도 조정해야 합니다. 자세한 내용은 Yum의 플랫폼별 참고 사항을 참조하십시오.

플러그인 관련 사항

이전에는 Rewriter 쿼리 재작성 플러그인이 SELECT 문에 대해서만 재작성이 가능했습니다. 이제 재작성 가능한 문에 INSERT, REPLACE, UPDATE, DELETE도 포함됩니다. 자세한 내용은 The Rewriter Query Rewrite Plugin을 참조하십시오. (WL #8776)

보안 관련 사항

MySQL 서버의 링크된 OpenSSL 라이브러리가 버전 1.0.2o로 업데이트되었습니다. 새로운 OpenSSL 버전에서 수정된 문제는 http://www.openssl.org/news/vulnerabilities.html에서 확인할 수 있습니다. (버그 #28025379)

공간 데이터 지원

비호환 변경: 새로운 공간 함수 ST_Longitude()ST_Latitude()는 각각 Point 인수의 경도 또는 위도를 반환합니다. 두 번째 인수가 있을 경우, 이 함수들은 해당 인수를 사용하여 Point 인수의 경도 또는 위도를 설정합니다.추가로, ST_X()ST_Y() 함수는 이제 그들의 Point 인수를 공간 참조 시스템 정의(SRS)에 따라 해석합니다:

  • ST_X()는 SRS 정의에서 첫 번째로 나타나는 축의 좌표 값을 반환하고, ST_Y()는 두 번째 축의 좌표 값을 반환합니다.
  • ST_X()ST_Y()가 지리적 SRS를 가진 Point 인수의 경도 또는 위도를 설정하는 데 사용되는 경우, 경도 또는 위도 값은 SRS에 맞는 범위 내에 있어야 하며, 그렇지 않으면 오류가 발생합니다.
참고
공간 데이터에 ST_X()ST_Y()에 의해 해석되는 지오메트리 값이 포함되어 있으면, 이전 MySQL 버전과 비교해 기존 쿼리의 결과가 달라질 수 있습니다.

(버그 #27125600, 버그 #88503, WL #11453)

공간 계산을 위한 공간 참조 시스템 데이터를 포함하는 EPSG 데이터 세트가 버전 9.2에서 9.3으로 업그레이드되었습니다. (버그 #27977721)

지오메트리 인수를 받아들이는 공간 함수들이 경도 또는 위도 값이 범위를 벗어난 경우 이전에는 ER_LONGITUDE_OUT_OF_RANGE 또는 ER_LATITUDE_OUT_OF_RANGE 오류를 반환했으나, 이제는 ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGE 또는 ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGE 오류를 반환합니다. 이는 지오메트리를 구문 분석하거나 수정하는 공간 함수들(ST__xxx_FromText(), ST__xxx_FromWKT(), ST__xxx_FromWKB(), ST_GeomFromGeoJSON(), ST_X(), ST_Y(), ST_Longitude(), ST_Latitude())에는 적용되지 않습니다. (버그 #27892138)

이전에는 파서가 인덱스 지정에서 USING RTREE를 인식했으나, 이는 어떤 스토리지 엔진에도 지정할 수 없었습니다. 이제 USING RTREE가 공간 인덱스 지정에 허용됩니다. (버그 #27836608)

지오메트리 열의 인덱스는 이제 공간 인덱스여야 합니다. 결과적으로, SPATIAL 키워드는 선택 사항이지만, 공간 열에 인덱스를 생성할 때 암시적으로 적용됩니다. 지오메트리 열에 대한 공간 인덱스는 기본 키 또는 고유 인덱스로 허용되지 않습니다. 또한, 공간 인덱스에는 ASCDESC가 허용되지 않습니다. (버그 #21087676, WL #11808)

SQL 구문 관련 사항

중요 변경 사항: MySQL은 이제 WITH ROLLUP 수정자를 사용하는 쿼리에서 DISTINCT 사용을 허용합니다. 자세한 내용은 SELECT 문을 참조하십시오. (버그 #87450, 버그 #26640100, 버그 #20671578, 버그 #76229)

중요 변경 사항: MySQL은 이제 SELECT 문에서 그룹화 함수와 함께 ORDER BY를 사용하는 것을 허용합니다. (버그 #86312, 버그 #27063525)

중요 변경 사항: MySQL은 이제 WITH ROLLUP 수정자를 사용하는 쿼리에서 ORDER BY를 사용할 수 있습니다. 자세한 내용은 SELECT 문을 참조하십시오. (버그 #86311, 버그 #26073513)

X Plugin 관련 사항

MySQL 8.0.11 서버에서 X Plugin 클라이언트로 반환된 인증 오류가 치명적인 오류로 표시되어, 클라이언트가 다양한 방법으로 자동으로 시도하는 인증 시퀀스를 중단하는 문제가 있었습니다. 이제 X Plugin은 인증 시퀀스가 진행 중일 때 치명적인 인증 오류와 이후에 발생하는 예상된 오류(예: 쓰기 시간 초과 오류)를 무시합니다. 만약 시도한 인증 방법 중 어느 것도 성공하지 않으면, X Plugin은 마지막으로 수신한 오류 메시지가 아닌, 서버로부터 수신한 가장 관련성 높은 오류 메시지를 선택하여 반환합니다. (버그 #28135006)

X Plugin의 자동 인증 시퀀스 동안, 미리 설정된 순서에 따라 다른 인증 방법을 사용하여 연결을 시도합니다. X Plugin은 시퀀스를 시작하기 전에 연결이 SSL을 사용하는지 여부를 확인하며, 연결이 암호화되지 않은 경우 PLAIN 인증 방법으로 연결을 시도하지 않습니다. 추가 검증을 위해, 연결이 암호화되지 않았을 때 PLAIN 인증 방법을 시도할 경우 이를 금지하는 검사와 오류가 추가되었습니다. (버그 #27691189)

인증 실패 시, X Plugin은 항상 ER_ACCESS_DENIED 오류 코드를 반환하며, 해당 오류 상황에 맞는 X Protocol의 사용자 정의 오류 메시지를 제공했습니다. 이제 MySQL 서버에서 인증 실패에 대해 수신된 오류 코드는 표준 MySQL 오류 메시지와 함께 클라이언트로 전달됩니다. (버그 #27675699)

X Plugin의 자동 인증 시퀀스 동안, 실패한 각 연결 시도 후 반환되는 오류가 FATAL로 표시되었습니다. 이제 시도할 다른 인증 방법이 남아 있는 경우에는 오류가 ERROR로 표시되며, 연결이 끊기는 최종 오류만 FATAL로 표시됩니다. (버그 #27636947)

X Plugin 코드는 서로 다른 전처리기 정의로 두 번 컴파일되고 있었습니다. (버그 #27267054)

X Plugin의 인증 문제 처리 방식에 대해 여러 가지 개선이 이루어졌습니다:

  • 미리 설정된 순서에 따라 다른 인증 방법을 사용하여 연결을 시도하는 X Plugin의 자동 인증 시퀀스는 연결이 끊어졌거나 읽기 또는 쓰기가 시간 초과된다는 오류 응답을 받을 경우 중단됩니다.
  • 또한, 치명적인 오류가 발생하면 자동 인증 시퀀스가 중단됩니다.
  • 중단된 인증 시퀀스에 대해서는 마지막 오류가 아닌 가장 중요한 오류가 보고됩니다.
  • caching_sha2_password 인증 플러그인을 암호화되지 않은 연결에서 사용하려 할 경우, 보다 구체적인 오류 코드와 메시지가 보고됩니다.

(버그 #27257774)

특정 상황에서 X Plugin이 로드된 MySQL 서버는 시작 실패 또는 RESTART 명령으로 인해 종료 과정에서 예기치 않게 중단될 수 있었습니다. 이 문제가 해결되었습니다. (버그 #25474793, 버그 #27259783)

추가 및 변경된 기능

중요 변경 사항; 그룹 복제: group_replication_exit_state_action은 서버 인스턴스가 불안정한 네트워크 연결로 인해 그룹에서 강제로 탈퇴할 때 그룹 복제가 어떻게 동작하는지를 결정합니다. group_replication_exit_state_actionABORT_SERVER(기본값)로 설정된 경우, 인스턴스는 스스로 종료되며, 값이 READ_ONLY일 경우 인스턴스는 슈퍼 읽기 전용 모드로 전환되고 그룹 복제 ERROR 상태로 들어갑니다. (WL #11568)

InnoDB: 이제 InnoDB는 다음 ALTER TABLE 작업에 대해 ALGORITHM=INSTANT를 지원합니다:

  • 열 추가(“Instant ADD COLUMN” 기능으로 불림).
  • 가상 열 추가 또는 삭제.
  • 열 기본값 추가 또는 삭제.
  • ENUM 또는 SET 열 정의 수정.
  • 인덱스 유형 변경.
  • 테이블 이름 변경.

ALGORITHM=INSTANT를 지원하는 작업은 데이터 사전의 메타데이터만 수정합니다. 작업 준비 및 실행 단계에서 테이블에 대한 독점 메타데이터 잠금을 걸지 않으며, 테이블 데이터에 영향을 주지 않으므로 작업이 즉각적으로 처리됩니다. 지원되는 작업에서 ALGORITHM=INSTANT가 명시되지 않은 경우 기본적으로 사용됩니다. ALGORITHM=INSTANT가 명시되었지만 지원되지 않는 경우, 작업은 오류와 함께 즉시 실패합니다.
ALGORITHM=INSTANT를 지원하는 작업에 대한 자세한 내용은 온라인 DDL 작업을 참조하십시오.
기여해주신 Tencent Games DBA 팀에게 감사드립니다. (버그 #28100103, 버그 #91074, WL #11250)

InnoDB: 이제 대형 객체(LOB) 데이터에 대한 작은 업데이트에 대해 언두 로깅이 지원되어 100바이트 이하의 LOB 업데이트 성능이 향상되었습니다. 이전에는 최소한 하나의 LOB 페이지 크기로 LOB 업데이트가 처리되어 몇 바이트만 수정하는 경우 비효율적이었습니다. 이 기능은 MySQL 8.0.4에서 추가된 LOB 데이터의 부분 업데이트 지원을 기반으로 개선되었습니다. (WL #11328)

복제: 이제 쉘 파이프를 사용하여 압축된 바이너리 로그 파일 아카이브를 mysqlbinlog에 스트리밍 입력으로 제공할 수 있습니다. 이전에는 파일을 별도로 추출한 후 mysqlbinlog에 전달해야 했습니다. 기여해주신 Facebook 팀에게 감사드립니다.
이 예시에서는 binlog-files_1.gz가 처리할 여러 바이너리 로그 파일을 포함하고 있습니다. 이 파이프라인은 binlog-files_1.gz의 내용을 추출하여 바이너리 로그 파일을 표준 입력으로 mysqlbinlog에 전달하고, mysqlbinlog의 출력을 mysql 클라이언트에 전달하여 실행합니다:

gzip -cd binlog-files_1.gz | ./mysqlbinlog - | ./mysql -uroot -p

(버그 #27445278, 버그 #89423)
참고: 버그 #27836543도 참조하십시오.

복제: SYSTEM_VARIABLES_ADMINPERSIST_RO_VARIABLES_ADMIN 권한이 mysql.session 예약 계정에 추가되었습니다. (버그 #89873, 버그 #27621869)

복제: XCom의 메모리 사용에 대한 정보가 퍼포먼스 스키마 테이블에 추가되었습니다. 이제 setup_instruments 테이블에 XCom 캐시와 관련된 항목이 있으며, memory_summary_global_by_event_name 테이블에는 XCom 캐시의 메모리 사용 통계가 포함됩니다. (WL #9855)

Microsoft Windows: Windows에서 RESTART 구현에 사용된 포킹은 --gdb 옵션을 사용하여 억제할 수 있었습니다. 그러나 이는 디버깅 환경을 설정하기 위한 다른 옵션 작업 외에 부수적인 효과였습니다. 비디버그 설정에서는 새로운 --no-monitor 옵션을 사용하여 모니터 프로세스의 포킹을 억제할 수 있습니다. --gdb 또는 --no-monitor로 시작된 서버는 RESTART 명령을 실행할 때 재시작하지 않고 서버가 종료됩니다. (버그 #27801043)

DROP TABLEDROP DATABASE의 외래 키 관계 확인이 개선되었습니다. 이제 테이블이 삭제되기 전에 확인이 이루어지므로, 문제가 발생할 경우 명령문은 변경을 수행하기 전에 실패합니다. 같은 DROP TABLE 명령문으로 부모와 자식 테이블을 임의의 순서로 삭제할 수 있습니다. 또한, 자식 테이블을 삭제하지 않고 부모 테이블을 삭제하려는 시도의 오류 보고가 개선되었습니다. (버그 #27821060, 버그 #17564464, 버그 #70531, 버그 #22359539, 버그 #79610)

역할 지원이 추가되었을 때, ADMIN 키워드가 예약 키워드가 되었습니다. 이제 ADMIN은 다시 비예약 키워드가 되었습니다. (버그 #27814204)

클라이언트가 서버를 종료할 때, 서버는 이제 어떤 사용자가 이 작업을 수행했는지에 대한 메시지를 오류 로그에 기록합니다. (버그 #26246628, 버그 #86635)

이전에는 --ssl-mode=VERIFY_IDENTITY 옵션에 대해, 클라이언트는 연결을 위해 사용한 호스트 이름이 인증서의 Common Name 값과 일치하는지 확인했지만, Subject Alternative Name 값은 확인하지 않았습니다. 이제 클라이언트가 OpenSSL 1.0.2 이상을 사용하는 경우, 클라이언트는 서버 인증서의 Subject Alternative Name 값 또는 Common Name 값과 호스트 이름이 일치하는지 확인합니다. 이 변경 사항에 기여해주신 Daniël van Eeden에게 감사드립니다. (버그 #16211011, 버그 #68052, 버그 #27511233, 버그 #89578)

버그 수정

중요 변경 사항; JSON: 이제 JSON_TABLE() 함수는 기본적으로 base-64 값을 디코딩하여, 열 정의에서 지정된 캐릭터셋을 사용해 출력합니다. (버그 #90157, 버그 #27729112)
참고: 버그 #89847, 버그 #27613276도 참조하십시오.

InnoDB: 8.0.12에서 INFORMATION_SCHEMA.INNODB_TABLESINFORMATION_SCHEMA.INNODB_COLUMNS 테이블에 새로 추가된 열이 8.0.12로 업그레이드한 후 나타나지 않았습니다. (버그 #28065244)

InnoDB: LOB(대형 객체) 인덱스 항목에 저장된 LOB 버전 번호가 1로 초기화되지 않고 0으로 남아 있었습니다. (버그 #28046298)

InnoDB: 생성된 열을 포함하는 테이블에 열을 추가할 때 잘못된 어설션이 발생했습니다. (버그 #28040201)

InnoDB: 체크포인트 작업 중 해제된 메모리에 접근하려고 시도하여 서버가 종료되었습니다. (버그 #28039477)

InnoDB: 실험적인 시스템 변수가 의도치 않게 일반 MySQL 빌드에서 노출되었을 때, 서버 시작 시 어설션 실패가 발생했습니다. (버그 #27899424, 버그 #90526, 버그 #27898396, 버그 #90523, 버그 #27898344, 버그 #90522)

InnoDB: 잘못된 시스템 변수 설정으로 인해 어설션이 발생했습니다. (버그 #27898284)

InnoDB: 테이블을 폐기된 파일별 테이블스페이스에서 공유 테이블스페이스로 이동하려고 시도하면 어설션이 발생했습니다. 이제 이 작업은 오류를 발생시킵니다. (버그 #27861972)

InnoDB: LOB(대형 객체) 페이지 할당과 관련된 잠재적 실패가 충분히 처리되지 않았습니다. (버그 #27852003)

InnoDB: ngram 풀텍스트 검색 파서가 쉼표와 마침표 문자를 단어로 토큰화하여 부울 모드와 자연어 모드 검색 결과 간에 불일치가 발생했습니다. 이제 쉼표와 마침표 문자는 토큰화되지 않습니다. (버그 #27847697)

InnoDB: 테이블스페이스 헤더 페이지의 동시 수정과 부분적으로 초기화된 페이지에 대한 잠금 시도가 체크섬 불일치 및 기타 문제를 일으켰습니다. (버그 #27823064)

InnoDB: fsync() 작업에서 반환된 I/O 오류가 이제 치명적인 오류로 처리됩니다. (버그 #27805553, 버그 #90296)

InnoDB: 단일 스레드에서 두 개의 미니트랜잭션이 큰 객체(LOB) 값의 첫 번째 페이지를 잠그는 동안 다른 스레드가 페이지 할당을 시도하여 교착 상태가 발생했습니다. (버그 #27777959)

InnoDB: MySQL 8.0.12로 업그레이드한 후 FTS_DOC_ID 열을 포함한 테이블 열이 INFORMATION_SCHEMA.INNODB_COLUMNS 테이블에서 누락되었습니다. (버그 #27774145)

InnoDB: 옵티마이저가 가상 열에 정의된 접두사 인덱스를 선택할 때 잘못된 어설션이 발생했습니다. (버그 #27755892)
참고: 이 문제는 버그 #19806106의 회귀입니다.

InnoDB: 잘못된 메타데이터 잠금 보호 하에서 잘못된 메모리 객체로 테이블을 열 수 있었습니다.
TRUNCATE PARTITION 작업 중 AUTOINC 카운터 값을 유지하는 새로운 방법이 구현되었습니다. (버그 #27754995)

InnoDB: 더티 페이지는 있지만 리두 로그 레코드가 없는 미니트랜잭션 커밋 중에 어설션이 발생했습니다. 미니트랜잭션은 최근에 닫힌 버퍼에서 공간을 기다리지 않았으며, 이후 페이지에 유효하지 않은 현재 LSN 값을 표시했습니다. 유효하지 않은 LSN 값이 플러시 목록에 추가된 후, 지연된 미니트랜잭션이 더 이전의 LSN 값을 가진 더티 페이지를 추가하여 플러시 목록 순서가 깨졌습니다.
innodb_log_checkpoint_fuzzy_now 디버그 옵션이 추가되었습니다. 이 옵션을 활성화하면 InnoDB가 퍼지 체크포인트를 작성하도록 강제합니다. 또한 새로운 내부 리두 로그 모듈 카운터가 LSN 값을 추적하기 위해 추가되었습니다. log_lsn_buf_dirty_pages_added 카운터는 더티 페이지가 추가된 LSN 값을 추적하고, log_lsn_buf_pool_oldest_lwm 카운터는 버퍼 풀에서 가장 오래된 수정된 블록에 대한 LSN의 저수준 경계를 추적합니다. (버그 #27664539)

InnoDB: Contention-Aware Transaction Scheduling(CATS) 알고리즘은 다른 트랜잭션을 기다리는 트랜잭션 수를 추적합니다. 교착 상태의 경우, 대기 트랜잭션 수를 근사하는 방법이 부풀려진 값을 생성했습니다. (버그 #27646322)

InnoDB: 희생 트랜잭션 잠금을 보유한 상태에서 InnoDB 티켓을 획득하려고 하면 잠금 순서 위반이 발생했습니다. (버그 #27626681)
참고: 이 문제는 버그 #23476050의 회귀입니다.

InnoDB: 0길이 BLOB 값을 읽으려는 시도가 복구 중에 어설션 실패를 일으켰습니다. BLOB 값은 아직 완전히 삽입되지 않았습니다. (버그 #27617389)

InnoDB: 이미 메모리에 있는 테이블에 대해 테이블 잠금을 획득하려고 할 때 경쟁 조건이 발생했습니다. (버그 #27586419, 버그 #27577704)
참고: 이 문제는 버그 #26848711의 회귀입니다.

InnoDB: 서버를 재시작한 후 암호화된 테이블을 생성하려고 시도하면 스토리지 엔진에서 일반 오류가 반환되었습니다. (버그 #27577339)

InnoDB: Contention-Aware Transaction Scheduling(CATS)와 공간 인덱스를 사용할 때 트랜잭션이 무기한 대기 상태에 빠졌습니다. (버그 #27572937)

InnoDB: 멀티바이트 문자가 포함된 테이블스페이스 이름의 잘못된 구문 분석으로 DROP DATABASE 작업이 실패했습니다. (버그 #27566937)

InnoDB: 임시 테이블을 식별하기 위해 수행된 검사가 데이터 사전에서 파티셔닝된 테이블을 열려고 할 때 오류를 발생시켰습니다. (버그 #27565997)

InnoDB: 테이블스페이스 가져오기 작업 중 보고된 스키마 불일치 오류가 불일치한 테이블 플래그를 읽기 쉽게 출력하지 못했습니다. (버그 #27542720)

InnoDB: FULLTEXT 인덱스 최적화 작업이 완료될 때까지 대기하지 않아 DDL 작업이 실패했습니다. (버그 #27326796)
참고: 이 문제는 버그 #24938374의 회귀입니다.

InnoDB: 불필요한 읽기 전용 트랜잭션 검사가 trx_set_rw_mode() 함수에서 제거되었습니다. 패치를 제공해주신 Sandeep Sethia에게 감사드립니다. (버그 #27211287, 버그 #88739)

InnoDB: 외래 키 제약 조건을 추가하는 DDL 작업이 부모 테이블에 속한 오래된 메모리 객체에 접근할 때 어설션이 발생했습니다. (버그 #27208858)

InnoDB: memcached get 작업을 시작한 후 어설션이 실패했습니다. (버그 #26876594)

InnoDB: 외래 키 검사를 하는 동안 손상된 인덱스 ID가 어설션을 일으켰습니다. (버그 #26654685)

InnoDB: 일반 테이블스페이스에 있는 테이블에 대한 DROP TABLE 작업이 DDL 작업 후 단계에서 인덱스 상태를 확인할 때 어설션이 발생했습니다. (버그 #26523254)

InnoDB: DDL 작업 중 내부 교착 상태로 인해 긴 세마포어 대기가 발생한 후 서버가 종료되었습니다. (버그 #26225783)

InnoDB: DDL 작업 중 잘못된 잠금 업그레이드로 심각한 오류가 발생했습니다. (버그 #26225783)

InnoDB: Windows 64비트 시스템에서 잘못된 버퍼 풀 구성 값이 서버 시작 시 종료를 일으켰습니다. (버그 #26100239, 버그 #86370)

InnoDB: 뮤텍스 유형 정의와 관련된 디버그 코드 블록이 제거되었습니다. 이제 비디버그 버전 코드 블록과 다르지 않습니다. (버그 #24952279, 버그 #83529)

InnoDB: 복구 중 로그 파싱 버퍼 오버플로로 인해 서버가 실패했습니다. 이제 로그 파싱 버퍼에 공간이 동적으로 할당되며, innodb_log_buffer_size로 지정된 크기까지 필요한 만큼 증가합니다. (버그 #24734190)

InnoDB: 동일한 테이블에서 동시에 업데이트할 때 테이블 잠금이 최적화되어 테이블 잠금 대기열에서 비용이 많이 드는 반복을 피했습니다.
패치를 제공해주신 Zhai Weixiang에게 감사드립니다. (버그 #18955152, 버그 #72948)

패키징: Windows에서 mysqld.exe –help 명령이 시스템 출력에 불필요하고 예상치 못한 세부 사항을 표시했으나, 이번 수정으로 해당 문제가 해결되었습니다. (버그 #27894020)

파티셔닝: ALTER TABLE ... TRUNCATE PARTITION 문에 대한 롤백이 올바르게 처리되지 않았습니다. (버그 #27603025)
참고: 버그 #87562, 버그 #26710839도 참조하십시오.

파티셔닝: 파티셔닝된 테이블에서 테이블을 재구축하거나 서버를 재시작한 후 파티션 업데이트 시간이 올바르지 않을 수 있었습니다. (버그 #27073100)

복제: 서버 시작 시 바이너리 로깅을 비활성화하는 --skip-log-bin 옵션이 지정된 경우, expire_logs_daysbinlog_expire_logs_seconds 값이 0이 아닌 경우 경고 메시지가 표시되지 않았습니다. 이제 이 경고 메시지가 표시되어, 서버에 대한 바이너리 로깅이 활성화되기 전에 상황을 수정할 수 있습니다. (버그 #27699608)

복제: 그룹에 멤버가 참여하지 못할 때 발생하는 로그 메시지가 개선되었습니다. 예를 들어, 그룹에 참여하는 멤버의 group_replication_group_name이 시드의 group_replication_group_name과 일치하지 않을 때 로그 메시지에 이 상황이 설명됩니다. (버그 #27628695)

복제: innodb_force_recovery 설정이 4 이상으로 설정되어 InnoDB가 읽기 전용 모드로 전환된 크래시 복구 모드에서 MySQL 서버가 시작되면, 반동기 복제 마스터 플러그인이 초기화되지 않아야 합니다. MySQL 8.0에서 플러그인 초기화 순서가 변경된 결과로 서버는 플러그인이 등록되면 초기화되었다고 잘못 가정하고 플러그인을 잘못 해제하려 했습니다. 이제 크래시 복구 모드에서 플러그인이 초기화되지 않았을 때는 해제 함수가 실행되지 않도록 수정되었습니다. (버그 #27481872)

복제: 복제 필터나 바이너리 로그 필터를 XA 트랜잭션이 업데이트된 테이블에 적용하면 문제가 발생할 수 있습니다. 테이블 필터링은 복제 슬레이브에서 XA 트랜잭션을 비워둘 수 있으며, 빈 XA 트랜잭션은 지원되지 않습니다. 또한 MySQL 8.0에서는 슬레이브에서 master_info_repository=TABLErelay_log_info_repository=TABLE 설정이 기본값이 되는데, 필터링된 XA 트랜잭션 후 데이터 엔진 트랜잭션의 내부 상태가 변경되어 복제 트랜잭션 컨텍스트 상태와 일치하지 않을 수 있습니다.
이러한 문제로 인해, XA 트랜잭션과 함께 복제 필터 또는 바이너리 로그 필터를 사용하는 것은 지원되지 않습니다. 이번 수정은 새로운 오류 ER_XA_REPLICATION_FILTERS를 추가하여, XA 트랜잭션이 복제 필터에 영향을 받을 때 이를 기록합니다. 트랜잭션이 비어 있지 않으면 슬레이브는 계속 실행할 수 있지만, XA 트랜잭션과의 필터 사용을 중단하도록 조치를 취해야 합니다. 트랜잭션이 비어 있으면 슬레이브는 중지됩니다. 이 경우, 슬레이브에서 실행된 gtid_executed 집합이 마스터와 일치하지 않을 수 있으며, 복제 프로세스의 일관성이 손상될 수 있습니다. 이 문제를 해결하려면 마스터를 격리하고 모든 복제를 중지한 후 복제 구조 전체에서 GTID 일관성을 확인해야 합니다. 오류 메시지를 생성한 XA 트랜잭션을 취소한 후 복제를 다시 시작하십시오. (버그 #27442477)

복제: mysqlbinlog이 128KB보다 큰 바이너리 로그 이벤트를 읽을 때, 128KB 크기로 반환되어 읽기가 실패했습니다. 이제 이 문제가 수정되었습니다. 패치를 제공해주신 Facebook 팀에게 감사드립니다. (버그 #27417084, 버그 #89326)

복제: 바이너리 로그 트랜잭션 캐시 크기(binlog_cache_size)를 초과하는 트랜잭션이 처리 중 임시 파일로 플러시되고, 임시 디렉토리 공간 부족으로 플러시가 실패한 경우, 이 오류가 제대로 처리되지 않았습니다. 이제 이 상황에서 서버는 binlog_error_action 설정에 따라 적절한 조치를 취하고, 오류 로그에 메시지를 기록합니다. 트랜잭션이 롤백될 때 서버는 플러시 오류를 확인하고, 오류가 발생하면 바이너리 로그 캐시를 지웁니다. (버그 #27399620, 버그 #89272)

복제: GTID가 사용되는 복제에서, 슬레이브에서 필터링된 트랜잭션은 지속됩니다. 슬레이브에서 바이너리 로깅이 활성화된 경우, 필터링된 트랜잭션은 바이너리 로그에 Gtid_log_event로 기록되고, BEGINCOMMIT만 포함된 빈 트랜잭션이 기록됩니다. 바이너리 로깅이 비활성화된 경우, 필터링된 트랜잭션의 GTID는 mysql.gtid_executed 테이블에 기록됩니다. 이 과정은 실행된 GTID 집합에 누락이 없도록 보장하고, 슬레이브가 마스터에 다시 연결될 때 필터링된 트랜잭션이 다시 검색되지 않도록 합니다. 이전에는 CREATE DATABASE, ALTER DATABASE, DROP DATABASE 문에 대해 이 과정이 수행되지 않았으나, 이제 해당 문에서도 처리됩니다. (버그 #27308751, 버그 #88891)

복제: 다중 스레드 슬레이브에서 STOP SLAVE 명령을 실행한 후 START SLAVE를 실행하면, 오류 로그에 슬레이브 SQL 스레드의 종료 시점과 재초기화 시점에 서로 다른 바이너리 로그 위치가 보고될 수 있었습니다.
다중 스레드 슬레이브에서, 종료 시 SQL 스레드에 보고된 위치는 복제 스트림이 일관되고 누락이 없는 위치까지의 저수준 경계입니다. 이 경계 이전에 나타난 트랜잭션은 커밋이 보장되지만, 이 이후의 트랜잭션은 커밋되었을 수도 있고 그렇지 않을 수도 있습니다. 그러나 이 저수준 경계는 실제로 작업자 스레드를 중지하는 프로세스가 수행되기 전에 보고되었으며, 중지 중 체크포인트 루틴에 의해 업데이트되었습니다. 이제 로그 메시지 타이밍이 변경되어, 최종 저수준 경계가 SQL 스레드 종료 시점의 위치로 보고됩니다. (버그 #27300658)

복제: MySQL 5.7.23 이전 버전에서 실행 중인 복제 그룹의 온라인 업그레이드가 불가능했습니다. MySQL 5.7.22 또는 MySQL 8.0.11 이전 버전을 실행 중인 멤버가 MySQL 5.7.21 이하 버전을 실행 중인 그룹에 참여하려고 하면, lower_case_table_names 시스템 변수를 전송하지 않기 때문에 그룹에 참여하지 못했습니다. 해결 방법은 그룹을 오프라인으로 전환하고 MySQL 5.7.23 또는 8.0.12 이후 버전으로 업그레이드하는 것입니다. 이후 그룹의 업그레이드는 오프라인으로 전환하지 않고 수행할 수 있습니다. 그룹 복제 업그레이드를 참조하십시오. (버그 #90794, 버그 #27991334)

복제: gtid_purged 값을 그룹 복제 플러그인을 실행 중일 때 변경할 수 있었습니다. 이제는 이 변수를 수정할 수 없습니다. (버그 #90146, 버그 #27724561)

복제: PIT_TRANSACTIONS_NEGATIVE_CERTIFIED, PIT_TRANSACTIONS_ROWS_VALIDATING, PIT_TRANSACTIONS_LOCAL_ROLLBACK 멤버 메시지가 올바르게 디코딩되지 않았습니다. (버그 #90077, 버그 #27692831)

복제: 분산 복구 절차 중 인증 정보 가비지 수집이 필요한 데이터보다 더 많은 데이터를 제거하여 충돌이 감지되지 않았습니다. 이제 가비지 수집 절차가 개선되었습니다. (버그 #89938, 버그 #27652526)

복제: ER_GRP_RPL_SQL_SERVICE_FAILED_TO_RUN_SQL_QUERY 오류가 잘못 기록되고 있었습니다. (버그 #89788, 버그 #27590534)

복제: 다수의 손실 후 group_replication_force_members를 사용하여 그룹을 차단 해제하려고 할 때 가끔 오류 1231이 발생했습니다. (버그 #86957, 버그 #26394418)

그룹 복제: group_replication_applier 채널의 적용자 스레드가 오류를 발견했을 때, 오류 메시지에 표시된 master_log_nameend_log_pos 값이 잘못되었습니다. 이는 트랜잭션의 이벤트가 트랜잭션이 생성된 멤버의 바이너리 로그에 기록되기 전에 복제되기 때문에, 적용자 스레드가 복제본에서 해당 이벤트를 적용할 때 최종 값이 알려지지 않기 때문입니다. 혼란을 방지하기 위해, 이제 group_replication_applier 채널에서 발생하는 이러한 오류 메시지에는 더 이상 바이너리 로그 이름이나 위치가 포함되지 않습니다. (버그 #89146, 버그 #27368735)

macOS: MySQL 기본 설정 창에서 서버가 자동 시작하지 않도록 설정되었음에도 불구하고, 서버가 시스템 부팅 시 자동으로 시작되었습니다. (버그 #27969174, 버그 #90672)

Microsoft Windows: Windows 디버그 빌드에서 빈 정의 문자열로 CREATE SPATIAL REFERENCE SYSTEM를 실행하면 어설션이 발생할 수 있었습니다. (버그 #27672683)

클라이언트 라이브러리에서 ppoll()에 대해 잘못된 신호가 차단 해제되었습니다. Facebook 팀에 감사드립니다. (버그 #28075623, 버그 #90999, 버그 #28096808, 버그 #91067)

특정 ALTER TABLE 문이 테이블 암호화를 비활성화할 수 있었습니다. (버그 #28045585)
참고: 이 문제는 버그 #27389878의 회귀입니다.

일부 조건에서 MyISAM 코드 컴파일이 포함 파일 누락으로 인해 실패했습니다. (버그 #28039150, 버그 #90898)

REGEXP_REPLACE() 함수가 UPDATE 문에서 사용될 때 결과가 잘리는 문제가 있었습니다. (버그 #28027093, 버그 #90870)

REGEXP_REPLACE() 결과가 한 결과 집합의 한 행에서 다음 행으로 넘어가면서 이전 결과가 현재 행에 누적되는 문제가 있었습니다. (버그 #27992118, 버그 #90803)

MySQL 클라이언트 라이브러리에서 힙 오버플로 취약점이 수정되었습니다. (버그 #27980823)

SUPER 권한을 가진 사용자가 keyring_operations 시스템 변수를 수정할 수 없었습니다. (버그 #27976270)

MySQL 5.7 및 MySQL 8.0.11에서 타임스탬프가 0인 풀텍스트 검색 보조 테이블이 MySQL 8.0.11에서 8.0.12로 업그레이드할 때 데이터 사전 업그레이드 실패를 초래했습니다. (버그 #27960500)

MySQL 5.7에서 업그레이드할 때 “memcpy에서 소스와 대상이 겹칩니다”라는 Valgrind 오류가 반환되었습니다. (버그 #27945658, 버그 #90691)

setuid() 호출을 실행한 후 Linux 바이너리에서 코어 덤프를 수행할 수 없었습니다. (버그 #27929894, 버그 #90642, 버그 #23337428, 버그 #21723)

RESET PERSIST가 메모리에서 변수 값을 플러시하지 않았습니다. (버그 #27924206)

디버그 빌드에서, 긴 숫자 문자열을 포함하는 테이블을 생성하고 열에 인덱스를 지정할 때 어설션이 발생할 수 있었습니다. (버그 #27909771)

디버그 빌드에서, 알 수 없는 변수를 위한 RESET PERSIST가 어설션을 발생시킬 수 있었습니다. (버그 #27903874, 버그 #90546)
참고: 이 문제는 버그 #27374791의 회귀입니다.

파티셔닝된 테이블을 참조하는 뷰의 열 메타데이터를 업데이트하면 서버가 종료될 수 있었습니다. (버그 #27903842)

디버그 빌드에서 GEOMETRY 열과 SELECT * FROM (SELECT NULL)의 결합된 데이터 타입을 계산할 때 UNION 쿼리에서 어설션이 발생할 수 있었습니다. (버그 #27903792, 버그 #90550)

디버그 빌드에서 thread_stack=0으로 서버를 시작한 후 ALTER TABLE을 실행하면 어설션이 발생할 수 있었습니다. (버그 #27899274, 버그 #90525)

SHOW TABLE STATUS가 서버 종료를 일으킬 수 있었습니다. (버그 #27897815)

INTERVAL() 함수를 사용하는 생성된 열에서 잘못된 동작이 발생할 수 있었습니다. (버그 #27881102)

Fedora 28에서, Connector ODBC 네이티브 패키지가 설치된 경우 MySQL 커뮤니티 RPM 패키지를 설치할 수 없었습니다. (버그 #27850721)

퍼포먼스 스키마를 삭제할 수 있었습니다. (버그 #27830283)

mysql_sys_var_longlong() 또는 String::copy() 호출에서 런타임 오류가 발생할 수 있었습니다. (버그 #27822413, 버그 #27808412)

부적절한 오류 번호를 사용하는 오류 로깅 코드로 인해 어설션이 발생했습니다. (버그 #27792903)
참고: 이 문제는 버그 #27462408의 회귀입니다.

ALTER TABLECONVERT TO CHARACTER SET charset_name 절에서 _charset_name_이 DEFAULT일 경우 구문 오류가 발생했습니다. (버그 #27760787, 버그 #90222)
참고: 이 문제는 버그 #27389878의 회귀입니다.

클라이언트 연결 시 암호화된 연결이 필수로 지정되었으나 서버가 SSL을 지원하지 않도록 구성된 경우 암호화되지 않은 연결이 발생할 수 있었습니다. (버그 #27759871)

INSERT INTO ... SELECT는 지오메트리 열에 대해 유효한 지오메트리 값을 요구하는 검사를 INSERT INTO ... VALUES()와 동일하게 수행하지 않았습니다. (버그 #27756083)

REGEXP_INSTR()가 잘못된 매치 모드 플래그와 함께 사용될 때 오류 메시지를 반환하지 않았습니다. (버그 #27751277)

일부 데이터 사전 테이블 정의가 초기 설계와 더 밀접하게 일치하도록 수정되었습니다. 또한, 데이터 사전 버전 번호가 증가했으며, 데이터 사전 테이블 인덱스를 참조하는 코드는 이제 숫자 값 대신 기호 인덱스 이름을 사용합니다. (버그 #27745526, 버그 #90196)

많은 매개 변수를 가진 행을 삽입하는 준비된 문을 실행하는 속도가 매우 느렸습니다. (버그 #27699248)

ibd2sdi가 나누기 0 연산을 수행하여 종료될 수 있었습니다. (버그 #27692051, 버그 #90071)

mysql-boost-8.0.4.tar.gz 소스 배포에 NDB 소스가 누락되었습니다. (버그 #27690232)

SHOW GRANTS를 특권이 없는 사용자에게 실행하면, 이 사용자가 익명 사용자로부터 특권을 상속받은 경우 서버 종료가 발생할 수 있었습니다. (버그 #27678129)

파서가 CREATE INDEX의 인덱스 이름을 비워 두는 것을 허용했습니다. (버그 #27676427)

systemd 또는 mysqld_safe에 의해 시작된 서버 재시작 실패가 오류 로그에 기록되지 않았습니다. (버그 #27675050, 버그 #90012)

디버그 빌드에서, 트랜잭션이 읽기 전용 모드일 때 히스토그램을 생성하거나 삭제하려고 하면 어설션이 발생할 수 있었습니다. (버그 #27672693)

서버가 --skip-grant-tables로 시작된 경우, SET ROLE DEFAULT 명령이 서버 종료를 일으켰습니다. (버그 #27672154)

VARBINARY 값을 TIME 값으로 캐스팅하는 작업이 올바르게 수행되지 않았습니다. (버그 #27665997)

const 참조를 위한 조건 생성 후 오류 검사가 수행되지 않았습니다. (버그 #27665085)

MeCab 모델에 의해 관리되는 사전 정보 객체가 MeCab 모델이 해제된 후에도 사용되었습니다. (버그 #27660368)

MYSQL_AUDIT_AUTHENTICATION_CLASS 클래스의 이벤트를 중단하려고 하면 서버 종료가 발생했습니다. 이제 이 이벤트는 중단할 수 없습니다. (버그 #27645636)

리소스 그룹 명령문은 암시적 커밋을 발생시키므로 저장 함수에서 허용되지 않게 되었습니다: CREATE RESOURCE GROUP, ALTER RESOURCE GROUP, DROP RESOURCE GROUP. (버그 #27638623, 버그 #89914)

감사 로그 필터 규칙이 클래스 이름을 문자열 배열로 지정하는 것을 허용하지 않았습니다. 이제 이를 지원합니다. 예시:

{
  "filter": {
    "class": [
      { "name": [ "connection", "general", "table_access" ] }
    ]
  }
}

(버그 #27628325)

Windows에서 Visual C++ Redistributable for Visual Studio가 제거된 경우, MSI 설치 프로그램을 사용한 MySQL 제거가 실패했습니다. (버그 #27621546)

mysql_secure_installation은 이제 더 이상 사용되지 않는 validate_password 플러그인이 아닌, validate_password 컴포넌트를 로드합니다. (버그 #27619667)

물음표(?)가 포함된 표현식을 사용하는 REGEXP_LIKE()가 준비된 문에 포함될 때 제대로 처리되지 않았습니다. (버그 #27595368)

REGEXP_SUBSTR()NULL 패턴을 올바르게 처리하지 않았습니다. (버그 #27572258)

일부 SHOW CREATE TABLE 문이 어설션을 발생시킬 수 있었습니다. (버그 #27569314)

퍼포먼스 스키마 events_stages_current 테이블에 잘못된 단계가 나타날 수 있었습니다. (버그 #27566220)

테이블의 트리거가 PRECEDES/FOLLOWS 절에 의해 지정된 순서와 다른 순서로 실행될 수 있었습니다. (버그 #27544152)

일부 지속된 변수를 시작 시 설정하려고 하면(예: keyring_operationsmandatory_roles) 권한 위반 오류가 발생하고 서버가 시작되지 않거나 변수가 설정되지 않았습니다. (버그 #27523095)

특정 조건에서 MeCab 풀텍스트 검색 코드에서 사용되지 않는 변수 경고가 발생했습니다. Laurynas Biveinis에게 패치에 대해 감사드립니다. (버그 #27519952, 버그 #89598)

저장 프로시저 내에서, FEDERATED 스토리지 엔진을 사용하는 테이블에 대해 외래 키 실패를 처리하는 조건 핸들러를 작성할 수 없었습니다. (버그 #27509959)

외래 키 관계에서 부모 키 역할을 하는 기본 키를 삭제할 수 있었습니다. 또한 테이블 생성 시 SQL 레이어는 외래 키에 대한 부모 키가 있는지 확인하고 누락된 경우 오류를 보고합니다. (버그 #27506922, 버그 #89570, 버그 #11754696, 버그 #46337)

NO_ENGINE_SUBSTITUTION SQL 모드가 비활성화된 경우, CREATE TABLEALTER TABLE에서 disabled_storage_engines 시스템 변수를 사용하여 원하는 엔진이 비활성화된 경우 오류가 발생했습니다. (버그 #27502530)

keyring_encrypted_file 키링 플러그인을 사용한 키 회전이 서버 종료를 일으킬 수 있었습니다. (버그 #27497018)

MySQL Enterprise Firewall이 많은 규칙으로 구성된 경우, 서버 종료가 오래 걸릴 수 있었습니다. (버그 #27492122)

SET PERSIST_ONLY _var_name_ = DEFAULT는 기본값이 아닌 현재 글로벌 값을 지속했습니다. (버그 #27489026)

MySQL이 LINK_RANDOMIZE CMake 옵션으로 구성된 경우, --gc-sections 컴파일러 옵션이 비활성화됩니다. 이 조합은 세그멘테이션 오류를 일으킵니다. (버그 #27484106)

서버 설치 중에, mysql.infoschema, mysql.session, mysql.sys 예약 계정이 기본 플러그인이 caching_sha2_password임에도 불구하고 mysql_native_password 인증 플러그인과 연관되었습니다. (버그 #27454299)

일부 윈도우 함수가 집계된 데이터 타입에 대해 잘못된 정밀도를 사용했습니다. (버그 #27452179)

16진수 값 _H_에 대해, WHERE (-1) - H 조건을 가진 SELECT 문이 어설션을 발생시켰습니다. (버그 #27452082)
참고: 버그 #27041382도 참조하십시오. 이 문제는 버그 #21982792의 회귀입니다.

pfs-t 유닛 테스트에서 메모리 누수가 수정되었습니다. Yura Sorokin에게 패치에 대해 감사드립니다. (버그 #27440735, 버그 #89384)

저장 프로그램 내에서 여러 번 CHAR() 호출 시, 잘못된 코드 포인트가 인수로 전달되면 다른 결과가 나타날 수 있었습니다. (버그 #27410088)

automatic_sp_privileges가 활성화된 경우, 루틴 생성자에게 EXECUTEALTER ROUTINE 권한이 올바르게 부여되지 않았습니다. (버그 #27407480)

정렬을 사용하는 일부 쿼리가 최적화 중에 초기화되지 않은 열에 접근하여 서버가 종료될 수 있었습니다. (버그 #27389294)

디버그 빌드에서, 비어 있는 문자열을 포함하는 GEOMETRY NOT NULL 열이 있는 ARCHIVE 테이블에 대해 ALTER TABLE을 실행하면 어설션이 발생했습니다. (버그 #27330634, 버그 #89088)

auth_sock 인증 플러그인으로 인증된 계정이 이전 클라이언트를 사용하여 연결할 수 없었습니다. (버그 #27306178)

시스템 테이블을 읽거나 초기화할 수 없는 경우, 서버가 불완전한 오류 메시지를 기록했습니다. Daniël van Eeden에게 패치에 대해 감사드립니다. (버그 #27302337, 버그 #89001)

RENAME USER가 어떤 계정이나 역할에도 부여되지 않은 역할의 이름을 변경할 때 실패했습니다. (버그 #27284699)

keyring_okv 플러그인이 기본 서버를 사용할 수 없을 때 항상 대기 OKV 서버로 장애 조치하지 않았습니다. (버그 #27244099)

퍼포먼스 스키마가 잘못된 SOURCE 열 값을 접근하려고 시도할 수 있었습니다. (버그 #27231036)

내부 권한 구조의 잘못된 처리로 서버가 종료될 수 있었습니다. (버그 #27230925)

디버그 빌드에서, GIS 계산에서 결정을 계산하는 데 너무 작은 타입을 사용하면 어설션이 발생할 수 있었습니다. (버그 #27135504)

ALTER TABLEINPLACE 알고리즘을 사용하여 InnoDB 테이블의 VARCHAR 열 길이를 증가시키려고 하면 인덱스 크기가 COMPACT 또는 REDUNDANT 행 형식의 InnoDB 제한인 767바이트를 초과하는 경우 시도가 실패했습니다.
인덱스 크기가 이 한도를 초과할 경우, 엄격한 SQL 모드에서는 오류를 보고하고 비엄격 모드에서는 경고를 보고하지 않았습니다. (버그 #26848813)

MySQL 5.7.19에서 mysql.gtid_executed 테이블이 덤프에서 제외되었습니다. 이제 이 테이블은 더 이상 제외되지 않지만, 데이터는 덤프되지 않습니다. (버그 #26643180, 버그 #87455)
참고: 이 문제는 버그 #82848, 버그 #24590891의 회귀입니다.

slave_rows_search_algorithms 시스템 변수는 행 기반 로깅 및 복제를 위한 행 배치를 준비할 때 행을 일치시키기 위해 어떻게 검색할지 제어합니다. INDEX_SCAN을 검색 알고리즘으로 지정하면 인덱스가 있는 경우 인덱스 스캔을 수행합니다. 마스터와 슬레이브에서 다른 기본 키가 사용되고 슬레이브에 고유 키가 있는 경우 코드 버그로 인해 인덱스 스캔이 수행되지 않고 대신 느린 테이블 스캔이 수행되었습니다. 이제 인덱스 스캔이 사용되도록 수정되었습니다. (버그 #26450129, 버그 #23311892, 버그 #81500, 버그 #81501)

서브쿼리 물질화의 특정 경우가 서버 종료를 초래할 수 있었습니다. 이제 이 쿼리는 물질화를 비활성화하라는 오류를 생성합니다. (버그 #26402045)

지리적 GeometryCollection 값에 대한 공간 연산이 유효한 지오메트리에 대해 ER_GIS_INVALID_DATA를 반환할 수 있었습니다. (버그 #26174808)

MyISAM 테이블에 대해 특정한 INSERTDELETE 문 시퀀스가 테이블 손상을 일으킬 수 있었습니다. (버그 #25541037)

SHOW CREATE USER 명령은 현재 사용자의 정보를 보기 위한 경우를 제외하고 mysql 데이터베이스에 대한 SELECT 권한을 필요로 합니다. (버그 #24911117)

기본 데이터베이스가 없고 함수 본문이 다른 함수를 호출하는 경우 CREATE FUNCTION이 오류를 발생시켰습니다. (버그 #24357244, 버그 #82350)

디버그 빌드에서, 파생 테이블 해석이 실패한 경우 저장 프로그램 내에서 실행된 SELECT 문이 어설션을 발생시킬 수 있었습니다. (버그 #23221336)

mysqldump 또는 mysqlpump를 사용하여 바이너리 데이터를 덤프할 때 --hex-blob 옵션을 사용하지 않으면 덤프 파일을 다시 로드할 때 경고가 발생할 수 있었습니다. 이제 이러한 값은 _binary 인트로듀서를 사용하여 기록되어 경고가 발생하지 않습니다. (버그 #22601255, 버그 #80150)

와일드카드가 포함된 문자열 비교가 초기화되지 않은 메모리를 참조할 수 있었습니다. (버그 #12635103)

잘못된 캡처 그룹으로 호출된 REGEXP_REPLACE()Valgrind 경고를 발생시켰습니다. (버그 #87842, 버그 #27612255)

Leave a Comment



이 문서 공유

8.0.12 변경 사항 (2018-07-27 GA)

링크 복사

CONTENTS