From 22774d0e24daec2650e091fcfae4265f7d8f1b0f Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Mon, 1 Jun 2026 16:52:42 +0000 Subject: [PATCH] docs: port clickhouse-docs#6306 doc updates from main --- .../data-warehousing/support-matrix.mdx | 6 +- integrations/language-clients/java/jdbc.mdx | 58 ++++++------ .../reference/privilege.mdx | 29 +++++- .../clickstack/demo-days/2026/2026-05-22.mdx | 90 +++++++++++++++++++ products/clickstack/navigation.json | 1 + .../user-defined-functions.mdx | 16 ++-- products/cloud/guides/cloud-compatibility.mdx | 2 +- 7 files changed, 161 insertions(+), 41 deletions(-) create mode 100644 products/clickstack/demo-days/2026/2026-05-22.mdx diff --git a/core/guides/use-cases/data-warehousing/support-matrix.mdx b/core/guides/use-cases/data-warehousing/support-matrix.mdx index 405ed865..a4f17dea 100644 --- a/core/guides/use-cases/data-warehousing/support-matrix.mdx +++ b/core/guides/use-cases/data-warehousing/support-matrix.mdx @@ -166,10 +166,10 @@ The following catalogs are currently supported. Refer to each catalog's referenc |---------|---------|:-:|:-:|:-:|---------| | [AWS Glue Catalog](/core/guides/use-cases/data-warehousing/glue-catalog) | Iceberg | ✅ Beta | ❌ | ❌ | [Glue catalog guide](/core/guides/use-cases/data-warehousing/glue-catalog) | | [BigLake Metastore](/core/guides/use-cases/data-warehousing/biglake-catalog) | Iceberg | ✅ Beta | ❌ | ❌ | [BigLake Metastore guide](/core/guides/use-cases/data-warehousing/biglake-catalog) | -| [Databricks Unity Catalog](/core/guides/use-cases/data-warehousing/unity-catalog) | Delta, Iceberg | ✅ Beta | ❌ | ❌ | [Unity Catalog guide](/core/guides/use-cases/data-warehousing/unity-catalog) | +| [Databricks Unity Catalog](/core/guides/use-cases/data-warehousing/unity-catalog) | Delta, Iceberg | ✅ Beta | ✅ Beta | ✅ Beta | [Unity Catalog guide](/core/guides/use-cases/data-warehousing/unity-catalog) | | [Iceberg REST](/core/guides/use-cases/data-warehousing/rest-catalog) | Iceberg | ✅ Beta | ❌ | ❌ | [REST catalog guide](/core/guides/use-cases/data-warehousing/rest-catalog) | | [Lakekeeper](/core/guides/use-cases/data-warehousing/lakekeeper-catalog) | Iceberg | ✅ Beta | ❌ | ❌ | [Lakekeeper catalog guide](/core/guides/use-cases/data-warehousing/lakekeeper-catalog) | | [Project Nessie](/core/guides/use-cases/data-warehousing/nessie-catalog) | Iceberg | ✅ Experimental | ❌ | ❌ | [Nessie catalog guide](/core/guides/use-cases/data-warehousing/nessie-catalog) | -| [Microsoft OneLake](/core/guides/use-cases/data-warehousing/onelake-catalog) | Iceberg | ✅ Beta | ❌ | ❌ | [OneLake catalog guide](/core/guides/use-cases/data-warehousing/onelake-catalog) | +| [Microsoft OneLake](/core/guides/use-cases/data-warehousing/onelake-catalog) | Iceberg | ✅ Beta | ✅ Beta | ✅ Beta | [OneLake catalog guide](/core/guides/use-cases/data-warehousing/onelake-catalog) | -All catalog integrations currently require an experimental or beta setting to be enabled and expose **read-only** access — tables can be queried but not created or written to through the catalog connection. To load data from a catalog into ClickHouse for faster analytics, use `INSERT INTO SELECT` as described in the [accelerating analytics guide](/core/guides/use-cases/data-warehousing/getting-started/accelerating-analytics). To write data back to open table formats, create standalone Iceberg tables as described in the [writing data guide](/core/guides/use-cases/data-warehousing/getting-started/writing-data). +All catalog integrations currently require an experimental or beta setting to be enabled. With the exception of Microsoft OneLake and Databricks Unity Catalog, all catalogs expose **read-only** access — tables can be queried but not created or written to through the catalog connection. To load data from a catalog into ClickHouse for faster analytics, use `INSERT INTO SELECT` as described in the [accelerating analytics guide](/core/guides/use-cases/data-warehousing/getting-started/accelerating-analytics). To write data back to open table formats, create standalone Iceberg tables as described in the [writing data guide](/core/guides/use-cases/data-warehousing/getting-started/writing-data). diff --git a/integrations/language-clients/java/jdbc.mdx b/integrations/language-clients/java/jdbc.mdx index 8878581a..797288e0 100644 --- a/integrations/language-clients/java/jdbc.mdx +++ b/integrations/language-clients/java/jdbc.mdx @@ -195,27 +195,27 @@ There are few ways to change the mapping: **Numeric Types** -| ClickHouse Type | JDBC Type | Java Class | -|-----------------------------|------------------------------|-----------------------------| -| Int8 | TINYINT | java.lang.Byte | -| Int16 | SMALLINT | java.lang.Short | -| Int32 | INTEGER | java.lang.Integer | -| Int64 | BIGINT | java.lang.Long | -| Int128 | OTHER | java.math.BigInteger | -| Int256 | OTHER | java.math.BigInteger | -| UInt8 | OTHER | java.lang.Short | -| UInt16 | OTHER | java.lang.Integer | -| UInt32 | OTHER | java.lang.Long | -| UInt64 | OTHER | java.math.BigInteger | -| UInt128 | OTHER | java.math.BigInteger | -| UInt256 | OTHER | java.math.BigInteger | -| Float32 | REAL | java.lang.Float | -| Float64 | DOUBLE | java.lang.Double | -| Decimal32 | DECIMAL | java.math.BigDecimal | -| Decimal64 | DECIMAL | java.math.BigDecimal | -| Decimal128 | DECIMAL | java.math.BigDecimal | -| Decimal256 | DECIMAL | java.math.BigDecimal | -| Bool | BOOLEAN | java.lang.Boolean | +| ClickHouse Type | JDBC Type | Java Class | +|-----------------------------|-------------|-----------------------------| +| Int8 | TINYINT | java.lang.Byte | +| Int16 | SMALLINT | java.lang.Short | +| Int32 | INTEGER | java.lang.Integer | +| Int64 | BIGINT | java.lang.Long | +| Int128 | NUMERIC | java.math.BigInteger | +| Int256 | NUMERIC | java.math.BigInteger | +| UInt8 | SMALLINT | java.lang.Short | +| UInt16 | INTEGER | java.lang.Integer | +| UInt32 | BIGINT | java.lang.Long | +| UInt64 | NUMERIC | java.math.BigInteger | +| UInt128 | NUMERIC | java.math.BigInteger | +| UInt256 | NUMERIC | java.math.BigInteger | +| Float32 | FLOAT | java.lang.Float | +| Float64 | DOUBLE | java.lang.Double | +| Decimal32 | DECIMAL | java.math.BigDecimal | +| Decimal64 | DECIMAL | java.math.BigDecimal | +| Decimal128 | DECIMAL | java.math.BigDecimal | +| Decimal256 | DECIMAL | java.math.BigDecimal | +| Bool | BOOLEAN | java.lang.Boolean | - numeric types are interconvertible. So `Int8` can be get as `Float64` and vice versa.: - `rs.getObject(1, Float64.class)` will return `Float64` value of `Int8` column. @@ -228,20 +228,20 @@ There are few ways to change the mapping: **String Types** -| ClickHouse Type | JDBC Type | Java Class | -|-----------------------------|------------------------------|-----------------------------| -| String | VARCHAR | java.lang.String | -| FixedString | VARCHAR | java.lang.String | +| ClickHouse Type | JDBC Type | Java Class | +|-----------------------------|-------------|-----------------------------| +| String | VARCHAR | java.lang.String | +| FixedString | VARCHAR | java.lang.String | - `String` can be read only as `java.lang.String` or `byte[]`. - `FixedString` is read as is and will be padded with zeros to the length of the column. (For example `FixedString(10)` for `'John'` will be read as `'John\0\0\0\0\0\0\0\0\0'`.) **Enum Types** -| ClickHouse Type | JDBC Type | Java Class | -|-----------------------------|------------------------------|-----------------------------| -| Enum8 | OTHER | java.lang.String | -| Enum16 | OTHER | java.lang.String | +| ClickHouse Type | JDBC Type | Java Class | +|-----------------------------|-------------|-----------------------------| +| Enum8 | VARCHAR | java.lang.String | +| Enum16 | VARCHAR | java.lang.String | - `Enum8` and `Enum16` are mapped to `java.lang.String` by default. - Enum values can be read as numeric values using designtated getter method or `getObject(columnIndex, Integer.class)` method. diff --git a/products/bring-your-own-cloud/reference/privilege.mdx b/products/bring-your-own-cloud/reference/privilege.mdx index 4ee23581..36a47909 100644 --- a/products/bring-your-own-cloud/reference/privilege.mdx +++ b/products/bring-your-own-cloud/reference/privilege.mdx @@ -7,7 +7,7 @@ description: 'Deploy ClickHouse on your own cloud infrastructure' doc_type: 'reference' --- -## CloudFormation IAM roles {#cloudformation-iam-roles} +## AWS IAM roles {#aws-iam-roles} ### Bootstrap IAM role {#bootstrap-iam-role} @@ -23,6 +23,7 @@ The bootstrap IAM role has the following permissions: In addition to the `ClickHouseManagementRole` created via CloudFormation, the controller will create several additional roles. These roles are assumed by applications running within the customer's EKS cluster: + - **State Exporter Role** - ClickHouse component that reports service health information to ClickHouse Cloud. - Requires permission to write to an SQS queue owned by ClickHouse Cloud. @@ -39,3 +40,29 @@ These roles are assumed by applications running within the customer's EKS cluste **K8s-control-plane** and **k8s-worker** roles are meant to be assumed by AWS EKS services. Lastly, **`data-plane-mgmt`** allows a ClickHouse Cloud Control Plane component to reconcile necessary custom resources, such as `ClickHouseCluster` and the Istio Virtual Service/Gateway. + +## GCP service accounts {#gcp-service-accounts} + +### Bootstrap service account {#bootstrap-service-account} + +The bootstrap service account is granted project-scoped custom roles with the following permissions: + +- **Common**: Baseline read and identity permissions. +- **VPC**: Manage the VPC, subnets, routing, and Private Service Connect attachments that host your BYOC infrastructure. +- **Cluster**: Manages GKE clusters and in-cluster resources. +- **Storage**: Used to manage Cloud Storage buckets used for ClickHouse backups, shared state, and monitoring data. +- **IAM Role**: Manages service accounts and custom roles inside the project. This role does not grant the ability to create service account keys, bind organization policies, or touch any resources in other projects. + +### Additional service accounts created by the controller {#additional-service-accounts-created-by-the-controller} + +In addition to the `clickhouse-management` service account created via Terraform as part of onboarding. When you provision your first BYOC service, ClickHouse's control plane (authenticating as `clickhouse-management`) creates additional service accounts in your project for specific in-cluster workloads. Each of these is created with a narrow, single-purpose permission set. + +- **GKE node runtime identity** + - Attached to every GKE node virtual machine in your BYOC cluster. + - Used by kubelet, node-local agents, and the Cloud Operations collectors to emit logs and metrics, and by the image pulling subsystem to download container images. +- **Billing scraper identity** + - Used by standalone scraper workload to collect billing telemetry. +- **Monitoring identity** + - Target identity for the monitoring stack running in your cluster. Used to read/write long-term metric storage in a GCS bucket dedicated to this deployment. +- **ClickHouse runtime management identity** + - Used by ClickHouse's runtime data-plane management controller which handles day-2 operations such as Private Service Connect endpoint management, bucket lifecycle adjustments, and service-account rotations. diff --git a/products/clickstack/demo-days/2026/2026-05-22.mdx b/products/clickstack/demo-days/2026/2026-05-22.mdx new file mode 100644 index 00000000..bb412f45 --- /dev/null +++ b/products/clickstack/demo-days/2026/2026-05-22.mdx @@ -0,0 +1,90 @@ +--- +slug: /use-cases/observability/clickstack/demo-days/2026/2026-05-22 +title: 'Demo days - 2026-05-22' +sidebarTitle: '2026-05-22' +description: 'ClickStack demo days for 2026-05-22' +doc_type: 'guide' +keywords: ['ClickStack', 'Demo days'] +--- + +## ClickCannon data generation update {#clickcannon-data-generation-update} + +*Demo by [@SpencerTorres](https://github.com/SpencerTorres)* + + + + + +[ClickCannon](https://github.com/clickhouse/clickcannon) is the tool we use internally for sizing exercises: generating large volumes of OpenTelemetry data while issuing concurrent queries to estimate the resources customers need for a given ingest and query workload. At OpenHouse we announced it publicly, and Spencer walked through the latest iteration. + +Rather than pre-configuring data on disk, you can now configure the generator inline. Enable it, set how many threads, how many rows per block, how many rows per second in total, and a few memory constraints. There is no need to stage two terabytes of test data on disk first, which is what made the tool hard to share before. + +We will be pointing more users at ClickCannon for their own sizing efforts. The repo lives at [https://github.com/clickhouse/clickcannon](https://github.com/clickhouse/clickcannon). + +## Date input for full-screen tiles and source-scoped filters {#date-input-for-full-screen-tiles-and-source-scoped-filters} + +*Demo by [@pulpdrew](https://github.com/pulpdrew)* + + + + + +Two related dashboard improvements landed together. When you full-screen a single tile, you now get a dedicated time picker and granularity selector that is independent from the dashboard's own time range. That means you can zoom in on a long history for one specific metric (say, one chart on the ClickHouse cluster dashboard) without forcing every other tile on the dashboard to refresh. The dashboard name now also appears in the browser tab title. + +The second piece is source scoping for dashboard filters. Filters can be limited so they only broadcast to tiles backed by specific sources, instead of being applied globally across every tile. On a mixed-source dashboard that combines, say, logs and traces, you can keep a filter from leaking into a tile where it does not belong. + +**Related PRs:** [#2302](https://github.com/hyperdxio/hyperdx/pull/2302) feat: Minor dashboard improvements, [#2331](https://github.com/hyperdxio/hyperdx/pull/2331) feat: Add source scoping to dashboard filters + +## Text index recognised on lower(Body) {#text-index-recognised-on-lower-body} + +*Demo by [@pulpdrew](https://github.com/pulpdrew)* + + + + + +A small but real correctness fix for case-insensitive search. If your source has a text index defined on `lower(Body)` without a preprocessor argument, the query planner previously generated a `hasAllTokens(Body, ...)` condition. Because that expression did not match the index expression, the text index was not used and the query fell back to a scan. + +The query is now generated as `hasAllTokens(lower(Body), ...)`, which matches the index expression. Case-insensitive search on sources configured this way is now correctly accelerated by the text index. + +**Related PRs:** [#2326](https://github.com/hyperdxio/hyperdx/pull/2326) feat: support text index on lower(Body) with no preprocessor + +## Simpler event deltas experience {#simpler-event-deltas-experience} + +*Demo by [@alex-fedotyev](https://github.com/alex-fedotyev)* + + + + + +Event Deltas used to require an extra step. You had to click a button to enter comparison mode before dragging a selection on the heatmap. That step is gone: distribution bars appear immediately on load, and the moment you drag a region on the heatmap the bars switch into selection-vs-background comparison mode. Click outside the selection and it drops back to the all-spans view. + +The original change went into OSS some weeks ago, but a piece of it was missing from Managed ClickStack. That gap has now been closed so the simpler flow is the same across both editions. + +**Related PRs:** [#1899](https://github.com/hyperdxio/hyperdx/pull/1899) feat: always-on attribute distribution mode + +## Dashboard table of contents and bulk collapse {#dashboard-table-of-contents-and-bulk-collapse} + +*Demo by [@teeohhem](https://github.com/teeohhem)* + + + + + +Once dashboards grow past a handful of sections (which we want, because sections are how you organise a large dashboard) navigating them becomes painful. Tom added a right-rail table of contents that lists every section and lets you jump between them directly. There is also a bulk collapse and expand control that hides every section's contents at once, so you can scan the structure of a long dashboard without scrolling through all of it. + +Still in draft form, but already useful on the multi-section dashboards we ship for ClickHouse cluster and Kubernetes views. + +**Related PRs:** [#2350](https://github.com/hyperdxio/hyperdx/pull/2350) feat(dashboard): add Table of Contents right rail with bulk collapse/expand + +## Column resize persisted across sessions {#column-resize-persisted-across-sessions} + +*Demo by [@teeohhem](https://github.com/teeohhem)* + + + + + +A customer report from yesterday: when you resize a column in a results table, that sizing should stick. It now does. Resize widths are stored in local storage, keyed per table ID, so different tables keep independent column layouts. Close the browser, come back later, the columns are still the way you left them. Adding or removing a column from the table does not reset the widths of the other columns either. + +**Related PRs:** [#2327](https://github.com/hyperdxio/hyperdx/pull/2327) fix: persist column widths in search results table diff --git a/products/clickstack/navigation.json b/products/clickstack/navigation.json index c9b0798a..eb640abf 100644 --- a/products/clickstack/navigation.json +++ b/products/clickstack/navigation.json @@ -99,6 +99,7 @@ { "group": "2026", "pages": [ + "products/clickstack/demo-days/2026/2026-05-22", "products/clickstack/demo-days/2026/2026-05-15", "products/clickstack/demo-days/2026/2026-05-08", "products/clickstack/demo-days/2026/2026-04-17", diff --git a/products/cloud/features/sql-console-features/user-defined-functions.mdx b/products/cloud/features/sql-console-features/user-defined-functions.mdx index a58250fc..cdbf8cef 100644 --- a/products/cloud/features/sql-console-features/user-defined-functions.mdx +++ b/products/cloud/features/sql-console-features/user-defined-functions.mdx @@ -7,13 +7,13 @@ doc_type: 'guide' keywords: ['user defined function', 'UDF'] --- -import PrivatePreviewBadge from "/snippets/components/PrivatePreviewBadge/PrivatePreviewBadge.jsx"; +import BetaBadge from "/snippets/components/BetaBadge/BetaBadge.jsx"; User-defined functions (UDF) allow users to extend the behavior of ClickHouse beyond what is offered by over a thousand different out-of-box [functions](/core/reference/functions/regular-functions/regular-functions-index). In ClickHouse Cloud, there are two ways to create user-defined functions: 1. Using SQL -2. Using the UI and your own code (private preview) +2. Using the UI and your own code (public beta) ## SQL user-defined functions {#sql-udfs} @@ -62,14 +62,10 @@ This means: ## User-defined functions created via UI {#ui-udfs} - + ClickHouse Cloud offers a UI configuration experience for creating user-defined functions. - -If you are interested in trying out this feature, please contact [support](https://clickhouse.com/support/program) to enroll in private preview. - - In this example we'll create the same simple executable user-defined function `isBusinessHours` that checks if a certain timestamp falls inside of regular business hours. Previously we created it using SQL, but this time we will create it using Python and configure it via the UI. @@ -133,6 +129,12 @@ Now compress the file into a ZIP archive: ```bash zip is_business_hours.zip main.py ``` + + +**Symlinks are not allowed** + +ClickHouse Cloud rejects UDF archives that contain symbolic links. Make sure your ZIP bundle contains only regular files and directories — uploads with symlinks will fail validation. + ### Create a UDF via the UI {#create-udf-via-ui} diff --git a/products/cloud/guides/cloud-compatibility.mdx b/products/cloud/guides/cloud-compatibility.mdx index 212646c6..5909a1a3 100644 --- a/products/cloud/guides/cloud-compatibility.mdx +++ b/products/cloud/guides/cloud-compatibility.mdx @@ -79,7 +79,7 @@ Federated queries with some external database and table engines, such as SQLite, ### User defined functions {#user-defined-functions} -User-defined functions in ClickHouse Cloud are in [private preview](/core/reference/functions/regular-functions/udf). +User-defined functions in ClickHouse Cloud are in [public beta](/core/reference/functions/regular-functions/udf). #### Settings behavior {#udf-settings-behavior}