diff --git a/src/Functions/globalVariable.cpp b/src/Functions/globalVariable.cpp index 992ce25239e..fc6796f1fbd 100644 --- a/src/Functions/globalVariable.cpp +++ b/src/Functions/globalVariable.cpp @@ -52,7 +52,7 @@ public: String variable_name = assert_cast(*arguments[0].column).getValue(); auto variable = global_variable_map.find(Poco::toLower(variable_name)); if (variable == global_variable_map.end()) - return std::make_shared(); + return std::make_shared(); else return variable->second.type; } @@ -63,10 +63,8 @@ public: String variable_name = assert_cast(*col.column).getValue(); auto variable = global_variable_map.find(Poco::toLower(variable_name)); - Field val; - if (variable == global_variable_map.end()) - val = ""; - else + Field val = 0; + if (variable != global_variable_map.end()) val = variable->second.value; auto & result_col = block.getByPosition(result); diff --git a/src/Parsers/ExpressionElementParsers.cpp b/src/Parsers/ExpressionElementParsers.cpp index 819d028d6dd..aa760fc9483 100644 --- a/src/Parsers/ExpressionElementParsers.cpp +++ b/src/Parsers/ExpressionElementParsers.cpp @@ -1270,6 +1270,19 @@ bool ParserMySQLGlobalVariable::parseImpl(Pos & pos, ASTPtr & node, Expected & e String name(pos->begin, pos->end); ++pos; + /// SELECT @@session|global.variable style + if (pos->type == TokenType::Dot) + { + ++pos; + + if (pos->type != TokenType::BareWord) + { + expected.add(pos, "variable name"); + return false; + } + name = String(pos->begin, pos->end); + } + auto name_literal = std::make_shared(name); auto expr_list_args = std::make_shared(); diff --git a/tests/queries/0_stateless/01337_mysql_global_variables.reference b/tests/queries/0_stateless/01337_mysql_global_variables.reference index b01a2e3dc52..488a077d125 100644 --- a/tests/queries/0_stateless/01337_mysql_global_variables.reference +++ b/tests/queries/0_stateless/01337_mysql_global_variables.reference @@ -1,4 +1,4 @@ - +0 "max_allowed_packet" 67108864 "MAX_ALLOWED_PACKET" @@ -7,3 +7,5 @@ 67108864,0 67108864,1 67108864,2 +"auto_increment_increment" +0 diff --git a/tests/queries/0_stateless/01337_mysql_global_variables.sql b/tests/queries/0_stateless/01337_mysql_global_variables.sql index 5977b0df6a6..fae7a51ba49 100644 --- a/tests/queries/0_stateless/01337_mysql_global_variables.sql +++ b/tests/queries/0_stateless/01337_mysql_global_variables.sql @@ -2,3 +2,4 @@ SELECT @@test; -- empty string SELECT @@max_allowed_packet FORMAT CSVWithNames; SELECT @@MAX_ALLOWED_PACKET FORMAT CSVWithNames; SELECT @@max_allowed_packet, number FROM system.numbers LIMIT 3 FORMAT CSVWithNames; +SELECT @@session.auto_increment_increment FORMAT CSVWithNames;