Skip to content

Commit ae900cb

Browse files
Merge branch 'master' into mdraid-resync-warning
2 parents ab2a4bb + 1fc2b35 commit ae900cb

192 files changed

Lines changed: 5725 additions & 536 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

README.md

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -47,27 +47,24 @@ Please feel free to reach out to tyler `<at>` clickhouse `<dot>` com.
4747
You can also peruse [ClickHouse Events](https://clickhouse.com/company/news-events) for a list of all upcoming trainings, meetups, speaking engagements, etc.
4848

4949
Upcoming meetups
50-
* [AI Builders Night San Jose](https://luma.com/xoq2dz0l) - March 16th, 2026
51-
* [Munich Meetup](https://www.meetup.com/clickhouse-meetup-munich/events/313487152/) - March 19th, 2026
52-
* [NY Meetup](https://luma.com/c7tprb51) - March 19th, 2026
53-
* [RSA Iceberg Meetup SF](https://luma.com/rsa-iceberg) - March 24th, 2026
54-
* [Milan Meetup](https://www.meetup.com/clickhouse-italy-user-group/events/313586581/) - March 26th, 2026
55-
* [Seattle Observability Meetup](https://luma.com/vph3jbkm) - March 26th, 2026
56-
* [San Francisco Observability FireSide Chat](https://luma.com/v5d8u087) - March 31st, 2026
5750
* [AI Demo Night SF](https://luma.com/jyzlu78v) - April 9th, 2026
51+
* [San Jose Meetup](https://luma.com/f3bdyaup) - April 16th, 2026
5852
* [Taipei Open Source Night](https://luma.com/kt3xtz3a) - April 16th, 2026
5953

6054
Recent meetups
55+
* [Seattle Observability Meetup](https://luma.com/vph3jbkm) - March 26th, 2026
56+
* [Milan Meetup](https://www.meetup.com/clickhouse-italy-user-group/events/313586581/) - March 26th, 2026
57+
* [RSA Iceberg Meetup SF](https://luma.com/rsa-iceberg) - March 24th, 2026
58+
* [NY Meetup](https://luma.com/c7tprb51) - March 19th, 2026
59+
* [Munich Meetup](https://www.meetup.com/clickhouse-meetup-munich/events/313487152/) - March 19th, 2026
60+
* [AI Builders Night San Jose](https://luma.com/xoq2dz0l) - March 16th, 2026
6161
* [Apache Iceberg™ Meetup Pittsburgh](https://luma.com/mqgwk79x) - March 12th, 2026
6262
* [SRE Days London Meetup](https://luma.com/sreday-2026-london-q1) - March 12, 2026
6363
* [San Francisco Meetup](https://luma.com/6rnu6wzs) - March 11th, 2026
6464
* [Sao Paulo Meetup](https://www.meetup.com/clickhouse-brasil-user-group/events/313294062) - March 10th, 2026
6565
* [Women+ in open source](https://luma.com/qcqlia4g) - March 9th, 2026
6666
* [Tokyo Meetup - LibreChat Night](https://www.meetup.com/clickhouse-tokyo-user-group/events/313275265/) - March 9th, 2026
6767
* [LA Meetup](https://luma.com/wbkqmaqk) - March 6th, 2026
68-
* [Bangalore GDG + Deutsche Bank Meetup](https://www.meetup.com/clickhouse-bangalore-user-group/events/313325219/) - February 28th, 2026
69-
* [Seattle Meetup](https://luma.com/jsctpwoa) - February 26th, 2026
70-
* [Melbourne Meetup](https://www.meetup.com/clickhouse-melbourne-user-group/events/312871833/) - February 24th, 2026
7168

7269

7370

ci/jobs/scripts/check_style/aspell-ignore/en/aspell-dict.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
personal_ws-1.1 en 3602
1+
personal_ws-1.1 en 3603
22
AArch
33
ABIs
44
ACLs
@@ -1529,6 +1529,7 @@ bcrypt's
15291529
bech
15301530
benchmarked
15311531
benchmarking
1532+
beeterty
15321533
bfloat
15331534
bigrams
15341535
binlog

ci/jobs/scripts/fuzzer/query-fuzzer-tweaks-users.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@
4040
</constraints>
4141

4242
<!-- Allow all experimental features by default -->
43-
<ast_fuzzer_runs>5</ast_fuzzer_runs>
44-
4543
<allow_create_index_without_type>1</allow_create_index_without_type>
4644
<allow_custom_error_code_in_throwif>1</allow_custom_error_code_in_throwif>
4745
<allow_ddl>1</allow_ddl>

contrib/replxx

contrib/rust_vendor

Submodule rust_vendor updated 3723 files

docs/en/interfaces/third-party/client-libraries.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ ClickHouse Inc does **not** maintain the libraries listed below and hasn't done
3333
- [glushkovds/php-clickhouse-schema-builder](https://packagist.org/packages/glushkovds/php-clickhouse-schema-builder)
3434
- [kolya7k ClickHouse PHP extension](https://github.com//kolya7k/clickhouse-php)
3535
- [hyvor/clickhouse-php](https://github.com/hyvor/clickhouse-php)
36+
- [beeterty/clickhouse-php-client](https://github.com/beeterty-technologies/clickhouse-php-client)
3637
### Go {#go}
3738
- [clickhouse](https://github.com/kshvakov/clickhouse/)
3839
- [go-clickhouse](https://github.com/roistat/go-clickhouse)

docs/en/sql-reference/data-types/newjson.md

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,60 @@ SELECT json.^a.b, json.^d.e.f FROM test;
322322
```
323323

324324
:::note
325-
Reading sub-objects as sub-columns may be inefficient, as this may require a near full scan of the JSON data.
325+
When paths are stored in basic (`map`) [shared data](#shared-data-structure), reading sub-object sub-columns may be inefficient as it requires scanning the entire shared data structure. With `map_with_buckets` or `advanced` shared data serialization, reading sub-columns from shared data is highly optimized.
326+
:::
327+
328+
## Reading JSON combined sub-columns {#reading-json-combined-sub-columns}
329+
330+
The `JSON` type supports reading a path as a **combined sub-column** using the special syntax `json.@some.path`.
331+
A combined sub-column for a given path returns:
332+
- The literal value stored at that path as `Dynamic`, if the path has a literal value.
333+
- A JSON sub-object at that path as `Dynamic`, if the path has no literal value but has nested sub-paths.
334+
- `NULL`, if neither a literal value nor any sub-paths exist for that path.
335+
336+
This is useful when a path may hold either a scalar value or a nested object across different rows, and is more convenient than separately querying the literal sub-column (`json.a`) and the sub-object sub-column (`json.^a`).
337+
338+
The following example compares all three sub-column types for path `a`:
339+
340+
```sql title="Query"
341+
CREATE TABLE test (json JSON) ENGINE = Memory;
342+
INSERT INTO test VALUES ('{"a" : 42, "b" : {"c" : 1, "d" : "Hello"}}'), ('{"a" : {"x": 1, "y": 2}, "b" : {"c" : 1}}'), ('{"c" : "World"}');
343+
SELECT json FROM test;
344+
```
345+
346+
```text title="Response"
347+
┌─json────────────────────────────┐
348+
│ {"a":42,"b":{"c":1,"d":"Hello"}}│
349+
│ {"a":{"x":1,"y":2},"b":{"c":1}}│
350+
│ {"c":"World"} │
351+
└─────────────────────────────────┘
352+
```
353+
354+
```sql title="Query"
355+
SELECT
356+
json.a,
357+
dynamicType(json.a),
358+
json.^a,
359+
toTypeName(json.^a),
360+
json.@a,
361+
dynamicType(json.@a)
362+
FROM test;
363+
```
364+
365+
```text title="Response"
366+
┌─json.a─┬─dynamicType(json.a)─┬─json.^a───────┬─toTypeName(json.^a)─┬─json.@a───────┬─dynamicType(json.@a)─┐
367+
│ 42 │ Int64 │ {} │ JSON │ 42 │ Int64 │
368+
│ NULL │ None │ {"x":1,"y":2} │ JSON │ {"x":1,"y":2} │ JSON │
369+
│ NULL │ None │ {} │ JSON │ NULL │ None │
370+
└────────┴─────────────────────┴───────────────┴─────────────────────┴───────────────┴──────────────────────┘
371+
```
372+
373+
- Row 1: `a` holds a literal `42`. `json.a` returns it as `Dynamic(Int64)`, `json.^a` returns an empty sub-object `{}` (no nested keys under `a`), and `json.@a` returns the literal `42`.
374+
- Row 2: `a` holds a nested object. `json.a` returns `NULL` (no literal at that path), `json.^a` returns the sub-object as `JSON`, and `json.@a` also returns the sub-object as `Dynamic(JSON)`.
375+
- Row 3: `a` is absent entirely. Both `json.a` and `json.@a` return `NULL`, while `json.^a` returns an empty `{}`.
376+
377+
:::note
378+
When paths are stored in basic (`map`) [shared data](#shared-data-structure), reading combined sub-columns may be inefficient as it requires scanning the entire shared data structure. With `map_with_buckets` or `advanced` shared data serialization, reading sub-columns from shared data is highly optimized.
326379
:::
327380

328381
## Type inference for paths {#type-inference-for-paths}

programs/client/Client.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ void Client::connect()
546546

547547
if (max_client_network_bandwidth)
548548
{
549-
ThrottlerPtr throttler = std::make_shared<Throttler>("client_network", max_client_network_bandwidth, 0, "");
549+
ThrottlerPtr throttler = std::make_shared<Throttler>(max_client_network_bandwidth, 0, "");
550550
connection->setThrottler(throttler);
551551
}
552552

rust/workspace/Cargo.lock

Lines changed: 20 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)