mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-10 01:25:21 +00:00
Review #51946 and partially revert it
This commit is contained in:
parent
6e502a899d
commit
c7ae1afb8f
@ -58,7 +58,7 @@ Connection: Close
|
|||||||
Content-Type: text/tab-separated-values; charset=UTF-8
|
Content-Type: text/tab-separated-values; charset=UTF-8
|
||||||
X-ClickHouse-Server-Display-Name: clickhouse.ru-central1.internal
|
X-ClickHouse-Server-Display-Name: clickhouse.ru-central1.internal
|
||||||
X-ClickHouse-Query-Id: 5abe861c-239c-467f-b955-8a201abb8b7f
|
X-ClickHouse-Query-Id: 5abe861c-239c-467f-b955-8a201abb8b7f
|
||||||
X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334,"peak_memory_usage":"0"}
|
X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
|
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@ -288,9 +288,9 @@ Similarly, you can use ClickHouse sessions in the HTTP protocol. To do this, you
|
|||||||
You can receive information about the progress of a query in `X-ClickHouse-Progress` response headers. To do this, enable [send_progress_in_http_headers](../operations/settings/settings.md#settings-send_progress_in_http_headers). Example of the header sequence:
|
You can receive information about the progress of a query in `X-ClickHouse-Progress` response headers. To do this, enable [send_progress_in_http_headers](../operations/settings/settings.md#settings-send_progress_in_http_headers). Example of the header sequence:
|
||||||
|
|
||||||
``` text
|
``` text
|
||||||
X-ClickHouse-Progress: {"read_rows":"2752512","read_bytes":"240570816","total_rows_to_read":"8880128","elapsed_ns":"662334","peak_memory_usage":"4371480"}
|
X-ClickHouse-Progress: {"read_rows":"2752512","read_bytes":"240570816","total_rows_to_read":"8880128","elapsed_ns":"662334"}
|
||||||
X-ClickHouse-Progress: {"read_rows":"5439488","read_bytes":"482285394","total_rows_to_read":"8880128","elapsed_ns":"992334","peak_memory_usage":"13621616"}
|
X-ClickHouse-Progress: {"read_rows":"5439488","read_bytes":"482285394","total_rows_to_read":"8880128","elapsed_ns":"992334"}
|
||||||
X-ClickHouse-Progress: {"read_rows":"8783786","read_bytes":"819092887","total_rows_to_read":"8880128","elapsed_ns":"1232334","peak_memory_usage":"23155600"}
|
X-ClickHouse-Progress: {"read_rows":"8783786","read_bytes":"819092887","total_rows_to_read":"8880128","elapsed_ns":"1232334"}
|
||||||
```
|
```
|
||||||
|
|
||||||
Possible header fields:
|
Possible header fields:
|
||||||
@ -439,7 +439,7 @@ $ curl -v 'http://localhost:8123/predefined_query'
|
|||||||
< X-ClickHouse-Format: Template
|
< X-ClickHouse-Format: Template
|
||||||
< X-ClickHouse-Timezone: Asia/Shanghai
|
< X-ClickHouse-Timezone: Asia/Shanghai
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
# HELP "Query" "Number of executing queries"
|
# HELP "Query" "Number of executing queries"
|
||||||
# TYPE "Query" counter
|
# TYPE "Query" counter
|
||||||
@ -604,7 +604,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/hi'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
Say Hi!%
|
Say Hi!%
|
||||||
@ -644,7 +644,7 @@ $ curl -v -H 'XXX:xxx' 'http://localhost:8123/get_config_static_handler'
|
|||||||
< Content-Type: text/plain; charset=UTF-8
|
< Content-Type: text/plain; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>%
|
<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>%
|
||||||
@ -696,7 +696,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/get_absolute_path_static_handler'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
<html><body>Absolute Path File</body></html>
|
<html><body>Absolute Path File</body></html>
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
@ -715,7 +715,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/get_relative_path_static_handler'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
<html><body>Relative Path File</body></html>
|
<html><body>Relative Path File</body></html>
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
@ -800,4 +800,3 @@ $ curl 'http://localhost:8123/?query=SELECT+number,+throwIf(number>2)+from+syste
|
|||||||
<exception>Code: 395. DB::Exception: Value passed to 'throwIf' function is non-zero: while executing 'FUNCTION throwIf(greater(number, 2) :: 2) -> throwIf(greater(number, 2)) UInt8 : 1'. (FUNCTION_THROW_IF_VALUE_IS_NON_ZERO) (version 23.8.1.1)</exception>
|
<exception>Code: 395. DB::Exception: Value passed to 'throwIf' function is non-zero: while executing 'FUNCTION throwIf(greater(number, 2) :: 2) -> throwIf(greater(number, 2)) UInt8 : 1'. (FUNCTION_THROW_IF_VALUE_IS_NON_ZERO) (version 23.8.1.1)</exception>
|
||||||
</result>
|
</result>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ Connection: Close
|
|||||||
Content-Type: text/tab-separated-values; charset=UTF-8
|
Content-Type: text/tab-separated-values; charset=UTF-8
|
||||||
X-ClickHouse-Server-Display-Name: clickhouse.ru-central1.internal
|
X-ClickHouse-Server-Display-Name: clickhouse.ru-central1.internal
|
||||||
X-ClickHouse-Query-Id: 5abe861c-239c-467f-b955-8a201abb8b7f
|
X-ClickHouse-Query-Id: 5abe861c-239c-467f-b955-8a201abb8b7f
|
||||||
X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
|
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@ -267,9 +267,9 @@ $ echo 'SELECT number FROM system.numbers LIMIT 10' | curl 'http://localhost:812
|
|||||||
Прогресс выполнения запроса можно отслеживать с помощью заголовков ответа `X-ClickHouse-Progress`. Для этого включите [send_progress_in_http_headers](../operations/settings/settings.md#settings-send_progress_in_http_headers). Пример последовательности заголовков:
|
Прогресс выполнения запроса можно отслеживать с помощью заголовков ответа `X-ClickHouse-Progress`. Для этого включите [send_progress_in_http_headers](../operations/settings/settings.md#settings-send_progress_in_http_headers). Пример последовательности заголовков:
|
||||||
|
|
||||||
``` text
|
``` text
|
||||||
X-ClickHouse-Progress: {"read_rows":"2752512","read_bytes":"240570816","total_rows_to_read":"8880128","elapsed_ns":"662334","peak_memory_usage":"4371480"}
|
X-ClickHouse-Progress: {"read_rows":"2752512","read_bytes":"240570816","total_rows_to_read":"8880128","elapsed_ns":"662334"}
|
||||||
X-ClickHouse-Progress: {"read_rows":"5439488","read_bytes":"482285394","total_rows_to_read":"8880128","elapsed_ns":"992334","peak_memory_usage":"13621616"}
|
X-ClickHouse-Progress: {"read_rows":"5439488","read_bytes":"482285394","total_rows_to_read":"8880128","elapsed_ns":"992334"}
|
||||||
X-ClickHouse-Progress: {"read_rows":"8783786","read_bytes":"819092887","total_rows_to_read":"8880128","elapsed_ns":"1232334","peak_memory_usage":"23155600"}
|
X-ClickHouse-Progress: {"read_rows":"8783786","read_bytes":"819092887","total_rows_to_read":"8880128","elapsed_ns":"1232334"}
|
||||||
```
|
```
|
||||||
|
|
||||||
Возможные поля заголовка:
|
Возможные поля заголовка:
|
||||||
@ -530,7 +530,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/hi'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
Say Hi!%
|
Say Hi!%
|
||||||
@ -570,7 +570,7 @@ $ curl -v -H 'XXX:xxx' 'http://localhost:8123/get_config_static_handler'
|
|||||||
< Content-Type: text/plain; charset=UTF-8
|
< Content-Type: text/plain; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>%
|
<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>%
|
||||||
@ -622,7 +622,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/get_absolute_path_static_handler'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
<html><body>Absolute Path File</body></html>
|
<html><body>Absolute Path File</body></html>
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
@ -641,7 +641,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/get_relative_path_static_handler'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
<html><body>Relative Path File</body></html>
|
<html><body>Relative Path File</body></html>
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
|
@ -53,7 +53,7 @@ Connection: Close
|
|||||||
Content-Type: text/tab-separated-values; charset=UTF-8
|
Content-Type: text/tab-separated-values; charset=UTF-8
|
||||||
X-ClickHouse-Server-Display-Name: clickhouse.ru-central1.internal
|
X-ClickHouse-Server-Display-Name: clickhouse.ru-central1.internal
|
||||||
X-ClickHouse-Query-Id: 5abe861c-239c-467f-b955-8a201abb8b7f
|
X-ClickHouse-Query-Id: 5abe861c-239c-467f-b955-8a201abb8b7f
|
||||||
X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
|
|
||||||
1
|
1
|
||||||
```
|
```
|
||||||
@ -262,9 +262,9 @@ $ echo 'SELECT number FROM system.numbers LIMIT 10' | curl 'http://localhost:812
|
|||||||
您可以在`X-ClickHouse-Progress`响应头中收到查询进度的信息。为此,启用[Http Header携带进度](../operations/settings/settings.md#settings-send_progress_in_http_headers)。示例:
|
您可以在`X-ClickHouse-Progress`响应头中收到查询进度的信息。为此,启用[Http Header携带进度](../operations/settings/settings.md#settings-send_progress_in_http_headers)。示例:
|
||||||
|
|
||||||
``` text
|
``` text
|
||||||
X-ClickHouse-Progress: {"read_rows":"2752512","read_bytes":"240570816","total_rows_to_read":"8880128","elapsed_ns":"662334","peak_memory_usage":"4371480"}
|
X-ClickHouse-Progress: {"read_rows":"2752512","read_bytes":"240570816","total_rows_to_read":"8880128","elapsed_ns":"662334"}
|
||||||
X-ClickHouse-Progress: {"read_rows":"5439488","read_bytes":"482285394","total_rows_to_read":"8880128","elapsed_ns":"992334","peak_memory_usage":"13621616"}
|
X-ClickHouse-Progress: {"read_rows":"5439488","read_bytes":"482285394","total_rows_to_read":"8880128","elapsed_ns":"992334"}
|
||||||
X-ClickHouse-Progress: {"read_rows":"8783786","read_bytes":"819092887","total_rows_to_read":"8880128","elapsed_ns":"1232334","peak_memory_usage":"23155600"}
|
X-ClickHouse-Progress: {"read_rows":"8783786","read_bytes":"819092887","total_rows_to_read":"8880128","elapsed_ns":"1232334"}
|
||||||
```
|
```
|
||||||
|
|
||||||
显示字段信息:
|
显示字段信息:
|
||||||
@ -363,7 +363,7 @@ $ curl -v 'http://localhost:8123/predefined_query'
|
|||||||
< X-ClickHouse-Format: Template
|
< X-ClickHouse-Format: Template
|
||||||
< X-ClickHouse-Timezone: Asia/Shanghai
|
< X-ClickHouse-Timezone: Asia/Shanghai
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
# HELP "Query" "Number of executing queries"
|
# HELP "Query" "Number of executing queries"
|
||||||
# TYPE "Query" counter
|
# TYPE "Query" counter
|
||||||
@ -521,7 +521,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/hi'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
Say Hi!%
|
Say Hi!%
|
||||||
@ -561,7 +561,7 @@ $ curl -v -H 'XXX:xxx' 'http://localhost:8123/get_config_static_handler'
|
|||||||
< Content-Type: text/plain; charset=UTF-8
|
< Content-Type: text/plain; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>%
|
<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>%
|
||||||
@ -613,7 +613,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/get_absolute_path_static_handler'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
<html><body>Absolute Path File</body></html>
|
<html><body>Absolute Path File</body></html>
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
@ -632,7 +632,7 @@ $ curl -vv -H 'XXX:xxx' 'http://localhost:8123/get_relative_path_static_handler'
|
|||||||
< Content-Type: text/html; charset=UTF-8
|
< Content-Type: text/html; charset=UTF-8
|
||||||
< Transfer-Encoding: chunked
|
< Transfer-Encoding: chunked
|
||||||
< Keep-Alive: timeout=3
|
< Keep-Alive: timeout=3
|
||||||
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334","peak_memory_usage":"0"}
|
< X-ClickHouse-Summary: {"read_rows":"0","read_bytes":"0","written_rows":"0","written_bytes":"0","total_rows_to_read":"0","elapsed_ns":"662334"}
|
||||||
<
|
<
|
||||||
<html><body>Relative Path File</body></html>
|
<html><body>Relative Path File</body></html>
|
||||||
* Connection #0 to host localhost left intact
|
* Connection #0 to host localhost left intact
|
||||||
|
@ -23,7 +23,7 @@ struct ThreadEventData
|
|||||||
UInt64 system_ms = 0;
|
UInt64 system_ms = 0;
|
||||||
UInt64 memory_usage = 0;
|
UInt64 memory_usage = 0;
|
||||||
|
|
||||||
// -1 used as flag 'is not show for old servers'
|
// -1 used as flag 'is not shown for old servers'
|
||||||
Int64 peak_memory_usage = -1;
|
Int64 peak_memory_usage = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -69,13 +69,11 @@ void ProgressValues::write(WriteBuffer & out, UInt64 client_revision) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProgressValues::writeJSON(WriteBuffer & out, bool add_braces) const
|
void ProgressValues::writeJSON(WriteBuffer & out) const
|
||||||
{
|
{
|
||||||
/// Numbers are written in double quotes (as strings) to avoid loss of precision
|
/// Numbers are written in double quotes (as strings) to avoid loss of precision
|
||||||
/// of 64-bit integers after interpretation by JavaScript.
|
/// of 64-bit integers after interpretation by JavaScript.
|
||||||
|
|
||||||
if (add_braces)
|
|
||||||
writeCString("{", out);
|
|
||||||
writeCString("\"read_rows\":\"", out);
|
writeCString("\"read_rows\":\"", out);
|
||||||
writeText(read_rows, out);
|
writeText(read_rows, out);
|
||||||
writeCString("\",\"read_bytes\":\"", out);
|
writeCString("\",\"read_bytes\":\"", out);
|
||||||
@ -93,8 +91,6 @@ void ProgressValues::writeJSON(WriteBuffer & out, bool add_braces) const
|
|||||||
writeCString("\",\"elapsed_ns\":\"", out);
|
writeCString("\",\"elapsed_ns\":\"", out);
|
||||||
writeText(elapsed_ns, out);
|
writeText(elapsed_ns, out);
|
||||||
writeCString("\"", out);
|
writeCString("\"", out);
|
||||||
if (add_braces)
|
|
||||||
writeCString("}", out);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Progress::incrementPiecewiseAtomically(const Progress & rhs)
|
bool Progress::incrementPiecewiseAtomically(const Progress & rhs)
|
||||||
@ -236,9 +232,9 @@ void Progress::write(WriteBuffer & out, UInt64 client_revision) const
|
|||||||
getValues().write(out, client_revision);
|
getValues().write(out, client_revision);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Progress::writeJSON(WriteBuffer & out, bool add_braces) const
|
void Progress::writeJSON(WriteBuffer & out) const
|
||||||
{
|
{
|
||||||
getValues().writeJSON(out, add_braces);
|
getValues().writeJSON(out);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Progress::incrementElapsedNs(UInt64 elapsed_ns_)
|
void Progress::incrementElapsedNs(UInt64 elapsed_ns_)
|
||||||
|
@ -32,7 +32,7 @@ struct ProgressValues
|
|||||||
|
|
||||||
void read(ReadBuffer & in, UInt64 server_revision);
|
void read(ReadBuffer & in, UInt64 server_revision);
|
||||||
void write(WriteBuffer & out, UInt64 client_revision) const;
|
void write(WriteBuffer & out, UInt64 client_revision) const;
|
||||||
void writeJSON(WriteBuffer & out, bool add_braces = true) const;
|
void writeJSON(WriteBuffer & out) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ReadProgress
|
struct ReadProgress
|
||||||
@ -119,7 +119,7 @@ struct Progress
|
|||||||
void write(WriteBuffer & out, UInt64 client_revision) const;
|
void write(WriteBuffer & out, UInt64 client_revision) const;
|
||||||
|
|
||||||
/// Progress in JSON format (single line, without whitespaces) is used in HTTP headers.
|
/// Progress in JSON format (single line, without whitespaces) is used in HTTP headers.
|
||||||
void writeJSON(WriteBuffer & out, bool add_braces = true) const;
|
void writeJSON(WriteBuffer & out) const;
|
||||||
|
|
||||||
/// Each value separately is changed atomically (but not whole object).
|
/// Each value separately is changed atomically (but not whole object).
|
||||||
bool incrementPiecewiseAtomically(const Progress & rhs);
|
bool incrementPiecewiseAtomically(const Progress & rhs);
|
||||||
|
@ -36,11 +36,7 @@ void WriteBufferFromHTTPServerResponse::writeHeaderProgressImpl(const char * hea
|
|||||||
|
|
||||||
WriteBufferFromOwnString progress_string_writer;
|
WriteBufferFromOwnString progress_string_writer;
|
||||||
|
|
||||||
writeCString("{", progress_string_writer);
|
accumulated_progress.writeJSON(progress_string_writer);
|
||||||
accumulated_progress.writeJSON(progress_string_writer, false);
|
|
||||||
writeCString(",\"peak_memory_usage\":\"", progress_string_writer);
|
|
||||||
writeText(peak_memory_usage, progress_string_writer);
|
|
||||||
writeCString("\"}", progress_string_writer);
|
|
||||||
|
|
||||||
if (response_header_ostr)
|
if (response_header_ostr)
|
||||||
*response_header_ostr << header_name << progress_string_writer.str() << "\r\n" << std::flush;
|
*response_header_ostr << header_name << progress_string_writer.str() << "\r\n" << std::flush;
|
||||||
@ -153,7 +149,7 @@ WriteBufferFromHTTPServerResponse::WriteBufferFromHTTPServerResponse(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void WriteBufferFromHTTPServerResponse::onProgress(const Progress & progress, Int64 peak_memory_usage_)
|
void WriteBufferFromHTTPServerResponse::onProgress(const Progress & progress)
|
||||||
{
|
{
|
||||||
std::lock_guard lock(mutex);
|
std::lock_guard lock(mutex);
|
||||||
|
|
||||||
@ -162,7 +158,6 @@ void WriteBufferFromHTTPServerResponse::onProgress(const Progress & progress, In
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
accumulated_progress.incrementPiecewiseAtomically(progress);
|
accumulated_progress.incrementPiecewiseAtomically(progress);
|
||||||
peak_memory_usage = peak_memory_usage_;
|
|
||||||
if (send_progress && progress_watch.elapsed() >= send_progress_interval_ms * 1000000)
|
if (send_progress && progress_watch.elapsed() >= send_progress_interval_ms * 1000000)
|
||||||
{
|
{
|
||||||
accumulated_progress.incrementElapsedNs(progress_watch.elapsed());
|
accumulated_progress.incrementElapsedNs(progress_watch.elapsed());
|
||||||
|
@ -43,7 +43,7 @@ public:
|
|||||||
~WriteBufferFromHTTPServerResponse() override;
|
~WriteBufferFromHTTPServerResponse() override;
|
||||||
|
|
||||||
/// Writes progress in repeating HTTP headers.
|
/// Writes progress in repeating HTTP headers.
|
||||||
void onProgress(const Progress & progress, Int64 peak_memory_usage_);
|
void onProgress(const Progress & progress);
|
||||||
|
|
||||||
/// Turn compression on or off.
|
/// Turn compression on or off.
|
||||||
/// The setting has any effect only if HTTP headers haven't been sent yet.
|
/// The setting has any effect only if HTTP headers haven't been sent yet.
|
||||||
@ -89,13 +89,13 @@ private:
|
|||||||
/// but not finish them with \r\n, allowing to send more headers subsequently.
|
/// but not finish them with \r\n, allowing to send more headers subsequently.
|
||||||
void startSendHeaders();
|
void startSendHeaders();
|
||||||
|
|
||||||
// Used for write the header X-ClickHouse-Progress / X-ClickHouse-Summary
|
/// Used to write the header X-ClickHouse-Progress / X-ClickHouse-Summary
|
||||||
void writeHeaderProgressImpl(const char * header_name);
|
void writeHeaderProgressImpl(const char * header_name);
|
||||||
// Used for write the header X-ClickHouse-Progress
|
/// Used to write the header X-ClickHouse-Progress
|
||||||
void writeHeaderProgress();
|
void writeHeaderProgress();
|
||||||
// Used for write the header X-ClickHouse-Summary
|
/// Used to write the header X-ClickHouse-Summary
|
||||||
void writeHeaderSummary();
|
void writeHeaderSummary();
|
||||||
// Use to write the header X-ClickHouse-Exception-Code even when progress has been sent
|
/// Use to write the header X-ClickHouse-Exception-Code even when progress has been sent
|
||||||
void writeExceptionCode();
|
void writeExceptionCode();
|
||||||
|
|
||||||
/// This method finish headers with \r\n, allowing to start to send body.
|
/// This method finish headers with \r\n, allowing to start to send body.
|
||||||
@ -128,8 +128,6 @@ private:
|
|||||||
|
|
||||||
int exception_code = 0;
|
int exception_code = 0;
|
||||||
|
|
||||||
Int64 peak_memory_usage = 0;
|
|
||||||
|
|
||||||
std::mutex mutex; /// progress callback could be called from different threads.
|
std::mutex mutex; /// progress callback could be called from different threads.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -837,8 +837,7 @@ void HTTPHandler::processQuery(
|
|||||||
/// Note that we add it unconditionally so the progress is available for `X-ClickHouse-Summary`
|
/// Note that we add it unconditionally so the progress is available for `X-ClickHouse-Summary`
|
||||||
append_callback([&used_output](const Progress & progress)
|
append_callback([&used_output](const Progress & progress)
|
||||||
{
|
{
|
||||||
const auto& thread_group = CurrentThread::getGroup();
|
used_output.out->onProgress(progress);
|
||||||
used_output.out->onProgress(progress, thread_group->memory_tracker.getPeak());
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (settings.readonly > 0 && settings.cancel_http_readonly_queries_on_client_close)
|
if (settings.readonly > 0 && settings.cancel_http_readonly_queries_on_client_close)
|
||||||
|
Loading…
Reference in New Issue
Block a user