---
title: "MySQL 8.0.40 릴리스 노트"
description: "MySQL 8.0.40 Community Server 릴리스 노트를 한국어로 번역하고, DBA가 참고해야 할 핵심 내용을 함께 정리하였습니다."
tags: [ MySQL, 릴리스노트 ]
image: "mysql-release-note.png"
author: "Oracle"
published: "2024-10-15"
updated: ""
source_url: "https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-40.html"
---

## DBA를 위한 핵심 내용

MySQL 8.0.40은 관측성·보안·InnoDB 안정성 측면에서 볼 항목이 많은 릴리스입니다. 특히 Performance Schema의 `data_locks`/`data_lock_waits` 조회 방식이 바뀌어 잠금 관측 부하가 줄었지만, 결과 스냅샷의 의미가 일부 달라졌습니다. 잠금 대기 분석을 자동화해둔 DBA라면 이 변경은 단순 성능 개선이 아니라 해석 방식 변경으로 봐야 합니다.

1. Performance Schema `data_locks`와 `data_lock_waits`가 재설계되어 전역 뮤텍스 의존이 줄고, `sys.innodb_lock_waits`도 부하가 큰 환경에서 훨씬 적은 잠금만 조회하도록 개선되었습니다. 대신 개별 트랜잭션이 보유한 모든 잠금의 일관된 스냅샷을 항상 보여주던 이전 방식과 달라질 수 있으므로, 잠금 진단 쿼리나 모니터링 결과 해석을 점검해야 합니다.
2. `mysql` 클라이언트에 `system` 명령을 제어하는 `--system-command` 옵션이 추가되었습니다. 기본값은 활성화이지만, 운영 서버에서 클라이언트의 OS 명령 실행을 제한하려는 보안 정책이 있다면 `--system-command=OFF` 또는 `--skip-system-command`를 검토할 수 있습니다.
3. OpenSSL이 3.0.15로 업데이트되었고, 이 버전에는 X.509 name check와 `SSL_select_next_proto()` 관련 서비스 거부/버퍼 과읽기 수정이 포함되어 있습니다. 번들 OpenSSL을 쓰는 플랫폼에서는 보안 패치 성격이 분명합니다. ([OpenSSL 3.0 변경 내역](https://github.com/openssl/openssl/blob/openssl-3.0/CHANGES.md))
4. InnoDB에서는 조인 성능 회귀, `INSTANT` 알고리즘으로 컬럼을 삭제하거나 기본값을 변경한 뒤 발생할 수 있는 서버 중단, redo log 용량 축소 후 쓰기 불능, FTS/보조 인덱스/테이블스페이스 import 관련 문제가 수정되었습니다. 온라인 DDL과 INSTANT DDL을 적극적으로 쓰는 환경에서는 업그레이드 전후 DDL 회귀 테스트가 필요합니다.
5. Group Replication에서는 primary의 짧은 네트워크 비활성 이후 모든 secondary가 예기치 않게 종료될 수 있던 문제가 포함되어 있습니다. 클러스터 네트워크가 불안정하거나 장애 주입 테스트를 수행하는 환경에서는 멤버 상태 변화와 자동 복구 동작을 확인해야 합니다.
6. 별도 웹 검색에서는 8.0.40 자체에 대한 널리 알려진 비공식 회귀 보고를 확인하지 못했습니다. 이 버전은 외부 이슈보다 Performance Schema 잠금 관측 방식 변경, OpenSSL 보안 업데이트, InnoDB/Group Replication 안정성 수정이 핵심입니다.

## C API 관련 사항

- 비동기 인터페이스는 상태 정보를 저장하기 위해 안전하지 않은 static 지역 변수를 사용했습니다. (Bug #115703, Bug #36891894)

## 컴파일 관련 사항

- MySQL이 Fedora 41에서 컴파일되지 않았습니다. (Bug #37046924)
- MySQL이 Ubuntu 24.10에서 컴파일되지 않았습니다. (Bug #37042308)
- Oracle의 Open Source 가이드라인을 준수하기 위해 MySQL 소스에 `CONTRIBUTING.md` 및 `SECURITY.md` 파일을 추가했습니다. (Bug #36998165)
- `CMAKE_MINIMUM_REQUIRED`를 올바른 필수 CMake 버전(3.14.6) 및 MySQL에서 사용하는 타사 라이브러리에 대한 CMake 정책과 맞추었습니다. (Bug #36978193)
- 시스템 curl 라이브러리에 링크하는 대신 curl을 포함하는 바이너리 패키지가 curl 8.9.1을 사용하도록 업그레이드되었습니다. curl 버전 8.9.1에서 수정된 중요한 문제는 [https://curl.se/docs/security.html](https://curl.se/docs/security.html)에 설명되어 있습니다. (Bug #36967379, Bug #36955197)
- 포함된 `zlib` 라이브러리가 버전 1.2.13에서 버전 1.3.1로 업그레이드되었습니다. (Bug #36950863)
- CMake 옵션 `BUILD_SHARED_LIBS` 및 `CMAKE_SKIP_INSTALL_ALL_DEPENDENCY`는 이제 빌드의 최상위 수준에서 `OFF`로 설정됩니다. (Bug #36930664)
- 번들로 제공되는 `libcurl` 라이브러리를 버전 8.9.0으로 업그레이드했습니다. (Bug #36886877)
- 번들로 제공되는 `lz4` 라이브러리가 버전 1.10.0으로 업그레이드되었습니다. (Bug #36886747)
- CMake용 [`-DWITHOUT_SERVER`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/source-configuration-options.html#option_cmake_without_server) 옵션이 Enterprise Linux 7에서 작동하지 않았습니다. (Bug #36824515)
- MySQL과 함께 사용되는 `libfido`의 버전이 1.15.0으로 업그레이드되었습니다. (Bug #36752604)
- MySQL 코드베이스에 사용되는 **clang-format**의 버전이 10에서 15로 업그레이드되었습니다. (Bug #36500268)
- 번들로 제공되는 TI-RPC 버전이 1.3.5로 업그레이드되었습니다. (Bug #115698, Bug #36886602)
- Protobuf 22 이상을 사용하여 MySQL을 빌드할 수 없었습니다.

  기여해 주신 Gordon Wang에게 감사드립니다. (Bug #115163, Bug #36678092)

## SQL 함수 및 연산자 관련 사항

- [`DATABASE()`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/information-functions.html#function_database)가 [`UNION`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/union.html) 쿼리의 일부로 사용될 때 이 함수의 출력이 잘렸습니다. (Bug #36871927)

## Performance Schema 관련 사항

- Performance Schema [`data_locks`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/performance-schema-data-locks-table.html) 및 [`data_lock_waits`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/performance-schema-data-lock-waits-table.html) 테이블을 다시 설계하여, 이를 쿼리하는 데 트랜잭션 또는 잠금 시스템에 대한 배타적 전역 뮤텍스가 필요하지 않도록 했습니다. 이제 이전에는 트랜잭션을 반복 처리했던 것과 달리, 잠금을 보유하는 해시 테이블의 버킷을 반복 처리하여 활발히 처리 중인 샤드에만 래치를 겁니다. 또한 이는 속도와 메모리 측면에서 반복 처리 로직의 복잡도를 개선하여 이러한 쿼리가 시스템의 나머지 부분에 미치는 영향을 줄입니다.

  쿼리 결과는 두 버킷을 방문하는 사이에 트랜잭션이 커밋되거나, 시작되거나, 또는 소유한 잠금 집합을 변경한 경우 트랜잭션 잠금의 불완전한 목록을 표시할 수 있습니다. 이는 두 개의 서로 다른 트랜잭션이 서로 다른 시점에 표시될 수는 있었지만, 개별 트랜잭션이 보유한 잠금의 일관된 스냅샷을 항상 표시했던 이전 동작과 다릅니다. 다시 말해, 새 접근 방식은 충돌하는 잠금이 대기 중인 잠금과 항상 같은 버킷에 있으므로, 단일 대기 큐의 일관된 뷰를 제공하여 대기 중인 잠금과 충돌하는 잠금을 표시하지만, 이전 접근 방식은 해당 잠금이 다른 트랜잭션에 속해 있었기 때문에 그중 일부를 놓칠 수 있었습니다. 이전 접근 방식은 보고된 트랜잭션이 보유한 다른 모든 잠금을 항상 표시했지만, 충돌 중인 경우에도 다른 트랜잭션의 잠금을 놓칠 수 있었습니다. (Bug #112035, Bug #113761, Bug #36302624, Bug #36015586, Bug #36690035, Bug #35712638, Bug #36891888)
- 부하가 높은 인스턴스에서 `SELECT * FROM sys.innodb_lock_waits;`를 실행하면 서버 성능에 영향을 주었습니다.

  이 릴리스부터 `SELECT * FROM sys.innodb_lock_waits;`는 각 대기마다 모든 잠금을 두 번 스캔하는 대신, 각 대기마다 잠금 2개만 가져옵니다.

  이 수정의 일부로 [`DATA_LOCKS`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/performance-schema-data-locks-table.html) 및 [`DATA_LOCK_WAITS`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/performance-schema-data-lock-waits-table.html)에 기본 키가 추가되었습니다. (Bug #100537, Bug #31763497)

## sys 스키마 관련 사항

- 이 릴리스에서는 [`innodb_lock_waits`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/sys-innodb-lock-waits.html) 뷰의 성능이 개선되었습니다. (Bug #36337708)

## Thread Pool 관련 사항

- 일부 동시 연결 시도가 올바르게 처리되지 않았습니다. (Bug #36625082)

## 추가되거나 변경된 기능

- **중요한 변경 사항:** OpenSSL 라이브러리가 번들로 제공되는 플랫폼의 경우, MySQL Server에 링크된 OpenSSL 라이브러리가 버전 3.0.15로 업데이트되었습니다. 자세한 내용은 [OpenSSL 3.0 Series Release Notes](https://openssl-library.org/news/openssl-3.0-notes/) 및 [OpenSSL Security Advisory [3rd September 2024]](https://openssl-library.org/news/secadv/20240903.txt)를 참조하십시오. (Bug #37021075)
- **mysql** 클라이언트에 [`--system-command`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/mysql-command-options.html#option_mysql_system-command) 옵션이 추가되었으며, 이 옵션은 `system` 클라이언트 명령을 활성화하거나 비활성화합니다.

  이 옵션은 기본적으로 활성화됩니다. 비활성화하려면 [`--system-command=OFF`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/mysql-command-options.html#option_mysql_system-command) 또는 [`--skip-system-command`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/mysql-command-options.html#option_mysql_skip-system-command)를 사용하십시오. 그러면 `system` 명령이 오류와 함께 거부됩니다. (Bug #36377685, WL #16482)

  참조: 다음도 참조하십시오: Bug #36248967.

## 수정된 버그

- **성능; InnoDB:** MySQL 8.0.28에서 인라인으로 정의되었던 `InnoDB` 내부의 여러 함수가 MySQL 8.0.33에서는 더 이상 인라인이 아닌 것으로 확인되었으며, 이는 부분적으로 `InnoDB` adaptive hash index를 개선하기 위해 MySQL 8.0.30에서 이루어진 개선 사항에 수반된 리팩터링 때문이었습니다. 이로 인해 `InnoDB` 테이블에서 조인을 사용하는 쿼리에 부정적인 영향이 있었습니다. (Bug #111538, Bug #35531293)

  참조: 이 문제는 다음의 회귀입니다: Bug #81814, Bug #16739204, Bug #23584861.
- **InnoDB:** InnoDB는 `INSTANT` 알고리즘을 사용하여 기본값을 `NULL`로 변경한 `REDUNDANT` 테이블 컬럼의 업데이트를 허용하지 않았습니다. 대신 MySQL이 예기치 않게 중단되었습니다. (Bug #36840107)
- **InnoDB:** `log_files_truncate`로 redo log 용량을 줄였을 때, 드문 상황에서 `file.end_lsn`이 `log_sys->write_lsn`과 같아져 이후 redo log 쓰기가 허용되지 않았습니다. (Bug #36730830)
- **InnoDB:** `INSTANT` 알고리즘을 사용하여 컬럼을 삭제한 후 [`DELETE`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/delete.html) 또는 [`UPDATE`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/update.html) 문을 실행할 때 MySQL 서버가 예기치 않게 중단될 수 있었습니다. (Bug #36723117)
- **InnoDB:** FTS 인덱스 최적화가 콜레이션 순서상 동일하지만 바이트 측면에서는 다른 토큰에서 때때로 올바르게 작동하지 않았습니다. (Bug #36652127)

- **InnoDB:** 컴파일되는 동안 최적화되어 제거되는 것을 방지하기 위해 `std::this_thread::sleep_for(std::chrono::seconds(0))` 사용을 `std::this_thread::yield()`로 대체했습니다. (Bug #36522343)
- **InnoDB:** 데이터베이스에 사용자가 생성한 `FTS_DOC_ID` 컬럼을 기본 키로 사용하여 MySQL 5.7에서 생성된 full-text 인덱스가 포함되어 있을 때 업그레이드 프로세스가 예기치 않게 중단되었습니다.

  이 수정에 기여해 주신 Alibaba의 Huaxiong Song 및 팀에 감사드립니다. (Bug #36496164)
- **InnoDB:** 다중 값 가상 컬럼에 대한 범위 조건이 있는 인덱스에 대해 optimizer를 비활성화했습니다. (Bug #36341532)
- **InnoDB:** Windows에서 파일 액세스를 느리게 하던 doublewrite buffer 회귀를 수정하고, 파일을 열 때 사용하는 `FILE_FLAG_OVERLAPPED` 플래그 사용을 리팩터링했습니다. (Bug #36259487)
- **InnoDB:** 테이블의 보조 인덱스에 있는 nullable 컬럼 수가 strict mode의 영향을 받기 때문에, 테이블이 생성되었을 때와 다른 [`sql_mode`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/server-system-variables.html#sysvar_sql_mode)로 테이블을 가져온 경우 스키마 불일치가 발생할 수 있었습니다. 이제 tablespace를 가져온 후 보조 인덱스 트리도 손상 여부를 확인합니다. (Bug #35799038)

- **InnoDB:** FTS 인덱스가 있는 테이블의 tablespace가 discard되면, 해당 FTS 테이블도 함께 삭제됩니다. 이러한 테이블을 비우는 작업을 수행할 때, 코드는 테이블 메타데이터에 FTS 인덱스가 있으면 FTS 테이블도 반드시 존재한다고 잘못 가정했습니다. (Bug #35343458)
- **InnoDB:** FusionIO에 대해 시스템이 다른 섹터 크기를 지원하는지 확인할 때 초기화되지 않은 버퍼가 임시 파일에 기록되고 있었습니다. 이 확인은 [`innodb_flush_method`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/innodb-parameters.html#sysvar_innodb_flush_method)가 `O_DIRECT` 또는 `O_DIRECT_NO_FSYNC`로 설정된 경우 수행됩니다. (Bug #115229, Bug #36705034)
- **InnoDB:** 보조 인덱스가 관련된 테이블 rebuild 작업은 MySQL 8.0.26과 비교할 때 `InnoDB` 임시 파일에 대해 더 많은 파일 I/O가 필요했으며, 이로 인해 쿼리 성능이 저하되었습니다. (Bug #114465, Bug #36444172)
- **InnoDB:** parallel index builder로 인덱스를 추가하는 작업은 `Alter_stage` 클래스의 문제로 인해 Performance Schema가 활성화된 경우 훨씬 느렸습니다. (Bug #113505, Bug #36163502)
- **InnoDB:** 최근 optimizer 변경 사항을 더 잘 고려하도록 `innodb.parallel_read_kill` 관련 unit test를 수정했으며, `innodb.ddl_kill` unit test와 관련 macro 사용을 수정했습니다.

  이러한 수정에 기여해 주신 Dmitry Lenev와 Percona 팀에 감사드립니다. (Bug #113002, Bug #115416, Bug #35992036, Bug #36764973)

  References: 다음도 참조하십시오: Bug #112767.
- **파티셔닝:** [`ALTER TABLE`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/alter-table.html)이 파티셔닝된 테이블에서 항상 올바르게 작동하지는 않았습니다. (Bug #36677952)
- **Group Replication:** 특정 조건에서 primary 호스트의 짧은 네트워크 비활성 기간 이후 모든 secondary가 예기치 않게 종료되었습니다. (Bug #35642087)

  References: 다음도 참조하십시오: Bug #32673639, Bug #34565855.
- **Group Replication:** 보고된 스레드별 집계 메모리가 할당된 것 중 다른 스레드가 해제한 모든 `memory/sql/Gtid_set::Interval_chunk`를 반영하지 않아, Group Replication 스레드 `thread/group_rpl/THD_applier_module_receiver`에서 리소스 사용량이 부정확하게 계속 증가하는 결과로 이어졌습니다.

  [`performance_schema.memory_summary_global_by_event_name`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/performance-schema-memory-summary-tables.html)에서 보고되는 전역 메모리는 이 문제의 영향을 받지 않았습니다. (Bug #34819861)
- **Group Replication:** `xcom\network\xcom_network_provider_native_lib.cc`에서 잠재적인 메모리 누수를 제거했습니다. (Bug #115162, Bug #36673883)
- 스레드 풀과 audit log 플러그인을 모두 사용해 실행 중일 때 서버가 연결을 항상 올바르게 처리하지는 않았습니다. (Bug #37039422)

- Debian 기반 시스템용 패키지는 이제 `WITH_ZLIB=system`으로 빌드되며, debug 빌드에 대해 `MYSQL_MAINTAINER_MODE`를 비활성화합니다. (Bug #37038213)
- 상용 빌드에 번들로 포함된 Kerberos 라이브러리를 버전 1.21.3으로 업데이트했습니다. 자세한 내용은 [Kerberos 5 1.21.x Release Notes](https://web.mit.edu/kerberos/krb5-1.21/)를 참조하십시오. (Bug #37034600)
- `regexp::Regexp_facade::~Regexp_facade()`의 heap-use-after-free 경고를 제거했습니다. (Bug #36867806)
- 테이블스페이스를 덤프하는 동안 **mysqldump**가 출력에서 특정 SQL 문을 제대로 이스케이프하지 않았습니다. 또한 이제 덤프는 다음 식별자를 백틱으로 감쌉니다: `LOGFILE GROUP`, `TABLESPACE`, `ENGINE`. (Bug #36816986)
- `sql/sql_executor.cc`의 문제에 대한 이전 수정은 `const_for_execution()`이 아니라 `const_item()`을 확인했습니다. (Bug #36804785)

  참조: 이 문제는 다음의 회귀입니다: Bug #34951115.
- `IndexRangeScanIterator`를 사용하여 인덱스 범위 스캔을 실행할 때, 리팩터링 중에 `IndexRangeScanIterator::m_expected_rows`에 사용된 데이터 타입이 double에서 boolean으로 변경되었기 때문에 레코드 버퍼가 전혀 설정되지 않았습니다. 이 의도하지 않은 변경은 되돌려졌습니다.

  또한 인덱스 범위 스캔에 대해 레코드 버퍼가 활성화된 경우, 이러한 스캔을 커버하는 데 사용되는 다중 값 인덱스에서 문제가 발생했습니다. (이는 인덱스 병합 스캔의 일부로 사용될 때만 가능합니다. 인덱스 병합 스캔은 커버링 인덱스 스캔을 강제하기 때문입니다.) 문제의 원인은 `Field_typed_array::key_cmp()` 구현에 인덱싱된 표현식에 대한 생성 컬럼의 값이 필요하지만, 이 컬럼은 다중 값 인덱스에서 사용할 수 없으므로, 스토리지 엔진이 커버링 스캔을 위해 레코드 버퍼를 채울 때 종료 범위 조건을 안전하게 평가할 수 없다는 점이었습니다. 이를 수정하기 위해, 이제 다중 값 인덱스가 커버링 인덱스 범위 스캔에 사용되는 경우 레코드 버퍼를 비활성화합니다. (Bug #36775910)

  References: 다음도 참조하십시오: Bug #36341532.
- 특정 트리거 및 저장 프로시저가 올바르게 처리되지 않았습니다. (Bug #36775910)
- 외부 테이블을 참조할 때 발생한 일부 오류가 올바르게 처리되지 않았습니다. (Bug #36758378)
- Debian에서 LTO 빌드 호환성을 높이기 위해 `libmysqlclient.a` 제거를 중단했습니다. (Bug #36737581)
- 내부 함수 `my_convert_internal()`이 때때로 의도한 값이 아니라 포인터를 반환했습니다. (Bug #36684463)

  References: 이 문제는 다음의 회귀입니다: Bug #36479091.
- 서버 컴포넌트의 메모리 문제를 제거했습니다. (Bug #36600205)
- **mysql** 클라이언트의 메모리 누수를 수정했습니다. (Bug #36600203)
- [`AES_ENCRYPT()`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/encryption-functions.html#function_aes-encrypt) 함수가 항상 유효한 결과를 반환하지는 않았습니다. (Bug #36593265)
- 일부 경우에 매우 많은 수의 로우와 많은 테이블이 포함된 조인이 올바르게 처리되지 않았습니다. (Bug #36562979)
- 동일한 트랜잭션에서 `FULLTEXT` 인덱스 추가와 함께 사용한 [`DROP INDEX`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/drop-index.html)가 때때로 계획되지 않은 서버 종료로 이어졌습니다. (Bug #36559642)
- Optimizer 힌트의 일부 조합이 올바르게 작동하지 않았습니다. (Bug #36492114)

- 이전 문제의 수정 이후, `GROUP BY`의 일부이며 select 목록에서 발견되지 않는 `const` 항목은 필드 목록에 숨겨진 항목으로 추가되지 않지만, 임시 테이블을 생성하는 동안 `ROLLUP` 작업과 관련된 표현식의 대체 항목을 검사할 때는 이 점이 고려되지 않았습니다. 필드 목록에서 발견되지 않는 항목이 `const` 항목인지 확인하고, 그렇다면 동일한 항목을 대체 항목으로 사용하도록 하여 이를 수정했습니다. (Bug #36444257)

  References: 이 문제는 다음의 회귀입니다: Bug #34951115.
- 데이터 마스킹 함수 [`gen_rnd_pan()`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/data-masking-component-functions.html#function_gen-rnd-pan) 및 [`mask_ssn()`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/data-masking-component-functions.html#function_mask-ssn)의 테스트 중 발견된 어설션을 제거했습니다. (Bug #36397869, Bug #36398272)

  References: 다음도 참조하십시오: Bug #36398221.
- FTS 비교와 관련된 문제를 수정했습니다.

  기여해 주신 Alibaba의 Shaohua Wang 및 팀에 감사드립니다. (Bug #36210202)
- 일부 [`CREATE TABLE... SELECT`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/create-table-select.html) 문이 항상 올바르게 처리되지는 않았습니다. (Bug #36138460)

- RelWithDebInfo 빌드는 더 이상 "-g1" 플래그로 컴파일되지 않으며, 이에 따라 사용 가능한 디버깅 정보와 생성되는 파일 크기가 증가합니다. (Bug #36111629)

  참조: 다음도 참조하십시오: Bug #33664929.
- 서버가 [`--skip-grant-tables`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/server-options.html#option_mysqld_skip-grant-tables)와 함께 실행되었을 때 발생할 수 있는 잠재적 오동작을 수정했습니다. (Bug #36043213)
- 조인의 `ON` 조건에서 외부 쿼리 블록의 테이블 컬럼에 대한 참조와 관련된 문제를 이전에 수정한 내용에서 발생한 회귀를 수정했습니다. (Bug #35854686)

  참조: 이 문제는 다음의 회귀입니다: Bug #96946, Bug #30350696.
- 특정한 드문 경우에, 외래 키가 있는 테이블 생성을 포함하는 [`CREATE TABLE`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/create-table.html) 문이 올바르게 처리되지 않았습니다. (Bug #35553557, Bug #36350852)
- [`SHOW INDEX`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/show-index.html) 및 생성된 컬럼과 관련된 문제를 수정했습니다. (Bug #35497623)
- 일부 경우에, prepared statement의 테이블 DDL이 올바르게 처리되지 않았습니다. (Bug #35221658)
- SLES 15 대상 플랫폼을 openSUSE 15.5에서 15.6으로 변경했으며, 이는 또한 GCC 12 대신 GCC 13을 사용하고 OpenSSL 1.1.x 대신 시스템의 OpenSSL 3.x를 대상으로 빌드함을 의미합니다. (Bug #115535, Bug #36934913)
- Debian 패키지 설명의 오타를 수정했습니다.

  기여해 주신 Henning Pöttker에게 감사드립니다. (Bug #115363, Bug #36749142)

- [`prefer_ordering_index=off`](https://docs.oracle.com/cd/E17952_01/mysql-8.0-en/switchable-optimizations.html#optflag_prefer-ordering-index)인 경우, 참조 키가 없는 쿼리는 정렬을 피할 수 있었어야 했음에도 전체 테이블을 스캔하고 정렬하는 방식으로 되돌아갔습니다.

  기여해 주신 Daniel Nichter에게 감사드립니다. (Bug #113699, Bug #36213938)
- multi-valued 인덱스와 함께 greater-than(`>`) 또는 less-than(`<`) 비교를 사용하는 쿼리는 동일한 인덱스와 함께 equality(`=`) 비교를 사용하는 동일한 쿼리보다 훨씬 느리게 실행되었습니다. (Bug #104897, Bug #33334911)
