You are viewing the documentation of an older version of the TiDB database (TiDB v4.0).

It is recommended that you use the latest LTS version of the TiDB database.

TiDB 3.0.6 Release Notes

Release date: November 28, 2019

TiDB version: 3.0.6

TiDB Ansible version: 3.0.6


  • SQL Optimizer
    • Fix the issue that the result is incorrect after the window function AST restores SQL text, for example, over w being mistakenly restored to over (w) #12933
    • Fix the issue of pushing down STREAM AGG() to doubleRead #12690
    • Fix the issue that quotes are incorrectly handled for SQL binding #13117
    • Optimize the select max(_tidb_rowid) from t scenario to avoid full table scans #13095
    • Fix the issue that the query result is incorrect when the query statement contains a variable assignment expression #13231
    • Fix the issue that the result is incorrect when the UPDATE statement contains both a sub-query and a generated column; fix the UPDATE statement execution error when this statement contains two same-named tables from different source databases #13350
    • Support _tidb_rowid for point queries #13416
    • Fix the issue that the generated query execution plan is incorrect, caused by incorrect usage of partitioned table statistics #13628
  • SQL Execution Engine
    • Fix the issue that TiDB is incompatible with MySQL when handling invalid values of the year type #12745
    • Reuse Chunk in the INSERT ON DUPLICATE UPDATE statement to reduce the memory overhead #12998
    • Add the support for the JSON_VALID built-in function #13133
    • Support executing ADMIN CHECK TABLE on partitioned tables #13140
    • Fix the panic issue when FAST ANALYZE is executed on empty tables #13343
    • Fix the panic issue when executing FAST ANALYZE on an empty table that contains multi-column indexes #13394
    • Fix the issue that the estimated number of rows is greater than 1 when the WHERE clause contains an equal condition on the unique key #13382
    • Fix the issue that the returned data might be duplicated when Streaming is enabled in TiDB #13254
    • Extract the top N values from the count-min sketch to improve the estimation accuracy #13429
  • Server
    • Make requests sent to TiKV fail quickly when the gRPC dial times out #12926
    • Add the following virtual tables: #13009
      • performance_schema.tidb_profile_allocs
      • performance_schema.tidb_profile_block
      • performance_schema.tidb_profile_cpu
      • performance_schema.tidb_profile_goroutines
    • Fix the issue that the kill command does not work when the query is waiting for pessimistic locking #12989
    • Do not do asynchronous rollback when acquiring pessimistic locking fails and the transaction only involves modifying a single key #12707
    • Fix the panic issue when the response for the request of splitting Regions is empty #13092
    • Avoid unnecessary backoff when PessimisticLock returns a locking error #13116
    • Modify the TiDB behavior for checking configurations by printing a warning log for unrecognized configuration option #13272
    • Support obtaining the binlog status of all TiDB nodes via the /info/all interface #13187
    • Fix the issue that goroutine might leak when TiDB kills connections #13251
    • Make the innodb_lock_wait_timeout parameter work in pessimistic transactions to control the lock wait timeout for pessimistic locking #13165
    • Stop updating pessimistic transaction TTL when pessimistic transactional queries are killed to prevent other transactions from waiting unnecessarily #13046
  • DDL
    • Fix the issue that the execution result of SHOW CREATE VIEW in TiDB is inconsistent with that in MySQL #12912
    • Support creating View based on union, for example, create view v as select * from t1 union select * from t2 #12955
    • Add more transaction-related fields for the slow_query table: #13072
      • Prewrite_time
      • Commit_time
      • Get_commit_ts_time
      • Commit_backoff_time
      • Backoff_types
      • Resolve_lock_time
      • Local_latch_wait_time
      • Write_key
      • Write_size
      • Prewrite_region
      • Txn_retry
    • Use the table’s COLLATE instead of the system’s default charset in the column when a table is created and the table contains COLLATE #13174
    • Limit the length of the index name when creating a table #13310
    • Fix the issue that the table name length is not checked when a table is renamed #13346
    • Add the alter-primary-key configuration (disabled by default) to support adding/dropping the primary key in TiDB #13522


  • Fix the issue that the acquire_pessimistic_lock interface returns a wrong txn_size #5740
  • Limit the writes for GC worker per second to reduce the impact on the performance #5735
  • Make lock_manager accurate #5845
  • Support innodb_lock_wait_timeout for pessimistic locking #5848
  • Add the configuration check for Titan #5720
  • Support using tikv-ctl to dynamically modify the GC I/O limit: tikv-ctl --host=ip:port modify-tikv-config -m server -n gc.max_write_bytes_per_sec -v 10MB #5957
  • Reduce useless clean up requests to decrease the pressure on the deadlock detector #5965
  • Avoid reducing TTL in pessimistic locking prewrite requests #6056
  • Fix the issue that a missing blob file might occur in Titan #5968
  • Fix the issue that RocksDBOptions might not take effect in Titan #6009


  • Add an ActOn dimension for each filter to indicate that each scheduler and checker is affected by the filter, and delete two unused filters: disconnectFilter and rejectLeaderFilter #1911
  • Print a warning log when it takes more than 5 milliseconds to generate a timestamp in PD #1867
  • Lower the client log level when passing unavailable endpoint to the client #1856
  • Fix the issue that the gRPC message package might exceed the maximum size in the region_syncer replication process #1952


  • TiDB Binlog
    • Obtain the initial replication timestamp from PD when initial-commit-ts is set to “-1” in Drainer #788
    • Decouple Drainer’s Checkpoint storage from the downstream and support saving Checkpoint in MySQL or local files #790
    • Fix the Drainer panic issue caused by using empty values when configuring replication database/table filtering #801
    • Fix the issue that processes get into the deadlock status instead of exiting after a panic occurs because Drainer fails to apply binlog files to the downstream #807
    • Fix the issue that Pump blocks when it exits because of gRPC’s GracefulStop #817
    • Fix the issue that Drainer fails when it receives a binlog which misses a column during the execution of a DROP COLUMN statement in TiDB (v3.0.6 or later) #827
  • TiDB Lightning
    • Add the max-allowed-packet configuration (64 M by default) for the TiDB backend #248
Was this page helpful?