Skip to main content
These settings are available in system.settings and are autogenerated from source.

allow_aggregate_partitions_independently

Enable independent aggregation of partitions on separate threads when partition key suits group by key. Beneficial when number of partitions close to number of cores and partitions have roughly the same size. Heuristics in ReadFromMergeTree automatically disable the optimization for unfavorable layouts (too few partitions, too many partitions, or significantly skewed partition sizes); see force_aggregate_partitions_independently to bypass those checks.

allow_archive_path_syntax

File/S3 engines/table function will parse paths with ’::’ as <archive> :: <file> if the archive has correct extension.

allow_asynchronous_read_from_io_pool_for_merge_tree

Use background I/O pool to read from MergeTree tables. This setting may increase performance for I/O bound queries

allow_calculating_subcolumns_sizes_for_merge_tree_reading

When enabled, ClickHouse will calculate the size of files required for each subcolumn reading for better task and block sizes calculation.

allow_changing_replica_until_first_data_packet

If it’s enabled, in hedged requests we can start new connection until receiving first data packet even if we have already made some progress (but progress haven’t updated for receive_data_timeout timeout), otherwise we disable changing replica after the first time we made progress.

allow_create_index_without_type

Allow CREATE INDEX query without TYPE. Query will be ignored. Made for SQL compatibility tests.

allow_custom_error_code_in_throwif

Enable custom error code in function throwIf(). If true, thrown exceptions may have unexpected error codes.

allow_ddl

If it is set to true, then a user is allowed to executed DDL queries.

allow_distributed_ddl

If it is set to true, then a user is allowed to executed distributed DDL queries.

allow_drop_detached

Allow ALTER TABLE … DROP DETACHED PART[ITION] … queries

allow_dynamic_type_in_join_keys

Allows using Dynamic type in JOIN keys. Added for compatibility. It’s not recommended to use Dynamic type in JOIN keys because comparison with other types may lead to unexpected results.

allow_execute_multiif_columnar

Allow execute multiIf function columnar

allow_fuzz_query_functions

Enables the fuzzQuery function that applies random AST mutations to a query string.

allow_general_join_planning

Allows a more general join planning algorithm that can handle more complex conditions, but only works with hash join. If hash join is not enabled, then the usual join planning algorithm is used regardless of the value of this setting.

allow_get_client_http_header

Allow to use the function getClientHTTPHeader which lets to obtain a value of the current HTTP request’s header. It is not enabled by default for security reasons, because some headers, such as Cookie, could contain sensitive info. Note that the X-ClickHouse-*, Authentication and Authorization headers are always restricted and cannot be obtained with this function.

allow_hyperscan

Allow functions that use Hyperscan library. Disable to avoid potentially long compilation times and excessive resource usage.

allow_iceberg_remove_orphan_files

Allow to use ‘ALTER TABLE … EXECUTE remove_orphan_files()’ for iceberg tables.

allow_insert_into_iceberg

Aliases: allow_experimental_insert_into_iceberg Allow to execute insert queries into iceberg.

allow_introspection_functions

Enables or disables introspection functions for query profiling. Possible values:
  • 1 — Introspection functions enabled.
  • 0 — Introspection functions disabled.
See Also

allow_key_condition_coalesce_rewrite

Allow the MergeTree primary key and skip indexes to prune granules for WHERE/PREWHERE predicates that involve coalesce or ifNull. Without this setting, such predicates are opaque to index analysis and do not prune, so granules that cannot match are still read. This affects only which granules are read; query results are unchanged, because rows are still filtered by the original predicate. Two predicate shapes are rewritten before index analysis:
  • A comparison against a coalesce/ifNull, such as coalesce(a, b) = 5, becomes a disjunction so an index on each argument can prune: a = 5 OR (a IS NULL AND b = 5), extended for more arguments.
  • A coalesce/ifNull with a falsy (zero) constant default used directly as a condition, such as ifNull(a = 5, 0) or coalesce(a = 5, 0), is unwrapped to its inner predicate a = 5. Such wrappers collapse the inner predicate’s three-valued result into a definite boolean (mapping NULL to false).

allow_limit_by_partitions_independently

Enable independent LIMIT BY evaluation per partition on separate threads when the partition expression is a deterministic function of the LIMIT BY columns.

