mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
MDEV-34860 Implement MAX_EXECUTION_TIME hint
It places a limit N (a timeout value in milliseconds) on how long a statement is permitted to execute before the server terminates it. Syntax: SELECT /*+ MAX_EXECUTION_TIME(milliseconds) */ ... Only top-level SELECT statements support the hint.
This commit is contained in:
@@ -57,11 +57,30 @@ Optimizer_hint_tokenizer::find_keyword(const LEX_CSTRING &str)
|
||||
return TokenID::keyword_QB_NAME;
|
||||
break;
|
||||
|
||||
case 18:
|
||||
if ("MAX_EXECUTION_TIME"_Lex_ident_column.streq(str))
|
||||
return TokenID::keyword_MAX_EXECUTION_TIME;
|
||||
break;
|
||||
|
||||
case 21:
|
||||
if ("NO_RANGE_OPTIMIZATION"_Lex_ident_column.streq(str))
|
||||
return TokenID::keyword_NO_RANGE_OPTIMIZATION;
|
||||
break;
|
||||
}
|
||||
|
||||
if (str.length > 0 && (str.str[0] >= '0' && str.str[0] <= '9'))
|
||||
{
|
||||
/*
|
||||
If all characters are digits, qualify the token as a number,
|
||||
otherwise as an identifier
|
||||
*/
|
||||
for(size_t i = 1; i < str.length; i++)
|
||||
{
|
||||
if (str.str[i] < '0' || str.str[i] > '9')
|
||||
return TokenID::tIDENT;
|
||||
}
|
||||
return TokenID::tUNSIGNED_NUMBER;
|
||||
}
|
||||
return TokenID::tIDENT;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user