All Versions
64
Latest Version
Avg Release Cycle
28 days
Latest Release
360 days ago

Changelog History
Page 1

  • v4.0.8 Changes

    October 30, 2020

    🆕 New Features

    • 👌 Support the new aggregate function APPROX_PERCENTILE #20197

    👌 Improvements

    • Prioritize low-selectivity indexes in the greedy search procedure of Selectivity() #20154
    • Record more RPC runtime information in Coprocessor runtime statistics #19264
    • 🐎 Speed up parsing the slow log to improve query performance #20556
    • ⚡️ Wait for timeout execution plans during the plan binding stage to record more debug information when the SQL optimizer is verifying potential new plans #20530
    • ➕ Add the execution retry time in the slow log and the slow query result #20495 #20494
    • Add the table_storage_stats system table #20431
    • ➕ Add the RPC runtime statistical information for the INSERT/UPDATE/REPLACE statement #20430
    • ➕ Add the operator information in the result of EXPLAIN FOR CONNECTION #20384
    • 🌲 Adjust the TiDB error log to the DEBUG level for the client connection/disconnection activities #20321
    • ➕ Add monitoring metrics for Coprocessor Cache #20293
    • ➕ Add the runtime information of pessimistic lock keys #20199
    • ➕ Add two extra sections of time consumption information in the runtime information and trace span #20187
    • ➕ Add the runtime information of transaction commit in the slow log #20185
    • 🔀 Disable the index merge join #20599
    • ➕ Add the ISO 8601 and timezone supports for temporal string literals #20670

    🐛 Bug Fixes

    • 🛠 Fix the unexpected panic that occurs when using partitioned tables #20565
    • 🛠 Fix the wrong result of outer join when filtering the outer side using index merge join #20427
    • 🛠 Fix the issue that the NULL value is returned when converting data to the BIT type if the data is too long #20363
    • 🛠 Fix the corrupted default value for the BIT type column #20340
    • 🛠 Fix the overflow error that might occur when converting the BIT type to the INT64 type #20312
    • 🛠 Fix the possible wrong result of the propagate column optimization for the hybrid type column #20297
    • 🛠 Fix the panic that might occur when storing outdated plans from the plan cache #20246
    • 🛠 Fix the bug that the returned result is mistakenly truncated if FROM_UNIXTIME and UNION ALL are used together #20240
    • 🛠 Fix the issue that wrong results might be returned when the Enum type value is converted to the Float type #20235
    • 🛠 Fix the possible panic of RegionStore.accessStore #20210
    • 🛠 Fix the wrong result returned when sorting the maximum unsigned integer in BatchPointGet #20205
    • 🛠 Fix the bug that the coercibilities of Enum and Set are wrong #20364
    • 🛠 Fix an issue of ambiguous YEAR conversion #20292
    • Fix the issue of wrong reported result that occurs when the KV duration panel contains store0 #20260
    • 🛠 Fix the issue that the Float type data is mistakenly inserted regardless of the out of range error #20252
    • 🛠 Fix the bug that the generated column does not handle bad NULL values #20216
    • 🛠 Fix the inaccurate error information for the YEAR type data that is out of range #20170
    • 🛠 Fix the unexpected invalid auto-id error that might occur during the pessimistic transaction retry #20134
    • 🛠 Fix the issue that the constraint is not checked when using ALTER TABLE to change the Enum/Set type #20046
    • 🛠 Fix the wrong runtime information of cop tasks recorded when multiple operators are used for concurrency #19947
    • 🛠 Fix the issue that read-only system variables cannot be explicitly selected as the session variables #19944
    • 🛠 Fix the issue that the duplicate ORDER BY condition might cause sub-optimal execution plans #20333
    • 🛠 Fix the issue that the generated metric profile might fail if the font size exceeds the maximum allowable value #20637
  • v4.0.7 Changes

    September 29, 2020

    👌 Improvements

    • ➕ Add more runtime information for the join operator #20093
    • ➕ Add the hit ratio information of coprocessor cache in EXPLAIN ANALYZE #19972
    • 👌 Support pushing down the ROUND function to TiFlash #19967
    • ➕ Add the default value of CMSketch for ANALYZE #19927
    • Refine error message desensitization #20004
    • Accept connections from clients using connectors from MySQL 8.0 #19959

    🐛 Bug Fixes

    • 🛠 Fix a vectorization bug from and/or/COALESCE caused by shortcut #20092
    • 🛠 Fix the issue that plan digests are the same when the cop task stores are of different types #20076
    • 🛠 Fix the wrong behavior of the != any() function #20062
    • 🛠 Fix the query error that occurs when the slow-log file does not exist #20051
    • 🛠 Fix the issue that Region requests continue to retry when the context is canceled #20031
    • Fix the issue that querying the time type of the cluster_slow_query table in streaming request might result in an error #19943
    • 🛠 Fix the issue that DML statements using case when might cause schema change #20095
    • 🛠 Fix the issue that the prev_stmt information in slow log is not desensitized #20048
    • 🛠 Fix the issue that tidb-server does not release the table lock when it exits abnormally #20020
    • 🛠 Fix the incorrect error message that occurs when inserting data of the ENUM and SET type #19950
    • 🛠 Fix the wrong behavior of the IsTrue function in some situations #19903
    • 🛠 Fix the issue that the CLUSTER_INFO system table might not work normally after PD is scaled in or out #20026
    • ⚠ Avoid unnecessary warnings or errors when folding constants in control expressions #19910
    • ⚡️ Update the method of updating statistics to avoid Out of Memory (OOM) #20013
  • v4.0.6 Changes

    September 15, 2020

    👌 Improvements

    • Replace error codes and messages with standard errors #19888
    • 👌 Improve the write performance of partitioned table #19649
    • Record more RPC runtime information in Cop Runtime statistics #19264
    • 🐎 Forbid creating tables in metrics_schema and performance_schema #19792
    • 👌 Support adjusting the concurrency of the union executor #19886
    • 👌 Support out join in broadcast join #19664
    • ➕ Add SQL digest for the process list #19829
    • Switch to the pessimistic transaction mode for autocommit statement retry #19796
    • Support the %r and %T data format in Str_to_date() #19693
    • Enable SELECT INTO OUTFILE to require the file privilege #19577
    • 👌 Support the stddev_pop function #19541
    • ➕ Add the TiDB-Runtime dashboard #19396
    • 👌 Improve compatibility for the ALTER TABLE algorithms #19364
    • ⚡️ Encode insert/delete/update plans in the slow log plan field #19269

    🐛 Bug Fixes

    • Fix an issue of tikv_cop_wait time in metric profile #19881
    • 🛠 Fix the wrong result of SHOW GRANTS #19834
    • 🛠 Fix the incorrect query result of != ALL (subq) #19831
    • 🛠 Fix a bug of converting the enum and set types #19778
    • Add a privilege check for SHOW STATS_META and SHOW STATS_BUCKET #19760
    • 🛠 Fix the error of unmatched column lengths caused by builtinGreatestStringSig and builtinLeastStringSig #19758
    • ⚠ If unnecessary errors or warnings occur, the vectorized control expresions fall back to their scalar execution #19749
    • 🛠 Fix an error of the Apply executor when the type of the correlation column is Bit #19692
    • 🛠 Fix an issue that occurs when the user queries processlist and cluster_log in MySQL 8.0 client #19690
    • 🛠 Fix an issue that plans of the same type have different plan digests #19684
    • Forbid changing the column type from Decimal to Int #19682
    • 🛠 Fix an issue that SELECT ... INTO OUTFILE returns the runtime error #19672
    • 🛠 Fix an incorrect implementation of builtinRealIsFalseSig #19670
    • 🛠 Fix an issue that the partition expression check misses the parentheses expression #19614
    • 🛠 Fix a query error when there is an Apply executor upon HashJoin #19611
    • 🛠 Fix an incorrect result of vectorization that casts Real as Time #19594
    • 🛠 Fix a bug that the SHOW GRANTS statement shows grants for non-existent users #19588
    • 🛠 Fix a query error when there is an Apply executor upon IndexLookupJoin #19566
    • 🛠 Fix the wrong results when converting Apply to HashJoin on a partitioned table #19546
    • 🛠 Fix incorrect results when there is an IndexLookUp executor under the inner side of an Apply #19508
    • 🛠 Fix an unexpected panic when using view #19491
    • 🛠 Fix an incorrect result of anti-semi-join query #19477
    • 🛠 Fix a bug that topN statistics is not deleted when the statistics is dropped #19465
    • 🛠 Fix a wrong result caused by mistaken usage of batch point get #19460
    • 🛠 Fix a bug that a column cannot be found in indexLookupJoin with a virtual generated column #19439
    • 🛠 Fix an error that different plans of the select and update queries compare datum #19403
    • 🛠 Fix a data race for TiFlash work index in region cache #19362
    • 🛠 Fix a bug that the logarithm function does not show a warning #19291
    • 🛠 Fix an unexpected error that occurs when TiDB persists data to disk #19272
    • 👌 Support using a single partitioned table on the inner side of index join #19197
    • 🛠 Fix the wrong hash key value generated for decimal #19188
    • 🛠 Fix an issue that TiDB returns an no regions error when table endKey and region endKey are the same #19895
    • 🛠 Fix the unexpected success of alter partition #19891
    • 🛠 Fix the wrong value of the default maximum packet length allowed for pushed down expressions #19876
    • 🛠 Fix a wrong behavior for the Max/Min functions on the ENUM/SET columns #19869
    • Fix read failure from the tiflash_segments and tiflash_tables system tables when some TiFlash nodes are offline #19748
    • 🛠 Fix a wrong result of the Count(col) aggregation function #19628
    • 🛠 Fix a runtime error of the TRUNCATE operation #19445
    • 🛠 Fix the issue that PREPARE statement FROM @Var will fail when Var contains uppercase characters #19378
    • 🛠 Fix a bug that schema charset modification in an uppercase schema will cause panic #19302
    • Fix inconsistency of plans between information_schema.statements_summary and explain, when the information contains tikv/tiflash #19159
    • 🛠 Fix the error in tests that the file does not exist for select into outfile #19725
    • Fix the issue that INFORMATION_SCHEMA.CLUSTER_HARDWARE does not have raid device information #19457
    • 📜 Make the add index operation that has a generated column with the case-when expression can exit normally when it encounters a parse error #19395
    • 🛠 Fix a bug that DDL takes too long to retry #19488
    • 👉 Make statements like alter table db.t1 add constraint fk foreign key (c2) references t2(c1) execute without first executing use db #19471
    • 🔄 Change the dispatch error from an Error to an Info message in the server log file #19454
  • v4.0.5 Changes

    August 28, 2020

    Compatibility Changes

    • 🔄 Change drop partition and truncate partition's job arguments to support the ID array of multiple partitions #18930
    • ➕ Add the delete-only state for checking add partition replicas #18865

    👌 Improvements

    • 🐎 Optimize the performance of DecodePlan for big union queries #18941
    • 🔒 Reduce the number of GC lock scans when meeting the Region cache miss error #18876
    • 🐎 Ease the impact of statistical feedback on cluster performance #18772
    • 👌 Support canceling operations before the RPC response is returned #18580
    • ➕ Add the HTTP API to generate the TiDB metric profile #18531
    • 👌 Support scattering partitioned tables #17863
    • ➕ Add detailed memory usage of each instance in Grafana #18679
    • 👉 Show the detailed runtime information of the BatchPointGet executor in the result of EXPLAIN #18892
    • 👉 Show the detailed runtime information of the PointGet executor in the result of EXPLAIN #18817
    • 🚚 Warn the potential deadlock for Consume in remove() #18395
    • 👌 Support the Action when memory exceed quota for TableReader Executor #18392
    • 👍 Refine the behaviors of StrToInt and StrToFloat and support converting JSON to the date, time, and timestamp types #18159
    • 👌 Support limiting the memory usage of the TableReader executor #18392
    • Avoid too many times of backoff when retrying the batch cop request #18999
    • 👌 Improve compatibility for ALTER TABLE algorithms #19270
    • 👉 Make the single partitioned table support IndexJoin on the inner side #19151
    • 👌 Support searching the log file even when the log includes invalid lines #18579

    🐛 Bug Fixes

    • 🛠 Fix the should ensure all columns have the same length error that occurs because the ErrTruncate/Overflow error is incorrectly handled in the builtinCastRealAsDecimalSig function #18967
    • Fix the issue that the pre_split_regions table option does not work in the partitioned table #18837
    • 🛠 Fixe the issue that might cause a large transaction to be terminated prematurely #18813
    • 🛠 Fix the issue that using the collation functions get wrong query results #18735
    • 🛠 Fix the bug that the getAutoIncrementID() function does not consider the tidb_snapshot session variable, which might cause the dumper tool to fail with the table not exist error #18692
    • 🛠 Fix the unknown column error for SQL statement like select a from t having t.a #18434
    • 🛠 Fix the panic issue that writing the 64-bit unsigned type into the hash partitioned table causes overflow and gets an unexpected negative number when the partition key is the integer type #18186
    • 🛠 Fix the wrong behavior of the char function #18122
    • 🛠 Fix the issue that the ADMIN REPAIR TABLE statement cannot parse integer in the expressions on the range partition #17988
    • 🛠 Fix the wrong behavior of the SET CHARSET statement #17289
    • 🛠 Fix the bug caused by the wrong collation setting which leads to the wrong result of the collation function #17231
    • Fix the issue that STR_TO_DATE's handling of the format tokens '%r', '%h' is inconsistent with that of MySQL #18727
    • 🛠 Fix issues that the TiDB version information is inconsistent with that of PD/TiKV in the cluster_info table #18413
    • 🛠 Fix the existent checks for pessimistic transactions #19004
    • 🛠 Fix the issue that executing union select for update might cause concurrent race #19006
    • 🛠 Fix the wrong query result when apply has a child of the PointGet operator #19046
    • 🛠 Fix the incorrect result that occurs when IndexLookUp is in the inner side of the Apply operator #19496
    • 🛠 Fix the incorrect result of anti-semi-join queries #19472
    • 🛠 Fix the incorrect result caused by the mistaken usage of BatchPointGet #19456
    • 🛠 Fix the incorrect result that occurs when UnionScan is in the inner side of the Apply operator #19447
    • 🛠 Fix the panic caused by using the EXECUTE statement to print an expensive query log #17419
    • 🛠 Fix the index join error when the join key is ENUM or SET #19235
    • 🛠 Fix the issue that the query range cannot be built when the NULL value exists on the index column #19358
    • 🛠 Fix the data race issue caused by updating the global configuration #17964
    • 🛠 Fix the panic issue caused when modifying the character set in an uppercase schema #19286
    • 🛠 Fix an unexpected error caused by changing the temporary directory during the disk spill action #18970
    • 🛠 Fix the wrong hash key for the decimal type #19131
    • 🛠 Fix the issue that the PointGet and BatchPointGet operators do not consider the partition selection syntax and get incorrect results #19141
    • 🛠 Fix the incorrect results when using the Apply operator together with the UnionScan operator #19104
    • 🛠 Fix the bug that causes the indexed virtual generated column to return wrong value #17989
    • ➕ Add the lock for runtime statistics to fix a panic caused by concurrent execution #18983
    • Check ErrTruncate/Overflow locally for builtinCastRealAsDecimalSig to fix the should ensure all columns have the same length error #18961
  • v4.0.4 Changes

    July 31, 2020

    🐛 Bug Fixes

    • 🛠 Fix the issue of getting stuck when querying information_schema.columns #18849
    • 🛠 Fix the errors that occur when the PointGet and BatchPointGet operators encounter in null #18848
    • 🛠 Fix the wrong result of BatchPointGet #18815
    • 🛠 Fix the issue of incorrect query result that occurs when the HashJoin operator encounters the set or enum type #18859
  • v4.0.3 Changes

    July 24, 2020

    👌 Improvements

    • 🌲 Add the tidb_log_desensitization global variable to control whether to do desensitization when logging SQL queries #18581
    • 👍 Enable tidb_allow_batch_cop by default #18552
    • Speed up canceling a query #18505
    • Add a header for the tidb_decode_plan result #18501
    • 🔧 Make the configuration checker compatible with earlier versions of the configuration file #18046
    • 0️⃣ Enable collecting the execution information by default #18518
    • Add the tiflash_tables and tiflash_segments system tables #18536
    • 🚚 Move AUTO RANDOM out of experimental features and announce its general availability. The improvements and compatibility changes are as follows:
    • 🔧 Deprecate experimental.allow-auto-random in the configuration file. No matter how this item is configured, you can always define the AUTO RANDOM feature on columns. #18613 #18623
    • 👍 Add the tidb_allow_auto_random_explicit_insert session variable to control the explicit writes on AUTO RANDOM columns. The default value is false. This is to avoid the unexpected AUTO_RANDOM_BASE update caused by explicit writes on columns. #18508
    • 👍 Allow defining AUTO_RANDOM only on BIGINT and UNSIGNED BIGINT columns and restrict the maximum number of shard bits to 15, which avoids the allocatable space being consumed too quickly #18538
    • Do not trigger the AUTO_RANDOM_BASE update when defining the AUTO_RANDOM attribute on the BIGINT column and inserting the negative value into the primary key #17987
    • 👉 Use the highest bit of an integer for ID allocation when defining the AUTO_RANDOM attribute on UNSIGNED BIGINT columns, which gets more allocable space #18404
    • 👌 Support updating the AUTO_RANDOM attribute in the result of SHOW CREATE TABLE #18316

    🐛 Bug Fixes

    • Return an error instead of an empty set for IndexHashJoin when an error occurs during execution #18586
    • 🛠 Fix the recurring panic when gRPC transportReader is broken #18562
    • 🛠 Fix the issue that Green GC does not scan locks on offline stores which might cause data incompleteness #18550
    • Forbid processing a non-read-only statement using TiFlash engine #18534
    • Return the actual error message when a query connection panics #18500
    • 🛠 Fix the issue that the ADMIN REPAIR TABLE execution fails to reload the table metadata on the TiDB node #18323
    • 🛠 Fix the data inconsistency issue occurred because the lock of a written and deleted primary key in one transaction is resolved by another transaction #18291
    • 👉 Make spilling disk work well #18288
    • 🛠 Fix the error reported when the REPLACE INTO statement works on the table that contains generated columns #17907
    • 👷 Return the OOM error when the IndexHashJoin and IndexMergeJoin workers panic #18527
    • 🛠 Fix the bug that the execution of Index Join might return wrong results in special cases when the index used by Index Join contains the integer primary key #18565
    • 🛠 Fix the issue that when the new collation is enabled on the cluster, the data updated on columns with the new collation in a transaction cannot be read through the unique index #18703
  • v4.0.2 Changes

    July 01, 2020

    Compatibility Changes

    • ✂ Remove sensitive information in the slow query log and the statement summary table #18130
    • Forbid negative value in the sequence cache #18103
    • ✂ Remove tombstone TiKV and TiFlash stores from the CLUSTER_INFO table #17953
    • 🔄 Change the diagnostic rule from current-load to node-check #17660

    🆕 New Features

    • 👌 Support the MEMORY_QUOTA() hint in INSERT 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 of COUNT(DISTINCT) #18120
    • 👌 Support collation in TiFlash and pushing collation-related functions to TiFlash #17705
    • ➕ Add the STATUS_ADDRESS column in the INFORMATION_SCHEMA.INSPECTION_RESULT table to indicate the status address of servers #17695
    • ➕ Add the SOURCE column in the MYSQL.BIND_INFO table to indicate the how the bindings are created #17587
    • Add the PLAN_IN_CACHE and PLAN_CACHE_HITS columns in the PERFORMANCE_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 the tidb_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 the storage.block-cache.capacity TiKV configuration item #17671
    • ➕ Add the BACKUP and RESTORE SQL statements to back up and restore data #15274

    👌 Improvements

    • ⬇️ 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

    🐛 Bug Fixes

    • 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 the NULL 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 and Replace executors #18062
    • 🛠 Fix the issue that the data replication to TiFlash storage is stopped when DROP DATABASE and DROP 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 without AUTO_RANDOM property #17828
    • Fix the issue that some system tables cannot be accessed when setting the value of tidb_isolation_read_engines without tidb #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 and SET 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 the STR_TO_DATE function #17498
    • Fix the issue that the follower/learner keeps retrying when tidb_replica_read is set to follower 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
  • v4.0.1 Changes

    June 12, 2020

    🚀 (There is no public release note for this version of TiDB Server)

  • v4.0.0-rc Changes

    April 08, 2020

    Compatibility Changes

    • 🌲 Refuse to get started instead of returning an alert log when the tidb-server status port is occupied #15177

    🐛 Bug Fixes

    • 🛠 Fix the issue that replication between the upstream and downstream might go wrong when the DDL job is executed using the PREPARE statement because of the incorrect job query in the internal records #15435
    • 🛠 Fix the issue of incorrect subquery result in the Read Commited isolation level #15471
    • 🛠 Fix the issue of possible wrong behavior when using INSERT ... VALUES to specify the BIT(N) data type #15350
    • 🛠 Fix the issue that the DDL Job internal retry does not fully achieve the expected outcomes because the values of ErrorCount fail to be summed correctly #15373
    • 🛠 Fix the issue that Garbage Collection might work abnormally when TiDB connects to TiFlash #15505
    • 🛠 Fix the issue of incorrect result caused by the Inline Projection optimization #15411
    • 🔀 Fix the issue that the SQL Hint INL_MERGE_JOIN is executed incorrectly in some cases #15515
    • 🛠 Fix the issue that columns with the AutoRandom attribute are rebased when the negative number is explicitly written to these columns #15397

    🆕 New Features and Improvements

    • Add the case-sensitive collation so that users can enable utf8mb4_general_ci and utf8_general_ci in a new cluster #33
    • ✨ Enhance the RECOVER TABLE syntax to support recovering truncated tables #15398
    • 🌲 Refuse to get started instead of returning an alert log when the the tidb-server status port is occupied #15177
    • 🐎 Optimize the write performance of using a sequence as the default column values #15216
    • ➕ Add the DDLJobs system table to query the details of DDL jobs #14837
    • 🐎 Optimize the aggFuncSum performance #14887
    • ⚡️ Optimize the output of EXPLAIN #15507
  • v4.0.0-beta.2 Changes

    March 18, 2020

    🛠 Bugfix

    • 🛠 A panic caused by encoding data with length of MaxUint16 has been fixed 15404
    • 🛠 Fix load data statement can't be killed.15391
    • Forbiden create nested view.15420