提交 53341036 编写于 作者: A alesapin

More usage of StorageInMemoryMetadata

上级 2d40b331
......@@ -605,6 +605,11 @@ void AlterCommands::prepare(const StorageInMemoryMetadata & metadata, const Cont
{
if (!command)
{
#if !__clang__
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wmissing-field-initializers"
#endif
/// We completely sure, that we initialize all required fields
AlterCommand aux_command{
.type = AlterCommand::MODIFY_COLUMN,
.column_name = column.name,
......@@ -612,6 +617,10 @@ void AlterCommands::prepare(const StorageInMemoryMetadata & metadata, const Cont
.default_kind = column.default_desc.kind,
.default_expression = column.default_desc.expression
};
#if !__clang__
# pragma GCC diagnostic pop
#endif
/// column has no associated alter command, let's create it
/// add a new alter command to modify existing column
this->emplace_back(aux_command);
......
......@@ -41,7 +41,7 @@ struct AlterCommand
String partition_name;
/// For ADD and MODIFY, a new column type.
DataTypePtr data_type;
DataTypePtr data_type = nullptr;
ColumnDefaultKind default_kind{};
ASTPtr default_expression{};
......@@ -59,29 +59,29 @@ struct AlterCommand
bool if_not_exists = false;
/// For MODIFY_ORDER_BY
ASTPtr order_by;
ASTPtr order_by = nullptr;
/// For ADD INDEX
ASTPtr index_decl;
ASTPtr index_decl = nullptr;
String after_index_name;
/// For ADD/DROP INDEX
String index_name;
// For ADD CONSTRAINT
ASTPtr constraint_decl;
ASTPtr constraint_decl = nullptr;
// For ADD/DROP CONSTRAINT
String constraint_name;
/// For MODIFY TTL
ASTPtr ttl;
ASTPtr ttl = nullptr;
/// indicates that this command should not be applied, for example in case of if_exists=true and column doesn't exist.
bool ignore = false;
/// For ADD and MODIFY
CompressionCodecPtr codec;
CompressionCodecPtr codec = nullptr;
/// For MODIFY SETTING
SettingsChanges settings_changes;
......
......@@ -1452,8 +1452,7 @@ void MergeTreeData::checkAlterIsPossible(const AlterCommands & commands, const S
}
}
setProperties(metadata.order_by_ast, metadata.primary_key_ast,
metadata.columns, metadata.indices, metadata.constraints, /* only_check = */ true);
setProperties(metadata, /* only_check = */ true);
setTTLExpressions(metadata.columns.getColumnTTLs(), metadata.ttl_for_table_ast, /* only_check = */ true);
......
......@@ -643,16 +643,15 @@ static StoragePtr create(const StorageFactory::Arguments & args)
throw Exception("You must set the setting `allow_experimental_data_skipping_indices` to 1 " \
"before using data skipping indices.", ErrorCodes::BAD_ARGUMENTS);
StorageInMemoryMetadata metadata
{
StorageInMemoryMetadata metadata{
.columns = args.columns,
.indices = indices_description,
.constraints = args.constraints,
.partition_by_ast = partition_by_ast,
.order_by_ast = order_by_ast,
.primary_key_ast = primary_key_ast,
.sample_by_ast = sample_by_ast,
.ttl_for_table_ast = ttl_table_ast,
.sample_by_ast = sample_by_ast,
.settings_ast = settings_ast,
};
if (replicated)
......@@ -663,7 +662,7 @@ static StoragePtr create(const StorageFactory::Arguments & args)
else
return StorageMergeTree::create(
args.database_name, args.table_name, args.relative_data_path, metadata, args.attach, args.context,
date_column_name, partition_by_ast, order_by_ast, merging_params, std::move(storage_settings),
date_column_name, merging_params, std::move(storage_settings),
args.has_force_restore_data_flag);
}
......
......@@ -35,7 +35,4 @@ struct StorageInMemoryMetadata
ASTPtr settings_ast = nullptr;
};
ASTPtr metadataToAST(const StorageInMemoryMetadata & metadata);
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册