TiDB 3.0.2 リリースノート
発売日:2019年8月7日
TiDB バージョン: 3.0.2
TiDB Ansible バージョン: 3.0.2
TiDB
- SQLオプティマイザ
- クエリ内で同じテーブルが複数回出現し、論理的にクエリ結果が常に空になる場合に「スキーマ内に列が見つかりません」というメッセージが報告される問題を修正しました#11247
TIDB_INLJヒントが一部のケース(explain select /*+ TIDB_INLJ(t1) */ t1.b, t2.a from t t1, t t2 where t1.b = t2.aなど)で正しく機能しないことが原因でクエリプランが期待どおりに動作しない問題を修正しました#11362- クエリ結果の列名が場合によっては間違っている問題を修正しました(
SELECT IF(1,c,c) FROM tなど) #11379 SELECT 0 LIKE 'a string'ようなクエリがTRUE返す問題を修正しました。これは、LIKE式が暗黙的に0に変換される場合があるためです#11411SHOW文でサブクエリをサポート(SHOW COLUMNS FROM tbl WHERE FIELDS IN (SELECT 'a')など) #11459outerJoinElimination最適化ルールが列エイリアスを正しく処理していないために集計関数の関連列が見つからずエラーが報告される問題を修正しました。最適化プロセスでのエイリアス解析を改善し、最適化がより多くのクエリタイプをカバーするようにしました#11377- ウィンドウ関数で構文制限に違反した場合にエラーが報告されない問題を修正しました(例:
UNBOUNDED PRECEDINGフレーム定義の最後に出現できません) #11543 ERROR 3593 (HY000): You cannot use the window function FUNCTION_NAME in this contextエラーメッセージでFUNCTION_NAME大文字になっているため、MySQL との非互換性が発生する問題を修正しました。 #11535- ウィンドウ関数で実装されていない
IGNORE NULLS構文が使用されているにもかかわらずエラーが報告されない問題を修正#11593 - オプティマイザが時間等条件正しく推定しない問題を修正 #11512
- フィードバック情報に基づいてトップN統計を更新することをサポート#11507
- SQL実行エンジン
- 関数
INSERTパラメータにNULL含まれている場合、戻り値がNULLならない問題を修正しました。 #11248 - パーティションテーブルを
ADMIN CHECKSUM操作でチェックすると計算結果が間違っている可能性がある問題を修正しました #11266 - INDEX JOIN がプレフィックスインデックスを使用すると結果が間違ってしまう可能性がある問題を修正しました #11246
DATE_ADD関数がマイクロ秒を含む日付数値の減算を行う際に分数の配置が誤っているために結果が間違っている可能性がある問題を修正しました#11288DATE_ADD関数がINTERVALの負の数を誤って処理することによって発生する誤った結果を修正しました。 #11325Mod(%)、Multiple(*)、またはMinus(-)が 0 を返し、小数点以下の桁数が大きい場合 (select 0.000 % 0.11234500000000000000など)、Mod(%)、Multiple(*)、またはMinus(-)が返す小数点以下の桁数が MySQL と異なる問題を修正しました#11251CONCATとCONCAT_WS関数によって返される結果の長さがmax_allowed_packet超えると、警告付きのNULLが誤って返される問題を修正しました#11275SUBTIMEとADDTIME関数のパラメータが無効な場合に警告付きのNULLが誤って返される問題を修正しました#11337CONVERT_TZ関数のパラメータが無効な場合にNULLが誤って返される問題を修正しました#11359- このクエリのメモリ使用量を表示するには、
EXPLAIN ANALYZEで返された結果にMEMORY列を追加します#11418 EXPLAINの結果にCARTESIANJoinを加える #11429- float型とdouble型のAUTO_INCREMENT列の不正なデータを修正#11385
- 疑似統計がダンプされるときにいくつかの
nil情報によって引き起こされるpanicの問題を修正しました#11460 - 定数畳み込み最適化によって発生した
SELECT … CASE WHEN … ELSE NULL ...の誤ったクエリ結果を修正 #11441 floatStrToIntStr+999.9999e2などの入力を正しく解析しない問題を修正 #11473DATE_ADDとDATE_SUB関数の結果が超える場合にNULLが返されない場合がある問題を修正しました。 #11476- 長い文字列を整数に変換するときに、文字列に無効な文字が含まれているとMySQLの変換結果と異なる問題を修正しました。 #11469
- この関数大文字と小文字の区別により、関数
REGEXP BINARYの結果がMySQLと互換性がない問題を修正しました。 #11504 GRANT ROLE文がCURRENT_ROLEを受け取ったときにエラーが報告される問題を修正します。REVOKE ROLEがmysql.default_role権限を正しく取り消さない問題を修正します。 #11356SELECT ADDDATE('2008-01-34', -1)のような文を実行する際のIncorrect datetime value警告情報の表示形式の問題を修正しました #11447- JSONデータの浮動小数点フィールドを整数に変換するときに結果がオーバーフローすると、エラーメッセージが
constant … overflows bigintではなくconstant … overflows float報告する問題を修正しました。 #11534 DATE_ADD関数がFLOAT、DOUBLE、DECIMAL列のパラメータを受け取ったときに、誤った型変換によって結果が間違ってしまう可能性がある問題を修正しました#11527DATE_ADD関数の区間分数の符号を誤って処理することによって発生する誤った結果を修正しました。 #11615- プレフィックスインデックスが正しく処理されていないために
Rangerインデックスルックアップ結合にプレフィックスインデックスが含まれている場合に誤ったクエリ結果が発生する問題を修正しました#11565 NAME_CONSTの 2 番目のパラメータが負の数のときにNAME_CONST関数を実行すると、「NAME_CONST への引数が正しくありません」というメッセージが報告される問題を修正しました#11268- SQL 文で現在時刻を計算し、その値が複数回取得された場合に結果が MySQL と互換性がない問題を修正しました。同じ SQL 文で現在時刻を取得する場合は同じ値を使用します#11394
baseExecutorのCloseエラーを報告しているにもかかわらず、ChildExecutorに対してCloseが呼び出されない問題を修正しました。この問題は、KILL文が実行されず、ChildExecutorが閉じられていない場合にGoroutineリークを引き起こす可能性があります#11576
- 関数
- サーバ
- CSVファイル内で欠落している
TIMESTAMPフィールドをLOAD DATAが処理する際に、自動的に追加された値が現在のタイムスタンプではなく0になる問題を修正しました。 #11250 SHOW CREATE USER文が関連する権限を正しくチェックせず、SHOW CREATE USER CURRENT_USER()によって返されるUSERとHOST間違っている可能性がある問題を修正しました#11229- JDBC で
executeBatchを使用すると返される結果が間違っている可能性がある問題を修正しました #11290 - TiKVサーバーのポートを変更するときにストリーミングクライアントのログ情報の出力を削減します #11370
- ストリーミングクライアントが長時間ブロックされないように、ストリーミングクライアントをTiKVサーバーに再接続するロジックを最適化します#11372
INFORMATION_SCHEMA.TIDB_HOT_REGIONSにREGION_IDを足す #11350- PD APIからのリージョン情報取得のタイムアウト期間を解除し、リージョン数が多い場合にPDタイムアウトによりTiDB API
http://{TiDBIP}:10080/regions/hotが呼び出されてもリージョン情報の取得が失敗しないようにします#11383 - リージョン関連のリクエストがHTTP API でパーティションテーブル関連のリージョンを返さない問題を修正 #11466
- ユーザーが手動で悲観的ロックを検証するときに、遅い操作によって発生するロック タイムアウトの可能性を減らすには、次の変更を行います。 #11521
- 悲観的ロックのデフォルトTTLを30秒から40秒に増やす
- 最大TTLを60秒から120秒に増やす
- 最初の
LockKeysリクエストから悲観的ロック期間を計算する
- TiKVクライアントの
SendRequest機能ロジックを変更:接続が確立できない場合は待機するのではなく、すぐに別のピアに接続しようとします#11531 - リージョンキャッシュを最適化します。ストアが移動され、別のストアが同じアドレスでオンラインになったときに、削除されたストアを無効としてラベル付けし、キャッシュ内のストア情報をできるだけ早く更新します#11567
http://{TiDB_ADDRESS:TIDB_IP}/mvcc/key/{db}/{table}/{handle}API によって返される結果にリージョンID を追加します。 #11557- Scatter Table API が Range キーをエスケープしないために Scatter Table が動作しない問題を修正しました #11298
- リージョンキャッシュを最適化します。対応するストアにアクセスできない場合は、リージョンが存在するストアを無効としてラベル付けし、このストアにアクセスすることによって発生するクエリパフォーマンスの低下を回避します#11498
- 同じ名前のデータベースを複数回削除した後でも、HTTP API 経由でテーブルスキーマを取得できるというエラーを修正しました#11585
- CSVファイル内で欠落している
- DDL
- 長さがゼロの非文字列列をインデックスするときにエラーが発生する問題を修正#11214
- 外部キー制約とフルテキストインデックスを持つ列の変更を禁止します(注:TiDBは、構文で外部キー制約とフルテキストインデックスを引き続きサポートしています) #11274
ALTER TABLE文で変更された位置と列のデフォルト値が同時に使用されるため、列のインデックスオフセットが間違っている可能性がある問題を修正しました#11346- JSON ファイルの解析時に発生する 2つの問題を修正しました。
- AUTO_INCREMENT列のインデックスの削除を禁止して、AUTO_INCREMENT列が誤った結果を取得する可能性を回避する#11399
- 次の問題を修正しました#11492 :
- 照合順序を明示的に指定し、文字セットを指定していない場合、列の文字セットと照合順序が一致しません。
ALTER TABLE … MODIFY COLUMNで指定された文字セットと照合順序の間に矛盾がある場合、エラーは正しく報告されません。ALTER TABLE … MODIFY COLUMNを使用して文字セットと照合順序を複数回指定すると、MySQL との互換性がなくなる
- サブクエリのトレース詳細を
TRACEクエリの結果に追加する #11458 ADMIN CHECK TABLE実行パフォーマンスを最適化し、実行時間を大幅に短縮する#11547SPLIT TABLE … REGIONS/INDEXで返された結果を追加し、TOTAL_SPLIT_REGIONとSCATTER_FINISH_RATIOに、結果のタイムアウト前に正常に分割されたリージョンの数を表示するようにします。 #11484- 列属性が
ON UPDATE CURRENT_TIMESTAMPで浮動小数点精度が指定されている場合、SHOW CREATE TABLEようなステートメントで表示される精度が不完全になる問題を修正しました#11591 - 仮想生成列の式に別の仮想生成列が含まれている場合、列のインデックス結果が正しく計算されない問題を修正しました。 #11475
ALTER TABLE … ADD PARTITION …文のVALUE LESS THANの後にマイナス記号を追加できない問題を修正 #11581
- モニター
TiKV
- Raftログが時間内に書き込まれない場合に TiKV がパニックを起こすバグを修正しました #5160
- TiKV パニック後にpanic情報がログファイルに書き込まれないバグを修正#5198
- 悲観的トランザクションで挿入操作が誤って実行される可能性があるバグを修正しました #5203
- 手動介入を必要としない一部のログの出力レベルをINFO に下げます。 #5193
- ストレージエンジンサイズ監視精度を向上 #5200
- tikv-ctl のリージョンサイズの精度を向上 #5195
- 悲観的ロックのデッドロック検出器のパフォーマンスを向上させる#5192
- TitanストレージエンジンのGCのパフォーマンスを向上 #5197
PD
- Scatter リージョンスケジューラが動作しないバグを修正#1642
- pd-ctl でマージリージョン操作が実行できないバグを修正しました #1653
- pd-ctl でtombstoneの削除操作が実行できないバグを修正しました #1651
- スキャンリージョン操作を実行するときに、キースコープと重複するリージョンが見つからない問題を修正しました #1648
- PD にメンバーが正常に追加されたことを確認するための再試行メカニズムを追加します。 #1643
ツール
TiDB Binlog
- 起動時に設定項目のチェック機能を追加し、無効な項目が見つかった場合にBinlogサービスを停止してエラーを報告します#687
- Drainer で使用される特定のロジックを指定するには、 Drainerに
node-id構成を追加します。 #684
TiDB Lightning
- 2つのチェックサムが同時に実行されているときに
tikv_gc_life_time元の値に戻せない問題を修正しました#218 - 起動時に設定項目のチェック機能を追加し、無効な項目が見つかった場合にBinlogサービスを停止してエラーを報告します#217
TiDB Ansible
- ディスクパフォーマンスモニターが秒をミリ秒として扱う単位エラーを修正#840
- Spark に
log4j設定ファイルを追加する #841 - Binlogが有効で Kafka または ZooKeeper が構成されている場合に Prometheus 構成ファイルが間違った形式で生成される問題を修正#844
- 生成されたTiDB構成ファイルで
pessimistic-txn設定パラメータが省略される問題を修正 #850 - TiDB Dashboardのメトリックを追加して最適化する #853
- TiDB Dashboardの各監視項目の説明を追加します #854
- TiDB サマリーダッシュボードを追加して、クラスターのステータスをより適切に表示し、問題をトラブルシューティングします#855
- TiKVダッシュボードのアロケータ統計監視項目を更新します。 #857
- Node Exporterの警告式の単位エラーを修正しました #860
- TiSpark jarパッケージをv2.1.2にアップグレードする#862
- Ansible タスク機能の説明を更新 #867
- TiDB Dashboardのローカルリーダーリクエスト監視項目の表現を更新します。 #874
- 概要ダッシュボードの TiKV メモリ監視項目の表現を更新し、監視が誤って表示される問題を修正しました。 #879
- Kafka モードでBinlogサポートを削除する #878
rolling_update.yml操作を実行するときにPDがLeaderの転送に失敗する問題を修正しました #887