mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-30 05:30:51 +00:00
added indexParts
This commit is contained in:
parent
9818d27109
commit
9bf5b6b4aa
@ -7,37 +7,45 @@
|
||||
#include <Core/Block.h>
|
||||
#include <ext/singleton.h>
|
||||
#include <Interpreters/ExpressionActions.h>
|
||||
#include <Storages/MergeTree/MergeTreeDataPartChecksum.h>
|
||||
#include <Parsers/ASTIndexDeclaration.h>
|
||||
|
||||
namespace DB
|
||||
{
|
||||
|
||||
class MergeTreeIndexPart
|
||||
{
|
||||
public:
|
||||
virtual ~MergeTreeIndexPart() {};
|
||||
|
||||
virtual void update(const Block & block, const Names & column_names) = 0;
|
||||
virtual void merge(const MergeTreeIndexPart & other) = 0;
|
||||
};
|
||||
|
||||
using MergeTreeIndexPartPtr = std::unique_ptr<MergeTreeIndexPart>;
|
||||
using MergeTreeIndexParts = std::vector<MergeTreeIndexPartPtr>;
|
||||
|
||||
|
||||
/// Interface for secondary MergeTree indexes
|
||||
class MergeTreeIndex
|
||||
{
|
||||
public:
|
||||
MergeTreeIndex(String name, ExpressionActionsPtr expr, Block key)
|
||||
: name(name), expr(expr), sample(key) {}
|
||||
|
||||
virtual ~MergeTreeIndex() {};
|
||||
|
||||
virtual void load(const String & part_path) = 0;
|
||||
virtual void store(const String & part_path, MergeTreeDataPartChecksums & checksums) const = 0;
|
||||
|
||||
virtual void update(const Block & block, const Names & column_names) = 0;
|
||||
virtual void merge(const MergeTreeIndex & other) = 0;
|
||||
|
||||
virtual bool alwaysUnknownOrTrue() const = 0;
|
||||
virtual bool maybeTrue() const = 0;
|
||||
virtual bool maybeTrue(/* args */) const = 0;
|
||||
|
||||
virtual MergeTreeIndexPartPtr createEmptyIndexPart() const = 0;
|
||||
|
||||
String name;
|
||||
ExpressionActionsPtr expr;
|
||||
Block header;
|
||||
Block sample;
|
||||
};
|
||||
|
||||
using MergeTreeIndexPtr = std::unique_ptr<MergeTreeIndex>;
|
||||
using MergeTreeIndexes = std::vector<MergeTreeIndexPtr>;
|
||||
|
||||
|
||||
class MergeTreeIndexFactory : public ext::singleton<MergeTreeIndexFactory>
|
||||
{
|
||||
friend class ext::singleton<MergeTreeIndexFactory>;
|
||||
|
@ -110,6 +110,7 @@ namespace ErrorCodes
|
||||
extern const int KEEPER_EXCEPTION;
|
||||
extern const int ALL_REPLICAS_LOST;
|
||||
extern const int REPLICA_STATUS_CHANGED;
|
||||
extern const int INCORRECT_QUERY;
|
||||
}
|
||||
|
||||
namespace ActionLocks
|
||||
@ -225,6 +226,9 @@ StorageReplicatedMergeTree::StorageReplicatedMergeTree(
|
||||
{
|
||||
if (path_.empty())
|
||||
throw Exception("ReplicatedMergeTree storages require data path", ErrorCodes::INCORRECT_FILE_NAME);
|
||||
if (!indexes_ast_.empty()) {
|
||||
throw Exception("ReplicatedMergeTree storages do not support indexes", ErrorCodes::INCORRECT_QUERY);
|
||||
}
|
||||
|
||||
if (!zookeeper_path.empty() && zookeeper_path.back() == '/')
|
||||
zookeeper_path.resize(zookeeper_path.size() - 1);
|
||||
|
Loading…
Reference in New Issue
Block a user