Describe the bug
ClickHouse version: 26.3.10.62
When a client sends a request to ClickHouse through chproxy using JDBC, and the request contains compress=1, SQL execution errors are not returned correctly to the JDBC client.
For example, ClickHouse returns an exception header:
X-ClickHouse-Exception-Code: 49
When connecting directly to ClickHouse Server, the detailed error message is returned correctly in the HTTP body. With compress=1, the body uses ClickHouse's internal compressed format and does not include a standard Content-Encoding header.
However, when the same request goes through chproxy, the response becomes:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
X-ClickHouse-Exception-Code: 49
X-ClickHouse-Exception-Tag: ...
X-ClickHouse-Query-Id: ...
X-ClickHouse-Summary: ...
Content-Length: 0
As a result, the JDBC client can see the exception header but cannot read the detailed error message.
Direct ClickHouse Response
When connecting directly to ClickHouse Server with compress=1, a failed SQL query returns a valid error response:
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain; charset=UTF-8
Transfer-Encoding: chunked
X-ClickHouse-Exception-Code: 49
X-ClickHouse-Exception-Tag: ...
X-ClickHouse-Query-Id: test-jdbc-like
X-ClickHouse-Summary: {...}
The HTTP body contains the detailed error message in ClickHouse's internal compressed format.
Response Through chproxy
The same request through chproxy returns:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=UTF-8
X-ClickHouse-Exception-Code: 49
X-ClickHouse-Exception-Tag: ...
X-ClickHouse-Query-Id: ...
X-ClickHouse-Summary: {...}
Content-Length: 0
The ClickHouse exception headers are preserved, but:
HTTP status changes from 500 to 200
response body is lost
Content-Length becomes 0
Describe the bug
ClickHouse version:
26.3.10.62When a client sends a request to ClickHouse through chproxy using JDBC, and the request contains
compress=1, SQL execution errors are not returned correctly to the JDBC client.For example, ClickHouse returns an exception header: