TiDB 3.0.2 リリースノート

発売日: 2019年8月7日

TiDB バージョン: 3.0.2

TiDB Ansible バージョン: 3.0.2

ティビ

  • 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 に変換される場合があるためです#11411
    • SHOWステートメント内のサブクエリをサポートします (例: SHOW COLUMNS FROM tbl WHERE FIELDS IN (SELECT 'a') #11459
    • outerJoinElimination最適化ルールが列エイリアスを正しく処理していないために、集計関数の関連列が見つからずエラーが報告される問題を修正しました。最適化プロセスでのエイリアス解析を改善し、最適化がより多くのクエリタイプをカバーするようにします#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関数のパラメータ#11248NULL含まれている場合に、返される値がNULLならない問題を修正しました。
    • パーティションテーブルをADMIN CHECKSUM操作#11266でチェックすると計算結果が間違っている可能性がある問題を修正
    • INDEX JOIN がプレフィックスインデックス#11246を使用すると結果が間違ってしまう可能性がある問題を修正しました。
    • DATE_ADD関数がマイクロ秒を含む日付数値の減算を行うときに分数が誤って揃えられることで結果が間違っている可能性がある問題を修正しました#11288
    • DATE_ADD関数がINTERVAL #11325の負の数を誤って処理することで発生する誤った結果を修正しました。
    • Mod(%) Multiple(*) 0 を返し、小数点以下の桁数が大きい場合 ( Minus(-) select 0.000 % 0.11234500000000000000 )、 Mod(%)Multiple(*)Minus(-)で返される小数点以下の桁数が MySQL と異なる問題を修正しました#11251
    • CONCATCONCAT_WS関数によって返される結果の長さがmax_allowed_packet #11275と、警告付きのNULL誤って返される問題を修正しました。
    • SUBTIMEADDTIME関数のパラメータが無効な場合に警告付きのNULLが誤って返される問題を修正しました#11337
    • CONVERT_TZ関数のパラメータが無効な場合にNULLが誤って返される問題を修正しました#11359
    • このクエリのメモリ使用量を表示するには、 EXPLAIN ANALYZEによって返された結果にMEMORY列を追加します#11418
    • EXPLAIN #11429の結果にCARTESIAN Joinを加える
    • float 型と double 型の自動増分列の不正なデータを修正#11385
    • 疑似統計がダンプされるときにnilの情報によって発生するpanic問題を修正#11460
    • 定数畳み込み最適化#11441によって発生したSELECT … CASE WHEN … ELSE NULL ...の誤ったクエリ結果を修正
    • floatStrToIntStr +999.9999e2 #11473などの入力を正しく解析しない問題を修正
    • DATE_ADDDATE_SUB関数の結果が#11476超える場合にNULLが返されない場合がある問題を修正しました。
    • 長い文字列を整数に変換するときに、文字列に無効な文字が含まれていると、変換結果がMySQLと異なる問題を修正しました#11469
    • この関数#11504の大文字と小文字の区別が原因で、関数REGEXP BINARYの結果が MySQL と互換性がない問題を修正しました。
    • GRANT ROLE文がCURRENT_ROLE受け取ったときにエラーが報告される問題を修正します。5 文REVOKE ROLE mysql.default_role権限#11356正しく取り消さない問題を修正します。
    • SELECT ADDDATE('2008-01-34', -1) #11447のような文を実行する際のIncorrect datetime value警告情報の表示形式の問題を修正
    • JSON データの float フィールドを整数#11534に変換するときに結果がオーバーフローすると、エラー メッセージにconstant … overflows bigintではなくconstant … overflows float報告される問題を修正しました。
    • DATE_ADD関数がFLOATDOUBLEDECIMAL列のパラメータを受け取ったときに、誤った型変換によって結果が間違っている可能性がある問題を修正しました#11527
    • DATE_ADD関数#11615の区間分数の符号を誤って処理することで発生する誤った結果を修正しました。
    • プレフィックスインデックスが正しく処理されていないために、 Rangerルックアップ結合にプレフィックスインデックスが含まれている場合に誤ったクエリ結果が発生する問題を修正しました#11565
    • NAME_CONSTの 2 番目のパラメータが負の数のときにNAME_CONST関数を実行すると、「NAME_CONST への引数が正しくありません」というメッセージが報告される問題を修正しました#11268
    • SQL 文に現在時刻の計算が含まれており、その値が複数回取得される場合に結果が MySQL と互換性がない問題を修正しました。同じ SQL 文で現在時刻を取得する場合は同じ値を使用します#11394
    • baseExecutorCloseがエラーを報告したときにChildExecutorに対してCloseが呼び出されない問題を修正しました。この問題により、 KILLステートメントが有効にならず、 ChildExecutorが閉じられていない場合に Goroutine リークが発生する可能性があります#11576
  • サーバ
    • CSVファイル#11250内の欠落しているTIMESTAMPフィールドを処理するときに、自動的に追加された値が現在のタイムスタンプではなくLOAD DATAになる問題を修正しました。
    • SHOW CREATE USER文が関連する権限を正しくチェックせず、 SHOW CREATE USER CURRENT_USER()によって返されるUSERHOST間違っている可能性がある問題を修正しました#11229
    • JDBC #11290executeBatch使用すると返される結果が間違っている可能性がある問題を修正しました
    • TiKVサーバーのポート#11370変更するときにストリーミングクライアントのログ情報の出力を減らす
    • ストリーミングクライアントが長時間ブロックされないように、ストリーミングクライアントを TiKVサーバーに再接続するロジックを最適化します#11372
    • INFORMATION_SCHEMA.TIDB_HOT_REGIONS #11350REGION_ID加える
    • 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 #11557によって返される結果にリージョンIDを追加します。
    • Scatter Table API が Range キー#11298をエスケープしないために Scatter Table が動作しない問題を修正しました。
    • リージョンキャッシュを最適化します。対応するストアにアクセスできない場合は、リージョンが存在するストアを無効としてラベル付けし、このストアにアクセスすることによって発生するクエリパフォーマンスの低下を回避します#11498
    • 同じ名前のデータベースを複数回削除した後でも、HTTP API 経由でテーブル スキーマを取得できるというエラーを修正しました#11585
  • DDL
    • 長さがゼロの非文字列列をインデックスするときにエラーが発生する問題を修正#11214
    • 外部キー制約とフルテキストインデックスを持つ列の変更を禁止します(注:TiDBは構文で外部キー制約とフルテキストインデックスを引き続きサポートします) #11274
    • ALTER TABLEステートメントによって変更された位置と列のデフォルト値が同時に使用されるため、列のインデックスオフセットが間違っている可能性がある問題を修正しました#11346
    • JSON ファイルを解析するときに発生する 2 つの問題を修正します。
      • int64ConvertJSONToFloatuint64の中間解析結果として使用され、精度オーバーフローエラー#11433が発生します。
      • int64ConvertJSONToIntuint64の中間解析結果として使用され、精度オーバーフローエラー#11551が発生します。
    • 自動インクリメント列で誤った結果が返されるのを避けるため、自動インクリメント列のインデックスの削除を禁止します#11399
    • 次の問題を修正しました#11492 :
      • 照合順序を明示的に指定し、文字セットを指定していない場合、列の文字セットと照合順序が一致しません。
      • ALTER TABLE … MODIFY COLUMNで指定された文字セットと照合順序の間に矛盾がある場合、エラーは正しく報告されません。
      • ALTER TABLE … MODIFY COLUMN使用して文字セットと照合順序を複数回指定すると、MySQL との互換性がなくなる
    • サブクエリのトレースの詳細をTRACEクエリ#11458の結果に追加します
    • ADMIN CHECK TABLEの実行パフォーマンスを最適化し、実行時間を大幅に短縮する#11547
    • SPLIT TABLE … REGIONS/INDEXで返された結果を追加し、 TOTAL_SPLIT_REGIONSCATTER_FINISH_RATIOに、結果#11484のタイムアウト前に正常に分割されたリージョンの数を表示するようにします。
    • 列属性がON UPDATE CURRENT_TIMESTAMPで float 精度が指定されている場合に、 SHOW CREATE TABLEのようなステートメントで表示される精度が不完全になる問題を修正しました#11591
    • 仮想生成列の式に別の仮想生成列#11475が含まれている場合に、列のインデックス結果が正しく計算されない問題を修正しました。
    • ALTER TABLE … ADD PARTITION …#11581VALUE LESS THAN後にマイナス記号を追加できない問題を修正
  • モニター
    • TiKVTxnCmdCounter監視メトリックが登録されていないため、データが収集およびレポートされない問題を修正#11316
    • Bind Info BindMemoryUsage BindUsageCounter BindTotalGaugeを追加します#11467

ティクヴ

  • Raftログが時間内に書き込まれない場合に TiKV がパニックになるバグを修正しました#5160
  • TiKV パニック後にpanic情報がログファイルに書き込まれないバグを修正#5198
  • 悲観的トランザクション#5203で挿入操作が誤って実行される可能性があるバグを修正
  • 手動介入を必要としない一部のログの出力レベルをINFO #5193に下げる
  • storageエンジンサイズの監視精度の向上#5200
  • tikv-ctl #5195のリージョンサイズの精度を向上
  • 悲観的ロックのデッドロック検出器のパフォーマンスを向上#5192
  • Titanstorageエンジン#5197のGCのパフォーマンスを向上

PD

  • Scatter リージョンスケジューラが動作しないバグを修正#1642
  • pd-ctl #1653でリージョンのマージ操作が実行できないバグを修正
  • pd-ctl #1651で削除トゥームストーン操作が実行できないバグを修正
  • スキャンリージョン操作#1648を実行するときに、キー スコープと重複するリージョンが見つからない問題を修正しました。
  • PD #1643にメンバーが正常に追加されたことを確認するための再試行メカニズムを追加します。

ツール

TiDBBinlog

  • 起動時に構成項目チェック機能を追加し、無効な項目が見つかった場合にBinlogサービスを停止し、エラーを報告します#687
  • Drainer #684で使用される特定のロジックを指定するには、 Drainerにnode-id構成を追加します。

TiDB Lightning

  • 2つのチェックサムが同時に実行されているときにtikv_gc_life_time元の値に戻らない問題を修正しました#218
  • 起動時に構成項目チェック機能を追加し、無効な項目が見つかった場合にBinlogサービスを停止し、エラーを報告します#217

TiDB アンシブル

  • ディスクパフォーマンスモニターが秒をミリ秒として扱う単位エラーを修正#840
  • Spark #841log4j設定ファイルを追加する
  • Binlogが有効で Kafka または ZooKeeper が構成されている場合に Prometheus 構成ファイルが間違った形式で生成される問題を修正#844
  • 生成されたTiDB構成ファイル#850で構成パラメータpessimistic-txnが省略される問題を修正
  • TiDBダッシュボード#853にメトリックを追加して最適化する
  • TiDBダッシュボード#854の各監視項目の説明を追加する
  • TiDB サマリー ダッシュボードを追加して、クラスターの状態をより適切に表示し、問題をトラブルシューティングします#855
  • TiKVダッシュボード#857のアロケータ統計監視項目を更新します。
  • ノードエクスポーターの警告式#860の単位エラーを修正
  • TiSpark jarパッケージをv2.1.2にアップグレードする#862
  • Ansibleタスク機能#867の説明を更新
  • TiDBダッシュボード#874のローカルリーダーリクエスト監視項目の表現を更新します。
  • 概要ダッシュボードの TiKV メモリ監視項目の表現を更新し、監視#879が誤って表示される問題を修正しました。
  • Kafka モード#878でBinlogサポートを削除する
  • rolling_update.yml操作#887実行するときにPDがLeaderの転送に失敗する問題を修正

このページは役に立ちましたか?