dev.mysql.com

  • Fixed an issue relating to optimized prepared DELETE and UPDATE statements. (Bug #39071552)

  • Fixed an issue relating to Batched Key Access path and partitioning. (Bug #38947039)

  • Fixed an issue relating to query management. (Bug #38928287)

  • Fixed an issue relating to REGEXP_INSTR subqueries. (Bug #38756896, Bug #35367340)

  • Fixed an issue relating to memory management. (Bug #38573278)

  • A query using subquery-to-derived-table optimization could cause the MySQL server to exit unexpectedly when an implicitly grouped query included an ANY subquery outside the aggregate expression.

    As of this release, the optimizer now retains semijoin subquery candidates in the appropriate query block during the transformation. (Bug #38369869)

  • TIMEDIFF() returned the wrong result if the first argument was DATETIME and the second argument was DATE. (Bug #38181443, WL #16895)

  • TIMEDIFF() did not return NULL if unsupported values were used. (Bug #38179658, WL #16895)

  • FROM_DAYS() did not handle out of range values, or values less than 366, consistently. (Bug #38177844, Bug #38177993, WL #16895)

  • DAYNAME() did not return the day name if used in an arithmetic expression but returned the day number instead. (Bug #38177821, WL #16895)

  • ADDDATE() returned an incorrect result if the first argument was year zero (0000). (Bug #38177766, WL #16895)

  • When copying a DATE value to an INTEGER column, the DATE value was extended to DATETIME and 00:00:00 was added to it. (Bug #38043311)

  • Fixed an issue relating to the Optimizer's SQL planner. (Bug #35634700)

  • Overflow handling of date arithmetic has been improved. (Bug #32019977)

  • CAST() of a year column returned the wrong result. (Bug #29616536, Bug #35093107, WL #16895)

  • Under certain circumstances, with ALLOW_INVALID_DATES sql_mode enabled, invalid dates were not properly handled and no warning was issued if they were set to NULL. (Bug #20583945, WL #16895)

  • ADDTIME, SUBTIME, ADDDATE, and SUBDATE did not return NULL for invalid values. (Bug #12805124)

  • Under certain circumstances, find_in_set() could return incorrect results. The optimization which caused this has been removed.

    Our thanks to Jingqi Tian for the contribution. (Bug #119995, Bug #39056621)

  • When errors and warnings occurred during background histogram updates, the conditions in the diagnostic area were not cleared, leading to future background histogram updates emitted the same stale conditions to the error log.

    Our thanks to Tony Chen and the team at Amazon for the contribution. (Bug #119922, Bug #38983545)

  • IN operator returned an unexpected result if one of values in the list is NULL. (Bug #119650, Bug #38831745)

  • Datetime comparisons were inconsistent depending on the type used to store the values, INT or BIGINT. (Bug #119136, Bug #38819341, WL #16895)

  • Fixed an issue with NULL detection for temporal data types in derived tables after a derived merge.

    Our thanks to Xingyu Yang and the team at Tencent for the contribution. (Bug #118658, Bug #38191248)

  • Under certain circumstances, incorrect results were returned when comparing DECIMAL columns to constants containing more decimals than the column. (Bug #118033, Bug #37864937)

    References: This issue is a regression of: Bug #34361287.

  • A previous fix changed range analysis for non-binary string collations, when a string constant in a range predicate was longer than the indexed column, no index range was formed, unless the collation was known to be safe. This resulted in queries, which should have used efficient range plans, using index or table scans.

    Our thanks to Yakir Gibraltar for the contribution. (Bug #118009, Bug #37849917)

    References: This issue is a regression of: Bug #35169384.

  • Under certain circumstances, INTERSECT could return an incorrect result. (Bug #117911, Bug #37804715)

  • A histogram generated by ANALYZE TABLE UPDATE HISTOGRAM ON col_name was not be accepted by ANALYZE TABLE UPDATE HISTOGRAM ON col_name USING DATA ... if the histogram was built on a bigint column with values outside the uint32 range.

    Our thanks to Tianfeng Li for the contribution. (Bug #116611, Bug #37269033)

  • In an explain expanded query, join order hints were not printed with a valid syntax.

    Our thanks to Kaiwang Chen for the contribution. (Bug #116084, Bug #37053765)

  • Conditions on const tables and on previously joined tables were not consistently taken into account when building ranges in get_quick_record_count(). This could lead to suboptimal or incorrect range estimates, especially when range predicates depended on values from const or earlier-joined tables.

    Our thanks to Xingyu Yang for the contribution. (Bug #112737, Bug #35912840)

  • Using DISTINCT with date functions returned inconsistent results. (Bug #109351, Bug #34889757)

  • Assigning a date value to a bigint column in MySQL resulted in zeroes being appended to the end of the value, unless an explicit cast was used. Support for automatic casting in assignment operations has been added when the right-hand side is a single value or column. (Bug #79563, Bug #22353325, WL #16895)

  • The Hypergraph Optimizer is now available in MySQL Community Edition.

    It can be enabled in one of the following ways:

    • Session scope: SET optimizer_switch='hypergraph_optimizer=on|off'

    • Global scope: SET GLOBAL optimizer_switch='hypergraph_optimizer=on|off'

    • Persisted scope: SET PERSIST optimizer_switch='hypergraph_optimizer=on|off'

    • Server startup: mysqld --optimizer-switch='hypergraph_optimizer=on|off'

    • Per-statement hint: /*+ SET_VAR(optimizer_switch='hypergraph_optimizer=on|off') */

    (WL #17265)

Read the original on dev.mysql.com ↗