Skip to content

Commit 09ab657

Browse files
authored
Merge pull request #1009 from Altinity/simple_export_part
simple export part
2 parents f19ba10 + 9140d43 commit 09ab657

File tree

60 files changed

+1117
-131
lines changed

Some content is hidden

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

60 files changed

+1117
-131
lines changed

src/Access/Common/AccessType.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ enum class AccessType : uint8_t
7474
enabled implicitly by the grant ALTER_TABLE */\
7575
M(ALTER_SETTINGS, "ALTER SETTING, ALTER MODIFY SETTING, MODIFY SETTING, RESET SETTING", TABLE, ALTER_TABLE) /* allows to execute ALTER MODIFY SETTING */\
7676
M(ALTER_MOVE_PARTITION, "ALTER MOVE PART, MOVE PARTITION, MOVE PART", TABLE, ALTER_TABLE) \
77+
M(ALTER_EXPORT_PART, "ALTER EXPORT PART, EXPORT PART", TABLE, ALTER_TABLE) \
7778
M(ALTER_FETCH_PARTITION, "ALTER FETCH PART, FETCH PARTITION", TABLE, ALTER_TABLE) \
7879
M(ALTER_FREEZE_PARTITION, "FREEZE PARTITION, UNFREEZE", TABLE, ALTER_TABLE) \
7980
M(ALTER_UNLOCK_SNAPSHOT, "UNLOCK SNAPSHOT", TABLE, ALTER_TABLE) \

src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ add_headers_and_sources(dbms Storages/ObjectStorage/Azure)
138138
add_headers_and_sources(dbms Storages/ObjectStorage/S3)
139139
add_headers_and_sources(dbms Storages/ObjectStorage/HDFS)
140140
add_headers_and_sources(dbms Storages/ObjectStorage/Local)
141+
add_headers_and_sources(dbms Storages/ObjectStorage/MergeTree)
141142
add_headers_and_sources(dbms Storages/ObjectStorage/DataLakes)
142143
add_headers_and_sources(dbms Storages/ObjectStorage/DataLakes/Iceberg)
143144
add_headers_and_sources(dbms Storages/ObjectStorage/DataLakes/DeltaLake)

src/Core/ServerSettings.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ namespace DB
9999
DECLARE(UInt64, max_unexpected_parts_loading_thread_pool_size, 8, R"(The number of threads to load inactive set of data parts (Unexpected ones) at startup.)", 0) \
100100
DECLARE(UInt64, max_parts_cleaning_thread_pool_size, 128, R"(The number of threads for concurrent removal of inactive data parts.)", 0) \
101101
DECLARE(UInt64, max_mutations_bandwidth_for_server, 0, R"(The maximum read speed of all mutations on server in bytes per second. Zero means unlimited.)", 0) \
102+
DECLARE(UInt64, max_exports_bandwidth_for_server, 0, R"(The maximum read speed of all exports on server in bytes per second. Zero means unlimited.)", 0) \
102103
DECLARE(UInt64, max_merges_bandwidth_for_server, 0, R"(The maximum read speed of all merges on server in bytes per second. Zero means unlimited.)", 0) \
103104
DECLARE(UInt64, max_replicated_fetches_network_bandwidth_for_server, 0, R"(The maximum speed of data exchange over the network in bytes per second for replicated fetches. Zero means unlimited.)", 0) \
104105
DECLARE(UInt64, max_replicated_sends_network_bandwidth_for_server, 0, R"(The maximum speed of data exchange over the network in bytes per second for replicated sends. Zero means unlimited.)", 0) \

src/Core/Settings.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6895,6 +6895,9 @@ Execute request to object storage as remote on one of object_storage_cluster nod
68956895
DECLARE_WITH_ALIAS(Bool, allow_experimental_time_series_aggregate_functions, false, R"(
68966896
Experimental timeSeries* aggregate functions for Prometheus-like timeseries resampling, rate, delta calculation.
68976897
)", EXPERIMENTAL, allow_experimental_ts_to_grid_aggregate_function) \
6898+
DECLARE_WITH_ALIAS(Bool, allow_experimental_export_merge_tree_part, false, R"(
6899+
Experimental export merge tree part.
6900+
)", EXPERIMENTAL, allow_experimental_export_merge_tree_part) \
68986901
\
68996902

69006903
/* ####################################################### */ \

