Todos os produtos
Search
Central de documentação

Hologres:Valores padrão

Última atualização: Jun 28, 2026

Este documento descreve como o Hologres trata valores padrão ao gravar dados em diferentes cenários: SQL, Flink e Integração de Dados do DataWorks.

Regra base: Se nenhum valor padrão estiver configurado para um campo e nenhum valor for fornecido durante uma operação de gravação, o sistema preenche com NULL. As tabelas e seções abaixo detalham como essa regra varia conforme o caminho de gravação e os parâmetros utilizados.

Resumo do comportamento

A tabela a seguir resume o comportamento de valores padrão em todos os caminhos de gravação. Consulte-a para identificar rapidamente o comportamento esperado antes de analisar os detalhes.

Caminho de gravação

Tipo de campo

Valor padrão configurado?

Comportamento

SQL

Aceita nulo

Sim

Preenche o valor padrão (se o campo for omitido)

SQL

Aceita nulo

Não

Preenche NULL

SQL

Não nulo

Sim

Preenche o valor padrão (se o campo for omitido)

Flink — Modo JDBC

Aceita nulo

Não

Preenche NULL

Flink — Modo JDBC

Aceita nulo

Sim

Preenche o valor padrão se mutatetype=InsertOrUpdate; caso contrário, preenche NULL

Flink — Modo JDBC

Não nulo

Não

Retorna erro se EnableDefaultForNotNullColumn=false; preenche um padrão baseado no tipo de dado se true

Flink — Modo JDBC

Não nulo

Sim

Preenche o valor padrão (calculado pelo mecanismo do Hologres); em versões anteriores à V2.0, isso pode impedir o uso de fixed plans

Flink — Modo Fixed copy

Aceita nulo

Não

Preenche NULL

Flink — Modo Fixed copy

Aceita nulo

Sim

Preenche o valor padrão

Flink — Modo Fixed copy

Não nulo

Não

Retorna erro

Flink — Modo Fixed copy

Não nulo

Sim

Preenche o valor padrão

Flink — Modo BulkLoad (HQEcopy)

Aceita nulo

Não

Preenche NULL

Flink — Modo BulkLoad (HQEcopy)

Aceita nulo

Sim

Preenche o valor padrão

Flink — Modo BulkLoad (HQEcopy)

Não nulo

Não

Retorna erro

Flink — Modo BulkLoad (HQEcopy)

Não nulo

Sim

Preenche o valor padrão

DataWorks — Lote via DataX

Aceita nulo

Não

Preenche NULL

DataWorks — Lote via DataX

Aceita nulo

Sim, conflictMode=Replace

Preenche NULL

DataWorks — Lote via DataX

Aceita nulo

Sim, conflictMode=Update

Preenche o valor padrão

DataWorks — Lote via DataX

Não nulo

Não, default.enable=true (padrão)

Preenche um padrão baseado no tipo de dado (ex.: "" ou 0)

DataWorks — Lote via DataX

Não nulo

Não, default.enable=false

Retorna erro

DataWorks — Lote via DataX

Não nulo

Sim, default.enable=true (padrão)

Preenche o valor padrão

DataWorks — Lote via DataX

Não nulo

Sim, default.enable=false

Preenche o valor padrão; em versões anteriores à V2.0, fixed plans podem falhar

DataWorks — Tempo real via StreamX

Aceita nulo

Não

Preenche NULL

DataWorks — Tempo real via StreamX

Aceita nulo

Sim, conflictMode=Replace ou Ignore

Preenche NULL

DataWorks — Tempo real via StreamX

Aceita nulo

Sim, conflictMode=Update

Preenche o valor padrão

DataWorks — Tempo real via StreamX

Não nulo

Não, default.enable=true (padrão)

Preenche um padrão baseado no tipo de dado (ex.: "" ou 0)

DataWorks — Tempo real via StreamX

Não nulo

Não, default.enable=false

Retorna erro

DataWorks — Tempo real via StreamX

Não nulo

Sim, default.enable=true (padrão)

Preenche o valor padrão

DataWorks — Tempo real via StreamX

Não nulo

Sim, default.enable=false

Preenche o valor padrão; em versões anteriores à V2.0, fixed plans podem falhar

Cenários SQL

Se um valor padrão estiver configurado para um campo e nenhum valor for especificado em uma operação de gravação ou atualização, o Hologres preenche automaticamente esse campo com o valor padrão.

Os exemplos a seguir utilizam esta tabela:

