mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-04 23:50:50 +00:00
Better getVirtuals method
This commit is contained in:
parent
33c27de54d
commit
ef8781cce7
@ -38,10 +38,10 @@ const ColumnsDescription & IStorage::getColumns() const
|
||||
}
|
||||
|
||||
|
||||
bool IStorage::isVirtualColumn(const String & column_name) const
|
||||
bool IStorage::isVirtualColumn(const String & column_name, const StorageMetadataPtr & metadata_snapshot) const
|
||||
{
|
||||
/// Virtual column maybe overriden by real column
|
||||
return !getColumns().has(column_name) && getVirtuals().contains(column_name);
|
||||
return !metadata_snapshot->getColumns().has(column_name) && getVirtuals().contains(column_name);
|
||||
}
|
||||
|
||||
RWLockImpl::LockHolder IStorage::tryLockTimed(
|
||||
|
@ -159,7 +159,7 @@ protected:
|
||||
|
||||
/// Returns whether the column is virtual - by default all columns are real.
|
||||
/// Initially reserved virtual column name may be shadowed by real column.
|
||||
bool isVirtualColumn(const String & column_name) const;
|
||||
bool isVirtualColumn(const String & column_name, const StorageMetadataPtr & metadata_snapshot) const;
|
||||
|
||||
|
||||
private:
|
||||
|
@ -464,7 +464,7 @@ QueryProcessingStage::Enum StorageDistributed::getQueryProcessingStage(const Con
|
||||
|
||||
Pipes StorageDistributed::read(
|
||||
const Names & column_names,
|
||||
const StorageMetadataPtr & /*metadata_snapshot*/,
|
||||
const StorageMetadataPtr & metadata_snapshot,
|
||||
const SelectQueryInfo & query_info,
|
||||
const Context & context,
|
||||
QueryProcessingStage::Enum processed_stage,
|
||||
@ -497,7 +497,7 @@ Pipes StorageDistributed::read(
|
||||
const Scalars & scalars = context.hasQueryContext() ? context.getQueryContext().getScalars() : Scalars{};
|
||||
|
||||
bool has_virtual_shard_num_column = std::find(column_names.begin(), column_names.end(), "_shard_num") != column_names.end();
|
||||
if (has_virtual_shard_num_column && !isVirtualColumn("_shard_num"))
|
||||
if (has_virtual_shard_num_column && !isVirtualColumn("_shard_num", metadata_snapshot))
|
||||
has_virtual_shard_num_column = false;
|
||||
|
||||
ClusterProxy::SelectStreamFactory select_stream_factory = remote_table_function_ptr
|
||||
|
@ -146,7 +146,7 @@ Pipes StorageMerge::read(
|
||||
|
||||
for (const auto & column_name : column_names)
|
||||
{
|
||||
if (column_name == "_table" && isVirtualColumn(column_name))
|
||||
if (column_name == "_table" && isVirtualColumn(column_name, metadata_snapshot))
|
||||
has_table_virtual_column = true;
|
||||
else
|
||||
real_column_names.push_back(column_name);
|
||||
|
Loading…
Reference in New Issue
Block a user