from ClickHouse Release 19.17.6.36, 2019-12-27
ClickHouse release v20.11.2.1, 2020-11-11
- If some
profile
was specified indistributed_ddl
config section, then this profile could overwrite settings ofdefault
profile on server startup. It’s fixed, now settings of distributed DDL queries should not affect global server settings. #16635 (tavplubix). - Restrict to use of non-comparable data types (like
AggregateFunction
) in keys (Sorting key, Primary key, Partition key, and so on). #16601 (alesapin). - Remove
ANALYZE
andAST
queries, and make the settingenable_debug_queries
obsolete since now it is the part of full featuredEXPLAIN
query. #16536 (Ivan). - Aggregate functions
boundingRatio
,rankCorr
,retention
,timeSeriesGroupSum
,timeSeriesGroupRateSum
,windowFunnel
were erroneously made case-insensitive. Now their names are made case sensitive as designed. Only functions that are specified in SQL standard or made for compatibility with other DBMS or functions similar to those should be case-insensitive. #16407 (alexey-milovidov). - Make
rankCorr
function return nan on insufficient data https://github.com/ClickHouse/ClickHouse/issues/16124. #16135 (hexiaoting). - When upgrading from versions older than 20.5, if rolling update is performed and cluster contains both versions 20.5 or greater and less than 20.5, if ClickHouse nodes with old versions are restarted and old version has been started up in presence of newer versions, it may lead to
Part ... intersects previous part
errors. To prevent this error, first install newer clickhouse-server packages on all cluster nodes and then do restarts (so, when clickhouse-server is restarted, it will start up with the new version).
ClickHouse release v20.10.3.30, 2020-10-28
- Make
multiple_joins_rewriter_version
obsolete. Remove first version of joins rewriter. #15472 (Artem Zuikov). - Change default value of
format_regexp_escaping_rule
setting (it’s related toRegexp
format) toRaw
(it means – read whole subpattern as a value) to make the behaviour more like to what users expect. #15426 (alexey-milovidov). - Add support for nested multiline comments
/* comment /* comment */ */
in SQL. This conforms to the SQL standard. #14655 (alexey-milovidov). - Added MergeTree settings (
max_replicated_merges_with_ttl_in_queue
andmax_number_of_merges_with_ttl_in_pool
) to control the number of merges with TTL in the background pool and replicated queue. This change breaks compatibility with older versions only if you use delete TTL. Otherwise, replication will stay compatible. You can avoid incompatibility issues if you update all shard replicas at once or executeSYSTEM STOP TTL MERGES
until you finish the update of all replicas. If you’ll get an incompatible entry in the replication queue, first of all, executeSYSTEM STOP TTL MERGES
and afterALTER TABLE ... DETACH PARTITION ...
the partition where incompatible TTL merge was assigned. Attach it back on a single replica. #14490 (alesapin). - When upgrading from versions older than 20.5, if rolling update is performed and cluster contains both versions 20.5 or greater and less than 20.5, if ClickHouse nodes with old versions are restarted and old version has been started up in presence of newer versions, it may lead to
Part ... intersects previous part
errors. To prevent this error, first install newer clickhouse-server packages on all cluster nodes and then do restarts (so, when clickhouse-server is restarted, it will start up with the new version).
ClickHouse release v20.9.2.20, 2020-09-22
- When upgrading from versions older than 20.5, if rolling update is performed and cluster contains both versions 20.5 or greater and less than 20.5, if ClickHouse nodes with old versions are restarted and old version has been started up in presence of newer versions, it may lead to
Part ... intersects previous part
errors. To prevent this error, first install newer clickhouse-server packages on all cluster nodes and then do restarts (so, when clickhouse-server is restarted, it will start up with the new version).
ClickHouse release v20.8.2.3-stable, 2020-09-08
- Now
OPTIMIZE FINAL
query doesn’t recalculate TTL for parts that were added before TTL was created. UseALTER TABLE ... MATERIALIZE TTL
once to calculate them, after thatOPTIMIZE FINAL
will evaluate TTL’s properly. This behavior never worked for replicated tables. #14220 (alesapin). - Extend
parallel_distributed_insert_select
setting, adding an option to runINSERT
into local table. The setting changes type fromBool
toUInt64
, so the valuesfalse
andtrue
are no longer supported. If you have these values in server configuration, the server will not start. Please replace them with0
and1
, respectively. #14060 (Azat Khuzhin). - Remove support for the
ODBCDriver
input/output format. This was a deprecated format once used for communication with the ClickHouse ODBC driver, now long superseded by theODBCDriver2
format. Resolves #13629. #13847 (hexiaoting). - When upgrading from versions older than 20.5, if rolling update is performed and cluster contains both versions 20.5 or greater and less than 20.5, if ClickHouse nodes with old versions are restarted and old version has been started up in presence of newer versions, it may lead to
Part ... intersects previous part
errors. To prevent this error, first install newer clickhouse-server packages on all cluster nodes and then do restarts (so, when clickhouse-server is restarted, it will start up with the new version).
ClickHouse release v20.7.2.30-stable, 2020-08-31
- Function
modulo
(operator%
) with at least one floating point number as argument will calculate remainder of division directly on floating point numbers without converting both arguments to integers. It makes behaviour compatible with most of DBMS. This also applicable for Date and DateTime data types. Added aliasmod
. This closes #7323. #12585 (alexey-milovidov). - Deprecate special printing of zero Date/DateTime values as
0000-00-00
and0000-00-00 00:00:00
. #12442 (alexey-milovidov). - The function
groupArrayMoving*
was not working for distributed queries. It’s result was calculated within incorrect data type (without promotion to the largest type). The functiongroupArrayMovingAvg
was returning integer number that was inconsistent with theavg
function. This fixes #12568. #12622 (alexey-milovidov). - Add sanity check for MergeTree settings. If the settings are incorrect, the server will refuse to start or to create a table, printing detailed explanation to the user. #13153 (alexey-milovidov).
- Protect from the cases when user may set
background_pool_size
to value lower thannumber_of_free_entries_in_pool_to_execute_mutation
ornumber_of_free_entries_in_pool_to_lower_max_size_of_merge
. In these cases ALTERs won’t work or the maximum size of merge will be too limited. It will throw exception explaining what to do. This closes #10897. #12728 (alexey-milovidov). - When upgrading from versions older than 20.5, if rolling update is performed and cluster contains both versions 20.5 or greater and less than 20.5, if ClickHouse nodes with old versions are restarted and old version has been started up in presence of newer versions, it may lead to
Part ... intersects previous part
errors. To prevent this error, first install newer clickhouse-server packages on all cluster nodes and then do restarts (so, when clickhouse-server is restarted, it will start up with the new version).
ClickHouse release v20.6.3.28-stable
- When upgrading from versions older than 20.5, if rolling update is performed and cluster contains both versions 20.5 or greater and less than 20.5, if ClickHouse nodes with old versions are restarted and old version has been started up in presence of newer versions, it may lead to
Part ... intersects previous part
errors. To prevent this error, first install newer clickhouse-server packages on all cluster nodes and then do restarts (so, when clickhouse-server is restarted, it will start up with the new version).
ClickHouse release v20.5.2.7-stable 2020-07-02
- Return non-Nullable result from COUNT(DISTINCT), and
uniq
aggregate functions family. If all passed values are NULL, return zero instead. This improves SQL compatibility. #11661 (alexey-milovidov). - Added a check for the case when user-level setting is specified in a wrong place. User-level settings should be specified in
users.xml
inside<profile>
section for specific user profile (or in<default>
for default settings). The server won’t start with exception message in log. This fixes #9051. If you want to skip the check, you can either move settings to the appropriate place or add<skip_check_for_incorrect_settings>1</skip_check_for_incorrect_settings>
to config.xml. #11449 (alexey-milovidov). - The setting
input_format_with_names_use_header
is enabled by default. It will affect parsing of input formats-WithNames
and-WithNamesAndTypes
. #10937 (alexey-milovidov). - Remove
experimental_use_processors
setting. It is enabled by default. #10924 (Nikolai Kochetov). - Update
zstd
to 1.4.4. It has some minor improvements in performance and compression ratio. If you run replicas with different versions of ClickHouse you may see reasonable error messagesData after merge is not byte-identical to data on another replicas.
with explanation. These messages are Ok and you should not worry. This change is backward compatible but we list it here in changelog in case you will wonder about these messages. #10663 (alexey-milovidov). - Added a check for meaningless codecs and a setting
allow_suspicious_codecs
to control this check. This closes #4966. #10645 (alexey-milovidov). - Several Kafka setting changes their defaults. See #11388.
- When upgrading from versions older than 20.5, if rolling update is performed and cluster contains both versions 20.5 or greater and less than 20.5, if ClickHouse nodes with old versions are restarted and old version has been started up in presence of newer versions, it may lead to
Part ... intersects previous part
errors. To prevent this error, first install newer clickhouse-server packages on all cluster nodes and then do restarts (so, when clickhouse-server is restarted, it will start up with the new version).
ClickHouse release v20.4.2.9, 2020-05-12
- System tables (e.g. system.query_log, system.trace_log, system.metric_log) are using compact data part format for parts smaller than 10 MiB in size. Compact data part format is supported since version 20.3. If you are going to downgrade to version less than 20.3, you should manually delete table data for system logs in
/var/lib/clickhouse/data/system/
. - When string comparison involves FixedString and compared arguments are of different sizes, do comparison as if smaller string is padded to the length of the larger. This is intented for SQL compatibility if we imagine that FixedString data type corresponds to SQL CHAR. This closes #9272. #10363 (alexey-milovidov)
- Make SHOW CREATE TABLE multiline. Now it is more readable and more like MySQL. #10049 (Azat Khuzhin)
- Added a setting
validate_polygons
that is used inpointInPolygon
function and enabled by default. #9857 (alexey-milovidov)
ClickHouse release v20.3.2.1, 2020-03-12
- Fixed the issue
file name too long
when sending data forDistributed
tables for a large number of replicas. Fixed the issue that replica credentials were exposed in the server log. The format of directory name on disk was changed to[shard{shard_index}[_replica{replica_index}]]
. #8911 (Mikhail Korotov) After you upgrade to the new version, you will not be able to downgrade without manual intervention, because old server version does not recognize the new directory format. If you want to downgrade, you have to manually rename the corresponding directories to the old format. This change is relevant only if you have used asynchronousINSERT
s toDistributed
tables. In the version 20.3.3 we will introduce a setting that will allow you to enable the new format gradually. - Changed the format of replication log entries for mutation commands. You have to wait for old mutations to process before installing the new version.
- Implement simple memory profiler that dumps stacktraces to
system.trace_log
every N bytes over soft allocation limit #8765 (Ivan) #9472 (alexey-milovidov) The column ofsystem.trace_log
was renamed fromtimer_type
totrace_type
. This will require changes in third-party performance analysis and flamegraph processing tools. - Use OS thread id everywhere instead of internal thread number. This fixes #7477 Old
clickhouse-client
cannot receive logs that are send from the server when the settingsend_logs_level
is enabled, because the names and types of the structured log messages were changed. On the other hand, different server versions can send logs with different types to each other. When you don’t use thesend_logs_level
setting, you should not care. #8954 (alexey-milovidov) - Remove
indexHint
function #9542 (alexey-milovidov) - Remove
findClusterIndex
,findClusterValue
functions. This fixes #8641. If you were using these functions, send an email to[email protected]
#9543 (alexey-milovidov) - Now it’s not allowed to create columns or add columns with
SELECT
subquery as default expression. #9481 (alesapin) - Require aliases for subqueries in JOIN. #9274 (Artem Zuikov)
- Improved
ALTER MODIFY/ADD
queries logic. Now you cannotADD
column without type,MODIFY
default expression doesn’t change type of column andMODIFY
type doesn’t loose default expression value. Fixes #8669. #9227 (alesapin) - Require server to be restarted to apply the changes in logging configuration. This is a temporary workaround to avoid the bug where the server logs to a deleted log file (see #8696). #8707 (Alexander Kuzmenkov)
- The setting
experimental_use_processors
is enabled by default. This setting enables usage of the new query pipeline. This is internal refactoring and we expect no visible changes. If you will see any issues, set it to back zero. #8768 (alexey-milovidov)
ClickHouse release v20.1.2.4, 2020-01-22
- Make the setting
merge_tree_uniform_read_distribution
obsolete. The server still recognizes this setting but it has no effect. #8308 (alexey-milovidov) - Changed return type of the function
greatCircleDistance
toFloat32
because now the result of calculation isFloat32
. #7993 (alexey-milovidov) - Now it’s expected that query parameters are represented in “escaped” format. For example, to pass string
a<tab>b
you have to writea\tb
ora\<tab>b
and respectively,a%5Ctb
ora%5C%09b
in URL. This is needed to add the possibility to pass NULL as\N
. This fixes #7488. #8517 (alexey-milovidov) - Enable
use_minimalistic_part_header_in_zookeeper
setting forReplicatedMergeTree
by default. This will significantly reduce amount of data stored in ZooKeeper. This setting is supported since version 19.1 and we already use it in production in multiple services without any issues for more than half a year. Disable this setting if you have a chance to downgrade to versions older than 19.1. #6850 (alexey-milovidov) - Data skipping indices are production ready and enabled by default. The settings
allow_experimental_data_skipping_indices
,allow_experimental_cross_to_join_conversion
andallow_experimental_multiple_joins_emulation
are now obsolete and do nothing. #7974 (alexey-milovidov) - Add new
ANY JOIN
logic forStorageJoin
consistent withJOIN
operation. To upgrade without changes in behaviour you need addSETTINGS any_join_distinct_right_table_keys = 1
to Engine Join tables metadata or recreate these tables after upgrade. #8400 (Artem Zuikov) - Require server to be restarted to apply the changes in logging configuration. This is a temporary workaround to avoid the bug where the server logs to a deleted log file (see #8696). #8707 (Alexander Kuzmenkov)