Open
Description
Compile, link and run this modified example program, while running the input from this file: issue.zip
#include <iostream>
#include <fstream>
#include <clickhouse/client.h>
using namespace clickhouse;
int main()
{
Client client(ClientOptions().SetHost("localhost"));
std::ifstream infile("<path to file>");
std::string line;
while (std::getline(infile, line))
{
try {
client.Execute(line);
} catch (const std::exception & e) {
}
}
return 0;
}
A SEGV will happen:
Program received signal SIGSEGV, Segmentation fault.
0x00005555556c2a0c in clickhouse::TypeParser::Parse (this=0x7fffffffbf10, type=0x5555559b87c0) at contribs/clickhouse-cpp/clickhouse/types/type_parser.cpp:186
186 type_ = open_elements_.top();
(gdb) bt
#0 0x00005555556c2a0c in clickhouse::TypeParser::Parse (this=0x7fffffffbf10, type=0x5555559b87c0) at contribs/clickhouse-cpp/clickhouse/types/type_parser.cpp:186
#1 0x00005555556c330c in clickhouse::ParseTypeName (type_name="es=16, max_dynamic_paths=256))", '\000' <repeats 16 times>, "\200\002\000\001\000\000\000\000\000\000\000 \002\026Array(Nullable(Int64))\\Tuple(Nullable(String), Nulla")
at contribs/clickhouse-cpp/clickhouse/types/type_parser.cpp:305
#2 0x0000555555650305 in clickhouse::CreateColumnByType (
type_name="es=16, max_dynamic_paths=256))", '\000' <repeats 16 times>, "\200\002\000\001\000\000\000\000\000\000\000 \002\026Array(Nullable(Int64))\\Tuple(Nullable(String), Nulla", settings=...)
at contribs/clickhouse-cpp/clickhouse/columns/factory.cpp:268
#3 0x0000555555635184 in clickhouse::Client::Impl::ReadBlock (this=0x5555559b8d80, input=..., block=0x7fffffffc120) at contribs/clickhouse-cpp/clickhouse/client.cpp:639
#4 0x0000555555635642 in clickhouse::Client::Impl::ReceiveData (this=0x5555559b8d80) at contribs/clickhouse-cpp/clickhouse/client.cpp:668
#5 0x00005555556346c1 in clickhouse::Client::Impl::ReceivePacket (this=0x5555559b8d80, server_packet=0x0) at contribs/clickhouse-cpp/clickhouse/client.cpp:451
#6 0x0000555555633672 in clickhouse::Client::Impl::ExecuteQuery (this=0x5555559b8d80, query=...) at contribs/clickhouse-cpp/clickhouse/client.cpp:284
#7 0x0000555555637984 in clickhouse::Client::Execute (this=0x7fffffffcbd0, query=...) at contribs/clickhouse-cpp/clickhouse/client.cpp:1010
A proper error message should be thrown when a type is not supported instead of crashing