BEGIN;
CREATE TABLE default_test (
    a int NOT NULL DEFAULT 2023,
    b timestamptz DEFAULT '2023-11-17 10:11:33.276+08',
    PRIMARY KEY (a)
);
COMMIT;

Exemplo 1: Especifique valores para ambas as colunas. Os valores informados substituem os padrões.

-- Specify values for column a and column b.
INSERT INTO default_test VALUES (1, NULL);
-- Query the table.
SELECT * FROM default_test;

Resultado:

a    b
1    \N

Exemplo 2: Omita a coluna b. O sistema preenche o valor padrão para a coluna b.

-- Omit column b.
INSERT INTO default_test (a) VALUES (2);
-- Query the table.
SELECT * FROM default_test;

Resultado:

a    b
1    \N
2    2023-11-17 10:11:33.276+08

Exemplo 3: Execute INSERT ON CONFLICT DO NOTHING sem especificar a coluna a (chave primária). O sistema grava o valor da coluna b e preenche a coluna a com o valor padrão.

-- Column a is omitted; the system fills the default value (2023).
INSERT INTO default_test (b) VALUES ('2023-11-18 10:11:33.276+08') ON CONFLICT (a) DO NOTHING;
-- Query the table.
SELECT * FROM default_test;

Resultado:

a       b
2       2023-11-17 10:11:33.276+08
2023    2023-11-18 10:11:33.276+08
1       \N

Exemplo 4: Execute INSERT ON CONFLICT DO UPDATE com valores explícitos para ambas as colunas. Os valores especificados substituem os padrões.

-- Specify values for both columns; specified values take precedence.
INSERT INTO default_test (a, b) VALUES (2, null) ON CONFLICT (a) DO UPDATE SET (a,b) = ROW(EXCLUDED.*);
-- Query the table.
SELECT * FROM default_test;

Resultado:

a       b
1       \N
2023    2023-11-18 10:11:33.276+08
2       \N

Exemplo 5: Execute INSERT ON CONFLICT DO UPDATE atualizando apenas a coluna b. A coluna a não é modificada.

-- Only column b is updated; column a remains unchanged.
INSERT INTO default_test (a, b) VALUES (2023, null) ON CONFLICT (a) DO UPDATE SET b = EXCLUDED.b;
-- Query the table.
SELECT * FROM default_test;

Resultado:

a       b
2       \N
1       \N
2023    \N

Gravar dados usando Flink

Para mais informações sobre os modos de gravação do Flink, consulte Hologres.

Modo JDBC

As regras a seguir aplicam-se a campos sem valores especificados.

Campos que aceitam nulo

  • Sem valor padrão configurado: o sistema preenche NULL.

  • Com valor padrão configurado: o sistema preenche o valor padrão se mutatetype estiver definido como InsertOrUpdate; caso contrário, preenche NULL.

Campos não nulos

  • Sem valor padrão configurado:

    • EnableDefaultForNotNullColumn=false: o sistema retorna erro.

    • EnableDefaultForNotNullColumn=true: o Holo Client preenche um padrão baseado no tipo de dado (por exemplo, uma string vazia "").

  • Com valor padrão configurado:

    • EnableDefaultForNotNullColumn=false: o mecanismo do Hologres calcula e grava o valor padrão. Em versões do Hologres anteriores à V2.0, isso pode impedir o uso de fixed plans e causar problemas de desempenho.

    • EnableDefaultForNotNullColumn=true: o Holo Client preenche um padrão baseado no tipo de dado.

Atualize manualmente sua instância do Hologres ou entre no grupo DingTalk do Hologres para solicitar uma atualização. Para mais informações, consulte a seção "Atualização manual" em Atualizar uma instância . Para obter suporte online, consulte Obter suporte online para o Hologres .

Modo Fixed copy

Este modo suporta apenas operações UPDATE e IGNORE. Ao atualizar campos específicos, somente eles são modificados; todos os demais permanecem inalterados. Para obter o efeito REPLACE, declare todos os campos na instrução DDL do Flink.

As regras a seguir aplicam-se a campos sem valores especificados.

Campos que aceitam nulo

  • Sem valor padrão configurado: o sistema preenche NULL.

  • Com valor padrão configurado: o sistema preenche o valor padrão.

Campos não nulos

  • Sem valor padrão configurado: o sistema retorna erro.

  • Com valor padrão configurado: o sistema preenche o valor padrão.

