SQLの変更 --- 一般:VARCHAR文字列の列のbyteLengthを正しく設定する(保留中)

注意

この動作変更は2026_03バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

この動作変更により、VARCHAR列のバイト長計算が修正され、UTF-8エンコード(1文字あたり4バイト)が一貫して考慮されるようになります。この修正以前は、文字長が4,194,304を超え、16,777,216までのVARCHAR列は、バイト長が誤って計算される可能性がありました。

変更前:

文字長が> 4,194,304 and <= 16,777,216, the ``のVARCHAR列の場合、byteLength``が16,777,216バイトに誤って制限されていました。これにより、1文字あたり最大4バイトを必要とするUTF-8エンコードが適切に考慮されていませんでした。

例:

CREATE TABLE example_table (
  col1 VARCHAR(10000000) -- 10M characters
);
SHOW COLUMNS IN TABLE example_table;

結果:

{
  "length": 10000000,
  "byteLength": 16777216
}

``byteLength``は40,000,000(4 x 10,000,000)である必要がありますが、16,777,216に誤って制限されていました。

変更後:

文字長が> 4,194,304 and <= 16,777,216, the ``のVARCHAR列の場合、byteLength``は4 x character_lengthとして正しく計算され、各文字が最大4バイトになるUTF-8エンコードが適切に考慮されます。

同じ例を使用:

{
  "length": 10000000,
  "byteLength": 40000000
}

この変更は新しい文字列の列にのみ影響します。文字長が> 16,777,216 are not affected because の文字列の列の場合、byteLength is already correctly set for those cases. The ``byteLength``は引き続き134,217,728に制限されます。

参照:2286