TiDB 3.0.5 Release Notes

Release date: October 25, 2019

TiDB version: 3.0.5

TiDB Ansible version: 3.0.5

TiDB

  • SQL Optimizer
    • Support boundary checking on Window Functions #12404
    • Fix the issue that IndexJoin on the partition table returns incorrect results #12712
    • Fix the issue that the ifnull function on the top of the outer join Apply operator returns incorrect results #12694
    • Fix the issue of update failure when a subquery was included in the where condition of UPDATE #12597
    • Fix the issue that outer join was incorrectly converted to inner join when the cast function was included in the query conditions #12790
    • Fix incorrect expression passing in the join condition of AntiSemiJoin #12799
    • Fix the statistics error caused by shallow copy when initializing statistics #12817
    • Fix the issue that the str_to_date function in TiDB returns a different result from MySQL when the date string and the format string do not match #12725
  • SQL Execution Engine
    • Fix the panic issue when the from_unixtime function handles null #12551
    • Fix the invalid list index error reported when canceling DDL jobs #12671
    • Fix the issue that arrays were out of bounds when Window Functions are used #12660
    • Improve the behavior of the AutoIncrement column when it is implicitly allocated, to keep it consistent with the default mode of MySQL auto-increment locking (“consecutive” lock mode): for the implicit allocation of multiple AutoIncrement IDs in a single-line Insert statement, TiDB guarantees the continuity of the allocated values. This improvement ensures that the JDBC getGeneratedKeys() method will get the correct results in any scenario. #12602
    • Fix the issue that the query is hanged when HashAgg serves as a child node of Apply #12766
    • Fix the issue that the AND and OR logical expressions return incorrect results when it comes to type conversion #12811
  • Server
    • Implement the interface function that modifies transaction TTL to help support large transactions later #12397
    • Support extending the transaction TTL as needed (up to 10 minutes) to support pessimistic transactions #12579
    • Adjust the number of times that TiDB caches schema changes and corresponding changed table information from 100 to 1024, and support modification by using the tidb_max_delta_schema_count system variable #12502
    • Update the behavior of the kvrpc.Cleanup protocol to no longer clean locks of transactions that are not overtime #12417
    • Support logging Partition table information to the information_schema.tables table #12631
    • Support modifying the TTL of Region Cache by configuring region-cache-ttl #12683
    • Support printing the execution plan compression-encoded information in the slow log. This feature is enabled by default and can be controlled by using the slow-log-plan configuration or the tidb_record_plan_in_slow_log variable. In addition, the tidb_decode_plan function can decode the execution plan column encoded information in the slow log into execution plan information. #12808
    • Support displaying memory usage information in the information_schema.processlist table #12801
    • Fix the issue that an error and an unexpected alarm might occur when the TiKV Client judges an idle connection #12846
    • Fix the issue that the INSERT IGNORE statement performance is decreased because tikvSnapshot does not properly cache the KV results of BatchGet() #12872
    • Fix the issue that the TiDB response speed was relatively low because of slow connection to some KV services #12814
  • DDL
    • Fix the issue that the Create Table operation does not correctly set the Int type default value for the Set column #12267
    • Support multiple uniques when creating a unique index in the Create Table statement #12463
    • Fix the issue that populating the default value of this column for existing rows might cause an error when adding a Bit type column using Alter Table #12489
    • Fix the failure of adding a partition when the Range partitioned table uses a Date or Datetime type column as the partitioning key #12815
    • Support checking the consistency of the partition type and the partition key type when creating a table or adding a partition, for the Range partitioned table with the Date or Datetime type column as the partition key #12792
    • Add a check that the Unique Key column set needs to be greater than or equal to the partitioned column set when creating a Range partitioned table #12718
  • Monitor
    • Add the monitoring metrics of Commit and Rollback operations to the Transaction OPS dashboard #12505
    • Add the monitoring metrics of Add Index operation progress #12390

TiKV

  • Storage
    • Add a new feature of pessimistic transactions: the transaction cleanup interface supports only cleaning up locks whose TTL is outdated #5589
    • Fix the issue that Rollback of the transaction Primary key is collapsed #5646, #5671
    • Fix the issue that under pessimistic locks, point queries might return the previous version data #5634
  • Raftstore
    • Reduce message flush operations in Raftstore to improve performance and reduce CPU usage #5617
    • Optimize the cost of obtaining the Region size and estimated number of keys, to reduce heartbeat overhead and CPU usage #5620
    • Fix the issue that Raftstore prints an error log and encounters a panic when getting invalid data #5643
  • Engine
    • Enable RocksDB force_consistency_checks to improve data safety #5662
    • Fix the issue that concurrent flush operations in Titan might cause data loss #5672
    • Update the rust-rocksdb version to avoid the issue of TiKV crash and restart caused by intra-L0 compaction #5710

PD

  • Improve the precision of storage occupied by Regions #1782
  • Improve the output of the --help command #1763
  • Fix the issue that the HTTP request fails to redirect after TLS is enabled #1777
  • Fix the panic issue occurred when pd-ctl uses the store shows limit command #1808
  • Improve readability of label monitoring metrics and reset the original leader’s monitoring data when the leader switches, to avoid false reports #1815

Tools

  • TiDB Binlog
    • Fix the issue that ALTER DATABASE related DDL operations cause Drainer to exit abnormally #769
    • Support querying the transaction status information for Commit binlog to improve replication efficiency #757
    • Fix the issue that a Pump panic might occur when Drainer’s start_ts is greater than Pump’s largest commit_ts #758
  • TiDB Lightning
    • Integrate the full logic import feature of Loader and support configuring the backend mode #221

TiDB Ansible

  • Add the monitoring metrics of adding index speed #986
  • Simplify the configuration file content and remove parameters that users do not need to configure #1043c, #998
  • Fix the monitoring expression error of performance read and performance write #e90e7
  • Update the monitoring display method and the alarm rules of Raftstore CPU usage #992
  • Update the TiKV CPU monitoring item in the Overview monitoring dashboard to filter out the excess monitoring content #1001