SQL général : Nouvelles tailles de colonne par défaut pour les types de données chaîne et binaire (en attente)¶
Attention
Ce changement de comportement fait partie du bundle 2025_07.
Pour connaître le statut actuel du bundle, reportez-vous à Historique du bundle.
Lorsque ce bundle de changements de comportement est activé, les tailles par défaut pour le type de données chaîne et binaire change :
- Avant la modification:
La taille par défaut pour les types de données de chaînes de texte était 16 MB.
La taille par défaut pour les types de données binaires était 8 MB.
- Après la modification:
La taille par défaut des types de données de chaînes de texte est 128 MB.
La taille par défaut des types de données binaires est 64 MB.
Avant cette modification, les instructions DDL pouvaient explicitement spécifier des tailles supérieures à 16 MB pour les colonnes de chaîne de texte et à 8 MB pour les colonnes binaires, mais les valeurs par défaut étaient 16 MB et 8 MB, respectivement, lorsqu’aucune taille n’était spécifiée.
Après ce changement de comportement, la taille par défaut est de 128 MB pour les colonnes de chaîne de texte et de 64 MB pour les colonnes binaires lorsqu’aucune taille n’est spécifiée dans les instructions DDL. Alors, les instructions INSERT peuvent insérer des valeurs supérieures à 16 MB dans des colonnes de chaînes de texte et de plus de 8 MB dans des colonnes binaires sans spécifier explicitement des tailles plus grandes.
Note
Ce changement n’affecte pas les instructions DDL pour les tables et fonctions définies par l’utilisateur (UDFs) Apache Iceberg™ car elles utilisent déjà des tailles par défaut plus grandes.
La modification s’applique aux colonnes de type de données VARCHAR et aux colonnes de types de données qui sont synonymes de VARCHAR, par exemple STRING, sauf pour les types de données dont la taille par défaut est de 1 (y compris CHAR, CHARACTER et NCHAR). La modification s’applique également aux colonnes de type de données BINARY et aux colonnes de types de données qui sont synonymes de BINARY, par exemple VARBINARY.
Par exemple, l’instruction suivante crée une table sans spécifier de tailles maximales pour les colonnes :
CREATE TABLE test_new_default_sizes (
name VARCHAR,
profile_image BINARY);
Exécutez la requête suivante pour afficher les tailles maximales des colonnes :
DESCRIBE TABLE test_new_default_sizes
->> SELECT "name", "type" FROM $1;
Avant le changement de comportement, la requête renvoie le résultat suivant :
+---------------+-------------------+
| name | type |
|---------------+-------------------|
| NAME | VARCHAR(16777216) |
| PROFILE_IMAGE | BINARY(8388608) |
+---------------+-------------------+
Après le changement de comportement, la requête renvoie le résultat suivant :
+---------------+--------------------+
| name | type |
|---------------+--------------------|
| NAME | VARCHAR(134217728) |
| PROFILE_IMAGE | BINARY(67108864) |
+---------------+--------------------+
Les vues et les vues matérialisées peuvent hériter de grandes tailles par défaut¶
Dans certains cas, lorsque vous créez une vue ou une vue matérialisée qui utilise des expressions dans les définitions de colonnes, les colonnes héritent des nouvelles tailles par défaut, même si les colonnes de la table source spécifient explicitement des tailles plus petites.
Par exemple, créez une table source qui définit explicitement la taille maximale d’une colonne de type de données VARCHAR à 16 777 216 :
CREATE TABLE test_default_size_source_table (
id INTEGER,
description VARCHAR(16777216));
Créez une vue et une vue matérialisée basées sur cette table sans utiliser d’expressions dans les définitions de colonnes :
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;
Exécutez les requêtes suivantes pour afficher les tailles maximales des colonnes :
DESCRIBE VIEW test_default_size_view
->> SELECT "name", "type" FROM $1;
DESCRIBE MATERIALIZED VIEW test_default_size_mv
->> SELECT "name", "type" FROM $1;
Avant et après le changement, ces requêtes renvoient le résultat suivant :
+-------------+-------------------+
| name | type |
|-------------+-------------------|
| ID | NUMBER(38,0) |
| DESCRIPTION | VARCHAR(16777216) |
+-------------+-------------------+
Créez une vue et une vue matérialisée basée sur la table source et utilisez des expressions dans les définitions de colonnes :
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;
Exécutez les requêtes suivantes pour afficher les tailles maximales des colonnes :
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;
Avant le changement de comportement, ces requêtes renvoient le résultat suivant :
+------+-------------------+
| name | type |
|------+-------------------|
| COL | VARCHAR(16777216) |
+------+-------------------+
Après le changement de comportement, ces requêtes renvoient le résultat suivant :
+------+--------------------+
| name | type |
|------+--------------------|
| COL | VARCHAR(134217728) |
+------+--------------------+
Les tables créées à l’aide de CREATE TABLE AS SELECT peuvent hériter de grandes tailles par défaut¶
Dans certains cas, lorsque vous créez une table à l’aide d’une instruction CREATE TABLE AS SELECT (CTAS) qui utilise des expressions dans les définitions de colonnes, les colonnes héritent des nouvelles tailles par défaut, même si les colonnes de la table source spécifient explicitement des tailles plus petites.
Par exemple, créez une table source qui définit explicitement la taille maximale des colonnes VARCHAR et BINARY :
CREATE TABLE test_default_size_ctas_source_table (
small_text VARCHAR(1000),
medium_text VARCHAR(50000),
large_text VARCHAR(16777216),
binary_data BINARY(1000000));
Utilisez une instruction CTAS pour créer une table à partir de cette table source :
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;
Dans cet exemple, la définition de colonne pour la colonne processed_text utilise une expression.
Exécutez les requêtes suivantes pour afficher les tailles maximales des colonnes :
DESCRIBE TABLE test_default_size_ctas
->> SELECT "name", "type" FROM $1;
Avant le changement de comportement, la requête renvoie la sortie suivante, et la colonne processed_text montre la taille par défaut plus petite :
+----------------+-------------------+
| name | type |
|----------------+-------------------|
| SMALL_TEXT | VARCHAR(1000) |
| MEDIUM_TEXT | VARCHAR(50000) |
| PROCESSED_TEXT | VARCHAR(16777216) |
| BINARY_DATA | BINARY(1000000) |
+----------------+-------------------+
Après le changement de comportement, la requête renvoie la sortie suivante, et la colonne processed_text affiche une taille par défaut plus importante :
+----------------+--------------------+
| name | type |
|----------------+--------------------|
| SMALL_TEXT | VARCHAR(1000) |
| MEDIUM_TEXT | VARCHAR(50000) |
| PROCESSED_TEXT | VARCHAR(134217728) |
| BINARY_DATA | BINARY(1000000) |
+----------------+--------------------+
Réf : 2118