계정 관리 관련 사항
-
호환되지 않는 변경: 컴포넌트와 플러그인은 이제 권한을 동적으로(런타임에) 정의할 수 있으며, 이를 통해 자신이 구현하는 기능과 구체적으로 연결된 권한을 생성할 수 있습니다.
동적 권한 구현을 통해 DBA는
SUPER권한에서 벗어나는 마이그레이션을 시작할 수 있습니다. 과거에는SUPER가 서로 모두 관련되지는 않은, 광범위하고 계속 증가하는 다양한 작업과 연결되어 있었습니다.SUPER가 담당하던 많은 작업은 이제 더 제한된 범위의 동적 권한과도 연결되며, 해당 권한은 그 작업을 구현하는 컴포넌트 또는 플러그인이 등록합니다. 이전에SUPER권한이 필요했던 이러한 각 작업은SUPER대신 연결된 동적 권한을 부여하여 계정에 허용할 수 있습니다. 예를 들어 글로벌 시스템 변수를 수정할 수 있어야 하는 사용자에게는SUPER대신SYSTEM_VARIABLES_ADMIN을 부여할 수 있습니다.이 변경은 DBA가
SUPER부여를 피하고 사용자 권한을 허용된 작업에 더 가깝게 맞출 수 있도록 하여 보안을 개선합니다.SUPER는 이제 사용 중단되었으며 향후 MySQL 버전에서 제거될 예정입니다.동적 권한은 글로벌 수준에서만 적용됩니다. 서버는 사용자 계정에 대한 동적 권한의 현재 할당 정보를
mysql시스템 데이터베이스의 새 테이블인mysql.global_grants에 저장합니다.자세한 내용은 Static Versus Dynamic Privileges를 참조하십시오. 해당 논의에는
SUPER에서 동적 권한으로 계정을 마이그레이션하는 지침이 포함되어 있습니다.비호환성: 전역 수준에서
ALL PRIVILEGES의 의미는 어떤 동적 권한이 정의되어 있는지에 따라 달라지므로,SHOW GRANTS는 더 이상 전역 권한 출력에ALL PRIVILEGES를 표시하지 않습니다. 대신SHOW GRANTS는 부여된 각 전역 권한을 명시적으로 나열합니다. 자세한 내용은 SHOW GRANTS Statement를 참조하십시오.SHOW GRANTS출력을 처리하는 애플리케이션은 그에 맞게 조정해야 합니다.이전 버전에서 이 MySQL 릴리스로 업그레이드하는 경우, 이러한 변경 사항을
mysql시스템 데이터베이스에 반영하려면 mysql_upgrade를 실행하고 서버를 재시작해야 합니다. (WL #8131)
C API 관련 사항
libmysqlclient가 구현하는 C API에는 이제 MySQL 서버 바이너리 로그에서 복제 이벤트 스트림을 읽기 위한 클라이언트 인터페이스가 포함됩니다. 자세한 내용은 C API Binary Log Interface를 참조하십시오(WL #7672).
캐릭터셋 지원
-
중요한 변경: 기본 캐릭터셋이
latin1에서utf8mb4로 변경되었습니다. 다음 시스템 변수가 영향을 받습니다:character_set_server및character_set_database시스템 변수의 기본값이latin1에서utf8mb4로 변경되었습니다.collation_server및collation_database시스템 변수의 기본값이latin1_swedish_ci에서utf8mb4_0900_ai_ci로 변경되었습니다.
그 결과, 명시적인 캐릭터셋과 콜레이션을 지정하지 않는 한 새 객체의 기본 캐릭터셋과 콜레이션은 이전과 다릅니다. 여기에는 데이터베이스와 그 안의 객체(예: 테이블, 뷰, 저장 프로그램)가 포함됩니다. 이전 기본값을 유지하는 한 가지 방법은
my.cnf파일에 다음 줄을 사용하여 서버를 시작하는 것입니다:[mysqld] character_set_server=latin1 collation_server=latin1_swedish_ci(WL #7554)
-
UCA 9.0.0 기반 콜레이션(예:
utf8mb4_0900_ai_ci)의 성능이 개선되었습니다. 이제 이러한 콜레이션은 다른 어떤 UCA 콜레이션보다 빠릅니다.또한
max_length_for_sort_data시스템 변수 기본값이 1024에서 4096으로 증가했습니다. (Bug #24823885, Bug #83319) -
utf8mb4캐릭터셋의 기본 콜레이션이utf8mb4_general_ci에서utf8mb4_0900_ai_ci로 변경되었습니다.utf8mb4_general_ci는 Basic Multilingual Plane (BMP) 밖의 문자를 올바르게 처리하지 않습니다. (Bug #24742157) -
유니코드 9.0.0 콜레이션의 패드 속성이
PAD SPACE에서NO PAD로 변경되었습니다. 따라서 이러한 콜레이션은 이제 다른 문자와 마찬가지로 문자열 끝의 공백을 의미 있는 것으로 처리합니다. 영향을 받는 콜레이션의 이름에는_0900_문자열이 포함됩니다.9.0.0(
NO PAD) 콜레이션을 사용하는 비바이너리 문자열(CHAR,VARCHAR, 및TEXT문자열)의 비교는 후행 공백과 관련하여PAD SPACE콜레이션과 다릅니다. 예를 들어,'a'와'a '는 같은 문자열이 아니라 서로 다른 문자열로 비교됩니다. 예:mysql> SET NAMES 'latin1' COLLATE 'latin1_swedish_ci'; mysql> SELECT 'a' = 'a '; +------------+ | 'a' = 'a ' | +------------+ | 1 | +------------+ mysql> SET NAMES 'utf8mb4' COLLATE 'utf8mb4_0900_ai_ci'; mysql> SELECT 'a' = 'a '; +------------+ | 'a' = 'a ' | +------------+ | 0 | +------------+Trailing Space Handling in Comparisons도 참조하십시오.
INFORMATION_SCHEMACOLLATIONS테이블에는 이제 각 콜레이션의 패드 속성을 나타내는PAD_ATTRIBUTE컬럼이 있습니다.조기 가중치 문자열 잘림과 관련된
latin1_de콜레이션 문제가 수정되었습니다. 영향을 받을 가능성이 있는 유일한 결과는WEIGHT_STRING()함수 결과입니다. (WL #10354) -
MySQL 8.0.0에서
utf8mb4유니코드 캐릭터셋에 case-insensitive 및 accent-insensitive 콜레이션을 추가한 이전 작업을 보완하여, 새로운 case-sensitive 및 accent-sensitive 콜레이션이 추가되었습니다. 일반 콜레이션의 이름은utf8mb4_0900_as_cs이며, 적용 가능한 경우 언어별 규칙이 우선한다는 점을 제외하면utf8mb4_0900_as_cs와 유사한 특성을 가진 언어별 콜레이션이 있습니다. 언어별 콜레이션은 다음 표에 표시된 것처럼 콜레이션 이름의 ISO 639-1 언어 코드로 표시됩니다. 두 경우에는 언어 코드에 변형을 나타내는 추가 항목이 있습니다(독일어 전화번호부 순서, 전통 스페인어).utf8mb4_ja_0900_as_cs는 MySQL에서 유니코드에 사용할 수 있는 첫 번째 일본어 언어별 콜레이션입니다.표 2 utf8mb4 UCA 9.0.0 언어별 콜레이션
언어 콜레이션 크로아티아어 utf8mb4_hr_0900_as_cs체코어 utf8mb4_cs_0900_as_cs덴마크어 utf8mb4_da_0900_as_cs에스페란토 utf8mb4_eo_0900_as_cs에스토니아어 utf8mb4_et_0900_as_cs독일어 전화번호부 순서 utf8mb4_de_pb_0900_as_cs헝가리어 utf8mb4_hu_0900_as_cs아이슬란드어 utf8mb4_is_0900_as_cs일본어 utf8mb4_ja_0900_as_cs라트비아어 utf8mb4_lv_0900_as_cs리투아니아어 utf8mb4_lt_0900_as_cs폴란드어 utf8mb4_pl_0900_as_cs고전 라틴어 utf8mb4_la_0900_as_cs루마니아어 utf8mb4_ro_0900_as_cs슬로바키아어 utf8mb4_sk_0900_as_cs슬로베니아어 utf8mb4_sl_0900_as_cs현대 스페인어 utf8mb4_es_0900_as_cs전통 스페인어 utf8mb4_es_trad_0900_as_cs스웨덴어 utf8mb4_sv_0900_as_cs터키어 utf8mb4_tr_0900_as_cs베트남어 utf8mb4_vi_0900_as_csutf8mb4_0900_as_cs는 다음 표의 언어에 대해서도 accent-sensitive, case-sensitive 콜레이션으로 동작합니다.표 3 utf8mb4_0900_as_cs가 적합한 언어
언어 이름 언어 코드 독일어(사전 순서) de 영어 en 프랑스어(로캘 fr_FR) fr 아일랜드 게일어 ga 인도네시아어 id 이탈리아어 it 룩셈부르크어 lb 말레이어 ms 네덜란드어 nl 포르투갈어 pt 스와힐리어 sw 줄루어 zu utf8mb4_0900_as_cs는 프랑스 프랑스어(로캘fr_FR)에는 적합하지만 캐나다 프랑스어(로캘fr_CA)에는 적합하지 않습니다. 캐나다 프랑스어에는utf8mb4_0900_ai_ci가 적합합니다.ai_ci와as_cs콜레이션 간 차이가 발생하는 이유는 캐나다 프랑스어가 프랑스 프랑스어와 악센트 문자의 순서가 다르기 때문입니다.utf8mb4_da_0900_as_cs는 다음 테이블의 언어에 대해 accent-sensitive, case-sensitive 콜레이션으로도 동작합니다.Table 4 utf8mb4_da_0900_as_cs가 적합한 언어
언어 이름 언어 코드 노르웨이어 no 노르웨이어 보크몰 nb 노르웨이어 뉘노르스크 nn 언어별이 아닌
utf8mb4_0900_as_cs및 언어별utf8mb4_LANG_0900_as_cs유니코드 콜레이션은 각각 다음 특성을 가집니다:-
이 콜레이션은 Unicode Collation Algorithm (UCA) 9.0.0 및 Common Locale Data Repository (CLDR) v30을 기반으로 하며, accent sensitive이고 case sensitive입니다. 이러한 특성은 콜레이션 이름의
_0900,_as,_cs로 표시됩니다. 예외:utf8mb4_la_0900_as_cs는 고전 라틴어가 CLDR에 정의되어 있지 않으므로 CLDR을 기반으로 하지 않습니다. -
이 콜레이션은 [U+0, U+10FFFF] 범위의 모든 문자에 대해 동작합니다.
-
콜레이션이 언어별이 아닌 경우, 보충 문자를 포함한 모든 문자를 기본 순서(아래에 설명됨)로 정렬합니다. 콜레이션이 언어별인 경우, 해당 언어의 문자는 언어별 규칙에 따라 올바르게 정렬하고, 해당 언어에 속하지 않는 문자는 기본 순서로 정렬합니다.
-
기본적으로 이 콜레이션은 DUCET 테이블(Default Unicode Collation Element Table)에 나열된 코드 포인트를 가진 문자를 해당 테이블에 할당된 가중치 값에 따라 정렬합니다. 이 콜레이션은 DUCET 테이블에 나열된 코드 포인트를 가지지 않는 문자를 UCA에 따라 구성된 암시적 가중치 값을 사용하여 정렬합니다.
이 콜레이션은 3차 수준을 포함하여 세 가지 DUCET 가중치 수준 모두에서 정렬합니다. 이는 기본 및 보조 수준에서만 정렬하는 accent-insensitive, case-insensitive 콜레이션과 비교됩니다.
-
언어별이 아닌 콜레이션의 경우, 축약 시퀀스의 문자는 별도 문자로 처리됩니다. 언어별 콜레이션의 경우, 축약이 문자 정렬 순서를 변경할 수 있습니다.
자세한 내용은 유니코드 캐릭터셋을 참조하십시오. (WL #9109, WL #9751)
-
컴파일 관련 사항
-
호환되지 않는 변경:
my_bool타입은 더 이상 MySQL 소스 코드에서 사용되지 않습니다. C 부울 변수를 나타내기 위해 이 타입을 사용한 모든 서드파티 코드는 대신bool또는intC 타입을 사용해야 합니다.my_bool에서bool로 변경됨에 따라 이제mysql.h헤더 파일을 컴파일하려면 C++ 또는 C99 컴파일러가 필요합니다.(Bug #25597667)
-
InnoDB: LOB 페이지 삭제 함수가 LOB 페이지를 삭제하지 못했습니다. (Bug #24480254)
-
이제 Windows 빌드는 기본 런타임 라이브러리를 사용합니다(빌드는
/MD플래그를 사용합니다). (Bug #25611609) -
Developer Studio 12.6으로 컴파일하기 위한
CMake지원이 추가되었습니다. (Bug #25384295) -
MySQL 배포판에 포함된 rapidjson 라이브러리가 버전 1.1.0으로 업그레이드되었습니다. (Bug #24947436, Bug #83515)
-
서버 빌드에 필요한 Boost 라이브러리의 최소 버전은 이제 1.63.0입니다. (Bug #24579061, Bug #82834, Bug #25126144, Bug #83905)
-
4.4보다 높은 GCC 버전의 경우
-fno-expensive-optimizations가-ffp-contract=off로 대체되었으며, 이는 더 많은 최적화를 활성화하는 효과가 있습니다. 패치를 제공해 주신 Alexey Kopytov에게 감사드립니다. (Bug #24571672, Bug #82760) -
MySQL 8.0을 빌드하기 위해 필요한 CMake의 최소 버전은 이제 Windows에서는 3.2.3, Solaris에서는 3.4.0, 그 외의 경우에는 2.8.12입니다. (Bug #24481181, Bug #82628)
참조: 함께 참조하십시오: Bug #24687701.
-
소스 코드 기반을 정리하는 작업이 수행되었으며, 여기에는 다음이 포함됩니다: 불필요한 CMake 검사 제거, 소스 파일에서 사용되지 않는 매크로 제거, 종속성 수를 줄이고 더 모듈화하기 위한 헤더 파일 재구성, 정의가 없는 함수 선언 제거, 로컬에서 작성된 함수를 업계 표준 라이브러리의 동등한 함수로 대체.
설정 관련 사항
-
소스 배포판에서 이전에
extra디렉터리에 있던 여러 유틸리티가 새utilities디렉터리로 이동되었습니다. (Bug #25416084) -
디버깅을 위해 두 개의 새 CMake 옵션을 사용할 수 있습니다.
LINK_RANDOMIZE는 mysqld 바이너리에서 심볼 순서를 무작위화할지 여부를 나타내며(기본값OFF),LINK_RANDOMIZE_SEED는LINK_RANDOMIZE에 대한 시드 값을 지정합니다. (Bug #25336715) -
-DENABLE_DEBUG_SYNC=OFF및-DWITH_DEBUG=ON이 모두 지정된 경우 MySQL 컴파일에 실패했습니다.ENABLE_DEBUG_SYNC옵션이 제거되었으며,WITH_DEBUG를 활성화하면 Debug Sync가 활성화됩니다. (Bug #18374703) -
지속된 시스템 변수와 관련하여 다음 변경 사항이 적용되었습니다:
-
새 구문인
RESET PERSIST는 지속된 글로벌 시스템 변수 설정을 저장하는mysqld-auto.cnf파일에SET PERSIST로 지속된 변수 설정을 제거할 수 있게 합니다. -
이전에는
SET PERSIST(또는@@PERSIST.)를 사용하여 글로벌 변수를DEFAULT또는 해당 변수 리터럴 기본값으로 설정하면, 해당 변수가 없을 경우mysqld-auto.cnf파일에 그 변수에 대한 설정도 추가하거나, 해당 변수가 있을 경우mysqld-auto.cnf에서 제거했습니다. 이제 이 할당은 항상mysqld-auto.cnf파일에 해당 변수에 대한 설정을 추가합니다. 파일에서 설정을 제거하려면RESET PERSIST를 사용하십시오. -
새 Performance Schema 테이블인
persisted_variables는mysqld-auto.cnf파일에 대한 SQL 인터페이스를 제공하여, 런타임에SELECT문을 사용해 파일 내용을 검사할 수 있게 합니다. -
Performance Schema
variables_info테이블에는 각 시스템 변수가 가장 최근에 언제, 어느 사용자에 의해 설정되었는지를 보여 주는 새 컬럼이 추가되었습니다.자세한 내용은 Persisted System Variables 및 RESET PERSIST Statement를 참조하십시오.
이전 버전에서 이 MySQL 릴리스로 업그레이드하는 경우, 이러한 변경 사항을 Performance Schema에 반영하려면 mysql_upgrade를 실행하고 서버를 재시작해야 합니다. (WL #9720, WL #9763)
참조: 함께 참조하십시오: Bug #24522064.
-
-
query_cache_size시스템 변수의 기본값이 1M에서 0으로 줄었습니다. 따라서 기본적으로 쿼리 캐시 버퍼가 할당되지 않습니다. (WL #9817)
연결 관리 관련 사항
- MySQL Server에는 이제 일정 횟수의 연속된 연결 시도 실패 후 클라이언트에 대한 서버 응답에 증가하는 지연을 도입할 수 있도록 관리자가 사용할 수 있는 플러그인 라이브러리가 포함됩니다. 이 기능은 MySQL 사용자 계정에 액세스하려는 무차별 대입 공격을 늦추는 억제 수단을 제공합니다. 자세한 내용은 Connection Control Plugins를 참조하십시오. (WL #8885)
데이터 딕셔너리 관련 사항
-
SQL 계층 코드와 스토리지 엔진 API가 다음에 대한 데이터 딕셔너리 지원을 제공하도록 확장되었습니다:
InnoDB가 테이블에 암시적으로 추가하는 보조 컬럼 및 키, 테이블과 테이블스페이스에 대한 스토리지 엔진 전용 데이터 및 객체 식별자, 그리고InnoDB전체 텍스트 검색 보조 테이블과 그 밖의 유사한 암시적으로 생성된 객체에 관한 정보를 저장합니다.- DDL 작업에 대한 데이터 딕셔너리 업데이트, 스토리지 엔진 변경 사항, 바이너리 로그 쓰기를 원자적 트랜잭션으로 결합합니다.
명명된 테이블 중 하나라도 존재하지 않는 경우
DROP TABLE에 대한 동작 변경이 발생합니다. 이전에는 이 문이 존재하지 않아 드롭할 수 없었던 테이블을 나타내는 오류를 반환했지만, 존재했던 테이블도 드롭했습니다. 이제 이 문은 여전히 존재하지 않았던 테이블을 나타내지만, 오류와 함께 실패하며 변경 사항은 적용되지 않습니다.자세한 내용은 Atomic Data Definition Statement Support 및 WL#7743을 참조하십시오. (WL #7743)
-
다음
INFORMATION_SCHEMA테이블은 데이터 딕셔너리 테이블에 대한 뷰로 다시 구현되었습니다:EVENTS PARAMETERS ROUTINES TRIGGERS이제 해당 테이블에 대한 쿼리는 더 느린 다른 방식이 아니라 데이터 딕셔너리 테이블에서 정보를 얻기 때문에 더 효율적입니다. 예를 들어, 서버는 더 이상
INFORMATION_SCHEMA테이블의 각 쿼리에 대해 임시 테이블을 생성할 필요가 없습니다.해당 테이블에 대한 개선 사항은
INFORMATION_SCHEMA테이블에 해당하는 정보를 표시하는SHOW문에도 적용됩니다. 예를 들어,SHOW TRIGGERS는TRIGGERS테이블과 동일한 정보를 표시합니다.이전 버전에서 이 MySQL 릴리스로 업그레이드하는 경우, 이러한 변경 사항을 반영하려면 mysql_upgrade를 실행하고 서버를 다시 시작해야 합니다. (WL #9494)
사용 중단 및 제거 관련 사항
-
호환되지 않는 변경; InnoDB; 파티셔닝:
ALTER TABLE... UPGRADE PARTITIONING문은 더 이상 지원되지 않습니다. -
사용 중단된
PROCEDURE ANALYSE()문법이 제거되었습니다. (WL #4745) -
사용 중단된
libmysqld내장 서버 라이브러리가 다음과 함께 제거되었습니다:- mysql_config
--libmysqld-libs,--embedded-libs,--embedded옵션 - CMake
WITH_EMBEDDED_SERVER,WITH_EMBEDDED_SHARED_LIBRARY,INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR옵션 - (문서화되지 않은) mysql
--server-arg옵션 - mysqltest
--embedded-server,--server-arg,--server-file옵션 - mysqltest_embedded 및 mysql_client_test_embedded 테스트 프로그램
(WL #9721, WL #9722, WL #9816)
- mysql_config
-
사용 중단된
--temp-pool서버 옵션이 제거되었습니다. (WL #8396) -
사용 중단된 replace 유틸리티가 제거되었습니다. 이 유틸리티를 계속 사용하려는 경우, 현재 버전으로 업그레이드하기 전에 설치된 MySQL 버전에서 사본을 반드시 보관하십시오. (WL #9874)
-
파서는 더 이상 SQL 문에서
\N을NULL의 동의어로 간주하지 않습니다. 대신NULL을 사용하십시오.이 변경은
LOAD DATA또는SELECT... INTO OUTFILE을 사용하여 수행되는 텍스트 파일 가져오기 또는 내보내기 작업에는 영향을 주지 않으며, 이러한 작업에서는NULL이 계속\N으로 표현됩니다. LOAD DATA Statement를 참조하십시오. (WL #7247) -
DTrace에 대한 지원이 제거되었습니다. (WL #9581)
Optimizer 관련 사항
-
InnoDB: MySQL은 이제 내림차순 인덱스를 지원합니다: 인덱스 정의의
DESC는 더 이상 무시되지 않고 키 값을 내림차순으로 저장하게 합니다. 이전에는 인덱스를 역순으로 스캔할 수 있었지만 성능 저하가 있었습니다. 내림차순 인덱스는 정방향으로 스캔할 수 있으며, 이것이 더 효율적입니다. 내림차순 인덱스는 또한 가장 효율적인 스캔 순서가 일부 컬럼에는 오름차순을, 다른 컬럼에는 내림차순을 혼합하는 경우 Optimizer가 다중 컬럼 인덱스를 사용할 수 있게 합니다. 자세한 내용은 Descending Indexes를 참조하십시오.이전에는
GROUP BY가 기본적으로 암시적으로 정렬했습니다(즉,GROUP BY컬럼에ASC또는DESC지정자가 없는 경우). 그러나 암시적GROUP BY정렬에 의존하는 것은 사용 중단되었습니다.GROUP BY는 더 이상 기본적으로 정렬하지 않으므로, 쿼리 결과가 이전 MySQL 버전과 다를 수 있습니다. 지정된 정렬 순서를 생성하려면GROUP BY컬럼에 명시적인ASC또는DESC지정자를 사용하거나ORDER BY절을 제공하십시오.(WL #1074, WL #7737)
-
Optimizer 추적 출력에는 이제 키 및 페이로드 크기, 그리고 addon 필드가 패킹되지 않는 이유와 같은
filesort작업에 대한 더 많은 정보가 포함됩니다. (Bug #25246184, Bug #84180) -
이전에는 보이지 않는 인덱스가
InnoDB스토리지 엔진에 대해서만 지원되었습니다. 보이지 않는 인덱스는 이제 스토리지 엔진 중립적입니다(모든 엔진에 대해 지원됩니다). (Bug #23541244) -
WITH ROLLUP수정자를 포함하는GROUP BY쿼리에서 사용할 수 있도록GROUPING()함수가 도입되었습니다. 이 함수를 사용하면 쿼리 결과에서 super-aggregate 로우의NULL값을 일반 그룹화된 로우의NULL값과 구별할 수 있습니다. 자세한 내용은 Miscellaneous Functions 및 GROUP BY Modifiers를 참조하십시오. 이 기능 구현에 부분적으로 사용된 패치를 제공한 Zhe Dong에게 감사드립니다.GROUPING은 이제 예약어이며 식별자 따옴표 처리 없이는 식별자로 사용할 수 없습니다.(Bug #11754449, Bug #46053, Bug #11745963, Bug #21728, WL #1979)
-
Optimizer는 이제 Index Merge 액세스 메서드 사용에 영향을 주기 위해
INDEX_MERGE및NO_INDEX_MERGE힌트를 지원합니다. 예:SELECT /*+ INDEX_MERGE(t1 f1, f2, f3) */ f2 FROM t1 WHERE f1 = 'o' AND f2 = f3 AND f3 <= 4; SELECT /*+ NO_INDEX_MERGE(t1 f2, f3) */ f1 FROM t1 WHERE (f2 = 5 OR f3 = 'c') AND (f1 = 4 OR f4 = 'f');자세한 내용은 Index Merge Optimization 및 Optimizer Hints를 참조하십시오. (WL #9167)
-
mysql시스템 데이터베이스의server_cost및engine_costOptimizer 비용 모델 테이블에는 이제 각 비용 테이블 추정값의 기본값을 포함하는default_value컬럼이 포함됩니다. 이 컬럼은 연결된 비용 추정값이 변경되더라도 해당 값을 유지하는 읽기 전용 생성 컬럼입니다. 자세한 내용은 The Optimizer Cost Model을 참조하십시오.이전 버전에서 이 MySQL 릴리스로 업그레이드하는 경우 이러한 변경 사항을
mysql시스템 데이터베이스에 반영하려면 mysql_upgrade를 실행하고 서버를 재시작해야 합니다. (WL #10128) -
Optimizer 비용 모델
engine_cost테이블에서 메모리 액세스 비용이 디스크 액세스 비용에 비해 감소되었습니다. 이 변경 사항의 한 가지 영향은 동일한 쿼리를 두 번 실행할 때 실행 계획이 달라질 수 있다는 것입니다. 예를 들어 서버 시작 시 데이터가 버퍼 풀로 읽히기 전에는, 쿼리가 실행되어 데이터가 메모리에 있게 된 이후와 다른 계획을 얻을 수 있습니다. (WL #8737) -
MySQL은 이제 비재귀 및 재귀 common table expression을 모두 지원합니다. Common table expression은
SELECT문 및 특정 다른 문 앞에WITH절을 허용하도록 구현되어, 이름이 지정된 임시 결과 집합을 사용할 수 있게 합니다. 자세한 내용은 WITH (Common Table Expressions)를 참조하십시오.RECURSIVE는 이제 예약어이며, 식별자 따옴표 처리 없이는 식별자로 사용할 수 없습니다.(WL #883, WL #3634)
-
Optimizer는 이제 테이블을 조인할 순서를 지정할 수 있게 하는 힌트를 지원합니다. 자세한 내용은 Optimizer Hints를 참조하십시오. (WL #9158)
패키징 관련 사항
- Microsoft Windows: 알림: MySQL 8.0은 Windows 플랫폼에서 실행하려면 Microsoft Visual C++ 2015 Redistributable Package가 필요합니다. 사용자는 서버를 시작하기 전에 해당 패키지가 시스템에 설치되어 있는지 확인해야 합니다. 이 패키지는 Microsoft Download Center에서 사용할 수 있습니다.
- RPM 패키지 구조 변경으로 인해 MySQL Server를 깨끗하게 설치하려면 더 큰 패키지 집합을 제거해야 합니다. (Bug #25603087)
- 잠재적인 경쟁 조건을 방지하기 위해, Debian 패키지는 이제 mkdir, touch, chown의 조합 대신 GNU install 유틸리티를 사용합니다. (Bug #25258829)
server-core및client-core라는 새 Debian/Ubuntu 패키지를 이제 사용할 수 있습니다. 이 패키지에는 설정 또는 서비스 스크립트, 디렉터리 설정, man 페이지 등이 없이 바이너리만 포함됩니다. 이 패키지는 표준 패키지와 함께 자동으로 설치되지만, 단독으로 설치되는 경우에는 작동하는 MySQL 설정이 만들어지지 않습니다. 자체 설치 설정을 사용자 지정하려는 사용자에게 유용할 수 있습니다. (Bug #25146364)scripts/mysql_security_commands.sql및support-files/mysql.server-sys5.sh는 더 이상 사용되지 않으며 MySQL 배포판에서 제거되었습니다. (Bug #24756400, Bug #24756442)- RPM 패키지는 이제 NUMA 지원이 있는 플랫폼인 EL5보다 높은 OEL, Fedora, SLES, Docker에 대해
-DWITH_NUMA=ON으로 빌드됩니다. (Bug #24689078) my-default.cnf.sh파일(기본my-default.cnf또는my-default.ini파일을 생성하는 데 사용됨)은 더 이상 소스 배포판에 포함되지 않으며,my-default.cnf및my-default.ini는 더 이상 배포 패키지에 포함되거나 배포 패키지에 의해 설치되지 않습니다. (Bug #22525354)- 사용되지 않고 문서화되지 않은 archive_reader 및 archive_test 유틸리티가 MySQL 소스 배포판에서 제거되었습니다. (Bug #12818207, Bug #62014)
Performance Schema 관련 사항
-
Performance Schema는 최소, 최대 및 평균 명령문 지연 시간에 대한 정보를 포함하는 명령문 이벤트 요약 테이블을 유지 관리합니다. 이러한 테이블은 시스템 성능에 대한 상위 수준 평가를 가능하게 합니다. 더 세분화된 수준에서 평가할 수 있도록, Performance Schema는 이제 명령문 지연 시간에 대한 히스토그램 데이터도 수집합니다. 이러한 히스토그램은 지연 시간 분포에 대한 추가 통찰을 제공하며 다음 테이블에서 사용할 수 있습니다:
events_statements_histogram_by_digest: 스키마 및 digest 값별 명령문 히스토그램events_statements_histogram_global: 전역으로 요약된 명령문 히스토그램
자세한 내용은 Statement Histogram Summary Tables를 참조하십시오.
또한
events_statements_summary_by_digest테이블에는 이제 명령문 지연 시간에 대한 백분위수 정보를 제공하는 컬럼이 있습니다. 자세한 내용은 Statement Summary Tables를 참조하십시오.이전 버전에서 이 MySQL 릴리스로 업그레이드하는 경우, 이러한 변경 사항을 Performance Schema에 반영하려면 mysql_upgrade를 실행하고 서버를 다시 시작해야 합니다. (WL #5384)
-
시스템 및 상태 변수 정보는 더 이상
INFORMATION_SCHEMA에서 유지 관리되지 않습니다. 다음 테이블이 제거되었습니다:GLOBAL_VARIABLES,SESSION_VARIABLES,GLOBAL_STATUS,SESSION_STATUS. 대신 해당 Performance Schema 테이블을 사용하십시오. Performance Schema System Variable Tables 및 Performance Schema Status Variable Tables를 참조하십시오. 또한show_compatibility_56시스템 변수가 제거되었습니다. 이 변수는INFORMATION_SCHEMA테이블의 시스템 및 상태 변수 정보가 Performance Schema 테이블로 이동되는 전환 기간 동안 사용되었으며, 더 이상 필요하지 않습니다. 다음 상태 변수가 제거되었습니다:Slave_heartbeat_period,Slave_last_heartbeat,Slave_received_heartbeats,Slave_retried_transactions,Slave_running. 이 변수들이 제공하던 정보는 Performance Schema 테이블에서 사용할 수 있습니다. Migrating to Performance Schema System and Status Variable Tables를 참조하십시오. (WL #8057) -
사용 중단된
INFORMATION_SCHEMAINNODB_LOCKS및INNODB_LOCK_WAITS테이블이 제거되었습니다.InnoDB데이터 잠금 정보를 얻으려면 대신 Performance Schemadata_locks및data_lock_waits테이블을 사용하십시오. 또는 제거된INFORMATION_SCHEMA테이블이 아니라 새 Performance Schema 테이블을 사용하도록 다시 구현된sys스키마innodb_lock_waits및x$innodb_lock_waits뷰를 사용하십시오.Performance Schema 테이블은 어떤 데이터 잠금이 존재하는지, 각 잠금을 어떤 트랜잭션이 보유하는지, 그리고 어떤 트랜잭션 잠금 요청이 다른 잠금에 의해 차단되는지를 노출합니다.
InnoDB의 경우data_locks테이블은 대기 중인 데이터 잠금만 보고했던INNODB_LOCKS테이블과 달리 모든 데이터 잠금을 보고합니다. 자세한 내용은 The data_locks Table 및 The data_lock_waits Table를 참조하십시오. 이전 테이블 컬럼을 새 테이블 컬럼에 매핑하는 방법에 대한 정보는 The INFORMATION_SCHEMA INNODB_LOCKS Table 및 The INFORMATION_SCHEMA INNODB_LOCK_WAITS Table를 참조하십시오.테이블은 필요한 권한에서 다릅니다:
INFORMATION_SCHEMA테이블에는 전역PROCESS권한이 필요합니다. Performance Schema 테이블에는 조회 대상 테이블에 대한 일반적인 Performance Schema 권한인SELECT가 필요합니다.sys스키마innodb_lock_waits및x$innodb_lock_waits뷰는 변경 없이 사용할 수 있지만, 결합된 스키마/테이블 이름 값을 포함하던locked_table컬럼이 제거되고 별도의 스키마 및 테이블 이름 값을 포함하는locked_table_schema및locked_table_name컬럼으로 대체되었다는 예외가 있습니다. 또한 이러한 뷰에는 이제locked_table_partition및locked_table_subpartition컬럼이 포함됩니다. 자세한 내용은 The innodb_lock_waits and x$innodb_lock_waits Views를 참조하십시오,이전 버전에서 이 MySQL 릴리스로 업그레이드하는 경우, 이러한 변경 사항을 Performance Schema 및
sys스키마에 반영하려면 mysql_upgrade를 실행하고 서버를 다시 시작해야 합니다. (WL #9275, WL #6657)
플러그인 관련 사항
- MySQL Server 8.0에는 서버 확장성을 개선하기 위한 컴포넌트 기반 인프라가 포함되어 있습니다. MySQL Components를 참조하십시오. 그러나 MySQL 플러그인은 컴포넌트 인터페이스보다 앞서 만들어진 인터페이스를 사용합니다. 새로운 플러그인 서비스인
plugin_registry_service를 사용하면 플러그인이 컴포넌트 레지스트리와 해당 서비스에 액세스할 수 있습니다. (WL #4989)
보안 관련 사항
-
호환되지 않는 변경:
STANDALONE및WIN빌드의 경우 기본secure_file_priv값이 빈 문자열에서NULL로 변경되었습니다. 이는 가져오기 및 내보내기 작업을 비활성화하므로 기본적으로 안전한 설정입니다. 이러한 작업을 허용하려면secure_file_priv를 해당 작업에 사용할 디렉터리의 경로 이름으로 설정하십시오. (Bug #24679907, Bug #24695274, Bug #24707666, WL #6782) -
호환되지 않는 변경: mysqld_safe에 다음 변경 사항이 적용되었습니다:
- mysqld_safe에서 rm 및 chown을 안전하지 않게 사용하면 권한 상승이 발생할 수 있었습니다. 이제 chown은 대상 디렉터리가
/var/log인 경우에만 사용할 수 있습니다. 호환되지 않는 변경 사항으로, Unix 소켓 파일의 디렉터리가 없는 경우 더 이상 생성되지 않으며, 대신 오류가 발생합니다. 이러한 변경 사항으로 인해 Solaris에서 mysqld_safe를 실행하려면 /bin/bash가 필요합니다. 다른 Unix/Linux 플랫폼에서는 여전히 /bin/sh가 사용됩니다. - 이제
--ledir옵션은 옵션 파일이 아니라 명령줄에서만 허용됩니다. - mysqld_safe는 현재 작업 디렉터리를 무시합니다.
기타 관련 변경 사항:
- mysqld_safe를 호출하는 초기화 스크립트는
--basedir를 명시적으로 전달합니다. - 초기화 스크립트는 베이스 디렉터리가
/var/log또는/var/lib인 경우에만 오류 로그 파일을 생성합니다. - SLES용 미사용 systemd 파일이 제거되었습니다.
(Bug #24483092, Bug #25088048, Bug #25378439, Bug #25378565)
참조: 다음도 참조하십시오: Bug #24464380, Bug #24388753, Bug #24619033, Bug #82920.
- mysqld_safe에서 rm 및 chown을 안전하지 않게 사용하면 권한 상승이 발생할 수 있었습니다. 이제 chown은 대상 디렉터리가
-
yaSSL이 버전 2.4.2로 업그레이드되었습니다. 이 업그레이드는 잠재적인 AES 사이드 채널 누출, 일반적이지 않은 크기에 대한 DSA 패딩, 긴 경로 디렉터리 이름을 처리하지 못하는
SSL_CTX_load_verify_locations()OpenSSL 호환성 함수와 관련된 문제를 수정합니다. (Bug #24512715, Bug #24740291) -
OpenSSL은 2016년 12월에 버전 1.0.1에 대한 지원을 종료합니다. https://www.openssl.org/policies/releasestrat.html을 참조하십시오. 따라서 MySQL Commercial Server 빌드는 이제 버전 1.0.1 대신 버전 1.0.2를 사용하며, MySQL Commercial Server에 링크된 OpenSSL 라이브러리는 버전 1.0.1에서 버전 1.0.2j로 업데이트되었습니다. 이 버전에서 수정된 문제에 대한 설명은 https://www.openssl.org/news/vulnerabilities.html을 참조하십시오.
이 변경 사항은 대신 yaSSL 라이브러리를 사용하는, Oracle에서 생성한 MySQL Server의 MySQL Community 빌드에는 영향을 주지 않습니다. (WL #9136)
공간 데이터 지원
-
호환되지 않는 변경: 이전에는
ST_Distance()가 Cartesian 공간 참조 시스템(SRS)만 지원했습니다. 이제ST_Distance()는 geographic SRS의 geometry 인수를 감지하고, 타원체 위의 측지 거리를 미터 단위로 반환합니다. 허용되는 유일한 geographic 인수 타입은Point와Point, 또는Point와MultiPoint입니다(인수 순서는 상관없습니다). projected SRS 및 SRID 0에 대한 계산은 동일하게 유지됩니다. 자세한 내용은 객체 형상을 사용하는 공간 관계 함수를 참조하십시오.공간 데이터에 geographic 공간 참조 시스템을 참조하는 SRID 값이 포함된 경우, 이러한 함수를 사용하는 기존 쿼리는 이전 MySQL 버전과 비교하여 다른 결과를 반환합니다.
(WL #9347)
-
호환되지 않는 변경: 이러한 함수는 이전에 WKB 문자열 또는 geometry 인수를 허용했습니다. geometry 인수는 더 이상 허용되지 않으며 오류를 생성합니다.
-
ST_PolyFromWKB(),ST_PolygonFromWKB()geometry 인수를 사용하는 방식에서 WKB 인수를 사용하는 방식으로 해당 함수를 참조하는 쿼리를 마이그레이션하는 방법에 대한 자세한 내용은 WKB 값에서 Geometry 값을 생성하는 함수를 참조하십시오. (WL #10166)
-
호환되지 않는 변경: 이제 이러한 함수는 위도 및 경도 좌표를 공간 참조 시스템에서 지정한 순서로 해석합니다. 또한 이 함수는 기본 축 순서를 재정의하기 위한 선택적 인수를 허용합니다.
-
ST_GeomCollFromText(),ST_GeometryCollectionFromText(),ST_GeomCollFromTxt() -
ST_PolyFromWKB(),ST_PolygonFromWKB()자세한 내용은 WKT 값에서 Geometry 값을 생성하는 함수 및 WKB 값에서 Geometry 값을 생성하는 함수를 참조하십시오.
공간 데이터에 지리 공간 참조 시스템을 참조하는 SRID 값이 포함된 경우, 이러한 함수를 사용하는 기존 쿼리는 이전 MySQL 버전과 비교하여 다른 결과를 반환합니다.
(WL #9434, WL #9435)
-
-
호환되지 않는 변경: 이제 이러한 함수는 geometry 값 인수에 적용되는 공간 참조 시스템에서 지정한 순서로 위도 및 경도 좌표를 반환합니다. 또한 이 함수는 기본 축 순서를 재정의하기 위한 선택적 인수를 허용합니다.
자세한 내용은 Geometry 형식 변환 함수를 참조하십시오.
공간 데이터에 지리 공간 참조 시스템을 참조하는 SRID 값이 포함된 경우, 이러한 함수를 사용하는 기존 쿼리는 이전 MySQL 버전과 비교하여 다른 결과를 반환합니다.
(WL #9432, WL #9433)
-
SRID 0 이외의 공간 참조 시스템에 대한 정보를 저장하는
st_spatial_reference_systems데이터 딕셔너리 테이블이 EPSG Dataset 8.7에서 9.0으로 업그레이드되었습니다. 또한 이제 테이블 내용은 데이터 딕셔너리의 뷰로 구현된INFORMATION_SCHEMAST_SPATIAL_REFERENCE_SYSTEMS테이블을 통해 노출됩니다. 자세한 내용은 The INFORMATION_SCHEMA ST_SPATIAL_REFERENCE_SYSTEMS Table을 참조하십시오.이제 MySQL에는 공간 데이터를 저장하는 테이블 컬럼에 대한 정보를 제공하는
INFORMATION_SCHEMAST_GEOMETRY_COLUMNS테이블이 있습니다. 새 테이블은 기존INFORMATION_SCHEMACOLUMNS테이블의 뷰로 구현됩니다. 자세한 내용은 The INFORMATION_SCHEMA ST_GEOMETRY_COLUMNS Table을 참조하십시오.이전 버전에서 이 MySQL 릴리스로 업그레이드하는 경우, 이러한
INFORMATION_SCHEMA변경 사항을 반영하려면 mysql_upgrade를 실행하고 서버를 다시 시작해야 합니다. (Bug #25337054, Bug #84384, WL #9348, WL #8582) -
새로운 공간 함수인
ST_SwapXY()는 지오메트리 인수를 받아 지오메트리 내 각 좌표 쌍의 X 및 Y 값을 서로 바꿉니다. 자세한 내용은 Geometry Format Conversion Functions을 참조하십시오. (WL #9436)
SQL 문법 관련 사항
-
파생 테이블 문법은 이제 select 목록에서 가져온 기본 컬럼 이름을 재정의하기 위해 테이블 이름 뒤에 명시적 컬럼 이름 목록을 허용합니다. 예를 들어, 이 파생 테이블의 컬럼 이름은 해당 select 목록에서 가져옵니다:
mysql> SELECT * FROM (SELECT 1, 2, 3, 4) AS dt; +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+컬럼 이름을 제공하려면 파생 테이블 이름 뒤에 괄호로 묶은 컬럼 이름 목록을 붙이십시오:
mysql> SELECT * FROM (SELECT 1, 2, 3, 4) AS dt (a, b, c, d); +---+---+---+---+ | a | b | c | d | +---+---+---+---+ | 1 | 2 | 3 | 4 | +---+---+---+---+(WL #883)
테스트 스위트 관련 사항
-
mysql-test-run.pl에는 이제
test데이터베이스의 기본 캐릭터셋을 지정하기 위한--charset-for-testdb=charset_name옵션이 있습니다. 기본값은latin1입니다. (Bug #25494068, Bug #84806) -
mysql-test-run.pl에는 이제 큰 테스트만 실행되도록 하는
--only-big-tests옵션이 있습니다. 일반(크지 않은) 테스트는 건너뜁니다.--big-test와--only-big-tests가 모두 지정되면--only-big-tests는 무시됩니다. (Bug #25182306) -
mysql-test-run.pl에는 새로운
--discover옵션이 있습니다. 이 옵션이 지정되면 mysql-test-run.pl은 mysqld를 시작할 때 Developer Studio Memory Error Discovery Tool인discover를 미리 로드하려고 시도합니다.discover의 보고서는--vardir로 지정된 디렉터리 아래의log/mysqld.%p.txt에서 찾을 수 있습니다. 이 옵션은 SPARC-M7 시스템에서만 지원됩니다. (Bug #25048971) -
mysqltest는 이제 표현식을 평가하고 변수에 할당할 수 있게 하는
expr명령을 지원합니다. 자세한 내용은 https://dev.mysql.com/doc/index-other.html에서 제공되는 MySQL Server Doxygen 문서의 명령 설명을 참조하십시오. (Bug #24806741) -
mysqltest는 이제 소스 디렉터리를 대상 디렉터리로 재귀적으로 복사하는(즉, 하위 디렉터리를 복사하는)
force-cpdir명령을 지원합니다. (Bug #24806681) -
mysql-test-run.pl에는 새로운
--summary-report옵션이 있습니다. 이 옵션이 지정되면 mysql-test-run.pl은 테스트 요약만 포함하는 일반 텍스트 버전을 생성하고, 옵션 인수로 명명된 파일에 이를 기록합니다. 이 파일은 이메일로 보내기에 적합합니다. (Bug #24512357, Bug #82708) -
mysql-test-run.pl은
custom_tool값이 massif 또는 helgrind와 같은 경우 --valgrind-option=--tool=custom_tool과 함께 실행할 수 없었습니다. 이는 다른 도구에서 이해하지 못할 수 있는 memcheck용 옵션을 추가했기 때문입니다. 또한 mysql-test-run.pl의--callgrind옵션은 callgrind에 유효하지 않은--base옵션을 제공했기 때문에 작동하지 않았습니다. 수정 사항의 기반이 된 패치를 제공한 Daniel Black에게 감사드립니다. (Bug #23713613, Bug #82039) -
mysqltest
connect()함수는 이제options인수에SOCKET및TCP값을 허용하여 socket-file 및 TCP/IP 연결 프로토콜 사용을 지정할 수 있습니다.또한 전송 프로토콜은 이제 현재 시스템과 일치해야 합니다. 이전에는 Windows가 아닌 시스템에서
PIPE또는SHM을 전달하면 기본(socket-file) 전송 프로토콜이 사용되었습니다. 이제 이는 오류를 발생시키며, 이와 유사하게 Windows 시스템에서SOCKET을 전달하면 오류가 발생합니다. (Bug #21046241) -
mysql-test-run.pl은 이제 mysqld 옵션을 bootstrap 옵션으로 지정할 수 있게 하는
--bootstrap옵션을 지원합니다.mysql-test-run.pl이master.opt파일에서--bootstrap옵션을 찾으면, 데이터 디렉터리를 제거하고 다시 초기화한 다음 새 옵션 설정으로 서버를 다시 시작합니다. (Bug #18184868)
X 플러그인 관련 사항
-
MYSQLX_TCP_PORTCMake 옵션이 무시되었습니다. (Bug #25493867, Bug #84804) -
protobuf 컴파일러가 mysqlx.proto에 대해 “unused import” 경고를 발생시켰습니다. (Bug #25444009, Bug #84641)
-
검증이 발생했을 때 초기화되지 않은 연결이 해제되었습니다. (Bug #25392280)
-
Mysqlx_notice_warning_sent및Mysqlx_notice_other_sent상태 변수 값이 예상대로 증가하지 않았습니다. (Bug #25289949, Bug #84258, Bug #25290001, Bug #84260) -
MYSQL_DYNAMIC_PLUGIN매크로의 수동 정의는 중복이었습니다. (Bug #25162590, Bug #83988) -
IPv6 연결 지원에서 기본값이 '0.0.0.0'인 새 시스템 변수
mysqlx_bind_address를 정의했지만, X Plugin에 대한 연결을 IPv6 주소, IPv4 주소 또는 호스트 이름을 사용하여 만들 수 있도록 기본값은 '*'였어야 했습니다. (Bug #25047909, Bug #83688) -
stmt필드는 다음 메시지에서required로 표시되었습니다:message Mysqlx.Crud.ModifyView { required Collection collection = 1; optional string definer = 2; optional ViewAlgorithm algorithm = 3; optional ViewSqlSecurity security = 4; optional ViewCheckOption check = 5; repeated string column = 6; required Mysqlx.Crud.Find stmt = 7; }(Bug #24968735, Bug #83595)
-
CREATE TABLE foo (doc JSON)으로 생성된 테이블에 대해,list_objects문은 해당 테이블을 컬렉션으로 잘못 보고했습니다. (Bug #24963952) -
인증 전에 연결된 소켓으로
Expect.Open을 보내면 다음 오류 메시지가 발생했습니다:... Plugin mysqlx reported: '10: Invalid message 24 received during client initialization' ... Plugin mysqlx reported: '10: ERROR reading from socket Bad file descriptor (9) 2'(Bug #24940144, Bug #83494)
-
Linux에서 JavaScript 및 Python 대화형 모드의 MySQL Shell은 컬렉션 이름의 대소문자가 일정하지 않은 경우 컬렉션을 숨겼습니다. (Bug #24848125)
-
인증하는 사용자와 일치하는 사용자 계정이 여러 개 존재하는 경우, X Plugin은 가장 잘 일치하는 계정 대신 일치하는 모든 계정을 인증하려고 했습니다. (Bug #24847537)
-
C++ 11에 대응 기능이 있는 Boost 클래스가 이동되거나 래핑되었습니다. (Bug #24680856)
-
동일한 포트에서 두 X Plugin 인스턴스가 시작되면, 결과 오류 메시지가 두 줄로 분리되고 중복 정보를 포함했습니다. (Bug #24679018, Bug #83008)
-
performance_schema.threads테이블은 X Plugin에 대한processlist통계를 표시하지 않았습니다. (Bug #24638038) -
클라이언트가 알 수 없는 메시지 타입을 서버에 보내면, 서버는 오류 메시지를 다시 보낸 다음 클라이언트의 연결을 끊었습니다. (Bug #24611754, Bug #82868)
-
클라이언트가 길이가 0인 메시지를 보냈을 때, X Plugin은 응답을 보내지 않았습니다. 이후 메시지에 대해 클라이언트는 헤더 내용에 따라 오류
E_X_BAD_MESSAGE를 받고 연결이 끊겼습니다. (Bug #24595459, Bug #82862) -
X Plugin은 인증되지 않은 사용자를 포함하여 연결된 모든 사용자에게 해당 버전을 표시했습니다. (Bug #24562707, Bug #82784)
-
X Plugin은
Update문에 중복 필드 이름이 존재할 때 잘못된 쿼리를 생성했습니다. (Bug #24510083) -
list_objects문은sys데이터베이스의 일부 뷰에 대해 잘못된 정보를 반환했습니다. (Bug #24472325) -
X Plugin은 연결이 닫힌 경우에도 클라이언트에 결과 세트를 보내려고 했습니다. 이제 플러그인은 연결이 재설정되면 저장 프로시저 실행을 중지합니다. (Bug #24440344)
-
데이터베이스 이름을 명시적으로 설정하지 않고
list_objects문을 사용하여 객체를 나열하려고 하면 컬렉션이 테이블로 잘못 분류되었습니다. (Bug #23205895, Bug #81248) -
이제 X Plugin은
sha256_password플러그인을 지원합니다. (WL #9271)
추가되거나 변경된 기능
-
호환되지 않는 변경: 이전에는
UPDATE가SELECT컬럼을 참조하는INSERT... SELECT... ON DUPLICATE KEY UPDATE문에서SELECT가UNION인 경우 결과가 올바르지 않을 수 있었습니다. 이제 이러한 문은 금지되며 오류를 생성합니다. 이 제한을 우회하려면 해당 로우를 허용되는 단일 테이블 결과 집합으로 처리할 수 있도록UNION을 파생 테이블로 작성하십시오. INSERT... ON DUPLICATE KEY UPDATE Statement를 참조하십시오. (WL #5094) -
InnoDB: 기본적으로
InnoDB는 통계를 계산할 때 커밋되지 않은 데이터를 읽습니다. 테이블에서 로우를 삭제하는 커밋되지 않은 트랜잭션의 경우,InnoDB는 로우 추정치와 인덱스 통계를 계산할 때 삭제 표시된 레코드를 제외하며, 이로 인해READ UNCOMMITTED이외의 트랜잭션 격리 수준을 사용하여 해당 테이블에서 동시에 작동하는 다른 트랜잭션에 대해 최적이 아닌 실행 계획이 발생할 수 있습니다. 이 시나리오를 방지하기 위해,InnoDB가 영구 Optimizer 통계를 계산할 때 삭제 표시된 레코드를 포함하도록 보장하는 새 설정 옵션innodb_stats_include_delete_marked를 활성화할 수 있습니다. (Bug #23333990) -
InnoDB: R-tree를 위한 Geometry 파싱 및 bounding box 계산 코드는
InnoDB에서 서버로 이동되었습니다. (WL #9439) -
InnoDB: 이제
InnoDB는SELECT... FOR SHARE및SELECT... FOR UPDATE잠금 읽기 문에서NOWAIT및SKIP LOCKED옵션을 지원합니다.NOWAIT는 요청된 로우가 다른 트랜잭션에 의해 잠겨 있는 경우 문이 즉시 반환되도록 합니다.SKIP LOCKED는 결과 집합에서 잠긴 로우를 제거합니다. Locking Read Concurrency with NOWAIT and SKIP LOCKED를 참조하십시오.SELECT... FOR SHARE는SELECT... LOCK IN SHARE MODE를 대체하지만,LOCK IN SHARE MODE는 하위 호환성을 위해 계속 사용할 수 있습니다. 두 문은 동일합니다. 그러나FOR SHARE는NOWAIT,SKIP LOCKED,OF tbl_name옵션을 지원합니다. SELECT Statement를 참조하십시오.OF tbl_name은 잠금 쿼리를 명명된 테이블에 적용합니다.이제
OF는 예약어이며 식별자 따옴표 처리 없이는 식별자로 사용할 수 없습니다.이제
SELECT... FOR SHARE및SELECT... FOR UPDATE문에는SELECT권한과DELETE,LOCK TABLES,UPDATE권한 중 하나 이상이 필요합니다. 이전에는SELECT권한만 필요했습니다. (WL #8919, WL #3597) -
InnoDB: 이제
InnoDB저장 데이터 암호화 기능은innodb_redo_log_encrypt및innodb_undo_log_encrypt설정 옵션으로 제어되는 redo log 및 undo log 데이터의 암호화를 지원합니다. Redo Log Encryption 및 Undo Log Encryption을 참조하십시오. (WL #9290, WL #9289) -
InnoDB: 이제 디스크에 저장되는
InnoDB내부 임시 테이블은 여러 커서 위치를 지원하여, 동일한 스레드 내에서 단일 writer 및 여러 reader 접근을 허용합니다. 이 개선의 목적은 재귀 및 비재귀 common table expression(CTE)에 대한 지원을 제공하는 것입니다.또한
InnoDB디스크 기반 내부 임시 테이블에 대한 consistent-read 접근은 dirty-read 방식으로 대체되며, 이제InnoDB디스크 기반 내부 임시 테이블의 로우 수는 더 느린 테이블 스캔 대신 로우 수 통계를 사용합니다. (WL #9248) -
InnoDB:
InnoDB는 이제ROW_FORMAT=COMPRESSED를 사용하는 테이블에 대해 큰 객체를 더 작은zlib스트림의 시퀀스로 압축합니다. 이전에는 큰 객체 데이터가 단일zlib스트림으로 압축되었습니다. (WL #9263) -
Replication: 음수 또는 소수 제한 시간 파라미터가
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()에 제공되면, 서버가 예기치 않은 방식으로 동작했습니다. 이 수정으로:- 소수 제한 시간 값은 반올림 없이 그대로 읽힙니다.
- 음수 제한 시간 값은 서버가 strict SQL 모드이면 오류와 함께 거부됩니다. 서버가 strict SQL 모드가 아니면, 해당 값은 함수가 대기 없이 즉시 NULL을 반환하게 한 다음 경고를 발생시킵니다.
(Bug #24976304, Bug #83537)
-
Replication: 수신자(I/O) 및 적용자(SQL) 복제 스레드 간의 경합을 줄이기 위한 작업이 수행되었습니다. 이를 통해 슬레이브가 마스터의 더 높은 insert 부하를 따라갈 수 있습니다. (Bug #78246, Bug #21753696, WL #8599)
-
Replication: 바이너리 로그 제거를 위한 간격을 초 단위로 설정하는
binlog_expire_logs_seconds시스템 변수가 추가되었습니다. 이 변수와expire_logs_days의 효과는 누적되므로, 1.5일과 같은 기간을 설정할 수 있습니다. 자동 바이너리 로그 제거를 완전히 비활성화하려면 두 변수를 모두 0으로 설정하십시오. 이는 두 변수 모두의 기본값입니다. (Bug #71697, Bug #18260088, WL #9237) -
Replication: 복제 지연과 큐를 모니터링하기 위한 Performance Schema 테이블이 추가되었습니다.
replication_connection_status테이블에는 relay log에서 마지막으로 큐에 추가된 트랜잭션과 현재 relay log에서 큐에 추가되고 있는 트랜잭션에 대한 갱신된 정보가 있습니다.replication_applier_status_by_coordinator테이블에는 worker의 버퍼에 마지막으로 기록된 트랜잭션과 현재 coordinator가 처리하고 있는 트랜잭션에 대한 갱신된 정보가 있습니다.replication_applier_status_by_worker테이블에는 worker가 마지막으로 적용한 트랜잭션과 현재 적용되고 있는 트랜잭션에 대한 갱신된 정보가 있습니다. 이러한 각 테이블에 표시되는 정보에는 트랜잭션의 GTID, 커밋 타임스탬프, 처리 단계 타임스탬프, 완료 타임스탬프가 포함됩니다.replication_applier_status_by_worker테이블에서LAST_SEEN_TRANSACTION컬럼은APPLYING_TRANSACTION컬럼으로 대체됩니다. (WL #7374) -
Replication: 새로운 binlog_expire_logs_seconds 변수는 기존 expire_logs_days 변수에 추가되는 글로벌 서버 변수입니다. 목적은 현재의 일 단위 세분성보다 더 세밀한 바이너리 로그 보존 정책을 가능하게 하는 것입니다. (WL #9237)
-
Replication: 바이너리 로그에 의한 DDL 문 또는 트랜잭션의 올바른 복구는 바이너리 로그 데이터를 기반으로 DDL 트랜잭션을 올바르게 복구하는 지원을 구현합니다. 새로운 데이터 딕셔너리의 맥락에서는 2-phase commit 프로토콜을 사용하여 메타데이터 변경을 수행하고 이를 단일 트랜잭션으로 바이너리 로그에 기록할 수 있게 됩니다. (WL #9175)
-
Replication: Multi-source replication은 이제 채널별 복제 필터를 지원합니다. 이를 통해 특정 채널에서 선택한 복제 데이터의 실행을 필터링할 수 있습니다. 지금까지 복제 필터는 전역이었으며, 모든 채널에만 적용할 수 있었습니다. (WL #7361)
-
Replication: Row-based replication은 이제 바이너리 로그에서 확장 테이블 메타데이터를 사용합니다. 확장 메타데이터는 두 가지 주요 목적을 제공합니다: 슬레이브는 자신의 테이블 구조가 마스터의 테이블 구조와 다를 때 데이터를 원활하게 전송하기 위해 메타데이터를 사용하며, 외부 소프트웨어는 메타데이터를 사용하여 로우 이벤트를 디코딩하고 데이터를 외부 데이터베이스에 저장할 수 있습니다. (WL #4618)
-
Replication: 복제 지연을 적절히 모니터링할 수 있도록 GTID 기반 지연 복제 및 복제 지연 모니터링을 위한 인프라가 추가되었습니다. 바이너리 로그에서 각 트랜잭션(각 이벤트 또는 문장이 아님)과 연결되는 두 개의 새 타임스탬프가 도입되었습니다. original_commit_timestamp는 트랜잭션이 원래 마스터에서 커밋된 시점의 epoch 이후 마이크로초 단위 값이며, immediate_commit_timestamp는 트랜잭션이 직접 마스터에서 커밋된 시점의 epoch 이후 마이크로초 단위 값입니다. (WL #7319)
-
Replication:
RESET MASTER문장은 바이너리 로그 파일 번호를 지정할 수 있도록 확장되었습니다.RESET MASTER TO문은 사용할 새 바이너리 로그 파일의 인덱스를 지정하는 인수를 받습니다. 목적은FLUSH BINARY LOGS및PURGE BINARY LOGS TO문을 단일RESET MASTER문으로 대체하여 장애 조치 절차를 단순화하는 것입니다. (WL #9110) -
Replication: 지연 복제에서 지연을 정의하고 계산하는 데 사용되는 프로세스가 개선되었습니다. 이는 바이너리 로그의 새 타임스탬프인 immediate_commit_timestamp에 의존하며, 이 값은 트랜잭션이 직접 마스터의 바이너리 로그에 기록된 시점의 epoch 이후 마이크로초 수입니다. 이는 지연이 더 이상 이벤트별로 계산되지 않고, 이제 트랜잭션별로 적용됨을 의미합니다. (WL #7318)
-
Replication: 바이너리 로그에 기록되는 정보가 커밋 타임스탬프를 기준으로 복제 슬레이브가 병렬화할 수 있도록 할지, 또는 트랜잭션 쓰기 세트를 기준으로 병렬화할 수 있도록 할지를 이제 지정할 수 있습니다.
쓰기 세트를 사용하는 것은 커밋 기록에 의존하지 않으므로 커밋 타임스탬프를 사용하는 것보다 더 큰 병렬 처리 가능성을 가집니다. 복제 슬레이브에서 이러한 방식으로 바이너리 로그를 적용할 때, 기본 컴퓨팅 하드웨어의 기능(예: CPU 코어)을 활용할 수 있으며 따라서 이 프로세스의 속도를 높일 수 있습니다.
병렬화 소스를 선택하기 위한 인터페이스는 새 서버 시스템 변수
binlog_transaction_dependency_tracking으로 구현되며, 이 변수는COMMIT_ORDER,WRITESET, 또는WRITESET_SESSION값 중 하나를 사용할 수 있습니다.COMMIT_ORDER(기본값)는 커밋 타임스탬프를 사용하여 병렬화 정보가 기록되도록 합니다.WRITESET은 같은 로우를 업데이트하지 않는 모든 트랜잭션이 병렬화될 수 있는 방식으로 쓰기 세트를 사용하여 이 정보가 기록되도록 합니다. 그리고WRITESET_SESSION은WRITESET과 같은 방식으로 동작하지만, 같은 세션에서 발생한 업데이트는 순서를 재정렬할 수 없다는 점이 다릅니다. 트랜잭션 종속성을 추적하기 위해 메모리에 유지되는 로우 해시 기록의 크기는 이 릴리스에서 함께 도입된binlog_transaction_dependency_history_size를 사용하여 설정할 수 있습니다. (WL #9556, WL #10750) -
Group Replication: 그룹의 뷰 변경 이벤트를 이제
DATABASE타입의 외부 멀티스레드 슬레이브(MTS)에 복제할 수 있습니다. (Bug #25170698, Bug #84008) -
Group Replication: Group Replication은 이제
SAVEPOINTSQL 트랜잭션을 지원합니다. (WL #9837, WL #10520) -
JSON: 기존
JSON값, 또는 JSON 문서로 성공적으로 파싱될 수 있는 모든 문자열을 사람이 쉽게 읽을 수 있는 형식으로 출력하는 JSON 유틸리티 함수JSON_PRETTY()가 추가되었습니다. 각 JSON 객체 멤버 또는 배열 값은 출력의 별도 라인에 표시되며, 각 하위 객체 또는 배열은 부모를 기준으로 2칸 들여쓰기됩니다.예:
mysql> SELECT JSON_PRETTY('123'); +--------------------+ | JSON_PRETTY('123') | +--------------------+ | 123 | +--------------------+ mysql> SELECT JSON_PRETTY("[1,3,5]"); +------------------------+ | JSON_PRETTY("[1,3,5]") | +------------------------+ | [ 1, 3, 5 ] | +------------------------+ mysql> SELECT JSON_PRETTY('{"a":"10","b":"15","x":"25"}'); +---------------------------------------------+ | JSON_PRETTY('{"a":"10","b":"15","x":"25"}') | +---------------------------------------------+ | { "a": "10", "b": "15", "x": "25" } | +---------------------------------------------+(WL #9191)
-
JSON: 이전에는
ORDER BY를 사용하여 쿼리에서JSON값을 정렬할 때, 각 값이 정렬 키에서 고정 길이를 가진 부분으로 표현되었으며, 이러한 각 부분에는 1K의 메모리가 필요했습니다. 많은 경우 이러한 사용량은 과도했습니다. 예를 들어 정수 스칼라 값은 상대적으로 매우 적은 바이트만 필요하므로, 1K의 나머지 부분(90% 이상)은 패딩이 차지했습니다.이 문제를 해결하기 위해 JSON 정렬 키에 대한 가변 길이 부분이 도입되었으며, 이제 각 키 부분은 값을 저장하는 데 필요한 공간만 차지합니다. 이는 성능에 다음과 같은 이점을 제공합니다:
- 정렬 버퍼 공간이 더 효과적으로 사용되므로, 파일 정렬이 디스크로 플러시될 필요가 더 늦거나 더 적어집니다. 이는 더 많은 데이터를 메모리에서 정렬할 수 있음을 의미합니다.
- 더 짧은 키는 더 긴 키보다 더 빠르게 비교할 수 있으며, 메모리 내 정렬뿐 아니라 디스크 사용이 필요한 정렬에서도 성능이 눈에 띄게 향상됩니다.
(WL #8741)
-
WEIGHT_STRING()디버깅 함수는 더 이상LEVEL절을 지원하지 않습니다. (Bug #25469683, Bug #84723) -
Developer Studio 12.5의 경우, 이제
FORCE_UNSUPPORTED_COMPILER옵션이 지정되지 않으면 32비트 빌드가 비활성화됩니다. (Bug #25267157, Bug #84230) -
스토리지 엔진에 종속되지 않는 여러 외래 키 제약 조건 검사가
InnoDB내부에서 수행되고 있었습니다. 이제 이러한 검사는 SQL 계층에서 수행됩니다. (Bug #25252847) -
일부 GIS 범위 초과 검사가 단순화되었습니다. 기여해 주신 Daniel Black에게 감사드립니다. (Bug #25202470, Bug #84062)
-
Developer Studio 12.5에 사용되는 컴파일러 플래그 세트가 개선되었습니다. (Bug #25148549, Bug #83955)
-
이제 CMake는
CMP0022 OLD가 아니라CMP0022 NEW의CMAKE_POLICY를 사용합니다. (Bug #25090147, Bug #83804) -
MySQL이
-Wno-error옵션으로 빌드되도록 설정된 경우, mysql_config가--cflags옵션에 대해 잘못된 출력을 생성했습니다.이제 mysql_config와 pkg-config가 생성하는 컴파일러 옵션 세트는 차단 목록 방식이 아니라 허용 목록 방식으로 결정됩니다. (Bug #25040566, Bug #22898475, Bug #80662)
-
UTF-8 바이너리 콜레이션의 성능이 개선되었습니다. (Bug #24788778, Bug #83247, Bug #25076862)
-
이제 mysqld의 systemd 서비스 파일은 MySQL Reference Manual의 systemd 문서에 대한 링크를 제공하기 위해
[Unit]섹션에Documentation값을 포함합니다. (Bug #24735762) -
이제 단위 테스트는 Google Mock 1.8을 사용합니다. (Bug #24572381, Bug #82823)
-
GROUP BY에 대한 구현되지 않은 비표준WITH CUBE절은 더 이상 지원되지 않습니다.이제
CUBE는 예약어이며, 식별자 따옴표 처리 없이 식별자로 사용할 수 없습니다.(Bug #24572048, Bug #82821)
-
오래된 다음 빌드 스크립트가 MySQL 소스 배포판에서 제거되었습니다:
BUILD/SETUP.sh,BUILD/autorun.sh,BUILD/cmake_configure.sh,BUILD/compile-dist, 및cmake/configure.pl. (Bug #24512933) -
MySQL 8.0.0에서
mysql_shutdown()C API 함수 제거가 되돌려졌습니다. 이 함수는 향후 MySQL 버전에서 여전히 제거될 예정이지만, 해당 제거는 연기되었습니다. (Bug #24496976, Bug #82681, WL #9014) -
Debian/Ubuntu 패키징 관리자 스크립트의 일관성과 유지보수성이 개선되었습니다. (Bug #23588977)
-
이제
DEFAULT값을 가진 컬럼에 의존하는 생성 컬럼이 포함된 테이블의 컬럼 수정에 대해, 수정된 컬럼이 생성 컬럼 표현식에 관여하지 않는 경우 in-placeALTER TABLE작업이 가능합니다. 예를 들어, 별도 컬럼의NULL속성 변경은 테이블 재구축 없이 in-place로 수행할 수 있습니다. (Bug #22987899, Bug #80832) -
mysql시스템 데이터베이스의 덤프에 대해, mysqldump는 더 이상innodb_index_stats및innodb_table_stats테이블에 대한 DDL 문을 생성하지 않습니다. 이러한 문은 해당 테이블이 사용자가 접근할 수 없기 때문에 덤프를 다시 로드할 때 실패합니다. (Bug #22655287) -
mysqld가
--daemonize로 호출되는 경우, 터미널 유형 장치에 연결되어 있으면stdout및stderr가/dev/null로 리디렉션되어 mysqld가 실제 데몬처럼 동작할 수 있습니다. (Bug #21627629) -
mysql_secure_installation은 유효한 yes 및 no 응답으로 간주하는 항목에 대해 더 엄격해졌습니다. (Bug #13344753, Bug #62925)
-
MySQL 클라이언트 및 유틸리티 프로그램은
--version옵션으로 호출될 때 자체 프로그램별 버전 번호를 보고했으며, 버전 문자열은 일관된 형식을 따르지 않았습니다. 이제 이러한 프로그램은 일관된 형식으로 MySQL 버전 번호(mysqld와 동일)를 출력합니다. (Bug #11763201, Bug #55885) -
새
mysqldump옵션인--network-timeout은max-allowed-packet을 최대값으로 설정하고 네트워크 읽기 및 쓰기 타임아웃을 큰 값으로 설정하여 큰 테이블을 덤프할 수 있게 합니다. 이 옵션은 기본적으로 활성화됩니다. 비활성화하려면--skip-network-timeout을 사용하십시오. (Bug #11754493, Bug #46103) -
두 JSON 집계 함수
JSON_ARRAYAGG()및JSON_OBJECTAGG()가 추가되었습니다.JSON_ARRAYAGG()함수는 컬럼 또는 컬럼 표현식을 인수로 사용하며, 여기 표시된 것처럼 결과 집합을 단일JSON배열로 집계합니다:mysql> SELECT col FROM t1; +--------------------------------------+ | col | +--------------------------------------+ | {"key1": "value1", "key2": "value2"} | | {"keyA": "valueA", "keyB": "valueB"} | +--------------------------------------+ 2 rows in set (0.00 sec) mysql> SELECT JSON_ARRAYAGG(col) FROM t1; +------------------------------------------------------------------------------+ | JSON_ARRAYAGG(col) | +------------------------------------------------------------------------------+ | [{"key1": "value1", "key2": "value2"}, {"keyA": "valueA", "keyB": "valueB"}] | +------------------------------------------------------------------------------+ 1 row in set (0.00 sec)배열 요소의 순서는 지정되지 않습니다.
JSON_OBJECTAGG()는 각각 키와 값으로 해석하는 두 컬럼 또는 표현식을 사용합니다. 여기 표시된 것처럼 결과를 단일JSON객체로 반환합니다:mysql> SELECT id, col FROM t1; +------+--------------------------------------+ | id | col | +------+--------------------------------------+ | 1 | {"key1": "value1", "key2": "value2"} | | 2 | {"keyA": "valueA", "keyB": "valueB"} | +------+--------------------------------------+ 2 rows in set (0.00 sec) mysql> SELECT JSON_OBJECTAGG(id, col) FROM t1; +----------------------------------------------------------------------------------------+ | JSON_OBJECTAGG(id, col) | +----------------------------------------------------------------------------------------+ | {"1": {"key1": "value1", "key2": "value2"}, "2": {"keyA": "valueA", "keyB": "valueB"}} | +----------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)NULL키는 오류를 발생시키며, 중복 키는 무시됩니다.자세한 내용은 집계 함수를 참조하십시오. (Bug #78117, Bug #21647417, WL #7987)
- MySQL은 이제
.SDI(serialized dictionary information) 메타데이터 파일에 포함된 정보를 기반으로MyISAM테이블을 가져오는IMPORT TABLE문을 지원합니다. 이 문은 한 서버에서 “원시” 테이블 파일을 내보내고 다른 서버로 가져오는 데 유용하며, mysqldump를 사용하여 테이블을 SQL 문 파일로 덤프하고 mysql을 사용하여 덤프 파일을 처리하는 것보다 더 빠른 대안을 제공합니다. 자세한 내용은 IMPORT TABLE 문을 참조하십시오. (WL #7524)
- MySQL은 이제
수정된 버그
-
호환되지 않는 변경 사항: 명시적 컬럼 이름 목록이 제공된 뷰의 저장된 정의가 유효하지 않을 수 있었습니다. 예를 들어, 다음 문장의 경우:
CREATE VIEW v1 (name2) AS SELECT 1 AS name1 UNION SELECT 2 ORDER BY name1;저장된 정의는 다음과 같았으며, 이는 유효하지 않습니다:
CREATE VIEW v1 AS SELECT 1 AS name2 UNION SELECT 2 AS 2 ORDER BY name1;이제 저장된 정의 내의 컬럼 이름은 컬럼 이름 목록으로 대체되지 않습니다:
CREATE VIEW v1 (name2) AS SELECT 1 AS name1 UNION SELECT 2 AS 2 ORDER BY name1;이 변경으로 인해 발생하는 비호환성은
VIEW_DEFINITION값이 컬럼 이름 목록을 표시하지 않기 때문에CREATE VIEW문을 더 이상INFORMATION_SCHEMAVIEWS테이블만으로 다시 생성할 수 없다는 점입니다. 대신, 컬럼 이름 목록을 가져오려면COLUMNS테이블도 참조해야 합니다. 또는 (더 간단하게)SHOW CREATE VIEW를 사용하십시오. (Bug #23265335, Bug #81377) -
InnoDB; Microsoft Windows: Windows의 MySQL 64-bit 빌드에서, 재시도 경로의 올바른 작동에 필요한 캐스트가 누락되어 파일 I/O 재시도 결과가 잘못 해석되었고, 이로 인해 어설션 실패와 운영체제 오류가 발생했습니다. (Bug #24711351)
-
InnoDB: 디버그 빌드에서, 래치 디버깅을 초기화하는 호출이 경쟁 조건으로 인해 어설션을 발생시켰습니다. (Bug #25700405)
-
InnoDB: 첫 번째 undo 테이블스페이스가 space ID 1을 사용해야 한다는 제한이 제거되었습니다. 이제 첫 번째 undo 테이블스페이스에는 1이 아닌 space ID가 할당될 수 있습니다. undo 테이블스페이스의 space ID 값은 여전히 연속된 순서로 할당됩니다. (Bug #25551311)
-
InnoDB:
innodb_force_recovery설정이 5 또는 6인 서버에서DROP TABLE작업이 어설션을 발생시켰습니다. 이러한innodb_force_recovery설정에서는 더 이상DROP TABLE이 허용되지 않습니다. (Bug #25385590)참조: 이 문제는 다음의 회귀입니다: Bug #19779113.
-
InnoDB: Performance Schema 없이 서버를 컴파일하면 빌드 실패가 발생했습니다. (Bug #25348787)
-
InnoDB: read-ahead 중에 테이블스페이스 크기를 계산하는 데 잘못된 페이지 크기가 사용되었습니다. (Bug #25330449)
-
InnoDB: Fedora 25에서
DWITH_LZ4=system을 사용하여 컴파일하면 더 이상 사용되지 않는LZ4_COMPRESS_LIMITEDOUTPUT함수로 인해 빌드 실패가 발생했습니다. (Bug #25297593) -
InnoDB:
UNIV_PFS_MUTEX,UNIV_PFS_RWLOCK,UNIV_PFS_THREAD와 같은 매크로를 비활성화하면 컴파일 오류가 발생했습니다. (Bug #25251082) -
InnoDB: 가상 인덱스의 NULL 가상 컬럼 필드 이름으로 인해, 외래 키 제약 조건의 영향을 받는 가상 컬럼을 채우는 동안 발생하는 필드 이름 비교 중에 서버 종료가 발생했습니다. (Bug #25222337)
-
InnoDB:
InnoDB파일 I/O Performance Schema 계측을 위한 파일 핸들 타입 이름이os_pfs_file_t에서pfs_os_file_t로 변경되었습니다. (Bug #25220118) -
InnoDB:
INFORMATION_SCHEMA테이블에 대한 서브쿼리가 있는 트랜잭션이 동시 DDL 작업을 차단할 수 있었습니다. (Bug #25200952) -
InnoDB: 범위 비교 중에 클러스터형 인덱스 필드 번호 대신 보조 인덱스 필드 번호가 전달되어, 결국 잘못된 필드를 검색하게 되었습니다. (Bug #25175249)
-
InnoDB: 재시작 시 서버 종료는
st_my_thread_var구조를 초기화하는 백그라운드 스레드에my_thread_init()및my_thread_exit()함수가 누락되어 발생했습니다. (Bug #25167032) -
InnoDB: 기본값이 아닌 읽기 배치 크기 설정을 사용한 memcached 읽기 작업으로 인해 서버 종료가 발생했습니다. (Bug #25147515)
-
InnoDB:
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS테이블이 서버를 재시작한 후 외래 키 제약 조건 이름(UNIQUE_CONSTRAINT_NAME)에 대해NULL을 보고했습니다. (Bug #25126722) -
InnoDB:
READ COMMITTED격리 수준을 사용하는 동안 외래 키 검증 중에 갭 락이 불필요하게 설정되었습니다. (Bug #25082593) -
InnoDB: MySQL 5.7에서
InnoDB테이블을 로드하는 데 더 많은 메모리가 필요했으며, 이는 주로 임시 테이블 최적화와 함께 도입된 인메모리 구조 멤버가 추가되었기 때문입니다. 임시 테이블에만 사용되는 인메모리 구조 멤버는 이제 필요할 때만 할당됩니다. (Bug #25080442) -
InnoDB:
FULLTEXT인덱스가 있는 테이블에서TRUNCATE TABLE작업 후 공간 크기가 잘못 계산되어 유효하지 않은 읽기가 발생했습니다. (Bug #25053705) -
InnoDB: 준비된 XA 트랜잭션이 높은 우선순위의 트랜잭션에 의해 롤백되었습니다. 차단하는 트랜잭션이 준비된 상태이면 높은 우선순위의 트랜잭션은 대기해야 합니다. (Bug #25032066)
-
InnoDB:
InnoDB가syscall(SYS_futex)에 유효하지 않은 인수를 전달했습니다. (Bug #24923840, Bug #83375) -
InnoDB: redo 로그 복구 후 undo 테이블스페이스 객체의 노드 크기가 간헐적으로 0이 될 수 있었으며, 결국 오류가 발생했습니다. 또한 undo 테이블스페이스 객체가 LRU 목록에 잘못 배치되었고, 테이블스페이스 객체가 해제될 때 undo 테이블스페이스의 헤더 페이지가 버퍼 캐시에 존재할 수 있어 첫 페이지 읽기에서 파일 열기 실패가 발생했습니다. (Bug #24916359)
-
InnoDB: 체크포인트 중에 모든
MLOG_FILE_NAMEredo 로그 레코드가 단일 미니 트랜잭션(mtr)에 기록되어 로그 파싱 버퍼 오버플로가 발생했습니다. (Bug #24793413, Bug #83245) -
InnoDB: GCC
mach_parse_compressed함수는 첫 번째 바이트의 값에 따라 1바이트에서 5바이트를 로드해야 합니다. GCC 버그로 인해 GCC 5 및 6은 첫 번째 바이트 값이 확인되기 전에 4바이트를 로드하는 코드를 내보냈습니다(GCC Bug #77673). 이 동작을 방지하는 우회 방법이 적용되었습니다. 패치를 제공해 준 Laurynas Biveinis에게 감사드립니다. (Bug #24707869, Bug #83073) -
InnoDB: 테이블스페이스 타입 함수와 관련된 코드가 명명 일관성, 함수 배치, 함수 사용과 관련된 문제를 해결하도록 개선되었습니다. (Bug #24706739, Bug #83092)
-
InnoDB:
InnoDBPerformance Schema 계측을 위한 키가 Performance Schema에 등록되도록 보장하기 위해 디버그 빌드에 메커니즘이 추가되었습니다. 이 메커니즘은 Performance Schema 키 수가 등록된 Performance Schema 키 수와 일치하지 않으면 디버그 빌드에서 시작이 실패하도록 합니다. (Bug #24686908) -
InnoDB: 테이블 통계를 업데이트하는 동안 발생한 경쟁 조건으로 인해 추정 로우 수가 1이 되고 잘못된 쿼리 실행 계획이 생성될 수 있었습니다. (Bug #24666839, Bug #82968)
-
InnoDB:
glibc버그로 인해 수명이 짧은 분리된 스레드가 호출자가pthread_create()에서 반환되기 전에 종료될 수 있었으며, 이로 인해 서버가 종료되었습니다. 패치를 제공해 준 Laurynas Biveinis에게 감사드립니다. (Bug #24605956, Bug #82886) -
InnoDB: 테이블 통계와 관련된 코드의 오류로 인해
dict0stats.cc소스 파일에서 어설션이 발생했습니다. (Bug #24585978) -
InnoDB:
ut_malloc또는ut_new를 사용하여 메모리를 할당하는InnoDB코드 베이스의 모듈을 나타내는 모듈 베이스 이름 목록이 불완전했습니다. 이 목록은 Performance Schema에서InnoDB메모리 할당 이벤트 데이터를 보고하는 데 사용됩니다. (Bug #24571816) -
InnoDB: 일부
InnoDBrw-lock 및 mutex 키가 Performance Schema와 함께 사용하도록 등록되지 않았습니다. (Bug #24571597) -
InnoDB:
innodb_undo_logs값을 늘리고 서버를 재시작한 후, 새로 할당된 롤백 세그먼트에 undo 테이블스페이스를 할당할 때 활성 undo 테이블스페이스 수가 증가하지 않았습니다. (Bug #24488141) -
InnoDB: 사용되지 않는
MLOG_UNDO_HDR_DISCARDredo 로그 레코드 타입 및 관련 함수가 제거되었습니다. (Bug #24482001) -
InnoDB: purge 스레드가 시작될 때 서버가 테이블스페이스 ID를 undo 테이블스페이스 ID로 인식하지 못하여 assertion이 발생했습니다. (Bug #24479773)
참조: 이 문제는 다음 버그의 regression입니다: Bug #23517560.
-
InnoDB:
InnoDB가 복구 중 doublewrite 버퍼에서 페이지를 복원할 때 누락된 암호화에 대한 오류를 잘못 보고했습니다. (Bug #24471076) -
InnoDB:
InnoDB는 테이블의 버퍼 풀에 있는 페이지 수에 대해 잘못된 추정치를 보고했습니다. 페이지가 제거될 때 페이지 수가 올바르게 감소되지 않았습니다. (Bug #24464147)참조: 이 문제는 다음 버그의 회귀입니다: Bug #21747906.
-
InnoDB: undo 테이블스페이스 관리와 관련된 다음 코드 변경 사항이 구현되었습니다:
-
임시 테이블스페이스 롤백 세그먼트를 위한 인메모리 배열이 추가되어, redo가 활성화된 롤백 세그먼트에서 사용할 수 있도록
TRX_SYS페이지의 32개 슬롯이 해제되었습니다.이 변경의 결과로, 별도 undo 테이블스페이스를 설정하는 동안
innodb_rollback_segments설정 옵션을 설정할 때 더 이상 임시 테이블스페이스 롤백 세그먼트를 고려할 필요가 없습니다. -
undo 로그 및 롤백 세그먼트와 관련된 코드 주석이 개정되었습니다.
-
롤백 세그먼트와 undo 테이블스페이스를 나열하는 고정 배열이 동적 크기 배열로 대체되었습니다.
-
undo 테이블스페이스를 초기화하는 함수가 리팩터링되었습니다.
-
undo 및 undo 파일 이름의 적시 생성을 관리하기 위한 클래스가 추가되었습니다.
(Bug #24462978)
-
-
InnoDB: 느린 종료 중에 캐시된 undo 세그먼트가 롤백 세그먼트 히스토리에서 제거되지 않았습니다. (Bug #24450908)
-
InnoDB: 생성된 클러스터형 인덱스(
GEN_CLUST_INDEX)만 있는 테이블에서 테이블 재빌드 작업 중 오류가 발생했을 때, 유효하지 않은 키 이름으로 호출된 오류로 인해 어설션이 발생했습니다. (Bug #24444831) -
InnoDB: MySQL이 GCC 6.1.1로 빌드되지 않았습니다. (Bug #24438752)
-
InnoDB: 서버가 읽기 전용 모드일 때 테이블스페이스 암호화 마스터 키를 회전하면 오류 메시지를 표시하는 대신 어설션이 발생했습니다. (Bug #24404091)
-
InnoDB: 명시적으로 정의된 기본 키가 없는 테이블에서,
NOT NULL컬럼에 고유 키가 정의되었을 때InnoDB가 암시적 클러스터형 인덱스(GEN_CLUST_INDEX)를 대체하지 않았습니다. (Bug #24397406) -
InnoDB:
handler::keys_to_use_for_scanning()이 핸들러 API에서 제거되었습니다. 이 함수는 더 이상 사용되지 않았습니다.HA_READ_ORDER인덱스 플래그는 각 인덱스에 대해 동일한 정보를 제공합니다. (Bug #24364448) -
InnoDB: 페이지 클리너 스레드가 adaptive hash index 기능과 관련된 회귀로 인해 어설션을 발생시켰습니다. (Bug #24346574)
참조: 이 문제는 Bug #21407023의 회귀입니다.
-
InnoDB:
InnoDB가 전체 텍스트 optimizer 스레드에서 사용한 메모리를 해제하지 못했습니다. (Bug #24331265) -
InnoDB: 복구 중
InnoDB가 null 참조를 사용하여 LOB 페이지를 가져오려고 시도했습니다. (Bug #23615208) -
InnoDB: 새 인덱스를 추가할 때 서버가 내부적으로 정의된 외래 키 인덱스를 삭제하고 가상 생성 컬럼에 정의된 보조 인덱스를 외래 키 인덱스로 사용하려고 시도하여 서버 종료가 발생했습니다. 이제
InnoDB는 외래 키 제약 조건이 가상 생성 컬럼에 정의된 보조 인덱스를 참조하는 것을 허용합니다. (Bug #23533396) -
InnoDB:
INFORMATION_SCHEMA.FILES쿼리가 동시에 수행되는 테이블스페이스 생성 작업과의 경합 조건으로 인해 서버 종료를 초래했습니다. (Bug #23477214, Bug #81614) -
InnoDB: 테이블을 다시 빌드하는 in-place
ALTER TABLE작업 중 동시에 수행된 DML 작업이 가상 인덱스를 업데이트하지 않아 가상 인덱스와 클러스터형 인덱스 간 불일치가 발생했습니다. (Bug #23219499) -
InnoDB:
TRUNCATE TABLE작업이 버퍼 풀에서 페이지를 검색하고 제거하는 동안dict_sys뮤텍스를 보유하여, 동시에 수행되는 DDL 작업이 정체되었습니다. 이제 검색 중에는 뮤텍스가 해제되고 검색이 완료되면 다시 획득됩니다. (Bug #23070734, Bug #80060) -
InnoDB: GIS 데이터를 R-tree에 삽입할 때 B-tree 커서를 저장하는 동안 발견된 누락된 페이지 번호 필드로 인해 assertion이 발생했습니다. (Bug #23044098, Bug #80939)
-
InnoDB:
InnoDB내부 임시 테이블에 쓰기 작업을 수행해도Handler_write카운터가 증가하지 않았습니다. (Bug #23024178) -
InnoDB: MySQL 5.7의
InnoDB복구 프로세스 변경으로 인해 복구 중 redo log를 최대 세 번 스캔해야 할 수 있었습니다. 스캔 횟수를 줄이기 위해 첫 번째 스캔과 두 번째 스캔이 병합되었습니다. 이 변경으로, 스캔에 의해 채워지는 redo log 레코드 해시 테이블이 메모리 임계값에 도달하지 않는 한 스캔은 한 번만 수행됩니다. 이 경우 동시 스캔 및 적용을 수행하는 두 번째 스캔이 시작됩니다. (Bug #22963951, Bug #80788) -
InnoDB: 인덱싱된 가상 컬럼이 있는
ROW_FORMAT=REDUNDANT테이블에서 테이블 복사 방식의 온라인ALTER TABLE작업이 assertion을 발생시켰습니다. (Bug #22018745) -
InnoDB: 서버 재시작 후, auto-increment 기본 키가 있는 테이블에 대한 동시
INSERT작업이 중복 항목 오류를 발생시켰습니다.auto_increment_increment및auto_increment_offset설정이 수정된 후 현재 auto-increment 값이 변경되지 않았습니다. (Bug #20989615, Bug #76872) -
InnoDB: Windows에서
InnoDB파일 I/O에 대한 Performance Schema 계측이 비활성화되어 있었습니다. (Bug #14025581) -
InnoDB: 64자 제한을 초과한 자동 생성 외래 키 제약 조건 식별자가
INFORMATION_SCHEMA.TABLE_CONSTRAINTSCONSTRAINT_NAME컬럼에서 잘린 상태로 표시되었습니다. 자동 생성 외래 키 제약 조건 식별자는 더 이상 64자 제한을 초과할 수 없습니다. (Bug #11745347, Bug #13942) -
InnoDB:
row_search_mvcc()함수가 범위 쿼리에 대해 불필요하게 전체 테이블을 순회했으며, 이는 레코드가 트랜잭션 읽기 뷰에 없을 때 발생했습니다. (Bug #84202, Bug #23481444, Bug #25251375) -
Packaging: mysys 라이브러리의 my_create_minidump 함수가 Windows API 함수 MiniDumpWriteDump를 호출할 때 ExceptionParam 매개변수에 잘못된 값(NULL)을 사용했습니다. 이로 인해 minidump 파일에서 예외 정보가 생략되었습니다. (Bug #24505650, Bug #82695)
-
Partitioning: 파티셔닝된 테이블에서 파티션을 삭제하면 해당 테이블의 트리거도 함께 삭제되었습니다. (Bug #24449174)
-
Partitioning: generated 컬럼에 파티셔닝이 있는 테이블의 로우를 업데이트하면 debug 빌드에서 assertion failure가 발생할 수 있었고, nondebug 빌드에서는 잘못된 결과를 반환할 수 있었습니다. (Bug #22574695, Bug #80080)
-
Replication: MySQL 8.0.1은 원래 커밋 타임스탬프 관련 명령문을 추가하지만, 이러한 명령문이 잘못된 버전 번호
80000으로 로그에 기록되었기 때문에 mysqlbinlog는 이러한 명령문이 MySQL 8.0.0부터 존재했다고 잘못 보고했습니다. 수정 사항은 mysqlbinlog 덤프에서 버전을80001로 변경합니다. (Bug #25710507) -
Replication: 슬레이브에서 릴레이 로그 파일을 처리하는 동안 잠금 경합이 바이너리 릴레이 성능을 저해했습니다. (Bug #25321231, Bug #77778)
-
Replication: 클러스터에서 제거된 실패한 노드는 클러스터에 다시 참여할 때 추방될 수 있었습니다. (Bug #25311008)
-
Replication: 멀티스레드 슬레이브를 사용할 때, applier 오류가 Performance Schema 복제 테이블에 외부화된 데이터와 일치하지 않는 worker ID 데이터를 표시했습니다. (Bug #25231367)
-
Replication: MySQL 5.7.17 컴파일이 가변 길이 배열 오류로 실패했습니다. (Bug #25163241, Bug #83994)
-
Replication: row-based replication에서,
utf8mb3컬럼이 있는 테이블에서 해당 컬럼이utf8mb4캐릭터셋으로 정의된 동일한 정의의 테이블로 복제할 때 필드 길이를 잘못 표시하는 메시지가 반환되었습니다. (Bug #25135304, Bug #83918) -
Replication: 마스터 서버의 바이너리 로그가 순환되고 바이너리 로그 파일이 저장되고 있던 파티션에서 디스크가 가득 찬 상태가 발생하면, 서버가 예기치 않게 중지될 수 있었습니다. 이 수정에서는 dump thread가 다음 바이너리 로그 파일로 전환할 때 바이너리 로그의 존재 여부를 확인하는 검사를 추가합니다. 바이너리 로그가 비활성화되어 있으면 현재 활성 로그까지의 모든 바이너리 로그가 슬레이브로 전송되고 receiver thread에 오류가 반환됩니다. (Bug #25076007)
-
Replication: 이전에 실행된 GTID 트랜잭션을 자동으로 건너뛰는 GTID 트랜잭션 건너뛰기 메커니즘이 XA 트랜잭션에 대해 제대로 작동하지 않았습니다. (Bug #25041920)
-
Replication: 릴레이 로그 인덱스 파일이 존재하지 않는 릴레이 로그 파일의 이름을 포함한 경우,
RESET SLAVE ALL이 때때로 정리를 올바르게 완전히 수행하지 못했습니다. (Bug #24901077) -
Replication: MTS 슬레이브 applier가 (주입된) 오류 때문에 중지되었을 때, 문제 해결에 유용한 정보를 보고하지 않았습니다. (Bug #24822686)
-
Replication:
FLUSH BINARY LOGS는 많은 서버에서 복제된 데이터가 있는 경우 느려질 수 있었습니다. (Bug #24806259, Bug #83270) -
Replication: XA 트랜잭션을 사용할 때, 복제 슬레이브의 applier (SQL) 스레드에서 잠금 대기 타임아웃 또는 데드락이 발생한 경우 자동 재시도가 작동하지 않았습니다. 원인은 SQL 스레드가 롤백을 수행하지만, XA 트랜잭션을 롤백하지 않았기 때문입니다. 이는 트랜잭션이 재시도될 때 첫 번째 이벤트가
XA START였음을 의미하며, XA 트랜잭션이 이미 진행 중이었기 때문에 이는 유효하지 않아XAER_RMFAIL오류로 이어졌습니다. (Bug #24764800)참조: 함께 참조하십시오: Bug #83588, Bug #24923091, Bug #24966941.
-
Replication: 바이너리 로깅이 비활성화된 경우 부분적으로 실패한
CREATE USER,RENAME USER, 또는ALTER USER문이 자동 생성되었거나 지정된 GTID를 올바르게 소비하지 않았습니다. (Bug #24693798) -
Replication: 바이너리 로그의 이벤트를 패킷 버퍼에 기록한 다음 해당 패킷을 슬레이브로 보내는
Binlog_sender가 예상대로 전송 버퍼의 크기를 줄이지 않았습니다. (Bug #24643036) -
Replication: 많은 소규모 트랜잭션이 있는 워크로드에서 성능을 개선하기 위해 GTID의 그룹 커밋 업데이트가 리팩터링되었습니다. (Bug #24398760)
-
Replication: 구성 파일에
relay_log옵션이 지정되지 않은 경우,relay_log_basename변수는 내부적으로hostname을 사용해 즉석에서 구성되고 있었지만relay_log_basename변수는 설정되지 않았습니다. 슬레이브가 이 초기화되지 않은 변수에 접근하려고 하면 서버가 예기치 않게 중단되었습니다. (Bug #24352667) -
Replication: 멀티스레드 슬레이브(
slave_parallel_workers가 0보다 큼)를 사용할 때 릴레이 로그를 로테이션하면Seconds_Behind_Master값이 올바르지 않았습니다. (Bug #23532304) -
Replication: 중간 단계에서 실패한
XA PREPARE문은 일관되지 않은XA트랜잭션 상태로 이어질 수 있었으며, 이 상태에서는ID= -1이지만binlogged플래그가true로 설정되었습니다. 이로 인해XA COMMIT및XA ROLLBACK쿼리를 실행하는 동안 assert가 발생했습니다. (Bug #22915670) -
복제: 서버는
read_only시스템 변수가 활성화된 경우 여러 복제 관련 관리 문이 작동하지 못하게 했습니다. (Bug #22857926, Bug #25363745, Bug #25326058, Bug #84350, Bug #84437) -
복제: 존재하지 않는 채널에 대한
CHANGE MASTER TO가 assertion을 발생시킬 수 있었습니다. (Bug #22255698) -
복제:
binlog_group_commit_sync_delay시스템 변수로 지정된 지연이 너무 많은 바이너리 로그 커밋 그룹에 적용되었습니다. (Bug #21420180) -
복제: 슬레이브로 복제되는 바이너리 로그 파일에 대해 생성되던 원치 않는 fseek 횟수가 줄어들었습니다. (Bug #83226, Bug #24763579)
-
복제: Bug #81657에 대한 수정 사항이 MySQL 8.0에 올바르게 병합되지 않았습니다. 이를 알려 준 Laurynas Biveinis에게 감사드립니다. (Bug #83124, Bug #24715790)
-
복제:
rpl.rpl_binlog_errors테스트가 Windows에서 간헐적으로 실패했습니다. (Bug #82302, Bug #24330138) -
Replication:
binlog_group_commit_sync_delay가 1에서 9 사이의 값으로 설정되었을 때,binlog_group_commit_sync_no_delay_count가 1보다 큰 값으로 설정되고 트랜잭션 커밋 수가binlog_group_commit_sync_no_delay_count보다 적으면, 더 이상 커밋이 수신되지 않는 경우 이러한 커밋이 영원히 중단되었습니다. 또한binlog_group_commit_sync_no_delay_count가 0으로 설정되면 모든 트랜잭션 커밋이 영원히 중단되었습니다. (Bug #80652, Bug #22891628) -
Replication: 동시에 실행되는
CREATE TRIGGER및DROP TRIGGER문이 올바른 순서로 바이너리 로그에 기록되지 않아 슬레이브가 실패했습니다. (Bug #77095, Bug #21114768) -
Group Replication; Microsoft Windows: Windows 플랫폼에서 Group Replication 플러그인이 컴파일될 때 발생하던 불필요한 경고를 제거했습니다. (Bug #25119288)
-
Group Replication; Microsoft Windows: Windows에서 Group Replication 지원을 빌드하려면 이제 CMake 버전 2.8.12 이상이 필요합니다. (Bug #24964522)
-
Group Replication: 오류가
ER_GROUP_REPLICATION_CONFIGURATION일 때STOP GROUP_REPLICATION명령을 실행하면 group replication 멤버의MEMBER_STATE가ERROR에서OFFLINE으로 변경되지 않았습니다. (Bug #25674926) -
Group Replication: 흐름 제어가 활성화된 상태에서 최소 흐름 제어 할당량 1에 도달하면, throttling의 이유가 더 이상 유효하지 않은 경우에도 Group Replication이 throttling을 중지하지 않았습니다. (Bug #25461354)
-
Group Replication:
group_replication_group_seeds에 확인할 수 없는 호스트 이름을 사용하면START GROUP_REPLICATION이 실패했습니다. 이 수정으로 Group Replication을 시작할 때group_replication_group_seeds의 호스트 이름이 검증되고, 목록에 하나 이상의 유효한 주소가 포함되도록 보장합니다. 유효하지 않은 주소는 무시됩니다. (Bug #25460324, Bug #84674) -
Group Replication: Group Replication 플러그인 설치로 생성된
_gr_user계정이 플러그인 제거 시 안정적으로 제거되지 않았습니다. (Bug #25298987) -
Group Replication: 오프라인 노드에서 Group Replication을 시작할 때, 해당 노드가 복제용으로 설정될 수는 있었지만 복구할 수 없는 경우가 있었습니다. (Bug #25256910)
-
Group Replication: Group Replication GCS가 그룹의 비활성 멤버에서 온 메시지를 폐기하지 않았습니다. (Bug #25134074)
-
Group Replication: Group Replication 플러그인이 더 이상 가능하지 않은 서버 접촉을 시도하여 assertion이 발생했습니다. (Bug #25071492)
Replication 플러그인" for consistency. When dealing with "view delivery," it likely translates to "뷰 전달" since "view" is treated as such. Lastly, I'll correct "32-built build" to "32비트 빌드" to preserve the meaning. I want to keep everything final and without extra details.Finalizing translation terms
-
Group Replication: Group Replication applier SQL thread에서 재시작을 실행한 후, 플러그인이 더 이상 해당 스레드의 실패를 감지할 수 없었습니다. (Bug #24969065)
-
Group Replication: Group Replication 플러그인을 활성화하면
performance_schema_max_mutex_classes기본값 200을 초과했습니다. 그 결과 일부 Group Replication mutex instrument가performance_schema.setup_instruments테이블에 나타나지 않았습니다. (Bug #24746530) -
Group Replication: yaSSL로 빌드된 서버의 경우, 암호화된 연결과 함께 Group Replication을 사용하면 뷰 전달을 기다리는 중 timeout 실패가 발생할 수 있었습니다. (Bug #23592214)
-
Microsoft Windows: Windows에서
db_name이 대문자로 지정된 경우SHOW TABLES FROM db_name이 중단되었습니다. (Bug #24800048, Bug #83262) -
Microsoft Windows: 32비트 빌드는 더 이상 Windows에서 지원되지 않지만,
CMake가 32비트 빌드가 시도되는 경우를 감지하지 못하여 나중에 컴파일 오류가 발생했습니다. 이제CMake는 32비트 빌드 시도를 감지하고 적절한 오류 메시지를 생성합니다. (Bug #24487483, Bug #82645) -
Solaris:
WITH_INNODB_MEMCACHEDCMake 옵션이 활성화된 경우, 이제 Developer Studio 12.5 컴파일러를 사용하여 Solaris 11 및 12에서 memcached를 빌드할 수 있습니다. (Bug #24504155, Bug #82692) -
Solaris: Solaris에서 라이브러리 검색 경로 처리가 올바르지 않았습니다. (Bug #24487934, Bug #82646)
-
Solaris: 시스템 런타임 라이브러리에 대한 의존성 때문에, 이제 Solaris의 최소 요구 버전은 Solaris 11 update 3입니다.
-
Solaris: Solaris에서 MySQL은 이제 gcc 대신 Developer Studio 12.5로 빌드됩니다. 바이너리를 사용하려면 Developer Studio C/C++ 런타임 라이브러리가 설치되어 있어야 합니다. 라이브러리만 설치하는 방법은 다음을 참조하십시오:
https://docs.oracle.com/cd/E60778_01/html/E60743/gozsu.html -
JSON:
JSON값이 여러 수준의 JSON 배열, 객체 또는 둘 다로 감싸진 큰 하위 문서로 구성된 경우,JSON값의 직렬화를 완료하는 데 때때로 과도한 시간이 필요했습니다. (Bug #23031146) -
JSON:
NULL값이JSON컬럼에 있을 때,ORDER BY절과 함께GROUP_CONCAT()를 사용하는 쿼리의 결과가 항상 올바르지는 않았습니다. (Bug #22992666) -
JSON: 내부
rapid_json_handler는 부분적으로 빌드된 DOM을 나타내기 위해 자체 데이터 구조를 사용했으며, 결과를 반환하기 전에 이를Json_dom그래프로 변환해야 했습니다. 이제 이 핸들러는 그래프를 직접 빌드하므로, 그래프를 빌드하는 데 필요한 작업량이 줄어들고, 따라서 JSON 문서를 파싱하는 데 필요한 작업량도 줄어듭니다. (Bug #22900110) -
JSON: 내부 함수
Item_func_case::val_json()는CASE표현식이NULL로 평가될 때 null 값 플래그를 항상 예상대로 설정하지 않았으며, 이로 인해 서버의 디버그 빌드에서 assertion이 발생했습니다. (Bug #22887227) -
JSON:
SUM()함수가 JSON 문서에서 추출한 decimal 값을 잘라내어 정수 결과를 생성했습니다. (Bug #84935, Bug #25530204) -
JSON: double로 표현할 수 있는 최댓값보다 약간 큰 double 값을 포함하는 JSON 문서가 해당 값을 거부하고 오류를 발생시키는 대신, 아무 알림 없이 이를 0으로 대체했습니다. 이제 이러한 값은 MySQL JSON 문서에서 올바르게 처리됩니다.
근본적인 문제는 RapidJSON의 문제로 추적되었으며, 이 라이브러리의 개발자에게 Issue #849로 보고되었습니다. (Bug #84891, Bug #25518504)
-
JSON:
JSON_SEARCH()및JSON_CONTAINS_PATH()함수는one_or_all인수가 UTF-16 인코딩을 사용하여 지정된 경우 작동하지 않았습니다. 이 두 함수 모두에 대해, 이제 이 인수는 해당 값이 검사되기 전에 필요한 경우utfmb4로 변환됩니다. (Bug #84880, Bug #22516960) -
JSON:
JSON_UNQUOTE()함수는 UTF-16 인코딩을 사용한 문자열에서 작동하지 않았습니다. 이제 이러한 문자열은 처리되기 전에 내부적으로utfmb4로 변환됩니다. (Bug #84878, Bug #25516881) -
JSON: 단일 문에서 동일한
JSON컬럼을 업데이트하면 잘못된 값이 테이블에 기록될 수 있었습니다. 이는 두 번째 업데이트가 컬럼 값을 그 자체의 부분 집합으로 덮어쓸 때 발생했습니다. 이러한 문의 예는 다음과 같습니다:UPDATE t SET col = JSON_ARRAY(value), col = col->'$[0]';(Bug #84694, Bug #25461627)
-
JSON:
JSON_QUOTE()및JSON_UNQUOTE()함수가utf8mb4와 같은 멀티바이트 캐릭터셋에서 올바르게 작동하지 않았습니다. (Bug #84680, Bug #25455065)참조: 다음도 참조하십시오: Bug #77234, Bug #21193273.
-
JSON: Error 3152
ER_JSON_USED_AS_KEY의 오류 메시지가 JSON column '%s' cannot be used in key specification에서 덜 혼동되고 더 정확한 JSON column '%s' supports indexing only via generated columns on a specified JSON path로 변경되었습니다. (Bug #81364, Bug #23274244) -
JSON: MySQL JSON 기능에 대한 내부 테스트가 디버그가 활성화된 서버를 대상으로 실행될 때 일부 플랫폼에서 스택 공간을 모두 사용했습니다. 스택 사용량에 대한 적시 검사가 수행되지 않았기 때문에 서버가 이 상황을 감지하지 못했으며, 이로 인해 서버가 종료되었습니다.
이 문제에 대한 수정 사항은 두 가지입니다:
- 중첩 배열 또는 객체를 직렬화하려고 시도하기 전에 이제 스택 오버런 검사가 수행되므로, 깊게 중첩된 JSON 문서를 처리할 때 종료를 유발하는 대신 작업이 정상적으로 실패합니다.
- JSON 문서의 직렬화가 재구성되어 최적화 없이 컴파일될 때 스택 사용량이 더 적게 필요합니다.
(Bug #81083, Bug #23106330, Bug #26399306)
-
BIN()은UNION내에서 사용될 때 멀티바이트 캐릭터셋에서 잘못된 잘림을 생성할 수 있었습니다. (Bug #27511490, Bug #89581) -
MySQL은 GCC 7로 컴파일되지 않았습니다. (Bug #25643811, Bug #26825211)
-
(문서화되지 않은)
WINDOWS_RUNTIME_MDCMake 옵션이 제거되었습니다. (Bug #25611359) -
--skip-innodb또는 그 변형 중 하나를 사용한 경우,avoid_temporal_upgrade에 대한 불필요한 경고가 생성되었습니다. (Bug #25573578) -
mysqld_safe는
PID_FILE.shutdown파일이 있는 경우 서버를 다시 시작하지 못했습니다. (Bug #25572504)참고: 이 문제는 다음의 회귀입니다: Bug #11751149.
-
Debian/Ubuntu 패키지의 경우, 사용자 정의 콜레이션 파일이 MySQL 업그레이드 중 덮어써질 수 있었습니다. 이제 캐릭터셋 파일은 conffiles로 표시되므로, 사용자 지정 사항이 있는 경우 업그레이드 중 이를 덮어쓸지 여부를 묻는 프롬프트가 생성됩니다. (Bug #25525628, Bug #84761)
-
데이터베이스 한정자를 사용하여 테이블 이름을 지정하고
DATA DIRECTORY또는INDEX DIRECTORY옵션을 포함한CREATE TABLE문에서, 기본 데이터베이스가 없으면 오류가 발생했습니다. (Bug #25514146, Bug #84861) -
mysql.foreign_keys데이터 딕셔너리 테이블의referenced_table_schema및referenced_table_name필드 값은lower_case_table_names가 활성화된 경우 소문자로 저장되지 않았습니다. (Bug #25495714) -
performance_schema_digests_size=1로 서버를 시작하면 비정상 종료가 발생했습니다. (Bug #25492129, Bug #84786) -
yaSSL에 링크된 클라이언트의 경우, 읽기를 재시도하는 대신 읽기 타임아웃이 발생하면 연결이 유효하지 않게 되었습니다. (Bug #25444075)
-
서로 다른 디렉터리에서 MySQL을 컴파일하면 절대 경로가 디버그 정보와
__FILE__에 누출되어 서로 다른 빌드가 생성되었습니다. (Bug #25436469, Bug #84608, Bug #25859274, Bug #85855) -
contraction 문자를 포함하는 tailoring 규칙에 대해 UCA 9.0.0 콜레이션 계산이 비효율적이었습니다. (Bug #25426632, Bug #84577, Bug #25426632, Bug #84577)
-
음수 내부 연결 타임아웃 값으로 인해 연결이 유휴 상태가 되고 중단되었습니다. 이제 음수 값은 I/O가 없는 경우 연결이 무기한 차단되도록 합니다. (Bug #25408557)
-
mutex Performance Schema 이름이 너무 길어 서버 시작 시 경고가 생성되었습니다. (Bug #25406915)
-
일부 플랫폼에서
-DWITH_LIBWRAP=ON을 사용하면 MySQL 컴파일에 실패했습니다. 이제 CMake 지원은tcpd.h에 적절한 함수 프로토타입이 있는지 확인합니다. (Bug #25395543, Bug #84495) -
인스턴스가
innodb_page_size=4k로 초기화되었을 때 데이터 딕셔너리 테이블 컬럼에 정의된 인덱스가 최대 인덱스 키 길이를 초과했습니다. (Bug #25384527) -
mysqld_safe가
--basedir옵션으로 명명된 디렉터리가 존재하는지 확인하지 않았습니다. (Bug #25365194) -
CMake를
-G ninja로 설정하면 Xcode 또는 Visual Studio 이외의 빌드 플랫폼에 적합하지 않은 빌드 출력이 생성되었습니다. (Bug #25358460) -
--log-error옵션으로 명명된 오류 로그 파일이 FIFO인 경우 mysqld_safe가 실패했습니다. (Bug #25356221, Bug #84427) -
prepared statement의 경우, subquery 또는 derived table 내부의 별칭이 다른 별칭이 그것에 의존하는 경우 statement 실행 중 잘못된 동작을 유발할 수 있었습니다. (Bug #25343335, Bug #84398, Bug #25171608)
-
--datadir옵션 값이/문자로 끝나는 경우 mysqld_safe가 실패할 수 있었습니다. (Bug #25319457) -
mysqld_safe에 대한 최근 변경으로 인해, 기본 디렉터리가 컴파일 시 내장된 기본 절대 경로와 다른 절대 경로로 지정된 경우 mysql.server 스크립트가 이를 시작할 수 없었습니다. (Bug #25319392, Bug #84263)
-
Performance Schema가 비활성화된 경우
CONNECTION_CONTROL플러그인이 컴파일에 실패했습니다. (Bug #25308357, Bug #84304) -
MySQL Workbench를 사용하여 생성한 계정의 비밀번호가 올바르게 만료되지 않았습니다. (Bug #25299309)
-
RPM용 System V init 스크립트에서
[mysqld]옵션 파일 섹션이pid-file같은 일부 옵션에 대해 무시되고 있었습니다. (Bug #25287707, Bug #84172) -
기본값이 아닌 베이스 디렉터리를 사용한 경우 init 스크립트가 mysqld_safe를 실행하지 못했습니다. (Bug #25261472, Bug #84219)
-
이제
CMake는 GCC 5.3.0 루프 최적화 버그가 발생하는지 감지하고, 발생하는 경우 우회 방법을 시도합니다. (Bug #25253540) -
mysqld_safe --no-defaults가 동작하지 않았습니다(이전 버그 수정의 의도하지 않은 결과). (Bug #25244898, Bug #84173)
-
문장 내부 또는 문장 사이의 세미콜론(
;) 문자가 동일한 문장에서 서로 다른 다이제스트가 생성되도록 할 수 있었습니다. (Bug #25244533, Bug #83253) -
컴포넌트가 해당 private 구현을 참조하지 않고는 서비스를 등록할 수 없었습니다. 이제
SERVICE_IMPLEMENTATION(component,service)매크로를 사용하여 이를 피할 수 있습니다. (Bug #25238906) -
특정 저장 함수가 쿼리
WHERE절에서 사용된 경우 Index Condition Pushdown을 사용하여 처리될 수 있었으며(발생해서는 안 되는 동작), 그 결과 서버가 종료되었습니다. (Bug #25196653, Bug #25174454) -
Unicode Collation Algorithm 9.0.0 기반
ai_ci콜레이션의 경우, 비교 결과가 동일한 악센트 문자가LIKE비교에서 서로 다른 것으로 처리되었습니다. (Bug #25167284, Bug #83999) -
libmysqlclient에 링크된 클라이언트의 경우, 준비된 문을 사용하는 동안 잘못된 메모리 접근이 발생할 수 있었습니다. (Bug #25164932) -
일부 Linux 시작 스크립트가
datadir설정을 올바르게 처리하지 않았습니다. (Bug #25159791) -
파티셔닝된 테이블의 컬럼에 캐릭터셋이 지정된 경우, 업그레이드 중에 세그멘테이션 폴트가 발생할 수 있었습니다. (Bug #25153261)
-
LOAD DATA가 이스케이프 시퀀스 뒤에 오는 멀티바이트 문자를 허용하지 못했습니다. (Bug #25147988, Bug #83950, Bug #25865525) -
Bug #25088048에 대한 수정으로 인해 mysqld_safe가 MySQL 서버를 시작하는 데 사용하는 명령에 더 이상 mysqld 경로가 포함되지 않았습니다. (Bug #25144379)
참조: 이 문제는 다음의 회귀입니다: Bug #25088048.
-
UCA 콜레이션의 경우, 이스케이프 문자로 끝나는 패턴에 대한
LIKE비교가 잘못된 결과를 반환했습니다. (Bug #25140629, Bug #83930) -
MySQL 5.7에서 MySQL 8.0으로 스키마를 업그레이드할 때
db.opt파일에 정의된 캐릭터셋 및 콜레이션 대신 기본 캐릭터셋 및 콜레이션이 사용되었습니다. (Bug #25139901) -
별도의 함수 호출을 사용하여 DDL 문 끝에서 데이터 딕셔너리 캐시를 업데이트하는 대신, 이제 데이터 딕셔너리 캐시는 트랜잭션 커밋의 일부로 업데이트됩니다. (Bug #25095798, Bug #83818)
-
이제
CREATE TABLE은DATA DIRECTORY또는INDEX DIRECTORY가 테이블 또는 파티션 옵션으로 명시적으로 지정된 경우FILE권한을 필요로 합니다.ALTER TABLE은 두 옵션 중 하나가 파티션 옵션으로 명시적으로 지정된 경우FILE권한을 필요로 합니다(테이블 옵션으로 지정된 경우에는 이를 무시합니다). (Bug #25092566) -
헝가리어 축약 및 합자에 대해 ICU 순서와 MySQL 유니코드 콜레이션 사이에 일부 차이가 있었습니다. 이제 MySQL은 ICU 순서를 따릅니다. (Bug #25090543)
-
바이너리 콜레이션을 사용할 때 데이터 딕셔너리가 초기화 및 시작에 실패했습니다. 데이터 딕셔너리 스키마를 생성하기 위해 생성된 쿼리 문자열이 바이너리 콜레이션 이름에 따옴표를 추가하지 않았습니다. (Bug #25054104, Bug #83706)
-
뷰에 접근하는 쿼리가 포함된 저장 프로시저를 실행하면 세션이 종료될 때까지 해제되지 않는 메모리가 할당될 수 있었습니다. (Bug #25053286)
-
FreeBSD 11에서 컴파일할 때 더 이상 정의되지 않는
MAP_NORESERVE를 확인하려고 하면서 실패했습니다. (Bug #25048128, Bug #83689) -
이제 mysql-test-run.pl은
TSAN_OPTIONS환경 변수가 설정되어 있는지 확인합니다. 설정되어 있으면 해당 값은 ThreadSanitizer 억제 항목(테스트 실행 중 무시할 오류)이 포함된 파일의 경로 이름으로 사용됩니다. 또한 이제--sanitize옵션은 mysql-test-run.pl이 서버 오류 로그에서 ThreadSanizer 메시지를 스캔하도록 합니다. (Bug #24970905, Bug #83601) -
0이 아닌
--lower-case-table-names설정으로 서버를 시작한 후, 첫 번째 클라이언트의 첫 번째 명령이USE INFORMATION_SCHEMA;이면 assertion이 발생했습니다. (Bug #24963580) -
case-insensitive 유니코드 콜레이션의 경우, 다양한 공백 문자가 같은 값으로 해시되지 않아 이들 간 비교가 올바르지 않게 수행되었습니다. (Bug #24956750, Bug #83549)
-
딕셔너리 클라이언트는 이제 DDL 문으로 수정 중인 커밋되지 않은 딕셔너리 객체를 추적하므로, 커밋 시점 전에 딕셔너리 객체 캐시에 영향을 주지 않으면서 같은 세션의 커밋되지 않은 변경 사항이 딕셔너리 클라이언트에 표시됩니다. (Bug #24956365, Bug #83548)
-
동시에 발생하는 딕셔너리 객체 캐시 미스가 올바르게 처리되지 않았습니다. 한 스레드가 검색한 객체가 대기 중인 스레드가 해당 객체에 접근을 시도하기 전에 캐시에서 제거될 수 있었습니다. (Bug #24949179)
-
이제
CMake는 해당 옵션이 잘못된 shift-or 최적화를 트리거하는 GCC 버전에 대해-fexpensive-optimizations옵션 설정을 피합니다. (Bug #24947597, Bug #83517) -
Developer Studio 12.5에서
-std=c++03옵션을 사용하여 컴파일하기 위한CMake지원이 추가되었습니다. 이제 기본적으로stlport가 아니라 이것이 사용됩니다. (Bug #24947136, Bug #83512, Bug #25229424) -
NCHAR와NATIONAL CHAR는 동의어이지만,CAST(expr AS NCHAR)는 성공한 반면,CAST(expr AS NATIONAL CHAR)는 성공하지 않았습니다. 이제 둘 다 작동합니다. (Bug #24934161) -
이제 OEL RPM 패키지는 어떤 플랫폼에 multilib 지원(32비트 및 64비트 라이브러리를 설치할 수 있는 지원)이 있는지 더 잘 감지합니다. 패치를 제공해 준 Alexey Kopytov에게 감사드립니다. (Bug #24925181, Bug #83457)
-
OEL RPM 패키지는 이제 multilib 지원(32비트 및 64비트 라이브러리를 설치할 수 있음)이 없는 플랫폼을 더 잘 감지합니다. 패치를 제공한 Alexey Kopytov에게 감사드립니다. (Bug #24916428, Bug #83428)
-
LOCATE()함수는substr또는str인수가NULL이면NULL을 반환했지만,pos인수가NULL인 경우에는 그렇지 않았습니다. 이제 인수 중 하나라도NULL이면NULL을 반환합니다. (Bug #24911350, Bug #83427) -
인수의 null 허용 여부가 잘못 처리되면 비트 연산으로 인해 서버 종료가 발생할 수 있었습니다. (Bug #24910958, Bug #24930038, Bug #24930829)
-
Block Nested Loop 알고리즘은 쿼리 실행 중에 너무 많은 메모리를 할당할 수 있었습니다. (Bug #24909223)
-
MySQL 5.7 이상
.spec파일에서 MySQL 5.6 호환성 라이브러리를 빌드하는 방법에 대한 정보는libmysqlclient및libmysqld를 빌드하는 경우에만 필요합니다.InnoDBmemcached 플러그인을 빌드하는 방법에 대한 정보가 제거되었습니다. (Bug #24908345, Bug #83409) -
뷰 메타데이터의 잘못된 업데이트로 인해 assertion이 발생할 수 있었습니다. (Bug #24834622)
-
okvclient.ora설정 파일에STANDBY_SERVER설정이 없으면keyring_okv플러그인의 초기화가 실패하여, 사실상 이 설정이 필수 설정이 되었습니다. 이제STANDBY_SERVER는 선택 사항입니다. (Bug #24816271) -
Dictionary_client::acquire_uncached()로 획득한 데이터 딕셔너리 객체는 이제 호출자 대신 현재 auto-releaser가 소유합니다. 또한TABLE_SHARE뷰 객체의 획득은acquire_uncached()대신acquire()및clone()으로 수행됩니다. (Bug #24813358, Bug #83296) -
저장 프로시저 또는 뷰 객체 내에서 호출된 다중 테이블
UPDATE안에서 사용된 파생 테이블에 대한 권한 검사가, 해당 파생 테이블이 외부 쿼리로 병합된 경우 그 객체의 두 번째 또는 이후 실행에서 올바르지 않을 수 있었습니다. (Bug #24810564) -
Created_tmp_tables상태 변수는 임시 테이블이 생성되지 않은 일부 경우에도 증가했습니다. (Bug #24808970, Bug #83287) -
저장 루틴을 마이그레이션하는 동안 저장 루틴 본문 파싱에 실패하면 MySQL 5.7에서 MySQL 8.0으로의 인플레이스 업그레이드가 실패했습니다. 이제 경고가 보고되고, 루틴은 본문을 파싱하지 않고 생성됩니다. 또한 뷰 마이그레이션 중 뷰에 대한 의존성 해석이 실패할 때도 이제 경고가 보고됩니다. (Bug #24805140, Bug #83275)
-
컴파일 시 mysql_upgrade는 동적으로 생성되는
sql_commands_system_tables_data_fix.h파일에 의존하지만, 누락된 의존성 때문에 해당 파일이 생성되지 않을 수 있었습니다. (Bug #24802377, Bug #83272) -
액세스 제어 목록(ACL) 캐시에 접근하는 트랜잭션과
INFORMATION_SCHEMA테이블을 채우기 위해 ACL 캐시를 사용하는 작업 사이의 경쟁 조건으로 인해 서버가 종료될 수 있었습니다. (Bug #24786029) -
디버그 빌드의 경우, 허용되는 최대 길이보다 긴 데이터베이스 또는 테이블 이름을 가진 테이블에 대해
EXPLAIN또는DESCRIBE를 실행하면 적절한 오류를 표시하는 대신 assertion이 발생했습니다. (Bug #24751177, Bug #83114) -
여러
INFORMATION_SCHEMA테이블을 데이터 딕셔너리 테이블에 대한 뷰로 구현하면서 서버의 내부 사용만을 위한 여러 네이티브 SQL 함수가 도입되었지만, 사용자가 이를 호출할 수 있었습니다. 이제 이러한 함수는 사용자가 호출하는 경우 오류를 생성합니다. (Bug #24749248, Bug #83189) -
CASE,COALESCE(),IF()및IFNULL()이 signed 인수와 unsigned 인수가 섞인 항목을 잘못 병합하여 잘못된 결과 타입을 생성할 수 있었습니다. (Bug #24733658, Bug #83148) -
SSL이 활성화된 서버에 대한 클라이언트의 연결은
--ssl-mode값이VERIFY_CA또는VERIFY_IDENTITY이고 클라이언트가 CA 인증서를 제공하지 않은 경우에도 성공했습니다. (Bug #24732452, Bug #23189252, Bug #25397416, Bug #84508) -
데이터 디렉터리에 디렉터리를 수동으로 생성하면, 해당 디렉터리가 데이터 딕셔너리에 데이터베이스로 등록되어 있지 않더라도
USE dir_name이 성공했습니다. (Bug #24732194, Bug #83140) -
InnoDB통계가 올바르지 않은 경우, 이전SELECT가 로우를 반환하지 않았더라도FOUND_ROWS()가 1을 반환할 수 있었습니다. (Bug #24714857, Bug #83110) -
같은 이름의 비임시 테이블이 존재하는 경우, 임시 테이블에 대한
ALTER TABLE이 어설션을 발생시킬 수 있었습니다. (Bug #24713918, Bug #83117) -
이제 CMake는 가능한 경우 Debian 플랫폼에 대해
-DWITH_NUMA=ON을 설정합니다. (Bug #24689101) -
원자적 파일 생성을 더 잘 제공하기 위해, 이제 Debian 패키징 스크립트는 touch, chmod, chown 대신 coreutils install 명령을 사용합니다. (Bug #24688682)
-
DISABLE_SHAREDCMake 옵션을 활성화하면 컴파일 실패가 발생했습니다. (Bug #24687701, Bug #83039)참조: 이 문제는 다음의 회귀 문제입니다: Bug #24481181.
-
BIN(),OCT(),HEX()함수가BIT데이터 타입의 값을 잘못 처리할 수 있었습니다. (Bug #24686658, Bug #83031) -
디버그 빌드의 경우
CREATE EVENT또는ALTER EVENT문장의 주석에 있는 잘못된utf8문자가 어설션을 발생시켰습니다. 이제 이는ER_INVALID_CHARACTER_STRING오류를 생성합니다. (Bug #24679962) -
utf8캐릭터셋의 인코딩은 U+D800과 U+DFFF 사이의 문자를 유효한 것으로 허용했지만, 이 범위는 서로게이트 쌍을 위해 예약되어 있으며 문자를 직접 나타내지 않습니다. 이제 이들은 유효하지 않은 것으로 간주됩니다. (Bug #24672415) -
WHERE절에 종속 서브쿼리가 포함되어 있고, 테이블에 select 목록의 컬럼 뒤에 서브쿼리의 컬럼이 이어지는 보조 인덱스가 있으며,GROUP BY또는DISTINCT가 쿼리에서 Loose Index Scan을 사용할 수 있게 하는 경우, 쿼리가 잘못된 결과를 생성할 수 있었습니다. (Bug #24671968, Bug #83005) -
외래 키가 있는 테이블에 대한
RENAME TABLE작업 후, 생성된 제약 조건 이름이TABLE_CONSTRAINTS에서 업데이트되지 않았습니다. (Bug #24666169) -
macOS에서
CMakeAddressSanitizer 지원이 작동하지 않았습니다. (Bug #24661626, Bug #82976)참조: 이 문제는 다음의 회귀입니다: Bug #23759968.
-
Xcode 8.0을 사용하는 macOS 10.11에서 컴파일이 실패했습니다. (Bug #24661523, Bug #82975)
-
보이지 않는 인덱스에 적용된 인덱스 힌트가 오류를 생성하지 않았습니다. (Bug #24660093, Bug #82960)
-
일부 경우에
INFORMATION_SCHEMA.KEY_COLUMN_USAGE가 모든 외래 키 제약 조건에 대한 데이터를 보고하지 않았습니다. (Bug #24655803, Bug #82961) -
큰 문자열에 대한
REPLACE()가 느리고 종료할 수 없을 수 있었습니다. (Bug #24652792) -
DebugPrintTest및DebugPrintDeathTest단위 테스트가 Aarch64 플랫폼에서 0으로 나누기 테스트를 제대로 처리하지 않았습니다. 패치를 제공해 주신 Alexey Kopytov님께 감사드립니다. (Bug #24624555, Bug #82889) -
GCC 6을 사용한 FreeBSD에서의 컴파일이 작동하지 않았습니다. (Bug #24619561, Bug #82922)
-
최근 MySQL 릴리스에서 mysqld_safe에 적용된 변경으로 인해
--ledir,--mysqld,--mysqld-version옵션은 명령줄에 지정해야 하며, 더 이상 옵션 파일에 지정할 수 없습니다. 이로 인해 mysqld_safe를 호출하는 init 스크립트가 실패할 수 있었습니다. 이제 이러한 스크립트는MYSQLD_OPTS환경 변수의 값을 mysqld_safe의 첫 번째 명령줄 인수로 전달하며, 이 값은 필요할 수 있는 명령줄 전용 mysqld_safe 옵션 값으로 설정됩니다. systemd를 사용하는 플랫폼에서는 다음과 같은 줄을 사용하여/etc/sysconfig/mysqld에서MYSQLD_OPTS값을 설정할 수 있습니다:MYSQLD_OPTS=" --ledir=/mysqld_ledir --mysqld=my_wrapper "MYSQLD_OPTS값에는 mysqld_safe가 mysqld에 전달할 mysqld 옵션도 포함될 수 있습니다. (Bug #24619033, Bug #82920)참조: 이 문제는 다음 버그의 회귀입니다: Bug #24464380, Bug #24483092, Bug #25088048, Bug #25378439, Bug #25378565.
-
SET PERSIST innodb_buffer_pool_size = value는innodb_buffer_pool_size의 새 값이 아니라 원래 값을mysqld-auto.cnf에 저장했습니다. (Bug #24613005, Bug #82905) -
SLES 패키지의 경우, 설치 스크립트 postamble의 오타로 인해 일부 정리 작업이 수행되지 않았습니다. (Bug #24605300, Bug #82389)
-
데이터 디렉터리를 업그레이드하는 동안 서버가 에러 로그에 기록한 일부 메시지에 표준 타임스탬프 및 프로세스 ID 정보가 누락되었습니다. (Bug #24600054, Bug #82874)
-
Last_query_cost및Last_query_partial_plans상태 변수의 세션 값이 초기화되기 전에 접근될 수 있었습니다. (Bug #24596263) -
CREATE TABLE... SELECT중에 발생한 경고로 인해 서버가 종료될 수 있었습니다. (Bug #24595992) -
업데이트 가능한 뷰에 데이터를 삽입하는 데 사용된
LOAD DATA의 경우, 컬럼이 실제로 업데이트 가능한지 확인하는 검사가 누락되었습니다. (Bug #24595937) -
결정적 함수가 서브쿼리에서
LONGTEXT를 반환하는 데 사용된 경우 서버가 null 포인터를 역참조할 수 있었습니다. (Bug #24595581) -
ALTER VIEW로 변경된 뷰는 해당 구문이 오류로 실패한 경우 삭제될 수 있었습니다. (Bug #24594140) -
JSON문서를 문자열로 변환하는 작업은 문서가 크고 부호 있는 정수를 많이 포함하는 경우 느릴 수 있었습니다. (Bug #24586888) -
데이터 딕셔너리는 임시 테이블(
#sql로 시작하는 이름)에 대한 엔트리를 포함할 수 있습니다. 이러한 테이블이INFORMATION_SCHEMA쿼리와SHOW구문을 통해 노출되었습니다. 이로 인해 mysqldump 및 mysqlpump가 이러한 테이블을 덤프하려고 할 때 실패할 수 있었습니다. 이제 임시 테이블은INFORMATION_SCHEMA쿼리와SHOW구문에서 숨겨집니다. (Bug #24580599, Bug #24571427) -
뷰가 정의될 때 해당 정의의 캐릭터셋이 고려되지 않았습니다. 이 캐릭터셋이 기본 캐릭터셋과 다른 경우, 뷰에서 사용된 테이블 이름이 인식되지 않아 뷰가 유효하지 않은 것으로 표시될 수 있었습니다.
디버그 빌드의 경우,
ALTER VIEW구문을 파싱하는 동안 오류가 발생하고 진단 영역이 비어 있으면 어설션이 발생할 수 있었습니다. (Bug #24580586) -
LOAD DATA문에서 컬럼 값이 너무 많은 입력 데이터는 MySQL 5.6에서처럼 오류가 아니라 경고만 생성했습니다. 이제 오류가 발생합니다. (Bug #24577194, Bug #82830) -
global_log시스템 변수에SET PERSIST를 사용하는 것이 효과가 없었습니다. (Bug #24569624, Bug #82807) -
Performance Schema
variables_info테이블에서, 변수 없이 옵션 파일에 지정된 일부 불리언 옵션에 대해VARIABLE_SOURCE컬럼이 올바르게 설정되지 않았습니다. (Bug #24567960) -
.mylogin.cnf옵션 파일은 클라이언트 프로그램에서 사용하기 위한 것이지만, 서버도 이를 읽고 있었습니다. 서버는 더 이상 이를 읽지 않습니다. (Bug #24557925) -
boost::chrono사용은std::chrono로 대체되었습니다. 전자가 링크 오류를 일으키고 있었기 때문입니다. (Bug #24556808, Bug #82781) -
X 플러그인은 다른 플러그인과 다른 컴파일 옵션으로 빌드되었습니다. (Bug #24555770, Bug #82777)
-
variables_by_thread테이블을 채우는 동안 Performance Schema가 초기화 해제 중인 다른 스레드의 세션 변수에 접근하려고 시도할 수 있었습니다. (Bug #24555658) -
적절한 권한이 없는 사용자가 서버 컴포넌트를 로드하고 언로드할 수 있었습니다. (Bug #24528148)
-
INSTALL COMPONENT및UNINSTALL COMPONENT문을 동시에 실행하면 서버가 종료될 수 있었습니다. (Bug #24527148) -
Debian/Ubuntu 플랫폼에서 MySQL용 systemd 시작 스크립트가
/etc/mysql/my.cnf의datadir설정을 무시했습니다. (Bug #24517024, Bug #82709) -
LOCK TABLES문이 적용 중일 때, 트리거가 있는 테이블에 대한 DML 문으로 인해 서버가 종료될 수 있었습니다. (Bug #24506766) -
계정 관리 문을 실행하는 병렬 슬레이브 스레드가 권한 캐시 잠금 처리의 경합 조건으로 인해 실패할 수 있었습니다. (Bug #24503606)
-
트리거가 있는 테이블에서 다른 DDL 작업과 동시에
ALTER TABLE을 실행하면 손상된 데이터 딕셔너리가 발생할 수 있었습니다. (Bug #24497803) -
mysqladmin shutdown이 서버 프로세스 ID 파일을 확인하는 중 오류가 발생하면, 오류가 치명적이지 않다는 점을 명확히 나타내지 않는 오류 메시지를 표시했습니다. 이제 실행이 계속됨을 나타냅니다. (Bug #24496214)
-
null_audit플러그인의 경우null_audit_event_record시스템 변수를 부적절하게 설정하면 서버 종료가 발생할 수 있었습니다. 이 변수는null_audit플러그인 내부에서만 설정되어야 하므로 이제 읽기 전용입니다. (Bug #24493829, Bug #82670) -
특정 컨텍스트에서
IF(col_name > 5000, (1 / col_name), 5000)같은 표현식이DECIMAL(6,4)타입을 가질 수 있었으며, 이로 인해 결과가 잘릴 수 있었습니다. (Bug #24492965, Bug #82668) -
ZEROFILL컬럼에 사용되는 데이터 구조에서 메모리 손상이 발생할 수 있었으며, 결국 서버 종료로 이어질 수 있었습니다. (Bug #24489302) -
mysql-multi.server.sh 스크립트의 동작은 데이터 디렉터리의
my.cnf를 기반으로 했습니다. 해당 옵션 파일은 더 이상 사용되지 않으므로 mysql-multi.server.sh가 제거되었습니다. (Bug #24487870) -
서브쿼리의
MIN()또는MAX()가 인덱스가 있는 컬럼을 참조하는 경우 쿼리가 잘못된 결과를 생성할 수 있었습니다. (Bug #24484060, Bug #82638, Bug #24657798, Bug #82965) -
SHOW TRIGGERS출력 순서는 Linux와 Windows에서 다를 수 있었습니다. (Bug #24482919, Bug #82637) -
mysqld_safe는 데이터 디렉터리가 더 이상 표준 옵션 파일 위치가 아님에도 불구하고, 데이터 디렉터리의
my.cnf를 읽으려고 시도했습니다. (Bug #24482156) -
mysql_upgrade를 실행한 후
INSTALL COMPONENT문을 실행하면 서버 종료가 발생할 수 있었습니다. (Bug #24453571) -
큰 문자열에 대한 정규 표현식 패턴 매칭은 메모리 할당 실패 또는 정수 오버플로로 인해 서버 종료를 초래할 수 있었습니다. (Bug #24449076, Bug #24449090)
-
MySQL 5.7 데이터 디렉터리로 서버를 시작하면
default_roles및role_edges시스템 테이블이 없어 실패했습니다. (Bug #24447771) -
CONNECTION테이블 옵션에 큰 값을 사용하는CREATE TABLE문에 대해 잘못된 오류가 보고되었습니다. 이제 이 값은 1024바이트로 제한됩니다. (Bug #24437124) -
SHOW CREATE TRIGGER실행 중ER_LOCK_WAIT_TIMEOUT오류가 발생하면 assertion이 발생할 수 있었습니다. (Bug #24420809, Bug #82483) -
Constant folding이 큰 unsigned integer에 대해 잘못된 결과를 생성할 수 있었습니다. (Bug #24401273, Bug #82425)
-
매우 긴 서브파티션 이름을 사용하면 서버가 종료될 수 있었습니다. 이제 64자를 초과하는 파티션 또는 서브파티션 이름은
ER_TOO_LONG_IDENT오류를 생성합니다. (Bug #24400628, Bug #82429) -
Gis_wkb_vector<Gis_point>복사 생성자가 명시적으로 인스턴스화되지 않아 Intel 컴파일러에서 빌드 문제가 발생했습니다. (Bug #24397833, Bug #82358) -
REPAIR TABLE이 임시 파일을 사용하는 방식을 악용하여 권한 상승이 가능했습니다. (Bug #24388746) -
UNINSTALL PLUGIN과SHOW PLUGINS사이의 race condition으로 인해 서버가 종료될 수 있었습니다. (Bug #24344026) -
ROW모드 바이너리 로깅에서 컴포넌트 설치가 어설션을 발생시켰습니다. (Bug #24343582) -
역할과 관련된 잠재적 메모리 누수가 수정되었습니다. (Bug #24337928)
-
세미조인으로 변환되고 프로그래밍 방식으로
INFORMATION_SCHEMA테이블을 생성한 서브쿼리가INFORMATION_SCHEMA테이블을 비어 있는 것으로 잘못 처리할 수 있었습니다.버그 수정 전 이 문제에 대한 해결 방법:
SET optimizer_switch='semijoin=off';(Bug #24287772, Bug #82214) -
mysqldumpslow가 슬로우 쿼리 로그의 타임스탬프를 파싱하지 못했습니다. 로그 타임스탬프 형식의 변경 사항을 추적하도록 업데이트되지 않았습니다. (Bug #24007040)
-
Ubuntu 패키지에서 설치한 AppArmor 프로파일에
libnuma가/sys계층 경로를 읽을 수 있도록 허용하는 항목이 누락되어, 서버 시작 실패가 발생했습니다. (Bug #23854929) -
Optimizer가 세미조인 변환이 적용된 쿼리에서
RAND()를 상수로 잘못 처리할 수 있었습니다. (Bug #23854015) -
디버그 빌드에서 비트 연산자의 길이가 같지 않은 바이너리 피연산자가 어설션을 발생시킬 수 있었습니다. (Bug #23853628)
-
트랜잭션 롤백 요청이 전체 트랜잭션이 아니라 명령문 하나만 롤백한 경우, 트랜잭션에 다른 작업을 연결하려는 모든 시도가 어설션을 발생시켰습니다. (Bug #23753319, Bug #82143)
-
utf8mb4_unicode_ci콜레이션을 사용하는 인수에 대한STRCMP()가ORDER BY와 다른 결과를 반환할 수 있었습니다.STRCMP()가 수정되었습니다. (Bug #23752284, Bug #82132) -
GTID가 활성화된 경우 mysqlpump로 만든 전체 논리 백업을 복원할 수 없었습니다.
덤프 파일에 기록되는 GTID 정보를 제어할 수 있도록, 이제 mysqlpump에는 출력에
SET@@GLOBAL.gtid_purged문을 추가할지 여부를 나타내는--set-gtid-purged옵션이 있습니다. (Bug #23748432) -
오류를 처리하는 동안
audit_log플러그인이 오류 신호를 보낸 경우 무한 재귀가 발생할 수 있었습니다. (Bug #23717558, Bug #82052) -
이제
audit_log플러그인이MYSQL_AUDIT_CONNECT이벤트 실패와 관련하여 오류 로그에 기록하는 메시지는 디버깅에 도움이 되도록 근본적인 오류 원인도 함께 출력합니다. (Bug #23710632) -
MySQL은 이제
readdir_r()대신readdir()를 사용합니다. 후자는glibc2.24 이후 사용 중단되었으며, MySQL의 디버그 빌드와 GCC 6.1을 사용하는 빌드가 실패하게 했습니다.또한 GCC 6.1 컴파일러 경고를 발생시키는 여러 문제가 수정되었습니다. (Bug #23708395, Bug #24437737, Bug #82515, Bug #24459890, Bug #82583, Bug #25103242)
-
FORCE INDEX가SELECT COUNT(*)쿼리에 대해 효과가 없었습니다. (Bug #23596760, Bug #81854) -
시작 중에 서버는 Unix 소켓 파일에 대한 잠금 파일을 생성합니다(예:
mysql.sock에 대한 잠금 파일인mysql.sock.lock). 서버가 프로세스 ID를 잠금 파일에 쓰지 못한 경우 해당 파일을 제거하지 못했으며, 이로 인해 파일이 수동으로 제거될 때까지 이후 서버 시작이 실패할 수 있었습니다. (Bug #23582603, Bug #81838) -
디버그 빌드의 경우
Item_func_spatial_collection::val_str()를 사용하여 실행된 쿼리가 assertion을 발생시킬 수 있었습니다. (Bug #23573720) -
연결 클래스의 감사 로그 이벤트에서
connection_type값은 connect 이벤트에 대해서만 사용할 수 있었습니다. 이제 이 값은 connect, disconnect 및 change-user 이벤트에서 사용할 수 있습니다. (Bug #23541550) -
audit_log플러그인audit_log_filter_remove_filter()함수는NULL인수가 지정되면 서버 종료를 발생시켰습니다. (Bug #23522793) -
FEDERATED스토리지 엔진 없이 MySQL을 설정하려는 시도가 실패했습니다(CMake-DWITH_FEDERATED_STORAGE_ENGINE=0옵션이 작동하지 않았습니다). (Bug #23508203, Bug #81665) -
Solaris에서
gettimeofday()가 유효하지 않은 값을 반환하여 서버 종료를 유발할 수 있었습니다. (Bug #23499695) -
keyring_file플러그인은 파일이 존재하지 않을 때 해당 스토리지 파일에 키를 쓰려고 시도할 수 있었습니다. 올바른 스토리지 파일이 존재할 때만 키가 플러시되도록 하기 위해, 이제keyring_file은 파일에 keyring의 SHA-256 체크섬을 저장합니다. 파일을 업데이트하기 전에, 플러그인은 파일에 예상되는 체크섬이 포함되어 있는지 확인합니다. (Bug #23498254) -
max_join_size보다 큰 튜플을 생성하는 union 쿼리는 서버 종료를 초래할 수 있었습니다. (Bug #23303485) -
잘못된 구조를 가진 grant 테이블은 사용자 관리 작업에서 문제를 일으킬 수 있습니다. 이에 대한 수정의 결과로, grant 테이블을 수정하는 모든 작업에 대해 이제 서버는 해당 테이블이 예상되는 구조를 가지고 있는지 확인하고 그렇지 않으면 오류를 생성합니다. 테이블을 예상되는 구조로 업데이트하려면 mysql_upgrade를 실행해야 합니다. (Bug #23295423, Bug #25095876, Bug #25448037)
-
ST_ExteriorRing()은 유효한 것으로 간주된 잘못된 WKB 문자열이 전달되어 서버 종료를 일으킬 수 있었습니다. (Bug #23280574) -
디버그 빌드의 경우, XA 트랜잭션의 브랜치 준비 실패가 서버 종료로 이어질 수 있었습니다. (Bug #23264552, Bug #81375)
-
Optimizer는 비용이 더 높은 경우에도 기본 키에 대한
range접근 대신 보조 인덱스에 대한ref접근을 선택할 수 있었습니다. (Bug #23259872, Bug #81341) -
디스크 가득 참 오류 메시지의 한 인스턴스에 잘못된 오류 코드가 포함되어 있었습니다. (Bug #23247332, Bug #81346)
-
ORDER BY와LIMIT가 있는 쿼리의 경우, Optimizer 추적이 다른 인덱스로 전환한 Optimizer의 동작을 기록하지 않았습니다. (Bug #23227428, Bug #81250) -
version_tokens플러그인과 함수에서 사용하는 잠금이 부적절하게 처리되어,version_tokens가 제거되는 동안 함수 중 하나가 호출되면 서버 종료가 발생할 수 있었습니다. (Bug #23210850) -
저장 프로그램 내에서 실행된 DML 문장의 특정 오류가 잘못 처리되어 서버 종료가 발생할 수 있었습니다. (Bug #23209989)
-
QUOTE()함수가 과도한 메모리를 할당할 수 있었습니다. 이제max_allowed_packet바이트의 제한이 적용되며, 이보다 많이 할당하려는 시도에 대해서는 경고와 함께NULL을 반환합니다. (Bug #23195404) -
일부 깊게 중첩된 표현식의 경우, Optimizer가 스택 오버플로를 감지하지 못하여 서버가 종료되었습니다. (Bug #23135667)
-
X 플러그인을 통해 생성된 세션의 경우, 잘못된 스레드 연결/분리로 인해 서버가 종료될 수 있었습니다. (Bug #23057045)
-
데이터 디렉터리를 찾으려고 시도할 때, mysqld_safe가
$MY_BASEDIR_VERSION/var를 가능한 위치 중 하나로 잘못 고려했습니다. (Bug #23013510, Bug #80866) -
일부 생성 컬럼의 경우, 테이블 재빌드를 위한 컬럼 정의의 캐릭터셋 변환이 컬럼 값을 변경할 수 있었습니다. (Bug #22991924)
-
OS X DMG 설치 프로그램이 keyring 플러그인 설치를 올바르게 설정하지 않았습니다. (Bug #22991650)
-
파생 테이블의 컬럼에 대해
GROUP BY를 수행하고 선택 목록에 집계 함수와 그룹 컬럼을 혼합한 표현식이 포함된 쿼리는ONLY_FULL_GROUP_BYSQL 모드가 활성화된 경우 오류가 발생했습니다. (Bug #22924183, Bug #80726) -
MySQL 5.6에서 5.7로 바이너리(in-place) 업그레이드를 수행한 뒤 mysqlpump를 사용해 데이터 내보내기를 수행하면 덤프 파일을 다시 로드하려는 시도에서
Invalid default value for date_column오류가 발생했습니다. (Bug #22919028, Bug #80706) -
긴 float 값을 integer로 캐스팅하는 데 실패하면 서버 종료가 발생할 수 있었습니다. (Bug #22907691)
-
Unix 및 Unix 계열 시스템에서 옵션 값 없이
--log-error를 지정한 결과 생성되는 오류 로그 파일은--pid-file옵션도 함께 제공된 경우 PID 파일의 디렉터리에 잘못 생성되었습니다. (Bug #22900354) -
main.log_tables-big테스트 케이스는 부하가 매우 높은 호스트에서 불안정할 수 있었습니다. 패치를 제공해 준 Laurynas Biveinis에게 감사드립니다. (Bug #22874167, Bug #80607) -
X Plugin을 통해 실행된 SQL 문은 Performance Schema에서 계측되지 않았습니다. (Bug #22859462)
-
rpl.rpl_key_rotation테스트 케이스가 마스터 서버와 제대로 동기화되지 않았습니다. 패치를 제공해 주신 Laurynas Biveinis에게 감사드립니다. (Bug #22838596, Bug #80531) -
DROP INDEX작업은TEXT타입 컬럼(TINYTEXT등)에 대한 인덱스 접두사 길이의 일관되지 않은 처리로 인해 실패할 수 있었습니다.이 수정의 결과로, 지정된 인덱스 접두사가 최대 컬럼 데이터 타입 크기를 초과하는
CREATE TABLE및CREATE INDEX문에 대해 더 제한적인 동작이 적용됩니다:- 고유하지 않은 인덱스의 경우, 오류가 발생하거나(엄격한 SQL 모드가 활성화된 경우), 인덱스 길이가 최대 컬럼 데이터 타입 크기 이내가 되도록 줄어들고 경고가 생성됩니다(엄격 모드가 활성화되지 않은 경우).
- 고유 인덱스의 경우, 인덱스 길이를 줄이면 지정된 고유성 요구 사항을 충족하지 않는 고유하지 않은 항목의 삽입이 가능해질 수 있으므로 SQL 모드와 관계없이 오류가 발생합니다.
(Bug #22740093, Bug #80392)
-
저장 루틴 이름에 대한 메타데이터 잠금은 대소문자를 구분하여 수행되었지만, 루틴 이름은 대소문자를 구분하지 않습니다. (Bug #22700385)
-
DISTINCT와 함께 집계 함수를 사용한 쿼리가 잘못된 결과를 생성할 수 있었습니다. (Bug #22686994, Bug #80310) -
innodb_numa_interleave시스템 변수는 NUMA가 활성화되지 않은 일부 시스템에서 잘못 사용할 수 있었습니다. 패치를 제공해 주신 Tomislav Plavcic에게 감사드립니다.이제 CMake는 현재 플랫폼이
NUMA지원을 갖는지 여부에 따라 기본WITH_NUMA값을 설정합니다. NUMA 지원이 없는 플랫폼에서 CMake는 다음과 같이 동작합니다:- NUMA 옵션이 없는 경우(일반적인 경우), CMake는 정상적으로 계속 진행하며 다음 경고만 생성합니다: NUMA library missing or required version not available
-DWITH_NUMA=ON을 사용하면, CMake는 다음 오류와 함께 중단됩니다: NUMA library missing or required version not available
(Bug #22678436, Bug #80288)
-
복잡한
WHERE조건을 포함하는 특정 SQL 쿼리가 경고, 메모리 손상 또는 서버 종료를 유발할 수 있었습니다. (Bug #22671573) -
서버를 오프라인으로 전환할 때 Performance Schema 내부의 경쟁 상태로 인해 서버가 종료될 수 있었습니다. (Bug #22551677)
-
macOS에서 연결된 트리거가 있는 테이블의 이름이 소문자와 대문자를 모두 포함하는 새 이름으로 변경된 경우, 해당 트리거에 대한
DROP TRIGGER는 테이블에 대해ER_NO_SUCH_TABLE오류를 발생시켰습니다. (Bug #22512899, Bug #79873) -
MYSQL_FIELDC API 구조에서 파생 테이블에 대한org_table값이*였으며, 이로 인해 이 값에 의존하는 쿼리가 실패할 수 있었습니다. 이제 뷰와 파생 테이블에 대한org_table값은 다음과 같이 설정됩니다: 컬럼이 뷰에서 선택된 경우org_table은 해당 뷰의 이름을 지정합니다. 컬럼이 파생 테이블에서 선택된 경우org_table은 베이스 테이블의 이름을 지정합니다. 파생 테이블이 뷰를 래핑하는 경우에도org_table은 여전히 베이스 테이블의 이름을 지정합니다. 컬럼이 표현식인 경우org_table은 빈 문자열입니다. (Bug #22364401, Bug #79641) -
RPM 패키지의 경우 배포된
/etc/my.cnf파일의 기본error-log위치가 설치된 logrotate 스크립트의 위치와 달라 logrotate가 실패했습니다. (Bug #22322685) -
Performance Schema
events_statements_summary_by_digest테이블에는 예상되는 단일(고유) 로우가 아니라, 동일한 구문 다이제스트와 스키마 조합에 대해 여러 로우가 포함될 수 있었습니다. (Bug #22320066, Bug #79533) -
Performance Schema 시스템 및 상태 변수 테이블의 경우,
utf8과 다른 캐릭터셋으로 표현된 변수 값이 잘리거나 올바르지 않을 수 있었습니다. (Bug #22313205) -
디버그 빌드의 경우, 유효하지 않은 UTF-8 이름을 가진 표현식 속성을 사용하여 테이블 파티셔닝 표현식을 변경하면 assertion이 발생했습니다. (Bug #22152229)
-
AUTO_INCREMENT컬럼이 포함된 테이블에서 삽입을 수행한 다음SELECT작업을 수행한 후,LAST_INSERT_ID()는 올바른 값을 반환하지만,mysql_insert_id()C API 함수의 값은 0으로 재설정되고 있었습니다. (Bug #22028117, Bug #78778) -
Ubuntu에서 Community 패키지에서 Commercial 패키지로 업그레이드하는 동안 mysqld 및 my_print_defaults가 설치되지 않은 것처럼 보이게 하는 오류 메시지가 표시되었습니다. 이러한 메시지는 허위였으며 더 이상 표시되지 않도록 처리되었습니다. (Bug #21807248)
-
optimizer_switch시스템 변수의use_index_extensions플래그가 비활성화된 경우, 일부SELECT DISTINCT쿼리가 잘못된 결과를 반환할 수 있었습니다. (Bug #21749123, Bug #78244) -
UPDATE문의WHERE절에 있는 잘못된 문자열 값으로 인해 range scan이 아니라 인덱스 스캔이 사용되었습니다. 인덱스에 없는 값의 경우, 이로 인해 훨씬 느려질 수 있었습니다. 이제 Optimizer는 이를 “불가능한WHERE” 조건으로 판단합니다. (Bug #21032418, Bug #76933) -
Debian 패키지에는 AppArmor 관련 include 파일이 누락되어 있었으며, AppArmor에 대한 의존성이 잘못 표시되어 있었습니다(AppArmor를 제거하여 비활성화하는 것이 불가능해졌습니다). (Bug #20768958)
-
automatic_sp_privileges시스템 변수가 활성화된 경우, 익명 사용자에 대해 예상된 효과가 나타나지 않았습니다. (Bug #20266641) -
복제 환경에서
SET PASSWORD또는ALTER USER가 해시 문자열을 올바르게 파싱하지 못해 슬레이브에서 실행되지 않을 수 있었습니다. (Bug #20228478) -
Optimizer
resolve_const_item()함수가 마지막 두 인수를 잘못된 순서로Item_decimal()에 전달했습니다. (Bug #19062566) -
in-place
ALTER TABLE작업은 다음 조건에서DATE또는DATETIME컬럼을 추가할 때 오류를 보고하지 못했습니다: a) 컬럼이NOT NULL이고 기본값이 제공되지 않았습니다. b) strict 및NO_ZERO_DATESQL 모드가 활성화되었습니다. c) 테이블이 비어 있지 않았습니다.ALTER TABLE작업은 다음 조건에서DATE또는DATETIME컬럼을 추가할 때 경고가 아니라 오류로 실패했습니다: a) 컬럼이NOT NULL이고 기본값이 제공되지 않았습니다. b) strict SQL 모드가 활성화되었고NO_ZERO_DATESQL 모드는 활성화되지 않았습니다. c) 테이블이 비어 있지 않았습니다. (Bug #16888677) -
소수 초 부분이 있는
TIME,DATE또는TIMESTAMP값을 같은 타입이지만 더 적은 소수 자릿수를 가진 컬럼에 삽입하면 반올림이 발생했습니다. 이는 반올림이 아니라 잘라내기를 사용했던 MySQL 5.5와 다릅니다. 이 동작을 제어할 수 있도록 새로운TIME_TRUNCATE_FRACTIONALSQL 모드를 사용할 수 있습니다. 기본값은 반올림을 사용하는 것입니다. 이 모드를 활성화하면 대신 잘라내기가 발생합니다. (Bug #16583910, Bug #68760) -
내부 테이블의 인덱스 접두사가 사용될 때
NOT IN서브쿼리가 잘못된 결과를 생성할 수 있었습니다. (Bug #13915291) -
Linux가 아닌 Unix 시스템에서 mysql.server 시작 스크립트가 pgrep이 아니라 Linux 명령 pidof를 사용했습니다. (Bug #13788154, Bug #64342)
-
비정상적인 서버 종료 후 mysqld_safe 인스턴스를 여러 개 시작하면 한 mysqld_safe 인스턴스가 다른 인스턴스를 종료할 수 있었습니다. 버그 수정의 결과로
mysqld_safe.pid파일은 더 이상 사용되지 않습니다. (Bug #11751149, Bug #41908) -
mysqld_safe의
--help메시지가 수정되어,--no-defaults,--defaults-file,--defaults-extra-file옵션이 지정되는 경우 첫 번째 인수여야 한다는 점을 언급하도록 했습니다. (Bug #11745176, Bug #11192) -
각 레벨의 XML 파서 위치 스택(고정된 깊이를 가집니다)에 대한 범위 검사는 배열의 크기를 상한으로 사용했으므로 1만큼 벗어나 있었습니다. 이는 허용 깊이를 1만큼 줄여 수정되었으며, 실제로 위치 스택의 최대 요소 수와 일치합니다. (Bug #83871, Bug #25111907)
참조: 함께 참조하십시오: Bug #14040071, Bug #15948580.