SQL allgemein: Neue Standard-Spaltengrößen für Zeichenfolgen- und Binärdatentypen (ausstehend)

Achtung

Diese Verhaltensänderung ist in Bundle 2025_07 enthalten.

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

Wenn dieses Verhaltensänderungs-Bundle aktiviert ist, ändern sich die Standardgrößen für Zeichenfolgen- und Binärdatentyp:

Vor der Änderung:

Die Standardgröße für Textzeichenfolgen-Datentypen war 16 MB.

Die Standardgröße für Binärdatentypen war 8 MB.

Nach der Änderung:

Die Standardgröße für Textzeichenfolgen-Datentypen ist 128 MB.

Die Standardgröße für Binärdatentypen ist 64 MB.

Vor dieser Änderung konnten in DDL-Anweisungen explizit Größen über 16 MB für Textzeichenfolgenspalten und 8 MB für Binärspalten angegeben werden; der Standardwert betrug jedoch 16 MB bzw. 8 MB, wenn keine Größe angegeben wurde.

Nach dieser Verhaltensänderung ist die Standardgröße 128 MB für Textzeichenfolgenspalten und 64 MB für Binärspalten, wenn in DDL-Anweisungen keine Größe angegeben wird. Daher können mit INSERT-Anweisungen Werte über 16 MB in Spalten mit Textzeichenfolgen und über 8 MB in Binärspalten eingefügt werden, ohne dass vorher explizit höhere Limits angegeben werden müssen.

Bemerkung

Diese Änderung wirkt sich nicht auf DDL-Anweisungen für Apache Iceberg™-Tabellen und benutzerdefinierte Funktionen (UDFs) aus, da für sie bereits die größeren Standardgrößen gelten.

Die Änderung gilt für Spalten des Datentyps VARCHAR und Spalten von Datentypen, die gleichbedeutend mit VARCHAR sind, z. B. STRING, außer für Datentypen mit einer Standardgröße von 1 (wie CHAR, CHARACTERund NCHAR). Die Änderung gilt auch für Spalten des Datentyps BINARY und Spalten von Datentypen, die gleichbedeutend mit BINARY sind, wie z. B. VARBINARY.

Mit der folgenden Anweisung wird beispielsweise eine Tabelle erstellt, ohne die maximale Größe für die Spalten anzugeben:

CREATE TABLE test_new_default_sizes (
  name VARCHAR,
  profile_image BINARY);
Copy

Führen Sie die folgende Abfrage aus, um die maximale Größe der Spalten anzuzeigen:

DESCRIBE TABLE test_new_default_sizes
  ->> SELECT "name", "type" FROM $1;
Copy

Vor der Verhaltensänderung gibt die Abfrage die folgende Ausgabe zurück:

+---------------+-------------------+
| name          | type              |
|---------------+-------------------|
| NAME          | VARCHAR(16777216) |
| PROFILE_IMAGE | BINARY(8388608)   |
+---------------+-------------------+

Nach der Änderung der Verhaltensweise gibt die Abfrage die folgende Ausgabe zurück:

+---------------+--------------------+
| name          | type               |
|---------------+--------------------|
| NAME          | VARCHAR(134217728) |
| PROFILE_IMAGE | BINARY(67108864)   |
+---------------+--------------------+

Ansichten und materialisierte Ansichten können große Standardgrößen übernehmen

Wenn Sie eine Ansicht oder materialisierte Ansicht erstellen, die Ausdrücke in Spaltendefinitionen verwendet, übernehmen die Spalten in einigen Fällen die neuen Standardgrößen, auch wenn in den Spalten der Quelltabelle ausdrücklich kleinere Größen angegeben sind.

Erstellen Sie zum Beispiel eine Quelltabelle, die explizit die maximale Größe für eine Spalte des Datentyps VARCHAR auf 16.777.216 festlegt:

CREATE TABLE test_default_size_source_table (
  id INTEGER,
  description VARCHAR(16777216));
Copy

Erstellen Sie eine Ansicht und eine materialisierte Ansicht, die auf dieser Tabelle basieren, ohne Ausdrücke in den Spaltendefinitionen zu verwenden:

CREATE VIEW test_default_size_view AS
SELECT id, description FROM test_default_size_source_table;

CREATE MATERIALIZED VIEW test_default_size_mv AS
SELECT id, description FROM test_default_size_source_table;
Copy

Führen Sie die folgenden Abfragen aus, um die maximale Größe der Spalten anzuzeigen:

