in lib/elastic_apm/sql/tokenizer.rb [105:130]
def scan_keyword_or_identifier(possible_keyword:)
while (peek = peek_char)
if peek == '_' || peek == '$' || peek =~ DIGIT
possible_keyword = false
next next_char
end
next next_char if ALPHA.match?(peek)
break
end
return IDENT unless possible_keyword
snap = text
if snap.length < KEYWORD_MIN_LENGTH || snap.length > KEYWORD_MAX_LENGTH
return IDENT
end
keyword = KEYWORDS[snap.length].find { |kw| snap.upcase == kw.to_s }
return keyword if keyword
IDENT
end