Skip to content

Commit 6f42c63

Browse files
authored
Merge pull request #1465 from Altinity/fix/antalya-26.1/settingschangeshistory
[Before forward-ports] Antalya 26.1: fix for SettingsChangesHistory#1464
2 parents ea65374 + 93656d8 commit 6f42c63

5 files changed

Lines changed: 1474 additions & 12 deletions

File tree

src/Common/ClickHouseVersion.cpp

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <IO/ReadHelpers.h>
55

66
#include <boost/algorithm/string.hpp>
7+
#include <boost/algorithm/string/join.hpp>
78

89
#include <fmt/ranges.h>
910

@@ -23,19 +24,37 @@ ClickHouseVersion::ClickHouseVersion(std::string_view version)
2324
if (split.empty())
2425
throw Exception{ErrorCodes::BAD_ARGUMENTS, "Cannot parse ClickHouse version here: {}", version};
2526

26-
for (const auto & split_element : split)
27+
for (size_t i = 0; i < split.size(); ++i)
2728
{
2829
size_t component;
29-
ReadBufferFromString buf(split_element);
30+
ReadBufferFromString buf(split[i]);
3031
if (!tryReadIntText(component, buf) || !buf.eof())
31-
throw Exception{ErrorCodes::BAD_ARGUMENTS, "Cannot parse ClickHouse version here: {}", version};
32+
{
33+
/// Non-numeric component (e.g. "altinityantalya"): treat this and remaining parts as suffix.
34+
/// Valid version must have at least one numeric component (e.g. "26.1.3.20001.altinityantalya").
35+
if (components.empty())
36+
throw Exception{ErrorCodes::BAD_ARGUMENTS, "Cannot parse ClickHouse version here: {}", version};
37+
Strings suffix_parts(split.begin() + i, split.end());
38+
suffix = boost::algorithm::join(suffix_parts, ".");
39+
break;
40+
}
3241
components.push_back(component);
3342
}
3443
}
3544

3645
String ClickHouseVersion::toString() const
3746
{
38-
return fmt::format("{}", fmt::join(components, "."));
47+
String result = fmt::format("{}", fmt::join(components, "."));
48+
if (!suffix.empty())
49+
result += "." + suffix;
50+
return result;
51+
}
52+
53+
std::strong_ordering ClickHouseVersion::operator<=>(const ClickHouseVersion & other) const
54+
{
55+
if (auto cmp = components <=> other.components; cmp != 0)
56+
return cmp;
57+
return suffix <=> other.suffix;
3958
}
4059

4160
}

src/Common/ClickHouseVersion.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#pragma once
22

33
#include <compare>
4+
#include <string>
45
#include <vector>
56
#include <string_view>
67

@@ -14,10 +15,12 @@ class ClickHouseVersion
1415

1516
std::string toString() const;
1617

17-
std::strong_ordering operator<=>(const ClickHouseVersion & other) const = default;
18+
std::strong_ordering operator<=>(const ClickHouseVersion & other) const;
1819

1920
private:
2021
std::vector<size_t> components;
22+
/// Non-numeric suffix (e.g. "altinityantalya" for "26.1.3.20001.altinityantalya"); empty for standard versions
23+
std::string suffix;
2124
};
2225

2326
}

