SQL geral: Novos tamanhos de coluna padrão para tipos de dados de string e binários (pendente)¶
Atenção
Essa alteração de comportamento está no pacote 2025_07.
Para saber o status atual do pacote, consulte Histórico do pacote.
Quando esse pacote de mudança de comportamento está ativado, os tamanhos padrão para mudança de tipo de dados de string e binários:
- Antes da mudança:
O tamanho padrão de tipos de dados de strings de texto tinha 16 MB.
O tamanho padrão de tipos de dados binários era 8 MB.
- Após a mudança:
O tamanho padrão para tipos de dados de string de texto é 128 MB.
O tamanho padrão para tipos de dados binários é 64 MB.
Antes dessa mudança, as instruções DDL poderiam especificar explicitamente tamanhos maiores que 16 MB para colunas de string de texto e 8 MB para colunas binárias, mas os padrões eram 16 MB e 8 MB, respectivamente, quando nenhum tamanho fosse especificado.
Após essa mudança de comportamento, o tamanho padrão é 128 MB para colunas de string de texto e 64 MB para colunas binárias quando nenhum tamanho é especificado em instruções DDL. Então, as instruções INSERT podem inserir valores maiores que 16 MB em colunas de string de texto e maiores que 8 MB em colunas binárias sem especificar explicitamente tamanhos maiores.
Nota
Essa mudança não afeta DDL Instruções para Apache Iceberg™ Tabelas e funções definidas pelo usuário (UDFs) porque eles já usam os tamanhos padrão maiores.
A mudança se aplica às colunas de VARCHAR tipo de dados e para colunas de tipos de dados que são sinônimos de VARCHAR, como STRING, exceto para tipos de dados com tamanho padrão de 1 (incluindo CHAR, CHARACTERe NCHAR). A mudança também se aplica às colunas do BINARY tipo de dados e para colunas de tipos de dados que são sinônimos de BINARY, como VARBINARY.
Por exemplo, a seguinte instrução cria uma tabela sem especificar tamanhos máximos para as colunas:
CREATE TABLE test_new_default_sizes (
name VARCHAR,
profile_image BINARY);
Execute a seguinte consulta para mostrar os tamanhos máximos das colunas:
DESCRIBE TABLE test_new_default_sizes
->> SELECT "name", "type" FROM $1;
Antes da mudança de comportamento, a consulta retornava a seguinte saída:
+---------------+-------------------+
| name | type |
|---------------+-------------------|
| NAME | VARCHAR(16777216) |
| PROFILE_IMAGE | BINARY(8388608) |
+---------------+-------------------+
Após a mudança de comportamento, a consulta retorna a seguinte saída:
+---------------+--------------------+
| name | type |
|---------------+--------------------|
| NAME | VARCHAR(134217728) |
| PROFILE_IMAGE | BINARY(67108864) |
+---------------+--------------------+
Exibições e exibições materializadas podem herdar tamanhos padrão grandes¶
Em alguns casos, quando você cria uma exibição ou exibição materializada que usa expressões em definições de colunas, as colunas herdam os novos tamanhos padrão, mesmo que as colunas na tabela de origem especifiquem explicitamente tamanhos menores.
Por exemplo, crie uma tabela de origem que defina explicitamente o tamanho máximo para uma coluna de. VARCHAR Tipo de dados para 16777216:
CREATE TABLE test_default_size_source_table (
id INTEGER,
description VARCHAR(16777216));
Criar uma exibição e uma exibição materializada baseadas nesta tabela sem usar expressões nas definições das colunas:
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;
Execute as seguintes consultas para mostrar os tamanhos máximos das colunas:
DESCRIBE VIEW test_default_size_view
->> SELECT "name", "type" FROM $1;
DESCRIBE MATERIALIZED VIEW test_default_size_mv
->> SELECT "name", "type" FROM $1;
Tanto antes quanto depois da mudança, estas consultas retornam a seguinte saída:
+-------------+-------------------+
| name | type |
|-------------+-------------------|
| ID | NUMBER(38,0) |
| DESCRIPTION | VARCHAR(16777216) |
+-------------+-------------------+
Crie uma exibição e uma exibição materializada com base na tabela de origem e use expressões nas definições das colunas:
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;
Execute as seguintes consultas para mostrar os tamanhos máximos das colunas:
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;
Antes da mudança de comportamento, essas consultas retornam a seguinte saída:
+------+-------------------+
| name | type |
|------+-------------------|
| COL | VARCHAR(16777216) |
+------+-------------------+
Após a mudança de comportamento, essas consultas retornam a seguinte saída:
+------+--------------------+
| name | type |
|------+--------------------|
| COL | VARCHAR(134217728) |
+------+--------------------+
Tabelas criadas usando CREATE TABLE AS SELECT pode herdar tamanhos padrão grandes¶
Em alguns casos, quando você cria uma tabela usando um CREATE TABLE AS SELECT (CTAS) que usa expressões em definições de colunas, as colunas herdam os novos tamanhos padrão, mesmo que as colunas na tabela de origem especifiquem explicitamente tamanhos menores.
Por exemplo, crie uma tabela de origem que defina explicitamente o tamanho máximo para VARCHAR e BINARY Colunas de:
CREATE TABLE test_default_size_ctas_source_table (
small_text VARCHAR(1000),
medium_text VARCHAR(50000),
large_text VARCHAR(16777216),
binary_data BINARY(1000000));
Como usar um CTAS Instrução para criar uma tabela a partir desta tabela de origem:
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;
Neste exemplo, a definição da coluna para a processed_text A coluna usa uma expressão.
Execute as seguintes consultas para mostrar os tamanhos máximos das colunas:
DESCRIBE TABLE test_default_size_ctas
->> SELECT "name", "type" FROM $1;
Antes da mudança de comportamento, a consulta retorna a seguinte saída, e a processed_text A coluna mostra o menor tamanho padrão:
+----------------+-------------------+
| name | type |
|----------------+-------------------|
| SMALL_TEXT | VARCHAR(1000) |
| MEDIUM_TEXT | VARCHAR(50000) |
| PROCESSED_TEXT | VARCHAR(16777216) |
| BINARY_DATA | BINARY(1000000) |
+----------------+-------------------+
Após a mudança de comportamento, a consulta retorna a seguinte saída, e a processed_text coluna mostra o maior tamanho padrão:
+----------------+--------------------+
| name | type |
|----------------+--------------------|
| SMALL_TEXT | VARCHAR(1000) |
| MEDIUM_TEXT | VARCHAR(50000) |
| PROCESSED_TEXT | VARCHAR(134217728) |
| BINARY_DATA | BINARY(1000000) |
+----------------+--------------------+
Ref: 2118