Add some multiword data types#11214
Merged
tavplubix merged 7 commits intoClickHouse:masterfrom Jun 18, 2020
Merged
Conversation
Contributor
Author
|
TODO: tests and mb some new data types |
tavplubix
reviewed
May 28, 2020
src/Parsers/ParserCreateQuery.h
Outdated
|
|
||
| auto first_word = type->getID(); | ||
|
|
||
| if (boost::algorithm::to_lower_copy(first_word) == "function_double") { |
Member
There was a problem hiding this comment.
Why not to move it to ParserIdentifierWithOptionalParameters? Or may be even make separate ParserDataType, because data type parsing becomes too complex with multi-word identifiers. It can be done like the following (it's just a draft and probably will not work or can be done a better way):
ASTPtr type;
ParserIdentifierWithOptionalParameters type_parser;
if (!type_parser.parse(pos, type, expected)
return false;
/// Cast to ASTFunction looks better then using getID()
ASTFunction & type_func = type->as<ASTFunction>();
if (!type.arguments.empty())
{
/// It cannot be multi-word type name if it has arguments after the first word
return true;
}
/// Special cases for compatibility with SQL standard. We can parse several words as type name
/// only for certain first words, otherwise we don't know how many words to parse
if (boost::algorithm::iequals(func.name, "DOUBLE"))
{
if (ParserKeyword{"PRESICION"}.ignore(pos))
{
/// "DOUBLE PRESICION" can be registered in factory.
/// Also the second word will not be lost in formatImpl(...)
func.name += " PRESICION";
}
}
else if (boost::algorithm::iequals(func.name, "CHAR"))
...
///TODO can multi-word name have parameters?
Member
|
Stress test failure looks not related: server segfaults on |
Member
|
@tavplubix It is incomplete: does not work. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I hereby agree to the terms of the CLA available at: https://yandex.ru/legal/cla/?lang=en
Changelog category :
Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):
Add support for multi-word data type names (such as
DOUBLE PRECISIONandCHAR VARYING) for better SQL compatibility.Related to #10540