From f5e5290c0aae74ac391feb91437f0cfa1452b463 Mon Sep 17 00:00:00 2001 From: alesapin Date: Thu, 28 May 2020 16:09:03 +0300 Subject: [PATCH] Better naming --- src/Interpreters/InterpreterCreateQuery.cpp | 2 +- src/Interpreters/MutationsInterpreter.cpp | 2 +- src/Storages/AlterCommands.cpp | 2 +- src/Storages/IndicesDescription.cpp | 6 ++-- src/Storages/IndicesDescription.h | 7 ++--- .../MergeTree/MergeTreeIndexBloomFilter.cpp | 6 ++-- .../MergeTree/MergeTreeIndexBloomFilter.h | 2 +- .../MergeTree/MergeTreeIndexFullText.cpp | 4 +-- .../MergeTree/MergeTreeIndexFullText.h | 2 +- .../MergeTree/MergeTreeIndexMinMax.cpp | 6 ++-- src/Storages/MergeTree/MergeTreeIndexMinMax.h | 4 +-- src/Storages/MergeTree/MergeTreeIndexSet.cpp | 4 +-- src/Storages/MergeTree/MergeTreeIndexSet.h | 2 +- src/Storages/MergeTree/MergeTreeIndices.cpp | 6 ++-- src/Storages/MergeTree/MergeTreeIndices.h | 30 +++++++++---------- .../MergeTree/registerStorageMergeTree.cpp | 2 +- src/Storages/extractKeyExpressionList.cpp | 27 +++++++++++++++++ src/Storages/extractKeyExpressionList.h | 8 +++++ 18 files changed, 78 insertions(+), 44 deletions(-) create mode 100644 src/Storages/extractKeyExpressionList.cpp create mode 100644 src/Storages/extractKeyExpressionList.h diff --git a/src/Interpreters/InterpreterCreateQuery.cpp b/src/Interpreters/InterpreterCreateQuery.cpp index 305870d2c90..2c0072c13c2 100644 --- a/src/Interpreters/InterpreterCreateQuery.cpp +++ b/src/Interpreters/InterpreterCreateQuery.cpp @@ -400,7 +400,7 @@ InterpreterCreateQuery::TableProperties InterpreterCreateQuery::setProperties(AS if (create.columns_list->indices) for (const auto & index : create.columns_list->indices->children) properties.indices.push_back( - StorageMetadataSkipIndexField::getSkipIndexFromAST(index->clone(), properties.columns, context)); + IndexDescription::getSkipIndexFromAST(index->clone(), properties.columns, context)); properties.constraints = getConstraintsDescription(create.columns_list->constraints); } diff --git a/src/Interpreters/MutationsInterpreter.cpp b/src/Interpreters/MutationsInterpreter.cpp index bbcbdced58e..e0f35925231 100644 --- a/src/Interpreters/MutationsInterpreter.cpp +++ b/src/Interpreters/MutationsInterpreter.cpp @@ -392,7 +392,7 @@ ASTPtr MutationsInterpreter::prepare(bool dry_run) { auto it = std::find_if( std::cbegin(indices_desc), std::end(indices_desc), - [&](const StorageMetadataSkipIndexField & index) + [&](const IndexDescription & index) { return index.name == command.index_name; }); diff --git a/src/Storages/AlterCommands.cpp b/src/Storages/AlterCommands.cpp index aa2fbdef772..4656d12362b 100644 --- a/src/Storages/AlterCommands.cpp +++ b/src/Storages/AlterCommands.cpp @@ -365,7 +365,7 @@ void AlterCommand::apply(StorageInMemoryMetadata & metadata, const Context & con ++insert_it; } - metadata.indices.emplace(insert_it, StorageMetadataSkipIndexField::getSkipIndexFromAST(index_decl, metadata.columns, context)); + metadata.indices.emplace(insert_it, IndexDescription::getSkipIndexFromAST(index_decl, metadata.columns, context)); } else if (type == DROP_INDEX) { diff --git a/src/Storages/IndicesDescription.cpp b/src/Storages/IndicesDescription.cpp index 50fc964e4af..25169b88a7f 100644 --- a/src/Storages/IndicesDescription.cpp +++ b/src/Storages/IndicesDescription.cpp @@ -19,7 +19,7 @@ namespace ErrorCodes }; -StorageMetadataSkipIndexField StorageMetadataSkipIndexField::getSkipIndexFromAST(const ASTPtr & definition_ast, const ColumnsDescription & columns, const Context & context) +IndexDescription IndexDescription::getSkipIndexFromAST(const ASTPtr & definition_ast, const ColumnsDescription & columns, const Context & context) { const auto * index_definition = definition_ast->as(); if (!index_definition) @@ -34,7 +34,7 @@ StorageMetadataSkipIndexField StorageMetadataSkipIndexField::getSkipIndexFromAST if (index_definition->type->parameters && !index_definition->type->parameters->children.empty()) throw Exception("Index type cannot have parameters", ErrorCodes::INCORRECT_QUERY); - StorageMetadataSkipIndexField result; + IndexDescription result; result.definition_ast = index_definition->clone(); result.name = index_definition->name; result.type = Poco::toLower(index_definition->type->name); @@ -101,7 +101,7 @@ IndicesDescription IndicesDescription::parse(const String & str, const ColumnsDe ASTPtr list = parseQuery(parser, str, 0, DBMS_DEFAULT_MAX_PARSER_DEPTH); for (const auto & index : list->children) - result.emplace_back(StorageMetadataSkipIndexField::getSkipIndexFromAST(index, columns, context)); + result.emplace_back(IndexDescription::getSkipIndexFromAST(index, columns, context)); return result; } diff --git a/src/Storages/IndicesDescription.h b/src/Storages/IndicesDescription.h index bfaa2f1dd53..6113fc652f4 100644 --- a/src/Storages/IndicesDescription.h +++ b/src/Storages/IndicesDescription.h @@ -12,7 +12,7 @@ namespace DB { -struct StorageMetadataSkipIndexField +struct IndexDescription { ASTPtr definition_ast; @@ -34,11 +34,10 @@ struct StorageMetadataSkipIndexField size_t granularity; - static StorageMetadataSkipIndexField - getSkipIndexFromAST(const ASTPtr & definition_ast, const ColumnsDescription & columns, const Context & context); + static IndexDescription getSkipIndexFromAST(const ASTPtr & definition_ast, const ColumnsDescription & columns, const Context & context); }; -struct IndicesDescription : public std::vector +struct IndicesDescription : public std::vector { bool has(const String & name) const; String toString() const; diff --git a/src/Storages/MergeTree/MergeTreeIndexBloomFilter.cpp b/src/Storages/MergeTree/MergeTreeIndexBloomFilter.cpp index e098451e571..b52e88f3397 100644 --- a/src/Storages/MergeTree/MergeTreeIndexBloomFilter.cpp +++ b/src/Storages/MergeTree/MergeTreeIndexBloomFilter.cpp @@ -28,7 +28,7 @@ namespace ErrorCodes } MergeTreeIndexBloomFilter::MergeTreeIndexBloomFilter( - const StorageMetadataSkipIndexField & index_, + const IndexDescription & index_, size_t bits_per_row_, size_t hash_functions_) : IMergeTreeIndex(index_) @@ -90,7 +90,7 @@ static void assertIndexColumnsType(const Block & header) } std::shared_ptr bloomFilterIndexCreatorNew( - const StorageMetadataSkipIndexField & index) + const IndexDescription & index) { double max_conflict_probability = 0.025; @@ -107,7 +107,7 @@ std::shared_ptr bloomFilterIndexCreatorNew( index, bits_per_row_and_size_of_hash_functions.first, bits_per_row_and_size_of_hash_functions.second); } -void bloomFilterIndexValidatorNew(const StorageMetadataSkipIndexField & index, bool attach) +void bloomFilterIndexValidatorNew(const IndexDescription & index, bool attach) { assertIndexColumnsType(index.sample_block); diff --git a/src/Storages/MergeTree/MergeTreeIndexBloomFilter.h b/src/Storages/MergeTree/MergeTreeIndexBloomFilter.h index 363392bf851..b0d9a295bcd 100644 --- a/src/Storages/MergeTree/MergeTreeIndexBloomFilter.h +++ b/src/Storages/MergeTree/MergeTreeIndexBloomFilter.h @@ -12,7 +12,7 @@ class MergeTreeIndexBloomFilter : public IMergeTreeIndex { public: MergeTreeIndexBloomFilter( - const StorageMetadataSkipIndexField & index_, + const IndexDescription & index_, size_t bits_per_row_, size_t hash_functions_); diff --git a/src/Storages/MergeTree/MergeTreeIndexFullText.cpp b/src/Storages/MergeTree/MergeTreeIndexFullText.cpp index 4d4595478cf..9f6013650ce 100644 --- a/src/Storages/MergeTree/MergeTreeIndexFullText.cpp +++ b/src/Storages/MergeTree/MergeTreeIndexFullText.cpp @@ -769,7 +769,7 @@ bool SplitTokenExtractor::nextLike(const String & str, size_t * pos, String & to std::shared_ptr bloomFilterIndexCreator( - const StorageMetadataSkipIndexField & index) + const IndexDescription & index) { if (index.type == NgramTokenExtractor::getName()) { @@ -804,7 +804,7 @@ std::shared_ptr bloomFilterIndexCreator( } } -void bloomFilterIndexValidator(const StorageMetadataSkipIndexField & index, bool /*attach*/) +void bloomFilterIndexValidator(const IndexDescription & index, bool /*attach*/) { for (const auto & data_type : index.data_types) { diff --git a/src/Storages/MergeTree/MergeTreeIndexFullText.h b/src/Storages/MergeTree/MergeTreeIndexFullText.h index 237583f2c69..40cc606a94c 100644 --- a/src/Storages/MergeTree/MergeTreeIndexFullText.h +++ b/src/Storages/MergeTree/MergeTreeIndexFullText.h @@ -192,7 +192,7 @@ class MergeTreeIndexFullText : public IMergeTreeIndex { public: MergeTreeIndexFullText( - const StorageMetadataSkipIndexField & index_, + const IndexDescription & index_, const BloomFilterParameters & params_, std::unique_ptr && token_extractor_) : IMergeTreeIndex(index_) diff --git a/src/Storages/MergeTree/MergeTreeIndexMinMax.cpp b/src/Storages/MergeTree/MergeTreeIndexMinMax.cpp index 84302c84566..f4cb1efa8e0 100644 --- a/src/Storages/MergeTree/MergeTreeIndexMinMax.cpp +++ b/src/Storages/MergeTree/MergeTreeIndexMinMax.cpp @@ -131,7 +131,7 @@ void MergeTreeIndexAggregatorMinMax::update(const Block & block, size_t * pos, s MergeTreeIndexConditionMinMax::MergeTreeIndexConditionMinMax( - const StorageMetadataSkipIndexField & index, + const IndexDescription & index, const SelectQueryInfo & query, const Context & context) : index_data_types(index.data_types) @@ -191,12 +191,12 @@ bool MergeTreeIndexMinMax::mayBenefitFromIndexForIn(const ASTPtr & node) const } std::shared_ptr minmaxIndexCreator( - const StorageMetadataSkipIndexField & index) + const IndexDescription & index) { return std::make_shared(index); } -void minmaxIndexValidator(const StorageMetadataSkipIndexField & /* index */, bool /* attach */) +void minmaxIndexValidator(const IndexDescription & /* index */, bool /* attach */) { } } diff --git a/src/Storages/MergeTree/MergeTreeIndexMinMax.h b/src/Storages/MergeTree/MergeTreeIndexMinMax.h index d1e98b6cd98..3956b1d9f9a 100644 --- a/src/Storages/MergeTree/MergeTreeIndexMinMax.h +++ b/src/Storages/MergeTree/MergeTreeIndexMinMax.h @@ -50,7 +50,7 @@ class MergeTreeIndexConditionMinMax : public IMergeTreeIndexCondition { public: MergeTreeIndexConditionMinMax( - const StorageMetadataSkipIndexField & index, + const IndexDescription & index, const SelectQueryInfo & query, const Context & context); @@ -68,7 +68,7 @@ private: class MergeTreeIndexMinMax : public IMergeTreeIndex { public: - MergeTreeIndexMinMax(const StorageMetadataSkipIndexField & index_) + MergeTreeIndexMinMax(const IndexDescription & index_) : IMergeTreeIndex(index_) {} diff --git a/src/Storages/MergeTree/MergeTreeIndexSet.cpp b/src/Storages/MergeTree/MergeTreeIndexSet.cpp index b0af9311a2c..6ba71e3d675 100644 --- a/src/Storages/MergeTree/MergeTreeIndexSet.cpp +++ b/src/Storages/MergeTree/MergeTreeIndexSet.cpp @@ -477,13 +477,13 @@ bool MergeTreeIndexSet::mayBenefitFromIndexForIn(const ASTPtr &) const return false; } -std::shared_ptr setIndexCreator(const StorageMetadataSkipIndexField & index) +std::shared_ptr setIndexCreator(const IndexDescription & index) { size_t max_rows = index.arguments[0].get(); return std::make_shared(index, max_rows); } -void setIndexValidator(const StorageMetadataSkipIndexField & index, bool /*attach*/) +void setIndexValidator(const IndexDescription & index, bool /*attach*/) { if (index.arguments.size() != 1) throw Exception("Set index must have exactly one argument.", ErrorCodes::INCORRECT_QUERY); diff --git a/src/Storages/MergeTree/MergeTreeIndexSet.h b/src/Storages/MergeTree/MergeTreeIndexSet.h index 435b3ccde55..d84991f5e85 100644 --- a/src/Storages/MergeTree/MergeTreeIndexSet.h +++ b/src/Storages/MergeTree/MergeTreeIndexSet.h @@ -117,7 +117,7 @@ class MergeTreeIndexSet : public IMergeTreeIndex { public: MergeTreeIndexSet( - const StorageMetadataSkipIndexField & index_, + const IndexDescription & index_, size_t max_rows_) : IMergeTreeIndex(index_) , max_rows(max_rows_) diff --git a/src/Storages/MergeTree/MergeTreeIndices.cpp b/src/Storages/MergeTree/MergeTreeIndices.cpp index 3db409571be..0300d9c083e 100644 --- a/src/Storages/MergeTree/MergeTreeIndices.cpp +++ b/src/Storages/MergeTree/MergeTreeIndices.cpp @@ -32,7 +32,7 @@ void MergeTreeIndexFactory::registerValidator(const std::string & index_type, Va std::shared_ptr MergeTreeIndexFactory::get( - const StorageMetadataSkipIndexField & index) const + const IndexDescription & index) const { auto it = creators.find(index.type); if (it == creators.end()) @@ -52,7 +52,7 @@ std::shared_ptr MergeTreeIndexFactory::get( } -MergeTreeIndices MergeTreeIndexFactory::getMany(const std::vector & indices) const +MergeTreeIndices MergeTreeIndexFactory::getMany(const std::vector & indices) const { MergeTreeIndices result; for (const auto & index : indices) @@ -60,7 +60,7 @@ MergeTreeIndices MergeTreeIndexFactory::getMany(const std::vector; class IMergeTreeIndex { public: - IMergeTreeIndex(const StorageMetadataSkipIndexField & index_) + IMergeTreeIndex(const IndexDescription & index_) : index(index_) { } @@ -98,7 +98,7 @@ public: Names getColumnsRequiredForIndexCalc() const { return index.expression->getRequiredColumns(); } - const StorageMetadataSkipIndexField & index; + const IndexDescription & index; }; using MergeTreeIndices = std::vector; @@ -111,15 +111,15 @@ public: using Creator = std::function< std::shared_ptr( - const StorageMetadataSkipIndexField & index)>; + const IndexDescription & index)>; - using Validator = std::function; + using Validator = std::function; - void validate(const StorageMetadataSkipIndexField & index, bool attach) const; + void validate(const IndexDescription & index, bool attach) const; - std::shared_ptr get(const StorageMetadataSkipIndexField & index) const; + std::shared_ptr get(const IndexDescription & index) const; - MergeTreeIndices getMany(const std::vector & indices) const; + MergeTreeIndices getMany(const std::vector & indices) const; void registerCreator(const std::string & index_type, Creator creator); void registerValidator(const std::string & index_type, Validator creator); @@ -135,21 +135,21 @@ private: }; std::shared_ptr minmaxIndexCreator( - const StorageMetadataSkipIndexField & index); -void minmaxIndexValidator(const StorageMetadataSkipIndexField & index, bool attach); + const IndexDescription & index); +void minmaxIndexValidator(const IndexDescription & index, bool attach); std::shared_ptr setIndexCreator( - const StorageMetadataSkipIndexField & index); -void setIndexValidator(const StorageMetadataSkipIndexField & index, bool attach); + const IndexDescription & index); +void setIndexValidator(const IndexDescription & index, bool attach); std::shared_ptr bloomFilterIndexCreator( - const StorageMetadataSkipIndexField & index); + const IndexDescription & index); -void bloomFilterIndexValidator(const StorageMetadataSkipIndexField & index, bool attach); +void bloomFilterIndexValidator(const IndexDescription & index, bool attach); std::shared_ptr bloomFilterIndexCreatorNew( - const StorageMetadataSkipIndexField & index); -void bloomFilterIndexValidatorNew(const StorageMetadataSkipIndexField & index, bool attach); + const IndexDescription & index); +void bloomFilterIndexValidatorNew(const IndexDescription & index, bool attach); } diff --git a/src/Storages/MergeTree/registerStorageMergeTree.cpp b/src/Storages/MergeTree/registerStorageMergeTree.cpp index 8a235ec9b42..efe442e821c 100644 --- a/src/Storages/MergeTree/registerStorageMergeTree.cpp +++ b/src/Storages/MergeTree/registerStorageMergeTree.cpp @@ -607,7 +607,7 @@ static StoragePtr create(const StorageFactory::Arguments & args) if (args.query.columns_list && args.query.columns_list->indices) for (auto & index : args.query.columns_list->indices->children) - indices_description.push_back(StorageMetadataSkipIndexField::getSkipIndexFromAST(index, args.columns, args.context)); + indices_description.push_back(IndexDescription::getSkipIndexFromAST(index, args.columns, args.context)); storage_settings->loadFromQuery(*args.storage_def); diff --git a/src/Storages/extractKeyExpressionList.cpp b/src/Storages/extractKeyExpressionList.cpp new file mode 100644 index 00000000000..9dd44fe3902 --- /dev/null +++ b/src/Storages/extractKeyExpressionList.cpp @@ -0,0 +1,27 @@ +#include +#include +#include + +namespace DB +{ + ASTPtr extractKeyExpressionList(const ASTPtr & node) + { + if (!node) + return std::make_shared(); + + const auto * expr_func = node->as(); + + if (expr_func && expr_func->name == "tuple") + { + /// Primary key is specified in tuple, extract its arguments. + return expr_func->arguments->clone(); + } + else + { + /// Primary key consists of one column. + auto res = std::make_shared(); + res->children.push_back(node); + return res; + } + } +} diff --git a/src/Storages/extractKeyExpressionList.h b/src/Storages/extractKeyExpressionList.h new file mode 100644 index 00000000000..aa250bbd255 --- /dev/null +++ b/src/Storages/extractKeyExpressionList.h @@ -0,0 +1,8 @@ +#pragma once + +#include + +namespace DB +{ + ASTPtr extractKeyExpressionList(const ASTPtr & node); +}