Speed :1
New Score :0
High Score :0
New Score :0
High Score :0
Run Best
NICE BUSINESS TYPE INDICATOR
3. 급전을 친구에게 빌렸는데 오늘이 돈을 주기로 한날.. 그런데 카드값을 내야하는 날도 오늘인데... 이걸 어쩌나...
4. 우리 회사는 중요한 의사 결정을 할때?
5. 열심히 일한 나를 위한 선물을 주고싶다. 어떤게 좋을까?
6. 은행에서 투자상품을 추천받았다. 어떤걸 가입하지?
7. 회사에서의 나는?
8. 꿈에서 깨어나니 20년 전으로 돌아갔다. 당신이 제일 먼저 하는일은?
9. 내가 인사 담당자라면 신규 입사자 채용 시 제일 중요하게 보는것은?
10. 회사에 정말 싫어하는 동료가 있다면?
11. 가난한 집의 가장이 되었다.. 자녀의 생일 날 선물은?
12. 평소 회사 출근 스타일은?
13.회사 체육대회 하는 날이다. 오늘 뭐하지?
14. 나의 업무 스타일은?
Authentication Notes
- 서버는 AD 도메인에 액세스할 수 없는 경우와 같은 실제 LDAP 서버 오류에 대해서만 반환하는 것이 아니라 LDAP 인증 실패에 대해 LDAP_OPERATIONS_ERROR 반환할 수 있습니다. 이제 서버는 인증 오류를 나타내기 위해 MySQL 관련 오류 코드인 LDAP_AUTHENTICATION_ERROR 반환합니다. (버그 #100333, 버그 #31680279)
C API Notes
- sha256_password_auth_client_nonblocking() 함수는 공개 키를 사용할 수 있는 경우에도 항상 오류를 반환했습니다. (See the MySQL Server Doxygen documentation, available at https://dev.mysql.com/doc/index-other.html.)
Compilation Notes
- Microsoft Windows: authentication_ldap_sasl 서버 플러그인은 SASL 기반 LDAP 인증에 대해서만 클라이언트만 지원되므로 더 이상 Windows용으로 빌드되지 않습니다. (버그 #34448155)
- Windows에서 VS 2022를 사용하여 MySQL 서버를 컴파일하면 테스트 및 NDB 스토리지 엔진이 활성화된 경우 "parser-t"라는 두 프로젝트에 대한 오류가 발생합니다. 대/소문자를 구분하지 않는 운영 체제에서 충돌을 피하기 위해 테스트 이름이 변경되었습니다. (버그 #34790413)
- MacOS에서는 Xcode 14에 의해 생성 된 사용 중단 경고가 무음으로 설정되었습니다. 여기에는 sprintf(3) 대신 snprintf(3)를 사용하라는 제안과 64비트 정수에서 32비트 정수로의 정밀도 손실 가능성에 대한 경고가 포함됩니다. (버그 #34776172)
- 플러그인에서 부스트 라이브러리 사용을 제거했습니다. (버그 #34694419)
- 'Makefile'이라는 이름의 모든 제 3 자 파일이 사용되지 않았기 때문에 제거했습니다. (버그 #34648199)
- clang 15 지원이 추가되었습니다. (버그 #34638573)
- 사용하지 않는 코드를 찾아 제거했습니다. 패스트 코브를 사용하여 찾았습니다. (버그 #34583577)
- '우분투 11.2의 gcc 0.22.04 RelWithDebInfo' 및 'el8의 gcc 3.1.6'로 생성된 경고를 수정하여 ndbcluster 플러그인 빌드와 관련된 코드를 개선했습니다. (버그 #34384889)
- 이제 Bison 및 Flex 소스 파일에 대한 전체 파일 경로를 사용하여 디버깅 및 gcov 보고서를 단순화할 수 있습니다. (버그 #109022, 버그 #34776151)
- 건물 사용자가 mysqld 임시 디렉토리에 대한 액세스 권한이 없으면 MySQL 빌드가 실패합니다. 이제 INFO_BIN 파일을 만들 때 --no-defaults가 사용됩니다. (버그 #108947, 버그 #34756282)
Deprecation and Removal Notes
- 따옴표가 없는 식별자의 첫 번째 문자로 달러 기호($)를 사용하는 것은 이제 더 이상 사용되지 않으며 경고(ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT)를 발생시키며 향후 릴리스에서 제거될 수 있습니다.
mysql> TABLE $t; # Unquoted, produces warning +------+ | a | +------+ | 1 | | 2 | +------+ 2 rows in set, 1 warning (0.00 sec) mysql> SHOW WARNINGS\G *************************** 1. row *************************** Level: Warning Code: 1681 Message: '$ as the first character of an unquoted identifier' is deprecated and will be removed in a future release. 1 row in set (0.00 sec) mysql> TABLE `$t`; # Quoted, no warning +------+ | a | +------+ | 1 | | 2 | +------+ 2 rows in set (0.00 sec)
- 자세한 내용은 스키마 개체 이름을 참조하십시오. (버그 #34785775, WL #15422)
- 이는 데이터베이스, 테이블, 뷰, 열, 저장된 프로그램 또는 별명의 이름에 이러한 ID를 사용하는 명령문에 영향을 줍니다. 달러 기호로 시작하는 식별자는 따옴표로 묶인 경우, 즉 서버 SQL 모드에 따라 작은따옴표나 큰따옴표(' 또는 ")로 구분되거나 백틱 문자(')로 구분된 경우에만 허용됩니다. 예:
- CLIENT_NO_SCHEMA 플래그는 더 이상 사용되지 않습니다. CLIENT_NO_SCHEMA를 mysql_real_connect()에 대한 client_flag 인수로 지정하는 클라이언트 프로그램은 이제 플래그와 db 인수를 생략하여 연결이 데이터베이스 값을 현재(또는 기본) 데이터베이스로 설정하도록 할 수 있습니다. libmysqlclient 라이브러리는 이제 mysql_real_connect()가 CLIENT_NO_SCHEMA와 함께 호출될 때 표준 오류에 대한 경고를 인쇄합니다. 또한 서버는 연결이 CLIENT_NO_SCHEMA 경우 실행된 준비되지 않은 모든 쿼리에 대해 사용 중단 경고를 추가합니다. (WL #13128)
- 이전에는 레거시 압축 제어 매개변수가 더 이상 사용되지 않으며 서버 연결에서 압축 사용에 대한 제어를 강화하기 위해 새 구성 매개변수로 대체되었습니다. 새 매개 변수와 더 이상 사용되지 않는 매개 변수는 다음과 같습니다.더 이상 사용되지 않는 매개 변수는 향후 MySQL 버전에서 제거됩니다. mysqlbackup --compress 옵션은 다른 기능을 가지고 있으며 더 이상 사용되지 않습니다. (WL #13292)
- 이제 다음 클라이언트 프로그램은 클라이언트 사용자가 --compress (또는 해당되는 경우 -C)를 사용하여 프로그램 중 하나를 호출 할 때 표준 오류에 대한 사용 중단 경고를 인쇄합니다 : mysqlpump, mysqlcheck, mysql, mysqladmin, mysqlbinlog, mysqldump , mysqlimport, mysqlshow, mysqlslap, mysql_upgrade 및 mysqltest.
- --compress-algorithm 클라이언트 옵션은 레거시 --compress 클라이언트 옵션 및 압축 상태 변수의 사용 중단을 활성화합니다.
- MYSQL_OPT_COMPRESSION_ALGORITHMS C API 옵션을 사용하면 레거시 MYSQL_OPT_COMPRESS C API 옵션의 사용 중단을 사용할 수 있습니다.
- 마스터 변경 명령문의 MASTER_COMPRESSION_ALGORITHMS 옵션을 사용하면 레거시 slave_compressed_protocol 시스템 변수의 사용 중단을 사용할 수 있습니다.
Generated Invisible Primary Keys (GIPKs)
- Replication: 이제 복제본이 생성된 보이지 않는 기본 키를 복제된 대로 기본 키가 없는 InnoDB 테이블에 추가하도록 할 수 있습니다. 이는 복제 원본 변경 TO 문의 REQUIRE_TABLE_PRIMARY_KEY_CHECK 옵션에 대한 가능한 값으로 GENERATE 를 추가하여 구현됩니다.
STOP REPLICA; SET @@sql_require_primary_key = ON; CHANGE REPLICA SOURCE TO REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE FOR CHANNEL ch1; START REPLICA;
- 자세한 내용은 복제 원본을 문으로 변경 및 생성된 보이지 않는 기본 키를 참조하십시오. (WL #15419)
- 복제본은 원본에서 수행된 sql_generate_invisible_primary_key 대한 설정을 무시하며 이 변수는 복제되지 않습니다. 이 동작은 이전 릴리스에서 변경되지 않았습니다.
- REQUIRE_TABLE_PRIMARY_KEY_CHECK = GENERATE는 채널별로 사용할 수 있습니다. 복제본이 ch1 및 ch2라는 두 개의 복제 채널로 구성되어 있고 여기에 표시된 명령문을 실행한다고 가정합니다.
Keyring Notes
- component_keyring_oci 구성 파일에 지정되고 오라클 클라우드 인프라스트럭쳐(OCI) 콘솔에서 또는 오라클 클라우드 인프라스트럭쳐(OCI) API를 쿼리하여 가져온 엔드포인트의 호스트 이름은 이제 오라클 클라우드 인프라스트럭쳐(OCI) 자격 증명 모음 키 링 구성 요소에 대한 MySQL 구성을 생성할 때 이전에 제거해야 했던 https:// 접두사를 유지할 수 있습니다. (버그 #34636297)
Pluggable Authentication
- Windows에서 클라이언트 측 Kerberos 인증 플러그인은 이제 MIT Kerberos 라이브러리를 통해 GSSAPI를 지원합니다. Windows의 authentication_kerberos_client 인증 플러그인에서 지원하는 새 플러그인 옵션을 사용하여 런타임에 SSPI와 GSSAPI 중에서 선택할 수 있습니다. 클라이언트 사용자는 mysql 또는 mysqldump를 --plugin-authentication-kerberos-client-mode 명령줄 옵션을 사용하여 모드를 GSSAPI로 설정합니다. authentication_kerberos_client 플러그인의 기본 모드는 이전에 Windows에서 유일한 인증 방법이었던 SSPI입니다.
- 자세한 내용은 GSSAPI 모드에서 Windows 클라이언트에 대한 연결 명령을 참조하십시오. (WL #15336)
Spatial Data Support
- MySQL ST_Transform() 함수는 이제 EPSG 1042(Krovak Modified), EPSG 1043(Krovak Modified (North Orientated)), EPSG 9816 (Tunisia Mining Grid) 및 EPSG 9826 (Lambert Conic Conformal (West Orientated))을 제외한 모든 데카르트 투영을 지원합니다. (버그 #27272733, 버그 #34495023, WL #15164)
SQL Syntax Notes
- Important Change: 이전에 MySQL은 테이블, 열, 뷰, 저장 프로시저 또는 저장 함수의 이름과 테이블, 뷰 또는 열의 별칭으로 "full"을 사용하는 것을 지원했습니다. 이 릴리스부터 이러한 방식으로 "full"(대/소문자에 관계없이)을 따옴표가 없는 식별자로 사용하는 것은 이제 더 이상 사용되지 않으며 경고가 발생합니다. 이는 FULL이 키워드로 예약된 SQL 표준과 더 밀접하게 일치하기 위한 것입니다.
mysql> CREATE TABLE full (c1 INT, c2 INT); Query OK, 0 rows affected, 1 warning (0.03 sec) mysql> SHOW WARNINGS\G *************************** 1. row *************************** Level: Warning Code: 4119 Message: Using FULL as unquoted identifier is deprecated, please use quotes or rename the identifier. 1 row in set (0.00 sec) mysql> DROP TABLE full; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> SHOW WARNINGS\G *************************** 1. row *************************** Level: Warning Code: 4119 Message: Using FULL as unquoted identifier is deprecated, please use quotes or rename the identifier. 1 row in set (0.00 sec)
-
mysql> SHOW VARIABLES LIKE '%metadata%'; +---------------------------------------+---------+ | Variable_name | Value | +---------------------------------------+---------+ | binlog_row_metadata | MINIMAL | | innodb_stats_on_metadata | OFF | | performance_schema_max_metadata_locks | -1 | | resultset_metadata | FULL | +---------------------------------------+---------+ 4 rows in set (0.00 sec) mysql> SET @@global.binlog_row_metadata=FULL; Query OK, 0 rows affected (0.00 sec) mysql> SHOW VARIABLES LIKE '%metadata%'; +---------------------------------------+-------+ | Variable_name | Value | +---------------------------------------+-------+ | binlog_row_metadata | FULL | | innodb_stats_on_metadata | OFF | | performance_schema_max_metadata_locks | -1 | | resultset_metadata | FULL | +---------------------------------------+-------+ 4 rows in set (0.00 sec)
-
mysql> CREATE TABLE `full` (c1 INT, c2 INT); Query OK, 0 rows affected (0.03 sec) mysql> DROP TABLE `full`; Query OK, 0 rows affected (0.02 sec)
- 예를 들어 다음 CREATE TABLE 및 DROP TABLE 문은 이제 다음과 같이 경고를 발생시킵니다.
- 이제 이 릴리스에서 추가된 explain_format 시스템 변수를 사용하여 쿼리 실행 계획을 가져오고 FORMAT 옵션이 없는 EXPLAIN문의 출력 에 대한 기본 형식을 설정할 수 있습니다. FORMAT 옵션과 마찬가지로 이 변수는 전통, JSON 또는 TREE 값 중 하나를 사용할 수 있습니다. DEFAULT는 TRADITION의 동의어로도 지원됩니다. (DEFAULT는 설명에 대한 형식 옵션과 함께 지원되지 않습니다.) explain_format의 값이 TREE라고 가정합니다. 이 경우 이러한 EXPLAIN문의 출력은 FORMAT=TREE가 EXPLAIN의 일부로 지정된 것처럼 트리 기반 형식을 사용statement.explain_format EXPLAIN 분석의 동작에도 영향을 줍니다. 이 문은 TREE 형식 만 지원하므로 explain_format 값이 TREE가 아닌 경우 TREE 형식을 지정하지 않은 EXPLAIN ANALYZE 문은 명시 적으로 오류를 발생시킵니다.이 버전의 MySQL은 아직 '형식 형식으로 분석 설명'을 지원하지 않습니다. explain_format에 대한 설명을 참조하십시오. 또한 실행 계획 정보 얻기 및 EXPLAIN ANALYZE를 사용하여 정보 가져오기를 참조하십시오. (WL #15040)
- References: See also: Bug #33629360.
- 새 시스템 변수는 전역 범위와 세션 범위를 모두 가지며 지속될 수 있으며 명령줄(--explain-format) 또는 my.cnf 옵션 파일에서 설정할 수 있습니다.
- explain_format에 대해 설정된 모든 값은 FORMAT 옵션으로 재정의 됩니다. 즉, explain_format TREE로 설정된 경우 EXPLAIN을 호출할 때 FORMAT=JSON을 제공하면 explain_format 값이 무시되고 JSON 형식을 사용하여 결과가 표시됩니다.
Thread Pool Notes
- 비활성으로 인해 연결이 종료 될 때마다 스레드 풀 플러그인은 연결 시간 초과에 대한 일반 메시지 만 인쇄했습니다. 이로 인해 이러한 시간 제한에 대한 분석이 필요 이상으로 어려워지는 경우가 많았습니다. 새 INFO_LEVEL 메시지는 스레드 풀의 비활성으로 인해 연결이 종료되었으며 이 결정을 내리는 데 사용된 시간 제한 값을 명확하게 표시합니다. (버그 #34767607)
- 이 릴리스에서 성능 스키마 tp_thread_state 테이블에 추가된 두 개의 열을 사용하면 스레드의 유형을 식별하고 이 테이블의 스레드를 성능 스키마 스레드 테이블의 스레드에 매핑할 수 있습니다. 이제 스레드 유형이 tp_thread_state 테이블의 TP_THREAD_TYPE 열에 표시되고 스레드의 고유 ID가 THREAD_ID 열에 표시됩니다. 자세한 내용은 tp_thread_state 테이블을 참조하십시오. (버그 #34020058)
Functionality Added or Changed
- Important Change: OpenSSL 라이브러리가 번들로 제공되는 플랫폼의 경우 MySQL 서버용 연결된 OpenSSL 라이브러리가 버전 1.1.1s로 업데이트되었습니다. OpenSSL 버전 1.1.1에서 해결된 문제는 https://www.openssl.org/news/cl111.txt 에 설명되어 있습니다. (버그 #34828308)
- 시스템 curl 라이브러리에 링크하는 대신 curl을 포함하는 바이너리 패키지가 curl 7.86.0을 사용하도록 업그레이드되었습니다. (버그 #34828111)
- MySQL 8.0.31에 추가된 내부 리소스 그룹 개선 사항은 리팩터링되지만 Resource_group_supported 상태 변수를 계속 지원합니다. (버그 #34702833, 버그 #34699751)
- 참조: 되돌린 패치: 버그 #34264356.
Bugs Fixed
- Important Change: max_join_size 시스템 변수의 구현 은 최대 행 수 또는 디스크 검색으로 문서화되었지만 행 또는 디스크 검색 수를 직접 확인하지 않고 대신 max_join_size 허용할 최대 예상 비용으로 처리했습니다. 비용과 행 수는 상관 관계가 있지만 동일하지 않으므로 일부 큰 쿼리를 진행할 수 있는 경우 예기치 않은 결과가 발생할 수 있습니다.
- 이 릴리스에서는 max_join_size 사용 방법을 변경하여 이제 기본 테이블의 최대 행 액세스 수를 실제로 제한합니다. 예상치에 기본 테이블에서 더 많은 수의 행을 읽어야 하는 것으로 표시되면 오류가 발생합니다. 이렇게 하면 실제 동작이 문서화된 내용을 더 잘 반영할 수 있습니다. (버그 #83885, 버그 #25118903)
- InnoDB: 8.0.28에서 업그레이드 한 후 감지 할 수없는 문제, 충돌 및 손상. 새 구현에서 행의 가능한 최대 크기가 행 크기 제한을 초과하면 ALGORITHM=INSTANT로 추가된 열이 실패합니다. 따라서 구체화된 ALGORITHM=INSTANT 열이 있는 새 행은 항상 행 크기 제한 내에 있습니다. (버그 #34558510)
- 업그레이드 후 삽입된 모든 새 행에는 ALGORITHM=INSTANT 구체화된 모든 열이 추가됩니다. and have version=0.
- InnoDB: No more garbled UTF characters in SHOW ENGINE INNODB STATUS
- InnoDB: AALGORITHM=INSTANT로 추가된 열 이후에 온라인 재빌드 DDL이 더 이상 충돌하지 않습니다.
- InnoDB: 여러 적응 해시 인덱스(AHI) 코드 최적화 및 개선 사항이 구현되어 잠재적인 경쟁 조건을 비롯한 다양한 문제를 해결했습니다. (버그 #33601434)
- Replication: 복제 소스 변경을 사용하여 서버에서 SOURCE_HEARTBEAT_PERIOD 매우 작은 값(예: 1마이크로초)으로 설정되고 mysqlbinlog 클라이언트 프로그램이 --read-from-remote-server 및 --stop-never=1로 시작되면 이진 로그 덤프 스레드가 EOF를 보낼 수 있었습니다. 모든 이벤트가 전송되기 전에 클라이언트에 패킷을 보냅니다. (버그 #34860923)
- Replication: sql/rpl_group_replication.cc에서 테스트에서 잘못된 오류를 트리거하는 어설션을 제거했습니다. (버그 #34619134)
- Replication: MySQL이 --server-id=0으로 시작된 후 SET PERSIST server_id=N(여기서 N은 34412816보다 큰 정수임)을 사용하여 서버 ID를 변경하고 서버를 다시 시작하면 다음과 같은 결과가 나타납니다.이 문제를 해결하기 위해 이제 이러한 검사가 시작 옵션에 전달된 값이 아닌 서버 변수의 값을 사용하는지 확인합니다. (버그 #<>)
- SELECT @@server_id returned N.
- Any replication SQL statement such as START REPLICA was rejected with ER_SLAVE_CONFIGURATION.
- Replication: NDB 이진 로그 인젝터에서 생성된 압축된 이진 로그 이벤트를 복제할 때 릴레이 로그 위치가 다중 스레드 적용자에서 업데이트되지 않아 복제가 중단되었습니다. (버그 #33889030)
- References: See also: Bug #33784241.
- Replication: SQL 스레드가 트랜잭션을 처리하는 동안 STOP REPLICA SQL_THREAD 실행하면 예상대로 SQL 스레드를 종료하기 전에 이벤트 그룹이 완료될 때까지 60초를 기다리는 대신 복제가 즉시 중지됩니다. SQL 스레드가 시작될 때마다 마지막 이벤트 시작 시간을 보유하는 변수를 재설정하여 이 문제를 해결합니다. (버그 #33646899)
- 이 문제의 근본 원인은 SQL 스레드가 다시 시작된 후 마지막 이벤트 시작 시간을 저장하는 내부 변수가 재설정되지 않았기 때문입니다.
- Replication: 해당 표현은 그렇지 않음을 의미할 수 있지만 설정 super_read_only=ON(ER_GRP_RPL_SUPER_READ_ON) 및 설정 super_read_only=OFF(ER_GRP_RPL_SUPER_READ_OFF)의 로그 메시지는 작업이 시도된 후에만 작성되었으며 사전 또는 작업이 진행되는 동안에는 작성되지 않았습니다. 이로 인해 변수 설정이 거부 될 때 혼란이 발생하는 경우가 있었으며 설정된 시도 자체가 기록되기 전에 기록되었습니다. 이 문제가 발생하지 않도록 이제 작업을 시도하기 직전에 이러한 메시지가 기록됩니다. (버그 #108843, 버그 #34728079)
- Replication: relay_log_space_limit 시스템 변수는 64비트 값이지만 유효한 최대값은 내부적으로 32비트 값으로 지정되었습니다. (버그 #106323, 버그 #33799840)
- Replication: 바이너리 로그를 회전할 때 수행되었던 gtid_executed 테이블의 불필요한 업데이트를 제거했습니다. (버그 #106116, 버그 #33759477)
- Group Replication: MySQL 성능 스키마 replication_group_communication_information 테이블의 WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE 열은 그룹에 있는 Paxos 단일 리더 설정의 런타임 값을 반영하여 사용자에게 멤버 가입에 대한 group_replication_paxos_single_leader 값이 무엇인지 알려줍니다. 이 문제를 해결하기 위해 동작을 변경하고 group_replication_paxos_single_leader 값을 그룹이 실행 중인 통신 버전과 일치시킵니다. 이 변수는 MySQL 8.0.27에서 도입되었으므로 이전 버전에서는 알려지지 않았거나 사용되지 않았으므로 이제 다음 규칙을 적용합니다.또한 group_replication_set_communication_protocol()를 실행한 후 그룹 리더 변경이 허용되는지 여부를 결정하기 위해 확인된 값도 변경합니다. 이전에는 이 값이 group_replication_paxos_single_leader의 런타임 값이었으며 그룹 재부팅 후에만 적용됩니다. 대신 group_replication_set_communication_protocol()를 실행하면 앞에서 설명한 replication_group_communication_information 테이블의 WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE 열에 표시된 값을 사용합니다. (버그 #34555045, 버그 #34828311)
- 노드가 MySQL 8.0.26 이하를 실행하는 그룹에 가입하려고 시도하고 버전 8.0.27 이상인 경우 그룹에 가입하기 전에 group_replication_paxos_single_leader OFF여야 한다는 오류와 함께 시도를 거부합니다.
- group_replication_set_communication_protocol()을 사용하여 8.0.27보다 낮은 버전을 설정하려고 하고 버전 8.0.27 이상일 때 group_replication_paxos_single_leader OFF가 아니면 함수 호출을 거부합니다.
- 단일 리더가 활성화된 상태에서 부트스트랩되었지만 프로토콜 버전이 지원되지 않는 버전으로 다운그레이드된 그룹은 예상대로 0과 같WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE 보고했지만 group_replication_paxos_single_leader = 0을 사용하여 인스턴스에 인스턴스에 조인하려고 할 수 없었습니다.
- Group Replication: 3노드 클러스터에서는 메모리 부족으로 인해 모든 노드가 종료되었습니다. 그런 다음 모든 노드가 성공적으로 다시 시작된 후 클러스터를 다시 온라인 상태로 만들려고 하면 주 노드였던 노드가 중단되었습니다.
- For more information, see Rebooting a Cluster from a Major Outage. (Bug #108339, Bug #34564856)
- Group Replication: 그룹이 group_replication_consistency = AFTER로 실행되고 불안정한 네트워크와 같은 외부 조건으로 인해 보조 그룹이 실패한 경우 보조 데이터베이스는 원격 트랜잭션 준비를 수신하는 동안 그룹 복제 일관성 관리자에 트랜잭션 'GTID'가 존재하지 않습니다. 이 문제를 해결하기 위해 이제 보기 전에 정렬된 트랜잭션은 항상 View_change_log_event 전에 기록되고 보기 이후에 정렬된 트랜잭션은 항상 이 이벤트 이후에 기록되도록 합니다. 이 작업은 이제 이진 로그 티켓 관리자에 의해 수행되며, 이는 이진 로그 그룹 커미트의 트랜잭션이 커밋되는 순서를 보장합니다. (버그 #104980, 버그 #33405699)
- References: See also: Bug #34746357.
- 이 문제의 근본 원인은 주 복제본이 보조 복제본이 다시 조인한 View_change_log_event 순서가 없을 수 있기 때문입니다. 보조 그룹이 기본 그룹 기부자로 사용한 경우 이로 인해 보조 그룹이 그룹을 부적절하게 따라잡고 결국 그룹 거래에 대해 잘못된 GTID를 생성할 수 있습니다. 그룹 복제 기본은 이전의 모든 트랜잭션 후에 View_change_log_event가 기록되도록 하지만 그룹 전역 순서의 View_change_log_event 이후에 정렬된 트랜잭션이 이벤트 전에 기록될 수 있는 기간이 있었습니다.
- Microsoft Windows: 윈도우 플랫폼에서 MySQL을 컴파일 할 때 CMake -DWITH_WIN_JEMALLOC 옵션이 항상 올바르게 처리되지는 않았습니다. (버그 #108341, 버그 #34698376)
- JSON: JSON_ARRAYAGG() 또는 JSON_OBJECTAGG()의 결과를 열에 저장하는 동안 결과가 SUM_FUNC_ITEM 유형의 항목이기 때문에 데이터 유형 정보가 손실되었습니다. 이 문제를 해결하기 위해 유형 검사를 제거하고 원래 유형 정보를 유지합니다. (버그 #108326, 버그 #34548259)
- 서버에 대한 일부 원격 연결이 제대로 처리되지 않았습니다. 이 문제는 require_secure_transport 문제에 대한 이전 수정의 결과로 발생했습니다. (버그 #34857411)
- References: This issue is a regression of: Bug #34094706.
- 일부 쿼리 계획은 sql_optimizer.cc에서 Key_use_array의 비결정적 정렬로 인해 안정적이지 않았습니다. 이제 std::sort() 대신 std::stable_sort() 로 정렬합니다. (버그 #34823952)
- References: This issue is a regression of: Bug #25965593.
- 시스템 OpenLDAP 라이브러리에 링크하는 대신 OpenLDAP를 포함하는 이진 패키지가 버전 2.5.13을 사용하도록 업그레이드되었습니다. (버그 #34815046)
- 경우에 따라 인증 중에 서버에서 MySQL 클라이언트 프로그램으로 보낸 예기치 않은 패킷으로 인해 무한 루프가 발생할 수 있습니다. (버그 #34805922)
- GIS 데이터가 윈도우 기능에서 항상 올바르게 처리되는 것은 아닙니다. (버그 #34778646)
- 스레드는 사용자 기본 자원 그룹(USR_default)에 할당된 후에도 삭제된 자원 그룹의 CPU에 바인딩된 상태로 남아 있습니다. USR_default CPU 우선 순위가 0이고 CPU 선호도가 없으므로 이 수정을 통해 스레드는 이제 USR_default 모든 CPU를 실행할 수 있습니다. (버그 #34748973)
- JSON 로깅을 활성화한 상태에서 audit_log_rotate() 함수를 호출해도 파일이 예상대로 회전되지 않았습니다. 회전된 파일 이름은 파일에 기록된 마지막 이벤트의 타임스탬프로 구성됩니다. 파일이 비어 있는 경우 마지막 타임스탬프는 이미 생성된 파일의 타임스탬프와 동일합니다. 이 문제를 해결하기 위해 함수는 이제 파일이 비어 있는 경우 현재 시간을 사용하여 파일 이름을 지정합니다. (버그 #34733508)
- 여러 측면 파생 테이블이 있는 일부 쿼리는 예상한 결과를 생성하지 않았습니다. (버그 #34716246)
- 번들로 제공되는 zlib 라이브러리가 zlib 1.2.13으로 업그레이드되었습니다. zlib 1.2.13은 이제 지원되는 최소 zlib 버전입니다. (버그 #34711762)
- 특정 INTERSECT 쿼리가 올바르게 처리되지 않았습니다. (버그 #34642435)
- 명시된 최대 값보다 큰 값을 가진 MAX_EXECUTION_TIME 최적화 프로그램 힌트를 사용하면 MySQL 8.0.30으로의 업그레이드가 완료되지 않았습니다. 이로 인해 서버가 업그레이드 프로세스에서 복구할 수 없는 오류로 해석된 경고를 보고했습니다. (버그 #34607401)
- 경우에 따라 창 함수 평가가 올바르게 수행되지 않았습니다. (버그 #34572136)
- 일부 CTE가 올바르게 처리되지 않았습니다. (버그 #34572040, 버그 #34634469)
- 참고 문헌 :이 문제는 버그 # 33856374의 회귀입니다.
- 값을 FLOAT(CAST(... 부동 소수점), 변환 (..., 부동 소수점), JSON_VALUE (... RETURN FLOAT))는 내부적으로 배정밀도로 저장되기 때문에 내부 표현에서 추가 정밀도를 가질 수 있습니다. 이로 인해 SELECT DISTINCT가 중복을 반환하고 비교 연산자가 두 개의 동일한 값을 같지 않은 것으로 잘못 보고하는 등 이러한 값이 같은지 확인할 때 예기치 않은 결과가 발생하는 경우가 있습니다.
- 값을 반환하기 전에 값에서 추가 배정밀도를 제거하고 이러한 변환 연산자에서 float에서 문자열로 변환할 때 double 형식 대신 float 형식을 사용하여 이 문제를 해결합니다. (버그 #34554755)
- query_expression::assert_not_fully_clean()에서 어설션을 제거했습니다. (버그 #34526104)
- 단일 데이터베이스에 매우 많은 수의 테이블이 있는 MySQL 5.7에서 MySQL 8.0으로 업그레이드하면 서버가 과도한 메모리를 사용합니다. 테이블을 업그레이드 할 수 있는지 여부를 확인하는 과정에서 모든 데이터 사전 Table 객체를 미리 가져 와서 각각을 처리하고 이름을 가져온 다음 CHECK TABLE ... 목록에서 업그레이드합니다. 이 경우 모든 객체를 미리 가져올 필요가 없었으며 메모리 소비에 크게 기여했습니다.
- 이 문제를 해결하기 위해 이제 이러한 경우 한 번에 하나의 Table 개체를 가져오고, 필요한 검사를 수행하고, 해당 이름을 가져오고, 개체를 해제한 후 다음 작업을 진행합니다. (버그 #34526001)
- 자연 조인 컬럼을 작성할 때, 구체화된 파생 테이블의 일부로 추가된 숨겨진 컬럼이 조인 조건을 구성하는 데 사용되며, 나중에 조인이 파생 테이블에 대한 푸시다운에 적합한지 여부를 확인하는 데 사용됩니다. 현재 문제는 이 열이 숨겨져 있어 파생 테이블에서 검색되지 않았을 때 발생했습니다. 이는 조건 푸시다운 최적화가 활성화되지 않은 경우에도 발생했습니다. 기능 인덱스에 대해 추가된 숨겨진 열뿐만 아니라 내부적으로 추가된 모든 숨겨진 열을 거부하여 이 문제를 해결합니다. (버그 #34523627)
- 형식은 사용자 변수에서 일관되게 파생되지 않았습니다. 예를 들어 다음 문을 반복적으로 실행하여 이를 확인할 수 있습니다.이 경우 SHOW CREATE TABLE 문의 출력은 처음에는 '@max_error_count' 텍스트를 표시하고 연속 반복에서 '@max_error_count' medium blob을 표시했습니다. (두 번째가 맞습니다.) (버그 #34523475)
CREATE TABLE t AS SELECT @max_error_count UNION SELECT 'a';
SHOW CREATE TABLE t;
사용자 계정의 호스트 해상도를 개선하기 위해 MySQL 8.0.23에서 수행 한 작업에 따라 CREATE USER를 완료하는 데 필요한 시간이 크게 증가했습니다.
DROP USER 'fakeuser';
FLUSH PRIVILEGES;
자세한 내용은 액세스 제어, 1단계: 연결 확인을 참조하십시오. (버그 #34449016)
- 이 릴리스로 업그레이드하기 전에 단일 CREATE USER 'fakeuser' 계정 잠금을 사용하여 이러한 많은 명령문을 연속적으로 발행할 때 이 문제를 해결할 수 있습니다(이를 위해 기존 사용자 이름과 충돌하지 않는 모든 사용자 이름을 사용할 수 있음). 완료되면 다음 문을 실행하여 정리할 수 있습니다.
- data_masking 서버 측 플러그인이 런타임 오류를 내보내고 예기치 않게 중단될 수 있습니다. (버그 #34445632)
- 일부 곱하기 중첩 쿼리가 올바르게 수행되지 않았습니다. (버그 #34377854)
- 파생 테이블을 병합할 때 중첩된 조인 조건이 파생 테이블에 추가되고 기본 테이블이 이 조인 중첩에 추가됩니다. 또한 조인 조건은 파생 테이블과 연결됩니다. 이 문제를 해결하기 위해 이제 포함 테이블이 파생 테이블인 경우 범위 액세스를 평가하고 파생 테이블과 연결된 조인 조건이 범위 최적화에 사용되는지 확인합니다. (버그 #34347116)
- 테이블이 외부 조인의 내부 테이블이거나 테이블이 내부 테이블이고 조인이 semijoin이 아닌 경우 범위 액세스에 대한 평가를 건너뜁니다. 파생 테이블의 경우 기본 기본 테이블이 후자의 종류로 처리되고 범위 분석을 건너뛰었으며 따라서 범위 액세스 방법을 사용할 수 없었습니다.
- 하위 쿼리와 함께 실행된 LOAD DATA INFILE 문으로 인해 서버가 잘못된 경고를 반환할 수 있습니다(하위 쿼리가 1개 이상의 행을 반환함). (버그 #34336033)
- 내부 임시 테이블에 대한 자원 할당 처리가 개선되었습니다. (버그 #34174001)
- INSTANT 알고리즘을 사용하여 삭제 후 추가된 특정 열로 인해 데이터 오류 및 서버 종료가 발생할 수 있습니다. (버그 #34122122)
- 1=(선택 1 유니온 선택 1)이 다음과 같이 변환되는 T에서 하나로 SELECT 2과 같은 쿼리는 다음과 같이 변환됩니다.이 경우 최적화 프로그램은 1 = derived.col1을 유니온으로 푸시하여 SELECT 2에서 기여를 제거하여 잘못된 결과를 초래합니다. 이제 이러한 경우 더 이상 조건을 낮추지 않습니다. (버그 #33910786)
SELECT 1 AS one
FROM t
JOIN ( SELECT 1 AS col1 UNION SELECT 2) derived
WHERE 1 = derived.col1;
- 모든 Item 개체에서 참조 횟수를 사용하여 여러 참조가 있는 항목 트리의 보존을 다시 구현했습니다. 또한이 변경으로 인해 더 이상 필요하지 않은 이전 코드가 제거되었습니다. (버그 #33725415)
- ORDER BY 및 LIMIT 중 하나 또는 둘 다를 사용하여 괄호로 묶인 일부 쿼리 식이 항상 올바르게 처리되지는 않았습니다. (버그 #33725330)
- innodb_ddl_log 테이블의 정의가 변경되었을 때 데이터 사전을 업그레이드하는 동안 InnoDB에서 어설 션이 발생했으며, 이러한 변경이 테이블 및 열 정의의 utf8 및 utf8_bin을 각각 utf8mb3 및 utf8mb3_bin로 업데이트하는 것과 같이 사실상 null 작업 인 경우에도 마찬가지입니다. (버그 #33688509)
- 참고 문헌 :이 문제는 버그 # 33787300의 회귀입니다.
- mysqldump에 의해 백업 된 데이터와 GTID는 --single-transaction 및 --set-gtid-purged = ON 옵션이 모두 사용 될 때 일관성이 없었습니다. 이는 mysqldump에 의한 트랜잭션 시작과 GTID_EXECUTED 가져 오기 사이에 서버의 GTID가 이미 증가했을 수 있기 때문입니다. 이 수정을 사용하면 GTID_EXECUTED 가져오기 전에 읽기 잠금이 있는 테이블 플러시가 수행되어 해당 값이 mysqldump에서 만든 스냅샷과 일치하는지 확인합니다. 제한 사항: 이 수정은 --single-transaction을 사용하여 읽기 잠금으로 테이블 플러시를 실행할 때 RELOAD 권한에 대한 요구 사항을 추가합니다. MySQL 팀이 솔루션을 조사하고 있습니다. (버그 #33630199, 버그 #105761)
- 기여해 주신 Marcelo Altmann에게 감사드립니다.
- SET PERSIST는 구성 요소에서 등록한 변수의 점으로 구분된 이름과 MyISAM 다중 키 캐시 변수를 허용했지만 RESET PERSIST는 구문 오류로 인해 동일한 이름을 거부했습니다. 이 불일치를 수정하기 위해 점 문자(.)가 포함된 변수 이름에 대해 RESET PERSIST에 대한 지원을 추가합니다. (버그 #33417357)
- 일부 그룹화된 쿼리가 항상 올바르게 처리되지는 않았습니다. (버그 #33294005, 버그 #33349994)
- 다단계 인증이 첫 번째 요소에 auth_socket 인증 플러그인을 사용한 경우 서버는 두 번째 단계 인증 워크플로 중에 잘못된 코드를 실행하고 오류 메시지를 반환했습니다. 두 번째 요소는 모든 인증 플러그인 일 수 있습니다. (버그 #33192223)
- 구문이 지원되지 않더라도 구문 분석기에서 와일드카드를 열 식별자 로 사용하는 것이 파서에 의해 허용되었으며, 이로 인해 디버그 빌드에서 어설션이 발생하고 릴리스 빌드에서 명령문이 자동으로 거부되었습니다. 이 구성은 문법에서 가능성으로 제거되었으며 이제는 구문 오류로 엄격하게 처리됩니다. (버그 #33142665)
- 참고 문헌 :이 문제는 버그 # 30528450의 회귀입니다.
- 준비된 명령문에서 일부 유형의 하위 쿼리로 인해 서버가 종료될 수 있습니다. (버그 #33100586)
- 일부 부동 소수점 리터럴이 항상 올바르게 처리되지는 않았습니다. (버그 #32824429)
- 테이블 별명이 있는 DELETE문은 간헐적인 서버 종료를 초래할 수 있습니다. (버그 #32762229)
- INFO_SRC 및 INFO_BIN mysql-common 패키지에서 mysql-community-server-core 패키지로 이동했으며, mysqld와 동일한 패키지이며 RPM 패키징과 더 일치합니다. (버그 #32752147)
- HAVING 절 내에서 MATCH()를 사용하는 일부 쿼리가 올바르게 처리되지 않았습니다. (버그 #32616816, 버그 #32934558, 버그 #34782389)
- 하위 쿼리를 포함하는 CREATE VIEW 문은 때때로 디버그 빌드에서 어설션으로 이어졌습니다. (버그 #108783, 버그 #34703610)
- 사용자 정의 SQL 함수에 매개변수로 전달된 동적 매개변수에 대한 데이터 유형의 공제는 단일 매개변수에 대해서만 정확했습니다. 둘 이상의 매개 변수를 사용하면 두 번째 및 다음 매개 변수에 대해 이러한 추론이 수행되지 않았으며 그 결과 해당 형식이 항상 클라이언트에 MYSQL_TYPE_INVALID로 잘못 보고되었습니다. (버그 #108545, 버그 #34629157)
- 내부 함수 clone_os_copy_file_to_buf()는 부분 읽기의 경우 버퍼 위치를 진행하지 않았습니다.
- 푸시다운 조건에 시스템 뷰의 네이티브 함수를 사용하는 식이 포함된 경우 시스템 뷰에 액세스하는 뷰에서 정상적인 사용 중에 액세스 거부 오류가 발생할 수 있습니다. (버그 #108202, 버그 #34515868)
- 창 함수를 사용할 때 현재 행은 경우에 따라 잘못된 레코드를 기반으로 자체적으로 다시 평가될 수 있습니다. (버그 #108008, 버그 #34431996)
- LIKE 절이 있는 쿼리의 UNION에 대한 조건 푸시다운은 올바른 문자 집합을 유지하지 않아 (잘못된) 빈 결과를 초래합니다.
- 문자 집합 결정 및 전파가 이전에 서로 항상 일치하지 않는 두 개의 개별 코드 블록에서 수행되었던 LIKE 표현식의 해석을 리팩토링합니다.
- 내부 parse_expression() 함수에서 복제된 리터럴 문자열에 문자 집합 접두부를 추가합니다.
- 우리는이 문제를 두 부분으로 해결합니다.
- audit_log 서버 측 플러그인은 실행 된 쿼리의 특정 부분 만 기록하는 것이 아니라 항상 전체 다중 쿼리를 기록했습니다. 쿼리 길이가 설정된 시기를 변경하면 문제가 해결됩니다. (버그 #107390, 버그 #34207811)
- MySQL 8.0.27로 업그레이드 한 후 특정 쿼리는 저장 프로 시저 내에서 실행될 때마다 비교적 많은 양의 메모리를 소비하기 시작했습니다. (버그 #107327, 버그 #34190122)
- mysqld 시작 옵션을 maximum- 접두사와 함께 사용하면 해당 시스템 변수의 상한이 설정되었지만 현재 값이 새로운 제한에 따라 확인되거나 조정되지 않았으므로 경우에 따라 명시된 최대 값보다 클 수 있습니다. 현재 값이 새 사용자 정의 최대값보다 큰 경우 조정하여 이 문제를 해결합니다. (버그 #99029, 버그 #31072098)
- mysql_stmt_close() C API 함수는 KILL QUERY를 사용하여 준비된 명령문이 취소된 후 응답을 중지할 수 있습니다. (버그 #84470, 버그 #25584097)
728x90
반응형