DESCRIBE VIEW test_default_size_view
  ->> SELECT "name", "type" FROM $1;

DESCRIBE MATERIALIZED VIEW test_default_size_mv
  ->> SELECT "name", "type" FROM $1;
Copy

Sowohl vor als auch nach der Änderung geben diese Abfragen die folgende Ausgabe zurück:

+-------------+-------------------+
| name        | type              |
|-------------+-------------------|
| ID          | NUMBER(38,0)      |
| DESCRIPTION | VARCHAR(16777216) |
+-------------+-------------------+

Erstellen Sie eine Ansicht und eine materialisierte Ansicht auf der Basis der Quelltabelle, und verwenden Sie Ausdrücke in den Spaltendefinitionen:

CREATE VIEW test_default_size_view_with_exp AS
SELECT description || RANDSTR(10, 1) AS col
  FROM test_default_size_source_table;

CREATE MATERIALIZED VIEW test_default_size_mv_with_exp AS
SELECT description || RANDSTR(10, 1) AS col
  FROM test_default_size_source_table;
Copy

Führen Sie die folgenden Abfragen aus, um die maximale Größe der Spalten anzuzeigen:

DESCRIBE VIEW test_default_size_view_with_exp
  ->> SELECT "name", "type" FROM $1;

DESCRIBE MATERIALIZED VIEW test_default_size_mv_with_exp
  ->> SELECT "name", "type" FROM $1;
Copy

Vor der Verhaltensänderung geben diese Abfragen die folgende Ausgabe zurück:

+------+-------------------+
| name | type              |
|------+-------------------|
| COL  | VARCHAR(16777216) |
+------+-------------------+

Nach der Verhaltensänderung geben diese Abfragen die folgende Ausgabe zurück:

+------+--------------------+
| name | type               |
|------+--------------------|
| COL  | VARCHAR(134217728) |
+------+--------------------+

Mit CREATE TABLE AS SELECT erstellte Tabellen können große Standardgrößen übernehmen

In einigen Fällen, wenn Sie eine Tabelle mit einer CREATE TABLE AS SELECT (CTAS)-Anweisung ausführen, die Ausdrücke in Spaltendefinitionen verwendet, übernehmen die Spalten die neuen Standardgrößen, auch wenn in den Spalten der Quelltabelle ausdrücklich kleinere Größen angegeben sind.

Erstellen Sie beispielsweise eine Quelltabelle, die ausdrücklich die maximale Größe für VARCHAR- und BINARY-Spalten festlegt:

CREATE TABLE test_default_size_ctas_source_table (
  small_text VARCHAR(1000),
  medium_text VARCHAR(50000),
  large_text VARCHAR(16777216),
  binary_data BINARY(1000000));
Copy

Erstellen Sie mit einer CTAS-Anweisung eine Tabelle aus dieser Quelltabelle:

CREATE TABLE test_default_size_ctas AS
SELECT small_text,
       medium_text,
       large_text || RANDSTR(10, 1) AS processed_text,
       binary_data
  FROM test_default_size_ctas_source_table;
Copy

In diesem Beispiel verwendet die Spaltendefinition für die processed_text-Spalte einen Ausdruck.

Führen Sie die folgenden Abfragen aus, um die maximale Größe der Spalten anzuzeigen:

DESCRIBE TABLE test_default_size_ctas
  ->> SELECT "name", "type" FROM $1;
Copy

Vor der Verhaltensänderung gibt die Abfrage die folgende Ausgabe zurück (und die Spalte processed_text zeigt die kleinere Standardgröße an):

+----------------+-------------------+
| name           | type              |
|----------------+-------------------|
| SMALL_TEXT     | VARCHAR(1000)     |
| MEDIUM_TEXT    | VARCHAR(50000)    |
| PROCESSED_TEXT | VARCHAR(16777216) |
| BINARY_DATA    | BINARY(1000000)   |
+----------------+-------------------+

Nach der Verhaltensänderung gibt die Abfrage nun folgende Ausgabe zurück (und die Spalte processed_text zeigt die größere Standardgröße an):

+----------------+--------------------+
| name           | type               |
|----------------+--------------------|
| SMALL_TEXT     | VARCHAR(1000)      |
| MEDIUM_TEXT    | VARCHAR(50000)     |
| PROCESSED_TEXT | VARCHAR(134217728) |
| BINARY_DATA    | BINARY(1000000)    |
+----------------+--------------------+

Ref: 2118