mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-10-05 08:00:51 +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
|
/// 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(
|
RWLockImpl::LockHolder IStorage::tryLockTimed(
|
||||||
|
@ -159,7 +159,7 @@ protected:
|
|||||||
|
|
||||||
/// 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.
|
||||||
bool isVirtualColumn(const String & column_name) const;
|
bool isVirtualColumn(const String & column_name, const StorageMetadataPtr & metadata_snapshot) const;
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -464,7 +464,7 @@ QueryProcessingStage::Enum StorageDistributed::getQueryProcessingStage(const Con
|
|||||||
|
|
||||||
Pipes StorageDistributed::read(
|
Pipes StorageDistributed::read(
|
||||||
const Names & column_names,
|
const Names & column_names,
|
||||||
const StorageMetadataPtr & /*metadata_snapshot*/,
|
const StorageMetadataPtr & metadata_snapshot,
|
||||||
const SelectQueryInfo & query_info,
|
const SelectQueryInfo & query_info,
|
||||||
const Context & context,
|
const Context & context,
|
||||||
QueryProcessingStage::Enum processed_stage,
|
QueryProcessingStage::Enum processed_stage,
|
||||||
@ -497,7 +497,7 @@ Pipes StorageDistributed::read(
|
|||||||
const Scalars & scalars = context.hasQueryContext() ? context.getQueryContext().getScalars() : Scalars{};
|
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();
|
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;
|
has_virtual_shard_num_column = false;
|
||||||
|
|
||||||
ClusterProxy::SelectStreamFactory select_stream_factory = remote_table_function_ptr
|
ClusterProxy::SelectStreamFactory select_stream_factory = remote_table_function_ptr
|
||||||
|
@ -146,7 +146,7 @@ Pipes StorageMerge::read(
|
|||||||
|
|
||||||
for (const auto & column_name : column_names)
|
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;
|
has_table_virtual_column = true;
|
||||||
else
|
else
|
||||||
real_column_names.push_back(column_name);
|
real_column_names.push_back(column_name);
|
||||||
|
Loading…
Reference in New Issue
Block a user