MCPcopy Create free account
hub / github.com/ClickHouse/ClickHouse / write

Method write

src/Interpreters/ClientInfo.cpp:118–219  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

116
117
118void ClientInfo::write(WriteBuffer & out, UInt64 server_protocol_revision, bool with_client_agent) const
119{
120 if (server_protocol_revision < DBMS_MIN_REVISION_WITH_CLIENT_INFO)
121 throw Exception(ErrorCodes::LOGICAL_ERROR, "Method ClientInfo::write is called for unsupported server revision");
122
123 writeBinary(static_cast<UInt8>(query_kind), out);
124 if (empty())
125 return;
126
127 writeBinary(initial_user, out);
128 writeBinary(initial_query_id, out);
129 writeBinary(initial_address->toString(), out);
130
131 if (server_protocol_revision >= DBMS_MIN_PROTOCOL_VERSION_WITH_INITIAL_QUERY_START_TIME)
132 writeBinary(initial_query_start_time_microseconds, out);
133
134 writeBinary(static_cast<UInt8>(interface), out);
135
136 if (interface == Interface::TCP)
137 {
138 writeBinary(os_user, out);
139 writeBinary(client_hostname, out);
140 writeBinary(client_name, out);
141 writeVarUInt(client_version_major, out);
142 writeVarUInt(client_version_minor, out);
143 writeVarUInt(client_tcp_protocol_version, out);
144 }
145 else if (interface == Interface::HTTP)
146 {
147 writeBinary(static_cast<UInt8>(http_method), out);
148 writeBinary(http_user_agent, out);
149
150 if (server_protocol_revision >= DBMS_MIN_REVISION_WITH_X_FORWARDED_FOR_IN_CLIENT_INFO)
151 writeBinary(forwarded_for, out);
152
153 if (server_protocol_revision >= DBMS_MIN_REVISION_WITH_REFERER_IN_CLIENT_INFO)
154 writeBinary(http_referer, out);
155 }
156
157 if (server_protocol_revision >= DBMS_MIN_REVISION_WITH_QUOTA_KEY_IN_CLIENT_INFO)
158 writeBinary(quota_key, out);
159
160 if (server_protocol_revision >= DBMS_MIN_PROTOCOL_VERSION_WITH_DISTRIBUTED_DEPTH)
161 writeVarUInt(distributed_depth, out);
162
163 if (interface == Interface::TCP)
164 {
165 if (server_protocol_revision >= DBMS_MIN_REVISION_WITH_VERSION_PATCH)
166 writeVarUInt(client_version_patch, out);
167 }
168
169 if (server_protocol_revision >= DBMS_MIN_REVISION_WITH_OPENTELEMETRY)
170 {
171 if (client_trace_context.trace_id != UUID())
172 {
173 // Have OpenTelemetry header.
174 writeBinary(uint8_t(1), out);
175 // No point writing these numbers with variable length, because they

Callers 9

serializeMethod · 0.45
createSinkMethod · 0.45
saveModuleMethod · 0.45
executeImplMethod · 0.45
flushBlockToFileFunction · 0.45
flushToFileFunction · 0.45
addBlockImplMethod · 0.45

Calls 5

writeVarUIntFunction · 0.85
ExceptionClass · 0.70
writeBinaryFunction · 0.50
toStringMethod · 0.45
emptyMethod · 0.45

Tested by

no test coverage detected