Neue maximale Größenbeschränkungen für Datenbankobjekte (ausstehend)¶
Achtung
Diese Verhaltensänderung ist in Bundle 2025_03 enthalten.
Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.
Bemerkung
Diese Verhaltensänderung wurde ursprünglich mit dem Bundle 2025_02 eingeführt, wurde aber in das Bundle 2025_03 verschoben. Diese Verhaltensänderung bleibt in 2025_03 standardmäßig deaktiviert.
Wenn dieses Bundle zur Verhaltensänderung aktiviert ist, ändert sich die Speicherung von Datenbankobjekten wie folgt:
- Vor der Änderung:
Für Spalten der folgenden Typen ist die maximal zulässige Länge 16 MB:
VARCHAR
VARIANT
ARRAY
OBJECT
Für Spalten der folgenden Typen ist die maximal zulässige Länge 8 MB:
BINARY
GEOGRAPHY
GEOMETRY
Anweisungen, die versuchen, Werte zu speichern, die größer als diese maximal zulässigen Längen sind, schlagen fehl.
- Nach der Änderung:
Für Spalten der folgenden Typen ist die maximal zulässige Länge 128 MB:
VARCHAR
VARIANT
ARRAY
OBJECT
Für Spalten der folgenden Typen ist die maximal zulässige Länge 64 MB:
BINARY
GEOGRAPHY
GEOMETRY
Anweisungen, die versuchen, Werte bis zu diesen neuen maximal zulässigen Längen zu speichern, sind erfolgreich. Anweisungen, die versuchen, Werte zu speichern, die größer als diese maximal zulässigen Längen sind, schlagen fehl.
Sowohl für bestehende Tabellen als auch für Tabellen, die nach der Änderung erstellt wurden, beträgt die Standardlänge für Spalten des Typs VARIANT, ARRAY und OBJECT 128 MB, und die Standardlänge für Spalten des Typs GEOGRAPHY und GEOMETRY beträgt 64 MB.
Die Standardlänge für Spalten des Typs VARCHAR und BINARY beträgt jedoch 16 MB bzw. 8 MB. Für Spalten des Typs VARCHAR können Sie die Länge erhöhen, indem Sie sie beim Erstellen einer neuen Tabelle oder beim Ändern einer bestehenden Tabelle explizit angeben. Für Spalten des Typs BINARY können Sie die Länge erhöhen, indem Sie sie bei der Erstellung einer neuen Tabelle explizit angeben. Sie können die Länge einer Spalte BINARY in einer bestehenden Tabelle nicht ändern.
Wenn eine Tabelle ein neues Limit hat und Objekte speichert, die 16 MB überschreiten, schlagen alle nachgelagerten Tabellen, die mit CREATE TABLE AS SELECT (CTAS) aus dieser Tabelle erstellt wurden, fehl. Um diesen Fehler zu vermeiden, passen Sie die CTAS-Anweisung an und setzen Sie die Größe der entsprechenden Spalte VARCHAR ausdrücklich auf 134217728 (67108864 für BINARY).
Wenn das Bundle 2025_03 aktiviert und dann deaktiviert wird, bleiben Datenbankobjekte mit größeren Größenbeschränkungen in Tabellen zugänglich. Die Unterstützung für das Lesen großer Objekte wurde mit BCR-1779 eingeführt. Sie ist bereits für alle Konten aktiviert und kann nicht deaktiviert werden.
Weitere Informationen über die neuen Größenbeschränkungen finden Sie unter Größenbeschränkungen für Datenbankobjekte.
Größen größer als 16 MB sind in den Abfrageergebnissen sichtbar¶
Größen größer als 16 MB für VARCHAR und 8 MB für BINARY sind in den Abfrageergebnissen sichtbar. Die Größen sind z. B. in Abfragen sichtbar, die die Funktion SYSTEM$TYPEOF aufrufen, oder in Abfragen von Ansichten, die Informationen über Funktionen und Prozeduren liefern (z. B. INFORMATION_SCHEMA Ansicht FUNCTIONS).
Das folgende Beispiel verkettet zwei Spalten, die 16 MB groß sind:
CREATE OR REPLACE TABLE test_larger_sizes(col1 VARCHAR, col2 VARCHAR) AS
SELECT 'foo', 'bar';
SELECT SYSTEM$TYPEOF(CONCAT(col1, col2)) FROM test_larger_sizes;
+-----------------------------------+
| SYSTEM$TYPEOF(CONCAT(COL1, COL2)) |
|-----------------------------------|
| VARCHAR(33554432)[LOB] |
+-----------------------------------+
Für Funktionen und Prozeduren werden die neuen Größen in der Ansicht INFORMATION_SCHEMA FUNCTIONS angezeigt:
CREATE OR REPLACE FUNCTION test_larger_sized_func(in_arg VARCHAR)
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
CALLED ON NULL INPUT AS
$$
RETURN NULL;
$$
;
SELECT data_type FROM INFORMATION_SCHEMA.FUNCTIONS
WHERE function_name = 'TEST_LARGER_SIZED_FUNC';
+--------------------+
| DATA_TYPE |
|--------------------|
| VARCHAR(134217728) |
+--------------------+
Fehlermeldung ändert sich bei Größen über 16 MB¶
Die Fehlermeldung kann sich bei einigen Abfragen ändern.
Nachfolgend sehen Sie ein Beispiel für eine Einfügung für eine Spalte VARCHAR, die einen Fehler zurückgibt:
CREATE OR REPLACE TABLE test_larger_size_error(col VARCHAR);
INSERT INTO test_larger_size_error SELECT RANDSTR(20000000, 1);
Vor der Änderung wird die folgende Fehlermeldung angezeigt:
100082 (22000): Max LOB size (16777216) exceeded, actual size of parsed column is 20000000
Nach der Änderung wird die folgende Fehlermeldung angezeigt:
100078 (22000): String
'CaFHJdoX3upWliCCdAPXXgytQuXzQpFO4laQEFdmiE1NDOywjwHoBqSNTCzTW66ynuR7EsI4ZxStCh3VMIBMYeHWgv1gUZRmHEK4kGmZcC02jGQhnnFJ0jtcIEWBIN6vKGkvSwG482IvfgVVwF3FTj7sb86t1SK9qigI6ujlSNByytIYBk0lkI1MM0zpRFeH2BNvGxtI.'
is too long and would be truncated
Unterstützte Treiber¶
Möglicherweise müssen Sie Ihre Treiberversion auf die Version aktualisieren, die größere Datenbankobjekte unterstützt. Andernfalls könnte ein Fehler ähnlich dem folgenden zurückgegeben werden:
100067 (54000): The data length in result column <column_name> is not supported by this version of the client.
Actual length <actual_size> exceeds supported length of 16777216.
Informationen zu den unterstützten Treibern finden Sie unter Treiberversionen, die große Objekte im Resultset unterstützen.
Iceberg-Unterstützung¶
Bei nicht verwalteten Iceberg-Tabellen beträgt die Standardlänge für die Spalten VARCHAR und BINARY 128 MB. Dieses Limit gilt für neu erstellte oder aktualisierte Tabellen. Tabellen, die vor der Aktivierung des neuen Größenlimits erstellt und nicht aktualisiert wurden, haben immer noch das alte Größenlimit. Aktualisieren Sie vorhandene Tabellen, um die Größenbeschränkungen zu erhöhen.
Bei verwalteten Iceberg-Tabellen beträgt die Standardlänge für die Spalten VARCHAR und BINARY 128 MB. Für Tabellen, die vor der Aktivierung des neuen Größenlimits erstellt wurden, gilt immer noch das alte Größenlimit.
Um die neue Größe auf Spalten des Typs VARCHAR in diesen Tabellen anzuwenden, erstellen Sie die Tabellen neu oder ändern Sie die Spalten. Das folgende Beispiel ändert eine Spalte, um die neue Größenbeschränkung zu verwenden:
ALTER ICEBERG TABLE my_iceberg_table
ALTER COLUMN col1 SET DATA TYPE VARCHAR(134217728);
Um die neue Größe auf Spalten des Typs BINARY in diesen Tabellen anzuwenden, erstellen Sie die Tabellen neu. Sie können die Länge einer Spalte BINARY in einer bestehenden Tabelle nicht ändern.
Ref: 1942