Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

allow_* session settings

These settings are available in system.settings and are autogenerated from source.

allow_aggregate_partitions_independently

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.71Enable independent per-partition aggregation by default when the partition key suits the GROUP BY key. The existing runtime heuristics in `ReadFromMergeTree::requestOutputEachPartitionThroughSeparatePortForAggregation` already skip the optimization when the partition layout is unfavorable (too few partitions, too many partitions, or significantly skewed partition sizes), so enabling the setting is safe in the cases where it would otherwise be a no-op.

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

Type
Bool
Default
1
Version history
VersionDefault valueComment
24.81Added new setting to allow disabling archive path syntax.
24.51Added new setting to allow disabling 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

Type
Bool
Default
0

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

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.31Allow calculating subcolumns sizes for merge tree reading to improve read tasks splitting

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

Type
Bool
Default
0

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

Type
Bool
Default
0

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

allow_creating_set_partitions_independently

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.81New setting to enable parallel per-partition pre-deduplication of the subquery result when building the set for `IN (subquery)`, when the partition expression is a deterministic function of the subquery output columns.

Enable parallel per-partition pre-deduplication of the subquery result when building the set for IN (subquery), when the partition expression of the subquery’s MergeTree table is a deterministic function of the subquery output columns. Each partition is read through a separate stream and deduplicated independently, so the single set-filling transform only hashes unique rows. Not applied with FINAL, parallel replicas, or GLOBAL IN. The optimization requests the per-partition read itself only when the data has more than one partition and the largest partition holds at most twice the rows of the average partition (see force_creating_set_partitions_independently to bypass the skew check); when the streams are already partition-disjoint because another per-partition feature split them (for example per-partition LIMIT BY), the pre-deduplication is applied regardless, since the read layout is already fixed. While the set is being built, the per-stream deduplication tables together hold roughly one extra copy of the unique keys.

allow_custom_error_code_in_throwif

Type
Bool
Default
0

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

allow_ddl

Type
Bool
Default
1

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

allow_delta_kernel_rs

Beta feature

Aliases: allow_experimental_delta_kernel_rs

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.81New name of `allow_experimental_delta_kernel_rs`, which is no longer experimental and is kept as an alias. The default is unchanged.
25.51New setting. Introduced under the name `allow_experimental_delta_kernel_rs`, which is now an alias of it; the row is carried forward under the canonical name so that it keeps the whole history.

Allow the delta-kernel-rs implementation for reading Delta Lake tables.

allow_distinct_partitions_independently

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.81New setting to enable independent per-partition evaluation of `DISTINCT` when the partition expression is a deterministic function of the `DISTINCT` columns.

Enable independent DISTINCT evaluation per partition on separate threads when the partition expression is a deterministic function of the DISTINCT columns, skipping the cross-stream merge. Beneficial when the number of partitions is close to the number of cores and partitions have roughly the same size; otherwise a cost heuristic skips it, see max_number_of_partitions_for_independent_distinct and force_distinct_partitions_independently. Not applied with FINAL or parallel replicas.

Not applied when max_rows_in_distinct or max_bytes_in_distinct is set: those limits are enforced by the single DISTINCT transform that sees the whole merged result, so the cross-stream merge is kept to preserve their global meaning.

allow_distributed_ddl

Type
Bool
Default
1

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

allow_drop_detached

Type
Bool
Default
0

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

allow_dynamic_type_in_join_keys

Type
Bool
Default
0
Version history
VersionDefault valueComment
25.100Disallow using Dynamic type in JOIN keys by default

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

Type
Bool
Default
1

Allow execute multiIf function columnar

allow_fuzz_query_functions

Experimental feature
Type
Bool
Default
0
Version history
VersionDefault valueComment
26.20New setting to enable the fuzzQuery function.

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

allow_general_join_planning

Type
Bool
Default
1
Version history
VersionDefault valueComment
25.11Allow more general join planning algorithm when hash join algorithm is enabled.

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

Type
Bool
Default
0
Version history
VersionDefault valueComment
24.30Introduced a new function.

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

