본문 바로가기
MySQL News&Article

MySQL Ver. 5.7.31 주요 버그 픽스 사항 정리

by 모모레 2021. 7. 24.
카테고리 내용
InnoDB -- history list가 0에 가까워질때 purge thread에 발생하는 과도 동작에 대한 버그 픽스 
-- "ibuf cursor restoration fails" 에러와 같이 나타나던 비정상 종료 버그 픽스 
-- 정상 종료시 발생하던 심각한 "page still fixed or dirty" 에러에 대한 버그 픽스 
Partition Table -- 파티션 테이블에 ORDER BY가 있는 조회 쿼리를 실행할 때, 다음과 같은 조건인 경우 정렬이 제대로 되지 않는다. 
   -- 컬럼의 prefix만 사용하는 복합인덱스가 존재 
   -- prefix 인덱스로 사용하는 컬럼에 = 조건이 있음. 
   -- prefix로 사용하는 컬럼은 인덱스에서 가장 왼쪽에 위치한 컬럼 
   -- ORDER BY에 사용한 컬럼은 해당 복합 인덱스의 가장 오른쪽 컬럼 
   -- prefix 컬럼으로 만들어진 복합 인덱스가 정렬에 사용됨. 
Replication -- binlog_transaction_dependency_tracking, binlog_transaction_dependency_history_size 를 포함한 교착상태 시나리오에 대해 수정된 사항 중 writeset history를 보호하지 못하는 버그 발생하여 수정함. 
기타 -- concat(''), concat_ws('') 실행 시 null이 입력되는 현상 수정함. 
-- UPDATE 실행 시 internal in-memory 테이블을 InnoDB로 변환하는 과정에서 발생하는 key-length 에러 수정함. 
-- select `*`도 select *로 처리되게 수정함. 
-- mysqldump 에서 INSERT 길이 계산 시 VARBINARY 데이터 타입에 대한 정확하지 않은 계산 처리 수정함. 
-- 여러 테이블을 조인하여 update를 수행하는 경우, temporary table를 사용할때 duplicated entries를 해당 임시 테이블에 저장 후 다시 찾지 못하는 버그를 수정함. 
-- 서버가 subquery에 있는 group by를 옵티마이징 시 삭제해 버리는 버그 수정함. 
-- 옵티마이져가 generated 컬럼에 대한 인덱스를 선택할때 잘못된 결과 값을 가져올 수 있는 버그 수정함. 

InnoDB: Purge thread activity was excessive when the history list length approached zero, wasting CPU resource and causing mutex contention. (Bug #30875956)

InnoDB: The server failed intermittently with an “ibuf cursor restoration fails” error. (Bug #30770380, Bug #91033)

InnoDB: A fatal “page still fixed or dirty” error occurred during shutdown. (Bug #29759555, Bug #95285)

Partitioning: A query against a partitioned table, which used an ORDER BY, returned unordered results under the following conditions:

The table had a composite index with a prefix on one of the columns.
The query's WHERE clause contained an equality condition on the prefixed column.
The column with the prefix was the leftmost column in the index.
The column used in the ORDER BY was the rightmost column in the index.
The index was used for handling the ORDER BY.(Bug #84070, Bug #25207522)

Replication: A fix made in MySQL 8.0.14 and MySQL 5.7.25 for a deadlock scenario involving the system variables binlog_transaction_dependency_tracking and binlog_transaction_dependency_history_size had the side effect of leaving the writeset history used for transaction dependency tracking unprotected from concurrent update. The writeset history and tracking mode are now locked correctly whenever they are accessed. (Bug #29719364, Bug #95181)


Assigning CONCAT('') or CONCAT_WS('') to a variable set the variable to NULL, not the empty string. (Bug #31320716, Bug #99485, Bug #31413167, Bug #99722)

The gen_range() user-defined function could mishandle its arguments, causing a server exit. (Bug #30763294)

During UPDATE processing, conversion of an internal in-memory table to InnoDB could result in a key-length error. (Bug #30674616)

It is possible to define a column named * (single asterisk character), but SELECT `*` was treated identically to SELECT *, making it impossible to select only this column in a query; in other words, the asterisk character was expanded to a list of all table columns even when it was surrounded by backticks. (Bug #30528450)

Calculations by mysqldump for the length of INSERT statements did not take into account the _binary character set introducer used for VARBINARY strings. (Bug #29998457, Bug #96053)

In a multiple-table UPDATE that updated the key of the first table, if a temporary table strategy was used, duplicate entries could be written to the temporary table, followed by occurrence of a Can't find record error. (Bug #28716103)

The optimizer could attempt to access a pseudo table as a table, resulting in unexpected server behavior. (Bug #28651673)

The server sometimes mistakenly removed a subquery with a GROUP BY when optimizing a query, even in some cases when this subquery was used by an outer select. This could occur when the subquery also used an aggregate function. (Bug #28240054)

Incorrect results could occur when the optimizer chose an index on a generated column to fetch values. (Bug #24345509, Bug #29451999)