src/Core/SettingsChangesHistory.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ const VersionToSettingsChangesMap & getSettingsChangesHistory()
7777
{"object_storage_cluster", "", "", "New setting"},
7878
{"object_storage_max_nodes", 0, 0, "New setting"},
7979
{"object_storage_remote_initiator", false, false, "New setting."},
80+
{"allow_experimental_export_merge_tree_part", false, false, "New setting."},
8081
});
8182
addSettingsChanges(settings_changes_history, "25.6",
8283
{

src/Databases/DatabaseReplicated.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2110,7 +2110,8 @@ bool DatabaseReplicated::shouldReplicateQuery(const ContextPtr & query_context,
21102110
if (const auto * alter = query_ptr->as<const ASTAlterQuery>())
21112111
{
21122112
if (alter->isAttachAlter() || alter->isFetchAlter() || alter->isDropPartitionAlter()
2113-
|| is_keeper_map_table(query_ptr) || alter->isFreezeAlter() || alter->isUnlockSnapshot())
2113+
|| is_keeper_map_table(query_ptr) || alter->isFreezeAlter() || alter->isUnlockSnapshot()
2114+
|| alter->isExportPartAlter())
21142115
return false;
21152116

21162117
if (has_many_shards() || !is_replicated_table(query_ptr))

src/Disks/ObjectStorages/IObjectStorage.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ struct RelativePathWithMetadata
138138
virtual ~RelativePathWithMetadata() = default;
139139

140140
virtual std::string getFileName() const { return std::filesystem::path(relative_path).filename(); }
141+
virtual std::string getFileNameWithoutExtension() const { return std::filesystem::path(relative_path).stem(); }
142+
141143
virtual std::string getPath() const { return relative_path; }
142144
virtual bool isArchive() const { return false; }
143145
virtual std::string getPathToArchive() const { throw Exception(ErrorCodes::LOGICAL_ERROR, "Not an archive"); }

src/Interpreters/Context.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,7 @@ namespace ServerSetting
289289
extern const ServerSettingsUInt64 max_local_write_bandwidth_for_server;
290290
extern const ServerSettingsUInt64 max_merges_bandwidth_for_server;
291291
extern const ServerSettingsUInt64 max_mutations_bandwidth_for_server;
292+
extern const ServerSettingsUInt64 max_exports_bandwidth_for_server;
292293
extern const ServerSettingsUInt64 max_remote_read_network_bandwidth_for_server;
293294
extern const ServerSettingsUInt64 max_remote_write_network_bandwidth_for_server;
294295
extern const ServerSettingsUInt64 max_replicated_fetches_network_bandwidth_for_server;
@@ -505,6 +506,8 @@ struct ContextSharedPart : boost::noncopyable
505506
mutable ThrottlerPtr mutations_throttler; /// A server-wide throttler for mutations
506507
mutable ThrottlerPtr merges_throttler; /// A server-wide throttler for merges
507508

509+
mutable ThrottlerPtr exports_throttler; /// A server-wide throttler for exports
510+
508511
MultiVersion<Macros> macros; /// Substitutions extracted from config.
509512
std::unique_ptr<DDLWorker> ddl_worker TSA_GUARDED_BY(mutex); /// Process ddl commands from zk.
510513
LoadTaskPtr ddl_worker_startup_task; /// To postpone `ddl_worker->startup()` after all tables startup
@@ -996,6 +999,9 @@ struct ContextSharedPart : boost::noncopyable
996999

9971000
if (auto bandwidth = server_settings[ServerSetting::max_merges_bandwidth_for_server])
9981001
merges_throttler = std::make_shared<Throttler>(bandwidth);
1002+
1003+
if (auto bandwidth = server_settings[ServerSetting::max_exports_bandwidth_for_server])
1004+
exports_throttler = std::make_shared<Throttler>(bandwidth);
9991005
}
10001006
};
10011007

@@ -4048,6 +4054,11 @@ ThrottlerPtr Context::getMergesThrottler() const
40484054
return shared->merges_throttler;
40494055
}
40504056

4057+
ThrottlerPtr Context::getExportsThrottler() const
4058+
{
4059+
return shared->exports_throttler;
4060+
}
4061+
40514062
void Context::reloadRemoteThrottlerConfig(size_t read_bandwidth, size_t write_bandwidth) const
40524063
{
40534064
if (read_bandwidth)

src/Interpreters/Context.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1646,6 +1646,7 @@ class Context: public ContextData, public std::enable_shared_from_this<Context>
16461646

16471647
ThrottlerPtr getMutationsThrottler() const;
16481648
ThrottlerPtr getMergesThrottler() const;
1649+
ThrottlerPtr getExportsThrottler() const;
16491650

16501651
void reloadRemoteThrottlerConfig(size_t read_bandwidth, size_t write_bandwidth) const;
16511652
void reloadLocalThrottlerConfig(size_t read_bandwidth, size_t write_bandwidth) const;

src/Interpreters/DDLWorker.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -747,7 +747,8 @@ bool DDLWorker::taskShouldBeExecutedOnLeader(const ASTPtr & ast_ddl, const Stora
747747
alter->isFreezeAlter() ||
748748
alter->isUnlockSnapshot() ||
749749
alter->isMovePartitionToDiskOrVolumeAlter() ||
750-
alter->isCommentAlter())
750+
alter->isCommentAlter() ||
751+
alter->isExportPartAlter())
751752
return false;
752753
}
753754

0 commit comments

Comments
 (0)