src/Core/SettingsChangesHistory.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,11 @@ const VersionToSettingsChangesMap & getSettingsChangesHistory()
4242
// addSettingsChanges(settings_changes_history, "26.1.3.20001",
4343
// {
4444
// });
45+
addSettingsChanges(settings_changes_history, "26.1.3.20001.altinityantalya",
46+
{
47+
// {"object_storage_cluster", "", "", "Antalya: New setting"},
48+
// {"object_storage_max_nodes", 0, 0, "Antalya: New setting"},
49+
});
4550
addSettingsChanges(settings_changes_history, "26.1",
4651
{
4752
{"parallel_replicas_filter_pushdown", false, false, "New setting"},
@@ -224,8 +229,10 @@ const VersionToSettingsChangesMap & getSettingsChangesHistory()
224229
{"os_threads_nice_value_materialized_view", 0, 0, "New setting."},
225230
{"os_thread_priority", 0, 0, "Alias for os_threads_nice_value_query."},
226231
});
227-
// addSettingsChanges(settings_changes_history, "25.8.9.2000",
228-
// {
232+
addSettingsChanges(settings_changes_history, "25.8.16.20001.altinityantalya",
233+
{
234+
// {"iceberg_timezone_for_timestamptz", "UTC", "UTC", "New setting."},
235+
// {"object_storage_remote_initiator", false, false, "New setting."},
229236
// {"allow_experimental_iceberg_read_optimization", true, true, "New setting."},
230237
// {"object_storage_cluster_join_mode", "allow", "allow", "New setting"},
231238
// {"lock_object_storage_task_distribution_ms", 500, 500, "Raised the value to 500 to avoid hoping tasks between executors."},
@@ -252,7 +259,7 @@ const VersionToSettingsChangesMap & getSettingsChangesHistory()
252259
// {"cluster_table_function_buckets_batch_size", 0, 0, "New setting."},
253260
// {"export_merge_tree_part_throw_on_pending_mutations", true, true, "New setting."},
254261
// {"export_merge_tree_part_throw_on_pending_patch_parts", true, true, "New setting."},
255-
// });
262+
});
256263
addSettingsChanges(settings_changes_history, "25.8",
257264
{
258265
{"output_format_json_quote_64bit_integers", true, false, "Disable quoting of the 64 bit integers in JSON by default"},

tests/queries/0_stateless/02995_new_settings_history.sh

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,22 @@ fi
2525
# Baselines generated with v25.12.1 (pre-release)
2626
# clickhouse local --query "select name, default from system.settings order by name format TSV" > 02995_settings_25_12_1.tsv
2727
# clickhouse local --query "select name, value from system.merge_tree_settings order by name format TSV" > 02995_merge_tree_settings_settings_25_12_1.tsv
28+
# Previous Antalya release baseline: (same format as 02995_settings_25_12_1.tsv). Settings listed there are considered known; keep empty or generate from previous Antalya build.
29+
30+
# To generate the previous Antalya release baseline:
31+
# docker run --rm --entrypoint clickhouse <antalya_docker_image> \
32+
# local -q "select name, default from system.settings order by name format TSV" \
33+
# > 02995_settings_25_8_16_20001_antalya.tsv
34+
2835
$CLICKHOUSE_LOCAL --query "
2936
WITH old_settings AS
3037
(
3138
SELECT * FROM file('${CUR_DIR}/02995_settings_25_12_1.tsv', 'TSV', 'name String, default String')
3239
),
40+
old_antalya_settings AS
41+
(
42+
SELECT * FROM file('${CUR_DIR}/02995_settings_25_8_16_20001_antalya.tsv', 'TSV', 'name String, default String')
43+
),
3344
old_merge_tree_settings AS
3445
(
3546
SELECT * FROM file('${CUR_DIR}/02995_merge_tree_settings_settings_25_12_1.tsv', 'TSV', 'name String, default String')
@@ -52,7 +63,7 @@ $CLICKHOUSE_LOCAL --query "
5263
)) AND (name NOT IN (
5364
SELECT arrayJoin(tupleElement(changes, 'name'))
5465
FROM system.settings_changes
55-
WHERE type = 'Session' AND splitByChar('.', version)[1]::UInt64 > 25 OR (splitByChar('.', version)[1]::UInt64 == 25 AND splitByChar('.', version)[2]::UInt64 > 12)
66+
WHERE type = 'Session' AND (splitByChar('.', version)[1]::UInt64 > 25 OR (splitByChar('.', version)[1]::UInt64 == 25 AND splitByChar('.', version)[2]::UInt64 > 12) OR position(version, 'altinityantalya') > 0)
5667
))
5768
UNION ALL
5869
(
@@ -64,7 +75,7 @@ $CLICKHOUSE_LOCAL --query "
6475
)) AND (name NOT IN (
6576
SELECT arrayJoin(tupleElement(changes, 'name'))
6677
FROM system.settings_changes
67-
WHERE type = 'MergeTree' AND splitByChar('.', version)[1]::UInt64 > 25 OR (splitByChar('.', version)[1]::UInt64 == 25 AND splitByChar('.', version)[2]::UInt64 > 12)
78+
WHERE type = 'MergeTree' AND (splitByChar('.', version)[1]::UInt64 > 25 OR (splitByChar('.', version)[1]::UInt64 == 25 AND splitByChar('.', version)[2]::UInt64 > 12) OR position(version, 'altinityantalya') > 0)
6879
))
6980
)
7081
UNION ALL
@@ -75,7 +86,7 @@ $CLICKHOUSE_LOCAL --query "
7586
WHERE (new_settings.default != old_settings.default) AND (name NOT IN (
7687
SELECT arrayJoin(tupleElement(changes, 'name'))
7788
FROM system.settings_changes
78-
WHERE type = 'Session' AND splitByChar('.', version)[1]::UInt64 > 25 OR (splitByChar('.', version)[1]::UInt64 == 25 AND splitByChar('.', version)[2]::UInt64 > 12)
89+
WHERE type = 'Session' AND (splitByChar('.', version)[1]::UInt64 > 25 OR (splitByChar('.', version)[1]::UInt64 == 25 AND splitByChar('.', version)[2]::UInt64 > 12) OR position(version, 'altinityantalya') > 0)
7990
)) AND ${IGNORE_SETTINGS_FOR_SANITIZERS}
8091
)
8192
UNION ALL
@@ -86,8 +97,33 @@ $CLICKHOUSE_LOCAL --query "
8697
WHERE (new_merge_tree_settings.default != old_merge_tree_settings.default) AND (name NOT IN (
8798
SELECT arrayJoin(tupleElement(changes, 'name'))
8899
FROM system.settings_changes
89-
WHERE type = 'MergeTree' AND splitByChar('.', version)[1]::UInt64 > 25 OR (splitByChar('.', version)[1]::UInt64 == 25 AND splitByChar('.', version)[2]::UInt64 > 12)
100+
WHERE type = 'MergeTree' AND (splitByChar('.', version)[1]::UInt64 > 25 OR (splitByChar('.', version)[1]::UInt64 == 25 AND splitByChar('.', version)[2]::UInt64 > 12) OR position(version, 'altinityantalya') > 0)
90101
)) AND ${IGNORED_MERGETREE_SETTINGS_FOR_CLOUD}
91102
)
103+
UNION ALL
104+
(
105+
SELECT 'PLEASE ADD THE NEW SETTING TO SettingsChangesHistory.cpp (Antalya): ' || name || ' WAS ADDED'
106+
FROM new_settings
107+
WHERE (name NOT IN (SELECT name FROM old_antalya_settings))
108+
AND (name NOT IN (
109+
SELECT arrayJoin(tupleElement(changes, 'name'))
110+
FROM system.settings_changes
111+
WHERE type = 'Session'
112+
))
113+
AND (SELECT count() FROM old_antalya_settings) > 0
114+
)
115+
UNION ALL
116+
(
117+
SELECT 'PLEASE ADD THE SETTING VALUE CHANGE TO SettingsChangesHistory.cpp (Antalya): ' || name || ' WAS CHANGED FROM ' || old_antalya_settings.default || ' TO ' || new_settings.default
118+
FROM new_settings
119+
JOIN old_antalya_settings ON new_settings.name = old_antalya_settings.name
120+
WHERE (new_settings.default != old_antalya_settings.default)
121+
AND (name NOT IN (
122+
SELECT arrayJoin(tupleElement(changes, 'name'))
123+
FROM system.settings_changes
124+
WHERE type = 'Session'
125+
))
126+
AND ${IGNORE_SETTINGS_FOR_SANITIZERS}
127+
)
92128
)
93129
"

0 commit comments

Comments
 (0)