MySQL 8.0.14 릴리즈 노트 2019-01-21 #3

MySQL

[이전글] MySQL 8.0.14 릴리즈 노트 #1
[이전글] MySQL 8.0.14 릴리즈 노트 #2

MySQL 8.0.14 릴리즈 노트 #3 내용입니다.

  • 계정 관리 노트 (Account Management Notes)
  • 감사 로그 노트 (Audit Log Notes)
  • 컴파일 노트 (Compilation Notes)
  • 컴포넌트 노트 (Component Notes)
  • 구성 참고 노트 (Configuration Notes)
  • 사용 중지 및 제거 노트 (Deprecation and Removal Notes)
  • SQL 함수 및 연산자 노트 (SQL Function and Operator Notes)
  • 로깅 노트 (Logging Notes)
  • 최적화 도구 노트 (Optimizer Notes)
  • 패키징 노트 (Packaging Notes)
  • 성능 스키마 노트 (Performance Schema Notes)
  • 플러그형 인증 (Pluggable Authentication)
  • 보안 노트 (Security Notes)
  • 공간 데이터 지원 (Spatial Data Support)
  • SQL 구문 노트 (SQL Syntax Notes)
  • 스레드 풀 노트 (Thread Pool Notes)
  • X 플러그인 노트 (X Plugin Notes)
  • 기능 추가 및 변경 (Functionality Added or Changed)
  • 버그 수정 (Bugs Fixed)

