8.0.12 변경 사항 (2018-07-27 GA)
공식 문서: Changes in MySQL 8.0.12 (2018-07-27, General Availability)
감사 로그 관련 사항
새로운 MySQL 설치의 경우, MySQL Enterprise Audit에서 사용하는 audit_log_user
테이블의 USER
및 HOST
열 정의가 이제 mysql.user
시스템 테이블의 User
및 Host
열 정의와 더 잘 일치하도록 개선되었습니다.
이미 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
키워드는 선택 사항이지만, 공간 열에 인덱스를 생성할 때 암시적으로 적용됩니다. 지오메트리 열에 대한 공간 인덱스는 기본 키 또는 고유 인덱스로 허용되지 않습니다. 또한, 공간 인덱스에는 ASC
및 DESC
가 허용되지 않습니다. (버그 #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_action
이 ABORT_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_ADMIN
및 PERSIST_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 TABLE
및 DROP 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_TABLES
와 INFORMATION_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_days
및 binlog_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=TABLE
및 relay_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
로 기록되고, BEGIN
과 COMMIT
만 포함된 빈 트랜잭션이 기록됩니다. 바이너리 로깅이 비활성화된 경우, 필터링된 트랜잭션의 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_name
및 end_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 TABLE
의 CONVERT 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_operations
및 mandatory_roles
) 권한 위반 오류가 발생하고 서버가 시작되지 않거나 변수가 설정되지 않았습니다. (버그 #27523095)
특정 조건에서 MeCab 풀텍스트 검색 코드에서 사용되지 않는 변수 경고가 발생했습니다. Laurynas Biveinis에게 패치에 대해 감사드립니다. (버그 #27519952, 버그 #89598)
저장 프로시저 내에서, FEDERATED
스토리지 엔진을 사용하는 테이블에 대해 외래 키 실패를 처리하는 조건 핸들러를 작성할 수 없었습니다. (버그 #27509959)
외래 키 관계에서 부모 키 역할을 하는 기본 키를 삭제할 수 있었습니다. 또한 테이블 생성 시 SQL 레이어는 외래 키에 대한 부모 키가 있는지 확인하고 누락된 경우 오류를 보고합니다. (버그 #27506922, 버그 #89570, 버그 #11754696, 버그 #46337)
NO_ENGINE_SUBSTITUTION
SQL 모드가 비활성화된 경우, CREATE TABLE
및 ALTER 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
가 활성화된 경우, 루틴 생성자에게 EXECUTE
및 ALTER 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 TABLE
로 INPLACE
알고리즘을 사용하여 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
테이블에 대해 특정한 INSERT
및 DELETE
문 시퀀스가 테이블 손상을 일으킬 수 있었습니다. (버그 #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)