allow_materialized_view_with_bad_select

Allow CREATE MATERIALIZED VIEW with SELECT query that references nonexistent tables or columns. It must still be syntactically valid. Doesn’t apply to refreshable MVs. Doesn’t apply if the MV schema needs to be inferred from the SELECT query (i.e. if the CREATE has no column list and no TO table). Can be used for creating MV before its source table.

allow_minmax_index_for_json

Allow creating minmax skip indexes on JSON (Object) columns. Disabled by default because the minmax index serialization path cannot handle heterogeneous Field values that JSON columns may contain.

allow_named_collection_override_by_default

Allow named collections’ fields override by default.

allow_non_metadata_alters

Allow to execute alters which affects not only tables metadata, but also data on disk

allow_nonconst_timezone_arguments

Allow non-const timezone arguments in certain time-related functions like toTimeZone(), fromUnixTimestamp*(), snowflakeIDToDateTime*(). This setting exists only for compatibility reasons. In ClickHouse, the time zone is a property of the data type, respectively of the column. Enabling this setting gives the wrong impression that different values within a column can have different timezones. Therefore, please do not enable this setting.

allow_nullable_tuple_in_extracted_subcolumns

Controls whether extracted subcolumns of type Tuple(...) can be typed as Nullable(Tuple(...)).
  • false: Return Tuple(...) and use default tuple values for rows where the subcolumn is missing.
  • true: Return Nullable(Tuple(...)) and use NULL for rows where the subcolumn is missing.
This setting controls extracted subcolumn behavior only. It does not control whether Nullable(Tuple(...)) columns can be created in tables; that is controlled by enable_nullable_tuple_type. ClickHouse uses the value for this setting loaded at server startup. Changes made with SET or query-level SETTINGS do not change extracted subcolumn behavior. To change extracted subcolumn behavior, update allow_nullable_tuple_in_extracted_subcolumns in startup profile configuration (for example, users.xml) and restart the server.

allow_rank_dense_rank_arguments

Allow passing arguments to the RANK and DENSE_RANK window functions for backward compatibility. Per SQL standard, RANK and DENSE_RANK take zero arguments — they rank rows based on the OVER (ORDER BY ...) window only. In ClickHouse versions before 26.5, queries such as RANK(x) OVER (...) silently accepted and ignored the argument, which led to user confusion (the visible argument suggested it influenced the ranking, but it did not). When this setting is false (the default), RANK and DENSE_RANK reject any arguments and throw NUMBER_OF_ARGUMENTS_DOESNT_MATCH. When set to true, the legacy lenient behavior is restored — arguments are silently ignored, matching the pre-26.5 behavior.

allow_reorder_prewhere_conditions

When moving conditions from WHERE to PREWHERE, allow reordering them to optimize filtering

allow_replace_partition_from_empty_source

Allow ALTER TABLE ... REPLACE PARTITION ... FROM ... to silently drop the destination partition when the source has no parts in that partition. By default this is disallowed: REPLACE PARTITION from a source that has no data in the requested partition raises an exception, because in this case the operation effectively becomes a silent DROP PARTITION on the destination (the destination’s data is removed and nothing replaces it), a common cause of accidental data loss (see #23727). Enable this setting to restore the previous behavior, for example when you intentionally use an empty source partition to clear data in the destination. For an unconditional drop, prefer ALTER TABLE ... DROP PARTITION ... instead.

allow_settings_after_format_in_insert

Control whether SETTINGS after FORMAT in INSERT queries is allowed or not. It is not recommended to use this, since this may interpret part of SETTINGS as values. Example:
But the following query will work only with allow_settings_after_format_in_insert:
Possible values:
  • 0 — Disallow.
  • 1 — Allow.
Use this setting only for backward compatibility if your use cases depend on old syntax.

allow_simdjson

Allow using simdjson library in ‘JSON*’ functions if AVX2 instructions are available. If disabled rapidjson will be used.

allow_special_serialization_kinds_in_output_formats

Allows to output columns with special serialization kinds like Sparse and Replicated without converting them to full column representation. It helps to avoid unnecessary data copy during formatting.

allow_unrestricted_reads_from_keeper

Allow unrestricted (without condition on path) reads from system.zookeeper table, can be handy, but is not safe for zookeeper
Last modified on July 24, 2026