버그 수정 (Bugs Fixed)

  • Important Change: MySQL 5.7 서버에서 MySQL 8.0을 실행하는 서버로 덤프를 가져오면 8.0 서버에서 지원되지 않는 SQL 모드가 사용되었을 때 ER_WRONG_VALUE_FOR_VAR로 표시되는 경우가 많습니다. 이 문제는 MySQL 5.7에서는 NO_AUTO_CREATE_USER가 기본적으로 설정되어 있지만 MySQL 8.0에서는 지원되지 않기 때문에 자주 발생할 수 있습니다. 이러한 상황에서 서버의 동작은 이제 pseudo_slave_mode 시스템 변수의 설정에 따라 달라집니다. 거짓일 경우, 서버는 ER_UNSUPPORTED_SQL_MODE로 모드 설정을 거부합니다. pseudo_slave_mode가 true이면 서버는 지원되지 않는 모드를 무시하고 경고를 표시합니다. 다음 사항에 유의하십시오. mysqlbinlog는 SQL을 실행하기 전에 pseudo_slave_mode를 true로 설정합니다.(Bug #90337, Bug #27828236)
  • InnoDB: 백그라운드 정리 스레드가 실행 취소 로그를 잘라낸 후 글로벌 및 백업 메타데이터 잠금을 해제하지 못했습니다. (Bug #29215254, Bug #93901)
  • InnoDB: MySQL이 Solaris X86에서 시작되지 않습니다. TempTable 저장소 엔진의 정적 스레드 로컬 ‘tables’ 변수가 제대로 초기화되지 않았습니다. (Bug #28987365)
  • InnoDB: 교착 상태 감지 시 사용되는 래칭 논리가 단순화되었습니다.(Bug #28904966)
  • InnoDB: 클러스터된 인덱스 레코드의 이전 버전에 대한 잘못된 레코드 오프셋으로 인해 디버그 어설션이 발생했습니다. (Bug #28825617)참조 : 이 문제는 Bug #25540277의 회귀입니다.
  • InnoDB: 기록 목록의 길이가 innodb_max_purge_lag를 초과할 때 부과되는 최소 DML 지연이 5000마이크로초에서 5마이크로초로 감소되었습니다. (Bug #28813453)
  • InnoDB: 잠금 순서가 잘못되어 한 스레드가 테이블을 삭제하려고 할 때 다른 스레드가 암호화된 테이블스페이스를 만들 때 교착 상태가 발생했습니다.(Bug #28774259)
  • InnoDB: ALTER TABLESPACE에서 지원되지 않는 테이블스페이스 특성을 무시하지 못했습니다. (Bug #28656611)
  • InnoDB: 명시적 잠금 변환 논리가 단순화 및 최적화되었습니다. (Bug #28637472)
  • InnoDB: 조각 페이지 할당 실패로 어설션이 발생했습니다. (Bug #28615893)
  • InnoDB: 디버그 지점을 잘못 배치하면 플러시된 LOB 페이지가 손상된 것으로 간주됩니다. (Bug #28607368)
  • InnoDB: TempTable 저장소 엔진이 tmpdir 변수로 정의된 디렉토리가 아닌 시스템 임시 디렉토리에 임시 파일을 잘못 생성했습니다. (Bug #28598943)
  • InnoDB: 전체 텍스트 검색 보조 테이블의 이름과 유사한 이름의 테이블을 삭제하려고 하면 어설션 오류가 발생했습니다. (Bug #28577083)
  • InnoDB: UPDATE 쿼리에서 호출된 함수가 가상 열을 고려하지 않았습니다. (Bug #28560650)
  • InnoDB: 버퍼 풀 zip 해시 뮤텍스에 대해 잘못된 키가 정의되었습니다. (Bug #28556539)
  • InnoDB: mysql.innodb_table_statsmysql.innodb_index_stats 테이블을 포함하는 백그라운드 트랜잭션의 교착 상태 처리가 수정되었습니다. 교착 주기에 내부 테이블이 포함될 때 트리거되는 어설션에서 테이블이 잘못 포함되었습니다. (Bug #28523042, Bug #92069)
  • InnoDB: innodb_spin_wait_delay를 높은 값으로 설정하면 서버를 종료할 때 어설션 오류가 발생했습니다. 이러한 장애가 발생하지 않도록 innodb_spin_wait_delay 최대값을 1000으로 줄였습니다. (Bug #28489407, Bug #91973)
  • InnoDB: 외부 키 제약 조건 및 인덱싱된 가상 열이 있는 테이블에서 ON DELETE CASCADE 작업으로 인해 서버가 종료되었습니다.(Bug #28470805)
  • InnoDB: 가상 열 값을 포함하는 잘못 작성된 DML 로그에서 어설션이 발생했습니다.(Bug #28448853)
  • InnoDB: DATA DIRECTORY 절을 사용하여 MySQL 데이터 디렉토리 외부에 생성된 테이블에서 RENAME TABLE 작업을 실행할 때 실패했습니다. (Bug #28341514)
  • InnoDB: ALTER TABLE ... EXCHANGE PARTITION 에서 서로 다른 가상 열 정의를 가진 파티션을 교환할 수 있도록 허용하여 나중에 InnoDB가 존재하지 않는 가상 열에서 읽으려고 할 때 어설션이 발생했습니다. (Bug #28235668)
  • InnoDB: 트랜잭션 커밋 중에 발생하는 redo 로그 쓰기 및 플러시 요청에 대한 카운터가 추가되었습니다. 이 카운터는 로그 기록기 스레드에서 연속 요청 간의 평균 시간을 계산하는 데 사용됩니다. 평균 시간이 100마이크로초보다 크면 로그 기록기 쓰레드는 스핀 지연을 사용하지 않고 대신 10마이크로초 시간 초과 제한이 있는 요청 이벤트를 기다립니다.중단의 원인이 될 수 있는 로그 작성기 스레드 구현 문제도 수정되었습니다.(Bug #28062382, Bug #28444247, Bug #28616442, Bug #90890)
  • InnoDB: 완전히 초기화되지 않은 새로 추가된 실행 취소 테이블스페이스에 롤백 세그먼트를 추가하려고 할 때 어설션이 발생했습니다. (Bug #27914054)
  • InnoDB: RENAME TABLE 작업 후 외래 키 제약 조건이 무시되었습니다. (Bug #27453180, Bug #89441)
  • InnoDB: O_DIRECT_NO_FSYNC를 사용합니다. innodb_flush_method 설정은 파일 시스템 메타데이터가 동기화되지 않아 시스템이 중단될 수 있습니다. O_DIRECT_NO_FSYNC 모드에서 이 문제가 발생하지 않도록 InnoDB는 새 파일을 만든 후, 파일 크기를 늘린 후, 파일을 닫은 후에 fsync()를 호출합니다. 각 쓰기 작업 후 fsync() 시스템 호출을 계속 건너뜁니다. (Bug #27309336)
  • InnoDB: 빈 문자열로 CREATE TABLE 또는 ALTER TABLE ECRIPTION 옵을 지정해도 오류를 발생시키지 못했으며 기본 설정인 ENCRYPTION='N'으로 해석되었습니다. 이제 빈 문자열을 지정하면 잘못된 문자열로 처리되어 오류가 발생합니다. (Bug #27177845)
  • InnoDB: Windows의 MySQL 인스턴스에서 lower_case_table_names 변수가 활성화된 Linux의 MySQL 인스턴스로 테이블스페이스 데이터 파일을 이동할 때 분할된 테이블 이름 구분 기호(파티션된 테이블 이름의 #P# 또는 #SP# 부분)가 소문자로 변환되지 않았습니다. 이름을 소문자로 완전히 변환하지 못하면 테이블을 변경하거나 이름을 바꾸거나 최적화할 때 “저장 엔진에서 InnoDB 오류“와 같은 오류가 발생합니다. (Bug #26925260)
  • InnoDB: 64비트 Windows 시스템에서 크기가 4GB 이상인 테이블스페이스 파일에 쓰려고 할 때 어설션이 발생했습니다. 그 실패는 좁아진 캐스팅 때문이었습니다. (Bug #26636815, Bug #87423)
  • InnoDB: 파티션된 테이블을 참조하는 외래 키 제약 조건(지원되지 않는 작업)이 있는 테이블을 생성하려고 시도한 후 SHOW ENGINE INNODB STATUS 출력에서 참조된 테이블 이름을 확인할 수 없음을 나타내는 외래 키 오류를 잘못 보고했습니다. 이 오류는 더 이상 나타나지 않으며 클라이언트로 반환된 오류 메시지에는 이제 파티셔닝과 함께 외부 키가 아직 지원되지 않는다는 내용이 표시됩니다. (Bug #25319071, Bug #84331)
  • InnoDB: 파티션 테이블을 참조하는 외부 키 생성 및 외부 키를 지원하지 않는 저장소 엔진을 사용하는 테이블 참조 등 지원되지 않는 외부 키 작업에 대해 잘못된 오류 메시지가 보고되었습니다. 이제 오류 메시지가 더 많은 정보를 제공합니다. (Bug #11747571, Bug #33027)
  • Partitioning: 삭제된 테이블스페이스에서 즉석 추가 열을 수행하려고 하면 인수가 발생했습니다. 이러한 경우 오류가 반환됩니다. (Bug #28517843)
  • Partitioning: BLOB 또는 TEXT 열이 포함된 분할된 테이블에서 반복되는 ALTER TABLE 문이 항상 올바르게 처리되는 것은 아닙니다. (Bug #28491099)
  • Partitioning: 분할된 테이블에 DATA DIRECTORY 옵션을 사용하여 하나 이상의 파티션 정의가 있는 경우 ALTER TABLE ... EXCHANGE PARTITION가 작동하지 않습니다. 이 수정 프로그램은 InnoDB 스토리지 엔진만 사용하여 분할된 테이블을 지원합니다. (Bug #19730200)
  • Replication: group_replication_exit_state_action의 값에 따라, 그룹을 탈퇴하는 멤버들의 행동은 일정하지 않았습니다. 오류 시나리오와 상관없이 그룹을 탈퇴하는 멤버들의 동작을 조화시키기 위해, 이제 group_replication_exit_state_action=READ_ONLY을 가진 멤버가 의도치 않게 그룹을 탈퇴할 때 멤버가 시작할 때 가졌던 super_read_only 모드가 복원됩니다. 이렇게 하면 group_replication_exit_state_action=ABORT_SERVER를 가진 멤버의 동작과 일치합니다. (Bug #28971639, Bug #28526591)
  • Replication: CREATE TABLE 문을 위해 이진 로그에 기록된 메타데이터에는 테이블의 문자 열에 대한 문자 집합 정보가 포함됩니다. 이전에 mysqlbinlog 옵션 --print-table-metadata를 지정하면 테이블에 대한 기본 문자 집합이 인쇄되었습니다. 이 기본 문자 집합은 표 열에 가장 자주 나타나는 문자 집합이며, 표에 대해 지정된 기본 문자 집합과 일치하지 않을 수 있습니다. xbinlog는 이제 각 열에 대한 문자 집합을 개별적으로 인쇄합니다. 열도 별도의 선에 인쇄됩니다. (Bug #28774144)
  • Replication: 문자 집합 정보가 ENUMSET 열에 대한 테이블 메타데이터의 일부로 이진 로그에 기록되지 않았습니다. 이 정보는 binlog_row_metadata=FULL를 설정하면 추가되어 확장된 메타데이터가 생성됩니다. (문자 열의 경우 문자 집합 정보도 binlog_row_metadata=MINIMAL로 추가됩니다.) (Bug #28706307)
  • Replication: 의심되는 그룹 Replication 그룹 구성원을 내보내기 전의 최대 대기 시간 초과 설정이 3600초(1시간)로 줄었습니다. 이전에는 group_replication_member_expel_timeout 시스템 변수를 최대 31536000초의 값으로 설정할 수 있었습니다. 새로운 상한은 그룹에서 비활성 구성원을 제거하기 위한 보다 합리적인 최대값을 제공합니다. 시간 초과에 대한 기본 설정은 0입니다. 즉, 비활성 구성원은 5초 탐지 기간이 종료된 후 즉시 제명해야 합니다. 시간 초과 값을 지정하면 속도가 느린 네트워크에서 불필요한 제거를 방지하거나 일시적인 네트워크 장애 또는 시스템 속도가 느려지는 경우를 방지할 수 있습니다. (Bug #28656750)
  • Replication: 이진 로그의 ‘ROLLback TO SAVEPOINT’ 문에서 식별자에 대한 따옴표 처리를 수정하는 패치가 후속 MySQL 버전에 올바르게 적용되지 않았습니다. (Bug #28569645)
  • Replication: MySQL 5.7.23의 패치 이후 LOAD DATA 문이 MySQL 5.7.22 마스터에서 복제 슬레이브로 문 기반 복제를 중지했습니다. 그 문제는 이제 해결되었습니다. (Bug #28541204, Bug #92132)
  • Replication: 경우에 따라 마스터 정보 로그가 테이블(master_info_repository=TABLE)에서 파일(master_info_repository=FILE)로 변경된 경우 복제 슬레이브에서 CHANGE MASTER TO 문을 사용할 수 없습니다. (Bug #28529558)
  • Replication: mysqlbinlog가 DML SQL 문과 관련된 이벤트에 대해 sql_require_primary_key 시스템 변수(MySQL 8.0.13에서 소개됨)를 ON으로 설정하는 문을 잘못 추가했습니다. 시스템 변수가 ON으로 설정된 경우 수행되는 검사는 새 테이블을 만들거나 기존 테이블의 구조를 변경하는 DDL SQL 문에만 적용됩니다. (Bug #28524803)
  • Replication: 시스템 변수 binlog_transaction_dependency_trackingbinlog_transaction_dependency_history_size를 설정하거나 읽을 때 필요한 잠금 유형은 활성 이진 로그 작업에도 동일한 잠금이 필요하므로 교착 시나리오가 발생할 수 있습니다. 트랜잭션 종속성 추적 시스템 변수에 대한 액세스에 새 잠금 유형이 대신 사용되어 교착 상태가 발생할 수 없습니다. (Bug #28511326, Bug #91941, Bug #28537209, Bug #92108)
  • Replication: 다음 트랜잭션에 대한 GTID 값(gtid_next=NOT_YET_DETERMINED)이 아직 결정되지 않았을 때 암묵적 커밋을 시도한 경우 디버그 빌드에서 어설션이 발생했습니다. 형식 설명 이벤트를 실행하기 위해 mysqlbinlog에서 내부 사용 문 BINLOG 를 실행한 직후에 gtid_next 시스템 변수가 이 값을 가집니다. 암묵적 커밋이 있는 문이 다음에 시도된 경우(예: CREATE TABLE), gtid_next 설정이 AUTOMATIC 상태로 전환되지 않고 허용되지 않는 상태로 남아 있습니다. 자동 커밋이 켜져 있으면 문을 시도할 때 오류 ER_CANT_SET_GTID_NEXT_TO_ANONYMOUS_WHEN_GTID_MODE_IS_ON도 기록됩니다. (Bug #28490793, Bug #91980)
  • Replication: mysqlbinlogmove를 사용하여 다른 위치로 이동한 이진 로그 파일에 대해 PURGE BINARY LOGS TO *'log_name'*` 문이 실패했습니다. 이러한 파일은 여전히 이진 로그 인덱스 파일에 나열되지만 이진 로그 파일이 일반적으로 저장된 디렉터리에 상대적인 경로가 아닌 절대 경로를 사용하여 나열됩니다. 이제 MySQL Server가 이동된 이진 로그 파일을 성공적으로 찾아서 정리할 수 있습니다. (Bug #28284624)
  • Replication: binlog_formatMIXED로 설정하면 함수에 임시 테이블에 적용된 DML 문과 DROP TEMPORARY TABLE 문이 포함된 경우 함수 호출이 이진 로그에 기록되지 않아 복제 오류가 발생합니다. 이제 함수가 임시 테이블에서 작동하는 DML 문을 포함하는 경우 함수 호출이 혼합 복제 모드의 이진 로그에 기록됩니다. (Bug #28258992)
  • Replication: GTID가 사용 중인 복제 슬레이브 또는 그룹 복제 그룹 구성원에 대해 autocommit 를 0으로 설정하고 super_read_only=ON를 설정한 경우 완료되지 않은 트랜잭션으로 인해 서버가 종료되지 않았습니다. 트랜잭션에서 GTID를 mysql.gtid_executed 테이블에 저장하려고 했지만 super_read_only=ON 가 설정되어 업데이트에 실패했습니다. (autocommit를 1로 설정하면 이 상황에서 트랜잭션이 완료되고 대신 서버 시작 시 mysql.gtid_executed 테이블이 업데이트됩니다.) 이제 이 작업에 대해 super_read_only 설정에 대한 검사를 건너뛰므로 트랜잭션은 GTID를 mysql.gtid_executed 테이블에 저장하고 super_read_onlyautocommit 설정의 조합에 관계없이 완료할 수 있습니다. (Bug #28183718)
  • Replication: 그룹 복제의 GCS(그룹 통신 시스템)가 네트워크 이름 확인에 systemd-resolved 서비스를 사용한 시스템에서 호스트 이름을 확인할 수 없는 경우 GCS는 무기한 시도를 계속했습니다. 이제 이름 확인 서비스로부터 재시도 메시지가 반환되면 GCS는 제한된 수의 재시도를 수행한 다음 호스트 이름을 확인할 수 없다는 결론을 내립니다. (Bug #28177861)
  • Replication: gtid_next 값을 수동으로 설정할 때 알 수 없는 트랜잭션 식별자에 대해 XA ROLLBACK 문이 실행된 경우 디버그 빌드에서 어설션이 발생했습니다. 이제 서버는 XA ROLLBACK 문이 오류로 인해 실패할 경우 GTID 상태를 업데이트하려고 시도하지 않습니다. (Bug #27928837, Bug #90640)
  • Replication: 트랜잭션이 커밋되거나 롤백된 후 즉시 `SELECT... FOR UPDATE 문이 발행되고 트랜잭션이 gtid_next 세션 시스템 변수를 사용하여 수동으로 GTID를 할당한 경우 디버그 빌드에서 어설션이 발생했습니다. 트랜잭션에 대한 GTID를 설정하는 데 gtid_next가 사용되고 트랜잭션이 커밋되거나 롤백된 후에는 다른 명시적 SET GTID_NEXT 문을 다른 문보다 먼저 실행해야 합니다. 그렇지 않으면 gtid_next 값이 정의되지 않은 상태로 남아 있습니다. SELECT... FOR UPDATE 문은 아무런 변경도 하지 않았지만 쓰기 잠금을 획득했기 때문에 이 상황에서 GTID 일관성 위반을 유발했습니다. 이제 쓰기 잠금을 획득한 SELECT... FOR UPDATE 문은 이 상황에서 오류를 반환합니다. (Bug #27903848, Bug #90547)
  • Replication: 부하가 많은 경우 이진 로그 그룹 커밋의 경합 조건으로 인해 서버가 예기치 않게 중지될 수 있습니다. 이러한 상황을 방지하기 위해 거래 커밋의 추적이 변경되었습니다. (Bug #27556117)
  • Replication: 기존의 모든 릴레이 로그 파일의 총 크기(Relay_Log_Space)에 대해 SHOW SLAVE STATUS 문에서 반환되는 값은 릴레이 로그 파일에 사용되는 실제 디스크 공간보다 훨씬 커질 수 있습니다. 값을 업데이트하는 동안 I/O 스레드가 변수를 잠그지 않았으므로 SQL 스레드는 릴레이 로그 파일을 자동으로 삭제하고 I/O 스레드가 값 업데이트를 완료하기 전에 감소된 값을 쓸 수 있습니다. 그런 다음 I/O 스레드는 SQL 스레드의 업데이트를 무시하고 원래 크기 계산을 기록하여 삭제된 파일의 공간을 다시 추가합니다. 이제 동시 업데이트를 방지하고 정확한 계산을 위해 업데이트 중에 Relay_Log_Space 값이 잠깁니다. (Bug #26997096, Bug #87832)
  • Replication: 복제 슬레이브의 백업 프로세스에서 보기 위해 릴레이 로그 인덱스 파일이 일시적으로 잠겨 있고 MySQL Server가 이름 변경 또는 삭제 작업을 위해 해당 파일에 액세스를 시도했을 경우 백업이 경고와 함께 완료되었지만 MySQL Server에서 예기치 않게 중지되었습니다. MySQL Server는 이 시나리오 또는 유사한 시나리오가 설명이고 머지않아 파일을 다시 사용할 수 있게 될 경우에 대비하여 파일 액세스 작업을 여러 번 다시 시도합니다. (Bug #25839610)
  • Replication: sync_binlog=1가 설정된 경우, 이진 로그 종료 위치가 업데이트되기 전에 커밋 중에 이진 로그가 순환된 경우 서버가 이전 이진 로그 종료 위치를 새 이진 로그 파일에 사용하려고 시도했기 때문에 슬레이브에서 복제가 중지되었습니다. 이제 서버는 이진 로그 종료 위치를 업데이트할 때 이진 로그 파일 이름을 활성 이진 로그 파일과 비교하여 문제가 발생하지 않도록 합니다. (Bug #22252394, Bug #25524203, Bug #84752)
  • Replication: 그룹에 새 구성원을 추가할 때 인증 정보가 너무 커서 전송할 수 없는 경우 모든 그룹 구성원에 장애를 일으키는 이벤트가 생성되었습니다. 이러한 상황을 피하기 위해 인증 정보가 너무 크면 가입 회원을 탈퇴시키는 오류가 발생합니다. (Bug #93130, Bug #91870, Bug #28900691, Bug #28443958)
  • Replication: 예를 들어 group_replication_switch_to_multi_primary_mode 또는 group_replication_set_as_primary를 사용하여 그룹을 온라인으로 재구성할 때 구성원을 중지하면 예기치 않은 중지가 발생할 수 있습니다. 이제 STOP GROUP_REPLICATION를 발행할 때 구성원이 재구성 중인 온라인 그룹의 일부인 경우 그룹 코디네이터에게 그룹 복제가 중지된다는 알림이 표시됩니다. 구성원은 온라인 구성 프로세스가 진행 중인 작업을 완료할 때까지 기다리지만 이후 작업은 취소됩니다. (Bug #92829, Bug #28807260)
  • Replication: 복제를 중지할 때 보류 중인 트랜잭션이 있는 채널은 그룹 복제에 교착 상태가 발생할 수 있습니다. (Bug #92376, Bug #28636768, Bug #28365855)
  • Replication: group_replication_exit_state_actionABORT_SERVER로 설정하면 그룹 복제 플러그인은 WL#12003에서 추가한 새 구성 요소 서비스를 사용하여 MySQL을 종료합니다. (Bug #91793, Bug #28401703)
  • Replication: group_replication_switch_to_single_primary_mode()를 사용할 때 비동기 채널을 가진 멤버에 오류가 발생하면 비동기 복제 채널이 올바르게 중지되지 않아 서버가 예기치 않게 중지될 수 있습니다. (Bug #91747, Bug #28382590)
  • Replication: 멤버가 UNREACHABLE 또는 RECOVERING 상태인 상태에서 group_replication_switch_to_single_primary_mode와 같이 그룹을 구성하는 그룹 코디네이터 기반의 기능을 사용할 수 있었고, 이로 인해 모든 멤버가 ONLINE이 될 때까지 기다려야 했습니다. 이로 인해 그룹 코디네이터 작업이 성공적으로 완료되지 않을 수 있습니다. 이제 이 상태에서 그룹에서 이러한 함수를 호출하면 오류가 반환됩니다. 함수를 사용하여 그룹을 구성하기 전에 모든 구성원이 ONLINE인지 확인하십시오. (Bug #91537, Bug #28284355)
  • Replication: 피크로드가 지속되는 그룹에 가입하면 RECOVERING에서 ONLINE 상태로 전환되지 못할 수 있습니다. 원인은 다음과 같습니다.
    • 새 트랜잭션이 계속 도착하는 동안 구성원은 복구 중에 도착한 트랜잭션의 전체 대기열이 적용되기를 루프에서 기다리고 있었습니다.
    • 전체 대기열이 적용되었을 때도 구성원은 어플라이언스가 일시 중지되었는지 확인하고 있었는데, 이는 지속적인 최대 워크로드에서 발생할 가능성이 낮았습니다.
    이제 복구 완료 정책이 트랜잭션이 적용될 때까지 대기하는 경우 구성원은 먼저 다음 조건 중 하나가 충족될 때까지 기다립니다.
    • 흐름 제어 구성에 맞게 적용할 트랜잭션입니다. 다시 말해, 적용될 트랜잭션은 다음 흐름 제어 반복 중에 적용될 수 있습니다.
    • 복구 대기열이 비어 있는 경우 트랜잭션이 대기 중이거나 적용되지 않습니다.
    그런 다음 멤버 상태가 ONLINE으로 변경되기 전에 group_replication_applier 채널에서 현재 대기 중인 트랜잭션이 적용될 때까지 기다립니다. (Bug #89582, Bug #27511404)
  • Microsoft Windows: 기존 MySQL 서비스를 제거하지 못한 후 MySQL 설치 프로그램이 실패할 수 있습니다. 이제 설치 작업을 계속할 수 있도록 치명적이지 않은 것으로 처리되지만 서비스 정리를 허용하려면 시스템을 다시 시작해야 할 수 있습니다. (Bug #29016677, Bug #93048)
  • Microsoft Windows: mysqld의 여러 인스턴스가 동일한 호스트에서 동일한 사용자에 대해 --no-monitor 옵션으로 시작된 경우 SHUTDOWN 명령으로 잘못된 서버 프로세스가 종료되었습니다. 이 수정은 프로세스의 프로세스 ID를 추가하여 --no-monitor에 사용할 고유한 종료 이벤트 이름을 생성합니다. (Bug #28723675)
  • X DevAPI: X 프로토콜을 사용할 때 사용자 변수를 ‘OUT’ 매개 변수로 호출한 저장 프로시저는 변수의 값을 설정하지 않았습니다. (Bug #91907, Bug #28458752)
  • JSON: JSON 개체에 대해 반복하면 문자열이 불필요하게 할당되었습니다. (Bug #28975640)
  • JSON: JSON값을 텍스트로 변환하면 대상 문자열이 선형으로 증가하여 불필요하게 많은 재할당 횟수가 발생합니다. 이제 이 프로세스에서는 기하급수적인 증가를 사용하여 필요한 할당 수를 줄입니다.(Bug #28949700)참조 : 참고 사항 : Bug #103790, Bug #32919524.
  • JSON: YEAR 값은 JSON에서 불투명 데이터로 저장되었습니다. YEAR 값을 포함하는 JSON 문서를 텍스트로 변환하면 YEAR 값이 base64로 인코딩된 문자열로 표시됩니다. 이 문제를 해결하기 위해 YEAR 값은 이제 부호 없는 정수로 저장되며 텍스트로 변환할 때 숫자로 표시됩니다. 이 수정의 또 다른 이점은 이제 JSON 문서 내의 YEAR 값에 필요한 저장 공간이 줄어들었다는 것입니다. (Bug #28947107)
  • JSON: ARCHIVE 열이 포함된 JSON 테이블에서 UPDATE 또는 DELETE를 실행하려고 할 때 인수를 누르십시오. (Bug #28923281)
  • JSON: FEDERATED 테이블의 JSON 열에서 선택하려고 할 때 서버가 ER_INVALID_JSON_PATH_CHARSET를 반환했습니다. 문자 집합 ‘binary’가 있는 문자열에서 JSON 값을 만들 수 없습니다.또한 DELETEUPDATE 모두 JSON 열이 포함된 FEDERED 테이블에 아무런 영향을 미치지 않았습니다. (Bug #28877215)
  • JSON: 쿼리를 실행하는 사용자에게 ‘c’ 열에 대한 SELECT 권한이 있음에도 SELECT ‘jt.* FROM t1,” JSON_TABLE(t1.c, '$[*\]' COLUMNS (num INT PATH '$[0]')) AS jt 형식의 쿼리가 권한 오류로 인해 실패했습니다. (Bug #23254268)
  • Bug#278555592가 구현한 기능에 대해 Facebook에서 제공한 코드가 업데이트되었습니다. (Bug #28950397)참조 : 참고 사항 : Bug #27855592.
  • SuSE Linux에서 pthread_mutex_destroy()의 가짜 EBUSY 반환 값이 처리되지 않았습니다.(Bug #28948462)
  • mysqld_safemysqld_multi*가 클라이언트 전용 패키지에 잘못 포함되었습니다. (Bug #28942508)
  • 호스트 캐시 잠금을 잘못 처리하면 서버가 종료될 수 있습니다. (Bug #28936159)
  • audit_log 플러그인이 설치된 경우 MySQL Enterprise Firewall이 제대로 작동하지 않았습니다. (Bug #28930885, Bug #93184)
  • Windows의 Visual Studio에서 성공적인 빌드를 사용하도록 수정했습니다. (Bug #28892711, Bug #93077)
  • 서버가 redo 로그 파일과 동일한 이름으로 데이터베이스 작성을 허용했습니다. 이로 인해 예기치 않은 서버 동작이 발생할 수 있습니다. 이러한 이름은 더 이상 데이터베이스 이름으로 허용되지 않습니다. (Bug #28867993)
  • mysqld_multi*가 올바른 datadir 값을 mysqld에 전달하지 못할 수 있습니다. (Bug #28866662, Bug #90801)
  • MDL 키를 생성하는 동안 매개 변수 스키마 이름을 검사하여 이름이 소문자인지 확인하는 디버그 어설션에서 다중 바이트 문자가 포함된 스키마 이름이 발견될 때 실패했습니다.(Bug #28864244)
  • 잘못된 숫자 값이 표시되지 않도록 일부 오류 메시지의 형식 지정자가 개선되었습니다.(Bug #28860795)
  • Windows 기반 디버그 빌드의 경우 사용되지 않은 메모리 누수 검사가 사용되었으며 종료 프로세스가 느려질 수 있습니다. 이제 이러한 검사는 특수 빌드에 대해서만 사용할 수 있습니다. (Bug #28857626)
  • mysql_upgradesql_require_primary_key 시스템 변수를 사용하도록 설정한 경우 특정 시스템 테이블을 업그레이드하지 못할 수 있습니다. (Bug #28855207, Bug #92988)
  • -DWITH_LIBWRAP=ON로 구성된 빌드가 컴파일되지 않았습니다. (Bug #28853650, Bug #92983)
  • ‘InnoDB’ 테이블의 경우 DEFAULT() 함수에 의존하는 저장되거나 인덱싱된 가상 생성 열의 값이 ALTER TABLE에 의해 올바르게 업데이트되지 않았습니다. 이 함수에서 참조되는 열의 기본값을 null로 설정하여 변경할 경우입니다. (Bug #28848265)
  • /permissive 플래그가 켜진 상태에서 Windows의 Visual Studio에서 빌드를 성공적으로 수행할 수 있도록 수정했습니다. (Bug #28842878, Bug #92943)
  • -DCMAKE_BUILD_TYPE=Release 로 구성된 빌드가 컴파일되지 않았습니다. (Bug #28841366, Bug #92945)
  • 이제 ALTER TABLE 는 다음과 같은 조건이 적용될 때 ‘INPLACE’ 알고리즘을 사용할 수 있습니다.
    • InnoDB 테이블의 경우 생성된 저장 열을 수정하지만 유형, 식 또는 null은 변경하지 않는 문입니다.
    • 비’InnoDB’ 테이블의 경우 생성된 저장 열 또는 가상 열을 수정하지만 유형, 식 또는 null은 변경하지 않는 문입니다.
    이러한 변화의 예로는 열 주석의 변경이 있습니다. (Bug #28836543)
  • 유지되었던 플러그인 시스템 변수가 플러그인을 다시 설치할 때 적용되지 않았습니다. (Bug #28823972)
  • EXPLAIN ... FOR CONNECTION 은(는) 다른 연결의 SQL 모드를 수정할 수 있습니다. (Bug #28786981)
  • Sun RPC 및 XDR을 glibc에서 별도의 libtirpc 라이브러리로 제거하면서 일부 플랫폼에서 libasan에 문제가 발생했습니다. (Bug #28785835, Bug #92762, Bug #28897799, Bug #93116)
  • SELECT a FROM *table* WHERE b = *value* 형식의 쿼리를 처리하는 동안 두 ENUM 값을 비교할 때 어설션(주장)을 칠 수 있었고 열 “b”에 인덱스가 있었습니다. (Bug #28769996)
  • offline_mode 시스템 변수에 대한 동시 읽기 및 쓰기 액세스로 인해 교착 상태가 발생할 수 있습니다. (Bug #28761869)
  • MySQL 5.7에서 MySQL 8.0으로 업그레이드할 때 잘못된 순서로 메모리에 트리거가 로드되어 어설션 오류가 발생했습니다.(Bug #28760011, Bug #92609)
  • 성능 스키마 data_locks 테이블과 관련된 조인은 잘못된 결과를 초래할 수 있습니다. (Bug #28733170)
  • 스칼라 하위 쿼리의 사용과 관련된 일부 다중 중첩 하위 쿼리는 올바르게 처리되지 않았습니다. (Bug #28723670)
  • 우분투에서 설치된 /etc/mysql/mysql.conf.d/default-auth-override.cnf 파일이 실행 모드로 잘못 생성되었습니다. Evgeniy Patlan에게 교정기여를 해주셔서 감사합니다. (Bug #28714840, Bug #92587)
  • 메모리 누수는 동일한 사용자 수준 잠금을 유지하는 동시 연결로 인해 실패한 시간 초과가 0인 GET_LOCK() 호출로 인해 발생했습니다. (Bug #28714367)
  • 많은 수의 테이블을 호스팅하는 서버를 반복적으로 시작하고 중지할 때 힙 손상 및 서버 종료가 발생할 수 있습니다. (Bug #28705511, Bug #92572)
  • MySQL Server MSI 패키지에 MySQL Router가 없습니다. (Bug #28685556)
  • 예제 저장 함수 GTID_SUBTRACT_UUID는 문서화된 버전과 일치하도록 코드에서 수정되었습니다. (Bug #28670170)
  • Linux용 MySQL 패키지 설치 관리자에서 mysqld에 대해 CAP_SYS_NICE 기능을 더 이상 사용할 수 없습니다. 리소스 그룹 스레드 우선 순위를 쉽게 사용할 수 있도록 하기 위해서입니다. 스레드 우선 순위에 액세스해야 하는 Linux 배포의 경우 MySQL Reference Manual에서 Resource Group Restrictions에서 CAP_SYS_NICE 기능을 활성화하기 위한 지침을 참조하십시오. (Bug #28670160)
  • <=> 연산자의 내부 구현은 단순화되었습니다.(Bug #28660232)
  • 그룹에서 서버 인스턴스를 제거하기 위해 STOP GROUP_REPLICATION 문을 실행한 후, [GCS] 오류 메시지의 여러 인스턴스가 서버 인스턴스에 기록되었습니다. 서버가 그룹을 떠나는 중이거나 더 이상 그룹의 구성원이 아닐 때 오류가 무시됩니다. (Bug #28658228, Bug #92454)
  • 일부 열의 CHARACTER SET 특성이 JSON_TABLE(... COLUMNS ...)에 내포되어 있는 경우, 결과 열은 전역 character_set_results를 기본 문자 집합으로 사용합니다. 이제 이 열은 세션 character_set_connectioncollation_connection 값을 사용합니다. (Bug #28643862)
  • 행 값을 생성한 식에 함수 인덱스를 추가하면 어설션이 발생하므로 대신 오류가 발생합니다. (Bug #28643252)
  • 디버그 빌드에서 sql-modeTIME_TRUNCATE_FRACTIONAL로 설정한 후 트리거를 생성하면 어설션 오류가 발생했습니다. mysql.triggers 데이터 사전 테이블의 sql_mode 열에 SQL 모드가 없습니다. (Bug #28642918)
  • --log-timestamps=SYSTEM를 사용할 때 로그 메시지의 ISO 8601 타임스탬프는 일광 절약 시간을 고려하지 않았습니다.(Bug #28632725)
  • 오류 ER_IB_MSG_720에 대한 인수가 잘못 계산되었습니다. (Bug #28629175)
  • 소켓 파일 지정 옵션이 올바르게 지정되지 않은 경우 시작 시 서버가 종료될 수 있습니다. (Bug #28609181)
  • 하위 테이블과 다른 저장 엔진을 가진 상위 테이블을 추가한 다음 상위 테이블을 하위 테이블과 동일한 저장 엔진으로 변경하여 일치하지 않는 외래 키를 만들 수 있습니다. (Bug #28608460, Bug #92317)
  • 서버가 복제 그룹에 가입할 때 group_replication_group_seeds 시스템 변수에 나열된 첫번째 시드 구성원에 연결을 시도합니다. 연결이 거부되면 가입 구성원은 목록의 다른 시드 구성원 각각에 순서대로 연결을 시도합니다. 이전에 가입 구성원이 시드 구성원에 연결되었지만 결과적으로 복제 그룹에 추가되지 않은 경우 가입 구성원은 더 이상 연결을 시도하지 않았습니다. 이 상황은 연결 후 시드 구성원이 실패했거나 시드 구성원이 화이트리스트에 가입 구성원의 주소가 없어서 연결을 닫은 경우 또는 시드 구성원이 가입 구성원의 그룹 가입 요청을 거부한 경우에 발생할 수 있습니다. 이제 가입 멤버가 시드 멤버에 연결되었지만 그룹에 가입할 수 없는 경우 가입 구성원은 목록에 있는 나머지 시드 멤버를 순서대로 계속 시도합니다.(Bug #28602835)
  • 할당의 특정 패턴, 할당자의 재바인드를 사용한 복사본 및 할당 취소가 주어지면 temptable::Allocator가 해제된 메모리 블록을 재사용할 수 있습니다. 이로 인해 Windows 플랫폼에서 테스트 제품군에 오류가 발생했습니다. (Bug #28595557)
  • 루틴과 보기를 변경할 때 time_zone를 음의 오프셋으로 설정하고 timestamp 를 낮은 값으로 설정하면 어설션이 트리거됩니다. (Bug #28590623, Bug #92273)
  • pid_file A 시스템 변수를 DEFAULT로 유지하면 이후 서버 시작 시 NULL 값이 될 수 있습니다. (Bug #28589736)
  • 권한 검사가 잘못되면 MySQL 5.7에서 성공적으로 실행된 SELECT ... FOR UPDATE 문에 대한 오류가 발생할 수 있습니다. (Bug #28581664, Bug #92254)
  • 외부 키의 부모 열 이름을 ALTER TABLE로 바꾸려고 하면 실패할 수 있습니다. (Bug #28581468)
  • RESET PERSIST 에 대한 권한이 올바르게 확인되지 않았습니다.(Bug #28564239)
  • AVG(YEAR(*datetime_column*))를 계산할 때 오버플로가 발생했습니다. (Bug #28562930)
  • 서버를 다시 시작한 후 성능 스키마 variables_info 테이블에 있는 지속 시스템 변수의 경로 이름이 잘못 계산될 수 있습니다.(Bug #28561584)
  • 파티션된 테이블 이름 검사에서 잘못된 어설션이 발생했습니다. (Bug #28556942)
  • handler::create() 함수는 조건 목록의 오류와 함께 호출될 수 있으며, 이로 인해 handler::create() 함수의 오류가 제대로 보고되지 않을 수 있습니다. (Bug #28556264)
  • ALTER TABLE의 경우 ALGORITHM=INSTANT가 8.0.12 이전 버전의 MySQL에서 잘못 거부되었습니다.(Bug #28554157, Bug #92194)
  • mysqlpump에서 오류가 발생할 때 할당된 모든 리소스를 해제하지 않아 메모리 누수가 발생했습니다. (Bug #28538971, Bug #92131)
  • COLATE 특성이 JSON_TABLE() 함수의 COLUMS 절에 있는 데이터 형식에 대해 거부되었습니다. (Bug #28538315)
  • 디버그 빌드의 경우 CREATE USER 문을 롤백할 때 서버가 종료될 수 있습니다. (Bug #28536312)
  • 부호 있는 값이 있는 플러그인 변수가 잘못 표시되었습니다.(Bug #28534414, Bug #92107)
  • 사용되지 않는 시스템 변수를 잘못 처리하면 성능 스키마 variables_by_thread 테이블의 쿼리에서 출력이 잘못될 수 있습니다. (Bug #28515475, Bug #92049)
  • Event_queue::lock_dataSAFE_MUTEX 구현에서 Thread Senifizer에 의해 발견된 데이터 레이스는 수정되었습니다. (Bug #28510721, Bug #92041, Bug #28510691, Bug #92040)
  • 준비된 진술에 대한 재준비 실패 시 진단 영역으로 ER_NEED_REPREPARE 진단이 푸시되지 않았습니다. (Bug #28509306, Bug #92029)
  • 하위 쿼리에 UNION이 포함된 경우 하위 쿼리 열 수가 잘못 계산되었습니다.(Bug #28499924)
  • WITH ROLLUP을 사용하여 표현식을 평가할 때 임시 테이블 열이 있을 때만 표현식의 결과를 임시 테이블로 작성합니다. (Bug #28493849, Bug #28523014)
  • 디버그 빌드의 경우 TEMPORARY 테이블에서 ALTER TABLE에 대한 외래 키 검사 오류가 잘못되면 서버가 종료될 수 있습니다.(Bug #28493257, Bug #91990)
  • 일부 시스템 변수의 경우 SET PERSIST가 지정된 값이 아닌 기본값을 유지했습니다. (Bug #28466045)
  • 준비된 문장으로 SET RESOURCE GROUP를 실행할 수 없습니다. (Bug #28448258, Bug #91876)
  • 창 함수를 구현하기 위해 수행한 작업 중에 실수로 제거된 Item_field::fix_fields() 호출을 복원했습니다. (Bug #28431783)
  • X Plugin을 시작하고 종료하는 동안 Thread Sanitizer에서 보고한 데이터 경주가 수정되었습니다. (Bug #28407294)
  • 잘못된 utf8 문자가 포함된 파티션 설명으로 테이블을 만들면 어설션이 발생했습니다. (Bug #28387488, Bug #91763)
  • *mysqldump 출력에 제거된 SQL 모드 값이 포함될 수 있습니다. (Bug #28373001, Bug #91714)
  • 잠재적 잠금 순서 주기가 수정되었습니다. (Bug #28366531)
  • GTID 사용 서버에서 INFORMATION_SCHEMA.COLUMNS 테이블의 동시 문이 교착 상태가 될 수 있습니다. (Bug #28293047, Bug #91548)
  • 테이블 정의에 ‘utf32’ 테이블 문자 집합과 리터럴 문자열이 있는 테이블의 CREATE TABLE 문에는 어설션이 있습니다. (Bug #28275881)
  • 서버 업그레이드가 성공적으로 완료되면 서버 버전 번호 업데이트를 지원하는 내부 기능이 추가되었습니다. (Bug #28211486, Bug #91323)
  • memcmp() 함수를 사용하여 로그 파일 이름을 문자열로 비교하면 초기화되지 않은 메모리 읽기 오류가 발생했습니다. 이제 비교에서는 strncmp() 함수를 사용합니다. Zsolt Parragi와 Laurynas Biveinis에게 그들의 공헌에 감사드립니다. (Bug #28178776, Bug #90238)
  • 서버가 액센트만 다른 저장된 프로그램 및 리소스 그룹 이름을 잘못 처리했습니다. (Bug #28122841)
  • Optimizer가 두 번째 열에 대해 LIKE 있는 내부 조인을 실행할 때 복합 인덱스의 두 번째 열을 건너뛰었습니다. (Bug #28086754)
  • CREATE TABLE ... SELECT은(는) 기본값 없이 생성했어야 하는 날짜 열을 “zero” 날짜 기본값으로 생성할 수 있습니다. (Bug #28022129)
  • 매우 많은 수의 테이블에 대해 IN 하위 쿼리 술어를 세미조인으로 변환하는 작업이 올바르게 처리되지 않았습니다. (Bug #28004674)
  • 창 기능을 위해 만들어진 임시 테이블 중 맨 뒤에 추가되는 filesort를 수행할 때 저장소 엔진에서 필드를 읽는 데 사용되는 비트맵이 올바르게 활성화되지 않았습니다. 임시 테이블이 필요하지 않은 경우, 서버는 선택한 테이블의 출력에 filesort를 추가했지만 제거된 참조(‘WHERE’ 조건)는 추가되지 않았습니다. 이 경우 첫 번째 창 함수를 정렬해야 할 때 참조가 선택 테이블에 추가되고 이 창 함수를 처리하기 전에 임시 테이블이 생성되지 않습니다. (Bug #27975193)
  • 범위 프레임에 행이 표시된 후, 나중에 다른 행이 이 범위 프레임 앞에 나타나는 것으로 확인되면, 서버는 새 행을 계속 확인합니다. 이로 인해 다음 프레임 계산이 잘못 수행되었습니다. (Bug #27973860)
  • 서버가 SIGHUP 신호를 잘못 처리하면 서버가 종료될 수 있습니다. (Bug #27966483, Bug #90742)
  • 생성된 열 ‘b’ 값으로 분할되고 ‘a’가 있는 테이블에서 DELETE WHERE a=*constant* 가 디버그 빌드에서 어설션으로 이어졌습니다. (Bug #27954073)
  • 동적 테이블 통계를 업데이트할 때 INFORMATION_SCHEMA 쿼리로 인해 서버가 종료될 수 있습니다. (Bug #27898108)
  • 외부 키 상위 테이블을 열 때 메타데이터 잠금 교착 상태가 발생할 수 있습니다. (Bug #27859086)
  • 계정 관리 문에 의해 메모리를 잘못 처리하면 서버가 잘못 작동할 수 있습니다. (Bug #27820277)
  • 창 기능이 ORDER BYPARTITION BY를 올바르게 처리하지 못한 경우도 있습니다. (Bug #27816506)
  • MySQL 쿼리 옵티마이저는 테이블로 푸시 다운될 각 술어를 테이블 조건으로 식별합니다. 이 프로세스의 일부로 테이블 조건 중 지정된 술어가 테이블의 선택된 액세스 경로로 인해 이미 참인지 여부를 확인합니다.예를 들어 SELECT * FROM t1 WHERE pk=1를 실행할 때 pk가 테이블 t1의 기본 키인 경우 ref 액세스 방법이 선택됩니다. 이것은 이미 filter=1인 행만 반환하기 때문에 필터로서 이 조건의 추가 평가(where 사용)를 제거해야 합니다. GROUP BY 또는 ORDER BY가 포함된 쿼리를 최적화할 때, 정렬된 인덱스를 대신 사용하여 정렬을 건너뛸 수 있는지 여부를 확인하기 위한 늦은 최적화 도구 검사가 수행됩니다. 이 작업은 정렬할 테이블에 액세스하기 위해 다른 인덱스를 선택한 후에 수행되므로, (선택된 이전 액세스 경로로 인해) 중복된 것으로 생각되는 일부 술어는 조기에 제거될 수 있습니다. 이를 보완하기 위해 다음 작업을 수행했습니다.
    • 액세스 방법이 이미 선택되었기 때문에 이전에 제거된 술어가 포함된 테이블 조건을 재구성합니다.
    • 정렬된 인덱스가 있는지 확인하여 정렬을 방지할 수 있으며 액세스 계획을 수정할 수 있습니다.
    술어 조기 제거를 해결하기 위한 다음 작업이 올바르게 수행되지 않았기 때문에 문제가 발생했습니다.
    • 액세스 계획이 수정되었는지 여부에 관계없이 이전에 언급한 재구성된 테이블 조건에 다시 추가된 추가 술어는 테이블 조건의 영구적인 일부가 되었습니다.
    • 정렬된 다른 인덱스를 사용하도록 액세스 계획이 변경되었을 때 새 인덱스에서 더 이상 사용되지 않는 술어를 제거하기 위해 새 인덱스에 대한 분석이 수행되지 않았습니다.
    조건 푸시다운을 구현하는 스토리지 엔진의 또 다른 문제(예: NDBCLUSTER): 푸시다운된 조건은 분석 전 테이블 조건에서 생성되었습니다. 즉, 나중에 액세스 경로가 변경된 경우 푸시된 조건이 이미 제거된 술어를 포함하지 않으므로 조건 푸시다운의 효율성이 떨어집니다. 이 문제의 근본 원인은 테이블의 액세스 방법이 완전히 결정되기 전에 테이블 술어에 대해 part_of_refkey() 분석을 수행한 것입니다. 이러한 초기 분석을 제거하면 이 문제가 해결됩니다. (Bug #27808758, Bug #27814026)
  • ORDER BY *column * 절이 포함된 창 함수는 쿼리 중인 테이블에서 열이 발견되었을 때에도 창 순서로 알 수 없음 필드를 사용하여 실패했습니다. (Bug #27808099)
  • 자리 표시자 수가 많은 다중 행 삽입을 수행하기 위해 준비된 문을 실행하면 메모리가 너무 많이 소모되어 느리게 실행될 수 있습니다. (Bug #27703912)
  • Windows에서 Visual C++ Visual Studio용 재배포 가능이 제거된 경우 MSI 설치 관리자를 사용하여 MySQL을 제거하지 못했습니다. (Bug #27621546)
  • 구문 분석기가 트리거 정의에 잘못된 SET 문 구문을 수락하여 서버가 종료될 수 있습니다. (Bug #27595603)
  • keyring_encrypted_file 플러그인 키링 파일이 올바르지 않으면 서버를 시작하지 못했습니다. (Bug #27588064)
  • 각각 keyring_okvkeyring_encrypted_file의 소스 및 대상 키 링 플러그인으로 키 링 마이그레이션이 실패했습니다. (Bug #27493970)
  • 디버그 빌드에서 부호 있는 정수를 사용하여 ‘FOLLOWING’이 포함된 프레임을 잘못 처리하는 것이 가능했습니다. (Bug #27452365)
  • 프로시저 호출과 함께 준비된 문을 실행할 때 CURSOR_TYPE_READ_ONLY를 사용합니다.프로시저가 SELECT를 수행하여 빈 결과 집합을 반환하면 클라이언트 라이브러리가 중지됩니다. (Bug #27443252, Bug #89214)
  • 외래 키의 참조된 열 이름은 SHOW CREATE TABLE 출력과 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 테이블에서 항상 소문자로 표시됩니다. (Bug #27353767, Bug #88718)
  • 다른 동시 작업을 수행하는 동안 audit_log 플러그인을 로드 및 언로드하면 서버가 응답하지 않을 수 있습니다. (Bug #27325622)
  • 데이터 사전 속성 인터페이스(dd::Properties) 및 구현이 수정되어 속성 객체에 유효한 키를 정의하는 새로운 방법을 제공했습니다.(Bug #27309072, Bug #89031, Bug #27309082, Bug #89032)
  • ‘validate_password’ 구성 요소를 SET PASSWORD와 동시에 설치 및 제거하면 구성 요소가 실패할 수 있습니다. (Bug #27020979)
  • 서버 소스 코드의 일부 오타가 수정되었습니다. Hyunwoo Park 에게 많은 공헌을 해주셔서 감사합니다. (Bug #26189673, Bug #86565)
  • 테이블에 열 권한을 부여한 후 권한 확인 중에 HANDLER READ 호출이 발생했습니다. (Bug #25987758)
  • 외부 키 정의에서 참조 및 참조된 열 유형의 호환성을 확인하는 검사가 저장소 엔진 계층에서 SQL 계층으로 이동되었습니다. 또한 열이 호환되지 않거나 외부 키 제약 조건이 존재하지 않는 테이블을 참조할 때 더 나은 오류 메시지가 생성됩니다. (Bug #25722927, Bug #28371394, Bug #91712, Bug #21308781, Bug #77467, Bug #11746132, Bug #23693)
  • 파서가 메모리 부족 검사를 잘못 수행했습니다. (Bug #25633994)
  • 사용자 관리 문과 권한 부여 테이블에 직접 액세스하려고 시도한 다른 문 사이의 경합 조건으로 인해 교착 상태 및 트랜잭션 롤백이 발생할 수 있습니다. (Bug #24481240)
  • 서버가 skip_name_resolve 시스템 변수를 사용하도록 설정한 상태에서 시작되면 호스트 이름 부분이 ‘localhost’인 계정을 무시하는 것에 대한 잘못된 경고가 오류 로그에 기록될 수 있습니다. (사실 계정이 사용되었으며 무시된 것은 아닙니다.) (Bug #23329861, Bug #81441)
  • 생성된 열이 있는 테이블에서 IGNORE를 사용하는 DML 문이 항상 올바르게 처리되는 것은 아닙니다. (Bug #22990029)
  • MySQL은 이제 최적화의 후반 단계가 아니라 준비 중에 일정한 리터럴 표현에서 발생하는 사소한 WHERE 조건을 제거합니다. 이렇게 하면 다음과 같은 사소한 조건을 포함하는 외부 조인을 사용하는 쿼리 계획이 개선됩니다.SELECT * FROM t1 LEFT JOIN t2 ON condition_1 WHERE condition_2 OR 0 = 1중복된 OR 0 = 1 조건을 제거한 후 최적화 프로그램은 다음과 같이 쿼리를 내부 조인으로 다시 작성할 수 있습니다.SELECT * FROM t1 LEFT JOIN t2 WHERE condition_1 AND condition_2자세한 내용은 What Is New in MySQL 8.0Outer Join Optimization를 참조하십시오. (Bug #16893426, Bug #28237111, Bug #28239008, Bug #28341790)참조: 참고 사항: Bug #28197977, Bug #28240054.
  • FEDERATED 테이블의 BLOB 열에 대한 업데이트가 작동하지 않았습니다. (Bug #11748067, Bug #34997)
  • 각 함수 REGEXP_RECHE(), REGEXP_SUBSTR(), REGEXP_LIKE() 및 REGEXP_INSTR()은 함수의 지정된 반환 유형 값 대신 DOUBLE을 반환했습니다. (Bug #90039, Bug #27682225)
  • 동적 범위 및 인덱스 병합을 사용하는 쿼리에 예상보다 많은 메모리가 사용될 수 있습니다. (Bug #89953, Bug #27659490)
  • NO_PAD 데이터 정렬이 있는 CHAR 열이 있는 테이블에서 선택하면 일치하지 않는 결과가 발생했습니다. (Bug #89753, Bug #27578340)

[이전글] MySQL 8.0.14 릴리즈 노트 #1
[이전글] MySQL 8.0.14 릴리즈 노트 #2