Type
Bool
Default
1

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

allow_iceberg_remove_orphan_files

Experimental feature
Type
Bool
Default
0
Version history
VersionDefault valueComment
26.40New setting to gate Iceberg orphan file removal

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

allow_insert_into_iceberg

Beta feature

Aliases: allow_experimental_insert_into_iceberg

Type
Bool
Default
0
Version history
VersionDefault valueComment
26.20Insert into iceberg was moved to Beta
25.70New setting.

Allow to execute insert queries into iceberg.

allow_introspection_functions

Type
Bool
Default
0

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

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.51New setting to rewrite predicates of the form `coalesce(a_1, ..., a_N) <op> const` (and equivalently `ifNull`, or with the constant on the left) into a disjunction before index analysis, so per-column primary key and skip indexes on each `a_i` can be used. Partial-constant forms such as `coalesce(a, 42, b)` and `coalesce(a, b, 42)` are also handled.

Rewrite predicates of the form coalesce(a_1, ..., a_N) <op> const (and equivalently ifNull, or with the constant on the left) into the disjunction (a_1 <op> const) OR (a_1 IS NULL AND a_2 <op> const) OR ... OR (a_1 IS NULL AND ... AND a_{N-1} IS NULL AND a_N <op> const) before index analysis, so per-column primary key and skip indexes on each a_i can be used. Partial-constant forms such as coalesce(a, 42, b) and coalesce(a, b, 42) are handled: the argument list is normalized like coalesce itself (NULL literals dropped, arguments after the first non-Nullable one dropped), and a trailing non-NULL constant, if any, is emitted as the final branch. The rewrite is strictly additive for index pruning; runtime filtering still uses the original predicate. Additionally, exact equality predicates of the form nullIf(key, sentinel) = const (where sentinel != const and types match exactly) are rewritten to key = const so primary key, partition, and skip indexes on key can prune granules directly. Range and disjunctive nullIf pruning is not supported.

allow_limit_by_partitions_independently

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.61New setting to enable independent per-partition evaluation of `LIMIT BY` when the partition expression is a deterministic function of the `LIMIT BY` columns.

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

allow_lossy_numeric_supertype

Type
Bool
Default
0
Version history
VersionDefault valueComment
26.80New setting that lets if/multiIf/coalesce/ifNull/array/map resolve all-numeric branches with no lossless common type (e.g. Decimal + Float64) to a numeric supertype (Float64, with possible precision loss), so the result can be aggregated. Independent of use_variant_as_common_type: with it off such branches previously raised NO_COMMON_TYPE, with it on they became a Variant; either way they now resolve to Float64.

When enabled, if/multiIf/coalesce/ifNull/array/map over a set of numeric arguments that has no lossless common type (for example a Decimal and a Float64, or an Int64 and a Float64) resolve to a numeric supertype (Float64) instead of failing, with possible precision loss. This allows the result to be used directly with value-combining aggregate functions like sum, avg, min and max. This is independent of use_variant_as_common_type: the numeric supertype is produced whether or not use_variant_as_common_type is enabled. When disabled (the default), such argument sets have no common type, so they either become a Variant (if use_variant_as_common_type is enabled) or raise NO_COMMON_TYPE.

allow_materialized_view_with_bad_select

Type
Bool
Default
0
Version history
VersionDefault valueComment
25.40Don't allow creating MVs referencing nonexistent columns or tables
24.91Support (but not enable yet) stricter validation in CREATE MATERIALIZED VIEW

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_metadata_only_named_tuple_alter

Type
Bool
Default
0
Version history
VersionDefault valueComment
26.80New setting to control metadata-only ALTER for named Tuple subfield additions.

If true, ALTER MODIFY COLUMN on a named Tuple that only adds new subfields is metadata-only (no data mutation). Set to false to force the old full-mutation behavior.

allow_minmax_index_for_json

Type
Bool
Default
0
Version history
VersionDefault valueComment
26.70Forbid creating minmax skip index on JSON columns by default because the index serialization cannot handle heterogeneous Field values

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

