v.25.10Improvement

When HTTP clients set the header X-ClickHouse-100-Continue

When HTTP clients set the header X-ClickHouse-100-Continue: defer in addition to Expect: 100-continue, ClickHouse doesn't send send a 100 Continue response to the client until after quota validation passes, preventing waste of network bandwidth from transmitting request bodies that will be thrown away anyways. This is relevant for INSERT queries where the query can be sent in the URL query string and the data is sent in the request body. Aborting a request without sending the full body prevents connection reuse with HTTP/1.1, but the additional latency introduced by opening new connections is usually insignificant compared to total INSERT duration with large amounts of data. #84304 (c-end).
ClickHouse now supports deferring the 100 Continue HTTP response using the X-ClickHouse-100-Continue: defer header to delay sending the response until after quota validation.

Why it matters

This feature prevents unnecessary network bandwidth usage by delaying the 100 Continue response until quota verification passes, avoiding transmission of large request bodies that would be rejected anyway. It is especially useful for INSERT queries where query information is in the URL and large data payloads are sent in the request body.

How to use it

Clients should set the HTTP headers Expect: 100-continue and X-ClickHouse-100-Continue: defer when sending requests. ClickHouse will then withhold the 100 Continue response until after the quota check completes.