SQL-Änderungen – Allgemein: Korrekt eingestellte Bytelänge für VARCHAR-Zeichenfolgenspalten (Ausstehend)

Achtung

Diese Verhaltensänderung ist in Bundle 2026_03 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Diese Verhaltensänderung korrigiert die Berechnung der Bytelänge für VARCHAR-Spalten, die konsistent für die UTF-8-Codierung (4 Byte pro Zeichen) berücksichtigt werden soll. Vor dieser Korrektur konnten VARCHAR-Spalten mit Zeichenlängen größer als 4.194.304 und bis zu 16.777.216 falsch berechnete Bytelängen aufweisen.

Vor der Änderung:

Für VARCHAR-Spalten mit einer Zeichenlänge von > 4,194,304 and <= 16,777,216, the byteLength lag fälschlicherweise eine Begrenzung auf 16.777.216 Bytes vor. Dabei wurde die UTF-8-Codierung nicht ordnungsgemäß berücksichtigt, die bis zu 4 Bytes pro Zeichen benötigt.

Beispiel:

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

Ergebnis:

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

Die byteLength sollte 40.000.000 sein (4 × 10.000.000), war aber fälschlicherweise auf 16.777.216 begrenzt.

Nach der Änderung:

Für VARCHAR-Spalten mit einer Zeichenlänge von > 4,194,304 and <= 16,777,216, the byteLength ist 4 x character_length korrekt berechnet, wobei die UTF-8-Codierung korrekt berücksichtigt wird, bei der jedes Zeichen bis zu 4 Byte lang sein kann.

Verwenden desselben Beispiels:

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

Diese Änderung betrifft nur neue Zeichenfolgenspalten. Zeichenfolgenspalten mit einer Zeichenlänge von > 16,777,216 are not affected because byteLength is already correctly set for those cases. The byteLength sind immer noch auf 134.217.728 begrenzt.

Ref: 2286