From a378b919af586164b3571eca5e8f0a8a6cb64da2 Mon Sep 17 00:00:00 2001 From: Ivan Blinkov Date: Tue, 18 Dec 2018 18:28:13 +0300 Subject: [PATCH] Add a bunch of aliases to DATE_DIFF interval names --- dbms/src/Parsers/ExpressionElementParsers.cpp | 17 ++++++++--------- .../00765_sql_compatibility_aliases.reference | 1 + .../00765_sql_compatibility_aliases.sql | 1 + 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/dbms/src/Parsers/ExpressionElementParsers.cpp b/dbms/src/Parsers/ExpressionElementParsers.cpp index d189b178de9..17587000a2f 100644 --- a/dbms/src/Parsers/ExpressionElementParsers.cpp +++ b/dbms/src/Parsers/ExpressionElementParsers.cpp @@ -711,22 +711,21 @@ bool ParserDateDiffExpression::parseImpl(Pos & pos, ASTPtr & node, Expected & ex return false; ++pos; - - if (ParserKeyword("SECOND").ignore(pos, expected)) + if (ParserKeyword("SECOND").ignore(pos, expected) || ParserKeyword("SS").ignore(pos, expected) || ParserKeyword("S").ignore(pos, expected)) interval_name = "second"; - else if (ParserKeyword("MINUTE").ignore(pos, expected)) + else if (ParserKeyword("MINUTE").ignore(pos, expected) || ParserKeyword("MI").ignore(pos, expected) || ParserKeyword("N").ignore(pos, expected)) interval_name = "minute"; - else if (ParserKeyword("HOUR").ignore(pos, expected)) + else if (ParserKeyword("HOUR").ignore(pos, expected) || ParserKeyword("HH").ignore(pos, expected)) interval_name = "hour"; - else if (ParserKeyword("DAY").ignore(pos, expected)) + else if (ParserKeyword("DAY").ignore(pos, expected) || ParserKeyword("DD").ignore(pos, expected) || ParserKeyword("D").ignore(pos, expected)) interval_name = "day"; - else if (ParserKeyword("WEEK").ignore(pos, expected)) + else if (ParserKeyword("WEEK").ignore(pos, expected) || ParserKeyword("WK").ignore(pos, expected) || ParserKeyword("WW").ignore(pos, expected)) interval_name = "week"; - else if (ParserKeyword("MONTH").ignore(pos, expected)) + else if (ParserKeyword("MONTH").ignore(pos, expected) || ParserKeyword("MM").ignore(pos, expected) || ParserKeyword("M").ignore(pos, expected)) interval_name = "month"; - else if (ParserKeyword("QUARTER").ignore(pos, expected)) + else if (ParserKeyword("QUARTER").ignore(pos, expected) || ParserKeyword("QQ").ignore(pos, expected) || ParserKeyword("Q").ignore(pos, expected)) interval_name = "quarter"; - else if (ParserKeyword("YEAR").ignore(pos, expected)) + else if (ParserKeyword("YEAR").ignore(pos, expected) || ParserKeyword("YYYY").ignore(pos, expected) || ParserKeyword("YY").ignore(pos, expected)) interval_name = "year"; else return false; diff --git a/dbms/tests/queries/0_stateless/00765_sql_compatibility_aliases.reference b/dbms/tests/queries/0_stateless/00765_sql_compatibility_aliases.reference index be273b59160..4e05015901b 100644 --- a/dbms/tests/queries/0_stateless/00765_sql_compatibility_aliases.reference +++ b/dbms/tests/queries/0_stateless/00765_sql_compatibility_aliases.reference @@ -22,3 +22,4 @@ fooabba fooabbafoo foo* -11 +-3 diff --git a/dbms/tests/queries/0_stateless/00765_sql_compatibility_aliases.sql b/dbms/tests/queries/0_stateless/00765_sql_compatibility_aliases.sql index 79812497656..6fea2dafe1c 100644 --- a/dbms/tests/queries/0_stateless/00765_sql_compatibility_aliases.sql +++ b/dbms/tests/queries/0_stateless/00765_sql_compatibility_aliases.sql @@ -24,3 +24,4 @@ select Trim(LEADING 'ab' FROM 'abbafooabba'); select TRIM(both 'ab' FROM 'abbafooabbafooabba'); select trim(LEADING '*[]{}|\\' FROM '\\|[[[}}}*foo*'); select DATE_DIFF(MONTH, toDate('2018-12-18'), toDate('2018-01-01')); +select DATE_DIFF(QQ, toDate('2018-12-18'), toDate('2018-01-01'));