aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/clickhouse/src/Parsers/toOneLineQuery.cpp
blob: 5747bd66d4d907144158a1b9c6ad246e050c410e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <Parsers/toOneLineQuery.h>
#include <Parsers/Lexer.h>

namespace DB
{

String toOneLineQuery(const String & query)
{
    String res;
    const char * begin = query.data();
    const char * end = begin + query.size();

    Lexer lexer(begin, end);
    Token token = lexer.nextToken();
    for (; !token.isEnd(); token = lexer.nextToken())
    {
        if (token.type == TokenType::Whitespace)
        {
            res += ' ';
        }
        else if (token.type == TokenType::Comment)
        {
            res.append(token.begin, token.end);
            if (token.end < end && *token.end == '\n')
                res += '\n';
        }
        else
            res.append(token.begin, token.end);
    }

    return res;
}

}