|
| 1 | +--- |
| 2 | +title: TiDB 2.1 RC1 Release Notes |
| 3 | +category: Releases |
| 4 | +--- |
| 5 | + |
| 6 | +# TiDB 2.1 RC1 Release Notes |
| 7 | + |
| 8 | +On August 24, 2018, TiDB 2.1 RC1 is released! Compared with TiDB 2.1 Beta, this release has great improvement in stability, SQL optimizer, statistics information, and execution engine. |
| 9 | + |
| 10 | +## TiDB |
| 11 | + |
| 12 | +- SQL Optimizer |
| 13 | + - Fix the issue that a wrong result is returned after the correlated subquery is decorrelated in some cases [#6972](https://github.com/pingcap/tidb/pull/6972) |
| 14 | + - Optimize the output result of `Explain` [#7011](https://github.com/pingcap/tidb/pull/7011)[#7041](https://github.com/pingcap/tidb/pull/7041) |
| 15 | + - Optimize the choosing strategy of the outer table for `IndexJoin` [#7019](https://github.com/pingcap/tidb/pull/7019) |
| 16 | + - Remove the Plan Cache of the non-`PREPARE` statement [#7040](https://github.com/pingcap/tidb/pull/7040) |
| 17 | + - Fix the issue that the `INSERT` statement is not parsed and executed correctly in some cases [#7068](https://github.com/pingcap/tidb/pull/7068) |
| 18 | + - Fix the issue that the `IndexJoin` result is not correct in some cases [#7150](https://github.com/pingcap/tidb/pull/7150) |
| 19 | + - Fix the issue that the `NULL` value cannot be found using the unique index in some cases [#7163](https://github.com/pingcap/tidb/pull/7163) |
| 20 | + - Fix the range computing issue of the prefix index in UTF-8 [#7194](https://github.com/pingcap/tidb/pull/7194) |
| 21 | + - Fix the issue that result is not correct caused by eliminating the `Project` operator in some cases [#7257](https://github.com/pingcap/tidb/pull/7257) |
| 22 | + - Fix the issue that `USE INDEX(`PRIMARY`)` cannot be used when the primary key is an integer [#7316](https://github.com/pingcap/tidb/pull/7316) |
| 23 | + - Fix the issue that the index range cannot be computed using the correlated column in some cases [#7357](https://github.com/pingcap/tidb/pull/7357) |
| 24 | +- SQL Execution Engine |
| 25 | + - Fix the issue that the daylight saving time is not computed correctly in some cases [#6823](https://github.com/pingcap/tidb/pull/6823) |
| 26 | + - Refactor the aggregation function framework to improve the execution efficiency of the `Stream` and `Hash` aggregation operators [#6852](https://github.com/pingcap/tidb/pull/6852) |
| 27 | + - Fix the issue that the `Hash` aggregation operator cannot exit normally in some cases [#6982](https://github.com/pingcap/tidb/pull/6982) |
| 28 | + - Fix the issue that `BIT_AND`/`BIT_OR`/`BIT_XOR` does not handle the non-integer data correctly [#6994](https://github.com/pingcap/tidb/pull/6994) |
| 29 | + - Optimize the execution speed of the `REPLACE INTO` statement and increase the performance nearly 10 times [#7027](https://github.com/pingcap/tidb/pull/7027) |
| 30 | + - Optimize the memory usage of time type data and decrease the memory usage of the time type data by fifty percent [#7043](https://github.com/pingcap/tidb/pull/7043) |
| 31 | + - Fix the issue that the returned result is mixed with signed and unsigned integers in the `UNION` statement is not compatible with MySQL [#7112](https://github.com/pingcap/tidb/pull/7112) |
| 32 | + - Fix the panic issue caused by the too much memory applied by `LPAD`/`RPAD`/`TO_BASE64`/`FROM_BASE64`/`REPEAT` [#7171](https://github.com/pingcap/tidb/pull/7171) [#7266](https://github.com/pingcap/tidb/pull/7266) [#7409](https://github.com/pingcap/tidb/pull/7409) [#7431](https://github.com/pingcap/tidb/pull/7431) |
| 33 | + - Fix the incorrect result when `MergeJoin`/`IndexJoin` handles the `NULL` value [#7255](https://github.com/pingcap/tidb/pull/7255) |
| 34 | + - Fix the incorrect result of `Outer Join` in some cases [#7288](https://github.com/pingcap/tidb/pull/7288) |
| 35 | + - Improve the error message of `Data Truncated` to facilitate locating the wrong data and the corresponding field in the table [#7401](https://github.com/pingcap/tidb/pull/7401) |
| 36 | + - Fix the incorrect result for `decimal` in some cases [#7001](https://github.com/pingcap/tidb/pull/7001) [#7113](https://github.com/pingcap/tidb/pull/7113) [#7202](https://github.com/pingcap/tidb/pull/7202) [#7208](https://github.com/pingcap/tidb/pull/7208) |
| 37 | + - Optimize the point select performance [#6937](https://github.com/pingcap/tidb/pull/6937) |
| 38 | + - Prohibit the isolation level of `Read Commited` to avoid the underlying problem [#7211](https://github.com/pingcap/tidb/pull/7211) |
| 39 | + - Fix the incorrect result of `LTRIM`/`RTRIM`/`TRIM` in some cases [#7291](https://github.com/pingcap/tidb/pull/7291) |
| 40 | + - Fix the issue that the `MaxOneRow` operator cannot guarantee that the returned result does not exceed one row [#7375](https://github.com/pingcap/tidb/pull/7375) |
| 41 | + - Divide the Coprocessor requests with too many ranges [#7454](https://github.com/pingcap/tidb/pull/7454) |
| 42 | +- Statistics |
| 43 | + - Optimize the mechanism of statistics dynamic collection [#6796](https://github.com/pingcap/tidb/pull/6796) |
| 44 | + - Fix the issue that `Auto Analyze` does not work when data is updated frequently [#7022](https://github.com/pingcap/tidb/pull/7022) |
| 45 | + - Decrease the Write conflicts during the statistics dynamic update process [#7124](https://github.com/pingcap/tidb/pull/7124) |
| 46 | + - Optimize the cost estimation when the statistics is incorrect [#7175](https://github.com/pingcap/tidb/pull/7175) |
| 47 | + - Optimize the `AccessPath` cost estimation strategy [#7233](https://github.com/pingcap/tidb/pull/7233) |
| 48 | +- Server |
| 49 | + - Fix the bug in loading privilege information [#6976](https://github.com/pingcap/tidb/pull/6976) |
| 50 | + - Fix the issue that the `Kill` command is too strict with privilege check [#6954](https://github.com/pingcap/tidb/pull/6954) |
| 51 | + - Fix the issue of removing some binary numeric types [#6922](https://github.com/pingcap/tidb/pull/6922) |
| 52 | + - Shorten the output log [#7029](https://github.com/pingcap/tidb/pull/7029) |
| 53 | + - Handle the `mismatchClusterID` issue [#7053](https://github.com/pingcap/tidb/pull/7053) |
| 54 | + - Add the `advertise-address` configuration item [#7078](https://github.com/pingcap/tidb/pull/7078) |
| 55 | + - Add the `GrpcKeepAlive` option [#7100](https://github.com/pingcap/tidb/pull/7100) |
| 56 | + - Add the connection or `Token` time monitor [#7110](https://github.com/pingcap/tidb/pull/7110) |
| 57 | + - Optimize the data decoding performance [#7149](https://github.com/pingcap/tidb/pull/7149) |
| 58 | + - Add the `PROCESSLIST` table in `INFORMMATION_SCHEMA` [#7236](https://github.com/pingcap/tidb/pull/7236) |
| 59 | + - Fix the order issue when multiple rules are hit in verifying the privilege [#7211](https://github.com/pingcap/tidb/pull/7211) |
| 60 | + - Change some default values of encoding related system variables to UTF-8 [#7198](https://github.com/pingcap/tidb/pull/7198) |
| 61 | + - Make the slow query log show more detailed information [#7302](https://github.com/pingcap/tidb/pull/7302) |
| 62 | + - Support registering tidb-server related information in PD and obtaining this information by HTTP API [#7082](https://github.com/pingcap/tidb/pull/7082) |
| 63 | +- Compatibility |
| 64 | + - Support Session variables `warning_count` and `error_count` [#6945](https://github.com/pingcap/tidb/pull/6945) |
| 65 | + - Add `Scope` check when reading the system variables [#6958](https://github.com/pingcap/tidb/pull/6958) |
| 66 | + - Support the `MAX_EXECUTION_TIME` syntax [#7012](https://github.com/pingcap/tidb/pull/7012) |
| 67 | + - Support more statements of the `SET` syntax [#7020](https://github.com/pingcap/tidb/pull/7020) |
| 68 | + - Add validity check when setting system variables [#7117](https://github.com/pingcap/tidb/pull/7117) |
| 69 | + - Add the verification of the number of `PlaceHolder`s in the `Prepare` statement [#7162](https://github.com/pingcap/tidb/pull/7162) |
| 70 | + - Support `set character_set_results = null` [#7353](https://github.com/pingcap/tidb/pull/7353) |
| 71 | + - Support the `flush status` syntax [#7369](https://github.com/pingcap/tidb/pull/7369) |
| 72 | + - Fix the column size of `SET` and `ENUM` types in `information_schema` [#7347](https://github.com/pingcap/tidb/pull/7347) |
| 73 | + - Support the `NATIONAL CHARACTER` syntax of statements for creating a table [#7378](https://github.com/pingcap/tidb/pull/7378) |
| 74 | + - Support the `CHARACTER SET` syntax in the `LOAD DATA` statement [#7391](https://github.com/pingcap/tidb/pull/7391) |
| 75 | + - Fix the column information of the `SET` and `ENUM` types [#7417](https://github.com/pingcap/tidb/pull/7417) |
| 76 | + - Support the `IDENTIFIED WITH` syntax in the `CREATE USER` statement [#7402](https://github.com/pingcap/tidb/pull/7402) |
| 77 | + - Fix the precision losing issue during `TIMESTAMP` computing process [#7418](https://github.com/pingcap/tidb/pull/7418) |
| 78 | + - Support the validity verification of more `SYSTEM` variables [#7196](https://github.com/pingcap/tidb/pull/7196) |
| 79 | + - Fix the incorrect result when the `CHAR_LENGTH` function computes the binary string [#7410](https://github.com/pingcap/tidb/pull/7410) |
| 80 | + - Fix the incorrect `CONCAT` result in a statement involving `GROUP BY` [#7448](https://github.com/pingcap/tidb/pull/7448) |
| 81 | + - Fix the imprecise type length issue when casting the `DECIMAL` type to the `STRING` type [#7451](https://github.com/pingcap/tidb/pull/7451) |
| 82 | +- DML |
| 83 | + - Fix the stability issue of the `Load Data` statement [#6927](https://github.com/pingcap/tidb/pull/6927) |
| 84 | + - Fix the memory usage issue when performing some `Batch` operations [#7086](https://github.com/pingcap/tidb/pull/7086) |
| 85 | + - Improve the performance of the `Replace Into` statement [#7027](https://github.com/pingcap/tidb/pull/7027) |
| 86 | + - Fix the inconsistent precision issue when writing `CURRENT_TIMESTAMP` [#7355](https://github.com/pingcap/tidb/pull/7355) |
| 87 | +- DDL |
| 88 | + - Improve the method of DDL judging whether `Schema` is synchronized to avoid misjudgement in some cases [#7319](https://github.com/pingcap/tidb/pull/7319) |
| 89 | + - Fix the `SHOW CREATE TABLE` result in adding index process [#6993](https://github.com/pingcap/tidb/pull/6993) |
| 90 | + - Allow the default value of `text`/`blob`/`json` to be NULL in non-restrict `sql-mode` [#7230](https://github.com/pingcap/tidb/pull/7230) |
| 91 | + - Fix the `ADD INDEX` issue in some cases [#7142](https://github.com/pingcap/tidb/pull/7142) |
| 92 | + - Increase the speed of adding `UNIQUE-KEY` index operation largely [#7132](https://github.com/pingcap/tidb/pull/7132) |
| 93 | + - Fix the truncating issue of the prefix index in UTF-8 character set [#7109](https://github.com/pingcap/tidb/pull/7109) |
| 94 | + - Add the environment variable `tidb_ddl_reorg_priority` to control the priority of the `add-index` operation [#7116](https://github.com/pingcap/tidb/pull/7116) |
| 95 | + - Fix the display issue of `AUTO-INCREMENT` in `information_schema.tables` [#7037](https://github.com/pingcap/tidb/pull/7037) |
| 96 | + - Support the `admin show ddl jobs <number>` command and support output specified number of DDL jobs [#7028](https://github.com/pingcap/tidb/pull/7028) |
| 97 | + - Support parallel DDL job execution [#6955](https://github.com/pingcap/tidb/pull/6955) |
| 98 | +- [Table Partition](https://github.com/pingcap/tidb/projects/6) (Experimental) |
| 99 | + - Support top level partition |
| 100 | + - Support `Range Partition` |
| 101 | + |
| 102 | +## PD |
| 103 | + |
| 104 | +- Features |
| 105 | + - Introduce the version control mechanism and support rolling update of the cluster with compatibility |
| 106 | + - Enable the `region merge` feature |
| 107 | + - Support the `GetPrevRegion` interface |
| 108 | + - Support splitting Regions in batch |
| 109 | + - Support storing the GC safepoint |
| 110 | +- Improvements |
| 111 | + - Optimize the issue that TSO allocation is affected by the system clock going backwards |
| 112 | + - Optimize the performance of handling Region heartbeats |
| 113 | + - Optimize the Region tree performance |
| 114 | + - Optimize the performance of computing hotspot statistics |
| 115 | + - Optimize returning the error code of API interface |
| 116 | + - Add options of controlling scheduling strategies |
| 117 | + - Prohibit using special characters in `label` |
| 118 | + - Improve the scheduling simulator |
| 119 | + - Support splitting Regions using statistics in pd-ctl |
| 120 | + - Support formatting JSON output by calling `jq` in pd-ctl |
| 121 | + - Add metrics about etcd Raft state machine |
| 122 | +- Bug fixes |
| 123 | + - Fix the issue that the namespace is not reloaded after switching Leader |
| 124 | + - Fix the issue that namespace scheduling exceeds the schedule limit |
| 125 | + - Fix the issue that hotspot scheduling exceeds the schedule limit |
| 126 | + - Fix the issue that wrong logs are output when the PD client closes |
| 127 | + - Fix the wrong statistics of Region heartbeat latency |
| 128 | + |
| 129 | +## TiKV |
| 130 | + |
| 131 | +- Features |
| 132 | + - Support `batch split` to avoid too large Regions caused by the Write operation on hot Regions |
| 133 | + - Support splitting Regions based on the number of rows to improve the index scan efficiency |
| 134 | +- Performance |
| 135 | + - Use `LocalReader` to separate the Read operation from the raftstore thread to lower the Read latency |
| 136 | + - Refactor the MVCC framework, optimize the memory usage and improve the scan Read performance |
| 137 | + - Support splitting Regions based on statistics estimation to reduce the I/O usage |
| 138 | + - Optimize the issue that the Read performance is affected by continuous Write operations on the rollback record |
| 139 | + - Reduce the memory usage of pushdown aggregation computing |
| 140 | +- Improvements |
| 141 | + - Add the pushdown support for a large number of built-in functions and better charset support |
| 142 | + - Optimize the GC workflow, improve the GC speed and decrease the impact of GC on the system |
| 143 | + - Enable `prevote` to speed up service recovery when the network is abnormal |
| 144 | + - Add the related configuration items of RocksDB log files |
| 145 | + - Adjust the default configuration of `scheduler_latch` |
| 146 | + - Support setting whether to compact the data in the bottom layer of RocksDB when using tikv-ctl to compact data manually |
| 147 | + - Add the check for environment variables when starting TiKV |
| 148 | + - Support dynamically configuring the `dynamic_level_bytes` parameter based on the existing data |
| 149 | + - Support customizing the log format |
| 150 | + - Integrate tikv-fail in tikv-ctl |
| 151 | + - Add I/O metrics of threads |
| 152 | +- Bug fixes |
| 153 | + - Fix decimal related issues |
| 154 | + - Fix the issue that `gRPC max_send_message_len` is set mistakenly |
| 155 | + - Fix the issue caused by misconfiguration of `region_size` |
0 commit comments