TiDB 3.0.2 Release Notes
Release date: August 7, 2019
TiDB version: 3.0.2
TiDB Ansible version: 3.0.2
TiDB
- SQL Optimizer
- Fix the issue that the "Can't find column in schema" message is reported when the same table occurs multiple times in a query and logically the query result is always empty #11247
- Fix the issue that the query plan does not meet the expectation caused by the
TIDB_INLJhint not working correctly in some cases (likeexplain select /*+ TIDB_INLJ(t1) */ t1.b, t2.a from t t1, t t2 where t1.b = t2.a) #11362 - Fix the issue that the column name in the query result is wrong in some cases (like
SELECT IF(1,c,c) FROM t) #11379 - Fix the issue that some queries like
SELECT 0 LIKE 'a string'returnTRUEbecause theLIKEexpression is implicitly converted to 0 in some cases #11411 - Support sub-queries in the
SHOWstatement, likeSHOW COLUMNS FROM tbl WHERE FIELDS IN (SELECT 'a')#11459 - Fix the issue that the related column of the aggregate function cannot be found and an error is reported caused by the
outerJoinEliminationoptimizing rule not correctly handling the column alias; improve alias parsing in the optimizing process to make optimization cover more query types #11377 - Fix the issue that no error is reported when the syntax restriction is violated in the Window function (for example,
UNBOUNDED PRECEDINGis not allowed to appear at the end of the Frame definition) #11543 - Fix the issue that
FUNCTION_NAMEis in uppercase in theERROR 3593 (HY000): You cannot use the window function FUNCTION_NAME in this contexterror message, which causes incompatibility with MySQL #11535 - Fix the issue that the unimplemented
IGNORE NULLSsyntax in the Window function is used but no error is reported #11593 - Fix the issue that the Optimizer does not correctly estimate time equal conditions #11512
- Support updating the Top-N statistics based on the feedback information #11507
- SQL Execution Engine
- Fix the issue that the returned value is not
NULLwhen theINSERTfunction containsNULLin parameters #11248 - Fix the issue that the computing result might be wrong when the partitioned table is checked by the
ADMIN CHECKSUMoperation #11266 - Fix the issue that the result might be wrong when INDEX JOIN uses the prefix index #11246
- Fix the issue that result might be wrong caused by incorrectly aligning fractions when the
DATE_ADDfunction does subtraction on date numbers involving microseconds #11288 - Fix the wrong result caused by the
DATE_ADDfunction incorrectly processing the negative numbers inINTERVAL#11325 - Fix the issue that the number of fractional digits returned by
Mod(%),Multiple(*)orMinus(-)is different from that in MySQL whenMod(%),Multiple(*)orMinus(-)returns 0 and the number of fractional digits is large (likeselect 0.000 % 0.11234500000000000000) #11251 - Fix the issue that
NULLwith a warning is incorrectly returned when the length of the result returned byCONCATandCONCAT_WSfunctions exceedsmax_allowed_packet#11275 - Fix the issue that
NULLwith a warning is incorrectly returned when parameters in theSUBTIMEandADDTIMEfunctions are invalid #11337 - Fix the issue that
NULLis incorrectly returned when parameters in theCONVERT_TZfunction are invalid #11359 - Add the
MEMORYcolumn to the result returned byEXPLAIN ANALYZEto show the memory usage of this query #11418 - Add
CARTESIANJoin to the result ofEXPLAIN#11429 - Fix the incorrect data of auto-increment columns of the float and double types #11385
- Fix the panic issue caused by some
nilinformation when pseudo statistics are dumped #11460 - Fix the incorrect query result of
SELECT … CASE WHEN … ELSE NULL ...caused by constant folding optimization #11441 - Fix the issue that
floatStrToIntStrdoes not correctly parse the input such as+999.9999e2#11473 - Fix the issue that
NULLis not returned in some cases when the result of theDATE_ADDandDATE_SUBfunction overflows #11476 - Fix the issue that the conversion result is different from that in MySQL if the string contains an invalid character when a long string is converted to an integer #11469
- Fix the issue that the result of the
REGEXP BINARYfunction is incompatible with MySQL caused by case sensitiveness of this function #11504 - Fix the issue that an error is reported when the
GRANT ROLEstatement receivesCURRENT_ROLE; fix the issue that theREVOKE ROLEstatement does not correctly revoke themysql.default_roleprivilege #11356 - Fix the display format issue of the
Incorrect datetime valuewarning information when executing statements likeSELECT ADDDATE('2008-01-34', -1)#11447 - Fix the issue that the error message reports
constant … overflows floatrather thanconstant … overflows bigintif the result overflows when a float field of the JSON data is converted to an integer #11534 - Fix the issue that the result might be wrong caused by incorrect type conversion when the
DATE_ADDfunction receivesFLOAT,DOUBLEandDECIMALcolumn parameters #11527 - Fix the wrong result caused by incorrectly processing the sign of the INTERVAL fraction in the
DATE_ADDfunction #11615 - Fix the incorrect query result when Index Lookup Join contains the prefix index caused by
Rangernot correctly handling the prefix index #11565 - Fix the issue that the "Incorrect arguments to NAME_CONST" message is reported if the
NAME_CONSTfunction is executed when the second parameter ofNAME_CONSTis a negative number #11268 - Fix the issue that the result is incompatible with MySQL when an SQL statement involves computing the current time and the value is fetched multiple times; use the same value when fetching the current time for the same SQL statement #11394
- Fix the issue that
Closeis not called forChildExecutorwhen theCloseofbaseExecutorreports an error. This issue might lead to Goroutine leaks when theKILLstatements do not take effect andChildExecutoris not closed #11576
- Fix the issue that the returned value is not
- Server
- Fix the issue that the auto-added value is 0 instead of the current timestamp when
LOAD DATAprocesses the missingTIMESTAMPfield in the CSV file #11250 - Fix issues that the
SHOW CREATE USERstatement does not correctly check related privileges, andUSERandHOSTreturned bySHOW CREATE USER CURRENT_USER()might be wrong #11229 - Fix the issue that the returned result might be wrong when
executeBatchis used in JDBC #11290 - Reduce printing the log information of the streaming client when changing the TiKV server's port #11370
- Optimize the logic of reconnecting the streaming client to the TiKV server so that the streaming client will not be blocked for a long time #11372
- Add
REGION_IDinINFORMATION_SCHEMA.TIDB_HOT_REGIONS#11350 - Cancel the timeout duration of obtaining Region information from the PD API to ensure that obtaining Region information will not end in a failure when TiDB API
http://{TiDBIP}:10080/regions/hotis called due to PD timeout when the number of Regions is large #11383 - Fix the issue that Region related requests do not return partitioned table-related Regions in the HTTP API #11466
- Make the following changes to reduce the probability of locking timeout caused by slow operations when the user manually validates pessimistic locking #11521:
- Increase the default TTL of pessimistic locking from 30 seconds to 40 seconds
- Increase the maximum TTL from 60 seconds to 120 seconds
- Calculate the pessimistic locking duration from the first
LockKeysrequest
- Change the
SendRequestfunction logic in the TiKV client: try to immediately connect to another peer instead of keeping waiting when the connect cannot be built #11531 - Optimize the Region cache: label the removed store as invalid when a store is moved while another store goes online with a same address, to update the store information in the cache as soon as possible #11567
- Add the Region ID to the result returned by the
http://{TiDB_ADDRESS:TIDB_IP}/mvcc/key/{db}/{table}/{handle}API #11557 - Fix the issue that Scatter Table does not work caused by the Scatter Table API not escaping the Range key #11298
- Optimize the Region cache: label the store where the Region exists as invalid when the correspondent store is inaccessible, to avoid reduced query performance caused by accessing this store #11498
- Fix the error that the table schema can still be obtained through the HTTP API after dropping the database with the same name multiple times #11585
- Fix the issue that the auto-added value is 0 instead of the current timestamp when
- DDL
- Fix the issue that an error occurs when a non-string column with a zero length is being indexed #11214
- Disallow modifying the columns with foreign key constraints and full-text indexes (Note: TiDB still supports foreign key constraints and full-text indexes in syntax) #11274
- Fix the issue that the index offset of the column might be wrong because the position changed by the
ALTER TABLEstatement and the default value of the column are used concurrently #11346 - Fix two issues that occur when parsing JSON files:
- Disallow dropping indexes on the auto-increment column to avoid that the auto-increment column might get an incorrect result #11399
- Fix the following issues #11492:
- The character set and the collation of the column are not consistent when explicitly specifying the collation but not the character set
- The error is not correctly reported when there is a conflict between the character set and the collation that are specified by
ALTER TABLE … MODIFY COLUMN - Incompatibility with MySQL when using
ALTER TABLE … MODIFY COLUMNto specify character sets and collations multiple times
- Add the trace details of the subquery to the result of the
TRACEquery #11458 - Optimize the performance of executing
ADMIN CHECK TABLEand greatly reduce its execution time #11547 - Add the result returned by
SPLIT TABLE … REGIONS/INDEXand makeTOTAL_SPLIT_REGIONandSCATTER_FINISH_RATIOdisplay the number of Regions that have been split successfully before timeout in the result #11484 - Fix the issue that the precision displayed by statements like
SHOW CREATE TABLEis incomplete whenON UPDATE CURRENT_TIMESTAMPis the column attribute and the float precision is specified #11591 - Fix the issue that the index result of the column cannot be correctly calculated when the expression of a virtual generated column contains another virtual generated column #11475
- Fix the issue that the minus sign cannot be added after
VALUE LESS THANin theALTER TABLE … ADD PARTITION …statement #11581
- Monitor
TiKV
- Fix the bug that TiKV panics if the Raft log is not written in time #5160
- Fix the bug that the panic information is not written into the log file after TiKV panics #5198
- Fix the bug that the Insert operation might be incorrectly performed in the pessimistic transaction #5203
- Lower the output level of some logs that require no manual intervention to INFO #5193
- Improve the accuracy of monitoring the storage engine size #5200
- Improve the accuracy of the Region size in tikv-ctl #5195
- Improve the performance of the deadlock detector for pessimistic locking #5192
- Improve the performance of GC in the Titan storage engine #5197
PD
- Fix the bug that the Scatter Region scheduler cannot work #1642
- Fix the bug that the merge Region operation cannot be performed in pd-ctl #1653
- Fix the bug that the remove-tombstone operation cannot be performed in pd-ctl #1651
- Fix the issue that the Region overlapping with the key scope cannot be found when performing the scan Region operation #1648
- Add the retrying mechanism to make sure that the members are added successfully in PD #1643
Tools
TiDB Binlog
- Add the configuration item check feature when starting, which will stop the Binlog service and report an error when an invalid item is found #687
- Add the
node-idconfiguration in Drainer to specify a specific logic used by Drainer #684
TiDB Lightning
- Fix the issue that
tikv_gc_life_timefails to be changed back to its original value when 2 checksums are running at the same time #218 - Add the configuration item check feature when starting, which will stop the Binlog service and report an error when an invalid item is found #217
TiDB Ansible
- Fix the unit error that the Disk Performance monitor treats seconds as milliseconds #840
- Add the
log4jconfiguration file in Spark #841 - Fix the issue that the Prometheus configuration file is generated in the wrong format when Binlog is enabled and Kafka or ZooKeeper is configured #844
- Fix the issue that the
pessimistic-txnconfiguration parameter is left out in the generated TiDB configuration file #850 - Add and optimize metrics on the TiDB Dashboard #853
- Add descriptions for each monitoring item on the TiDB Dashboard #854
- Add the TiDB Summary Dashboard to better view the cluster status and troubleshoot issues #855
- Update the Allocator Stats monitoring item on the TiKV Dashboard #857
- Fix the unit error in the Node Exporter's alerting expression #860
- Upgrade the TiSpark jar package to v2.1.2 #862
- Update the descriptions of the Ansible Task feature #867
- Update the expression of the local reader requests monitoring item on the TiDB Dashboard #874
- Update the expression of the TiKV Memory monitoring item on the Overview Dashboard, and fix the issue of wrongly displayed monitoring #879
- Remove the Binlog support in the Kafka mode #878
- Fix the issue that PD fails to transfer the Leader when executing the
rolling_update.ymloperation #887