aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/clickhouse/src/Functions/visitParamExtractString.cpp
blob: 50d5f345189351f63b2a72ddf19cab70b89022d4 (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
#include <Functions/FunctionFactory.h>
#include <Functions/FunctionsVisitParam.h>
#include <Functions/FunctionsStringSearchToString.h>


namespace DB
{

struct ExtractString
{
    static void extract(const UInt8 * pos, const UInt8 * end, ColumnString::Chars & res_data)
    {
        size_t old_size = res_data.size();
        ReadBufferFromMemory in(pos, end - pos);
        if (!tryReadJSONStringInto(res_data, in))
            res_data.resize(old_size);
    }
};

struct NameSimpleJSONExtractString { static constexpr auto name = "simpleJSONExtractString"; };
using FunctionSimpleJSONExtractString = FunctionsStringSearchToString<ExtractParamToStringImpl<ExtractString>, NameSimpleJSONExtractString>;

REGISTER_FUNCTION(VisitParamExtractString)
{
    factory.registerFunction<FunctionSimpleJSONExtractString>();
    factory.registerAlias("visitParamExtractString", "simpleJSONExtractString");
}

}