mysql8.0發布新特性


2018年4月21日 14:36:42

https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html#mysqld-8-0-11-bug

 

這個是這個已經發布的,注意本文時間

字符集支持

在將來的MySQL版本中,utf8mb3字符集將被utf8mb4所取代。 utf8字符集目前是utf8mb3的別名,但在此時會成為對utf8mb4的引用。 為了避免utf8含義的歧義,請考慮為字符集引用而不是utf8顯式指定utf8mb4

 

編譯說明

MySQL源代碼已使用clang格式轉換為Google樣式規則。 (錯誤#27414321)

Sun RPC正在從glibc中移除。如果glibc不包含Sun RPC,CMake現在檢測並使用libtirpc。 (您可能會發現需要安裝libtirpc和rpcgen才能利用此CMake功能。)(錯誤#27368272,錯誤#89168)

服務器版本的Boost庫的最低版本現在是1.66.0。 (錯誤#27137349,錯誤#88540)

從源代碼構建時,提供的CMake腳本假定已經安裝了JUnit和Ant並在設置的路徑上可用。如果情況並非如此,那么構建GCS Java包裝會導致構建錯誤。為了解決這個問題,一個新的CMake選項WITH_ANT = path_name已被添加到構建腳本中,並且其工作方式與現有的WITH_BOOST CMake選項類似。將WITH_ANT設置為保存Ant tarball或已打開的存檔的目錄的路徑。當WITH_ANT沒有設置,或者使用特殊值系統設置時,構建假定$ PATH中存在二進制ant。

同樣,CMake選項ENABLE_DOWNLOADS已經存在,用於在構建期間下載所需的庫,例如Google Test分發版。現在,當設置了ENABLE_DOWNLOADS,並且未找到JUnit或Ant時,它們將作為構建過程的一部分下載。 (Bug#26678793)

 

配置說明

新的CMake選項BUNDLE_RUNTIME_LIBRARIES允許將運行時庫與Windows的服務器MSI和Zip包捆綁在一起。 (錯誤#27584796,錯誤#89771)

系統服務文件現在將LimitNOFILE增加到10000,以適應MySQL 8.0中更高的默認設置。 (Bug#27530282)

新的WITH_SYSTEM_LIBS CMake選項啟用后,將為未顯式設置的以下任何選項選擇系統值:WITH_EDITLINE,WITH_ICU,WITH_LIBEVENT,WITH_LZ4,WITH_PROTOBUF,WITH_SSL,WITH_ZLIB。 (錯誤#27356668,錯誤#89136)

編譯后的zlib庫的版本現在在運行時可用作version_compile_zlib系統變量的值。 感謝Daniëlvan Eeden提供的補丁。 (錯誤#27235065,錯誤#88825)

 

棄用和刪除說明

不兼容的更改:這些不推薦的兼容性SQL模式已被刪除:DB2,MAXDB,MSSQL,MYSQL323,MYSQL40,ORACLE,POSTGRESQL,NO_FIELD_OPTIONS,NO_KEY_OPTIONS,NO_TABLE_OPTIONS。它們不能再分配給sql_mode系統變量,或者作為mysqldump --compatible選項的允許值使用。

刪除MAXDB意味着CREATE TABLE或ALTER TABLE的TIMESTAMP數據類型不再被視為DATETIME。

對於使用MySQL 8.0中刪除的SQL模式的MySQL 5.7應用程序,從MySQL 5.7主站復制到MySQL 8.0從站時語句可能失敗,或者可能對主站和從站有不同的影響。為了避免這些問題,應該修改使用MySQL 8.0中刪除模式的應用程序以避免它們。

以下與帳戶管理相關的功能已被刪除:

使用GRANT創建用戶。相反,使用CREATE USER。遵循這種做法,NO_AUTO_CREATE_USER SQL模式對於GRANT語句而言是不重要的,因此它也被刪除。

使用GRANT修改特權分配以外的帳戶屬性。這包括身份驗證,SSL和資源限制屬性。相反,在創建帳戶時使用CREATE USER創建這些屬性,或者使用ALTER USER修改它們。

由CREASS USER和GRANT的密碼'hash_string'語法標識。相反,對於CREATE USER和ALTER USER,使用IDENTIFIED WITH auth_plugin AS'hash_string',其中'hash_string'值的格式與指定插件兼容。

此外,由於已將IDENTIFIED BY PASSWORD語法刪除,因此log_builtin_as_identified_by_password系統變量是多余的,並且已被刪除。

PASSWORD()函數。此外,PASSWORD()刪除意味着SET PASSWORD ... = PASSWORD('auth_string')語法不再可用。

old_passwords系統變量。

對於使用MySQL 8.0中刪除的功能的MySQL 5.7應用程序,當從MySQL 5.7主站復制到MySQL 8.0從站時,語句可能會失敗,或者可能對主站和從站有不同的影響。為了避免這些問題,應該修改使用MySQL 8.0中刪除的功能的應用程序,以避免它們,並盡可能使用替代方法。 (Bug#27455708)

 

 

INFORMATION_SCHEMA注釋

新的INFORMATION_SCHEMA.KEYWORDS表列出了MySQL考慮的關鍵詞,並且對於每個表來說明它是否被保留。 此表為應用程序提供了MySQL關鍵字信息的運行時間源。 請參閱INFORMATION_SCHEMA關鍵字表。

另外,如果你從源代碼構建MySQL,構建過程會生成一個包含關鍵字數組和關鍵字的保留狀態的keyword_list.h頭文件。 該文件可以在build目錄下的sql目錄中找到。 此文件可能對需要關鍵字列表的靜態源的應用程序有用。

 

安裝說明

 RPM和Debian軟件包現在將當前的MySQL系列添加到共享目錄名稱(例如share / mysql-8.0)。 (錯誤#27638192,錯誤#26990531)

 

日志記錄

 寫入錯誤日志的消息現在指示事件發生的子系統。 可能的子系統值是InnoDB(InnoDB存儲引擎),Repl(復制子系統),Server(否則)。

 

打包說明

 

使用Debian軟件包進行安裝或升級現在會顯示一個對話框,其中包含一個用於將默認身份驗證插件設置為mysql_native_password的選項。 這對於某些安裝站點的向后兼容性可能很有用。 (Bug#27454287,錯誤#27667294)

compile_innodb腳本不再使用,並且已從MySQL發行版中刪除。 感謝Alexey Kopytov的建議。 (錯誤#27448099,錯誤#89437)

 

性能架構注釋

 

新的性能架構表log_status提供的信息使聯機備份工具能夠在復制過程中復制所需的日志文件,而不會鎖定這些資源。 當查詢log_status表時,服務器會阻塞日志記錄和相關的管理更改,只需足夠長的時間填充表,然后釋放資源。 log_status表通知聯機備份應將其應復制到master的二進制日志和gtid_executed記錄中的點以及每個復制通道的中繼日志。 它還為各個存儲引擎提供相關信息,例如最后一個日志序列號(LSN)和InnoDB存儲引擎上次檢查點的LSN。

需要BACKUP_ADMIN特權才能訪問log_status表。 (Bug#27599831)

性能模式對象現在具有默認字符集utf8mb4。 (Bug#27407745)

 

安全說明

 

yaSSL不再包含在MySQL發行版中。 wolfSSL可能被用作具有GPLv2兼容許可證的功能等同替代品。另外,wolfSSL(如OpenSSL)支持TLSv1.2協議,而yaSSL不支持。

有關使用wolfSSL從源代碼構建MySQL的說明,請參閱MySQL源代碼分發中的extra / README-wolfssl.txt文件。 WITH_SSL CMake選項現在允許wolfssl作為有效值,不再將其作為值綁定。要使用-DWITH_SSL = wolfssl,您必須按照README-wolfssl.txt中的說明進行操作。有關更多信息,請參閱OpenSSL與wolfSSL。 (Bug#26671671)

如果使用OpenSSL進行編譯,MySQL現在支持FIPS模式,並且運行時可以使用OpenSSL庫和FIPS對象模塊。 FIPS模式對加密操作施加了條件,例如對可接受的加密算法的限制或對較長密鑰長度的要求。 ssl_fips_mode系統變量允許在服務器端控制FIPS模式。 --ssl-fips-mode客戶端選項可以在客戶端控制這些程序的FIPS模式:mysql,mysqladmin,mysqlbinlog,mysqlcheck,mysqldump,mysqlimport,mysqlpump,mysqlshow,mysqlslap,mysqltest,mysqlxtest,mysql_secure_installation和mysql_upgrade。請參閱FIPS支持。

 

空間數據支持

 

不兼容的更改:這些幾何集合更改已經實現:

支持幾何集合數據類型的標准GeomCollection名稱作為GeometryCollection數據類型名稱的同義詞。

作為GeometryCollection()函數的同義詞支持GeomCollection()函數。

GeomCollection和GeomCollection()是首選的數據類型和函數名稱。

不兼容性:由於首選數據類型名稱發生變化,某些INFORMATION_SCHEMA表,諸如SHOW CREATE TABLE之類的語句和顯示數據類型信息的ST_GeometryType()函數現在顯示GEOMCOLLECTION而不是GEOMETRYCOLLECTION。 應該調整尋找GEOMETRYCOLLECTION的應用程序來解釋這種變化。

有關更多信息,請參閱GeometryCollection類和創建幾何值的MySQL特定函數。

 

sys架構注釋

 sys模式對象現在具有默認字符集utf8mb4。 (Bug#27675959)

 

測試套件注釋

 通過減少浮點結果的GIS處理中的編譯器和平台差異,可以簡化不再需要四舍五入以避免虛假測試失敗的相關測試用例。 感謝Daniel Black提供的補丁。 (錯誤#26540102,錯誤#87223,錯誤#27462294)

 

X插件說明

 

將MySQL用作文檔存儲時,現在完全支持使用X DevAPI在幾何值列上使用SPATIAL索引。以前,可以創建空間索引,但空間參考系統標識符(SRID)未包含在索引列中,因此優化程序未使用該索引。 SRID屬性現在被添加到索引列中。 (Bug#27568243)

與X插件測試一起使用的套接字文件現在僅限於22個字符的文件名。 (錯誤#27460677,錯誤#89464)

Bug#26328274的修復程序導致在調試版本中為X插件連接使用空主機名時產生斷言。問題現在已修復。 (錯誤#27266584,錯誤#88925)

當使用PLAIN身份驗證方法使用未設置密碼的用戶帳戶時,X插件未填充密碼緩存。這導致以后的認證嘗試失敗。如果用戶帳戶的密碼為空,則密碼緩存現在可以正確填充條目。 (Bug#27257722)

X插件現在支持在MySQL 8.0.4中添加的RESTART SQL語句,以便在客戶端會話中重新啟動MySQL服務器實例。 (Bug#27245319)

從版本8.0.4開始,使用X協議的MySQL Shell連接可以使用TCP或Unix套接字。此修補程序允許在UNIX套接字連接中使用加密協議,因此需要加密連接的用戶帳戶才能夠連接。 (Bug#27192091)

Bug#26647488修正了對DATETIME數據類型的處理,現在也正確地解碼了從舊版本插件接收的消息,該插件沒有可用於識別數據類型的新字段。 (Bug#27169735)

X當連接選項中指定的默認數據庫無效時,使用X協議的插件連接嘗試不會返回錯誤,並且連接允許使用空默認數據庫。使用經典MySQL協議的連接嘗試確實返回錯誤並且不允許連接。如果指定了無效的模式,X協議連接嘗試現在也禁止連接。 (Bug#26965020)

X插件現在默認加載,這意味着不再需要安裝插件。

 

功能添加或更改

 

InnoDB:用於InnoDB表空間的ibd2sdi序列化字典信息(SDI)抽取實用程序現在支持一個--pretty選項,用於控制SDI數據的JSON漂亮打印格式。漂亮的打印格式是默認啟用的。禁用使用--skip-pretty的漂亮打印格式可以減少提取的SDI數據的大小。 (Bug#27546514)

InnoDB:為了提高具有大緩沖池的系統的啟動性能,緩沖池初始化現在是多線程的。 (錯誤#22963374,錯誤#80784)

InnoDB:實現了以下重做日志記錄優化:

用戶線程現在可以並發寫入日志緩沖區而不同步寫入。

用戶線程現在可以按照寬松的順序將臟頁面添加到flush列表中。

現在專用的日志線程負責將日志緩沖區寫入系統緩沖區,將系統緩沖區刷新到磁盤,將寫入和刷新的重做通知用戶線程,維持放寬的清空列表順序所需的延遲,並編寫檢查點。

添加了系統變量,用於配置等待刷新重做的用戶線程使用旋轉延遲:

innodb_log_wait_for_flush_spin_hwm:定義最大平均日志刷新時間,超過該時間,用戶線程在等待刷新的重做時不再旋轉。

innodb_log_spin_cpu_abs_lwm:定義最小CPU使用量,低於該值時,用戶線程在等待刷新重做時不再旋轉。

innodb_log_spin_cpu_pct_hwm:定義最大CPU使用量,超過這個值,用戶線程在等待刷新的重做時不再旋轉。

innodb_log_buffer_size配置選項現在是動態的,它允許在服務器運行時調整日志緩沖區的大小。

有關更多信息,請參閱優化InnoDB重做日志。

Solaris:在Solaris上,MySQL現在可以使用Developer Studio 12.6構建。 (錯誤#27055190,錯誤#88316)

在數據目錄初始化期間進行記錄(例如,使用mysqld --initialize)已更改:

啟動消息表明服務器正在初始化模式下運行。

寫入消息指示初始化何時完成。

有關CA證書自簽名的消息被抑制。

(錯誤#27557952,錯誤#89693)

如果啟用了日志記錄,則-log后綴不再附加到服務器版本字符串。這會影響版本系統變量的值。 (錯誤#27532097,錯誤#89626)

寫入錯誤日志的服務器關閉行現在包含服務器版本。 (錯誤#27522788,錯誤#87910)

如果行格式是默認格式,則SHOW CREATE TABLE通常不會顯示ROW_FORMAT表格選項。在可移動表空間的表導入和導出操作期間,這可能會導致問題。 MySQL現在支持一個show_create_table_verbosity系統變量,該變量在啟用時會導致SHOW CREATE TABLE顯示ROW_FORMAT,而不管它是否為默認格式。 (Bug#27516741)

性能架構內存儀器開銷減少了。 (Bug#27500610)

在數據目錄初始化期間,服務器使用sql_mode =''創建對象。現在服務器使用默認的sql_mode值(其中包括嚴格模式)。 (錯誤#27476029,錯誤#89495)

在mysql-test / std_data / Index.xml中定義的排序規則僅用於測試目的,否則不應使用。評論被添加到文件中,以使其清晰,因為有些用戶在非測試環境中使用它們。 (錯誤#27421838)

RESET PERSIST不再執行隱式提交。 (Bug#27374791)

對於持久變量,Performance Schema variables_info表的SET_TIME列現在反映變量持續的時間,而不是服務器啟動時間。 (Bug#25677422)

以前,即使在表創建時明確指定了排序規則,但如果排序規則與表默認規則相同,SHOW CREATE TABLE也不會顯示列的排序規則。現在,如果明確指定了排序規則,則SHOW CREATE TABLE將始終顯示列排序規則,即使排序規則與表默認規則相同。 (錯誤#11754608,錯誤#46239)

 

錯誤修復

 

重要更改:啟用NO_ZERO_DATE SQL模式時,如果未為該列指定DEFAULT,則ALTER TABLE會拒絕嘗試將已聲明為NOT NULL的DATE或DATETIME列添加到非空表中。由於生成的列沒有默認值,因此此限制還會阻止將生成的DATE NOT NULL或DATETIME NOT NULL列添加到非空表中。由於可以使用用於生成列的表達式來代替缺少用於確定列值的缺省值,因此現在可以為生成的列取消此限制。 (Bug#27252354)

重要更改:對於ANALYZE TABLE ... UPDATE HISTOGRAM語句,WITH N BUCKETS子句現在是可選的。如果未指定,則BUCKETS的默認值為100.(錯誤#89909,錯誤#27637968)

InnoDB:在致命錯誤消息寫入錯誤日志之前服務器已停止。 (Bug#27626478)

InnoDB:當確定是否可以授予等待鎖定時,忽略正在回滾的受害者事務持有的鎖定。 (Bug#27607235)

InnoDB:使用GCC 7.2.0編譯調試版本時,Sdi_Decompressor :: decompress()發生錯誤。 (Bug#27565889)

InnoDB:在並行創建多個緩沖池期間注冊緩沖池塊時引發了一個斷言。現在使用互斥鎖來保護緩沖池塊映射中緩沖池塊的注冊。 (Bug#27565865)

InnoDB:啟用標准監視器會導致錯誤。 (錯誤#27534041)

InnoDB:用於將列標記為隱藏的內部字段已從布爾字段更改為枚舉字段,以支持更多級別的列可見性。 (錯誤#27499518,錯誤#89553)

InnoDB:無效的與zlib相關的Valgrind失敗報告了條件跳轉或移動取決於未初始化的值。 (錯誤#27482740,錯誤#89509)

InnoDB:使用TempTable存儲引擎和NO PAD歸類時,返回了不正確的GROUP BY結果。 (Bug#27454796)

InnoDB:頁面壓縮功能中的壓縮長度值不正確會導致在第一次壓縮頁面時打孔會被跳過。 (Bug#27399897)

InnoDB:使用錯誤的--log-bin選項值啟動服務器會產生一個斷言,並且隨后嘗試使用正確的--log-bin值或不使用--log-bin選項來啟動服務器時,會繼續產生斷言失敗。 (Bug#27393317)

InnoDB:在UPDATE操作期間插入LOB時,沒有更新大對象(LOB)引用。 (Bug#27368662)

InnoDB:重新啟動服務器后,由於表標志與存儲在內存中的遠程數據目錄信息不一致,因此TRUNCATE TABLE操作引發了斷言。 (Bug#27367639)

InnoDB:嘗試使用CREATE TEMPORARY TABLE ... TABLESPACE語法未能報告錯誤,在每個文件表的表空間中創建一個臨時表。臨時表空間只允許在臨時表空間中使用。 (Bug#27361662)

InnoDB:在另一個線程試圖分配頁面之前,大對象(LOB)第一頁上的閂鎖未被釋放,導致死鎖。 (錯誤#27360492)

InnoDB:通過引入追蹤最小活動事務標識的成員變量來優化將隱式鎖轉換為顯式鎖。

感謝翟維祥的補丁。 (錯誤#27353468,錯誤#89127)

InnoDB:InnoDB存儲引擎在內部使用的mysql.innodb_ddl_log和mysql.innodb_dynamic_metadata表現在受到保護。這些表上的DDL和DML操作不再允許,並且這些表不再出現在INFORMATION_SCHEMA查詢結果中。 (錯誤#27353455,錯誤#89129)

InnoDB:使用innodb_page_size設置為4K升級MySQL 5.7實例會導致mysql_upgrade失敗,並顯示“指定密鑰太長;最大密鑰長度為768字節“創建或修改系統表時出錯。該錯誤被禁止,以允許mysql_upgrade客戶端在innodb_page_size設置為4K的實例上運行。 (Bug#27338431)

InnoDB:恢復過程無法正確確定space_id值,導致服務器退出。 (Bug#27331936)

InnoDB:修改索引列的可空性的ALTER TABLE操作引發了斷言。 InnoDB錯誤地認為必須添加新的主鍵,而不是從現有的唯一鍵創建。 (錯誤#27330454,錯誤#89087)

參考文獻:這個問題是一個回歸:Bug#24397406。

InnoDB:在ALTER TABLE ... IMPORT TABLESPACE操作之后,無法從INFORMATION_SCHEMA.INNODB_COLUMNS表中正確檢索元數據。 (Bug#27322099)

InnoDB:涉及大對象(LOB)值的INSERT操作引發了斷言。拆分LOB片段后,目錄條目沒有足夠的空間。 (錯誤#27320977)

InnoDB:在使用utf8mb4字符集的服務器上,ALTER TABLE操作期間的INSERT或UPDATE更改了包含虛擬列的表格的行格式,導致索引損壞。 (Bug#27319084)

InnoDB:從INFORMATION_SCHEMA.INNODB_COLUMNS檢索的數據對於包含虛擬列的表不正確。 (Bug#27316037)

InnoDB:由於密鑰環文件無效,服務器恢復后無法啟動。從備份創建的密鑰環文件為空。 (Bug#27307740)

InnoDB:后台線程之間發生死鎖,一個嘗試從緩存中逐出全文搜索表,另一個嘗試同步表,導致InnoDB集群節點失敗。 (Bug#27304661)

InnoDB:在InnoDB恢復消息中糾正了錯字。感謝Daniëlvan Eeden提供的補丁。 (Bug#27287979,Bug#27010613,Bug#88185)

InnoDB:在InnoDB恢復期間報告了一條消息,指出缺少加密算法支持。 (Bug#27286020)

InnoDB:缺少或不匹配的密鑰環文件在啟動時導致斷言失敗。 (Bug#27278324)

InnoDB:檢查加密表空間文件的空間ID時,返回錯誤,指出缺少加密支持。 (錯誤#27278100)

InnoDB:打印“太多打開文件”警告的調試消息現在僅在打開文件的數量達到300的限制時才會打印。(錯誤#27277844)

InnoDB:在釋放間隙時未能跳過謂詞鎖定會引發調試斷言,正如在釋放前綴上的間隙鎖定之前未能刪除上游記錄位一樣。 (Bug#27272806,Bug#27294066)

InnoDB:在克隆的數據目錄上啟動服務器時發生表空間ID發現失敗。 (Bug#27265874)

InnoDB:一個不受保護的全局變量(fil_n_file_opened)在關閉服務器時導致斷言。 (Bug#27265473)

InnoDB:在檢查正在使用的文件上的未決I / O時引發了不再有效的斷言。 (Bug#27263206)

InnoDB:升級到MySQL 8.0時,空的通用表空間導致失敗。預計空的數據文件具有特定數量的頁面。 (Bug#27261822)

InnoDB:由於--innodb-directories選項指定的目錄包含密鑰環數據文件,因此發生啟動失敗。 --innodb-directories選項只能識別InnoDB表空間文件。 (Bug#27253116)

InnoDB:計算最小邊界矩形(MBR)大小增加的函數錯誤地返回0,導致R樹損壞。 (Bug#27237472)

InnoDB:臨時表上的REPLACE操作引發了一個斷言。 (Bug#27225649)

InnoDB:在同一個表上伴隨着並發DML的表上的聯機ALTER TABLE操作引發了斷言。在訪問DML日志以確定虛擬列的長度之前,不會執行日志結束檢查。 (Bug#27158030)

InnoDB:當添加虛擬索引失敗時,已經釋放的虛擬索引不會從虛擬列索引列表中刪除。 (Bug#27141613)

InnoDB:在同一個語句中添加虛擬列和索引會導致錯誤。 (Bug#27122803)

InnoDB:撤消表空間截斷操作引發了一個斷言。確定撤消表空間段是否處於非活動狀態的檢查無效。 (Bug#27114068)

InnoDB:當TempTable存儲引擎無法使用臨時文件和mmap分配內存時,會報告一個無效錯誤,指示將使用定義的磁盤存儲引擎。 (錯誤#26990375)

InnoDB:默認行格式為REDUNDANT的服務器上的表空間導入操作引發了斷言失敗。 (錯誤#26960215)

InnoDB:基於生成列的存儲字段允許基列具有NULL值。 (錯誤#26958695)

InnoDB:評估解析函數中的子查詢提出了一個斷言。 (錯誤#26909960)

InnoDB:與數據字典操作相關的鎖導致CREATE TABLE性能下降。 (錯誤#26848711,錯誤#87827)

InnoDB:用於備份操作的LOCK INSTANCE能夠在不等待並發DDL操作完成的情況下獲取備份鎖。 (錯誤#26831155,錯誤#87812)

InnoDB:未正確指定的innodb_data_file_path或innodb_temp_data_file_path值返回語法錯誤,未指定導致初始化失敗的系統變量的名稱。 (Bug#26805833)

InnoDB:為TRUNCATE TABLE操作打開的處理程序導致操作斷言。在刪除表之前,服務器現在關閉打開的處理程序。

此錯誤的修補程序還改進了與外鍵約束相關的TRUNCATE TABLE錯誤消息,並使截斷損壞的表成為可能。 (Bug#26710839)

InnoDB:重新創建表的在線DDL操作在應用的最后一個插入日志記錄跨兩頁分割時產生斷言。 (錯誤#26696448,錯誤#87532)

InnoDB:嘗試根據尚未存儲的離頁大對象值生成虛擬列值時引發斷言。 (Bug#26625652)

InnoDB:R樹搜索計算刪除標記的記錄,使其找到比聚集索引中更多的記錄。結果,有效的R樹索引被標記為損壞。 (錯誤#26381207)

InnoDB:重命名模式的RENAME TABLE操作無法重命名在全文搜索索引先前被刪除時留下的全文搜索公共輔助表,導致嘗試刪除舊模式時斷言失敗。 (Bug#26334149)

InnoDB:當一個線程試圖讀取一個包含BLOB數據的記錄,而另一個線程正在向外部頁面寫入相同的數據時引發了一個斷言。 (Bug#26300119)

參考文獻:這個問題是一個回歸:Bug#23481444。

InnoDB:外部存儲列的列前綴超過了在線日志中的可用內存量。 (Bug#25928471)

InnoDB:引入了一個有問題的鎖,用於在檢查點期間保護將動態元數據更改寫入重做日志的操作被刪除。現在使用互斥鎖來代替。檢查點LSN也進行了調整,以保護動態元數據更改。 (Bug#25834374)

InnoDB:InnoDB在使用列偏移量搜索自動增量列的索引時未能解釋虛擬列。 (錯誤#25076416)

InnoDB:無效的調試條件導致緩沖池組塊分配失敗,導致在清除線程嘗試訪問未分配的塊時導致斷言失敗。 (錯誤#23593654)

參考文獻:這個問題是一個回歸:Bug#21348684。

InnoDB:由於票據獲取死鎖,線程被阻止進入InnoDB存儲引擎。 (錯誤#23476050)

分區:執行ALTER TABLE EXCHANGE PARTITION時,存儲引擎返回的錯誤未由服務器正確處理。 (Bug#27320682)

復制:當MySQL使用--plugin-load ='group_replication.so'啟動但組復制未啟動時,啟動異步從通道會導致服務器無響應。 (錯誤#27584141)

復制:已回滾的空XA事務不應記錄在二進制日志中或添加到gtid_executed系統變量中的一組事務中。但是,如果在以XA COMMIT ... ONE PHASE語句結尾的空XA事務之后執行回滾空XA事務,則它們會作為XA ROLLBACK語句錯誤地添加到二進制日志中,並且也會被錯誤地添加到gtid_executed系統變量。問題現在已修復。 (錯誤#27435974)

復制:組復制文件已從快速目錄移動到插件目錄。 (Bug#27413789)

復制:當系統變量gtid_next設置為AUTOMATIC時,回滾並且未記錄在二進制日志中的空XA事務被錯誤地添加到gtid_executed系統變量中的一組事務中,導致不一致。回滾的空XA事務不再記錄在gtid_executed中。 (Bug#27407670)

復制:組復制沖突檢測使用模式和表名稱作為主鍵等效(PKE)的一部分,以檢測和禁止沖突事務。 lower_case_table_names系統變量的值更改了模式和表名稱的存儲和外部化方式,這取決於配置的值可以將名為T1的表保存為t1。組中的這種差異可能會導致不一致。現在,成員必須都具有與lower_case_table_names相同的值。 (Bug#27401817)

復制:在macOS上的任何組復制相關配置中使用IP地址或主機名都失敗。 (Bug#27376511)

復制:在聯機輔助成員上更改組復制所需的設置可能會導致意外停止。 (Bug#27317478,Bug#27157202)

復制:replication_group_member_stats性能模式表中的LAST_CONFLICT_FREE_TRANSACTION值在組成員之間未正確同步。 (錯誤#27317431)

復制:在發出START GROUP_REPLICATION后,gtid_mode系統變量將被鎖定,以防止對其值進行任何修改,直到該組處於聯機狀態。在此期間修改gtid_mode的任何嘗試都會被阻止。作為啟動組復制過程的一部分,服務器需要設置super_read_only = off,它依賴於SET GTID_MODE獲取的鎖。這可能導致組復制掛起,並且不可能連接到服務器來解決這種情況。為防止出現這種情況,當無法獲取SET GTID_MODE所需的鎖時,操作將中止。 (錯誤#27312241)

復制:當一個成員加入一個組時,有可能請求加入被拒絕。如果拒絕導致重試,例如因為正在接觸的種子成員不在組中,那么重試周期有可能無限持續。 (Bug#27294009)

復制:如果組未能啟動,例如由於未聯系任何種子成員,因此組中有一分鍾的時間內組重試啟動進程。嘗試在此期間修改組復制插件選項可能會導致意外停止。現在,嘗試在插件啟動或停止期間修改組復制插件選項會導致錯誤。 (錯誤#27275312)

復制:現在將默認的30天二進制日志過期期限設置為binlog_expire_logs_seconds系統變量的默認值,而不是已棄用的expire_logs_days系統變量。現在,binlog_expire_logs_seconds默認值為2592000(30 * 24 * 60 * 60秒),而expire_logs_days現在默認為零。

在MySQL 8.0.3和8.0.4中,binlog_expire_logs_seconds和expire_logs_days的影響是累積的。從MySQL 8.0.11開始,這不再是這種情況,新的行為如下所示:

如果為兩個變量指定非零值,則僅使用binlog_expire_logs_seconds的值來確定二進制日志到期時間段,並且將忽略expire_logs_days的值。

如果您只為一個變量指定非零值,則該值用於確定二進制日志到期期限,而其他值的默認值不適用。

如果您為這兩個變量都指定了一個值,則將使用binlog_expire_logs_seconds中的30天的缺省值作為二進制日志到期期限。

如果您嘗試在另一個變量已設置時動態設置其中一個變量,則會發出錯誤消息,如果您在啟動時為這兩個變量指定了非零值,則會發出警告消息。如果您為expire_logs_days設置了值,也會發出棄用警告。

要禁用二進制日志的自動清除,請為binlog_expire_logs_seconds顯式指定值0,並且不要為expire_logs_days指定值。為了與早期版本兼容,如果您為expire_logs_days明確指定值0,並且不為binlog_expire_logs_seconds指定值,則也會禁用自動清除。在這種情況下,binlog_expire_logs_seconds的默認值不適用。您不再需要將這兩個變量設置為零以禁用自動清除。 (Bug#27252658)

復制:試圖在配置為在引導時自動啟動插件的服務器上卸載組復制插件可能會導致死鎖。現在,卸載過程將檢查以確保插件未處於啟動過程中,並且如果存在則優雅地失敗。 (Bug#27179336)

復制:不再允許DDL語句CREATE DATABASE,ALTER DATABASE和DROP DATABASE與多線程從機上的其他語句並行執行。這些語句需要對模式進行獨占元數據鎖定,從而在復制從服務器上設置slave_preserve_commit_order = 1時導致死鎖的理論可能性。 (錯誤#27165446)

復制:在禁用二進制日志記錄的復制從站上,空的DDL語句(例如,由於復制過濾器)引發了斷言。啟用二進制日志記錄后,BEGIN和COMMIT語句將寫入二進制日志以生成事務,但這些語句在禁用二進制日志記錄時不可用,導致斷言。 MySQL服務器現在檢查DDL事務是否為空並且未標記為已啟動的情況,並在不提高斷言的情況下處理它。 (Bug#27164661)

復制:新的系統變量rpl_read_size可用於設置從二進制日志文件和中繼日志文件中讀取的最小數據量(以字節為單位)。默認的讀取大小是8KB。如果這些文件的繁重磁盤I / O活動阻礙了數據庫的性能,那么如果文件沒有被操作系統緩存,增加讀取大小可能會減少文件讀取和I / O延遲。

請注意,為每個從二進制日志和中繼日志文件讀取的線程(包括主服務器上的轉儲線程和從服務器上的協調器線程)分配了此值的大小的緩沖區。因此設置較大的值可能會影響服務器的內存消耗。

感謝Facebook團隊的補丁。 (Bug#27147095)

 

復制:在啟用GTID的服務器上,如果在刷新事務但尚未提交時使用RESET MASTER,則服務器GTID將保持不正確的狀態。此時,交易的GTID已被添加到擁有的GTID集合中,但尚未添加到已執行的GTID集合中。當未提交事務的內容被RESET MASTER語句清除時,GTID已從二進制日志中刪除,但GTID由於已被擁有而無法重用,所以GTID的順序存在差距。

通過此修復,RESET MASTER獲取全局讀鎖定,以確保在操作期間沒有事務處於落實階段,並且在操作期間沒有新事務進入落實階段。如果有任何正在進行的提交,RESET MASTER會一直等到它們完成。全局讀鎖定在復位完成時釋放,然后通知存儲引擎成功復位。如果線程的FLUSH TABLES WITH READ LOCK已被執行,RESET MASTER不會重試該鎖。 (Bug#27041759)

復制:嘗試使用SET @@ SESSION.GTID_NEXT語句為不安全或空的XA事務設置GTID的操作不正確。在gtid_mode設置為OFF或OFF_PERMISSIVE且enforce_gtid_consistency設置為OFF的服務器上,為不安全的XA事務(創建或刪除臨時表)設置GTID會導致服務器的GTID違例計數器出現不一致,並引發斷言。測試還顯示,為空的XA事務設置GTID會導致將不正確的事件序列寫入二進制日志。這兩種情況現在都可以正確處理。 (錯誤#27041402,錯誤#88272)

復制:旋轉二進制日志時為服務器停止發出的錯誤消息未說明問題的正確原因。錯誤消息已得到增強,以包含導致服務器停止的實際錯誤作為消息的一部分。在將最后一個二進制日志中的GTID集保存到mysql.gtid_executed表時出現內存不足錯誤的情況下,還添加了新的錯誤ER_OOM_SAVE_GTIDS。 (錯誤#27040070,錯誤#88262)

復制:組復制使用事務寫入集提取對組成員進行沖突檢測。在詳細的性能分析過程中發現了性能回歸,該性能分析由此錯誤修復處理。內存分配已針對寫入集提取進行了優化,內存復制操作已減少。此外,外鍵寫入集現在僅在當前表具有外鍵時收集。 (錯誤#27016053)

復制:當使用group_replication_ip_whitelist時,可以配置一個組,使其可以運行,即使所有成員都無法建立彼此的內部組通信連接,導致行為不一致。現在,如果IP位於白名單中,或者IP屬於XCom配置的當前成員,則接受傳入連接。這可確保成員始終能夠創建組通信所需的內部網絡。 (Bug#26846549,Bug#27406775)

復制:即使查詢導致錯誤,語句CREATE USER IF EXISTS(或IF NOT EXISTS)和ALTER USER IF EXISTS(或IF NOT EXISTS)也被寫入二進制日志。 MySQL服務器現在檢查導致這些查詢失敗的錯誤(例如,指定了無效的插件),並且不會在該情況下記錄該語句。請注意,如果這些語句成功但對主服務器沒有影響,因為條件不滿足,則會將語句寫入二進制日志,因為復制從服務器可能會遇到該情況(請參閱錯誤#25813089,錯誤號85733)。 (Bug#26680035)

參考文獻:另見:錯誤#25813089,錯誤#85733。

復制:在多主群組中,當成員也配置了異步復制通道時,異步通道可能在組復制啟動之前啟動。這可能導致在成員成為該組的在線成員之前發生異步通道處理事務,從而在成員嘗試加入該組時導致問題。此修復確保組成員的異步通道在成員上線之前不會啟動。 (Bug#26648393)

復制:在MySQL 8.0中引入了對原子DDL的支持后,支持原子DDL的復制從服務器可以與不支持原子DDL的早期MySQL版本的復制主服務器分離。如果只能部分應用DDL語句,則使用MySQL 8.0的從站會回滾整個DDL語句,但使用較早版本的主站可能會提交DDL語句的有效部分。現在,如果主站和從站上的原子DDL語句不成功提交,並且在繼續之前應檢查主站和從站的狀態沒有發生分歧,則會記錄一條錯誤消息。 (Bug#26133488

復制:對於包含BLOB數據類型的虛擬生成列的更新,某些存儲引擎需要舊的和新的BLOB值進行復制。此修復將相同的行為擴展為JSON和GEOMETRY數據類型,這些數據類型基於BLOB數據類型,因此在未存儲舊值時會產生相同的問題。 (Bug#25873029)

復制:MySQL 8.0.0中的行為更改將生成列的標識從之前移至計算二進制日志記錄的寫入集之后。這導致了NDB群集復制的問題,因為如果存儲引擎不需要,該存儲引擎會從日志事件中省略生成的列,從而導致由復制從屬服務器上的應用程序線程為它們設置NULL值。生成的列的標識現在已經回到寫集合計算之前,因此不會發生問題。 (錯誤#25827408)

復制:在多線程復制從屬設備上(slave_parallel_workers大於0),對於SHOW SLAVE STATUS,從屬設備滯后於主設備的情況未被Seconds_Behind_Master字段報告。該值現在正確報告。感謝Robert Golebiowski的補丁。 (錯誤#25407335,錯誤#84415)

復制:在語句SET @@ GLOBAL.GTID_PURGED中,加號(+)可與GTID集一起使用,以指示指定的GTID集與gtid_executed不相交。對於為函數GTID_SUBSET()和GTID_SUBTRACT()指定的GTID集合,也允許使用加號,因為它們沒有意義。這些功能不能再指定加號。此外,與SET @@ GLOBAL.GTID_PURGED操作有關的錯誤消息已得到改進。 (Bug#24675979)

復制:使用選項--read-from-remote-server和--hexdump調用時,mysqlbinlog無法生成二進制日志內容的十六進制轉儲,后者是生成自動增量值的SQL語句之后引用的用戶定義變量或調用RAND()。這些事件的事件類型之后是信息行查詢日志事件,並且在接收到后續行查詢日志事件時,mysqlbinlog緩存原始事件以進行打印。當接收到后續事件時,指向包含原始事件的內存的指針失效,因此無法訪問原始數據以產生十六進制轉儲。這個問題現在已經解決了。 (Bug#24674276)

復制:對二進制日志解碼過程進行了許多更改,以改進處理無效或損壞的二進制日志條目。 (錯誤#24365972)

復制:在XA事務WL#6860引入二進制日志記錄之后,如果在從屬設備上設置MASTER_AUTO_POSITION = 1,則在從具有該功能的主設備復制到沒有該功能的從設備的復制期間,可能會在調試版本中產生斷言。該斷言已被刪除,以便調試版本現在具有與非調試版本相同的行為,並且可以嘗試復制不受支持的事件類型,而不管是否設置了MASTER_AUTO_POSITION = 1。 (Bug#20677683)

Linux:現在建立在Alpine Linux上,可以充分利用AIO支持。 (Bug#27327874)

macOS:在macOS上,mysql_config --libs沒有列出任何SSL庫。 (Bug#27232576)

Microsoft Windows:在Windows上,RESTART語句通過使用mysqld fork來實現,其中一個進程作為另一個進程充當服務器的監視器。這使得確定要附加的服務器進程以進行調試更加困難。為了減輕這一點,現在使用--gdb啟動服務器可以抑制分叉。副作用是,對於以此選項啟動的服務器,RESTART僅退出並且不會重新啟動。 (Bug#27273229)

JSON:在某些情況下,JSON_QUOTE()函數可能會將帶引號的字符串寫入保存輸入字符串的同一緩沖區,這可能會導致錯誤的結果。現在進行檢查以確保它不會嘗試寫入正在讀取的同一個緩沖區。 (錯誤#27312444)

JSON:JSON_SEARCH()不再對緩存的Json_path對象進行任何修改,而是對表示路徑的String對象進行任何必要的更新。這節省了路徑的Json_path和String表示之間所需的往返次數,從而加快了執行速度。另外,JSON_SEARCH()的one_or_all和escape_char參數被不必要地緩存;這些參數不再被緩存,這也應該改善這個函數的執行時間。 (錯誤#87383,錯誤#26614455)

參考文獻:另見:錯誤#21450084,錯誤#77785,錯誤#21472872。

檢查是基於數據字典版本信息實施的,以防止啟動MySQL 8.0服務器時使用由以后的MySQL版本創建的數據目錄。該檢查對於防止當前不支持的就地降級是必需的。 (Bug#27708249)

受保護的數據字典表不再可以通過放置在服務器初始化文件中的語句訪問。 (錯誤#27674311,錯誤#90010)

數據字典和INFORMATION_SCHEMA版本號與新的MySQL服務器版本號同步。 (Bug#27674285)

服務器沒有使用帶前綴索引的BLOB列正確處理某些LIKE查詢。 (錯誤#27660560)

對於使用-DWITH_PROTOBUF = SYSTEM配置的構建,在安裝了ProtoBuf 3.5的系統上構建失敗。 (錯誤#27638713,錯誤#89915)

在mysqld-auto.cnf中存儲的持續變量的時間戳的微秒部分始終為000000。(錯誤#27629719)

Debian軟件包現在可以處理MeCab插件字典文件的依賴關系。現在Fedora軟件包處理兩個MeCab軟件包的依賴關系,而不僅僅是utf-8軟件包。 (Bug#27612730,錯誤#27613539)

對於使用systemd作為正常進程(Type = notify)運行mysqld並使用套接字文件進行通信的平台,MySQL 8.0.11中的更改​​在SLES 12.2之前的SLES上不起作用。 (錯誤#27604999)

INFORMATION_SCHEMA.STATISTICS表中的NON_UNIQUE列在MySQL 8.0之前的類型為BIGINT,但隨着數據字典的引入,它成為了MySQL 8.0中的VARCHAR。 NON_UNIQUE列現在再次具有整數類型(INT,因為該列不必像BIGINT那樣大)。 (錯誤#27593348,錯誤#89793)

有了一些輸入,ST_Crosses()可能會導致服務器退出。 (Bug#27576700)

有些錯誤消息正在寫入錯誤日志,錯誤ID為0,而不是合法的錯誤ID。 (Bug#27575608)

mysql_upgrade沒有正確設置MYSQL_SERVER_PUBLIC_KEY,導致無法讀取密鑰文件。 (Bug#27568278)

如果自動提交被禁用,mysql_upgrade在從MySQL 5.7升級到8.0時產生錯誤。 (Bug#27549249)

對於調試版本,從性能模式線程表的PROCESSLIST_STATE列中顯示非常長的階段名稱可能會引發一個斷言。 (Bug#27545688)

如果某些必需的變量已設置為保留變量,或者未按照適當的時間戳順序設置保留變量,則組復制無法啟動。 (Bug#27545544,Bug#27522405)

gtid_purged處理有內存泄漏。 (錯誤#27537968,錯誤#89645)

服務器重新啟動后,使用SET PERSIST來保持optimizer_trace_offset導致不正確的變量值。 (Bug#27536421)

validate_password組件可能會泄漏內存。 (錯誤#27521770,錯誤#89597)

sql / handler.h中的拼寫錯誤已更正。感謝Su Tristan的補丁。 (Bug#27516280,Bug#89594)

Performance Schema variables_info表為在!include或!includedir指令指定的選項文件內設置的變量顯示不正確的VARIABLE_SOURCE和VARIABLE_PATH值。 (Bug#27514223)

參考文獻:這個問題是一個回歸:Bug#25563891。

從MySQL 5.7升級到MySQL 8.0之后,第一次嘗試在具有--default-time-zone設置為特定時間值(如“+00:00”)的MySQL 5.7數據目錄中啟動服務器導致服務器退出。 (Bug#27512609,Bug#89584)

字符集內部數字的查找不是線程安全的,可能導致內存泄漏。 (錯誤#27507950)

一起使用-DWITH_LIBEVENT = system和-DWITH_ICU = system CMake選項會導致配置失敗。 (錯誤#27505535,錯誤#89398)

有些消息正在使用客戶端錯誤ID寫入服務器錯誤日志。 (錯誤#27503787,錯誤#89562)

在密鑰遷移模式下運行時,服務器可能會報告成功操作的錯誤。 (Bug#27493997)

從MariaDB升級到MySQL Community Edition在Fedora 27上失敗。(錯誤#27484835)

ALTER TABLE可能會掛起在等待表空間元數據鎖定狀態。 (錯誤#27472087,錯誤#89487)

從性能模式status_by_thread或variables_by_thread表中選擇不是線程安全的,可能會產生不正確的結果。 (錯誤#27471510)

INSERT ... ON DUPLICATE KEY UPDATE可能會被錯誤地處理,如果源表不產生任何行。 (錯誤#27460607)

SET PERSIST_ONLY忽略--skip-grant-tables,並繼續檢查設置系統變量所需的動態權限。 (Bug#27455943)

對於RPM軟件包和Docker RPM軟件包,包含的my.cnf文件現在包含指示如何恢復到以前的默認身份驗證插件(將caching_sha2_password更改為mysql_native_plugin)的信息,以便與舊客戶端兼容。 (Bug#27454015,錯誤#27675380)

在使用>的字符串比較中,只有一個操作數被處理為utf32。 (Bug#27452148)

 

InnoDB初始化期間的服務器出口導致AddressSanitizer(ASan)報告內存泄漏。如果表中包含無法分析的數據,該修補程序還會實現數據字典屬性表的正確處理。 (錯誤#27447981,錯誤#89433)

使用-DWITH_SSL = system,如果CMake無法找到系統OpenSSL庫和頭文件,則會產生令人困惑的消息。現在它立即退出並出現錯誤。 (Bug#27447874)

使用-DWITH_INNODB_EXTRA_DEBUG = ON進行配置會導致鏈接器錯誤。 (錯誤#27444255,錯誤#89412)

使用-DWITH_ZLIB =系統進行配置會導致鏈接器錯誤。 (錯誤#27435371,錯誤#89373)

UNION ALL查詢的結果集中的元數據可以表示為NEWDATE而不是DATE。 (錯誤#27422376)

在啟用未定義行為清除程序的情況下,否定-922337203685477580可能導致服務器退出。 (錯誤#27419181)

啟用協議壓縮功能后,可能會引發虛假斷言。 (錯誤#27418207,錯誤#89324)

參考文獻:這個問題是回歸:Bug#17922198。

與從數據字典中提取表空間對象以填充數據字典高速緩存相關的性能得到了改進。 (Bug#27402243)

如果服務器使用--skip-grant-tables啟動,則使用caching_sha2_password插件進行身份驗證的客戶端無法連接。 (錯誤#27400095,錯誤#89267)

Linux RPM和Debian軟件包現在包含運行MySQL測試套件所需的Perl JSON模塊的依賴信息。 Linux RPM軟件包現在包含運行MySQL測試套件所需的Perl Digest模塊的依賴信息。 (錯誤#27392800,錯誤#89250,錯誤#27392808,錯誤#89244)

新的系統變量default_collat​​ion_for_utf8mb4可以設置utf8mb4字符集的默認排序規則。該變量主要用於支持從MySQL 5.7或更早版本的主服務器復制到MySQL 8.0從服務器,或者使用MySQL 5.7主節點和一個或多個MySQL 8.0輔助節點進行組復制。將該變量的值復制到從站,以便從站可以正確處理源自主站的數據,並使用utf8mb4的不同默認歸類。這可能會有所幫助,因為MySQL 5.7中utf8mb4的默認排序規則是utf8mb4_general_ci,但MySQL8.0中的utf8mb4_0900_ai_ci排序規則是utf8mb4_general_ci。

變量值確定下列語句的默認utf8mb4歸類:

SHOW COLLATION和SHOW CHARACTER SET。

CREATE TABLE和ALTER TABLE具有CHARACTER SET utf8mb4子句,但不包含COLLATION子句,用於表字符集或列字符集。

CREATE DATABASE和ALTER DATABASE具有CHARACTER SET utf8mb4子句而沒有COLLATION子句。

任何包含形式為_utf8mb4'some text'的字符串字面值的語句,不包含COLLATE子句。

(Bug#27389878,錯誤#27081073)

用列名選項DESCRIBE忽略列名稱。 (錯誤#27387773,錯誤#89224)

在密鑰遷移模式下運行時,服務器忽略無效選項。 (錯誤#27387331)

對於很長的路徑名稱,路徑名稱規范化可能會失敗。 (Bug#27368298)

在配置期間,CMake認為rpcgen可用而不是檢查它。 (Bug#27368078)

客戶端身份驗證過程在釋放后可以使用內存。 (Bug#27366143)

-DWITH_ZLIB =系統可能導致其他CMake功能測試失敗。 (錯誤#27356658,錯誤#89135)

在某些系統上,使用mysqld --initialize初始化數據目錄非常慢。 (錯誤#27349579,錯誤#89122)

必須下載Boost才能使用RPM源代碼包構建現在使用安全連接。 (錯誤#27343289,錯誤#89104)

轉換ULONGLONG時間值的內部check_datetime_range函數可在Windows上引發斷言。 (錯誤#27340709)

caching_sha2_password身份驗證插件的鎖定過多(每個連接一個鎖定/解鎖)。這現在改進為每個插件安裝/卸載一次鎖定/解鎖。 (錯誤#27335346)

將'innodb_system'隱式指定為表分區的表空間名稱的CREATE TABLE ... LIKE操作引發了一個斷言。 (Bug#27331588)

SET PERSIST_ONLY可能會錯誤地存儲大值變量。 (Bug#27322254)

即使禁用二進制日志記錄,audit_log插件也可以將語句寫入二進制日志。 (錯誤#27315321)

某些使用GREATEST()或LEAST()的查詢產生堆使用后釋放錯誤。 (Bug#27312703)

一個external_language列被添加到mysql.routines數據字典表中以支持不同語言的存儲例程。存儲在此列中的數據可通過INFORMATION_SCHEMA.ROUTINES表的EXTERNAL_LANGUAGES列訪問。 (錯誤#27309116,錯誤#89038)

現在禁止使用與初始化服務器時使用的設置不同的lower_case_table_names設置來啟動服務器。限制是必要的,因為數據字典表字段使用的排序規則基於服務器初始化時定義的設置,並且使用不同的設置重新啟動服務器會導致與訂購和比較標識符的方式不一致。 (錯誤#27309094,錯誤#89035)

對於使用auth_sock認證插件進行身份驗證的帳戶,服務器無法接受來自較舊版本MySQL的客戶端的連接。 (Bug#27306178)

audit_log插件內存泄漏已更正。 (錯誤#27302151)

INFORMATION_SCHEMA.FILES表現在從存儲引擎獲取以下列所需的信息:LOGFILE_GROUP_NAME,LOGFILE_GROUP_NUMBER,ROW_FORMAT,VERSION。 (錯誤#27292586)

刪除用戶定義的函數並不總是從性能模式user_defined_functions表中刪除它的條目。 (Bug#27270498)

為了減小其尺寸和存儲占用空間,序列化字典信息(SDI)現在以緊湊的JSON格式生成。 (錯誤#27265584)

從多個會話並發執行RESET PERSIST和SET PERSIST可能導致服務器退出。 (Bug#27264789)

即使統計信息收集過程遇到錯誤,也可以緩存表空間統計信息。 (Bug#27259963)

SET PERSIST可能無法找到寫入mysqld-auto.cnf文件的正確目錄。 (Bug#27253828)

如果表中包含數據,ALTER TABLE無法創建生成的NOT NULL幾何列。 (Bug#27252609)

Performance Schema variables_info表為在my.cnf中設置的變量顯示了不正確的VARIABLE_SOURCE值,並且該變量也保留到mysqld-auto.cnf。 (Bug#27252077)

不正確地處理插件的加載和卸載可能導致服務器退出。 (Bug#27247280,Bug#27297704)

RESTART語句不適用於Ubuntu軟件包。 (錯誤#27245918)

LDAP認證插件不是在FreeBSD上構建的。 (Bug#27238252)

當緩存值由窗口函數計算為NULL時,或者當其參數是帶有可評估為NULL的ROLLUP操作的GROUP BY的一部分時,服務器不能正確處理查詢。 (Bug#27233287)

在所有情況下,LAST_VALUE()等窗口函數都不能正確處理包含NOT NULL列的表。 (Bug#27230463)

角色緩存失效可能會執行不正確。 (Bug#27225806)

服務器啟動時對持久變量的錯誤處理可能導致服務器退出。 (Bug#27224682)

對於從MySQL 5.7升級到8.0,對象定義的sql_mode值可能包含NOT_USED。 (Bug#27219709)

如果沒有選擇默認數據庫,JSON_TABLE()失敗。 (Bug#27217897)

向持有多個鎖的InnoDB表添加唯一索引可以引發斷言。 (Bug#27216817)

如果未選擇數據庫,則在視圖定義中使用JSON_TABLE()的CREATE VIEW語句失敗。 (錯誤#27189940)

性能架構復制表上的查詢可能會返回不正確的結果,特別是當執行計划使用索引時。 (錯誤#27184567)

對於某些語句,FILE權限未正確檢查。 (錯誤#27160888)

為了更好地在啟動時按照與SET PERSIST相同的順序啟用持久變量設置,首先根據時間戳(現在存儲在文件中)對mysqld-auto.cnf中的設置進行排序。 (Bug#27157520)

將dragnet.log_error_filter_rules系統變量設置為非常長的值可能會導致服務器退出。 (錯誤#27120953)

對於使用systemd的平台(請參閱使用systemd管理MySQL服務器),systemd並不總是能夠推斷出雙叉mysqld進程的狀態。因此,systemd會嘗試重新啟動mysqld,即使該進程以狀態1結束。systemd現在被配置為以普通進程(Type = notify而不是Type = forking)運行mysqld。如果在環境變量NOTIFY_SOCKET中指定了套接字文件的名稱,則mysqld會嘗試打開一個與systemd進行通信的連接並在其中寫入其狀態更改。 (錯誤#27109556,錯誤#88463,錯誤#26538598,錯誤#87210)

ST_IsValid()為非WGS 84橢球上的某些地理多邊形返回了不正確的結果。 (Bug#27074700)

包含FULLTEXT鍵和FTS_DOC_ID列的表上的多重插入語句導致服務器錯誤。 (錯誤#27041445,錯誤#88267)

參考文獻:這個問題是一個回歸:Bug#22679185。

在嚴格的SQL模式下,向AUTO_INCREMENT列分配無效值可能會被錯誤地處理,導致引發斷言。 (錯誤#27041393,錯誤#88273)

線程堆棧耗盡可能會引發斷言而不是返回錯誤。 (錯誤#27041350,錯誤#88277)

SET PERSIST_ONLY沒有正確地考慮是否應該調用持久變量的運行時驗證函數。 (Bug#27016247)

audit_log插件可能會錯誤地處理事件執行的中止,導致服務器退出。 (Bug#27008133)

修正了一些否定大符號整數的邊界情況。 (Bug#27004880,Bug#27008075)

ALTER TABLE操作試圖為廢棄表空間中的表設置AUTO_INCREMENT值。 (錯誤#26935001)

MyISAM索引損壞可能發生在涉及按排序修復算法和許多(超過4.5億個)行的批量插入和表修復操作中。 (錯誤#26929724)

性能模式可以產生具有尾部空間的DIGEST_TEXT值。這不再發生。 (Bug#26908015)

從系統表中刪除索引可能導致服務器退出。 (錯誤#26881798)

使用CREATE TABLE ... SELECT的預准備語句在GROUP BY中引用具有相同名稱的視圖時會導致意外的行為。 (Bug#26881703)

在禁用自動提交並且處於PREPARED狀態的XA事務時,嘗試執行XA COMMIT或XA ROLLBACK失敗。 (錯誤#26848877,錯誤#87836)

當沒有錯誤發生時,LDAP身份驗證插件生成的某些診斷消息會誤導性地提示錯誤。 (Bug#26844713)

對mysql_upgrade和mysqlpump的初始化代碼進行了重新組織,以避免斷言失敗。 (Bug#26802211)

由於嘗試獲取元數據鎖時出現的錯誤處理不當,全文搜索可能會引發斷言。 (錯誤#26799898)

由64位服務器上的keyring_file無法訪問由32位服務器上的keyring_file插件創建的密鑰環文件,反之亦然。 (Bug#26793060)

列性統計信息的元數據鎖定在Performance Schema的metadata_locks和events_waits_xxx表中未正確顯示。 (Bug#26772858,Bug#87708)

my_snprintf插件服務已刪除並使用C ++ 11 snprintf重新實現。 (Bug#26696147,Bug#87547)

在具有大量表的服務器上從MySQL 5.7就地升級到MySQL 8.0之后,由於數據字典創建期間內存消耗過多,服務器啟動失敗。 (錯誤#26486160)

在修改用戶權限的語句中發生的錯誤可能導致嘗試訪問用戶權限緩存的其他事務發生死鎖。 (Bug#26475282)

線程池插件記錄了失敗連接的太多信息。 (Bug#26368725,Bug#86863)

同時啟用多個組件可能會導致服務器退出。 (錯誤#26171471,錯誤#86514)

格式錯誤的mysqld-auto.cnf文件可能導致服務器退出。 (錯誤#26085774)

在保留的表空間中創建表不會返回錯誤。 (錯誤#26073851,錯誤#86309)

對於調試版本,使用KILL終止存儲的例程可能會引發斷言。感謝Laurynas Biveinis的補丁。 (錯誤#26040870,錯誤#86260)

如果設置了init_connect系統變量,則其密碼過期的客戶端無法執行其內容,因此無法連接。現在,如果客戶端有密碼過期,則會跳過init_connect執行,這將使客戶端連接並更改密碼。 (Bug#25968185)

在滿足以下所有三個條件的查詢中,使用YYYYMMDD格式的日期未被正確識別:

查詢執行了左連接。

連接內部表中的DATE列是多列主鍵的一部分。

內部表主鍵中的每一列都與另一個值進行比較;這可能是文字或列值。 (Bug#25949639)

使用外鍵的表上的就地ALTER TABLE操作導致表定義不匹配。在執行ALTER TABLE期間傳遞給存儲引擎方法的新表定義包含無效的外鍵名稱。 (錯誤#25915132,錯誤#85997)

可以將不存在的角色分配給帳戶作為其默認角色。 (錯誤#25755666,錯誤#85561)

使用C API時,當試圖執行一個CURSOR_TYPE_READ_ONLY設置的INSERT准備語句時,客戶端掛起。 (錯誤#25701141,錯誤#85105)

即使要重命名的用戶或角色在任何角色圖中都不存在,RENAME USER也會失敗。 (錯誤#25658586)

如果收到格式錯誤的客戶端/服務器協議數據包,MySQL客戶端程序可能會意外退出。 (錯誤#25471090)

由性能模式收集的內存統計信息可能由於競爭條件而不正確。 (Bug#25212799)

內部散列的CONNECTION_CONTROL插件的錯誤處理導致錯誤日志和最終服務器退出中的虛假消息。 (錯誤#25052009)

CURRENT_ROLE()和ROLES_GRAPHML()現在返回一個帶有utf8字符集的字符串。以前,他們錯誤地返回了一個二進制字符串。 (Bug#24843257)

殺死INSTALL COMPONENT或UNINSTALL COMPONENT可能導致mysql.component系統表中單個組件的多行。 (錯誤#24660436)

使用X插件並發執行高負載時執行SHOW PROCESSLIST可能會導致計划外服務器退出。 (錯誤#24621170)

參考文獻:另見:錯誤#23057045。

MySQL中的正則表達式實現使用一個String對象(意圖初始化為空)來保存當前主題,並使用字符“”作為該值。這可能會干擾同樣的其他功能。這通過用nullptr構造String來解決。 (Bug#23276471)

當發生錯誤時,mysqlpump可能會泄漏內存或退出。 (錯誤#23102944)

LDML 2.8歸類定義可能會導致意外的服務器行為。 (Bug#22819030)

日志打開操作訪問日志名稱系統變量而不鎖定它們。訪問這種變量的多個線程可能會導致爭用條件和意外的服務器行為。 (錯誤#22591899)

當范圍優化器為長度足夠的字符串計算前綴時,可能會在字符中間截斷字符串,這可能會導致調試版本中的斷言和其他故障。現在在這種情況下采取步驟以確保字符串在字符邊界處被截斷。 (Bug#22475473,Bug#13712655)

由於讀取未初始化的數據,在某些情況下,在GROUP BY子句中具有子查詢或表達式的查詢可能會返回隨機結果。 (錯誤#20035304)

參考文獻:另見:錯誤#21922202。

audit_log插件沒有記錄准備好的語句的占位符值。 (Bug#16617026)

即使較小的整數類型更合適,UNION語句中的整數列也可以轉換為BIGINT。 (錯誤#11747567,錯誤#33004)

添加了ER_REGEXP_INVALID_CAPTURE_GROUP_NAME(錯誤13110)。 (錯誤#89796,錯誤#27597980)

窗口函數行緩沖區處理已被重構,以將處理程序讀取次數減少25%。 (錯誤#89512,錯誤#27484133)

對於某些框架,當使用設置為false的windowing_use_high_precision系統變量進行計算時,VARIANCE(),VAR_POP()和VAR_SAMP()函數會產生錯誤的結果。 (錯誤#89390,錯誤#27438725)

當優化器試圖用等同的生成列替換表達式時,沒有考慮生成具有前綴索引的列。這阻止了使用前綴索引來加速使用生成的列表達式的謂詞。 (錯誤#89291,錯誤#27403367)

FIRST_VALUE()並不總是為空幀返回NULL。 (錯誤#89116,錯誤#27348276)

當一個或多個參數作為顯式NULL傳遞時,接受可選參數的正則表達式函數不會按預期返回NULL。 (錯誤#88872,錯誤#27252630)

基於行的復制在從屬設備上使用了錯誤的一組索引。 (錯誤#88847,錯誤#27244826)

在沒有選擇默認數據庫的情況下執行時,EXPLAIN EXTENDED引發了錯誤1046由於EXTENDED關鍵字已被刪除,所以未選擇數據庫而不是預期的SQL語法錯誤。 (錯誤#88591,錯誤#27153116)

CMake選項OPTIMIZER_TRACE = 0對構建沒有影響,因此不再使用。 (錯誤#88520,錯誤#27130109)

使用GROUP BY且沒有常量或聚合列的SELECT語句在第一次嘗試失敗時正確檢查了函數依賴關系,但在下一次嘗試中錯誤地成功了。 (錯誤#88474,錯誤#27427677)

參考文獻:另見:錯誤#21807579。

對於DATE列聲明為NOT NULL的情況,SELECT語句中具有UNION的CREATE TABLE ... SELECT語句在嚴格模式下失敗。 (錯誤#87711,錯誤#27068222)

使用嵌套子選擇的准備語句並不總是正確處理。 (錯誤#87484,錯誤#26657904)

包含窗口函數的查詢的成本估算未考慮PARTITION BY或ORDER BY的成本,也未包含使用幀緩沖區的成本。 (錯誤#87373,錯誤#26612356)

參考文獻:另見:Bug#26502118。

在使用子查詢處理查詢時,如果已知外部查詢產生空結果,則子查詢不再進行優化;在這種情況下,EXPLAIN現在顯示未優化,外部查詢為空。

進行此更改是因為,如果在優化時發現外部查詢使用的表為空,則會將連接列設置為NULL(即使定義為不可為空),這會在優化子查詢時導致沖突。

如果外部查詢具有聚合但沒有任何GROUP BY,則會發生異常;這意味着它有一個非空結果,並且SELECT列表中的任何子查詢都必須進行評估和優化,從而重新打開可空性問題,現在可以正確處理這種情況。 (錯誤#83115,錯誤#24713879)

參考文獻:另見:錯誤#83216,錯誤#24760317。

從組成包含可空列的唯一鍵的所有列中進行選擇時,WHERE條件中的所有列都設置為非空值,但MySQL沒有考慮其唯一性,結果only_full_group_by錯過了檢測功能依賴列的結果。 (錯誤#79291,錯誤#22279903)

當使用部分索引時,即使部分索引覆蓋了所需的整個數據集,優化器也會執行更昂貴的表查找而不是使用索引。 (錯誤#74359,錯誤#19806106)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM