TiDB 4.0 RC.2 Release Notes
Release date: May 15, 2020
TiDB version: 4.0.0-rc.2
Compatibility Changes
TiDB
- Remove the size limit for a single transaction (100 MB) when TiDB Binlog is enabled. Now the size limit for a transaction is 10 GB. However, if TiDB Binlog is enabled and the downstream is Kafka, configure the
txn-total-size-limit
parameter according to the message size limit of 1 GB in Kafka #16941 - Change the behavior from querying the default time range to returning an error and requesting a specified time range if the time range is not specified when querying the
CLUSTER_LOG
table #17003 - If the unsupported
sub-partition
orlinear hash
option is specified when creating the partitioned table using theCREATE TABLE
statement, the normal table is created rather than the partitioned table with the options ignored #17197
- Remove the size limit for a single transaction (100 MB) when TiDB Binlog is enabled. Now the size limit for a transaction is 10 GB. However, if TiDB Binlog is enabled and the downstream is Kafka, configure the
TiKV
- Move the encryption-related configuration to the security-related configuration, which means changing
[encryption]
in the TiKV configuration file to[security.encryption]
#7810
- Move the encryption-related configuration to the security-related configuration, which means changing
Tools
TiDB Lightning
- Change the default SQL mode to
ONLY_FULL_GROUP_BY,NO_AUTO_CREATE_USER
when importing data to improve compatibility #316 - Disallow accessing the PD or TiKV port in the tidb-backend mode #312
- Print the log information to the tmp file by default, and print the path of the tmp file when TiDB Lightning is started #313
- Change the default SQL mode to
Important Bug Fixes
TiDB
- Fix the issue that the wrong partition is chosen when the
WHERE
clause has only one equivalent condition #17054 - Fix the issue of wrong results caused by building the incorrect Index range when the
WHERE
clause only contains the string column #16660 - Fix the panic issue that occurs when executing the
PointGet
query in the transaction after theDELETE
operation #16991 - Fix the issue that the GC worker might encounter the deadlock when an error occurs #16915
- Avoid the unnecessary RegionMiss retry when the TiKV response is slow but not down #16956
- Change the log level in the client in the handshake phase of the MySQL protocol to
DEBUG
to solve the problem that interferes with log output #16881 - Fix the issue that the Region is not pre-split according to the
PRE_SPLIT_REGIONS
information defined by the table after theTRUNCATE
operation #16776 - Fix the issue of soaring goroutine caused by retry when TiKV is unavailable during the second phase of the two-phase commit #16876
- Fix the panic issue of statement execution when some expressions cannot be pushed down #16869
- Fix the wrong execution result of the IndexMerge operation on the partitioned table #17124
- Fix the performance reduction of
wide_table
caused by the mutex contention of Memory Trackers #17234
- Fix the issue that the wrong partition is chosen when the
TiFlash
- Fix the issue that the system cannot start normally after the upgrade if the name of the database or table contains special characters
New Features
TiDB
- Add support for the
BACKUP
andRESTORE
commands to back up and restore data #16960 - Support pre-checking the data volume in a single Region before commit and pre-splitting the Region when the data volume exceeds the threshold #16959
- Add the new
LAST_PLAN_FROM_CACHE
variable with aSession
scope to indicate whether the last executed statement hits the plan cache #16830 - Support recording the
Cop_time
information in slow log and theSLOW_LOG
table #16904 - Add in Grafana more metrics that monitor the memory status of Go Runtime #16928
- Support outputting the
forUpdateTS
andRead Consistency
isolation level information in General Log #16946 - Support collapsing duplicate requests of resolving locks in TiKV Region #16925
- Support using the
SET CONFIG
statement to modify the configuration of PD/TiKV nodes #16853 - Support the
auto_random
option in theCREATE TABLE
statement #16813 - Allocate TaskID for the DistSQL request to help TiKV better schedule and process requests #17155
- Support displaying the version information of the TiDB server after logging into the MySQL client #17187
- Support the
ORDER BY
clause in theGROUP_CONCAT
function #16990 - Support displaying the
Plan_from_cache
information in slow log to indicate whether the statement hits plan cache #17121 - Add the feature that TiDB Dashboard can display the capacity information of TiFlash multi-disk deployment
- Add the feature of querying the TiFlash log using SQL statements in Dashboard
- Add support for the
TiKV
- Support encryption debugging for tikv-ctl, so that tikv-ctl can be used to operate and manage the cluster when the encryption storage is enabled #7698
- Support encrypting the lock column family in snapshots #7712
- Use the heatmap in the Grafana dashboard for Raftstore latency summary to better diagnose the jitter issue #7717
- Support setting the upper limit for the size of the gRPC message #7824
- Add in Grafana dashboard the encryption-related monitoring metrics #7827
- Support Application-Layer Protocol Negotiation (ALPN) #7825
- Add more statistics about Titan #7818
- Support using the task ID provided by the client as the identifier in the unified read pool to avoid that the priority of a task is lowered by another task in the same transaction #7814
- Improve the performance of the
batch insert
request #7718
PD
- Eliminate the speed limit of removing peers when making a node offline #2372
TiFlash
- Change the name of the Count graph of Read Index in Grafana to Ops
- Optimize the data for opening file descriptors when the system load is low to reduce system resource consumption
- Add the capacity-related configuration parameter to limit the the data storage capacity
Tools
Bug Fixes
TiDB
- Improve the logic that determines whether to use vectorization for expression execution in multiple operators #16383
- Fix the issue that the
IndexMerge
hint fails to check the database name correctly #16932 - Forbid truncating the sequence object #17037
- Fix the issue that the
INSERT
/UPDATE
/ANALYZE
/DELETE
statements can be performed on a sequence object #16957 - Fix the issue that the internal SQL statements in the bootstrap phase are not correctly marked as internal queries in the Statement Summary table #17062
- Fix the error that occurs when a filter condition supported by TiFlash but not by TiKV is pushed down to the
IndexLookupJoin
operator #17036 - Fix the concurrency issue of the
LIKE
expression that might occur after the collation is enabled #16997 - Fix the issue that the
LIKE
function cannot correctly build theRange
query index after the collation is enabled #16783 - Fix the issue that a wrong value is returned when executing
@@LAST_PLAN_FROM_CACHE
after thePlan Cache
statement is triggered #16831 - Fix the issue that
TableFilter
on the index is missed when calculating candidate paths forIndexMerge
#16947 - Fix the issue that a physical query plan cannot be generated when using the
MergeJoin
hint and theTableDual
operator exists #17016 - Fix the wrong capitalization of the values in the
Stmt_Type
column of the Statement Summary table #17018 - Fix the issue that the
Permission Denied
error is reported because the service cannot be started when different users use the sametmp-storage-path
#16996 - Fix the issue that the
NotNullFlag
result type is incorrectly set for an expression whose result type is determined by multiple input columns, such asCASE WHEN
#16995 - Fix the issue that the green GC might leave unresolved locks when dirty stores exist #16949
- Fix the issue that the green GC might leave unresolved locks when encountering a single key with multiple different locks #16948
- Fix the issue of inserting a wrong value in the
INSERT VALUE
statement because a sub-query refers to a parent query column #16952 - Fix the issue of incorrect results when using the
AND
operator on theFloat
value #16666 - Fix the wrong information of the
WAIT_TIME
field in the expensive log #16907 - Fix the issue that the
SELECT FOR UPDATE
statement cannot be recorded in the slow log in the pessimistic transaction mode #16897 - Fix the wrong result that occurs when executing
SELECT DISTINCT
on a column of theEnum
orSet
type #16892 - Fix the display error of
auto_random_base
in theSHOW CREATE TABLE
statement #16864 - Fix the incorrect value of
string_value
in theWHERE
clause #16559 - Fix the issue that the error message of the
GROUP BY
window function is inconsistent with that of MySQL #16165 - Fix the issue that the
FLASH TABLE
statement fails to execute when the database name contains the uppercase letter #17167 - Fix the inaccurate memory tracing of the Projection executor #17118
- Fix the issue of incorrect time filtering of the
SLOW_QUERY
table in different time zones #17164 - Fix the panic issue that occurs when
IndexMerge
is used with the virtual generated column #17126 - Fix the capitalization issue of the
INSTR
andLOCATE
function #17068 - Fix the issue that the
tikv server timeout
error is reported frequently after thetidb_allow_batch_cop
configuration is enabled #17161 - Fix the issue that the result of performing
XOR
operation on the Float type is inconsistent with that of MySQL 8.0 #16978 - Fix the issue that no error is reported when the unsupported
ALTER TABLE REORGANIZE PARTITION
statement is executed #17178 - Fix the issue that an error is reported when
EXPLAIN FORMAT="dot" FOR CONNECTION ID
encounters an unsupported plan #17160 - Fix the record issue of the prepared statement in the
EXEC_COUNT
column of the Statement Summary table #17086 - Fix the issue that the value is not validated when setting the Statement Summary system variable #17129
- Fix the issue that an error is reported if an overflow value is used to query the
UNSIGNED BIGINT
primary key when the plan cache is enabled #17120 - Fix the incorrect QPS display by the machine instance and request type on the Grafana TiDB Summary dashboard #17105
TiKV
- Fix the issue that many empty Regions are generated after restoration #7632
- Fix the panic issue of Raftstore when receiving out-of-order read index responses #7370
- Fix the issue that an invalid storage or coprocessor read pool configuration might not be rejected when the unified thread pool is enabled #7513
- Fix the panic issue of the
join
operation when the TiKV server is shut down #7713 - Fix the issue that no result is returned when searching TiKV slow logs via diagnostics API #7776
- Fix the issue that notable memory fragmentation is generated when the TiKV node is running for a long time #7556
- Fix the issue that the SQL statement fails to execute when an invalid date is stored #7268
- Fix the issue that the backup data cannot be restored from GCS #7739
- Fix the issue that KMS key ID is not validated during encryption at rest #7719
- Fix the underlying correctness issue of the Coprocessor in compilers of different architecture #7714 #7730
- Fix the
snapshot ingestion
error when encrytion is enabled #7815 - Fix the
Invalid cross-device link
error when rewriting the configuration file #7817 - Fix the issue of wrong toml format when writing the configuration file to an empty file #7817
- Fix the issue that a destroyed peer in Raftstore can still process requests #7836
PD
- Fix the
404
issue that occurs when using theregion key
command in pd-ctl #2399 - Fix the issue that the monitor metrics of TSO and ID allocation are missing from the Grafana dashboard #2405
- Fix the issue that pd-recover is not included in the Docker image #2406
- Parse the path of data directory to an absolute path to fix the issue that TiDB Dashboard might not correctly display PD information #2420
- Fix the issue that there is no default output when using the
scheduler config shuffle-region-scheduler
command in pd-ctl #2416
- Fix the
TiFlash
- Fix the issue that the wrong information of used capacity is report in some scenarios
Tools
TiDB Binlog
TiCDC
- Fix the issue of using the wrong time zone when the
TZ
environment variable is not set #512 - Fix the issue that the owner does not clean up the resources when the server exits because some errors are not handled correctly #528
- Fix the issue that TiCDC might be stuck when reconnecting to TiKV #531
- Optimize the memory usage when initializing the table schema #534
- Use the
watch
mode to monitor the replication status changes and perform quasi-real-time updates to reduce replication delay #481
- Fix the issue of using the wrong time zone when the
Backup & Restore (BR)
- Fix the issue that inserting data might trigger the
duplicate entry
error after BR restores a table with theauto_random
attribute #241
- Fix the issue that inserting data might trigger the