From 48e136f02990f60b6416199f1964fdef03c90121 Mon Sep 17 00:00:00 2001 From: Nikita Vasilev Date: Tue, 8 Jan 2019 12:38:46 +0300 Subject: [PATCH] unique names --- dbms/src/Parsers/ASTIndexDeclaration.h | 6 ++++-- dbms/src/Storages/MergeTree/MergeTreeData.cpp | 17 +++++++++++++++-- .../src/Storages/MergeTree/MergeTreeTestIndex.h | 9 +++++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/dbms/src/Parsers/ASTIndexDeclaration.h b/dbms/src/Parsers/ASTIndexDeclaration.h index be894d52960..cfcf84c2528 100644 --- a/dbms/src/Parsers/ASTIndexDeclaration.h +++ b/dbms/src/Parsers/ASTIndexDeclaration.h @@ -27,8 +27,10 @@ public: String getID(char) const override { return "Index"; } ASTPtr clone() const override { - auto res = std::make_shared(*this); - res->children.clear(); + auto res = std::make_shared(); + + res->name = name; + res->granularity = granularity; if (expr) res->set(res->expr, expr->clone()); diff --git a/dbms/src/Storages/MergeTree/MergeTreeData.cpp b/dbms/src/Storages/MergeTree/MergeTreeData.cpp index 3063161852d..944dbaea0c7 100644 --- a/dbms/src/Storages/MergeTree/MergeTreeData.cpp +++ b/dbms/src/Storages/MergeTree/MergeTreeData.cpp @@ -47,6 +47,7 @@ #include #include +#include #include #include #include @@ -351,15 +352,27 @@ void MergeTreeData::setPrimaryKeyAndColumns( void MergeTreeData::setSkipIndexes(const ASTs & indexes_asts, bool only_check) { - if (!only_check) { - for (const auto &index_ast : indexes_asts) { + indexes.clear(); + std::set names; + if (!only_check) + { + for (const auto &index_ast : indexes_asts) + { indexes.push_back( std::move(MergeTreeIndexFactory::instance().get( *this, std::dynamic_pointer_cast(index_ast), global_context))); + if (names.find(indexes.back()->name) != names.end()) + { + throw Exception( + "Index with name `" + indexes.back()->name + "` already exsists", + ErrorCodes::LOGICAL_ERROR); + } + LOG_DEBUG(log, "new index init : " << indexes.back()->name); } } + LOG_DEBUG(log, "Indexes size: " << indexes.size()); } diff --git a/dbms/src/Storages/MergeTree/MergeTreeTestIndex.h b/dbms/src/Storages/MergeTree/MergeTreeTestIndex.h index b501df59017..920c4bdb4b6 100644 --- a/dbms/src/Storages/MergeTree/MergeTreeTestIndex.h +++ b/dbms/src/Storages/MergeTree/MergeTreeTestIndex.h @@ -12,6 +12,12 @@ namespace DB { +namespace ErrorCodes +{ + extern const int FILE_DOESNT_EXIST; +} + + class MergeTreeTestIndex; struct MergeTreeTestGranule : public MergeTreeIndexGranule { @@ -24,6 +30,9 @@ struct MergeTreeTestGranule : public MergeTreeIndexGranule { void deserializeBinary(ReadBuffer &istr) override { readIntBinary(emp, istr); + if (emp != 10) { + throw Exception("kek bad read", ErrorCodes::FILE_DOESNT_EXIST); + } //std::cerr << "TESTINDEX: read " << emp << "\n"; }