TiDB 2.1 RC2 Release Notes

On September 14, 2018, TiDB 2.1 RC2 is released. Compared with TiDB 2.1 RC1, this release has great improvement in stability, SQL optimizer, statistics information, and execution engine.

TiDB

  • SQL Optimizer
    • Put forward a proposal of the next generation Planner #7543
    • Improve the optimization rules of constant propagation #7276
    • Enhance the computing logic of Range to enable it to handle multiple IN or EQUAL conditions simultaneously #7577
    • Fix the issue that the estimation result of TableScan is incorrect when Range is empty #7583
    • Support the PointGet operator for the UPDATE statement #7586
    • Fix the panic issue during the process of executing the FirstRow aggregate function in some conditions #7624
  • SQL Execution Engine
    • Fix the potential DataRace issue when the HashJoin operator encounters an error #7554
    • Make the HashJoin operator read the inner table and build the hash table simultaneously #7544
    • Optimize the performance of Hash aggregate operators #7541
    • Optimize the performance of Join operators #7493, #7433
    • Fix the issue that the result of UPDATE JOIN is incorrect when the Join order is changed #7571
    • Improve the performance of Chunk’s iterator #7585
  • Statistics
    • Fix the issue that the auto Analyze work repeatedly analyzes the statistics #7550
    • Fix the statistics update error that occurs when there is no statistics change #7530
    • Use the RC isolation level and low priority when building Analyze requests #7496
    • Support enabling statistics auto-analyze on certain period of a day #7570
    • Fix the panic issue when logging the statistics information #7588
    • Support configuring the number of buckets in the histogram using the ANALYZE TABLE WITH BUCKETS statement #7619
    • Fix the panic issue when updating an empty histogram #7640
    • Update information_schema.tables.data_length using the statistics information #7657
  • Server
    • Add Trace related dependencies #7532
    • Enable the mutex profile feature of Golang #7512
    • The Admin statement requires the Super_priv privilege #7486
    • Forbid users to Drop crucial system tables #7471
    • Switch from juju/errors to pkg/errors #7151
    • Complete the functional prototype of SQL Tracing #7016
    • Remove the goroutine pool #7564
    • Support viewing the goroutine information using the USER1 signal #7587
    • Set the internal SQL to high priority while TiDB is started #7616
    • Use different labels to filter internal SQL and user SQL in monitoring metrics #7631
    • Store the top 30 slow queries in the last week to the TiDB server #7646
    • Put forward a proposal of setting the global system time zone for the TiDB cluster #7656
    • Enrich the error message of “GC life time is shorter than transaction duration” #7658
    • Set the global system time zone when starting the TiDB cluster #7638
  • Compatibility
    • Add the unsigned flag for the Year type #7542
    • Fix the issue of configuring the result length of the Year type in the Prepare/Execute mode #7525
    • Fix the issue of inserting zero timestamp in the Prepare/Execute mode #7506
    • Fix the error handling issue of the integer division #7492
    • Fix the compatibility issue when processing ComStmtSendLongData #7485
    • Fix the error handling issue during the process of converting string to integer #7483
    • Optimize the accuracy of values in the information_schema.columns_in_table table #7463
    • Fix the compatibility issue when writing or updating the string type of data using the MariaDB client #7573
    • Fix the compatibility issue of aliases of the returned value #7600
    • Fix the issue that the NUMERIC_SCALE value of the float type is incorrect in the information_schema.COLUMNS table #7602
    • Fix the issue that Parser reports an error when the single line comment is empty #7612
  • Expressions
    • Check the value of max_allowed_packet in the insert function #7528
    • Support the built-in function json_contains #7443
    • Support the built-in function json_contains_path #7596
    • Support the built-in function encode/decode #7622
    • Fix the issue that some time related functions are not compatible with the MySQL behaviors in some cases #7636
    • Fix the compatibility issue of parsing the time type of data in string #7654
    • Fix the issue that the time zone is not considered when computing the default value of the DateTime data #7655
  • DML
    • Set correct last_insert_id in the InsertOnDuplicateUpdate statement #7534
    • Reduce the cases of updating the auto_increment_id counter #7515
    • Optimize the error message of Duplicate Key #7495
    • Fix the insert...select...on duplicate key update issue #7406
    • Support the LOAD DATA IGNORE LINES statement #7576
  • DDL
    • Add the DDL job type and the current schema version information in the monitor #7472
    • Complete the design of the Admin Restore Table feature #7383
    • Fix the issue that the default value of the Bit type exceeds 128 #7249
    • Fix the issue that the default value of the Bit type cannot be NULL #7604
    • Reduce the interval of checking CREATE TABLE/DATABASE in the DDL queue #7608
    • Use the ddl/owner/resign HTTP interface ro release the DDL owner and start electing a new owner #7649
  • TiKV Go Client
    • Support the issue that the Seek operation only obtains Key #7419
  • Table Partition (Experimental)
    • Fix the issue that the Bigint type cannot be used as the partition key #7520
    • Support the rollback operation when an issue occurs during adding an index in the partitioned table #7437

PD

  • Features
    • Support the GetAllStores interface #1228
    • Add the statistics of scheduling estimation in Simulator #1218
  • Improvements
    • Optimize the handling process of down stores to make up replicas as soon as possible #1222
    • Optimize the start of Coordinator to reduce the unnecessary scheduling caused by restarting PD #1225
    • Optimize the memory usage to reduce the overhead caused by heartbeats #1195
    • Optimize error handling and improve the log information #1227
    • Support querying the Region information of a specific store in pd-ctl #1231
    • Support querying the topN Region information based on version comparison in pd-ctl #1233
    • Support more accurate TSO decoding in pd-ctl #1242
  • Bug fix
    • Fix the issue that pd-ctl uses the hot store command to exit wrongly #1244

TiKV

  • Performance
    • Support splitting Regions based on statistics estimation to reduce the I/O cost #3511
    • Reduce clone in the transaction scheduler #3530
  • Improvements
    • Add the pushdown support for a large number of built-in functions
    • Add the leader-transfer-max-log-lag configuration to fix the failure issue of leader scheduling in specific scenarios #3507
    • Add the max-open-engines configuration to limit the number of engines opened by tikv-importer simultaneously #3496
    • Limit the cleanup speed of garbage data to reduce the impact on snapshot apply #3547
    • Broadcast the commit message for crucial Raft messages to avoid unnecessary delay #3592
  • Bug fixes
    • Fix the leader election issue caused by discarding the PreVote message of the newly split Region #3557
    • Fix follower related statistics after merging Regions #3573
    • Fix the issue that the local reader uses obsolete Region information #3565