Skip to content

Commit ae4101b

Browse files
Update fuzzQuery.cpp
1 parent 82340cf commit ae4101b

1 file changed

Lines changed: 9 additions & 14 deletions

File tree

src/Functions/fuzzQuery.cpp

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -85,19 +85,16 @@ class FunctionFuzzQuery : public IFunction
8585
auto col_res = ColumnString::create();
8686

8787
const ColumnString::Chars & data = assert_cast<const ColumnString &>(col_query_const->getDataColumn()).getChars();
88+
const char * begin = reinterpret_cast<const char *>(data.data());
89+
const char * end = begin + data.size();
90+
ParserQuery parser(end, false, implicit_select);
91+
ASTPtr ast = parseQuery(parser, begin, end, "fuzzQuery", max_query_size, max_parser_depth, max_parser_backtracks);
8892

8993
for (size_t i = 0; i < input_rows_count; ++i)
9094
{
91-
const char * begin = reinterpret_cast<const char *>(data.data());
92-
const char * end = begin + data.size();
93-
94-
ParserQuery parser(end, false, implicit_select);
95-
ASTPtr ast = parseQuery(parser, begin, end, /*query_description*/ {}, max_query_size, max_parser_depth, max_parser_backtracks);
96-
97-
ASTPtr fuzzed_ast;
95+
ASTPtr fuzzed_ast = ast->clone();
9896
{
9997
auto [fuzzer, lock] = getGlobalASTFuzzer();
100-
fuzzed_ast = ast->clone();
10198
fuzzer->fuzzMain(fuzzed_ast);
10299
}
103100

@@ -120,24 +117,22 @@ class FunctionFuzzQuery : public IFunction
120117
size_t input_rows_count) const
121118
{
122119
size_t prev_offset = 0;
123-
124120
for (size_t i = 0; i < input_rows_count; ++i)
125121
{
126122
const char * begin = reinterpret_cast<const char *>(&data[prev_offset]);
127-
const char * end = begin + offsets[i] - prev_offset;
123+
const char * end = reinterpret_cast<const char *>(&data[offsets[i]]);
128124

129125
ParserQuery parser(end, false, implicit_select);
130-
ASTPtr ast = parseQuery(parser, begin, end, /*query_description*/ {}, max_query_size, max_parser_depth, max_parser_backtracks);
126+
ASTPtr ast = parseQuery(parser, begin, end, "fuzzQuery", max_query_size, max_parser_depth, max_parser_backtracks);
131127

132128
ASTPtr fuzzed_ast;
133129
{
134130
auto [fuzzer, lock] = getGlobalASTFuzzer();
135-
fuzzed_ast = ast->clone();
136-
fuzzer->fuzzMain(fuzzed_ast);
131+
fuzzer->fuzzMain(ast);
137132
}
138133

139134
WriteBufferFromOwnString buf;
140-
fuzzed_ast->format(buf, IAST::FormatSettings(/*one_line=*/true));
135+
ast->format(buf, IAST::FormatSettings(/*one_line=*/true));
141136
col_res.insertData(buf.str().data(), buf.str().size());
142137
prev_offset = offsets[i];
143138
}

0 commit comments

Comments
 (0)