Skip to content

Commit 454bafd

Browse files
authored
Merge branch 'antalya-25.8' into feature/antalya-25.8/s3cluster_global_join_fixes
2 parents 9ce6b71 + 91e6a82 commit 454bafd

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+374
-121
lines changed

.github/workflows/master.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4178,7 +4178,7 @@ jobs:
41784178
secrets: inherit
41794179
with:
41804180
runner_type: altinity-on-demand, altinity-regression-tester
4181-
commit: 3fbe58a0ebe8fa5f97b7f36c45a2a69b1d3b6568
4181+
commit: fc19ce3a7322a10ab791de755c950a56744a12e7
41824182
arch: release
41834183
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
41844184
timeout_minutes: 300
@@ -4190,7 +4190,7 @@ jobs:
41904190
secrets: inherit
41914191
with:
41924192
runner_type: altinity-on-demand, altinity-regression-tester-aarch64
4193-
commit: 3fbe58a0ebe8fa5f97b7f36c45a2a69b1d3b6568
4193+
commit: fc19ce3a7322a10ab791de755c950a56744a12e7
41944194
arch: aarch64
41954195
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
41964196
timeout_minutes: 300

.github/workflows/pull_request.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4134,7 +4134,7 @@ jobs:
41344134
secrets: inherit
41354135
with:
41364136
runner_type: altinity-on-demand, altinity-regression-tester
4137-
commit: 3fbe58a0ebe8fa5f97b7f36c45a2a69b1d3b6568
4137+
commit: fc19ce3a7322a10ab791de755c950a56744a12e7
41384138
arch: release
41394139
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
41404140
timeout_minutes: 300
@@ -4146,7 +4146,7 @@ jobs:
41464146
secrets: inherit
41474147
with:
41484148
runner_type: altinity-on-demand, altinity-regression-tester-aarch64
4149-
commit: 3fbe58a0ebe8fa5f97b7f36c45a2a69b1d3b6568
4149+
commit: fc19ce3a7322a10ab791de755c950a56744a12e7
41504150
arch: aarch64
41514151
build_sha: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
41524152
timeout_minutes: 300

.gitmodules

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
url = https://github.com/Thalhammer/jwt-cpp
77
[submodule "contrib/zstd"]
88
path = contrib/zstd
9-
url = https://github.com/facebook/zstd
9+
url = https://github.com/ClickHouse/zstd.git
1010
[submodule "contrib/lz4"]
1111
path = contrib/lz4
1212
url = https://github.com/lz4/lz4
@@ -45,7 +45,7 @@
4545
url = https://github.com/ClickHouse/arrow
4646
[submodule "contrib/thrift"]
4747
path = contrib/thrift
48-
url = https://github.com/apache/thrift
48+
url = https://github.com/ClickHouse/thrift.git
4949
[submodule "contrib/libhdfs3"]
5050
path = contrib/libhdfs3
5151
url = https://github.com/ClickHouse/libhdfs3

ci/praktika/native_jobs.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from .runtime import RunConfig
1919
from .settings import Settings
2020
from .utils import Shell, Utils
21+
from ci.defs.defs import ArtifactNames
2122

2223
assert Settings.CI_CONFIG_RUNS_ON
2324

@@ -403,17 +404,22 @@ def check_affected_jobs():
403404
# NOTE (strtgbb): We always want these build artifacts for our report and regression tests.
404405
# If we make FinishCIReport and regression tests into praktika jobs, we can remove this.
405406
if "CIReport" in workflow.additional_jobs:
406-
all_required_artifacts.update(["CH_AMD_RELEASE", "CH_ARM_RELEASE"])
407+
all_required_artifacts.update(
408+
[
409+
ArtifactNames.CH_AMD_RELEASE,
410+
ArtifactNames.CH_ARM_RELEASE,
411+
]
412+
)
407413
if (
408414
"Regression" in workflow.additional_jobs
409415
and "regression"
410416
not in workflow_config.custom_data.get("ci_exclude_tags", [])
411417
):
412-
all_required_artifacts.update(["CH_AMD_BINARY"])
418+
all_required_artifacts.update([ArtifactNames.CH_AMD_BINARY])
413419
if "aarch64" not in workflow_config.custom_data.get(
414420
"ci_exclude_tags", []
415421
):
416-
all_required_artifacts.update(["CH_ARM_BINARY"])
422+
all_required_artifacts.update([ArtifactNames.CH_ARM_BINARY])
417423
print(f"Including artifacts for custom jobs [{all_required_artifacts}]")
418424

419425
for job in workflow.jobs:

