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 inReadFromMergeTree 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 queriesallow_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 forreceive_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] … queriesallow_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 columnarallow_fuzz_query_functions
Enables thefuzzQuery 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 functiongetClientHTTPHeader 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.
- Sampling Query Profiler
- System table trace_log
allow_key_condition_coalesce_rewrite
Allow the MergeTree primary key and skip indexes to prune granules forWHERE/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 ascoalesce(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/ifNullwith a falsy (zero) constant default used directly as a condition, such asifNull(a = 5, 0)orcoalesce(a = 5, 0), is unwrapped to its inner predicatea = 5. Such wrappers collapse the inner predicate’s three-valued result into a definite boolean (mappingNULLtofalse).
allow_limit_by_partitions_independently
Enable independentLIMIT 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 diskallow_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 typeTuple(...) can be typed as Nullable(Tuple(...)).
false: ReturnTuple(...)and use default tuple values for rows where the subcolumn is missing.true: ReturnNullable(Tuple(...))and useNULLfor rows where the subcolumn is missing.
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 theRANK 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 filteringallow_replace_partition_from_empty_source
AllowALTER 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 whetherSETTINGS 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:
allow_settings_after_format_in_insert:
- 0 — Disallow.
- 1 — Allow.
Use this setting only for backward compatibility if your use cases depend on old syntax.