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 <Core/Block.h>
|
||||||
#include <ext/singleton.h>
|
#include <ext/singleton.h>
|
||||||
#include <Interpreters/ExpressionActions.h>
|
#include <Interpreters/ExpressionActions.h>
|
||||||
#include <Storages/MergeTree/MergeTreeDataPartChecksum.h>
|
|
||||||
#include <Parsers/ASTIndexDeclaration.h>
|
#include <Parsers/ASTIndexDeclaration.h>
|
||||||
|
|
||||||
namespace DB
|
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
|
class MergeTreeIndex
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
MergeTreeIndex(String name, ExpressionActionsPtr expr, Block key)
|
||||||
|
: name(name), expr(expr), sample(key) {}
|
||||||
|
|
||||||
virtual ~MergeTreeIndex() {};
|
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 alwaysUnknownOrTrue() const = 0;
|
||||||
virtual bool maybeTrue() const = 0;
|
virtual bool maybeTrue(/* args */) const = 0;
|
||||||
|
|
||||||
|
virtual MergeTreeIndexPartPtr createEmptyIndexPart() const = 0;
|
||||||
|
|
||||||
String name;
|
String name;
|
||||||
ExpressionActionsPtr expr;
|
ExpressionActionsPtr expr;
|
||||||
Block header;
|
Block sample;
|
||||||
};
|
};
|
||||||
|
|
||||||
using MergeTreeIndexPtr = std::unique_ptr<MergeTreeIndex>;
|
using MergeTreeIndexPtr = std::unique_ptr<MergeTreeIndex>;
|
||||||
using MergeTreeIndexes = std::vector<MergeTreeIndexPtr>;
|
using MergeTreeIndexes = std::vector<MergeTreeIndexPtr>;
|
||||||
|
|
||||||
|
|
||||||
class MergeTreeIndexFactory : public ext::singleton<MergeTreeIndexFactory>
|
class MergeTreeIndexFactory : public ext::singleton<MergeTreeIndexFactory>
|
||||||
{
|
{
|
||||||
friend class ext::singleton<MergeTreeIndexFactory>;
|
friend class ext::singleton<MergeTreeIndexFactory>;
|
||||||
|
@ -110,6 +110,7 @@ namespace ErrorCodes
|
|||||||
extern const int KEEPER_EXCEPTION;
|
extern const int KEEPER_EXCEPTION;
|
||||||
extern const int ALL_REPLICAS_LOST;
|
extern const int ALL_REPLICAS_LOST;
|
||||||
extern const int REPLICA_STATUS_CHANGED;
|
extern const int REPLICA_STATUS_CHANGED;
|
||||||
|
extern const int INCORRECT_QUERY;
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace ActionLocks
|
namespace ActionLocks
|
||||||
@ -225,6 +226,9 @@ StorageReplicatedMergeTree::StorageReplicatedMergeTree(
|
|||||||
{
|
{
|
||||||
if (path_.empty())
|
if (path_.empty())
|
||||||
throw Exception("ReplicatedMergeTree storages require data path", ErrorCodes::INCORRECT_FILE_NAME);
|
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() == '/')
|
if (!zookeeper_path.empty() && zookeeper_path.back() == '/')
|
||||||
zookeeper_path.resize(zookeeper_path.size() - 1);
|
zookeeper_path.resize(zookeeper_path.size() - 1);
|
||||||
|
Loading…
Reference in New Issue
Block a user