ci/praktika/yaml_additional_templates.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class AltinityWorkflowTemplates:
3535
echo "Workflow Run Report: [View Report]($REPORT_LINK)" >> $GITHUB_STEP_SUMMARY
3636
"""
3737
# Additional jobs
38-
REGRESSION_HASH = "3fbe58a0ebe8fa5f97b7f36c45a2a69b1d3b6568"
38+
REGRESSION_HASH = "fc19ce3a7322a10ab791de755c950a56744a12e7"
3939
ALTINITY_JOBS = {
4040
"GrypeScan": r"""
4141
GrypeScanServer:

src/Client/MultiplexedConnections.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,7 +232,7 @@ void MultiplexedConnections::sendIgnoredPartUUIDs(const std::vector<UUID> & uuid
232232
void MultiplexedConnections::sendClusterFunctionReadTaskResponse(const ClusterFunctionReadTaskResponse & response)
233233
{
234234
std::lock_guard lock(cancel_mutex);
235-
if (cancelled)
235+
if (cancelled || !current_connection || !current_connection->isConnected())
236236
return;
237237
current_connection->sendClusterFunctionReadTaskResponse(response);
238238
}
@@ -241,7 +241,7 @@ void MultiplexedConnections::sendClusterFunctionReadTaskResponse(const ClusterFu
241241
void MultiplexedConnections::sendMergeTreeReadTaskResponse(const ParallelReadResponse & response)
242242
{
243243
std::lock_guard lock(cancel_mutex);
244-
if (cancelled)
244+
if (cancelled || !current_connection || !current_connection->isConnected())
245245
return;
246246
current_connection->sendMergeTreeReadTaskResponse(response);
247247
}
@@ -527,9 +527,12 @@ MultiplexedConnections::ReplicaState & MultiplexedConnections::getReplicaForRead
527527

528528
void MultiplexedConnections::invalidateReplica(ReplicaState & state)
529529
{
530+
Connection * old_connection = state.connection;
530531
state.connection = nullptr;
531532
state.pool_entry = IConnectionPool::Entry();
532533
--active_connection_count;
534+
if (current_connection == old_connection)
535+
current_connection = nullptr;
533536
}
534537

535538
void MultiplexedConnections::setAsyncCallback(AsyncCallback async_callback)

src/Common/ProfileEvents.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,11 @@
299299
M(IcebergTrivialCountOptimizationApplied, "Trivial count optimization applied while reading from Iceberg", ValueType::Number) \
300300
M(IcebergVersionHintUsed, "Number of times version-hint.text has been used.", ValueType::Number) \
301301
M(IcebergMinMaxIndexPrunedFiles, "Number of skipped files by using MinMax index in Iceberg", ValueType::Number) \
302+
M(IcebergAvroFileParsing, "Number of times avro metadata files have been parsed.", ValueType::Number) \
303+
M(IcebergAvroFileParsingMicroseconds, "Time spent for parsing avro metadata files for Iceberg tables.", ValueType::Microseconds) \
304+
M(IcebergJsonFileParsing, "Number of times json metadata files have been parsed.", ValueType::Number) \
305+
M(IcebergJsonFileParsingMicroseconds, "Time spent for parsing json metadata files for Iceberg tables.", ValueType::Microseconds) \
306+
\
302307
M(JoinBuildTableRowCount, "Total number of rows in the build table for a JOIN operation.", ValueType::Number) \
303308
M(JoinProbeTableRowCount, "Total number of rows in the probe table for a JOIN operation.", ValueType::Number) \
304309
M(JoinResultRowCount, "Total number of rows in the result of a JOIN operation.", ValueType::Number) \
@@ -580,7 +585,9 @@ The server successfully detected this situation and will download merged part fr
580585
M(S3DeleteObjects, "Number of S3 API DeleteObject(s) calls.", ValueType::Number) \
581586
M(S3CopyObject, "Number of S3 API CopyObject calls.", ValueType::Number) \
582587
M(S3ListObjects, "Number of S3 API ListObjects calls.", ValueType::Number) \
588+
M(S3ListObjectsMicroseconds, "Time of S3 API ListObjects execution.", ValueType::Microseconds) \
583589
M(S3HeadObject, "Number of S3 API HeadObject calls.", ValueType::Number) \
590+
M(S3HeadObjectMicroseconds, "Time of S3 API HeadObject execution.", ValueType::Microseconds) \
584591
M(S3GetObjectAttributes, "Number of S3 API GetObjectAttributes calls.", ValueType::Number) \
585592
M(S3CreateMultipartUpload, "Number of S3 API CreateMultipartUpload calls.", ValueType::Number) \
586593
M(S3UploadPartCopy, "Number of S3 API UploadPartCopy calls.", ValueType::Number) \
@@ -634,6 +641,7 @@ The server successfully detected this situation and will download merged part fr
634641
M(AzureCopyObject, "Number of Azure blob storage API CopyObject calls", ValueType::Number) \
635642
M(AzureDeleteObjects, "Number of Azure blob storage API DeleteObject(s) calls.", ValueType::Number) \
636643
M(AzureListObjects, "Number of Azure blob storage API ListObjects calls.", ValueType::Number) \
644+
M(AzureListObjectsMicroseconds, "Time of Azure blob storage API ListObjects execution.", ValueType::Microseconds) \
637645
M(AzureGetProperties, "Number of Azure blob storage API GetProperties calls.", ValueType::Number) \
638646
M(AzureCreateContainer, "Number of Azure blob storage API CreateContainer calls.", ValueType::Number) \
639647
\

src/Core/Settings.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6873,6 +6873,16 @@ Use roaring bitmap for iceberg positional deletes.
68736873
)", 0) \
68746874
DECLARE(Bool, export_merge_tree_part_overwrite_file_if_exists, false, R"(
68756875
Overwrite file if it already exists when exporting a merge tree part
6876+
)", 0) \
6877+
DECLARE(Timezone, iceberg_timezone_for_timestamptz, "UTC", R"(
6878+
Timezone for Iceberg timestamptz field.
6879+
6880+
Possible values:
6881+
6882+
- Any valid timezone, e.g. `Europe/Berlin`, `UTC` or `Zulu`
6883+
- `` (empty value) - use session timezone
6884+
6885+
Default value is `UTC`.
68766886
)", 0) \
68776887
\
68786888
/* ####################################################### */ \

src/Core/SettingsChangesHistory.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ const VersionToSettingsChangesMap & getSettingsChangesHistory()
4949
{"allow_experimental_export_merge_tree_part", false, false, "New setting."},
5050
{"export_merge_tree_part_overwrite_file_if_exists", false, false, "New setting."},
5151
{"allow_experimental_export_merge_tree_part", false, true, "Turned ON by default for Antalya."},
52+
{"iceberg_timezone_for_timestamptz", "UTC", "UTC", "New setting."}
5253
});
5354
addSettingsChanges(settings_changes_history, "25.8",
5455
{

src/Databases/DataLake/Common.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,14 @@ std::vector<String> splitTypeArguments(const String & type_str)
6161
return args;
6262
}
6363

64-
DB::DataTypePtr getType(const String & type_name, bool nullable, const String & prefix)
64+
DB::DataTypePtr getType(const String & type_name, bool nullable, DB::ContextPtr context, const String & prefix)
6565
{
6666
String name = trim(type_name);
6767

6868
if (name.starts_with("array<") && name.ends_with(">"))
6969
{
7070
String inner = name.substr(6, name.size() - 7);
71-
return std::make_shared<DB::DataTypeArray>(getType(inner, nullable));
71+
return std::make_shared<DB::DataTypeArray>(getType(inner, nullable, context));
7272
}
7373

7474
if (name.starts_with("map<") && name.ends_with(">"))
@@ -79,7 +79,7 @@ DB::DataTypePtr getType(const String & type_name, bool nullable, const String &
7979
if (args.size() != 2)
8080
throw DB::Exception(DB::ErrorCodes::DATALAKE_DATABASE_ERROR, "Invalid data type {}", type_name);
8181

82-
return std::make_shared<DB::DataTypeMap>(getType(args[0], false), getType(args[1], nullable));
82+
return std::make_shared<DB::DataTypeMap>(getType(args[0], false, context), getType(args[1], nullable, context));
8383
}
8484

8585
if (name.starts_with("struct<") && name.ends_with(">"))
@@ -101,13 +101,13 @@ DB::DataTypePtr getType(const String & type_name, bool nullable, const String &
101101
String full_field_name = prefix.empty() ? field_name : prefix + "." + field_name;
102102

103103
field_names.push_back(full_field_name);
104-
field_types.push_back(getType(field_type, nullable, full_field_name));
104+
field_types.push_back(getType(field_type, nullable, context, full_field_name));
105105
}
106106
return std::make_shared<DB::DataTypeTuple>(field_types, field_names);
107107
}
108108

109-
return nullable ? DB::makeNullable(DB::Iceberg::IcebergSchemaProcessor::getSimpleType(name))
110-
: DB::Iceberg::IcebergSchemaProcessor::getSimpleType(name);
109+
return nullable ? DB::makeNullable(DB::Iceberg::IcebergSchemaProcessor::getSimpleType(name, context))
110+
: DB::Iceberg::IcebergSchemaProcessor::getSimpleType(name, context);
111111
}
112112

113113
std::pair<std::string, std::string> parseTableName(const std::string & name)

0 commit comments

Comments
 (0)