Skip to content

Commit 872f4c0

Browse files
committed
More virtual methods for StorageObjectStorageCluster
1 parent 10f1a23 commit 872f4c0

File tree

3 files changed

+89
-1
lines changed

3 files changed

+89
-1
lines changed

src/Storages/IStorage.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,7 @@ class IStorage : public std::enable_shared_from_this<IStorage>, public TypePromo
412412
size_t /*max_block_size*/,
413413
size_t /*num_streams*/);
414414

415+
public:
415416
/// Should we process blocks of data returned by the storage in parallel
416417
/// even when the storage returned only one stream of data for reading?
417418
/// It is beneficial, for example, when you read from a file quickly,
@@ -422,7 +423,6 @@ class IStorage : public std::enable_shared_from_this<IStorage>, public TypePromo
422423
/// useless).
423424
virtual bool parallelizeOutputAfterReading(ContextPtr) const { return !isSystemStorage(); }
424425

425-
public:
426426
/// Other version of read which adds reading step to query plan.
427427
/// Default implementation creates ReadFromStorageStep and uses usual read.
428428
/// Can be called after `shutdown`, but not after `drop`.

src/Storages/ObjectStorage/StorageObjectStorageCluster.cpp

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -924,4 +924,74 @@ bool StorageObjectStorageCluster::prefersLargeBlocks() const
924924
return IStorageCluster::prefersLargeBlocks();
925925
}
926926

927+
bool StorageObjectStorageCluster::supportsPartitionBy() const
928+
{
929+
if (pure_storage)
930+
return pure_storage->supportsPartitionBy();
931+
return IStorageCluster::supportsPartitionBy();
932+
}
933+
934+
bool StorageObjectStorageCluster::supportsSubcolumns() const
935+
{
936+
if (pure_storage)
937+
return pure_storage->supportsSubcolumns();
938+
return IStorageCluster::supportsSubcolumns();
939+
}
940+
941+
bool StorageObjectStorageCluster::supportsDynamicSubcolumns() const
942+
{
943+
if (pure_storage)
944+
return pure_storage->supportsDynamicSubcolumns();
945+
return IStorageCluster::supportsDynamicSubcolumns();
946+
}
947+
948+
bool StorageObjectStorageCluster::supportsTrivialCountOptimization(const StorageSnapshotPtr & snapshot, ContextPtr context) const
949+
{
950+
if (pure_storage)
951+
return pure_storage->supportsTrivialCountOptimization(snapshot, context);
952+
return IStorageCluster::supportsTrivialCountOptimization(snapshot, context);
953+
}
954+
955+
bool StorageObjectStorageCluster::supportsPrewhere() const
956+
{
957+
if (pure_storage)
958+
return pure_storage->supportsPrewhere();
959+
return IStorageCluster::supportsPrewhere();
960+
}
961+
962+
bool StorageObjectStorageCluster::canMoveConditionsToPrewhere() const
963+
{
964+
if (pure_storage)
965+
return pure_storage->canMoveConditionsToPrewhere();
966+
return IStorageCluster::canMoveConditionsToPrewhere();
967+
}
968+
969+
std::optional<NameSet> StorageObjectStorageCluster::supportedPrewhereColumns() const
970+
{
971+
if (pure_storage)
972+
return pure_storage->supportedPrewhereColumns();
973+
return IStorageCluster::supportedPrewhereColumns();
974+
}
975+
976+
IStorageCluster::ColumnSizeByName StorageObjectStorageCluster::getColumnSizes() const
977+
{
978+
if (pure_storage)
979+
return pure_storage->getColumnSizes();
980+
return IStorageCluster::getColumnSizes();
981+
}
982+
983+
bool StorageObjectStorageCluster::parallelizeOutputAfterReading(ContextPtr context) const
984+
{
985+
if (pure_storage)
986+
return pure_storage->parallelizeOutputAfterReading(context);
987+
return IStorageCluster::parallelizeOutputAfterReading(context);
988+
}
989+
990+
bool StorageObjectStorageCluster::supportsDelete() const
991+
{
992+
if (pure_storage)
993+
return pure_storage->supportsDelete();
994+
return IStorageCluster::supportsDelete();
995+
}
996+
927997
}

src/Storages/ObjectStorage/StorageObjectStorageCluster.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,24 @@ class StorageObjectStorageCluster : public IStorageCluster
133133
ContextPtr /* context */) override;
134134
bool prefersLargeBlocks() const override;
135135

136+
bool supportsPartitionBy() const override;
137+
138+
bool supportsSubcolumns() const override;
139+
140+
bool supportsDynamicSubcolumns() const override;
141+
142+
bool supportsTrivialCountOptimization(const StorageSnapshotPtr &, ContextPtr) const override;
143+
144+
/// Things required for PREWHERE.
145+
bool supportsPrewhere() const override;
146+
bool canMoveConditionsToPrewhere() const override;
147+
std::optional<NameSet> supportedPrewhereColumns() const override;
148+
ColumnSizeByName getColumnSizes() const override;
149+
150+
bool parallelizeOutputAfterReading(ContextPtr context) const override;
151+
152+
bool supportsDelete() const override;
153+
136154
private:
137155
void updateQueryToSendIfNeeded(
138156
ASTPtr & query,

0 commit comments

Comments
 (0)