mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-30 05:30:51 +00:00
Implement methods for index struct
This commit is contained in:
parent
c4b2f72fe6
commit
18656841a3
@ -9,7 +9,10 @@
|
||||
#include <Parsers/ASTIndexDeclaration.h>
|
||||
#include <Parsers/ASTTTLElement.h>
|
||||
#include <Parsers/ASTLiteral.h>
|
||||
#include <Parsers/ParserCreateQuery.h>
|
||||
#include <Parsers/queryToString.h>
|
||||
#include <Parsers/parseQuery.h>
|
||||
#include <Parsers/formatAST.h>
|
||||
#include <Poco/String.h>
|
||||
|
||||
#include <DataTypes/DataTypeDateTime.h>
|
||||
@ -266,4 +269,45 @@ StorageMetadataSkipIndexField StorageMetadataSkipIndexField::getSkipIndexFromAST
|
||||
return result;
|
||||
}
|
||||
|
||||
bool StorageMetadataSkipIndices::empty() const
|
||||
{
|
||||
return indices.empty();
|
||||
}
|
||||
|
||||
bool StorageMetadataSkipIndices::has(const String & name) const
|
||||
{
|
||||
for (const auto & index : indices)
|
||||
if (index.name == name)
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
String StorageMetadataSkipIndices::toString() const
|
||||
{
|
||||
if (indices.empty())
|
||||
return {};
|
||||
|
||||
ASTExpressionList list;
|
||||
for (const auto & index : indices)
|
||||
list.children.push_back(index.definition_ast);
|
||||
|
||||
return serializeAST(list, true);
|
||||
}
|
||||
|
||||
|
||||
StorageMetadataSkipIndices StorageMetadataSkipIndices::parse(const String & str, const ColumnsDescription & columns, const Context & context)
|
||||
{
|
||||
StorageMetadataSkipIndices result;
|
||||
if (str.empty())
|
||||
return result;
|
||||
|
||||
ParserIndexDeclarationList parser;
|
||||
ASTPtr list = parseQuery(parser, str, 0, DBMS_DEFAULT_MAX_PARSER_DEPTH);
|
||||
|
||||
for (const auto & index : list->children)
|
||||
result.indices.emplace_back(StorageMetadataSkipIndexField::getSkipIndexFromAST(index, columns, context));
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -142,4 +142,15 @@ struct StorageMetadataSkipIndexField
|
||||
static StorageMetadataSkipIndexField getSkipIndexFromAST(const ASTPtr & definition_ast, const ColumnsDescription & columns, const Context & context);
|
||||
};
|
||||
|
||||
struct StorageMetadataSkipIndices
|
||||
{
|
||||
std::vector<StorageMetadataSkipIndexField> indices;
|
||||
|
||||
bool empty() const;
|
||||
bool has(const String & name) const;
|
||||
String toString() const;
|
||||
|
||||
static StorageMetadataSkipIndices parse(const String & str, const ColumnsDescription & columns, const Context & context);
|
||||
};
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user