mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-23 18:20:50 +00:00
Merge pull request #10459 from ClickHouse/refactor_istorage
Remove virtuals from IStorage as separate column
This commit is contained in:
commit
a2cb67c542
@ -31,7 +31,7 @@ namespace ErrorCodes
|
|||||||
extern const int DEADLOCK_AVOIDED;
|
extern const int DEADLOCK_AVOIDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
IStorage::IStorage(StorageID storage_id_, ColumnsDescription virtuals_) : storage_id(std::move(storage_id_)), virtuals(std::move(virtuals_))
|
IStorage::IStorage(StorageID storage_id_, ColumnsDescription virtuals_) : storage_id(std::move(storage_id_)), columns(std::move(virtuals_))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -40,11 +40,6 @@ const ColumnsDescription & IStorage::getColumns() const
|
|||||||
return columns;
|
return columns;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ColumnsDescription & IStorage::getVirtuals() const
|
|
||||||
{
|
|
||||||
return virtuals;
|
|
||||||
}
|
|
||||||
|
|
||||||
const IndicesDescription & IStorage::getIndices() const
|
const IndicesDescription & IStorage::getIndices() const
|
||||||
{
|
{
|
||||||
return indices;
|
return indices;
|
||||||
@ -296,9 +291,11 @@ void IStorage::setColumns(ColumnsDescription columns_)
|
|||||||
{
|
{
|
||||||
if (columns_.getOrdinary().empty())
|
if (columns_.getOrdinary().empty())
|
||||||
throw Exception("Empty list of columns passed", ErrorCodes::EMPTY_LIST_OF_COLUMNS_PASSED);
|
throw Exception("Empty list of columns passed", ErrorCodes::EMPTY_LIST_OF_COLUMNS_PASSED);
|
||||||
|
ColumnsDescription old_virtuals(columns.getVirtuals(), true);
|
||||||
|
|
||||||
columns = std::move(columns_);
|
columns = std::move(columns_);
|
||||||
|
|
||||||
for (const auto & column : virtuals)
|
for (const auto & column : old_virtuals)
|
||||||
{
|
{
|
||||||
if (!columns.has(column.name))
|
if (!columns.has(column.name))
|
||||||
columns.add(column);
|
columns.add(column);
|
||||||
|
@ -144,7 +144,6 @@ public:
|
|||||||
public: /// thread-unsafe part. lockStructure must be acquired
|
public: /// thread-unsafe part. lockStructure must be acquired
|
||||||
virtual const ColumnsDescription & getColumns() const; /// returns combined set of columns
|
virtual const ColumnsDescription & getColumns() const; /// returns combined set of columns
|
||||||
virtual void setColumns(ColumnsDescription columns_); /// sets only real columns, possibly overwrites virtual ones.
|
virtual void setColumns(ColumnsDescription columns_); /// sets only real columns, possibly overwrites virtual ones.
|
||||||
const ColumnsDescription & getVirtuals() const;
|
|
||||||
const IndicesDescription & getIndices() const;
|
const IndicesDescription & getIndices() const;
|
||||||
|
|
||||||
const ConstraintsDescription & getConstraints() const;
|
const ConstraintsDescription & getConstraints() const;
|
||||||
@ -184,14 +183,13 @@ protected: /// still thread-unsafe part.
|
|||||||
|
|
||||||
/// Returns whether the column is virtual - by default all columns are real.
|
/// Returns whether the column is virtual - by default all columns are real.
|
||||||
/// Initially reserved virtual column name may be shadowed by real column.
|
/// Initially reserved virtual column name may be shadowed by real column.
|
||||||
virtual bool isVirtualColumn(const String & column_name) const;
|
bool isVirtualColumn(const String & column_name) const;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
StorageID storage_id;
|
StorageID storage_id;
|
||||||
mutable std::mutex id_mutex;
|
mutable std::mutex id_mutex;
|
||||||
ColumnsDescription columns; /// combined real and virtual columns
|
ColumnsDescription columns; /// combined real and virtual columns
|
||||||
const ColumnsDescription virtuals = {};
|
|
||||||
IndicesDescription indices;
|
IndicesDescription indices;
|
||||||
ConstraintsDescription constraints;
|
ConstraintsDescription constraints;
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
StorageFromMergeTreeDataPart(const MergeTreeData::DataPartPtr & part_)
|
StorageFromMergeTreeDataPart(const MergeTreeData::DataPartPtr & part_)
|
||||||
: IStorage(getIDFromPart(part_), part_->storage.getVirtuals())
|
: IStorage(getIDFromPart(part_), ColumnsDescription(part_->storage.getColumns().getVirtuals(), true))
|
||||||
, part(part_)
|
, part(part_)
|
||||||
{
|
{
|
||||||
setColumns(part_->storage.getColumns());
|
setColumns(part_->storage.getColumns());
|
||||||
|
Loading…
Reference in New Issue
Block a user