defaults to notchunked, add docs to server's and client's configs

This commit is contained in:
Yakov Olkhovskiy 2024-07-10 00:20:11 +00:00
parent 9db80a6e2d
commit 2794b7bf84
9 changed files with 48 additions and 18 deletions

View File

@ -666,8 +666,8 @@ int mainEntryClickHouseBenchmark(int argc, char ** argv)
Strings hosts = options.count("host") ? options["host"].as<Strings>() : Strings({"localhost"}); Strings hosts = options.count("host") ? options["host"].as<Strings>() : Strings({"localhost"});
String proto_send_chunked {"chunked"}; String proto_send_chunked {"notchunked"};
String proto_recv_chunked {"chunked"}; String proto_recv_chunked {"notchunked"};
if (options.count("proto_caps")) if (options.count("proto_caps"))
{ {

View File

@ -37,6 +37,21 @@
<production>{display_name} \e[1;31m:)\e[0m </production> <!-- if it matched to the substring "production" in the server display name --> <production>{display_name} \e[1;31m:)\e[0m </production> <!-- if it matched to the substring "production" in the server display name -->
</prompt_by_server_display_name> </prompt_by_server_display_name>
<!-- Chunked capabilities for native protocol by client.
Can be enabled separately for send and receive channels.
Supported modes:
- chunked - client will only work with server supporting chunked protocol;
- chunked_optional - client prefer server to enable chunked protocol, but can switch to notchunked if server does not support this;
- notchunked - client will only work with server supporting notchunked protocol (current default);
- notchunked_optional - client prefer server notchunked protocol, but can switch to chunked if server does not support this.
-->
<!--
<proto_caps>
<send>chunked_optional</send>
<recv>chunked_optional</recv>
</proto_caps>
-->
<!-- <!--
Settings adjustable via command-line parameters Settings adjustable via command-line parameters
can take their defaults from that config file, see examples: can take their defaults from that config file, see examples:

View File

@ -143,6 +143,21 @@
--> -->
<tcp_port>9000</tcp_port> <tcp_port>9000</tcp_port>
<!-- Chunked capabilities for native protocol by server.
Can be enabled separately for send and receive channels.
Supported modes:
- chunked - server requires from client to have chunked enabled;
- chunked_optional - server supports both chunked and notchunked protocol;
- notchunked - server requires from client notchunked protocol (current default);
- notchunked_optional - server supports both chunked and notchunked protocol.
-->
<!--
<proto_caps>
<send>notchunked_optional</send>
<recv>notchunked_optional</recv>
</proto_caps>
-->
<!-- Compatibility with MySQL protocol. <!-- Compatibility with MySQL protocol.
ClickHouse will pretend to be MySQL for applications connecting to this port. ClickHouse will pretend to be MySQL for applications connecting to this port.
--> -->

View File

@ -107,8 +107,8 @@ ConnectionParameters::ConnectionParameters(const Poco::Util::AbstractConfigurati
} }
} }
proto_send_chunked = config.getString("proto_caps.send", "chunked"); proto_send_chunked = config.getString("proto_caps.send", "notchunked");
proto_recv_chunked = config.getString("proto_caps.recv", "chunked"); proto_recv_chunked = config.getString("proto_caps.recv", "notchunked");
quota_key = config.getString("quota_key", ""); quota_key = config.getString("quota_key", "");

View File

@ -20,8 +20,8 @@ struct ConnectionParameters
std::string default_database; std::string default_database;
std::string user; std::string user;
std::string password; std::string password;
std::string proto_send_chunked = "chunked"; std::string proto_send_chunked = "notchunked";
std::string proto_recv_chunked = "chunked"; std::string proto_recv_chunked = "notchunked";
std::string quota_key; std::string quota_key;
SSHKey ssh_private_key; SSHKey ssh_private_key;
std::string jwt; std::string jwt;

View File

@ -236,8 +236,8 @@ void registerDictionarySourceClickHouse(DictionarySourceFactory & factory)
.host = host, .host = host,
.user = named_collection->getAnyOrDefault<String>({"user", "username"}, "default"), .user = named_collection->getAnyOrDefault<String>({"user", "username"}, "default"),
.password = named_collection->getOrDefault<String>("password", ""), .password = named_collection->getOrDefault<String>("password", ""),
.proto_send_chunked = named_collection->getOrDefault<String>("proto_send_chunked", "chunked"), .proto_send_chunked = named_collection->getOrDefault<String>("proto_send_chunked", "notchunked"),
.proto_recv_chunked = named_collection->getOrDefault<String>("proto_recv_chunked", "chunked"), .proto_recv_chunked = named_collection->getOrDefault<String>("proto_recv_chunked", "notchunked"),
.quota_key = named_collection->getOrDefault<String>("quota_key", ""), .quota_key = named_collection->getOrDefault<String>("quota_key", ""),
.db = named_collection->getAnyOrDefault<String>({"db", "database"}, default_database), .db = named_collection->getAnyOrDefault<String>({"db", "database"}, default_database),
.table = named_collection->getOrDefault<String>("table", ""), .table = named_collection->getOrDefault<String>("table", ""),
@ -262,8 +262,8 @@ void registerDictionarySourceClickHouse(DictionarySourceFactory & factory)
.host = host, .host = host,
.user = config.getString(settings_config_prefix + ".user", "default"), .user = config.getString(settings_config_prefix + ".user", "default"),
.password = config.getString(settings_config_prefix + ".password", ""), .password = config.getString(settings_config_prefix + ".password", ""),
.proto_send_chunked = config.getString(settings_config_prefix + ".proto_caps.send", "chunked"), .proto_send_chunked = config.getString(settings_config_prefix + ".proto_caps.send", "notchunked"),
.proto_recv_chunked = config.getString(settings_config_prefix + ".proto_caps.recv", "chunked"), .proto_recv_chunked = config.getString(settings_config_prefix + ".proto_caps.recv", "notchunked"),
.quota_key = config.getString(settings_config_prefix + ".quota_key", ""), .quota_key = config.getString(settings_config_prefix + ".quota_key", ""),
.db = config.getString(settings_config_prefix + ".db", default_database), .db = config.getString(settings_config_prefix + ".db", default_database),
.table = config.getString(settings_config_prefix + ".table", ""), .table = config.getString(settings_config_prefix + ".table", ""),

View File

@ -113,8 +113,8 @@ Cluster::Address::Address(
secure = ConfigHelper::getBool(config, config_prefix + ".secure", false, /* empty_as */true) ? Protocol::Secure::Enable : Protocol::Secure::Disable; secure = ConfigHelper::getBool(config, config_prefix + ".secure", false, /* empty_as */true) ? Protocol::Secure::Enable : Protocol::Secure::Disable;
priority = Priority{config.getInt(config_prefix + ".priority", 1)}; priority = Priority{config.getInt(config_prefix + ".priority", 1)};
proto_send_chunked = config.getString(config_prefix + ".proto_caps.send", "chunked"); proto_send_chunked = config.getString(config_prefix + ".proto_caps.send", "notchunked");
proto_recv_chunked = config.getString(config_prefix + ".proto_caps.recv", "chunked"); proto_recv_chunked = config.getString(config_prefix + ".proto_caps.recv", "notchunked");
const char * port_type = secure == Protocol::Secure::Enable ? "tcp_port_secure" : "tcp_port"; const char * port_type = secure == Protocol::Secure::Enable ? "tcp_port_secure" : "tcp_port";
auto default_port = config.getInt(port_type, 0); auto default_port = config.getInt(port_type, 0);

View File

@ -114,8 +114,8 @@ public:
UInt16 port{0}; UInt16 port{0};
String user; String user;
String password; String password;
String proto_send_chunked = "chunked"; String proto_send_chunked = "notchunked";
String proto_recv_chunked = "chunked"; String proto_recv_chunked = "notchunked";
String quota_key; String quota_key;
/// For inter-server authorization /// For inter-server authorization

View File

@ -310,8 +310,8 @@ void TCPHandler::runImpl()
return chunked_srv; return chunked_srv;
}; };
bool out_chunked = is_chunked(server.config().getString("proto_caps.send", "chunked_optional"), proto_recv_chunked_cl, "send"); bool out_chunked = is_chunked(server.config().getString("proto_caps.send", "notchunked"), proto_recv_chunked_cl, "send");
bool in_chunked = is_chunked(server.config().getString("proto_caps.recv", "chunked_optional"), proto_send_chunked_cl, "recv"); bool in_chunked = is_chunked(server.config().getString("proto_caps.recv", "notchunked"), proto_send_chunked_cl, "recv");
if (out_chunked) if (out_chunked)
out->enableChunked(); out->enableChunked();
@ -1660,8 +1660,8 @@ void TCPHandler::sendHello()
writeVarUInt(VERSION_PATCH, *out); writeVarUInt(VERSION_PATCH, *out);
if (client_tcp_protocol_version >= DBMS_MIN_PROTOCOL_VERSION_WITH_CHUNKED_PACKETS) if (client_tcp_protocol_version >= DBMS_MIN_PROTOCOL_VERSION_WITH_CHUNKED_PACKETS)
{ {
writeStringBinary(server.config().getString("proto_caps.send", "chunked"), *out); writeStringBinary(server.config().getString("proto_caps.send", "notchunked"), *out);
writeStringBinary(server.config().getString("proto_caps.recv", "chunked"), *out); writeStringBinary(server.config().getString("proto_caps.recv", "notchunked"), *out);
} }
if (client_tcp_protocol_version >= DBMS_MIN_PROTOCOL_VERSION_WITH_PASSWORD_COMPLEXITY_RULES) if (client_tcp_protocol_version >= DBMS_MIN_PROTOCOL_VERSION_WITH_PASSWORD_COMPLEXITY_RULES)
{ {