Type
Bool
Default
1

Allow named collections’ fields override by default.

allow_non_metadata_alters

Type
Bool
Default
1

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

allow_nonconst_timezone_arguments

Type
Bool
Default
0
Version history
VersionDefault valueComment
23.40Allow non-const timezone arguments in certain time-related functions like toTimeZone(), fromUnixTimestamp*(), snowflakeToDateTime*().

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

Type
Bool
Default
0
Version history
VersionDefault valueComment
26.30New setting controlling whether extracted Tuple subcolumns can be nullable.

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_preliminary_distinct_abandoning

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.91New setting that lets the preliminary `DISTINCT` give up deduplicating mostly-unique input, because the final `DISTINCT` deduplicates its output again.

Let the preliminary (per-stream) DISTINCT give up deduplicating mostly-unique input, freeing its hash table and passing the remaining rows through. The preliminary DISTINCT is best-effort by design - duplicates from different streams pass through it even when it deduplicates - and the final DISTINCT deduplicates its output again, so abandoning gives up the removal of almost nothing and saves the memory and hashing of a second copy of the unique keys. Not applied when the preliminary DISTINCT carries a limit hint (a plain LIMIT with no subsequent ordering).

allow_rank_dense_rank_arguments

Type
Bool
Default
0
Version history
VersionDefault valueComment
26.50New setting. Before 26.5, the `RANK` and `DENSE_RANK` window functions silently ignored any provided arguments (equivalent to `allow_rank_dense_rank_arguments = 1`). From 26.5, they reject arguments by default with `NUMBER_OF_ARGUMENTS_DOESNT_MATCH` because per SQL standard these functions take zero arguments. Set this to `1` to restore the legacy behavior.

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

Type
Bool
Default
1
Version history
VersionDefault valueComment
24.101New setting

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

allow_replace_partition_from_empty_source

Type
Bool
Default
0
Version history
VersionDefault valueComment
26.60New safety check: `ALTER TABLE ... REPLACE PARTITION ... FROM ...` now throws when the source table has no parts in the requested partition (fixes the silent data loss in [#23727](https://github.com/ClickHouse/ClickHouse/issues/23727)). The previous behavior, silently dropping the destination partition, is preserved by setting `allow_replace_partition_from_empty_source = 1`.

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

Type
Bool
Default
0
Version history
VersionDefault valueComment
22.40Do not allow SETTINGS after FORMAT for INSERT queries because ClickHouse interpret SETTINGS as some values, which is misleading

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:

INSERT INTO FUNCTION null('foo String') SETTINGS max_threads=1 VALUES ('bar');

But the following query will work only with allow_settings_after_format_in_insert:

SET allow_settings_after_format_in_insert=1;
INSERT INTO FUNCTION null('foo String') VALUES ('bar') SETTINGS max_threads=1;

Possible values:

  • 0 — Disallow.
  • 1 — Allow.

allow_simdjson

Type
Bool
Default
1

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

Type
Bool
Default
1
Version history
VersionDefault valueComment
25.111Enable direct output of special columns representations like Sparse/Replicated in some output formats
25.100Add a setting to allow output of special columns representations like Sparse/Replicated without converting them to full columns

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

Type
Bool
Default
0

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

allow_window_partitions_independently

Type
Bool
Default
1
Version history
VersionDefault valueComment
26.81New setting to evaluate window functions per partition independently (skipping the hash scatter) when the partition expression is a deterministic function of the window `PARTITION BY` columns.

Enable independent evaluation of window functions per partition on separate threads when the partition expression of the MergeTree table is a deterministic function of the window PARTITION BY columns. Each partition is read through a separate stream, sorted independently by the window sort description, and processed by its own window transform, skipping the hash scatter that ordinarily reshuffles every row across threads. Beneficial when the number of partitions is close to the number of cores and partitions have roughly the same size; otherwise a cost heuristic skips it, see max_number_of_partitions_for_independent_window and force_window_partitions_independently. Not applied with FINAL or parallel replicas.

Navigation