Skip to content

Commit b3cd54a

Browse files
authored
Merge pull request ClickHouse#80591 from ClickHouse/chesema-storage-url-test
storage url does not call server on empty data
2 parents b18ac49 + a2b533b commit b3cd54a

File tree

6 files changed

+120
-2
lines changed

6 files changed

+120
-2
lines changed

src/Common/ProfileEvents.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -985,6 +985,9 @@ The server successfully detected this situation and will download merged part fr
985985
M(ReadWriteBufferFromHTTPRequestsSent, "Number of HTTP requests sent by ReadWriteBufferFromHTTP", ValueType::Number) \
986986
M(ReadWriteBufferFromHTTPBytes, "Total size of payload bytes received and sent by ReadWriteBufferFromHTTP. Doesn't include HTTP headers.", ValueType::Bytes) \
987987
\
988+
M(WriteBufferFromHTTPRequestsSent, "Number of HTTP requests sent by WriteBufferFromHTTP", ValueType::Number) \
989+
M(WriteBufferFromHTTPBytes, "Total size of payload bytes received and sent by WriteBufferFromHTTP. Doesn't include HTTP headers.", ValueType::Bytes) \
990+
\
988991
M(ConcurrencyControlSlotsGranted, "Number of CPU slot granted according to guarantee of 1 thread per query and for queries with setting 'use_concurrency_control' = 0", ValueType::Number) \
989992
M(ConcurrencyControlSlotsDelayed, "Number of CPU slot not granted initially and required to wait for a free CPU slot", ValueType::Number) \
990993
M(ConcurrencyControlSlotsAcquired, "Total number of CPU slot acquired", ValueType::Number) \

src/IO/ReadWriteBufferFromHTTP.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
#include "ReadWriteBufferFromHTTP.h"
2-
#include <sstream>
3-
#include <string_view>
42

53
#include <IO/HTTPCommon.h>
64
#include <Common/NetException.h>

src/IO/WriteBufferFromHTTP.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
#include <Interpreters/Context.h>
66

77

8+
namespace ProfileEvents
9+
{
10+
extern const Event WriteBufferFromHTTPRequestsSent;
11+
extern const Event WriteBufferFromHTTPBytes;
12+
}
13+
814
namespace DB
915
{
1016

@@ -39,9 +45,16 @@ WriteBufferFromHTTP::WriteBufferFromHTTP(
3945

4046
LOG_TRACE((getLogger("WriteBufferToHTTP")), "Sending request to {}", uri.toString());
4147

48+
ProfileEvents::increment(ProfileEvents::WriteBufferFromHTTPRequestsSent);
4249
ostr = &session->sendRequest(request);
4350
}
4451

52+
void WriteBufferFromHTTP::nextImpl()
53+
{
54+
ProfileEvents::increment(ProfileEvents::WriteBufferFromHTTPBytes, offset());
55+
WriteBufferFromOStream::nextImpl();
56+
}
57+
4558
void WriteBufferFromHTTP::finalizeImpl()
4659
{
4760
// Make sure the content in the buffer has been flushed

src/IO/WriteBufferFromHTTP.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ class WriteBufferFromHTTP : public WriteBufferFromOStream
2929
size_t buffer_size_ = DBMS_DEFAULT_BUFFER_SIZE,
3030
ProxyConfiguration proxy_configuration = {});
3131

32+
// Counts the counter WriteBufferFromHTTPBytes
33+
void nextImpl() override;
34+
3235
/// Receives response from the server after sending all data.
3336
void finalizeImpl() override;
3437

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
dst_remote 2 1
2+
dst_remote 4 1
3+
dst_remote 100 1
4+
dst_remote 200 1
5+
dst_remote 300 1
6+
dst_remote 400 1
7+
Row 1:
8+
──────
9+
query: insert into dst_remote format TSV
10+
11+
written_rows: 2
12+
HTTPRequests: 0
13+
HTTPConnections: 0
14+
15+
Row 2:
16+
──────
17+
query: insert into dst_remote format TSV
18+
19+
written_rows: 4
20+
HTTPRequests: 0
21+
HTTPConnections: 0
22+
23+
Row 3:
24+
──────
25+
query: insert into src values
26+
written_rows: 4
27+
HTTPRequests: 0
28+
HTTPConnections: 0
29+
30+
Row 4:
31+
──────
32+
query: insert into src values
33+
written_rows: 6
34+
HTTPRequests: 1
35+
HTTPConnections: 1
36+
37+
Row 5:
38+
──────
39+
query: insert into src values
40+
written_rows: 8
41+
HTTPRequests: 1
42+
HTTPConnections: 1
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
#!/usr/bin/env bash
2+
3+
CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
4+
# shellcheck source=../shell_config.sh
5+
. "$CURDIR"/../shell_config.sh
6+
7+
set -eu
8+
9+
$CLICKHOUSE_CLIENT -q "
10+
drop table if exists src;
11+
drop table if exists dst_remote;
12+
drop table if exists dst;
13+
drop table if exists mv;
14+
"
15+
16+
$CLICKHOUSE_CLIENT -q "
17+
create table src (key Int, value Int)
18+
engine=MergeTree()
19+
ORDER BY key;
20+
21+
create table dst_remote (key Int, value Int)
22+
engine=MergeTree()
23+
ORDER BY key;
24+
25+
create table dst (key Int, value Int)
26+
engine=URL('${CLICKHOUSE_URL}&async_insert=0&query=insert+into+dst_remote+format+TSV', TSV);
27+
28+
create materialized view mv to dst
29+
as select * from src where value > 0;
30+
"
31+
32+
$CLICKHOUSE_CLIENT --async_insert=0 -q "
33+
insert into src values (1, 0), (2, 1), (3, 0), (4, 1);
34+
35+
insert into src values (10, 0), (20, 0), (30, 0), (40, 0);
36+
37+
insert into src values (100, 1), (200, 1), (300, 1), (400, 1);
38+
"
39+
40+
$CLICKHOUSE_CLIENT -q "
41+
select 'dst_remote', * from dst_remote order by ALL;
42+
"
43+
44+
$CLICKHOUSE_CLIENT -q "
45+
system flush logs query_log;
46+
47+
select
48+
query,
49+
written_rows,
50+
ProfileEvents['ReadWriteBufferFromHTTPRequestsSent'] + ProfileEvents['WriteBufferFromHTTPRequestsSent'] as HTTPRequests,
51+
ProfileEvents['StorageConnectionsCreated'] + ProfileEvents['StorageConnectionsReused'] as HTTPConnections
52+
from system.query_log
53+
where
54+
current_database = currentDatabase() and
55+
type = 'QueryFinish' and
56+
query_kind = 'Insert'
57+
order by ALL
58+
format Vertical;
59+
"

0 commit comments

Comments
 (0)