tidb v3.0.0-beta Release Notes

Release Date: 2019-01-18 // about 5 years ago
  • ๐Ÿ†• New Features

    • ๐Ÿ‘Œ Support View
    • ๐Ÿ‘Œ Support Window Function
    • ๐Ÿ‘Œ Support Range Partition
    • ๐Ÿ‘Œ Support Hash Partition

    โšก๏ธ SQL Optimizer

    • ๐Ÿ‘ Re-support the optimization rule of AggregationElimination #7676
    • โšก๏ธ Optimize the NOT EXISTS subquery and convert it to Anti Semi Join #7842
    • Add the tidb_enable_cascades_planner variable to support the new Cascades optimizer. Currently, the Cascades optimizer is not yet fully implemented and is turned off by default #7879
    • ๐Ÿ‘Œ Support using Index Join in transactions #7877
    • ๐ŸŽ Optimize the constant propagation on the Outer Join, so that the filtering conditions related to the Outer table in the Join result can be pushed down through the Outer Join to the Outer table, reducing the useless calculation of the Outer Join and improving the execution performance #7794
    • Adjust the optimization rule of Projection Elimination to the position after the Aggregation Elimination, to avoid redundant Project operators #7909
    • โšก๏ธ Optimize the IFNULL function and eliminate this function when the input parameter has a non-NULL attribute #7924
    • Support building range for _tidb_rowid, to avoid full table scan and reduce cluster stress #8047
    • Optimize the IN subquery to do the Inner Join after the aggregation, and add the tidb_opt_insubq_to_join_and_agg variable to control whether to enable this optimization rule and open it by default #7531
    • ๐Ÿ‘Œ Support using subqueries in the DO statement #8343
    • โž• Add the optimization rule of Outer Join elimination to reduce unnecessary table scan and Join operations and improve execution performance #8021
    • โšก๏ธ Modify the Hint behavior of the TIDB_INLJ optimizer, and the optimizer will use the table specified in Hint as the Inner table of Index Join #8243
    • ๐Ÿ‘‰ Use PointGet in a wide range so that it can be used when the execution plan cache of the Prepare statement takes effect #8108
    • โšก๏ธ Introduce the greedy Join Reorder algorithm to optimize the join order selection when joining multiple tables #8394
    • ๐Ÿ‘Œ Support View #8757
    • ๐Ÿ‘Œ Support Window Function #8630
    • โš  Return warning to the client when TIDB_INLJ is not in effect, to enhance usability #9037
    • ๐Ÿ‘Œ Support deducing the statistics for filtered data based on filtering conditions and table statistics #7921
    • ๐Ÿ‘Œ Improve the Partition Pruning optimization rule of Range Partition #8885

    SQL Executor

    • โšก๏ธ Optimize the Merge Join operator to support the empty ON condition #9037
    • โšก๏ธ Optimize the log and print the user variables used when executing the EXECUTE statement #7684
    • โšก๏ธ Optimize the log to print slow query information for the COMMIT statement #7951
    • ๐Ÿ‘Œ Support the EXPLAIN ANALYZE feature to make the SQL tuning process easier #7827
    • ๐ŸŽ Optimize the write performance of wide tables with many columns #7935
    • Support admin show next_row_id #8242
    • Add the tidb_init_chunk_size variable to control the size of the initial Chunk used by the execution engine #8480
    • Improve shard_row_id_bits and cross-check the auto-increment ID #8936

    Prepare Statement

    • Prohibit adding the Prepare statement containing subqueries to the query plan cache to guarantee the query plan is correct when different user variables are input #8064
    • โšก๏ธ Optimize the query plan cache to guarantee the plan can be cached when the statement contains non-deterministic functions #8105
    • โšก๏ธ Optimize the query plan cache to guarantee the query plan of DELETE/UPDATE/INSERT can be cached #8107
    • โšก๏ธ Optimize the query plan cache to remove the corresponding plan when executing the DEALLOCATE statement #8332
    • โšก๏ธ Optimize the query plan cache to avoid the TiDB OOM issue caused by caching too many plans by limiting the memory usage #8339
    • โšก๏ธ Optimize the Prepare statement to support using the ? placeholder in the ORDER BY/GROUP BY/LIMIT clause #8206

    Privilege Management

    • โž• Add the privilege check for the ANALYZE statement #8486
    • โž• Add the privilege check for the USE statement #8414
    • โž• Add the privilege check for the SET GLOBAL statement #8837
    • โž• Add the privilege check for the SHOW PROCESSLIST statement #7858

    Server

    • ๐Ÿ‘Œ Support the Trace feature #9029
    • ๐Ÿ‘Œ Support the plugin framework #8788
    • ๐Ÿ‘Œ Support using unix_socket and TCP simultaneously to connect to the database #8836
    • ๐Ÿ‘Œ Support the interactive_timeout system variable #8573
    • ๐Ÿ‘Œ Support the wait_timeout system variable #8346
    • Support splitting a transaction into multiple transactions based on the number of statements using the tidb_batch_commit variable #8293
    • ๐Ÿ‘Œ Support using the ADMIN SHOW SLOW statement to check slow logs #7785

    Compatibility

    • Support the ALLOW_INVALID_DATES SQL mode #9027
    • ๐Ÿ‘Œ Improve LoadData fault-tolerance for the CSV file #9005
    • ๐Ÿ‘Œ Support the MySQL 320 handshake protocol #8812
    • ๐Ÿ‘Œ Support using the unsigned bigint column as the auto-increment column #8181
    • ๐Ÿ‘Œ Support the SHOW CREATE DATABASE IF NOT EXISTS syntax #8926
    • ๐Ÿคก Abandon the predicate pushdown operation when the filtering condition contains a user variable to improve the compatibility with MySQL's behavior of using user variables to mock the Window Function behavior #8412

    DDL

    • ๐Ÿ‘Œ Support fast recovery of mistakenly deleted tables #7937
    • ๐Ÿ‘Œ Support adjusting the number of concurrencies of ADD INDEX dynamically #8295
    • ๐Ÿ‘Œ Support changing the character set of tables or columns to utf8/utf8mb4 #8037
    • ๐Ÿ”„ Change the default character set from utf8 to utf8mb4 #7965
    • ๐Ÿ‘Œ Support Range Partition #8011