Modo BulkLoad (HQEcopy)

Operações UPDATE não são suportadas neste modo. As regras a seguir aplicam-se a campos sem valores especificados.

Campos que aceitam nulo

  • Sem valor padrão configurado: o sistema preenche NULL.

  • Com valor padrão configurado: o sistema preenche o valor padrão.

Campos não nulos

  • Sem valor padrão configurado: o sistema retorna erro.

  • Com valor padrão configurado: o sistema preenche o valor padrão.

Gravar dados usando a Integração de Dados do DataWorks

Sincronização em lote baseada em DataX

O DataX da Integração de Dados suporta sincronização em lote a partir de uma tabela ou banco de dados. Para mais informações, consulte Fonte de dados Hologres. O modo JDBC é utilizado automaticamente. As regras a seguir aplicam-se a campos sem valores especificados.

Campos que aceitam nulo

  • Sem valor padrão configurado: o sistema preenche NULL.

  • Com valor padrão configurado:

    • conflictMode=Replace: o sistema preenche NULL.

    • conflictMode=Update: o sistema preenche o valor padrão.

Campos não nulos

  • Sem valor padrão configurado:

    • default.enable=true (padrão): o Holo Client preenche um padrão baseado no tipo de dado (por exemplo, uma string vazia "" ou 0).

    • default.enable=false: o sistema retorna erro.

  • Com valor padrão configurado:

    • default.enable=true (padrão): o sistema preenche o valor padrão.

    • default.enable=false: o sistema também preenche o valor padrão. Em versões do Hologres anteriores à V2.0, fixed plans podem não ser utilizados, causando possíveis problemas de desempenho.

Sincronização em tempo real baseada em StreamX

O StreamX da Integração de Dados suporta sincronização em tempo real a partir de uma tabela. Para mais informações, consulte Fonte de dados Hologres. O modo JDBC é utilizado automaticamente. As regras a seguir aplicam-se a campos sem valores especificados.

Campos que aceitam nulo

  • Sem valor padrão configurado: o sistema preenche NULL.

  • Com valor padrão configurado:

    • conflictMode=Replace ou conflictMode=Ignore: o sistema preenche NULL.

    • conflictMode=Update: o sistema preenche o valor padrão.

Campos não nulos

  • Sem valor padrão configurado:

    • default.enable=true (padrão): o Holo Client preenche um padrão baseado no tipo de dado (por exemplo, uma string vazia "" ou 0).

    • default.enable=false: o sistema retorna erro.

  • Com valor padrão configurado:

    • default.enable=true (padrão): o sistema preenche o valor padrão.

    • default.enable=false: o sistema também preenche o valor padrão. Em versões do Hologres anteriores à V2.0, fixed plans podem não ser utilizados, causando possíveis problemas de desempenho.

Atualize manualmente sua instância do Hologres ou entre no grupo DingTalk do Hologres para solicitar uma atualização. Para mais informações, consulte a seção "Atualização manual" em Atualizar uma instância . Para obter suporte online, consulte Obter suporte online para o Hologres .

Mapeamento de valores padrão do Holo Client

Ao usar Flink ou a Integração de Dados do DataWorks para gravar dados no modo JDBC, o Holo Client gerencia a camada de gravação. Se você especificar valores para determinados campos durante a gravação, o parâmetro default.enable será automaticamente definido como true (equivalente a enableDefaultForNotNullColumn=true). Caso um campo não tenha valor nem padrão configurado, o Holo Client preenche automaticamente um padrão baseado no tipo de dado. A tabela a seguir lista esses valores padrão.

Tipo

Padrão preenchido pelo Holo Client

SMALLINT

0

INTEGER

0

BIGINT

0

REAL

0,0

DOUBLE PRECISION

0,0

DECIMAL

0

BOOLEAN

false

VARCHAR(n)

"" (string vazia)

CHAR(n)

"" (string vazia)

TEXT

"" (string vazia)

TIMESTAMPTZ

1970-01-01 08:00:00

TIMESTAMP

1970-01-01 08:00:00

DATE

1970-01-01

TIMETZ

08:00:00

TIME

08:00:00

JSON e JSONB

Não é possível gravar um valor padrão

BYTEA

Não é possível gravar um valor padrão

RoaringBitmap

Não é possível gravar um valor padrão

BIT(n)

Não é possível gravar um valor padrão

VARBIT(n)

Não é possível gravar um valor padrão

INTERVAL

Não é possível gravar um valor padrão