- Docs Home
- About TiDB
- Quick Start
- Develop
- Overview
- Quick Start
- Build a TiDB Cluster in TiDB Cloud (Developer Tier)
- CRUD SQL in TiDB
- Build a Simple CRUD App with TiDB
- Example Applications
- Connect to TiDB
- Design Database Schema
- Write Data
- Read Data
- Transaction
- Optimize
- Troubleshoot
- Reference
- Cloud Native Development Environment
- Third-party Support
- Deploy
- Software and Hardware Requirements
- Environment Configuration Checklist
- Plan Cluster Topology
- Install and Start
- Verify Cluster Status
- Test Cluster Performance
- Migrate
- Overview
- Migration Tools
- Migration Scenarios
- Migrate from Aurora
- Migrate MySQL of Small Datasets
- Migrate MySQL of Large Datasets
- Migrate and Merge MySQL Shards of Small Datasets
- Migrate and Merge MySQL Shards of Large Datasets
- Migrate from CSV Files
- Migrate from SQL Files
- Migrate from One TiDB Cluster to Another TiDB Cluster
- Migrate from TiDB to MySQL-compatible Databases
- Advanced Migration
- Integrate
- Maintain
- Monitor and Alert
- Troubleshoot
- TiDB Troubleshooting Map
- Identify Slow Queries
- Analyze Slow Queries
- SQL Diagnostics
- Identify Expensive Queries Using Top SQL
- Identify Expensive Queries Using Logs
- Statement Summary Tables
- Troubleshoot Hotspot Issues
- Troubleshoot Increased Read and Write Latency
- Save and Restore the On-Site Information of a Cluster
- Troubleshoot Cluster Setup
- Troubleshoot High Disk I/O Usage
- Troubleshoot Lock Conflicts
- Troubleshoot TiFlash
- Troubleshoot Write Conflicts in Optimistic Transactions
- Troubleshoot Inconsistency Between Data and Indexes
- Performance Tuning
- Tuning Guide
- Configuration Tuning
- System Tuning
- Software Tuning
- SQL Tuning
- Overview
- Understanding the Query Execution Plan
- SQL Optimization Process
- Overview
- Logic Optimization
- Physical Optimization
- Prepare Execution Plan Cache
- Control Execution Plans
- Tutorials
- TiDB Tools
- Overview
- Use Cases
- Download
- TiUP
- Documentation Map
- Overview
- Terminology and Concepts
- Manage TiUP Components
- FAQ
- Troubleshooting Guide
- Command Reference
- Overview
- TiUP Commands
- TiUP Cluster Commands
- Overview
- tiup cluster audit
- tiup cluster check
- tiup cluster clean
- tiup cluster deploy
- tiup cluster destroy
- tiup cluster disable
- tiup cluster display
- tiup cluster edit-config
- tiup cluster enable
- tiup cluster help
- tiup cluster import
- tiup cluster list
- tiup cluster patch
- tiup cluster prune
- tiup cluster reload
- tiup cluster rename
- tiup cluster replay
- tiup cluster restart
- tiup cluster scale-in
- tiup cluster scale-out
- tiup cluster start
- tiup cluster stop
- tiup cluster template
- tiup cluster upgrade
- TiUP DM Commands
- Overview
- tiup dm audit
- tiup dm deploy
- tiup dm destroy
- tiup dm disable
- tiup dm display
- tiup dm edit-config
- tiup dm enable
- tiup dm help
- tiup dm import
- tiup dm list
- tiup dm patch
- tiup dm prune
- tiup dm reload
- tiup dm replay
- tiup dm restart
- tiup dm scale-in
- tiup dm scale-out
- tiup dm start
- tiup dm stop
- tiup dm template
- tiup dm upgrade
- TiDB Cluster Topology Reference
- DM Cluster Topology Reference
- Mirror Reference Guide
- TiUP Components
- PingCAP Clinic Diagnostic Service
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDB Data Migration
- About TiDB Data Migration
- Architecture
- Quick Start
- Deploy a DM cluster
- Tutorials
- Advanced Tutorials
- Maintain
- Cluster Upgrade
- Tools
- Performance Tuning
- Manage Data Sources
- Manage Tasks
- Export and Import Data Sources and Task Configurations of Clusters
- Handle Alerts
- Daily Check
- Reference
- Architecture
- Command Line
- Configuration Files
- OpenAPI
- Compatibility Catalog
- Secure
- Monitoring and Alerts
- Error Codes
- Glossary
- Example
- Troubleshoot
- Release Notes
- Backup & Restore (BR)
- TiDB Binlog
- TiCDC
- Dumpling
- sync-diff-inspector
- TiSpark
- Reference
- Cluster Architecture
- Key Monitoring Metrics
- Secure
- Privileges
- SQL
- SQL Language Structure and Syntax
- SQL Statements
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER TABLE COMPACT
ALTER USER
ANALYZE TABLE
BACKUP
BATCH
BEGIN
CHANGE COLUMN
COMMIT
CHANGE DRAINER
CHANGE PUMP
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE PLACEMENT POLICY
CREATE ROLE
CREATE SEQUENCE
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
CREATE VIEW
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP [GLOBAL|SESSION] BINDING
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP PLACEMENT POLICY
DROP ROLE
DROP SEQUENCE
DROP STATS
DROP TABLE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLASHBACK TABLE
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
GRANT <role>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
RESTORE
REVOKE <privileges>
REVOKE <role>
ROLLBACK
SELECT
SET DEFAULT ROLE
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET ROLE
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW ANALYZE STATUS
SHOW [BACKUPS|RESTORES]
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CONFIG
SHOW CREATE PLACEMENT POLICY
SHOW CREATE SEQUENCE
SHOW CREATE TABLE
SHOW CREATE USER
SHOW DATABASES
SHOW DRAINER STATUS
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEX [FROM|IN]
SHOW INDEXES [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW MASTER STATUS
SHOW PLACEMENT
SHOW PLACEMENT FOR
SHOW PLACEMENT LABELS
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW PROFILES
SHOW PUMP STATUS
SHOW SCHEMAS
SHOW STATS_HEALTHY
SHOW STATS_HISTOGRAMS
SHOW STATS_META
SHOW STATUS
SHOW TABLE NEXT_ROW_ID
SHOW TABLE REGIONS
SHOW TABLE STATUS
SHOW [FULL] TABLES
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
SHUTDOWN
SPLIT REGION
START TRANSACTION
TABLE
TRACE
TRUNCATE
UPDATE
USE
WITH
- Data Types
- Functions and Operators
- Overview
- Type Conversion in Expression Evaluation
- Operators
- Control Flow Functions
- String Functions
- Numeric Functions and Operators
- Date and Time Functions
- Bit Functions and Operators
- Cast Functions and Operators
- Encryption and Compression Functions
- Locking Functions
- Information Functions
- JSON Functions
- Aggregate (GROUP BY) Functions
- Window Functions
- Miscellaneous Functions
- Precision Math
- Set Operations
- List of Expressions for Pushdown
- TiDB Specific Functions
- Clustered Indexes
- Constraints
- Generated Columns
- SQL Mode
- Table Attributes
- Transactions
- Garbage Collection (GC)
- Views
- Partitioning
- Temporary Tables
- Cached Tables
- Character Set and Collation
- Placement Rules in SQL
- System Tables
mysql
- INFORMATION_SCHEMA
- Overview
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_CONFIG
CLUSTER_HARDWARE
CLUSTER_INFO
CLUSTER_LOAD
CLUSTER_LOG
CLUSTER_SYSTEMINFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
INSPECTION_RESULT
INSPECTION_RULES
INSPECTION_SUMMARY
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
PARTITIONS
PLACEMENT_POLICIES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_HOT_REGIONS_HISTORY
TIDB_INDEXES
TIDB_SERVERS_INFO
TIDB_TRX
TIFLASH_REPLICA
TIKV_REGION_PEERS
TIKV_REGION_STATUS
TIKV_STORE_STATUS
USER_PRIVILEGES
VIEWS
METRICS_SCHEMA
- UI
- TiDB Dashboard
- Overview
- Maintain
- Access
- Overview Page
- Cluster Info Page
- Top SQL Page
- Key Visualizer Page
- Metrics Relation Graph
- SQL Statements Analysis
- Slow Queries Page
- Cluster Diagnostics
- Search Logs Page
- Instance Profiling
- Session Management and Configuration
- FAQ
- CLI
- Command Line Flags
- Configuration File Parameters
- System Variables
- Storage Engines
- Telemetry
- Errors Codes
- Table Filter
- Schedule Replicas by Topology Labels
- FAQs
- Release Notes
- All Releases
- Release Timeline
- TiDB Versioning
- v6.1
- v6.0
- v5.4
- v5.3
- v5.2
- v5.1
- v5.0
- v4.0
- v3.1
- v3.0
- v2.1
- v2.0
- v1.0
- Glossary
TiDB 4.0.2 Release Notes
Release date: July 1, 2020
TiDB version: 4.0.2
Compatibility Changes
TiDB
PD
- Persist
store-limit
and removestore-balance-rate
#2557
- Persist
New Change
- By default, TiDB and TiDB Dashboard share usage details with PingCAP to help understand how to improve the product #18180. For details about what is shared and how to disable the sharing, see Telemetry.
New Features
TiDB
- Support the
MEMORY_QUOTA()
hint inINSERT
statements #18101 - Support authentication based on the
SAN
field of TLS certificate #17698 - Support collation for the
REGEXP()
function #17581 - Support the
sql_select_limit
session and global variable #17604 - Support splitting the Region for the newly added partition by default #17665
- Support pushing the
IF()
/BITXOR()
/BITNEG()
/JSON_LENGTH()
functions to the TiFlash Coprocessor #17651 #17592 - Support a new aggregate function
APPROX_COUNT_DISTINCT()
to calculate the approximate result ofCOUNT(DISTINCT)
#18120 - Support collation in TiFlash and pushing collation-related functions to TiFlash #17705
- Add the
STATUS_ADDRESS
column in theINFORMATION_SCHEMA.INSPECTION_RESULT
table to indicate the status address of servers #17695 - Add the
SOURCE
column in theMYSQL.BIND_INFO
table to indicate the how the bindings are created #17587 - Add the
PLAN_IN_CACHE
andPLAN_CACHE_HITS
columns in thePERFORMANCE_SCHEMA.EVENTS_STATEMENTS_SUMMARY_BY_DIGEST
table to indicate the plan cache usage of SQL statements #17493 - Add the
enable-collect-execution-info
configuration item and thetidb_enable_collect_execution_info
session variable to control whether to collect execution information of each operator and record the information in the slow query log #18073 #18072 - Add the
tidb_slow_log_masking
global variable to control whether to desensitize the queries in slow query log #17694 - Add a diagnostic rule in the
INFORMATION_SCHEMA.INSPECTION_RESULT
table for thestorage.block-cache.capacity
TiKV configuration item #17671 - Add the
BACKUP
andRESTORE
SQL statements to back up and restore data #15274
- Support the
TiKV
PD
TiFlash
- Support new aggregation function
APPROX_COUNT_DISTINCT
in Coprocessor - Enable the
rough set filter
feature by default - Enable TiFlash to run on the ARM architecture
- Support pushing down the
JSON_LENGTH
function in Coprocessor
- Support new aggregation function
Tools
Improvements
TiDB
- Reduce the query latency caused by the Golang memory allocation when CM-Sketch consumes too much memory #17545
- Reduce the QPS recovery duration of a cluster when a TiKV server is in the failure recovery process #17681
- Support pushing aggregate functions to TiKV/TiFlash Coprocessor on partition tables #17655
- Improve the accuracy of row count estimation for index equal conditions #17611
TiKV
TiFlash
Tools
Backup & Restore (BR)
- Improve the performance by pipelining the restore process #266
Bug Fixes
TiDB
- Fix the issue of incorrect execution plan obtained from the plan cache after
tidb_isolation_read_engines
is changed #17570 - Fix the occasional runtime error that occurs when executing the
EXPLAIN FOR CONNECTION
statement #18124 - Fix the incorrect result of the
last_plan_from_cache
session variable in some cases #18111 - Fix the runtime error that occurs when executing the
UNIX_TIMESTAMP()
function from the plan cache #18002 #17673 - Fix the runtime error when the child of
HashJoin
executor returns theNULL
column #17937 - Fix the runtime error caused by concurrently executing the
DROP DATABASE
statement and other DDL statements in the same database #17659 - Fix the incorrect result of the
COERCIBILITY()
function on user variables #17890 - Fix the issue that the
IndexMergeJoin
executor occasionally gets stuck #18091 - Fix the hang issue of the
IndexMergeJoin
executor when out of memory quota and query cancelling is triggered #17654 - Fix the excessive counting memory usage of the
Insert
andReplace
executors #18062 - Fix the issue that the data replication to TiFlash storage is stopped when
DROP DATABASE
andDROP TABLE
are executed concurrently in the same database #17901 - Fix the
BACKUP
/RESTORE
failure between TiDB and the object storage service #17844 - Fix the incorrect error message of privilege check failure when access is denied #17724
- Discard the query feedbacks generated from the
DELETE
/UPDATE
statement #17843 - Forbid altering
AUTO_RANDOM_BASE
for a table withoutAUTO_RANDOM
property #17828 - Fix the issue that the
AUTO_RANDOM
column is allocated wrong results when the table is moved between databases byALTER TABLE ... RENAME
#18243 - Fix the issue that some system tables cannot be accessed when setting the value of
tidb_isolation_read_engines
withouttidb
#17719 - Fix the inaccurate result of JSON comparison on large integers and float values #17717
- Fix the incorrect decimal property for the result of the
COUNT()
function #17704 - Fix the incorrect result of the
HEX()
function when the type of input is the binary string #17620 - Fix the issue that an empty result is returned when querying the
INFORMATION_SCHEMA.INSPECTION_SUMMARY
table without filter condition #17697 - Fix the issue that the hashed password used by the
ALTER USER
statement to update user information is unexpected #17646 - Support collation for
ENUM
andSET
values #17701 - Fix the issue that the timeout mechanism for pre-splitting Regions does not work when creating a table #17619
- Fix the issue that the schema is unexpectedly updated when a DDL job is retried, which might break the atomicity of DDL jobs #17608
- Fix the incorrect result of the
FIELD()
function when the argument contains the column #17562 - Fix the issue that the
max_execution_time
hint does not work occasionally #17536 - Fix the issue that the concurrency information is redundantly printed in the result of
EXPLAIN ANALYZE
#17350 - Fix the incompatible behavior of
%h
on theSTR_TO_DATE
function #17498 - Fix the issue that the follower/learner keeps retrying when
tidb_replica_read
is set tofollower
and there is a network partition between the leader and the follower/learner #17443 - Fix the issue that TiDB sends too many pings to PD follower in some cases #17947
- Fix the issue that the range partition table of older versions cannot be loaded in TiDB v4.0 #17983
- Fix the SQL statement timeout issue when multiple Region requests fail at the same time by assigning different
Backoffer
for each Region #17585 - Fix the MySQL incompatible behavior when parsing
DateTime
delimiters #17501 - Fix the issue that TiKV requests are occasionally sent to the TiFlash server #18105
- Fix the data inconsistency issue occurred because the lock of a written and deleted primary key in one transaction is resolved by another transaction #18250
- Fix the issue of incorrect execution plan obtained from the plan cache after
TiKV
- Fix a memory safety issue for the status server #8101
- Fix the issue of lost precision in JSON numeric comparison #8087
- Fix the wrong query slow log #8050
- Fix the issue that a peer cannot be removed when its store is isolated during multiple merge processes #8048
- Fix the issue that
tikv-ctl recover-mvcc
does not remove invalid pessimistic locks #8047 - Fix the issue that some Titan histogram metrics are missing #7997
- Fix the issue that TiKV returns
duplicated error
to TiCDC #7887
PD
- Check the correctness of the
pd-server.dashboard-address
configuration item #2517 - Fix the panic issue of PD when setting
store-limit-mode
toauto
#2544 - Fix the issue that hotspots cannot be identified in some cases #2463
- Fix the issue that placement rules prevent the store from changing to
tombstone
in some cases #2546 - Fix the panic issue of PD when upgrading from earlier versions in some cases #2564
- Check the correctness of the
TiFlash
- Fix the issue that the proxy might panic when the
region not found
error occurs - Fix the issue that the I/O exception thrown in
drop table
might lead to synchronization failure of TiFlash schema
- Fix the issue that the proxy might panic when the
Was this page helpful?