mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-26 01:22:04 +00:00
dbms: development [#CONV-2944].
This commit is contained in:
parent
039cf5ab06
commit
fa7a42842f
@ -31,8 +31,9 @@ class Connection
|
||||
public:
|
||||
Connection(const String & host_, UInt16 port_,
|
||||
DataTypeFactory & data_type_factory_,
|
||||
const String & client_name_ = "client",
|
||||
Protocol::Compression::Enum compression_ = Protocol::Compression::Enable)
|
||||
: host(host_), port(port_), connected(false),
|
||||
: host(host_), port(port_), client_name(client_name_), connected(false),
|
||||
server_version_major(0), server_version_minor(0), server_revision(0),
|
||||
socket(), in(new ReadBufferFromPocoSocket(socket)), out(new WriteBufferFromPocoSocket(socket)),
|
||||
query_id(0), compression(compression_), data_type_factory(data_type_factory_)
|
||||
@ -71,6 +72,8 @@ private:
|
||||
String host;
|
||||
UInt16 port;
|
||||
|
||||
String client_name;
|
||||
|
||||
bool connected;
|
||||
|
||||
String server_name;
|
||||
|
@ -49,6 +49,12 @@ namespace Protocol
|
||||
Pong = 4, /// Ответ на Ping.
|
||||
EndOfStream = 5, /// Все пакеты были переданы.
|
||||
};
|
||||
|
||||
inline const char * toString(Enum packet)
|
||||
{
|
||||
static const char * data[] = { "Hello", "Data", "Exception", "Progress", "Pong", "EndOfStream" };
|
||||
return data[packet];
|
||||
}
|
||||
}
|
||||
|
||||
/// То, что передаёт клиент.
|
||||
@ -64,6 +70,12 @@ namespace Protocol
|
||||
Cancel = 3, /// Отменить выполнение запроса.
|
||||
Ping = 4, /// Проверка живости соединения с сервером.
|
||||
};
|
||||
|
||||
inline const char * toString(Enum packet)
|
||||
{
|
||||
static const char * data[] = { "Hello", "Query", "Data", "Cancel", "Ping" };
|
||||
return data[packet];
|
||||
}
|
||||
}
|
||||
|
||||
/// Использовать ли сжатие.
|
||||
|
@ -13,6 +13,12 @@ namespace QueryProcessingStage
|
||||
WithMergeableState = 1, /// До стадии, когда результаты обработки на разных серверах можно объединить.
|
||||
Complete = 2, /// Полностью.
|
||||
};
|
||||
|
||||
inline const char * toString(Enum stage)
|
||||
{
|
||||
static const char * data[] = { "FetchColumns", "WithMergeableState", "Complete" };
|
||||
return data[stage];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ public:
|
||||
|
||||
private:
|
||||
Connection & connection;
|
||||
const String & query;
|
||||
const String query;
|
||||
QueryProcessingStage::Enum stage;
|
||||
|
||||
bool sent_query;
|
||||
|
@ -282,7 +282,7 @@ private:
|
||||
if (is_interactive)
|
||||
std::cout << "Connecting to " << host << ":" << port << "." << std::endl;
|
||||
|
||||
connection = new Connection(host, port, *context.data_type_factory, compression);
|
||||
connection = new Connection(host, port, *context.data_type_factory, "client", compression);
|
||||
|
||||
if (is_interactive)
|
||||
{
|
||||
|
@ -31,7 +31,7 @@ void Connection::connect()
|
||||
void Connection::sendHello()
|
||||
{
|
||||
writeVarUInt(Protocol::Client::Hello, *out);
|
||||
writeStringBinary(String(DBMS_NAME) + " client", *out);
|
||||
writeStringBinary((DBMS_NAME " ") + client_name, *out);
|
||||
writeVarUInt(DBMS_VERSION_MAJOR, *out);
|
||||
writeVarUInt(DBMS_VERSION_MINOR, *out);
|
||||
writeVarUInt(Revision::get(), *out);
|
||||
@ -102,7 +102,9 @@ bool Connection::ping()
|
||||
readVarUInt(pong, *in);
|
||||
|
||||
if (pong != Protocol::Server::Pong)
|
||||
throw Exception("Unknown packet from server (expected Pong)", ErrorCodes::UNKNOWN_PACKET_FROM_SERVER);
|
||||
throw Exception("Unexpected packet from server (expected Pong, got "
|
||||
+ String(Protocol::Server::toString(Protocol::Server::Enum(pong))) + ")",
|
||||
ErrorCodes::UNEXPECTED_PACKET_FROM_SERVER);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -113,7 +115,7 @@ void Connection::sendQuery(const String & query, UInt64 query_id_, UInt64 stage)
|
||||
forceConnected();
|
||||
|
||||
query_id = query_id_;
|
||||
|
||||
|
||||
writeVarUInt(Protocol::Client::Query, *out);
|
||||
writeIntBinary(query_id, *out);
|
||||
writeVarUInt(stage, *out);
|
||||
|
@ -50,6 +50,7 @@ void TCPHandler::runImpl()
|
||||
|
||||
LOG_DEBUG(log, "Query ID: " << state.query_id);
|
||||
LOG_DEBUG(log, "Query: " << state.query);
|
||||
LOG_DEBUG(log, "Requested stage: " << QueryProcessingStage::toString(state.stage));
|
||||
|
||||
/// Запрос требует приёма данных от клиента?
|
||||
if (state.io.out)
|
||||
|
@ -20,7 +20,7 @@ StorageDistributed::StorageDistributed(
|
||||
data_type_factory(data_type_factory_)
|
||||
{
|
||||
for (Addresses::const_iterator it = addresses.begin(); it != addresses.end(); ++it)
|
||||
connections.push_back(new Connection(it->host().toString(), it->port(), data_type_factory));
|
||||
connections.push_back(new Connection(it->host().toString(), it->port(), data_type_factory, "server"));
|
||||
}
|
||||
|
||||
|
||||
@ -45,8 +45,6 @@ BlockInputStreams StorageDistributed::read(
|
||||
formatAST(select, s, 0, false);
|
||||
String modified_query = s.str();
|
||||
|
||||
std::cerr << modified_query << std::endl;
|
||||
|
||||
BlockInputStreams res;
|
||||
|
||||
for (Connections::iterator it = connections.begin(); it != connections.end(); ++it)
|
||||
|
Loading…
Reference in New Issue
Block a user