Better naming

This commit is contained in:
alesapin 2020-05-28 16:09:03 +03:00
parent 5b5f749592
commit f5e5290c0a
18 changed files with 78 additions and 44 deletions

View File

@ -400,7 +400,7 @@ InterpreterCreateQuery::TableProperties InterpreterCreateQuery::setProperties(AS
if (create.columns_list->indices) if (create.columns_list->indices)
for (const auto & index : create.columns_list->indices->children) for (const auto & index : create.columns_list->indices->children)
properties.indices.push_back( 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); properties.constraints = getConstraintsDescription(create.columns_list->constraints);
} }

View File

@ -392,7 +392,7 @@ ASTPtr MutationsInterpreter::prepare(bool dry_run)
{ {
auto it = std::find_if( auto it = std::find_if(
std::cbegin(indices_desc), std::end(indices_desc), std::cbegin(indices_desc), std::end(indices_desc),
[&](const StorageMetadataSkipIndexField & index) [&](const IndexDescription & index)
{ {
return index.name == command.index_name; return index.name == command.index_name;
}); });

View File

@ -365,7 +365,7 @@ void AlterCommand::apply(StorageInMemoryMetadata & metadata, const Context & con
++insert_it; ++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) else if (type == DROP_INDEX)
{ {

View File

@ -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<ASTIndexDeclaration>(); const auto * index_definition = definition_ast->as<ASTIndexDeclaration>();
if (!index_definition) if (!index_definition)
@ -34,7 +34,7 @@ StorageMetadataSkipIndexField StorageMetadataSkipIndexField::getSkipIndexFromAST
if (index_definition->type->parameters && !index_definition->type->parameters->children.empty()) if (index_definition->type->parameters && !index_definition->type->parameters->children.empty())
throw Exception("Index type cannot have parameters", ErrorCodes::INCORRECT_QUERY); throw Exception("Index type cannot have parameters", ErrorCodes::INCORRECT_QUERY);
StorageMetadataSkipIndexField result; IndexDescription result;
result.definition_ast = index_definition->clone(); result.definition_ast = index_definition->clone();
result.name = index_definition->name; result.name = index_definition->name;
result.type = Poco::toLower(index_definition->type->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); ASTPtr list = parseQuery(parser, str, 0, DBMS_DEFAULT_MAX_PARSER_DEPTH);
for (const auto & index : list->children) for (const auto & index : list->children)
result.emplace_back(StorageMetadataSkipIndexField::getSkipIndexFromAST(index, columns, context)); result.emplace_back(IndexDescription::getSkipIndexFromAST(index, columns, context));
return result; return result;
} }

View File

@ -12,7 +12,7 @@
namespace DB namespace DB
{ {
struct StorageMetadataSkipIndexField struct IndexDescription
{ {
ASTPtr definition_ast; ASTPtr definition_ast;
@ -34,11 +34,10 @@ struct StorageMetadataSkipIndexField
size_t granularity; size_t granularity;
static StorageMetadataSkipIndexField static IndexDescription getSkipIndexFromAST(const ASTPtr & definition_ast, const ColumnsDescription & columns, const Context & context);
getSkipIndexFromAST(const ASTPtr & definition_ast, const ColumnsDescription & columns, const Context & context);
}; };
struct IndicesDescription : public std::vector<StorageMetadataSkipIndexField> struct IndicesDescription : public std::vector<IndexDescription>
{ {
bool has(const String & name) const; bool has(const String & name) const;
String toString() const; String toString() const;

View File

@ -28,7 +28,7 @@ namespace ErrorCodes
} }
MergeTreeIndexBloomFilter::MergeTreeIndexBloomFilter( MergeTreeIndexBloomFilter::MergeTreeIndexBloomFilter(
const StorageMetadataSkipIndexField & index_, const IndexDescription & index_,
size_t bits_per_row_, size_t bits_per_row_,
size_t hash_functions_) size_t hash_functions_)
: IMergeTreeIndex(index_) : IMergeTreeIndex(index_)
@ -90,7 +90,7 @@ static void assertIndexColumnsType(const Block & header)
} }
std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreatorNew( std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreatorNew(
const StorageMetadataSkipIndexField & index) const IndexDescription & index)
{ {
double max_conflict_probability = 0.025; double max_conflict_probability = 0.025;
@ -107,7 +107,7 @@ std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreatorNew(
index, bits_per_row_and_size_of_hash_functions.first, bits_per_row_and_size_of_hash_functions.second); 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); assertIndexColumnsType(index.sample_block);

View File

@ -12,7 +12,7 @@ class MergeTreeIndexBloomFilter : public IMergeTreeIndex
{ {
public: public:
MergeTreeIndexBloomFilter( MergeTreeIndexBloomFilter(
const StorageMetadataSkipIndexField & index_, const IndexDescription & index_,
size_t bits_per_row_, size_t bits_per_row_,
size_t hash_functions_); size_t hash_functions_);

View File

@ -769,7 +769,7 @@ bool SplitTokenExtractor::nextLike(const String & str, size_t * pos, String & to
std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreator( std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreator(
const StorageMetadataSkipIndexField & index) const IndexDescription & index)
{ {
if (index.type == NgramTokenExtractor::getName()) if (index.type == NgramTokenExtractor::getName())
{ {
@ -804,7 +804,7 @@ std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreator(
} }
} }
void bloomFilterIndexValidator(const StorageMetadataSkipIndexField & index, bool /*attach*/) void bloomFilterIndexValidator(const IndexDescription & index, bool /*attach*/)
{ {
for (const auto & data_type : index.data_types) for (const auto & data_type : index.data_types)
{ {

View File

@ -192,7 +192,7 @@ class MergeTreeIndexFullText : public IMergeTreeIndex
{ {
public: public:
MergeTreeIndexFullText( MergeTreeIndexFullText(
const StorageMetadataSkipIndexField & index_, const IndexDescription & index_,
const BloomFilterParameters & params_, const BloomFilterParameters & params_,
std::unique_ptr<ITokenExtractor> && token_extractor_) std::unique_ptr<ITokenExtractor> && token_extractor_)
: IMergeTreeIndex(index_) : IMergeTreeIndex(index_)

View File

@ -131,7 +131,7 @@ void MergeTreeIndexAggregatorMinMax::update(const Block & block, size_t * pos, s
MergeTreeIndexConditionMinMax::MergeTreeIndexConditionMinMax( MergeTreeIndexConditionMinMax::MergeTreeIndexConditionMinMax(
const StorageMetadataSkipIndexField & index, const IndexDescription & index,
const SelectQueryInfo & query, const SelectQueryInfo & query,
const Context & context) const Context & context)
: index_data_types(index.data_types) : index_data_types(index.data_types)
@ -191,12 +191,12 @@ bool MergeTreeIndexMinMax::mayBenefitFromIndexForIn(const ASTPtr & node) const
} }
std::shared_ptr<IMergeTreeIndex> minmaxIndexCreator( std::shared_ptr<IMergeTreeIndex> minmaxIndexCreator(
const StorageMetadataSkipIndexField & index) const IndexDescription & index)
{ {
return std::make_shared<MergeTreeIndexMinMax>(index); return std::make_shared<MergeTreeIndexMinMax>(index);
} }
void minmaxIndexValidator(const StorageMetadataSkipIndexField & /* index */, bool /* attach */) void minmaxIndexValidator(const IndexDescription & /* index */, bool /* attach */)
{ {
} }
} }

View File

@ -50,7 +50,7 @@ class MergeTreeIndexConditionMinMax : public IMergeTreeIndexCondition
{ {
public: public:
MergeTreeIndexConditionMinMax( MergeTreeIndexConditionMinMax(
const StorageMetadataSkipIndexField & index, const IndexDescription & index,
const SelectQueryInfo & query, const SelectQueryInfo & query,
const Context & context); const Context & context);
@ -68,7 +68,7 @@ private:
class MergeTreeIndexMinMax : public IMergeTreeIndex class MergeTreeIndexMinMax : public IMergeTreeIndex
{ {
public: public:
MergeTreeIndexMinMax(const StorageMetadataSkipIndexField & index_) MergeTreeIndexMinMax(const IndexDescription & index_)
: IMergeTreeIndex(index_) : IMergeTreeIndex(index_)
{} {}

View File

@ -477,13 +477,13 @@ bool MergeTreeIndexSet::mayBenefitFromIndexForIn(const ASTPtr &) const
return false; return false;
} }
std::shared_ptr<IMergeTreeIndex> setIndexCreator(const StorageMetadataSkipIndexField & index) std::shared_ptr<IMergeTreeIndex> setIndexCreator(const IndexDescription & index)
{ {
size_t max_rows = index.arguments[0].get<size_t>(); size_t max_rows = index.arguments[0].get<size_t>();
return std::make_shared<MergeTreeIndexSet>(index, max_rows); return std::make_shared<MergeTreeIndexSet>(index, max_rows);
} }
void setIndexValidator(const StorageMetadataSkipIndexField & index, bool /*attach*/) void setIndexValidator(const IndexDescription & index, bool /*attach*/)
{ {
if (index.arguments.size() != 1) if (index.arguments.size() != 1)
throw Exception("Set index must have exactly one argument.", ErrorCodes::INCORRECT_QUERY); throw Exception("Set index must have exactly one argument.", ErrorCodes::INCORRECT_QUERY);

View File

@ -117,7 +117,7 @@ class MergeTreeIndexSet : public IMergeTreeIndex
{ {
public: public:
MergeTreeIndexSet( MergeTreeIndexSet(
const StorageMetadataSkipIndexField & index_, const IndexDescription & index_,
size_t max_rows_) size_t max_rows_)
: IMergeTreeIndex(index_) : IMergeTreeIndex(index_)
, max_rows(max_rows_) , max_rows(max_rows_)

View File

@ -32,7 +32,7 @@ void MergeTreeIndexFactory::registerValidator(const std::string & index_type, Va
std::shared_ptr<IMergeTreeIndex> MergeTreeIndexFactory::get( std::shared_ptr<IMergeTreeIndex> MergeTreeIndexFactory::get(
const StorageMetadataSkipIndexField & index) const const IndexDescription & index) const
{ {
auto it = creators.find(index.type); auto it = creators.find(index.type);
if (it == creators.end()) if (it == creators.end())
@ -52,7 +52,7 @@ std::shared_ptr<IMergeTreeIndex> MergeTreeIndexFactory::get(
} }
MergeTreeIndices MergeTreeIndexFactory::getMany(const std::vector<StorageMetadataSkipIndexField> & indices) const MergeTreeIndices MergeTreeIndexFactory::getMany(const std::vector<IndexDescription> & indices) const
{ {
MergeTreeIndices result; MergeTreeIndices result;
for (const auto & index : indices) for (const auto & index : indices)
@ -60,7 +60,7 @@ MergeTreeIndices MergeTreeIndexFactory::getMany(const std::vector<StorageMetadat
return result; return result;
} }
void MergeTreeIndexFactory::validate(const StorageMetadataSkipIndexField & index, bool attach) const void MergeTreeIndexFactory::validate(const IndexDescription & index, bool attach) const
{ {
auto it = validators.find(index.type); auto it = validators.find(index.type);
if (it == validators.end()) if (it == validators.end())

View File

@ -76,7 +76,7 @@ using MergeTreeIndexConditionPtr = std::shared_ptr<IMergeTreeIndexCondition>;
class IMergeTreeIndex class IMergeTreeIndex
{ {
public: public:
IMergeTreeIndex(const StorageMetadataSkipIndexField & index_) IMergeTreeIndex(const IndexDescription & index_)
: index(index_) : index(index_)
{ {
} }
@ -98,7 +98,7 @@ public:
Names getColumnsRequiredForIndexCalc() const { return index.expression->getRequiredColumns(); } Names getColumnsRequiredForIndexCalc() const { return index.expression->getRequiredColumns(); }
const StorageMetadataSkipIndexField & index; const IndexDescription & index;
}; };
using MergeTreeIndices = std::vector<MergeTreeIndexPtr>; using MergeTreeIndices = std::vector<MergeTreeIndexPtr>;
@ -111,15 +111,15 @@ public:
using Creator = std::function< using Creator = std::function<
std::shared_ptr<IMergeTreeIndex>( std::shared_ptr<IMergeTreeIndex>(
const StorageMetadataSkipIndexField & index)>; const IndexDescription & index)>;
using Validator = std::function<void(const StorageMetadataSkipIndexField & index, bool attach)>; using Validator = std::function<void(const IndexDescription & index, bool attach)>;
void validate(const StorageMetadataSkipIndexField & index, bool attach) const; void validate(const IndexDescription & index, bool attach) const;
std::shared_ptr<IMergeTreeIndex> get(const StorageMetadataSkipIndexField & index) const; std::shared_ptr<IMergeTreeIndex> get(const IndexDescription & index) const;
MergeTreeIndices getMany(const std::vector<StorageMetadataSkipIndexField> & indices) const; MergeTreeIndices getMany(const std::vector<IndexDescription> & indices) const;
void registerCreator(const std::string & index_type, Creator creator); void registerCreator(const std::string & index_type, Creator creator);
void registerValidator(const std::string & index_type, Validator creator); void registerValidator(const std::string & index_type, Validator creator);
@ -135,21 +135,21 @@ private:
}; };
std::shared_ptr<IMergeTreeIndex> minmaxIndexCreator( std::shared_ptr<IMergeTreeIndex> minmaxIndexCreator(
const StorageMetadataSkipIndexField & index); const IndexDescription & index);
void minmaxIndexValidator(const StorageMetadataSkipIndexField & index, bool attach); void minmaxIndexValidator(const IndexDescription & index, bool attach);
std::shared_ptr<IMergeTreeIndex> setIndexCreator( std::shared_ptr<IMergeTreeIndex> setIndexCreator(
const StorageMetadataSkipIndexField & index); const IndexDescription & index);
void setIndexValidator(const StorageMetadataSkipIndexField & index, bool attach); void setIndexValidator(const IndexDescription & index, bool attach);
std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreator( std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreator(
const StorageMetadataSkipIndexField & index); const IndexDescription & index);
void bloomFilterIndexValidator(const StorageMetadataSkipIndexField & index, bool attach); void bloomFilterIndexValidator(const IndexDescription & index, bool attach);
std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreatorNew( std::shared_ptr<IMergeTreeIndex> bloomFilterIndexCreatorNew(
const StorageMetadataSkipIndexField & index); const IndexDescription & index);
void bloomFilterIndexValidatorNew(const StorageMetadataSkipIndexField & index, bool attach); void bloomFilterIndexValidatorNew(const IndexDescription & index, bool attach);
} }

View File

@ -607,7 +607,7 @@ static StoragePtr create(const StorageFactory::Arguments & args)
if (args.query.columns_list && args.query.columns_list->indices) if (args.query.columns_list && args.query.columns_list->indices)
for (auto & index : args.query.columns_list->indices->children) 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); storage_settings->loadFromQuery(*args.storage_def);

View File

@ -0,0 +1,27 @@
#include <Storages/extractKeyExpressionList.h>
#include <Parsers/ASTFunction.h>
#include <Parsers/ASTExpressionList.h>
namespace DB
{
ASTPtr extractKeyExpressionList(const ASTPtr & node)
{
if (!node)
return std::make_shared<ASTExpressionList>();
const auto * expr_func = node->as<ASTFunction>();
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<ASTExpressionList>();
res->children.push_back(node);
return res;
}
}
}

View File

@ -0,0 +1,8 @@
#pragma once
#include <Parsers/IAST_fwd.h>
namespace DB
{
ASTPtr extractKeyExpressionList(const ASTPtr & node);
}