mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 10:02:01 +00:00
Fix inconsistency in zookeeper metadata and disable adaptive granularity for old format
This commit is contained in:
parent
e73cdbae90
commit
3a4dcfbacd
@ -106,7 +106,6 @@ MergeTreeData::MergeTreeData(
|
|||||||
bool attach,
|
bool attach,
|
||||||
BrokenPartCallback broken_part_callback_)
|
BrokenPartCallback broken_part_callback_)
|
||||||
: global_context(context_),
|
: global_context(context_),
|
||||||
index_granularity_info(settings_, full_path_),
|
|
||||||
merging_params(merging_params_),
|
merging_params(merging_params_),
|
||||||
settings(settings_),
|
settings(settings_),
|
||||||
partition_by_ast(partition_by_ast_),
|
partition_by_ast(partition_by_ast_),
|
||||||
@ -198,7 +197,7 @@ MergeTreeData::MergeTreeData(
|
|||||||
"MergeTree data format version on disk doesn't support custom partitioning",
|
"MergeTree data format version on disk doesn't support custom partitioning",
|
||||||
ErrorCodes::METADATA_MISMATCH);
|
ErrorCodes::METADATA_MISMATCH);
|
||||||
}
|
}
|
||||||
|
index_granularity_info.init(settings, format_version, full_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -226,23 +225,27 @@ std::optional<std::string> MergeTreeData::IndexGranularityInfo::getMrkExtensionF
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
MergeTreeData::IndexGranularityInfo::IndexGranularityInfo(const MergeTreeSettings & settings, const std::string & full_path)
|
void MergeTreeData::IndexGranularityInfo::init(
|
||||||
: fixed_index_granularity(settings.index_granularity)
|
const MergeTreeSettings & settings,
|
||||||
, index_granularity_bytes(settings.index_granularity_bytes)
|
const MergeTreeDataFormatVersion & format_version,
|
||||||
|
const std::string & full_path)
|
||||||
{
|
{
|
||||||
|
fixed_index_granularity = settings.index_granularity;
|
||||||
auto mrk_ext = getMrkExtensionFromFS(full_path);
|
auto mrk_ext = getMrkExtensionFromFS(full_path);
|
||||||
/// Granularity is fixed
|
/// Granularity is fixed
|
||||||
if (index_granularity_bytes == 0 || (mrk_ext && *mrk_ext == "mrk"))
|
if (index_granularity_bytes == 0 || (mrk_ext && *mrk_ext == "mrk") || format_version < MERGE_TREE_DATA_MIN_FORMAT_VERSION_WITH_CUSTOM_PARTITIONING)
|
||||||
{
|
{
|
||||||
is_adaptive = false;
|
is_adaptive = false;
|
||||||
mark_size_in_bytes = sizeof(UInt64) * 2;
|
mark_size_in_bytes = sizeof(UInt64) * 2;
|
||||||
marks_file_extension = ".mrk";
|
marks_file_extension = ".mrk";
|
||||||
|
index_granularity_bytes = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
is_adaptive = true;
|
is_adaptive = true;
|
||||||
mark_size_in_bytes = sizeof(UInt64) * 3;
|
mark_size_in_bytes = sizeof(UInt64) * 3;
|
||||||
marks_file_extension = ".mrk2";
|
marks_file_extension = ".mrk2";
|
||||||
|
index_granularity_bytes = settings.index_granularity_bytes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -304,7 +304,7 @@ public:
|
|||||||
/// Approximate bytes size of one granule
|
/// Approximate bytes size of one granule
|
||||||
size_t index_granularity_bytes;
|
size_t index_granularity_bytes;
|
||||||
|
|
||||||
IndexGranularityInfo(const MergeTreeSettings & settings, const std::string & full_path);
|
void init(const MergeTreeSettings & settings, const MergeTreeDataFormatVersion & format_version, const std::string & full_path);
|
||||||
|
|
||||||
String getMarksFilePath(const String & column_path) const
|
String getMarksFilePath(const String & column_path) const
|
||||||
{
|
{
|
||||||
|
@ -45,9 +45,9 @@ ReplicatedMergeTreeTableMetadata::ReplicatedMergeTreeTableMetadata(const MergeTr
|
|||||||
if (data.format_version >= MERGE_TREE_DATA_MIN_FORMAT_VERSION_WITH_CUSTOM_PARTITIONING)
|
if (data.format_version >= MERGE_TREE_DATA_MIN_FORMAT_VERSION_WITH_CUSTOM_PARTITIONING)
|
||||||
partition_key = formattedAST(MergeTreeData::extractKeyExpressionList(data.partition_by_ast));
|
partition_key = formattedAST(MergeTreeData::extractKeyExpressionList(data.partition_by_ast));
|
||||||
|
|
||||||
|
ttl_table = formattedAST(data.ttl_table_ast);
|
||||||
skip_indices = data.getIndices().toString();
|
skip_indices = data.getIndices().toString();
|
||||||
index_granularity_bytes = data.index_granularity_info.index_granularity_bytes;
|
index_granularity_bytes = data.index_granularity_info.index_granularity_bytes;
|
||||||
ttl_table = formattedAST(data.ttl_table_ast);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ReplicatedMergeTreeTableMetadata::write(WriteBuffer & out) const
|
void ReplicatedMergeTreeTableMetadata::write(WriteBuffer & out) const
|
||||||
@ -107,6 +107,9 @@ void ReplicatedMergeTreeTableMetadata::read(ReadBuffer & in)
|
|||||||
if (checkString("sorting key: ", in))
|
if (checkString("sorting key: ", in))
|
||||||
in >> sorting_key >> "\n";
|
in >> sorting_key >> "\n";
|
||||||
|
|
||||||
|
if (checkString("ttl: ", in))
|
||||||
|
in >> ttl_table >> "\n";
|
||||||
|
|
||||||
if (checkString("indices: ", in))
|
if (checkString("indices: ", in))
|
||||||
in >> skip_indices >> "\n";
|
in >> skip_indices >> "\n";
|
||||||
|
|
||||||
@ -115,8 +118,6 @@ void ReplicatedMergeTreeTableMetadata::read(ReadBuffer & in)
|
|||||||
else
|
else
|
||||||
index_granularity_bytes = 0;
|
index_granularity_bytes = 0;
|
||||||
|
|
||||||
if (checkString("ttl: ", in))
|
|
||||||
in >> ttl_table >> "\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ReplicatedMergeTreeTableMetadata ReplicatedMergeTreeTableMetadata::parse(const String & s)
|
ReplicatedMergeTreeTableMetadata ReplicatedMergeTreeTableMetadata::parse(const String & s)
|
||||||
|
Loading…
Reference in New Issue
Block a user