20.7.1.4189

```
clickhouse-client -m

:) select 1
:-] ---abbbb
:-] , 2 b
:-] ;

SELECT 1

┌─1─┐
│ 1 │
└───┘
```

19.13.7.57
```
clickhouse-client -m
select 1
:-] --xxxx
:-] ,2 b
:-] ;

SELECT
    1,
    2 AS b

┌─1─┬─b─┐
│ 1 │ 2 │
└───┴───┘
```
{
    if (!ready)
        return std::nullopt;
    std::string_view last_word;
    auto last_word_pos = prefix.find_last_of(word_break_characters);
    if (std::string::npos == last_word_pos)
        last_word = prefix;
    else
        last_word = std::string_view(prefix).substr(last_word_pos + 1, std::string::npos);
    
    
    if (std::none_of(prefix.begin(), prefix.end(), [&](auto c) { return c >= 'A' && c <= 'Z'; }))
        return std::equal_range(
            words_no_case.begin(), words_no_case.end(), last_word, [prefix_length](std::string_view s, std::string_view prefix_searched)
            {
                return strncasecmp(s.data(), prefix_searched.data(), prefix_length) < 0;
            });
    else
        return std::equal_range(words.begin(), words.end(), last_word, [prefix_length](std::string_view s, std::string_view prefix_searched)
        {
            return strncmp(s.data(), prefix_searched.data(), prefix_length) < 0;
        });
}
LineReader::LineReader(const String & history_file_path_, bool multiline_, Patterns extenders_, Patterns delimiters_)
    : history_file_path(history_file_path_), multiline(multiline_), extenders(std::move(extenders_)), delimiters(std::move(delimiters_))
{
    
}
String LineReader::readLine(const String & first_prompt, const String & second_prompt)