mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-20 08:40:50 +00:00
forward ALTER PARTITION statements for materialized views [#CLICKHOUSE-3659]
This commit is contained in:
parent
b1274f7b34
commit
86d53b34a5
@ -204,11 +204,44 @@ void StorageMaterializedView::drop()
|
||||
}
|
||||
}
|
||||
|
||||
void StorageMaterializedView::checkStatementCanBeForwarded() const
|
||||
{
|
||||
if (!has_inner_table)
|
||||
throw Exception(
|
||||
"MATERIALIZED VIEW targets existing table " + target_database_name + "." + target_table_name + ". "
|
||||
+ "Execute the statement directly on it.", ErrorCodes::INCORRECT_QUERY);
|
||||
}
|
||||
|
||||
bool StorageMaterializedView::optimize(const ASTPtr & query, const ASTPtr & partition, bool final, bool deduplicate, const Context & context)
|
||||
{
|
||||
checkStatementCanBeForwarded();
|
||||
return getTargetTable()->optimize(query, partition, final, deduplicate, context);
|
||||
}
|
||||
|
||||
void StorageMaterializedView::dropPartition(const ASTPtr & query, const ASTPtr & partition, bool detach, const Context & context)
|
||||
{
|
||||
checkStatementCanBeForwarded();
|
||||
getTargetTable()->dropPartition(query, partition, detach, context);
|
||||
}
|
||||
|
||||
void StorageMaterializedView::clearColumnInPartition(const ASTPtr & partition, const Field & column_name, const Context & context)
|
||||
{
|
||||
checkStatementCanBeForwarded();
|
||||
getTargetTable()->clearColumnInPartition(partition, column_name, context);
|
||||
}
|
||||
|
||||
void StorageMaterializedView::attachPartition(const ASTPtr & partition, bool part, const Context & context)
|
||||
{
|
||||
checkStatementCanBeForwarded();
|
||||
getTargetTable()->attachPartition(partition, part, context);
|
||||
}
|
||||
|
||||
void StorageMaterializedView::freezePartition(const ASTPtr & partition, const String & with_name, const Context & context)
|
||||
{
|
||||
checkStatementCanBeForwarded();
|
||||
getTargetTable()->freezePartition(partition, with_name, context);
|
||||
}
|
||||
|
||||
void StorageMaterializedView::shutdown()
|
||||
{
|
||||
/// Make sure the dependency is removed after DETACH TABLE
|
||||
|
@ -18,7 +18,6 @@ public:
|
||||
std::string getName() const override { return "MaterializedView"; }
|
||||
std::string getTableName() const override { return table_name; }
|
||||
ASTPtr getInnerQuery() const { return inner_query->clone(); };
|
||||
StoragePtr getTargetTable() const;
|
||||
|
||||
NameAndTypePair getColumn(const String & column_name) const override;
|
||||
bool hasColumn(const String & column_name) const override;
|
||||
@ -31,7 +30,14 @@ public:
|
||||
|
||||
BlockOutputStreamPtr write(const ASTPtr & query, const Settings & settings) override;
|
||||
void drop() override;
|
||||
|
||||
bool optimize(const ASTPtr & query, const ASTPtr & partition, bool final, bool deduplicate, const Context & context) override;
|
||||
|
||||
void dropPartition(const ASTPtr & query, const ASTPtr & partition, bool detach, const Context & context) override;
|
||||
void clearColumnInPartition(const ASTPtr & partition, const Field & column_name, const Context & context) override;
|
||||
void attachPartition(const ASTPtr & partition, bool part, const Context & context) override;
|
||||
void freezePartition(const ASTPtr & partition, const String & with_name, const Context & context) override;
|
||||
|
||||
void shutdown() override;
|
||||
bool checkTableCanBeDropped() const override;
|
||||
|
||||
@ -56,6 +62,10 @@ private:
|
||||
Context & global_context;
|
||||
bool has_inner_table = false;
|
||||
|
||||
StoragePtr getTargetTable() const;
|
||||
|
||||
void checkStatementCanBeForwarded() const;
|
||||
|
||||
protected:
|
||||
StorageMaterializedView(
|
||||
const String & table_name_,
|
||||
|
Loading…
Reference in New Issue
Block a user