> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# configurações de sessão enable_*

> Configurações de sessão do ClickHouse no grupo enable_* gerado.

export const PrivatePreviewBadge = () => {
  return <div className="privatePreviewBadge">
            <div className="privatePreviewIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M5.33301 6.66667V4.66667V4.66667C5.33301 3.194 6.52701 2 7.99967 2V2C9.47234 2 10.6663 3.194 10.6663 4.66667V4.66667V6.66667" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path d="M8.00033 9.33337V11.3334" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path fillRule="evenodd" clipRule="evenodd" d="M11.333 14H4.66634C3.92967 14 3.33301 13.4033 3.33301 12.6666V7.99996C3.33301 7.26329 3.92967 6.66663 4.66634 6.66663H11.333C12.0697 6.66663 12.6663 7.26329 12.6663 7.99996V12.6666C12.6663 13.4033 12.0697 14 11.333 14Z" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            {'Em prévia privada'}
        </div>;
};

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Recurso beta</span>
        </a>;
};

export const ExperimentalBadge = () => {
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#experimental-features" className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Recurso experimental
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Versão", "Valor padrão", "Comentário"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        Histórico de versões
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Tipo</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Padrão</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Pode ser alterado sem reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Estas configurações estão disponíveis em [system.settings](/pt-BR/reference/system-tables/settings) e são geradas automaticamente a partir do [código-fonte](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

## enable\_adaptive\_aggregator

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Nova configuração para ativar a agregação adaptativa de `GROUP BY`, que congela a tabela hash local de cada thread quando ela atinge `adaptive_aggregator_freeze_threshold` chaves, permitindo que chaves frequentes continuem sendo agregadas nas pequenas tabelas locais, enquanto chaves raras são direcionadas pelo hash para filas por bucket e agregadas exatamente uma vez durante a mesclagem paralela por bucket; assim, as chaves raras são armazenadas e processadas uma vez, em vez de uma vez por thread."}]}]} />

Ativa o algoritmo adaptativo de `GROUP BY`: cada thread agrega em sua tabela hash local até atingir `adaptive_aggregator_freeze_threshold` chaves (ou `adaptive_aggregator_freeze_threshold_bytes` de memória); então, a tabela é congelada, de modo que as linhas de chaves já vistas (frequentes) continuam sendo atualizadas nela, enquanto chaves novas (raras) são direcionadas pelo hash para filas por bucket e agregadas exatamente uma vez durante a mesclagem paralela por bucket. As chaves frequentes permanecem em pequenas tabelas residentes em cache, e as chaves raras são armazenadas e processadas uma vez, em vez de uma vez por thread.

As configurações de agregação externa (`max_bytes_before_external_group_by`, `max_bytes_ratio_before_external_group_by`) são respeitadas: depois de ultrapassar o limite, as filas são descarregadas antecipadamente na tabela compartilhada e, se isso não for suficiente para voltar a ficar abaixo do limite, a tabela compartilhada é gravada em disco por meio da agregação externa comum.

## enable\_adaptive\_memory\_spill\_scheduler

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.2"},{"label": "0"},{"label": "Nova configuração. Habilita o spill adaptativo de dados da memória para armazenamento externo."}]}]} />

Faz o processador realizar spill de dados para o armazenamento externo de forma adaptativa. Atualmente, há suporte para hash joins que podem fazer spill de dados, tanto `grace_hash` quanto o caminho adaptativo `hash` / `parallel_hash`.

## enable\_add\_distinct\_to\_in\_subqueries

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.8"},{"label": "0"},{"label": "Nova configuração para reduzir o tamanho das tabelas temporárias transferidas em subconsultas distribuídas com `IN`."}]}]} />

Habilita `DISTINCT` em subconsultas `IN`. Esta configuração envolve um trade-off: ao habilitá-la, é possível reduzir bastante o tamanho das tabelas temporárias transferidas em subconsultas distribuídas com `IN` e acelerar significativamente a transferência de dados entre shards, garantindo que apenas valores únicos sejam enviados.
No entanto, habilitar essa configuração acrescenta esforço extra de mesclagem em cada nó, já que a desduplicação (`DISTINCT`) precisa ser executada. Use esta configuração quando a transferência pela rede for um gargalo e o custo adicional de mesclagem for aceitável.

## enable\_alp\_codec

<BetaBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nova configuração para habilitar individualmente o codec de compressão experimental `ALP`, sem usar `allow_experimental_codecs`."}]}]} />

Habilita o codec de compressão `ALP`.

## enable\_automatic\_decision\_for\_merging\_across\_partitions\_for\_final

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se definido, o ClickHouse habilitará automaticamente essa otimização quando a expressão da chave de partição for determinística e todas as colunas usadas nela estiverem incluídas na chave primária.
Essa derivação automática garante que linhas com os mesmos valores de chave primária sempre pertençam à mesma partição, tornando seguro evitar mesclagens entre partições.

Colunas-chave de ponto flutuante são excluídas dessa derivação. O comparador `FINAL` é menos preciso do que a
identidade de valor para `Float32`, `Float64` e `BFloat16`: `-0.0` é comparado como igual a `0.0`, e cada padrão de bits `NaN`
é comparado como igual a todos os outros. Uma expressão de partição consegue distinguir exatamente esses valores, portanto linhas que o comparador trata como
uma chave podem ficar em partições diferentes, e ignorar a mesclagem entre partições retornaria todas elas.
A exclusão também se aplica quando um float está aninhado em uma coluna-chave, por exemplo, `Tuple(Float64, UInt8)`
ou `Array(Float64)`.

## enable\_cascades\_optimizer

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nova configuração experimental."}]}]} />

Habilita o otimizador de custo Cascades para planos de consultas distribuídas.
Só tem efeito junto com `make_distributed_plan = 1`: isoladamente, a configuração não altera o planejamento de consultas em um único nó.

## enable\_early\_constant\_folding

<SettingsInfoBlock type="Bool" default_value="1" />

Habilita a otimização de consultas em que analisamos os resultados de funções e subconsultas e reescrevemos a consulta se houver constantes nelas.

## enable\_extended\_results\_for\_datetime\_functions

<SettingsInfoBlock type="Bool" default_value="0" />

Habilita ou desabilita o retorno de resultados do tipo `Date32` com faixa estendida (em comparação com o tipo `Date`)
ou `DateTime64` com faixa estendida (em comparação com o tipo `DateTime`).

Valores possíveis:

* `0` — As funções retornam `Date` ou `DateTime` para todos os tipos de argumentos.
* `1` — As funções retornam `Date32` ou `DateTime64` para argumentos `Date32` ou `DateTime64`, e `Date` ou `DateTime` nos demais casos.

A tabela abaixo mostra o comportamento dessa configuração em várias funções de data e hora.

| Função | `enable_extended_results_for_datetime_functions = 0` | `enable_extended_results_for_datetime_functions = 1` |
| - | - | - |
| `toStartOfYear` | Retorna `Date` ou `DateTime` | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64` |
| `toStartOfISOYear` | Retorna `Date` ou `DateTime` | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64` |
| `toStartOfQuarter` | Retorna `Date` ou `DateTime` | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64` |
| `toStartOfMonth` | Retorna `Date` ou `DateTime` | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64` |
| `toStartOfWeek` | Retorna `Date` ou `DateTime` | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64` |
| `toLastDayOfWeek` | Retorna `Date` ou `DateTime` | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64` |
| `toLastDayOfMonth` | Retorna `Date` ou `DateTime` | Retorna `Date`/`DateTime` para valores de entrada `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para valores de entrada `Date32`/`DateTime64` |
| `toMonday` | Retorna `Date` ou `DateTime` | Retorna `Date`/`DateTime` para entradas `Date`/`DateTime`<br />Retorna `Date32`/`DateTime64` para entradas `Date32`/`DateTime64` |
| `toStartOfDay` | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para entradas `Date`/`DateTime`<br />Retorna `DateTime64` para entradas `Date32`/`DateTime64` |
| `toStartOfHour` | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para valores de entrada `Date`/`DateTime`<br />Retorna `DateTime64` para valores de entrada `Date32`/`DateTime64` |
| `toStartOfFifteenMinutes` | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970-2149* | Retorna `DateTime` para `Date`/`DateTime` na entrada<br />Retorna `DateTime64` para `Date32`/`DateTime64` na entrada |
| `toStartOfTenMinutes` | Retorna `DateTime`<br />*Nota: resultados incorretos para valores fora do intervalo de 1970-2149* | Retorna `DateTime` para entradas `Date`/`DateTime`<br />Retorna `DateTime64` para entradas `Date32`/`DateTime64` |
| `toStartOfFiveMinutes` | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para entradas `Date`/`DateTime`<br />Retorna `DateTime64` para entradas `Date32`/`DateTime64` |
| `toStartOfMinute` | Retorna `DateTime`<br />*Observação: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para entradas `Date`/`DateTime`<br />Retorna `DateTime64` para entradas `Date32`/`DateTime64` |
| `timeSlot` | Retorna `DateTime`<br />*Nota: resultados incorretos para valores fora do intervalo de 1970 a 2149* | Retorna `DateTime` para valores de entrada `Date`/`DateTime`<br />Retorna `DateTime64` para valores de entrada `Date32`/`DateTime64` |

## enable\_full\_text\_index

**Aliases**: `allow_experimental_full_text_index`

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.2"},{"label": "1"},{"label": "O índice de texto agora está em GA"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "0"},{"label": "O índice de texto passou para Beta."}]}]} />

Se definido como true, permite o uso do índice de texto.

## enable\_function\_early\_short\_circuit

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Ativa a simplificação antecipada de constantes por curto-circuito para `and` e `or` durante a análise de consultas.
Quando ativados, os ramos inativos qualificados de subconsultas escalares são analisados para preservar seus tipos e validar a semântica da consulta, mas não são executados. A otimização recorre à análise normal quando são necessários a cardinalidade escalar ou valores de tempo de execução.

## enable\_funnel\_functions

<ExperimentalBadge />

**Aliases**: `allow_experimental_funnel_functions`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Adicionado um alias para a configuração `allow_experimental_funnel_functions`."}]}]} />

Habilita funções para análise de funil.

## enable\_global\_with\_statement

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "21.2"},{"label": "1"},{"label": "Propagar instruções WITH para consultas UNION e todas as subconsultas por padrão"}]}]} />

Propagar instruções WITH para consultas UNION e todas as subconsultas

## enable\_group\_by\_top\_k\_optimization

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Nova configuração para controlar a otimização de filtragem TopK durante a agregação em consultas `GROUP BY key ORDER BY key LIMIT N`."}]}]} />

Habilita a otimização de filtragem TopK durante a agregação em consultas `GROUP BY keys ORDER BY <prefix of keys> LIMIT K` e em consultas `GROUP BY keys LIMIT K` sem `ORDER BY` (nesse caso, quaisquer `K` grupos constituem um resultado válido; portanto, é sintetizada uma ordenação de todas as chaves).

Quando habilitada, o agregador mantém um heap limitado com as `K` principais chaves encontradas até o momento e deixa de inserir novas linhas na tabela hash quando a chave de agrupamento delas não pode fazer parte do resultado final. Isso evita agregar linhas que seriam descartadas pelo `ORDER BY ... LIMIT` subsequente e, quando o heap classifica a chave completa do `GROUP BY`, também remove os grupos expulsos da tabela hash intermediária, limitando seu tamanho ao `LIMIT`, em vez de ao número de chaves distintas. Quando o `ORDER BY` abrange apenas um prefixo próprio das chaves do `GROUP BY`, a classificação não consegue identificar um grupo completo; portanto, aplica-se apenas a omissão de linhas: a tabela hash mantém todos os grupos aceitos e ainda pode crescer conforme a cardinalidade das colunas de chave restantes.

A otimização é desabilitada quando o `LIMIT` solicitado é maior que [query\_plan\_max\_limit\_for\_top\_k\_optimization](/pt-BR/reference/settings/session-settings/query-plan#query_plan_max_limit_for_top_k_optimization) ou que o limite máximo de `100000`, pois o custo de memória e CPU do heap cresce com o `LIMIT` solicitado.

A otimização é ignorada para estruturas de consulta em que remover grupos poderia alterar o resultado, incluindo `WITH TOTALS`, `HAVING`, `QUALIFY`, funções de janela, `ROLLUP`/`CUBE`/`GROUPING SETS`, `LIMIT WITH TIES`, um `COLLATE` em qualquer uma das chaves de `GROUP BY` correspondentes (um `COLLATE` em uma coluna posterior do `ORDER BY`, após o prefixo completo da chave, não pode afetar quais grupos se qualificam e, portanto, não desabilita a otimização), `ORDER BY` em um agregado ou em qualquer elemento que não seja um prefixo inicial das chaves de `GROUP BY`, e quando `max_rows_to_group_by` ou `exact_rows_before_limit` está definido.

Valores possíveis:

* 0 — Desabilitado.
* 1 — Habilitado.

## enable\_hash\_join\_row\_store

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "Nova configuração para transformar o payload de um hash join em um layout orientado a linhas."}]}]} />

Habilita a transformação do payload de um hash join em um layout orientado a linhas.

## enable\_hdfs\_pread

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.4"},{"label": "1"},{"label": "Nova configuração."}]}]} />

Ativa ou desativa `pread` para arquivos HDFS. Por padrão, `hdfsPread` é usado. Se estiver desativado, `hdfsRead` e `hdfsSeek` serão usados para ler arquivos HDFS.

## enable\_http\_compression

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.10"},{"label": "1"},{"label": "Em geral, isso deve ser benéfico"}]}]} />

Ativa ou desativa a compressão de dados na resposta a uma requisição HTTP.

Para mais informações, leia a [descrição da interface HTTP](/pt-BR/concepts/features/interfaces/http).

Valores possíveis:

* 0 — Desativado.
* 1 — Ativado.

## enable\_identifier\_resolve\_cache

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "1"},{"label": "Nova configuração para controlar o cache de resolução de identificadores no analisador de consultas"}]}]} />

Ativa o cache de resolução de identificadores no analisador de consultas. O cache compartilha nós de alias já resolvidos para evitar a explosão da AST quando o mesmo alias é referenciado várias vezes. Defina como false para desativar o cache se houver suspeita de resultados incorretos.

## enable\_job\_stack\_trace

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "A configuração foi desativada por padrão para evitar sobrecarga de desempenho."}]}, {"id": "row-2","items": [{"label": "24.11"},{"label": "0"},{"label": "Habilita a coleta de stack traces no agendamento do job. Desativado por padrão para evitar sobrecarga de desempenho."}]}]} />

Exibe o stack trace do criador de um job quando o job resulta em uma exceção. Desativado por padrão para evitar sobrecarga de desempenho.

## enable\_json\_ast\_dialect

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nova configuração para habilitar o valor `clickhouse_json` da configuração `dialect`, que interpreta consultas como ASTs JSON (a saída de `parseQueryToJSON`) em vez de texto SQL."}]}]} />

Habilite o valor `clickhouse_json` da configuração `dialect`.

Quando `dialect` é definido como `clickhouse_json`, as consultas são interpretadas como ASTs JSON
(a saída de `parseQueryToJSON`) em vez de texto SQL. A consulta `SET` ainda é
analisada como SQL puro, para que seja possível alternar o dialeto de volta.

Exemplo:

```sql theme={null}
SET enable_json_ast_dialect = 1;
SET dialect = 'clickhouse_json';

-- Subsequent queries are parsed as JSON ASTs:
{"type":"SelectWithUnionQuery", ...}
```

## enable\_json\_lazy\_type\_hints

<BetaBadge />

**Aliases**: `allow_experimental_json_lazy_type_hints`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Adicionado um alias para a configuração `allow_experimental_json_lazy_type_hints`."}]}, {"id": "row-2","items": [{"label": "26.9"},{"label": "0"},{"label": "Os Lazy Type Hints para JSON agora são Beta. Um alias para a configuração 'allow_experimental_json_lazy_type_hints'."}]}]} />

Habilita os Lazy Type Hints para o tipo [JSON](/pt-BR/reference/data-types/newjson).

Com essa configuração habilitada, `ALTER TABLE ... MODIFY COLUMN json JSON(path TypeName)`, que apenas adiciona ou altera
type hints, é uma operação somente de metadados: os type hints são aplicados no momento da consulta às partes existentes e
materializados durante inserções e mesclagens em segundo plano, em vez de regravar os dados históricos.

## enable\_lazy\_columns\_replication

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.11"},{"label": "1"},{"label": "Habilitar a replicação lazy de colunas em JOIN e ARRAY JOIN por padrão"}]}, {"id": "row-2","items": [{"label": "25.10"},{"label": "0"},{"label": "Adicionar uma configuração para habilitar a replicação lazy de colunas em JOIN e ARRAY JOIN"}]}]} />

Habilita a replicação lazy de colunas em `JOIN`, `ARRAY JOIN` e capturas lambda de funções de ordem superior (por exemplo, `arrayMap`), evitando cópias desnecessárias das mesmas linhas várias vezes na memória.

## enable\_materialized\_cte

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.3"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Ativa expressões de tabela comuns materializadas (`WITH <name> AS MATERIALIZED (<subquery>)`).
Quando ativada, uma CTE declarada como `MATERIALIZED` e referenciada mais de uma vez é executada uma única vez, armazenada em uma tabela temporária, e todas as referências leem dessa tabela. Uma CTE referenciada apenas uma vez é incorporada como uma CTE comum para evitar a sobrecarga.
Quando desabilitada, a palavra-chave `MATERIALIZED` é ignorada: a CTE é incorporada em cada referência como uma CTE comum, e um aviso é registrado.

## enable\_materialized\_postgresql\_table

<ExperimentalBadge />

**Aliases**: `allow_experimental_materialized_postgresql_table`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Adicionado um alias para a configuração `allow_experimental_materialized_postgresql_table`."}]}]} />

Permite o uso do motor de tabela `MaterializedPostgreSQL`.

## enable\_memory\_bound\_merging\_of\_aggregation\_results

<SettingsInfoBlock type="Bool" default_value="1" />

Habilita a estratégia de mesclagem com limite de memória para agregação.

## enable\_multiple\_prewhere\_read\_steps

<SettingsInfoBlock type="Bool" default_value="1" />

Move mais condições de WHERE para PREWHERE e execute leituras em disco e a filtragem em várias etapas se houver várias condições combinadas com AND

## enable\_named\_columns\_in\_function\_tuple

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.7"},{"label": "0"},{"label": "Gerar tuplas nomeadas na função tuple() quando todos os nomes forem únicos e puderem ser tratados como identificadores sem aspas."}]}, {"id": "row-2","items": [{"label": "24.10"},{"label": "0"},{"label": "Desativado enquanto melhorias de usabilidade estão pendentes"}]}]} />

Gerar tuplas nomeadas na função tuple() quando todos os nomes forem únicos e puderem ser tratados como identificadores sem aspas.

## enable\_nullable\_tuple\_type

**Aliases**: `allow_experimental_nullable_tuple_type`

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "`Nullable(Tuple)` agora está em GA"}]}, {"id": "row-2","items": [{"label": "26.6"},{"label": "0"},{"label": "Tuple Nullable agora está em Beta. Adicionado como alias de 'allow_experimental_nullable_tuple_type'."}]}]} />

Permite criar colunas [Nullable](/pt-BR/reference/data-types/nullable) [Tuple](/pt-BR/reference/data-types/tuple) em tabelas.

Esta configuração não controla se subcolunas de tupla extraídas podem ser `Nullable` (por exemplo, de colunas Dynamic, Variant, JSON ou Tuple).
Use `allow_nullable_tuple_in_extracted_subcolumns` para controlar se subcolunas de tupla extraídas podem ser `Nullable`.

## enable\_order\_by\_all

<SettingsInfoBlock type="Bool" default_value="1" />

Ativa ou desativa a ordenação com a sintaxe `ORDER BY ALL`; consulte [ORDER BY](/pt-BR/reference/statements/select/order-by).

Valores possíveis:

* 0 — Desativa ORDER BY ALL.
* 1 — Ativa ORDER BY ALL.

**Exemplo**

Consulta:

```sql theme={null}
CREATE TABLE TAB(C1 Int, C2 Int, ALL Int) ENGINE=Memory();

INSERT INTO TAB VALUES (10, 20, 30), (20, 20, 10), (30, 10, 20);

SELECT * FROM TAB ORDER BY ALL; -- returns an error that ALL is ambiguous

SELECT * FROM TAB ORDER BY ALL SETTINGS enable_order_by_all = 0;
```

Resultado:

```text theme={null}
┌─C1─┬─C2─┬─ALL─┐
│ 20 │ 20 │  10 │
│ 30 │ 10 │  20 │
│ 10 │ 20 │  30 │
└────┴────┴─────┘
```

## enable\_packed\_string\_keys\_in\_aggregation

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1"},{"label": "Nova configuração para alternar o uso da tabela hash baseada em `PackedStringRef` em `GROUP BY` com uma única chave `String`. previous_value=false para que a `compatibility` com versões anteriores à 26.8 restaure o método legado baseado em `StringHashTable`, incluindo sua divisão em buckets de dois níveis."}]}]} />

Use uma tabela hash com referências compactadas a strings de 16 bytes (`PackedStringRef`) como chave em `GROUP BY` com uma única chave `String` não anulável. Chaves de até 11 bytes são armazenadas diretamente na referência compactada; chaves mais longas são referenciadas em uma arena.
Esse método é mais rápido para a maioria das cargas de trabalho, mas pode ser mais lento que o método legado em `GROUP BY` com pouquíssimas chaves distintas com mais de 11 bytes (especialmente entre 12 e 24 bytes), pois a tabela hash legada mantém as chaves diretamente na célula, enquanto a compactada desreferencia o ponteiro da arena a cada sondagem.
Quando desativado, é usado o método legado baseado em `StringHashTable` (o padrão antes da versão 26.8).

Todos os servidores que participam de uma consulta distribuída devem usar o mesmo valor: com `distributed_aggregation_memory_efficient`, os números dos buckets de dois níveis dependem do hash da chave, que difere entre os dois métodos. Portanto, servidores com configurações divergentes podem dividir a mesma chave em buckets diferentes e produzir um resultado mesclado incorretamente. Para garantir essa consistência, o iniciador sempre envia seu valor efetivo com as consultas secundárias (mesmo quando ele é proveniente apenas dos valores padrão do servidor/perfil), substituindo os próprios valores padrão dos servidores remotos.

## enable\_parsing\_to\_custom\_serialization

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.10"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Se true, os dados podem ser convertidos diretamente para colunas com serialização personalizada (por exemplo, Sparse), de acordo com as indicações de serialização obtidas da tabela.

## enable\_producing\_buckets\_out\_of\_order\_in\_aggregation

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.9"},{"label": "1"},{"label": "Nova configuração"}]}]} />

Permite que a agregação com uso eficiente de memória (consulte `distributed_aggregation_memory_efficient`) produza buckets fora de ordem.
Isso pode melhorar o desempenho quando os tamanhos dos buckets de agregação são desiguais, permitindo que uma réplica envie buckets com IDs mais altos ao nó iniciador enquanto ainda processa alguns buckets pesados com IDs mais baixos.
A desvantagem é um uso de memória potencialmente maior.

## enable\_quantized\_codec

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nova configuração para habilitar individualmente o codec de compressão experimental `Quantized`, sem `allow_experimental_codecs`."}]}]} />

Habilita o codec de compressão `Quantized`.

## enable\_reads\_from\_query\_cache

<SettingsInfoBlock type="Bool" default_value="1" />

Se ativado, os resultados de consultas `SELECT` são obtidos do [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache).

Valores possíveis:

* 0 - Desabilitado
* 1 - Habilitado

## enable\_s3\_requests\_logging

<SettingsInfoBlock type="Bool" default_value="0" />

Ativa um logging bem detalhado das requisições ao S3. Recomendado apenas para depuração.

## enable\_scalar\_subquery\_optimization

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "19.18"},{"label": "1"},{"label": "Evita que subconsultas escalares (de)serializem valores escalares grandes e pode evitar executar a mesma subconsulta mais de uma vez"}]}]} />

Se definido como true, evita que subconsultas escalares (de)serializem valores escalares grandes e pode evitar executar a mesma subconsulta mais de uma vez.

## enable\_scopes\_for\_with\_statement

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.7"},{"label": "1"},{"label": "Nova configuração para compatibilidade retroativa com o analyzer antigo."}]}, {"id": "row-2","items": [{"label": "25.6"},{"label": "1"},{"label": "Nova configuração para compatibilidade retroativa com o analyzer antigo."}]}, {"id": "row-3","items": [{"label": "25.5"},{"label": "1"},{"label": "Nova configuração para compatibilidade retroativa com o analyzer antigo."}]}, {"id": "row-4","items": [{"label": "25.4"},{"label": "1"},{"label": "Nova configuração para compatibilidade retroativa com o analyzer antigo."}]}]} />

Se desabilitada, as declarações em cláusulas WITH pai terão o mesmo escopo de quando são declaradas no escopo atual.

Observe que esta é uma configuração de compatibilidade para o analyzer, para permitir a execução de algumas consultas inválidas que o analyzer antigo conseguia executar.

## enable\_shared\_storage\_snapshot\_in\_query

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Uma nova configuração para compartilhar o snapshot de armazenamento na consulta"}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Habilita por padrão o compartilhamento do snapshot de armazenamento na consulta"}]}]} />

Se estiver habilitada, todas as subconsultas dentro de uma única consulta compartilharão o mesmo StorageSnapshot para cada tabela.
Isso garante uma visão consistente dos dados em toda a consulta, mesmo se a mesma tabela for acessada várias vezes.

Isso é necessário para consultas em que a consistência interna das partes de dados é importante. Exemplo:

```sql theme={null}
SELECT
    count()
FROM events
WHERE (_part, _part_offset) IN (
    SELECT _part, _part_offset
    FROM events
    WHERE user_id = 42
)
```

Sem essa configuração, as consultas externa e interna podem operar em snapshots de dados diferentes, levando a resultados incorretos.

Valores possíveis:

* 0 - Desativado
* 1 - Ativado

## enable\_sharing\_sets\_for\_mutations

<SettingsInfoBlock type="Bool" default_value="1" />

Permite o compartilhamento de objetos Set criados para subconsultas `IN` entre diferentes tarefas da mesma mutação. Isso reduz o uso de memória e o consumo de CPU

## enable\_streaming\_queries

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "0"},{"label": "Nova configuração"}]}]} />

Permite consultas contínuas `SELECT ... FROM t STREAM [CURSOR '{...}']`.
Quando desativado, qualquer expressão de tabela que use o modificador `STREAM` é rejeitada
na compilação do plano. Esta é a configuração principal para o recurso de
consultas de streaming; capacidades adicionais podem ser controladas por suas próprias configurações.

## enable\_sz3\_codec

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nova configuração para habilitar individualmente o codec de compressão experimental `SZ3`, sem `allow_experimental_codecs`."}]}]} />

Habilita o codec de compressão `SZ3`.

## enable\_time\_series\_aggregate\_functions

<PrivatePreviewBadge />

**Aliases**: `allow_experimental_ts_to_grid_aggregate_function`, `allow_experimental_time_series_aggregate_functions`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "As funções agregadas `timeSeries*` foram movidas para o nível de prévia privada. Foi adicionado um alias para a configuração `allow_experimental_time_series_aggregate_functions`."}]}]} />

Habilita as funções agregadas `timeSeries*` para reamostragem de séries temporais no estilo Prometheus, cálculo de taxa e delta.

## enable\_time\_series\_table

<PrivatePreviewBadge />

**Aliases**: `allow_experimental_time_series_table`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "O mecanismo de tabela `TimeSeries` e o dialeto `promql` foram movidos para o nível de prévia privada. Foi adicionado um alias para a configuração `allow_experimental_time_series_table`."}]}]} />

Permite criar tabelas com o mecanismo de tabela [TimeSeries](/pt-BR/reference/engines/table-engines/integrations/time-series). Valores possíveis:

* 0 — o mecanismo de tabela [TimeSeries](/pt-BR/reference/engines/table-engines/integrations/time-series) está desabilitado.
* 1 — o mecanismo de tabela [TimeSeries](/pt-BR/reference/engines/table-engines/integrations/time-series) está habilitado.

## enable\_time\_time64\_type

**Aliases**: `allow_experimental_time_time64_type`

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.6"},{"label": "0"},{"label": "Novas configurações. Permite usar os novos tipos de dados experimentais Time e Time64."}]}, {"id": "row-2","items": [{"label": "25.12"},{"label": "1"},{"label": "Habilita os tipos Time e Time64 por padrão"}]}]} />

Permite a criação dos tipos de dados [Time](/pt-BR/reference/data-types/time) e [Time64](/pt-BR/reference/data-types/time64).

## enable\_trino\_dialect

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Nova configuração para habilitar o valor `trino` da configuração `dialect`, que traduz a sintaxe SQL do Trino e mapeia nomes de funções do Trino para seus equivalentes no ClickHouse."}]}]} />

Habilita o valor `trino` da configuração `dialect`.

Quando `dialect` é definido como `trino`, as consultas são escritas em SQL do Trino: a sintaxe
específica do Trino (literais `ARRAY[...]`, `TRY_CAST`, `UNNEST`, tipos `ROW`, `OFFSET` antes de `LIMIT`)
é traduzida para ClickHouse SQL, e os nomes das funções do Trino são mapeados para seus
equivalentes no ClickHouse. A consulta `SET` ainda é interpretada como SQL comum para que o
dialeto possa ser alterado novamente.

O dialeto também alinha a semântica das consultas à do Trino: `join_use_nulls` é ativado,
`use_variant_as_common_type` é desativado, e o analisador de consultas é ativado.
Uma cláusula `SETTINGS` explícita na consulta ainda tem precedência.

## enable\_unaligned\_array\_join

<SettingsInfoBlock type="Bool" default_value="0" />

Permite ARRAY JOIN com vários arrays de tamanhos diferentes. Quando essa configuração está habilitada, os arrays serão redimensionados para o mais longo.

## enable\_unique\_key

<ExperimentalBadge />

**Aliases**: `allow_experimental_unique_key`

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "0"},{"label": "Adicionado um alias para a configuração `allow_experimental_unique_key`."}]}]} />

Permite a criação de tabelas com a cláusula `UNIQUE KEY` em motores da família MergeTree.

## enable\_url\_encoding

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "25.5"},{"label": "0"},{"label": "Alterado o valor padrão da configuração existente"}]}]} />

Permite ativar/desativar a decodificação/codificação do caminho no URI em tabelas com o motor [URL](/pt-BR/reference/engines/table-engines/special/url).

Desativado por padrão.

## enable\_vertical\_final

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "24.6"},{"label": "1"},{"label": "Ativa o FINAL vertical por padrão novamente após corrigir o bug"}]}, {"id": "row-2","items": [{"label": "24.1"},{"label": "1"},{"label": "Usa o FINAL vertical por padrão"}]}]} />

Se ativado, remove linhas duplicadas durante o FINAL marcando as linhas como excluídas e filtrando-as posteriormente, em vez de mesclar as linhas

## enable\_writes\_to\_query\_cache

<SettingsInfoBlock type="Bool" default_value="1" />

Se estiver ativado, os resultados das consultas `SELECT` serão armazenados no [cache de consultas](/pt-BR/concepts/features/performance/caches/query-cache).

Valores possíveis:

* 0 - Desabilitado
* 1 - Ativado

## enable\_zxc\_codec

<ExperimentalBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Nova configuração para habilitar individualmente o codec de compressão experimental `ZXC`, sem usar `allow_experimental_codecs`."}]}]} />

Habilita o codec de compressão `ZXC`.
