You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fluss.apache.org by gi...@apache.org on 2026/04/15 17:35:44 UTC

(fluss-website) branch asf-site updated: Deploy website - based on 7946902152a77bb179a35921953b09e7c1ec9c39

This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/fluss-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 93a257466 Deploy website - based on 7946902152a77bb179a35921953b09e7c1ec9c39
93a257466 is described below

commit 93a257466cbfea2b765d686e404a6a80eada2c18
Author: gh-actions <ac...@github.com>
AuthorDate: Wed Apr 15 17:35:38 2026 +0000

    Deploy website - based on 7946902152a77bb179a35921953b09e7c1ec9c39
---
 404.html                                           |   4 +-
 .../figure1-7c9e1064160a84decb149ba63e55b50b.png   | Bin 0 -> 106123 bytes
 .../figure2-88efa22dc33e081300bf9ecd388fd53d.png   | Bin 0 -> 79740 bytes
 .../figure3-44f89c0af7bdf4da5feb4fecea914242.png   | Bin 0 -> 86293 bytes
 .../figure4-b5f8ffeafbf32ec7c4f1090336f94b81.png   | Bin 0 -> 84314 bytes
 .../figure5-86a3bd1f0dede51a77608a746ad9ff7b.png   | Bin 0 -> 107158 bytes
 .../{05509bbb.1324441a.js => 05509bbb.91035c61.js} |   2 +-
 .../{08af526d.754082bf.js => 08af526d.1442eb9a.js} |   2 +-
 .../{51a9489d.a5bd9164.js => 51a9489d.8868275e.js} |   2 +-
 .../{7aafb598.4797fc2c.js => 7aafb598.00da2f0d.js} |   2 +-
 assets/js/814f3328.6f2b140f.js                     |   1 -
 assets/js/814f3328.fa259277.js                     |   1 +
 assets/js/d87df568.c924d785.js                     |   1 +
 assets/js/dbfc4782.be8b0859.js                     |   1 -
 assets/js/dbfc4782.ed66cacb.js                     |   1 +
 .../{dd04b75e.1ad08bce.js => dd04b75e.f56c6d46.js} |   2 +-
 .../{ea70c07d.c8b10672.js => ea70c07d.ab3333c6.js} |   2 +-
 assets/js/fa91aee9.93eeb394.js                     |   1 +
 assets/js/main.16a8eb46.js                         |   2 +
 ...js.LICENSE.txt => main.16a8eb46.js.LICENSE.txt} |   0
 assets/js/main.f942df26.js                         |   2 -
 assets/js/runtime~main.10b2c66d.js                 |   1 +
 assets/js/runtime~main.21c219fa.js                 |   1 -
 .../index.html                                     |   6 +-
 blog/archive/index.html                            |   6 +-
 blog/atom.xml                                      | 223 ++++++++++++++-------
 blog/authors/index.html                            |   6 +-
 blog/fluss-for-ai/index.html                       |   6 +-
 blog/fluss-intro/index.html                        |   6 +-
 blog/fluss-java-client/index.html                  |   6 +-
 blog/fluss-joins-asf/index.html                    |   6 +-
 blog/fluss-open-source/index.html                  |   6 +-
 blog/fluss_fraud_detection/index.html              |   6 +-
 blog/fluss_rust_client_release/index.html          |   6 +-
 blog/hands-on-fluss-lakehouse/index.html           |   8 +-
 blog/index.html                                    |  21 +-
 blog/page/2/index.html                             |  15 +-
 blog/page/3/index.html                             |  11 +-
 blog/partial-updates/index.html                    |   6 +-
 blog/pk-key-tables-log-cache-streaming/index.html  |   8 +-
 blog/releases/0.6/index.html                       |   6 +-
 blog/releases/0.7/index.html                       |   6 +-
 blog/releases/0.8/index.html                       |   6 +-
 blog/releases/0.9/index.html                       |   6 +-
 blog/roaringbitmap-uv-deduplication/index.html     | 163 +++++++++++++++
 blog/rss.xml                                       | 215 +++++++++++++-------
 blog/tags/apache-fluss/index.html                  |   6 +-
 blog/tags/apache-iceberg/index.html                |   6 +-
 blog/tags/arrow/index.html                         |   6 +-
 blog/tags/fluss-cpp/index.html                     |   6 +-
 blog/tags/fluss-rs/index.html                      |   6 +-
 blog/tags/fluss-rust/index.html                    |   6 +-
 blog/tags/index.html                               |   6 +-
 blog/tags/pyfluss/index.html                       |   6 +-
 blog/tags/real-time-analytics/index.html           |   6 +-
 blog/tags/releases/index.html                      |   6 +-
 blog/tags/streaming-lakehouse/index.html           |   6 +-
 blog/taobao-practice/index.html                    |   6 +-
 blog/tiering-service/index.html                    |   6 +-
 blog/unified-streaming-lakehouse/index.html        |   6 +-
 blog/unveil-fluss-logo/index.html                  |   6 +-
 .../index.html                                     |   8 +-
 blog/why-fluss/index.html                          |   6 +-
 community/dev/building/index.html                  |   4 +-
 community/dev/ide-setup/index.html                 |   4 +-
 community/fluss-logos/index.html                   |   4 +-
 community/fluss-team/index.html                    |   4 +-
 .../bug-reports-feature-requests/index.html        |   4 +-
 .../how-to-contribute/contribute-code/index.html   |   4 +-
 .../how-to-contribute/contribute-docs/index.html   |   4 +-
 .../review-pull-requests/index.html                |   4 +-
 .../creating-a-fluss-release/index.html            |   4 +-
 .../creating-a-fluss-shaded-release/index.html     |   4 +-
 .../release-manager-preparation/index.html         |   4 +-
 .../verifying-a-fluss-release/index.html           |   4 +-
 .../verifying-a-fluss-shaded-release/index.html    |   4 +-
 community/welcome/index.html                       |   4 +-
 docs/0.5/concepts/architecture/index.html          |   4 +-
 docs/0.5/dev/building/index.html                   |   4 +-
 docs/0.5/dev/ide-setup/index.html                  |   4 +-
 docs/0.5/engine-flink/ddl/index.html               |   4 +-
 docs/0.5/engine-flink/getting-started/index.html   |   4 +-
 docs/0.5/engine-flink/lookups/index.html           |   4 +-
 docs/0.5/engine-flink/reads/index.html             |   4 +-
 docs/0.5/engine-flink/writes/index.html            |   4 +-
 docs/0.5/index.html                                |   4 +-
 .../deploying-distributed-cluster/index.html       |   4 +-
 .../deploying-local-cluster/index.html             |   4 +-
 .../deploying-with-docker/index.html               |   4 +-
 docs/0.5/install-deploy/overview/index.html        |   4 +-
 docs/0.5/maintenance/configuration/index.html      |   4 +-
 docs/0.5/maintenance/filesystems/hdfs/index.html   |   4 +-
 docs/0.5/maintenance/filesystems/oss/index.html    |   4 +-
 .../maintenance/filesystems/overview/index.html    |   4 +-
 docs/0.5/maintenance/filesystems/s3/index.html     |   4 +-
 docs/0.5/maintenance/logging/index.html            |   4 +-
 docs/0.5/maintenance/metric-reporters/index.html   |   4 +-
 docs/0.5/maintenance/monitor-metrics/index.html    |   4 +-
 .../tiered-storage/lakehouse-storage/index.html    |   4 +-
 .../maintenance/tiered-storage/overview/index.html |   4 +-
 .../tiered-storage/remote-storage/index.html       |   4 +-
 docs/0.5/quickstart/flink/index.html               |   4 +-
 .../integrate-data-lakes/paimon/index.html         |   4 +-
 docs/0.5/streaming-lakehouse/overview/index.html   |   4 +-
 .../data-distribution/bucketing/index.html         |   4 +-
 .../data-distribution/partitioning/index.html      |   4 +-
 .../table-design/data-distribution/ttl/index.html  |   4 +-
 docs/0.5/table-design/data-types/index.html        |   4 +-
 docs/0.5/table-design/overview/index.html          |   4 +-
 .../table-design/table-types/log-table/index.html  |   4 +-
 .../table-design/table-types/pk-table/index.html   |   4 +-
 docs/0.6/concepts/architecture/index.html          |   4 +-
 docs/0.6/engine-flink/ddl/index.html               |   4 +-
 docs/0.6/engine-flink/getting-started/index.html   |   4 +-
 docs/0.6/engine-flink/lookups/index.html           |   4 +-
 docs/0.6/engine-flink/options/index.html           |   4 +-
 docs/0.6/engine-flink/reads/index.html             |   4 +-
 docs/0.6/engine-flink/writes/index.html            |   4 +-
 docs/0.6/index.html                                |   4 +-
 .../deploying-distributed-cluster/index.html       |   4 +-
 .../deploying-local-cluster/index.html             |   4 +-
 .../deploying-with-docker/index.html               |   4 +-
 docs/0.6/install-deploy/overview/index.html        |   4 +-
 docs/0.6/maintenance/configuration/index.html      |   4 +-
 docs/0.6/maintenance/filesystems/hdfs/index.html   |   4 +-
 docs/0.6/maintenance/filesystems/oss/index.html    |   4 +-
 .../maintenance/filesystems/overview/index.html    |   4 +-
 docs/0.6/maintenance/filesystems/s3/index.html     |   4 +-
 .../maintenance/observability/logging/index.html   |   4 +-
 .../observability/metric-reporters/index.html      |   4 +-
 .../observability/monitor-metrics/index.html       |   4 +-
 .../observability/quickstart/index.html            |   4 +-
 .../tiered-storage/lakehouse-storage/index.html    |   4 +-
 .../maintenance/tiered-storage/overview/index.html |   4 +-
 .../tiered-storage/remote-storage/index.html       |   4 +-
 docs/0.6/quickstart/flink/index.html               |   4 +-
 .../integrate-data-lakes/paimon/index.html         |   4 +-
 docs/0.6/streaming-lakehouse/overview/index.html   |   4 +-
 .../data-distribution/bucketing/index.html         |   4 +-
 .../data-distribution/partitioning/index.html      |   4 +-
 .../table-design/data-distribution/ttl/index.html  |   4 +-
 docs/0.6/table-design/data-types/index.html        |   4 +-
 docs/0.6/table-design/overview/index.html          |   4 +-
 .../table-design/table-types/log-table/index.html  |   4 +-
 .../table-design/table-types/pk-table/index.html   |   4 +-
 .../pk-table/merge-engines/first-row/index.html    |   4 +-
 .../table-types/pk-table/merge-engines/index.html  |   4 +-
 .../pk-table/merge-engines/versioned/index.html    |   4 +-
 docs/0.7/apis/java-client/index.html               |   4 +-
 docs/0.7/concepts/architecture/index.html          |   4 +-
 docs/0.7/engine-flink/datastream/index.html        |   4 +-
 docs/0.7/engine-flink/ddl/index.html               |   4 +-
 docs/0.7/engine-flink/getting-started/index.html   |   4 +-
 docs/0.7/engine-flink/lookups/index.html           |   4 +-
 docs/0.7/engine-flink/options/index.html           |   4 +-
 docs/0.7/engine-flink/reads/index.html             |   4 +-
 docs/0.7/engine-flink/writes/index.html            |   4 +-
 docs/0.7/index.html                                |   4 +-
 .../deploying-distributed-cluster/index.html       |   4 +-
 .../deploying-local-cluster/index.html             |   4 +-
 .../deploying-with-docker/index.html               |   4 +-
 docs/0.7/install-deploy/overview/index.html        |   4 +-
 docs/0.7/maintenance/configuration/index.html      |   4 +-
 docs/0.7/maintenance/filesystems/hdfs/index.html   |   4 +-
 docs/0.7/maintenance/filesystems/oss/index.html    |   4 +-
 .../maintenance/filesystems/overview/index.html    |   4 +-
 docs/0.7/maintenance/filesystems/s3/index.html     |   4 +-
 .../maintenance/observability/logging/index.html   |   4 +-
 .../observability/metric-reporters/index.html      |   4 +-
 .../observability/monitor-metrics/index.html       |   4 +-
 .../observability/quickstart/index.html            |   4 +-
 docs/0.7/maintenance/operations/racks/index.html   |   4 +-
 .../maintenance/operations/upgrading/index.html    |   4 +-
 .../tiered-storage/lakehouse-storage/index.html    |   4 +-
 .../maintenance/tiered-storage/overview/index.html |   4 +-
 .../tiered-storage/remote-storage/index.html       |   4 +-
 docs/0.7/quickstart/flink/index.html               |   4 +-
 docs/0.7/quickstart/security/index.html            |   4 +-
 docs/0.7/security/authentication/index.html        |   4 +-
 docs/0.7/security/authorization/index.html         |   4 +-
 docs/0.7/security/overview/index.html              |   4 +-
 .../integrate-data-lakes/paimon/index.html         |   4 +-
 docs/0.7/streaming-lakehouse/overview/index.html   |   4 +-
 .../data-distribution/bucketing/index.html         |   4 +-
 .../data-distribution/partitioning/index.html      |   4 +-
 .../table-design/data-distribution/ttl/index.html  |   4 +-
 docs/0.7/table-design/data-types/index.html        |   4 +-
 docs/0.7/table-design/overview/index.html          |   4 +-
 .../table-design/table-types/log-table/index.html  |   4 +-
 .../table-design/table-types/pk-table/index.html   |   4 +-
 .../pk-table/merge-engines/default/index.html      |   4 +-
 .../pk-table/merge-engines/first-row/index.html    |   4 +-
 .../table-types/pk-table/merge-engines/index.html  |   4 +-
 .../pk-table/merge-engines/versioned/index.html    |   4 +-
 docs/0.8/apis/java-client/index.html               |   4 +-
 docs/0.8/concepts/architecture/index.html          |   4 +-
 docs/0.8/engine-flink/datastream/index.html        |   4 +-
 docs/0.8/engine-flink/ddl/index.html               |   4 +-
 docs/0.8/engine-flink/delta-joins/index.html       |   4 +-
 docs/0.8/engine-flink/getting-started/index.html   |   4 +-
 docs/0.8/engine-flink/lookups/index.html           |   4 +-
 docs/0.8/engine-flink/options/index.html           |   4 +-
 docs/0.8/engine-flink/reads/index.html             |   4 +-
 docs/0.8/engine-flink/writes/index.html            |   4 +-
 docs/0.8/index.html                                |   4 +-
 .../deploying-distributed-cluster/index.html       |   4 +-
 .../deploying-local-cluster/index.html             |   4 +-
 .../deploying-with-docker/index.html               |   4 +-
 .../install-deploy/deploying-with-helm/index.html  |   4 +-
 docs/0.8/install-deploy/overview/index.html        |   4 +-
 docs/0.8/maintenance/configuration/index.html      |   4 +-
 docs/0.8/maintenance/filesystems/hdfs/index.html   |   4 +-
 docs/0.8/maintenance/filesystems/obs/index.html    |   4 +-
 docs/0.8/maintenance/filesystems/oss/index.html    |   4 +-
 .../maintenance/filesystems/overview/index.html    |   4 +-
 docs/0.8/maintenance/filesystems/s3/index.html     |   4 +-
 .../maintenance/observability/logging/index.html   |   4 +-
 .../observability/metric-reporters/index.html      |   4 +-
 .../observability/monitor-metrics/index.html       |   4 +-
 .../observability/quickstart/index.html            |   4 +-
 .../operations/graceful-shutdown/index.html        |   4 +-
 docs/0.8/maintenance/operations/racks/index.html   |   4 +-
 .../operations/updating-configs/index.html         |   4 +-
 .../operations/upgrade-notes-0.8/index.html        |   4 +-
 .../operations/upgrade-notes-0.9/index.html        |   4 +-
 .../maintenance/operations/upgrading/index.html    |   4 +-
 .../tiered-storage/lakehouse-storage/index.html    |   4 +-
 .../maintenance/tiered-storage/overview/index.html |   4 +-
 .../tiered-storage/remote-storage/index.html       |   4 +-
 docs/0.8/quickstart/flink/index.html               |   4 +-
 docs/0.8/quickstart/lakehouse/index.html           |   4 +-
 docs/0.8/quickstart/security/index.html            |   4 +-
 docs/0.8/security/authentication/index.html        |   4 +-
 docs/0.8/security/authorization/index.html         |   4 +-
 docs/0.8/security/overview/index.html              |   4 +-
 .../integrate-data-lakes/iceberg/index.html        |   4 +-
 .../integrate-data-lakes/lance/index.html          |   4 +-
 .../integrate-data-lakes/paimon/index.html         |   4 +-
 docs/0.8/streaming-lakehouse/overview/index.html   |   4 +-
 .../data-distribution/bucketing/index.html         |   4 +-
 .../data-distribution/partitioning/index.html      |   4 +-
 .../table-design/data-distribution/ttl/index.html  |   4 +-
 docs/0.8/table-design/data-types/index.html        |   4 +-
 docs/0.8/table-design/overview/index.html          |   4 +-
 .../table-design/table-types/log-table/index.html  |   4 +-
 .../table-design/table-types/pk-table/index.html   |   4 +-
 .../pk-table/merge-engines/default/index.html      |   4 +-
 .../pk-table/merge-engines/first-row/index.html    |   4 +-
 .../table-types/pk-table/merge-engines/index.html  |   4 +-
 .../pk-table/merge-engines/versioned/index.html    |   4 +-
 docs/apis/client-support-matrix/index.html         |   4 +-
 docs/apis/java-client/index.html                   |   4 +-
 docs/concepts/architecture/index.html              |   4 +-
 docs/engine-flink/datastream/index.html            |   4 +-
 docs/engine-flink/ddl/index.html                   |   4 +-
 docs/engine-flink/delta-joins/index.html           |   4 +-
 docs/engine-flink/getting-started/index.html       |   4 +-
 docs/engine-flink/lookups/index.html               |   4 +-
 docs/engine-flink/options/index.html               |   4 +-
 docs/engine-flink/procedures/index.html            |   4 +-
 docs/engine-flink/reads/index.html                 |   4 +-
 docs/engine-flink/writes/index.html                |   4 +-
 docs/engine-spark/ddl/index.html                   |   4 +-
 docs/engine-spark/getting-started/index.html       |   4 +-
 docs/engine-spark/options/index.html               |   4 +-
 docs/engine-spark/procedures/index.html            |   4 +-
 docs/engine-spark/reads/index.html                 |   4 +-
 docs/engine-spark/structured-streaming/index.html  |   4 +-
 docs/engine-spark/writes/index.html                |   4 +-
 docs/index.html                                    |   4 +-
 .../deploying-distributed-cluster/index.html       |   4 +-
 .../deploying-local-cluster/index.html             |   4 +-
 .../deploying-with-docker/index.html               |   4 +-
 docs/install-deploy/deploying-with-helm/index.html |   4 +-
 docs/install-deploy/overview/index.html            |   4 +-
 docs/maintenance/configuration/index.html          |   4 +-
 docs/maintenance/filesystems/azure/index.html      |   4 +-
 docs/maintenance/filesystems/hdfs/index.html       |   4 +-
 docs/maintenance/filesystems/obs/index.html        |   4 +-
 docs/maintenance/filesystems/oss/index.html        |   4 +-
 docs/maintenance/filesystems/overview/index.html   |   4 +-
 docs/maintenance/filesystems/s3/index.html         |   4 +-
 docs/maintenance/observability/logging/index.html  |   4 +-
 .../observability/metric-reporters/index.html      |   4 +-
 .../observability/monitor-metrics/index.html       |   4 +-
 .../observability/quickstart/index.html            |   4 +-
 .../operations/graceful-shutdown/index.html        |   4 +-
 docs/maintenance/operations/racks/index.html       |   4 +-
 docs/maintenance/operations/rebalance/index.html   |   4 +-
 .../operations/updating-configs/index.html         |   4 +-
 .../operations/upgrade-notes-0.8/index.html        |   4 +-
 .../operations/upgrade-notes-0.9/index.html        |   4 +-
 .../operations/upgrade-notes-archive/index.html    |   4 +-
 docs/maintenance/operations/upgrading/index.html   |   4 +-
 .../tiered-storage/lakehouse-storage/index.html    |   4 +-
 .../maintenance/tiered-storage/overview/index.html |   4 +-
 .../tiered-storage/remote-storage/index.html       |   4 +-
 docs/next/apis/client-support-matrix/index.html    |   4 +-
 docs/next/apis/cpp-client/index.html               |   4 +-
 docs/next/apis/java-client/index.html              |   4 +-
 docs/next/apis/python-client/index.html            |   4 +-
 docs/next/apis/rust-client/index.html              |   4 +-
 docs/next/concepts/architecture/index.html         |   4 +-
 docs/next/engine-flink/datastream/index.html       |   4 +-
 docs/next/engine-flink/ddl/index.html              |   4 +-
 docs/next/engine-flink/delta-joins/index.html      |   4 +-
 docs/next/engine-flink/getting-started/index.html  |   4 +-
 docs/next/engine-flink/lookups/index.html          |   4 +-
 docs/next/engine-flink/options/index.html          |   4 +-
 docs/next/engine-flink/procedures/index.html       |   4 +-
 docs/next/engine-flink/reads/index.html            |   4 +-
 docs/next/engine-flink/writes/index.html           |   4 +-
 docs/next/engine-spark/ddl/index.html              |   4 +-
 docs/next/engine-spark/getting-started/index.html  |   4 +-
 docs/next/engine-spark/options/index.html          |   4 +-
 docs/next/engine-spark/procedures/index.html       |   4 +-
 docs/next/engine-spark/reads/index.html            |   4 +-
 .../engine-spark/structured-streaming/index.html   |   4 +-
 docs/next/engine-spark/writes/index.html           |   4 +-
 docs/next/index.html                               |   4 +-
 .../deploying-distributed-cluster/index.html       |   4 +-
 .../deploying-local-cluster/index.html             |   4 +-
 .../deploying-with-docker/index.html               |   4 +-
 .../install-deploy/deploying-with-helm/index.html  |   4 +-
 docs/next/install-deploy/overview/index.html       |   4 +-
 docs/next/maintenance/configuration/index.html     |   4 +-
 docs/next/maintenance/filesystems/azure/index.html |   4 +-
 docs/next/maintenance/filesystems/hdfs/index.html  |   4 +-
 docs/next/maintenance/filesystems/obs/index.html   |   4 +-
 docs/next/maintenance/filesystems/oss/index.html   |   4 +-
 .../maintenance/filesystems/overview/index.html    |   4 +-
 docs/next/maintenance/filesystems/s3/index.html    |   4 +-
 .../maintenance/observability/logging/index.html   |   4 +-
 .../observability/metric-reporters/index.html      |   4 +-
 .../observability/monitor-metrics/index.html       |   4 +-
 .../observability/quickstart/index.html            |   4 +-
 .../operations/graceful-shutdown/index.html        |   4 +-
 docs/next/maintenance/operations/racks/index.html  |   4 +-
 .../maintenance/operations/rebalance/index.html    |   4 +-
 .../operations/updating-configs/index.html         |   4 +-
 .../operations/upgrade-notes-0.10/index.html       |   4 +-
 .../operations/upgrade-notes-0.8/index.html        |   4 +-
 .../operations/upgrade-notes-0.9/index.html        |   4 +-
 .../operations/upgrade-notes-archive/index.html    |   4 +-
 .../maintenance/operations/upgrading/index.html    |   4 +-
 .../tiered-storage/lakehouse-storage/index.html    |   4 +-
 .../maintenance/tiered-storage/overview/index.html |   4 +-
 .../tiered-storage/remote-storage/index.html       |   4 +-
 docs/next/quickstart/flink/index.html              |   4 +-
 docs/next/quickstart/lakehouse/index.html          |   4 +-
 docs/next/quickstart/security/index.html           |   4 +-
 docs/next/security/authentication/index.html       |   4 +-
 docs/next/security/authorization/index.html        |   4 +-
 docs/next/security/overview/index.html             |   4 +-
 .../integrate-data-lakes/iceberg/index.html        |   4 +-
 .../integrate-data-lakes/lance/index.html          |   4 +-
 .../integrate-data-lakes/paimon/index.html         |   4 +-
 docs/next/streaming-lakehouse/overview/index.html  |   4 +-
 .../data-distribution/bucketing/index.html         |   4 +-
 .../data-distribution/partitioning/index.html      |   4 +-
 .../table-design/data-distribution/ttl/index.html  |   4 +-
 docs/next/table-design/data-formats/index.html     |   4 +-
 docs/next/table-design/data-types/index.html       |   4 +-
 .../merge-engines/aggregation/index.html           |   4 +-
 .../table-design/merge-engines/default/index.html  |   4 +-
 .../merge-engines/first-row/index.html             |   4 +-
 docs/next/table-design/merge-engines/index.html    |   4 +-
 .../merge-engines/versioned/index.html             |   4 +-
 docs/next/table-design/overview/index.html         |   4 +-
 .../table-design/table-types/log-table/index.html  |   4 +-
 .../table-design/table-types/pk-table/index.html   |   4 +-
 docs/next/table-design/virtual-tables/index.html   |   4 +-
 docs/quickstart/flink/index.html                   |   4 +-
 docs/quickstart/lakehouse/index.html               |   4 +-
 docs/quickstart/security/index.html                |   4 +-
 docs/security/authentication/index.html            |   4 +-
 docs/security/authorization/index.html             |   4 +-
 docs/security/overview/index.html                  |   4 +-
 .../integrate-data-lakes/iceberg/index.html        |   4 +-
 .../integrate-data-lakes/lance/index.html          |   4 +-
 .../integrate-data-lakes/paimon/index.html         |   4 +-
 docs/streaming-lakehouse/overview/index.html       |   4 +-
 .../data-distribution/bucketing/index.html         |   4 +-
 .../data-distribution/partitioning/index.html      |   4 +-
 docs/table-design/data-distribution/ttl/index.html |   4 +-
 docs/table-design/data-formats/index.html          |   4 +-
 docs/table-design/data-types/index.html            |   4 +-
 .../merge-engines/aggregation/index.html           |   4 +-
 docs/table-design/merge-engines/default/index.html |   4 +-
 .../merge-engines/first-row/index.html             |   4 +-
 docs/table-design/merge-engines/index.html         |   4 +-
 .../merge-engines/versioned/index.html             |   4 +-
 docs/table-design/overview/index.html              |   4 +-
 docs/table-design/table-types/log-table/index.html |   4 +-
 docs/table-design/table-types/pk-table/index.html  |   4 +-
 docs/table-design/virtual-tables/index.html        |   4 +-
 downloads/index.html                               |   4 +-
 img/avatars/yangwang.jpeg                          | Bin 0 -> 26035 bytes
 index.html                                         |   4 +-
 learn/talks/index.html                             |   4 +-
 learn/videos/index.html                            |   4 +-
 roadmap/index.html                                 |   4 +-
 search/index.html                                  |   4 +-
 sitemap.xml                                        |   2 +-
 sw.js                                              |   2 +-
 405 files changed, 1283 insertions(+), 963 deletions(-)

diff --git a/404.html b/404.html
index d6956aa43..eab736e09 100644
--- a/404.html
+++ b/404.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/assets/images/figure1-7c9e1064160a84decb149ba63e55b50b.png b/assets/images/figure1-7c9e1064160a84decb149ba63e55b50b.png
new file mode 100644
index 000000000..838859544
Binary files /dev/null and b/assets/images/figure1-7c9e1064160a84decb149ba63e55b50b.png differ
diff --git a/assets/images/figure2-88efa22dc33e081300bf9ecd388fd53d.png b/assets/images/figure2-88efa22dc33e081300bf9ecd388fd53d.png
new file mode 100644
index 000000000..5d754c31d
Binary files /dev/null and b/assets/images/figure2-88efa22dc33e081300bf9ecd388fd53d.png differ
diff --git a/assets/images/figure3-44f89c0af7bdf4da5feb4fecea914242.png b/assets/images/figure3-44f89c0af7bdf4da5feb4fecea914242.png
new file mode 100644
index 000000000..643296e63
Binary files /dev/null and b/assets/images/figure3-44f89c0af7bdf4da5feb4fecea914242.png differ
diff --git a/assets/images/figure4-b5f8ffeafbf32ec7c4f1090336f94b81.png b/assets/images/figure4-b5f8ffeafbf32ec7c4f1090336f94b81.png
new file mode 100644
index 000000000..98206bd3c
Binary files /dev/null and b/assets/images/figure4-b5f8ffeafbf32ec7c4f1090336f94b81.png differ
diff --git a/assets/images/figure5-86a3bd1f0dede51a77608a746ad9ff7b.png b/assets/images/figure5-86a3bd1f0dede51a77608a746ad9ff7b.png
new file mode 100644
index 000000000..48dd6eb50
Binary files /dev/null and b/assets/images/figure5-86a3bd1f0dede51a77608a746ad9ff7b.png differ
diff --git a/assets/js/05509bbb.1324441a.js b/assets/js/05509bbb.91035c61.js
similarity index 93%
rename from assets/js/05509bbb.1324441a.js
rename to assets/js/05509bbb.91035c61.js
index 212dc5b91..ed48bd879 100644
--- a/assets/js/05509bbb.1324441a.js
+++ b/assets/js/05509bbb.91035c61.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[5152],{26731(e,t,s){s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>a,toc:()=>u});var a=s(1467),n=s(74848),i=s(28453);const l={slug:"why-fluss-chose-rust-for-multi-language-sdk",title:"Why Apache Fluss Chose Rust for Its Multi-Language SDK",date:new Date("2026-04-09T00:00:00.000Z"),authors:["yuxia","keithlee","anton"],tags:["fluss-rust","fluss-rs" [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[5152],{26731(e,t,s){s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>r,default:()=>h,frontMatter:()=>l,metadata:()=>a,toc:()=>u});var a=s(1467),n=s(74848),i=s(28453);const l={slug:"why-fluss-chose-rust-for-multi-language-sdk",title:"Why Apache Fluss Chose Rust for Its Multi-Language SDK",date:new Date("2026-04-09T00:00:00.000Z"),authors:["yuxia","keithlee","anton"],tags:["fluss-rust","fluss-rs" [...]
\ No newline at end of file
diff --git a/assets/js/08af526d.754082bf.js b/assets/js/08af526d.1442eb9a.js
similarity index 62%
rename from assets/js/08af526d.754082bf.js
rename to assets/js/08af526d.1442eb9a.js
index caf129bd0..a449807ed 100644
--- a/assets/js/08af526d.754082bf.js
+++ b/assets/js/08af526d.1442eb9a.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[529],{41344(e){e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":3,"totalCount":21,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[529],{41344(e){e.exports=JSON.parse('{"metadata":{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":3,"totalCount":22,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/51a9489d.a5bd9164.js b/assets/js/51a9489d.8868275e.js
similarity index 96%
rename from assets/js/51a9489d.a5bd9164.js
rename to assets/js/51a9489d.8868275e.js
index 1b21af41d..a92b9f0fa 100644
--- a/assets/js/51a9489d.a5bd9164.js
+++ b/assets/js/51a9489d.8868275e.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[2084],{70249(e,t,s){s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>n,toc:()=>h});var n=s(1467),a=s(74848),r=s(28453);const o={slug:"why-fluss-chose-rust-for-multi-language-sdk",title:"Why Apache Fluss Chose Rust for Its Multi-Language SDK",date:new Date("2026-04-09T00:00:00.000Z"),authors:["yuxia","keithlee","anton"],tags:["fluss-rust","fluss-rs" [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[2084],{70249(e,t,s){s.r(t),s.d(t,{assets:()=>l,contentTitle:()=>o,default:()=>d,frontMatter:()=>i,metadata:()=>n,toc:()=>h});var n=s(1467),a=s(74848),r=s(28453);const i={slug:"why-fluss-chose-rust-for-multi-language-sdk",title:"Why Apache Fluss Chose Rust for Its Multi-Language SDK",date:new Date("2026-04-09T00:00:00.000Z"),authors:["yuxia","keithlee","anton"],tags:["fluss-rust","fluss-rs" [...]
\ No newline at end of file
diff --git a/assets/js/7aafb598.4797fc2c.js b/assets/js/7aafb598.00da2f0d.js
similarity index 60%
rename from assets/js/7aafb598.4797fc2c.js
rename to assets/js/7aafb598.00da2f0d.js
index b2580414c..cdedf8b77 100644
--- a/assets/js/7aafb598.4797fc2c.js
+++ b/assets/js/7aafb598.00da2f0d.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[3382],{24614(e){e.exports=JSON.parse('{"metadata":{"permalink":"/blog/page/3","page":3,"postsPerPage":10,"totalPages":3,"totalCount":21,"previousPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[3382],{24614(e){e.exports=JSON.parse('{"metadata":{"permalink":"/blog/page/3","page":3,"postsPerPage":10,"totalPages":3,"totalCount":22,"previousPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/814f3328.6f2b140f.js b/assets/js/814f3328.6f2b140f.js
deleted file mode 100644
index 3d6d71870..000000000
--- a/assets/js/814f3328.6f2b140f.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[7472],{55513(e){e.exports=JSON.parse('{"title":"All our posts","items":[{"title":"Why Apache Fluss Chose Rust for Its Multi-Language SDK","permalink":"/blog/why-fluss-chose-rust-for-multi-language-sdk","unlisted":false,"date":"2026-04-09T00:00:00.000Z"},{"title":"Announcing Apache Fluss (Incubating) Rust, Python, and C++ Client 0.1.0 Release","permalink":"/blog/fluss_rust_client_release"," [...]
\ No newline at end of file
diff --git a/assets/js/814f3328.fa259277.js b/assets/js/814f3328.fa259277.js
new file mode 100644
index 000000000..16884be5d
--- /dev/null
+++ b/assets/js/814f3328.fa259277.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[7472],{55513(e){e.exports=JSON.parse('{"title":"All our posts","items":[{"title":"Real-Time Unique User Counting at Scale with Apache Fluss","permalink":"/blog/roaringbitmap-uv-deduplication","unlisted":false,"date":"2026-04-16T00:00:00.000Z"},{"title":"Why Apache Fluss Chose Rust for Its Multi-Language SDK","permalink":"/blog/why-fluss-chose-rust-for-multi-language-sdk","unlisted":false," [...]
\ No newline at end of file
diff --git a/assets/js/d87df568.c924d785.js b/assets/js/d87df568.c924d785.js
new file mode 100644
index 000000000..bc23caed4
--- /dev/null
+++ b/assets/js/d87df568.c924d785.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[6359],{36799(e,n,i){i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>u,frontMatter:()=>o,metadata:()=>t,toc:()=>c});var t=i(23706),s=i(74848),a=i(28453);const o={slug:"roaringbitmap-uv-deduplication",date:new Date("2026-04-16T00:00:00.000Z"),title:"Real-Time Unique User Counting at Scale with Apache Fluss",authors:["yangwang"]},r=void 0,l={authorsImageUrls:[void 0]},c=[{value:"Pro [...]
\ No newline at end of file
diff --git a/assets/js/dbfc4782.be8b0859.js b/assets/js/dbfc4782.be8b0859.js
deleted file mode 100644
index 485c3906b..000000000
--- a/assets/js/dbfc4782.be8b0859.js
+++ /dev/null
@@ -1 +0,0 @@
-"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[8749],{91895(e){e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"why-fluss-chose-rust-for-multi-language-sdk","metadata":{"permalink":"/blog/why-fluss-chose-rust-for-multi-language-sdk","source":"@site/blog/2026-04-09-fluss-rust-sdk.md","title":"Why Apache Fluss Chose Rust for Its Multi-Language SDK","description":"Banner","date":"2026-04-09T00:00:00.000Z","tags":[{"inline":true,"labe [...]
\ No newline at end of file
diff --git a/assets/js/dbfc4782.ed66cacb.js b/assets/js/dbfc4782.ed66cacb.js
new file mode 100644
index 000000000..68f46016f
--- /dev/null
+++ b/assets/js/dbfc4782.ed66cacb.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[8749],{91895(e){e.exports=JSON.parse('{"archive":{"blogPosts":[{"id":"roaringbitmap-uv-deduplication","metadata":{"permalink":"/blog/roaringbitmap-uv-deduplication","source":"@site/blog/2026-04-16-roaringbitmap-uv-deduplication.md","title":"Real-Time Unique User Counting at Scale with Apache Fluss","description":"UV (Unique Visitors) measures the count of distinct users who visited a page  [...]
\ No newline at end of file
diff --git a/assets/js/dd04b75e.1ad08bce.js b/assets/js/dd04b75e.f56c6d46.js
similarity index 90%
rename from assets/js/dd04b75e.1ad08bce.js
rename to assets/js/dd04b75e.f56c6d46.js
index a7034cbc1..d70116c26 100644
--- a/assets/js/dd04b75e.1ad08bce.js
+++ b/assets/js/dd04b75e.f56c6d46.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[1672],{33024(a){a.exports=JSON.parse('{"authors":[{"name":"Jark Wu","title":"PPMC member of Apache Fluss (Incubating)","url":"https://github.com/wuchong","imageURL":"/img/avatars/wuchong.png","key":"jark","page":null,"count":9},{"name":"Giannis Polyzos","title":"PPMC member of Apache Fluss (Incubating)","url":"https://github.com/polyzos","imageURL":"/img/avatars/polyzos.png","key":"giannis [...]
\ No newline at end of file
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[1672],{33024(a){a.exports=JSON.parse('{"authors":[{"name":"Jark Wu","title":"PPMC member of Apache Fluss (Incubating)","url":"https://github.com/wuchong","imageURL":"/img/avatars/wuchong.png","key":"jark","page":null,"count":9},{"name":"Giannis Polyzos","title":"PPMC member of Apache Fluss (Incubating)","url":"https://github.com/polyzos","imageURL":"/img/avatars/polyzos.png","key":"giannis [...]
\ No newline at end of file
diff --git a/assets/js/ea70c07d.c8b10672.js b/assets/js/ea70c07d.ab3333c6.js
similarity index 75%
rename from assets/js/ea70c07d.c8b10672.js
rename to assets/js/ea70c07d.ab3333c6.js
index a0cc08b27..06c2ab014 100644
--- a/assets/js/ea70c07d.c8b10672.js
+++ b/assets/js/ea70c07d.ab3333c6.js
@@ -1 +1 @@
-"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[8732],{76387(e){e.exports=JSON.parse('{"metadata":{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":3,"totalCount":21,"previousPage":"/blog","nextPage":"/blog/page/3","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[8732],{76387(e){e.exports=JSON.parse('{"metadata":{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":3,"totalCount":22,"previousPage":"/blog","nextPage":"/blog/page/3","blogDescription":"Blog","blogTitle":"Blog"}}')}}]);
\ No newline at end of file
diff --git a/assets/js/fa91aee9.93eeb394.js b/assets/js/fa91aee9.93eeb394.js
new file mode 100644
index 000000000..d4c4e8f4c
--- /dev/null
+++ b/assets/js/fa91aee9.93eeb394.js
@@ -0,0 +1 @@
+"use strict";(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[1846],{92765(e,n,i){i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>o,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var a=i(23706),t=i(74848),s=i(28453);const r={slug:"roaringbitmap-uv-deduplication",date:new Date("2026-04-16T00:00:00.000Z"),title:"Real-Time Unique User Counting at Scale with Apache Fluss",authors:["yangwang"]},o=void 0,l={authorsImageUrls:[void 0]},d=[{value:"Pro [...]
\ No newline at end of file
diff --git a/assets/js/main.16a8eb46.js b/assets/js/main.16a8eb46.js
new file mode 100644
index 000000000..a20ea174b
--- /dev/null
+++ b/assets/js/main.16a8eb46.js
@@ -0,0 +1,2 @@
+/*! For license information please see main.16a8eb46.js.LICENSE.txt */
+(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[8792],{35947(e,t,n){"use strict";n.d(t,{A:()=>p});n(96540);var a=n(53259),r=n.n(a),o=n(84054);const i={"00666a83":[()=>n.e(7387).then(n.bind(n,22170)),"@site/versioned_docs/version-0.9/engine-flink/writes.md",22170],"0159e4b3":[()=>n.e(1838).then(n.bind(n,28605)),"@site/versioned_docs/version-0.6/maintenance/tiered-storage/lakehouse-storage.md",28605],"019059a8":[()=>n.e(4944).then(n.bind(n,83097)),"@s [...]
\ No newline at end of file
diff --git a/assets/js/main.f942df26.js.LICENSE.txt b/assets/js/main.16a8eb46.js.LICENSE.txt
similarity index 100%
rename from assets/js/main.f942df26.js.LICENSE.txt
rename to assets/js/main.16a8eb46.js.LICENSE.txt
diff --git a/assets/js/main.f942df26.js b/assets/js/main.f942df26.js
deleted file mode 100644
index 2573742f4..000000000
--- a/assets/js/main.f942df26.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! For license information please see main.f942df26.js.LICENSE.txt */
-(globalThis.webpackChunkfluss_website=globalThis.webpackChunkfluss_website||[]).push([[8792],{35947(e,t,n){"use strict";n.d(t,{A:()=>p});n(96540);var a=n(53259),r=n.n(a),o=n(84054);const i={"00666a83":[()=>n.e(7387).then(n.bind(n,22170)),"@site/versioned_docs/version-0.9/engine-flink/writes.md",22170],"0159e4b3":[()=>n.e(1838).then(n.bind(n,28605)),"@site/versioned_docs/version-0.6/maintenance/tiered-storage/lakehouse-storage.md",28605],"019059a8":[()=>n.e(4944).then(n.bind(n,83097)),"@s [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.10b2c66d.js b/assets/js/runtime~main.10b2c66d.js
new file mode 100644
index 000000000..2f2bfda26
--- /dev/null
+++ b/assets/js/runtime~main.10b2c66d.js
@@ -0,0 +1 @@
+(()=>{"use strict";var e,a,d,c,f,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var d=t[e]={exports:{}};return b[e].call(d.exports,d,d.exports,r),d.exports}r.m=b,e=[],r.O=(a,d,c,f)=>{if(!d){var b=1/0;for(i=0;i<e.length;i++){for(var[d,c,f]=e[i],t=!0,o=0;o<d.length;o++)(!1&f||b>=f)&&Object.keys(r.O).every(e=>r.O[e](d[o]))?d.splice(o--,1):(t=!1,f<b&&(b=f));if(t){e.splice(i--,1);var n=c();void 0!==n&&(a=n)}}return a}f=f||0;for(var i=e.length;i>0&&e[i-1][2]>f;i--)e[i]=e[i-1 [...]
\ No newline at end of file
diff --git a/assets/js/runtime~main.21c219fa.js b/assets/js/runtime~main.21c219fa.js
deleted file mode 100644
index b2a563114..000000000
--- a/assets/js/runtime~main.21c219fa.js
+++ /dev/null
@@ -1 +0,0 @@
-(()=>{"use strict";var e,a,f,c,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var f=t[e]={exports:{}};return b[e].call(f.exports,f,f.exports,r),f.exports}r.m=b,e=[],r.O=(a,f,c,d)=>{if(!f){var b=1/0;for(i=0;i<e.length;i++){for(var[f,c,d]=e[i],t=!0,o=0;o<f.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every(e=>r.O[e](f[o]))?f.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=c();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1 [...]
\ No newline at end of file
diff --git a/blog/2025/12/02/fluss-x-iceberg-why-your-lakehouse-is-not-streamhouse-yet/index.html b/blog/2025/12/02/fluss-x-iceberg-why-your-lakehouse-is-not-streamhouse-yet/index.html
index ccff3957c..10517acf4 100644
--- a/blog/2025/12/02/fluss-x-iceberg-why-your-lakehouse-is-not-streamhouse-yet/index.html
+++ b/blog/2025/12/02/fluss-x-iceberg-why-your-lakehouse-is-not-streamhouse-yet/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>Apache Fluss represents a new architectural approach: the <strong>Streamhouse</strong> for real-time lakehouses. Instead of stitching together separate streaming and batch systems, the Streamhouse unifies them under a single architecture. In this model, Apache Iceberg continues to serve exactly the role it was designed for: a highly efficient, scalable cold storage layer for analytics, while Fluss fills the missing piece: a hot streaming storage layer with sub-second latency, columnar [...]
 <p>After working on Fluss–Iceberg lakehouse integration and deploying this architecture at a massive scale, including Alibaba&#x27;s 3 PB production deployment processing 40 GB/s, we&#x27;re ready to share the architectural lessons learned. Specifically, why existing systems fall short, how Fluss and Iceberg naturally complement each other, and what this means for finally building true real-time lakehouses.</p>
 <p><img decoding="async" loading="lazy" alt="Banner" src="/assets/images/fluss-lakehouse-streaming_comp-62d4129ae29a5e1b5453892ae27cc212.png" width="768" height="336" class="img_ev3q"></p>
diff --git a/blog/archive/index.html b/blog/archive/index.html
index 54db7902e..6eb49baa3 100644
--- a/blog/archive/index.html
+++ b/blog/archive/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
                   <p>Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
                   <p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
 </body>
diff --git a/blog/atom.xml b/blog/atom.xml
index cc141f127..a123a813a 100644
--- a/blog/atom.xml
+++ b/blog/atom.xml
@@ -2,11 +2,157 @@
 <feed xmlns="http://www.w3.org/2005/Atom">
     <id>https://fluss.apache.org/blog/</id>
     <title>Apache Fluss™ (Incubating) Blog</title>
-    <updated>2026-04-09T00:00:00.000Z</updated>
+    <updated>2026-04-16T00:00:00.000Z</updated>
     <generator>https://github.com/jpmonette/feed</generator>
     <link rel="alternate" href="https://fluss.apache.org/blog/"/>
     <subtitle>Apache Fluss™ (Incubating) Blog</subtitle>
     <icon>https://fluss.apache.org/img/logo/fluss_favicon.svg</icon>
+    <entry>
+        <title type="html"><![CDATA[Real-Time Unique User Counting at Scale with Apache Fluss]]></title>
+        <id>https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/</id>
+        <link href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/"/>
+        <updated>2026-04-16T00:00:00.000Z</updated>
+        <summary type="html"><![CDATA[UV (Unique Visitors) measures the count of distinct users who visited a page or triggered an event within a given time window — unlike PV (Page Views), which counts every request regardless of who made it. For any product or platform, accurate real-time UV statistics across dimensions like channel, city, date, and hour are a core analytical requirement.]]></summary>
+        <content type="html"><![CDATA[<p><strong>UV (Unique Visitors)</strong> measures the count of distinct users who visited a page or triggered an event within a given time window — unlike <strong>PV (Page Views)</strong>, which counts every request regardless of who made it. For any product or platform, accurate real-time UV statistics across dimensions like channel, city, date, and hour are a core analytical requirement.
+The full combination of four dimensions means <strong>16 grouping methods</strong>; when the dimension count increases to seven, the number of possible groupings reaches <strong>128</strong>.</p>
+<p>How can multi-dimensional deduplication be both accurate and flexible while maintaining real-time performance? Behind this challenge lie two very different computing paradigms: direct deduplication of raw data, or set operations based on bitmaps.</p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="problems-with-traditional-deduplication-schemes">Problems with Traditional Deduplication Schemes<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#problems-with-traditional-deduplication-schemes" class="hash-link" aria-label="Direct link to Problems with Traditional Deduplication Schemes" title="Direct link to Problems with Traditional Deduplication Schemes" translate="no">​</a></h2>
+<p>Direct deduplication of raw data (e.g. <code>COUNT(DISTINCT user_id)</code>) is the most intuitive and accurate deduplication method: maintain a <strong>hash set</strong> for each dimension combination and record all user IDs that have appeared under the group.</p>
+<p>This approach works well with smaller data volumes and fewer dimensions, but as business scale grows, three core limitations emerge.</p>
+<p><strong>Performance increases linearly with the amount of data.</strong> Each dimension combination needs to independently store all user identities that have occurred. When daily page view logs reach billions and distinct users number in the tens or hundreds of millions, each group's hash set demands significant memory and CPU for insertion and lookup. Total compute cost scales with the product of dimension combinations and data volume, which is especially noticeable during peak peri [...]
+<p><strong>Multidimensional extensibility is limited.</strong> If an analyst needs UV by <strong>Channel x City</strong> and <strong>Channel x Date</strong>, the traditional scheme must calculate two separate deduplication results. The existing <strong>Channel x City</strong> result cannot be rolled up to get the <strong>Channel</strong>-level UV, because user sets across cities may overlap and simple summation leads to double counting. With each additional dimension, the computational t [...]
+<p><strong>Insufficient query flexibility.</strong> Pre-aggregation schemes must fix dimension combinations in advance. When a business team needs a new dimension on the fly (such as adding <strong>device type</strong>), adjusting the entire data processing pipeline is often required instead of simply modifying a query.</p>
+<p>These three limitations share a root cause: storing and computing on raw user identities at every dimension combination does not scale.</p>
+<p>Put it another way: what if instead of storing the raw ID of each user, we represented the entire user set as a compact structure — one bit per user?</p>
+<p>In the bitmap scheme, deduplication count equals counting the number of 1s in the bitmap (<code>popcount</code>), merging two user sets equals a bitwise <code>OR</code>, and cross-dimensional analysis equals a bitwise <code>AND</code>. All operations are CPU-native bit operations, blisteringly fast.</p>
+<p>More importantly, bitmaps naturally support roll-up: the bitmap of <code>Channel = app, City = Shanghai</code> combined with <code>OR</code> with the bitmap of <code>Channel = app, City = Beijing</code> yields the user set for <code>Channel = app</code> — no need to re-scan the original data.</p>
+<p>This is a fundamental difference between the two computing paradigms: <strong>direct deduplication</strong> requires independent calculations for each dimension combination, while the intermediate results of <strong>bitmap deduplication</strong> are naturally composable.</p>
+<p>But the raw bitmap has a problem: if the user ID space is sparse (such as <code>UUID</code> or hash values), the bitmap will be very large and waste memory. A compressed bitmap format that works efficiently on sparse data is needed. This is where <strong>RoaringBitmap</strong> comes in.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure1-7c9e1064160a84decb149ba63e55b50b.png" width="1356" height="768" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-roaringbitmap-works">How RoaringBitmap Works<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#how-roaringbitmap-works" class="hash-link" aria-label="Direct link to How RoaringBitmap Works" title="Direct link to How RoaringBitmap Works" translate="no">​</a></h2>
+<p>The core idea of a bitmap is simple: use an array of bits to represent a collection of integers. If the user ID is <code>k</code>, set the <code>k</code>-th position to 1. The deduplication count is the number of 1s, and set merging is a bitwise <code>OR</code>. These operations map directly to CPU instructions, which is extremely efficient.</p>
+<p>However, the size of a raw bitmap depends on the maximum ID value. If the ID space is a <strong>32-bit integer</strong> (about 2.1 billion), a full bitmap takes <strong>256 MB</strong>. When the ID distribution is sparse, most bits are 0, and almost all memory is wasted.</p>
+<p><strong>RoaringBitmap</strong> solves this with a layered, adaptive compression strategy. It divides the 32-bit integer space into <strong>65,536 partitions</strong> by the upper 16 bits, and each partition holds up to 65,536 values (the lower 16 bits), called a <strong>Container</strong>. Each container automatically selects the optimal storage format based on its data density:</p>
+<ul>
+<li class=""><strong>ArrayContainer:</strong> When the number of elements is less than 4,096, values are stored in a sorted array of 16-bit integers. For sparse data, this saves tens of times more space than a raw bitmap.</li>
+<li class=""><strong>BitmapContainer:</strong> When the number of elements reaches 4,096 or more, the container switches to a raw 8 KB bitmap. For dense data, bitmaps are more compact than arrays.</li>
+<li class=""><strong>RunContainer:</strong> When data presents continuous interval characteristics (such as IDs 100–500), values are stored using run-length encoding, recording only the start and end of each run.</li>
+</ul>
+<p>This adaptive strategy allows RoaringBitmap to remain efficient across a variety of data distributions: as compact as an array when sparse, as fast as a bitmap when dense, and as economical as run-length encoding when continuous. In practice, its memory footprint is usually only one-tenth to one-hundredth of the original hash set.</p>
+<p>For deduplication scenarios, RoaringBitmap set operations map directly to analytical requirements: <code>OR</code> merges user sets, <code>AND</code> performs cross-dimensional analysis, <code>ANDNOT</code> performs exclusion analysis, and cardinality returns the deduplication count. All operations are accelerated by <strong>SIMD instructions</strong> and can be completed in milliseconds even on hundreds of millions of records.</p>
+<p>One prerequisite: the input to RoaringBitmap must be an integer, and the denser the ID space, the better the compression and efficiency. If the original user ID is a string (such as a <code>UUID</code> or phone number), a dictionary table is needed to map sparse IDs to dense integer IDs.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure2-88efa22dc33e081300bf9ecd388fd53d.png" width="1356" height="748" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-apache-fluss-enables-roaringbitmap-deduplication">How Apache Fluss Enables RoaringBitmap Deduplication<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#how-apache-fluss-enables-roaringbitmap-deduplication" class="hash-link" aria-label="Direct link to How Apache Fluss Enables RoaringBitmap Deduplication" title="Direct link to How Apache Fluss Enables RoaringBitmap Deduplication" translate="no">​</a></h2>
+<p>A RoaringBitmap-based deduplication scheme requires three things: <strong>a dense integer ID space</strong>, <strong>bitmap merging at the storage layer</strong>, and <strong>native bitmap aggregation functions</strong>. Apache Fluss provides all three as built-in capabilities.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="auto-increment-columns-zero-code-dictionary-tables">Auto-Increment Columns: Zero-Code Dictionary Tables<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#auto-increment-columns-zero-code-dictionary-tables" class="hash-link" aria-label="Direct link to Auto-Increment Columns: Zero-Code Dictionary Tables" title="Direct link to Auto-Increment Columns: Zero-Code Dictionary Tables" translate="no">​</a></h3>
+<p>The auto-increment column feature of Fluss lets you declare a field directly in the table definition. When a new user is written for the first time, Fluss automatically assigns an incrementing integer ID. No external ID service or historical data migration is required.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<p>A single <code>INSERT</code> statement is all that is needed to map sparse identities to dense integers. <code>int32</code> covers about 2.1 billion users, which is sufficient for most business scenarios. The generated ID is unique and monotonically increasing, which is naturally suited to RoaringBitmap's compression strategy.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="aggregate-merge-engine-merge-on-write">Aggregate Merge Engine: Merge on Write<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#aggregate-merge-engine-merge-on-write" class="hash-link" aria-label="Direct link to Aggregate Merge Engine: Merge on Write" title="Direct link to Aggregate Merge Engine: Merge on Write" translate="no">​</a></h3>
+<p>The <strong>Aggregation Merge Engine</strong> of Fluss allows you to define aggregation rules for each column. When rows with the same primary key arrive, Fluss automatically merges them on the server side instead of overwriting or appending.</p>
+<p>This means the compute layer only needs to send raw events and does not need to maintain any aggregated intermediate state. With <strong>exactly-once semantics</strong> based on Flink Checkpoint, the write path is compact and reliable.</p>
+<p>For append-only aggregation operations such as bitmap union (UV deduplication), merging is naturally <strong>idempotent</strong> during writing. Adding the same <code>uid</code> to a bitmap multiple times does not change the result. In such scenarios, Flink jobs are only responsible for forwarding — no complex <code>UDAFs</code> or retraction messages are needed. For scenarios involving data retraction (such as order cancellation), rollback support for the aggregation merge engine is  [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="built-in-rbm32--rbm64-aggregate-functions">Built-in <code>rbm32</code> / <code>rbm64</code> Aggregate Functions<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#built-in-rbm32--rbm64-aggregate-functions" class="hash-link" aria-label="Direct link to built-in-rbm32--rbm64-aggregate-functions" title="Direct link to built-in-rbm32--rbm64-aggregate-functions" translate="no">​</a></h3>
+<p>Fluss supports RoaringBitmap as a first-class aggregation type. <code>rbm32</code> (32-bit) and <code>rbm64</code> (64-bit) perform native bitmap union on write.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<blockquote>
+<p>Note: the quickstart section extends this table with <code>'table.datalake.enabled' = 'true'</code> and <code>'table.datalake.freshness' = '30s'</code> to enable lake tiering for batch queries. The core deduplication behaviour is identical.</p>
+</blockquote>
+<p>Each event carries a single-element bitmap, which Fluss merges into the existing bitmap of the corresponding primary key on the server side. The deduplication logic is entirely handled by the storage layer without requiring any custom merge code.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="putting-it-together-the-full-data-flow">Putting It Together: The Full Data Flow<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#putting-it-together-the-full-data-flow" class="hash-link" aria-label="Direct link to Putting It Together: The Full Data Flow" title="Direct link to Putting It Together: The Full Data Flow" translate="no">​</a></h3>
+<p>These three capabilities are interlinked: the auto-increment column provides a <strong>dense ID</strong> (the prerequisite for bitmap deduplication), the aggregation engine merges on write (deduplication is completed in the storage layer), and <code>rbm32</code> makes bitmap merging a native storage operation (no custom logic needed).</p>
+<p>The data flow is straightforward: when an event arrives, Flink obtains the dense <code>uid</code> by querying the dictionary table via a lookup join, calls <code>RB_BUILD(uid)</code> to build a single-element bitmap, and writes it to the aggregation table. Fluss automatically executes bitmap union on the server side. At query time, <code>RB_CARDINALITY()</code> extracts the UV count directly.</p>
+<p>The responsibilities are clearly separated: <strong>Flink</strong> handles mapping, joining, and forwarding without holding long-lived state; <strong>Fluss</strong> holds the persistent merged result; queries read the merged bitmap and extract the count. Deduplication happens at write time — the query side requires no aggregation at all.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="streaming-lakehouse-unification">Streaming Lakehouse Unification<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#streaming-lakehouse-unification" class="hash-link" aria-label="Direct link to Streaming Lakehouse Unification" title="Direct link to Streaming Lakehouse Unification" translate="no">​</a></h3>
+<p>When data volumes grow to require analysis across longer time windows, this architecture can be seamlessly extended through Fluss's <strong>Lake-Stream integration</strong> capabilities. In a daily partitioning scenario, each day's UV data is stored as a bitmap partition. Historical partitions (e.g., older than 30 days) can be offloaded to <strong>Data Lake</strong> storage (Paimon or Iceberg), while recent partitions remain in Fluss for real-time updates.</p>
+<p>To count UV for an entire year, you only need to <code>OR</code> the 365 daily bitmap partitions and compute the cardinality. Regardless of whether data is in Fluss or the data lake, the bitmap union semantics are identical. This architecture balances storage cost and query flexibility, enabling accurate deduplication analysis across any time span.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure3-44f89c0af7bdf4da5feb4fecea914242.png" width="1350" height="768" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="end-to-end-quickstart">End-to-End Quickstart<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#end-to-end-quickstart" class="hash-link" aria-label="Direct link to End-to-End Quickstart" title="Direct link to End-to-End Quickstart" translate="no">​</a></h2>
+<p>This section walks through the complete workflow with a minimal working example you can run locally.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="environment-preparation">Environment Preparation<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#environment-preparation" class="hash-link" aria-label="Direct link to Environment Preparation" title="Direct link to Environment Preparation" translate="no">​</a></h3>
+<p>Requirements: <strong>Docker</strong> and <strong>Docker Compose</strong>.</p>
+<p><strong>1. Create a working directory and download dependencies</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">mkdir</span><span class="token plain"> fluss-rbm-quickstart </span> [...]
+<p>The UDF JAR is a self-contained fat JAR. Placing it in Flink's <code>lib/</code> directory makes all functions available without additional dependencies. The source code is available in the <a href="https://github.com/flink-extended/flink-roaringbitmap" target="_blank" rel="noopener noreferrer" class="">flink-roaringbitmap</a> repository. Paimon-related JARs enable the <strong>Lakehouse Tiering</strong> feature of Fluss, where data automatically tiers from Fluss into Paimon, supportin [...]
+<p><strong>2. Create <code>docker-compose.yml</code></strong></p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">docker-compose.yml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token key atrule" style="color:#3f6ec6">services [...]
+<p><strong>3. Start the environment</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose up </span><span cla [...]
+<p><strong>4. Start the Lakehouse Tiering Service</strong></p>
+<p>The tiering service continuously transfers data from Fluss to Paimon to support batch queries. Start it in the background before writing data:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose </span><span class= [...]
+<p><strong>5. Open the SQL Client</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose </span><span class= [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-a-catalog-and-register-the-udfs">Create a Catalog and Register the UDFs<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#create-a-catalog-and-register-the-udfs" class="hash-link" aria-label="Direct link to Create a Catalog and Register the UDFs" title="Direct link to Create a Catalog and Register the UDFs" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<p>Register the RoaringBitmap UDFs. The JAR contains three functions: <code>RB_BUILD</code> wraps a single integer as a bitmap; <code>RB_CARDINALITY</code> extracts the deduplication count from a bitmap; <code>RB_OR_AGG</code> executes bitmap <code>OR</code> aggregation for roll-up queries. The deduplication merge at write time is performed by Fluss's <code>rbm32</code> aggregation — these UDFs handle bitmap construction on the Flink side and analysis on the query side.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<blockquote>
+<p><strong>Note:</strong> These functions are currently provided by the external <a href="https://github.com/flink-extended/flink-roaringbitmap" target="_blank" rel="noopener noreferrer" class="">flink-roaringbitmap</a> library. Once <a href="https://cwiki.apache.org/confluence/display/FLUSS/FIP-37%3A+Native+RoaringBitmap+Integration+for+Apache+Fluss" target="_blank" rel="noopener noreferrer" class="">FIP-37: Native RoaringBitmap Integration for Apache Fluss</a> is completed, they will b [...]
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-dictionary-and-aggregation-tables">Create Dictionary and Aggregation Tables<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#create-dictionary-and-aggregation-tables" class="hash-link" aria-label="Direct link to Create Dictionary and Aggregation Tables" title="Direct link to Create Dictionary and Aggregation Tables" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token comment" style="color:#8e908c;font-style:italic">-- D [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="write-sample-data">Write Sample Data<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#write-sample-data" class="hash-link" aria-label="Direct link to Write Sample Data" title="Direct link to Write Sample Data" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token comment" style="color:#8e908c;font-style:italic">-- S [...]
+<p>Each event is written as one row carrying a single-element bitmap. Fluss merges it server-side via <code>rbm32</code> union into the existing bitmap of the corresponding primary key. Flink jobs are only responsible for mapping and forwarding — they hold no aggregation state, require no <code>GROUP BY</code>, and do not process retraction messages.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure4-b5f8ffeafbf32ec7c4f1090336f94b81.png" width="1344" height="746" class="img_ev3q"></p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="query-deduplication-results">Query Deduplication Results<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#query-deduplication-results" class="hash-link" aria-label="Direct link to Query Deduplication Results" title="Direct link to Query Deduplication Results" translate="no">​</a></h3>
+<p>After writing the data, wait approximately 60 seconds for the data to tier into Paimon. For PK tables, the tiering service uses the <strong>KV snapshot</strong> as a synchronization checkpoint — it reads the snapshot state first, then replays subsequent <strong>CDC events</strong> from that point. The wait covers one KV snapshot period (30 seconds) plus one tiering checkpoint period. Switch to <strong>batch mode</strong> to query the tiered data. Batch mode supports <code>ORDER BY</co [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SET</span><span class= [...]
+<p>Result:</p>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----------+----------+----+----+----+</span><br></div><div class="token-line [...]
+<p>Note the <code>(app, Shanghai, 20260301, 10)</code> row: <code>user_1</code> appeared twice and <code>user_2</code> appeared once, yielding <code>uv = 2</code>. The three single-element bitmaps were merged by Fluss into a deduplicated set containing two distinct users. <code>pv = 3</code> is the raw event count from the sum aggregation. The query side requires no aggregation — results are ready at write time.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="multi-dimensional-roll-up-queries">Multi-Dimensional Roll-Up Queries<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#multi-dimensional-roll-up-queries" class="hash-link" aria-label="Direct link to Multi-Dimensional Roll-Up Queries" title="Direct link to Multi-Dimensional Roll-Up Queries" translate="no">​</a></h3>
+<p>The preceding query reads the finest-granularity pre-aggregation results (<code>channel × city × ymd × hh</code>). The real power of bitmaps is supporting flexible roll-up: performing <code>OR</code> operations across fine-grained bitmaps yields coarse-grained deduplication counts without returning to the original data.</p>
+<p>Roll up by channel, overall UV across all cities, dates, and hours:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----+----+</span><br></div><div class="token-line" style="color:#36464e"><sp [...]
+<p><code>user_1</code> visited the <code>app</code> channel from both Shanghai and Beijing at multiple times. <code>RB_OR_AGG</code> combines all fine-grained bitmaps under the same channel into a single deduplicated set — each user is counted only once. The <code>app</code> channel has four distinct users (1, 2, 3, 5), not a simple sum of per-group UV counts.</p>
+<p>Roll up by date, daily UV across all channels and cities:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+----------+----+----+</span><br></div><div class="token-line" style="color:#36464e"><span c [...]
+<p>Active users are users 1–4 on March 1 and users 1, 2, 4, and 5 on March 2. Simply summing per-group UV counts would result in double counting, but the bitmap <code>OR</code> operation gives accurate results.</p>
+<p>Roll up by channel x date, a common dashboard view:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----------+----+----+</span><br></div><div class="token-line" style="color:# [...]
+<p>Global UV, total distinct users across all dimensions:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+----------+----------+</span><br></div><div class="token-line" style="color:#36464e"><span  [...]
+<p>Five distinct users generated a total of 12 page views. One query, one full bitmap <code>OR</code> — no need to re-scan the original events.</p>
+<p>All roll-up queries follow the same pattern: <code>GROUP BY</code> the target dimensions, apply <code>RB_OR_AGG</code> on the bitmap column, and use <code>RB_CARDINALITY</code> to extract the count. The finest-granularity pre-aggregated bitmap is the building block for all coarser-grained analysis.</p>
+<blockquote>
+<p>In a production environment, replace the bounded <code>page_views</code> view with a streaming data source and add the <code>/*+ OPTIONS('lookup.insert-if-not-exists' = 'true') */</code> hint to automatically register new users and enable a real-time bitmap write pipeline. The storage-side schema remains identical.</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="clean-up-the-environment">Clean Up the Environment<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#clean-up-the-environment" class="hash-link" aria-label="Direct link to Clean Up the Environment" title="Direct link to Clean Up the Environment" translate="no">​</a></h3>
+<p>After exiting the SQL Client, run the following to stop and remove all containers:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose down </span><span c [...]
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="beyond-uv-other-use-cases">Beyond UV: Other Use Cases<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#beyond-uv-other-use-cases" class="hash-link" aria-label="Direct link to Beyond UV: Other Use Cases" title="Direct link to Beyond UV: Other Use Cases" translate="no">​</a></h2>
+<p>This pattern is not limited to UV counting. It extends naturally to a variety of analytical scenarios. The core structure is consistent: choose the appropriate primary key granularity, and bitmap merging is handled by the storage layer at write time.</p>
+<p><strong>Real-time multi-dimensional UV analysis.</strong> The main scenario in this post. Accurate UV statistics based on any combination of dimensions such as channel, city, date, and hour, with flexible dimension roll-up via bitmap union. Applicable to traffic dashboards, advertising effectiveness analysis, and activity monitoring.</p>
+<p><strong>User retention analysis.</strong> Store active user bitmaps at the granularity of <code>user × date</code>. The retained user set is obtained by <code>AND</code>-ing bitmaps from different dates. For example, the cardinality of <code>Day1_bitmap AND Day7_bitmap</code> gives the 7-day retention count.</p>
+<p><strong>Funnel analysis.</strong> Store an aggregation table for each funnel step, with bitmaps recording the set of users who reached that step. Conversion rates are computed by <code>AND</code>-ing bitmaps of adjacent steps. Since bitmaps support set difference (<code>ANDNOT</code>), you can further analyze the characteristics of users who dropped off at each step.</p>
+<p><strong>Audience segmentation and user profiling.</strong> Build user attribute labels (such as gender, province, and preference category) as bitmaps. Multi-label combination queries are converted into bitmap <code>AND</code>/<code>OR</code>/<code>ANDNOT</code> operations, enabling selection of tens of millions of users in milliseconds. This is a high-frequency scenario in advertising <strong>DMP</strong> and recommendation systems.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure5-86a3bd1f0dede51a77608a746ad9ff7b.png" width="1344" height="760" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting Started<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
+<p>If you are evaluating real-time multi-dimensional exact deduplication schemes, Fluss's RoaringBitmap capability is a worthwhile starting point. The architecture follows a clear three-step pattern:</p>
+<ol>
+<li class=""><strong>Map</strong> sparse user identities to dense integers using an auto-increment <code>uid_dictionary</code> table.</li>
+<li class=""><strong>Deduplicate at write time</strong> using an <code>rbm32</code> aggregation table — no stateful Flink jobs, no complex UDAFs.</li>
+<li class=""><strong>Query directly</strong> using <code>RB_CARDINALITY()</code> for point reads or <code>RB_OR_AGG()</code> + <code>RB_CARDINALITY()</code> for any roll-up combination.</li>
+</ol>
+<p>The result is a system where deduplication is handled entirely by the storage layer, and the query side reads pre-computed results with no additional aggregation overhead.</p>
+<p><code>rbm32</code> / <code>rbm64</code> aggregation and the auto-increment dictionary scheme are available from <strong>Apache Fluss 0.9</strong>. See the <a href="https://fluss.apache.org/" target="_blank" rel="noopener noreferrer" class="">Fluss documentation</a> for the full configuration reference.</p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="join-the-community">Join the Community<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#join-the-community" class="hash-link" aria-label="Direct link to Join the Community" title="Direct link to Join the Community" translate="no">​</a></h2>
+<p>Apache Fluss is an open-source project under active development within the Apache Software Foundation.</p>
+<ul>
+<li class="">GitHub: <a href="https://github.com/apache/fluss" target="_blank" rel="noopener noreferrer" class="">github.com/apache/fluss</a></li>
+<li class="">Documentation: <a href="https://fluss.apache.org/" target="_blank" rel="noopener noreferrer" class="">fluss.apache.org</a></li>
+</ul>]]></content>
+        <author>
+            <name>Yang Wang</name>
+            <uri>https://github.com/platinumhamburg</uri>
+        </author>
+    </entry>
     <entry>
         <title type="html"><![CDATA[Why Apache Fluss Chose Rust for Its Multi-Language SDK]]></title>
         <id>https://fluss.apache.org/blog/why-fluss-chose-rust-for-multi-language-sdk/</id>
@@ -1266,7 +1412,7 @@ and then ship the results into a <strong>separate serving</strong> system purely
 <p><strong>This introduces an important trade-off:</strong> every additional system means duplicate storage, increased latency, and extra operational overhead. Data has to be landed, indexed, and kept in sync, even though the stream processor has already computed the end state.</p>
 <p>With Fluss Primary Key Tables, you don’t need that extra serving layer. Your stateful computations in Flink can materialize directly into PK Tables, which are durable, consistent, and queryable in real time. This lets you power dashboards or APIs straight from the tables, cutting out redundant clusters and reducing end-to-end latency.</p>
 <p><strong>In short:</strong> compute once in Flink, persist in Fluss, and serve directly, without duplicating storage or managing another system.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-closing-thoughts">🚀 Closing Thoughts<a href="https://fluss.apache.org/blog/pk-key-tables-log-cache-streaming/#-closing-thoughts" class="hash-link" aria-label="Direct link to �🚀 Closing Thoughts" title="Direct link to 🚀 Closing Thoughts" translate="no">​</a></h3>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-closing-thoughts">🚀 Closing Thoughts<a href="https://fluss.apache.org/blog/pk-key-tables-log-cache-streaming/#-closing-thoughts" class="hash-link" aria-label="Direct link to 🚀 Closing Thoughts" title="Direct link to 🚀 Closing Thoughts" translate="no">​</a></h3>
 <p>The above are some examples use cases, we have seen recently and I'm only eager to see what users will build with Fluss - realtime features stores is another PK table use case currently under investigation.</p>
 <p>Fluss Primary Key Tables are one of the most compelling features of the platform. They embody the <strong>stream-table duality</strong> in practice: every write is a log entry and a KV update; every recovery is a snapshot plus replay; every cache read is guaranteed to be consistent with the log.</p>
 <p>The complexity of coordinating a log and a cache disappears. With Fluss, you don’t have to choose between speed and safety; you get both.</p>
@@ -2708,77 +2854,4 @@ The future planning for Fluss involves three key aspects, each corresponding to
             <uri>https://github.com/wuchong</uri>
         </author>
     </entry>
-    <entry>
-        <title type="html"><![CDATA[Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics]]></title>
-        <id>https://fluss.apache.org/blog/why-fluss/</id>
-        <link href="https://fluss.apache.org/blog/why-fluss/"/>
-        <updated>2024-12-11T00:00:00.000Z</updated>
-        <summary type="html"><![CDATA[The industry is undergoing a clear and significant shift as big data computing transitions from offline to real-time processing.]]></summary>
-        <content type="html"><![CDATA[<p>The industry is undergoing a clear and significant shift as big data computing transitions from offline to real-time processing.
-This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
-where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
-value by leveraging real-time insights to drive business impact and enhance decision-making.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img1-a29d423ce0b5f952b79ad2babb903cf5.jpg" width="3656" height="1240" class="img_ev3q">
-The evolution of big data technology is becoming increasingly impactful, reshaping the computing architecture landscape.
-The traditional Hive-based data warehouse has given way to modern architectures, starting with Lakehouse models and progressing
-to the Paimon streaming Lakehouse, which has gained significant traction in markets like China and more recently started expanding to EU/US markets.
-The core driver behind these architectural innovations is the need to improve data processing timeliness. The data freshness is improved from traditional
-T+1 (next-day readiness) to T+1 hours, and now T+1 minutes. However, Lakehouse architectures, being file-system-based,
-inherently face minute-level latency as their practical upper limit.</p>
-<p>Yet, many critical use cases, such as search and recommendation systems, advertisement attribution, and anomaly detection, demand second-level latency.
-While big data technologies have advanced significantly, there remains a notable gap: a user-friendly, second-level storage solution tailored for big data analytics.</p>
-<p>In most real-time data scenarios, Apache Kafka has emerged as the go-to second-level storage solution. Its integration with Apache Flink represents the dominant architecture for building real-time data warehouses. However, while widely adopted, this combination presents significant challenges for achieving true real-time analytics at scale. The limitations of using Kafka for big data analytics highlight the need for a more robust solution to meet the demands of modern real-time use ca [...]
-<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kafka-falls-short-in-real-time-analytics">Kafka Falls Short in Real-Time Analytics<a href="https://fluss.apache.org/blog/why-fluss/#kafka-falls-short-in-real-time-analytics" class="hash-link" aria-label="Direct link to Kafka Falls Short in Real-Time Analytics" title="Direct link to Kafka Falls Short in Real-Time Analytics" translate="no">​</a></h2>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="no-support-for-updates">No Support for Updates<a href="https://fluss.apache.org/blog/why-fluss/#no-support-for-updates" class="hash-link" aria-label="Direct link to No Support for Updates" title="Direct link to No Support for Updates" translate="no">​</a></h3>
-<p>The first significant challenge with Apache Kafka is its lack of support for updates, a critical feature for data warehouses. In data warehousing, updates are often essential to correct or amend data. However, Kafka's inability to handle updates results in duplicate records for the same primary key. When consumed by a computing engine, this duplication necessitates costly deduplication processes to ensure accurate results.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img2-d2d1a314768a1be3da0308e20851d3f3.jpg" width="3656" height="1172" class="img_ev3q"></p>
-<p>In Apache Flink, for instance, handling this issue requires materializing all upstream data in state, which is resource-intensive. Every time data is consumed from Kafka, the deduplication process incurs a substantial overhead, significantly increasing computational and storage costs. This limitation not only impacts performance but also hampers the reusability of Kafka-stored data for downstream business processes.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="lack-of-querying-capabilities">Lack of Querying Capabilities<a href="https://fluss.apache.org/blog/why-fluss/#lack-of-querying-capabilities" class="hash-link" aria-label="Direct link to Lack of Querying Capabilities" title="Direct link to Lack of Querying Capabilities" translate="no">​</a></h3>
-<p>The second major limitation of Apache Kafka is hard to debug, primarily due to its lack of native querying capabilities. In data warehousing, querying is a fundamental feature that facilitates troubleshooting and ad-hoc analysis to understand data trends. Unfortunately, Kafka operates much like a black box, making it challenging to perform these critical tasks without additional tools or layers.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg" width="3696" height="1214" class="img_ev3q"></p>
-<p>To address this limitation, the industry has adopted two primary approaches, each with its own trade-offs:</p>
-<ul>
-<li class=""><strong>Synchronizing Kafka Data to an OLAP System:</strong> This allows for querying data using the OLAP system’s capabilities. However, this approach introduces additional components into the architecture, increasing both complexity and cost. Moreover, it risks data inconsistencies due to synchronization delays.</li>
-<li class=""><strong>Querying Kafka Directly Using Trino:</strong> While Trino can query Kafka, it relies solely on full scans, which are inefficient for large-scale operations. For instance, a simple query on just 1GB of Kafka data can take up to one minute, rendering it impractical for large datasets or real-time requirements.</li>
-</ul>
-<p>These limitations make Kafka unsuitable for efficient and scalable data exploration in modern data warehousing workflows.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="difficulty-with-data-backfilling">Difficulty with Data Backfilling<a href="https://fluss.apache.org/blog/why-fluss/#difficulty-with-data-backfilling" class="hash-link" aria-label="Direct link to Difficulty with Data Backfilling" title="Direct link to Difficulty with Data Backfilling" translate="no">​</a></h3>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img4-5a57c638bb5dd478a86a9fcd1683734f.jpg" width="3526" height="1210" class="img_ev3q">
-The third significant issue with Apache Kafka is processing historical data, also known as data backfilling, a common requirement in data warehousing.
-For instance, in logistics, it usually needs to process and analyze historical data from several months ago. However, Kafka only retain data for a few days due to the high cost of storage.
-Even though Kafka community has introduced <a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage" target="_blank" rel="noopener noreferrer" class="">Tiered Storage</a> to address the long-term data issue, it still has limitations.
-Reading historical data still require all the data to pass through Kafka brokers, which can lead to brokers unstable and <a href="https://www.warpstream.com/blog/tiered-storage-wont-fix-kafka#increased-complexity-and-operational-burden" target="_blank" rel="noopener noreferrer" class="">disrupt live traffics</a>.</p>
-<p>These limitations highlight Kafka’s inefficiency as a solution for data backfilling in large-scale and long-term analytical use cases, further underscoring the need for more robust alternatives in real-time data warehousing.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="excessive-network-costs">Excessive Network Costs<a href="https://fluss.apache.org/blog/why-fluss/#excessive-network-costs" class="hash-link" aria-label="Direct link to Excessive Network Costs" title="Direct link to Excessive Network Costs" translate="no">​</a></h3>
-<p>The final major challenge with Apache Kafka lies in its high network costs, which account for an estimated 88% of Kafka's overall operational expenses. In data warehousing, the "one write, multiple read" pattern is common, with each consumer often requiring only a subset of the data. However, Kafka's design mandates that consumers read the entire dataset, regardless of how much is actually needed.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img5-e185731d5e249a6c80b962b77b5a16ad.jpg" width="3636" height="1206" class="img_ev3q"></p>
-<p>For instance, among the tens of thousands of Flink SQL jobs at Alibaba, only 49% of the upstream columns are utilized per job on average. Despite this, consumers must read all the columns and pay 100% networking cost, which is highly inefficient and wasteful.</p>
-<p>In summary, using Kafka for real-time analytics presents several critical issues: <strong>(1) lack of support for updates</strong>, <strong>(2) absence of querying capabilities</strong>, <strong>(3) difficulty with data backfilling</strong>, and <strong>(4) excessive network costs</strong>. These limitations make the combination of Flink and Kafka less than ideal for real-time data warehousing.
-But why Kafka lacks these abilities? Is it possible to add the abilities to Kafka?</p>
-<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kafka-is-not-designed-for-analytics">Kafka is not designed for Analytics<a href="https://fluss.apache.org/blog/why-fluss/#kafka-is-not-designed-for-analytics" class="hash-link" aria-label="Direct link to Kafka is not designed for Analytics" title="Direct link to Kafka is not designed for Analytics" translate="no">​</a></h2>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg" width="3620" height="1148" class="img_ev3q">
-The root cause of these challenges lies in the fundamental design philosophy of Kafka: <strong>Kafka is designed for streaming events, NOT for streaming analytics</strong>. Each system has its own focus and strengths, and Kafka's design is optimized for message queue scenarios rather than analytical workloads.</p>
-<p>In Kafka, data is typically stored in a row-oriented format, such as CSV, JSON, or Avro.
-While this is highly efficient for use cases involving message streaming, it becomes a bottleneck for analytical scenarios.
-Data analysis requires handling large volumes of data, and therefore heavily relies on data skipping capabilities from storage, such as column pruning and predicate pushdown.
-For this reason, columnar storage is far better suited for analytical workloads, whereas Kafka's row-based storage is not designed to meet these demands effectively.</p>
-<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introducing-fluss">Introducing Fluss<a href="https://fluss.apache.org/blog/why-fluss/#introducing-fluss" class="hash-link" aria-label="Direct link to Introducing Fluss" title="Direct link to Introducing Fluss" translate="no">​</a></h2>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img7-06886bca9797751895c82d707cb04b2d.jpg" width="3644" height="1210" class="img_ev3q">
-When visualizing the data ecosystem as a four-quadrant matrix, an intriguing pattern emerges.
-The left side of the matrix represents operational systems, while the right side represents analytical systems.
-The top half is dedicated to stream storage, and the bottom half to table storage.
-In operational systems, both databases and stream storage predominantly use row-based formats, as row storage is more efficient for transactional workloads. Conversely, in analytical systems like Apache Iceberg and Snowflake, columnar storage is preferred due to its superior performance in analytical scenarios.</p>
-<p>Interestingly, the upper-right quadrant of the matrix remains empty, indicating a significant gap in the market: a streaming storage for analytical scenarios. Unsurprisingly, such a storage would likely adopt a columnar format to effectively address the needs of real-time analytics.</p>
-<p>To fill the gap and resolve problems in Flink and streaming analytics, we embarked on a journey two years ago to create a streaming storage. We named the project "<strong>FL</strong>ink <strong>U</strong>nified <strong>S</strong>treaming <strong>S</strong>torage", and from its initials, we derived the name <strong>Fluss</strong>.
-<img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img8-87cfb5887e9a49febaacd805de5216fe.jpg" width="3700" height="946" class="img_ev3q">
-Interestingly, Flink is derived from the German word for "<strong>agile</strong>", and Fluss, which translates to "<strong>river</strong>" in German, resonates deeply with the project’s vision.
-It symbolizes the streaming data is continuously flowing, distributing and converging into data lakes, just like a river.
-The launch of Fluss coincides with Flink's 10th anniversary, making it a fitting tribute to the project’s heritage and its enduring contribution to the streaming data landscape.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg" width="3686" height="1242" class="img_ev3q"></p>
-<p>Learn more details about Fluss in the next <a class="" href="https://fluss.apache.org/blog/fluss-intro/">blog post</a>, where we will delve deeper into Fluss's architecture, design principles, key features, and explore how it addresses the challenges of using Kafka for real-time analytics.</p>]]></content>
-        <author>
-            <name>Jark Wu</name>
-            <uri>https://github.com/wuchong</uri>
-        </author>
-    </entry>
 </feed>
\ No newline at end of file
diff --git a/blog/authors/index.html b/blog/authors/index.html
index af1634bcf..90cc6ada9 100644
--- a/blog/authors/index.html
+++ b/blog/authors/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
                   <p>Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
                   <p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
 </body>
diff --git a/blog/fluss-for-ai/index.html b/blog/fluss-for-ai/index.html
index 076699574..6e8d1a003 100644
--- a/blog/fluss-for-ai/index.html
+++ b/blog/fluss-for-ai/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p><img decoding="async" loading="lazy" src="/assets/images/banner-a3fa3c1c723340acae7046f86be1de82.png" width="1024" height="1024" class="img_ev3q">
 <strong>Apache Fluss (Incubating) started as streaming storage for real-time analytics</strong>, built to work closely with stream processors like Apache Flink.
 Its focus has always been on freshness, efficient analytical access, and continuous data, making fast-changing streams directly usable without forcing them
diff --git a/blog/fluss-intro/index.html b/blog/fluss-intro/index.html
index 12e107139..e412c6844 100644
--- a/blog/fluss-intro/index.html
+++ b/blog/fluss-intro/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 Today, we are excited to introduce Fluss, a cutting-edge streaming storage system designed to power real-time analytics.
 We are going to explore Fluss&#x27;s architecture, design principles, key features, and how it addresses the challenges of using Kafka for real-time analytics.</p>
 <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="key-features-of-fluss">Key Features of Fluss<a href="#key-features-of-fluss" class="hash-link" aria-label="Direct link to Key Features of Fluss" title="Direct link to Key Features of Fluss" translate="no">​</a></h2>
diff --git a/blog/fluss-java-client/index.html b/blog/fluss-java-client/index.html
index 1c1c6ae30..b0d2417e0 100644
--- a/blog/fluss-java-client/index.html
+++ b/blog/fluss-java-client/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h2>
 <p>Apache Fluss is a streaming data storage system built for real-time analytics, serving as a low-latency data layer in modern data Lakehouses.
 It supports sub-second streaming reads and writes, storing data in a columnar format for efficiency, and offers two flexible table types: <strong>append-only Log Tables</strong> and <strong>updatable Primary Key Tables</strong>.
diff --git a/blog/fluss-joins-asf/index.html b/blog/fluss-joins-asf/index.html
index f49384e9e..50b6212ea 100644
--- a/blog/fluss-joins-asf/index.html
+++ b/blog/fluss-joins-asf/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 neutral, and standardized. Moving forward, Fluss will leverage the ASF ecosystem to accelerate the building of a global developer community, continuously driving innovation and adoption of next-generation real-time data infrastructure.</p>
 <p><img decoding="async" loading="lazy" alt="ASF" src="/assets/images/asf-0621eab6f6aadbdfebfc5e24a36667c1.png" width="1231" height="631" class="img_ev3q"></p>
 <p>The Fluss community has recently completed all donation procedures and successfully transferred the project to the Apache Software Foundation.
diff --git a/blog/fluss-open-source/index.html b/blog/fluss-open-source/index.html
index 312ae4f9d..bef73dc7d 100644
--- a/blog/fluss-open-source/index.html
+++ b/blog/fluss-open-source/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 Fluss is a <strong>streaming storage system</strong> designed to power real-time analytics. It aspires to change how organizations approach real-time data by acting as the <strong>real-time data layer</strong> for the Lakehouse.
 Its cutting-edge design enables businesses to achieve <strong>sub-second latency</strong>, <strong>high throughput</strong>, and <strong>cost efficiency</strong> for data analytics, making it the ideal solution for modern data-driven applications.</p>
 <p>We have historically invested a lot of effort into advancing the data streaming ecosystem, being major contributors to <a href="https://flink.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Flink®</a>, <a href="https://www.ververica.com/blog/ververica-donates-flink-cdc-empowering-real-time-data-integration-for-the-community" target="_blank" rel="noopener noreferrer" class="">Apache Flink CDC</a>, and <a href="https://paimon.apache.org/" target="_blank" rel="noop [...]
diff --git a/blog/fluss_fraud_detection/index.html b/blog/fluss_fraud_detection/index.html
index 98ee6f24d..ed88dd217 100644
--- a/blog/fluss_fraud_detection/index.html
+++ b/blog/fluss_fraud_detection/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>Fraud detection is a mission-critical capability for businesses operating in financial services, e-commerce, and digital payments. Detecting suspicious transactions in real time can prevent significant losses and protect customers. This blog demonstrates how to build a streamhouse that processes bank transactions in real time, detects fraud, and serves data seamlessly across hot (sub‑second latency) and cold (minutes‑latency) layers.
 Real-time detection and historical analytics are combined, enabling businesses to act quickly while maintaining a complete audit trail.</p>
 <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="streamhouse-architecture">Streamhouse Architecture<a href="#streamhouse-architecture" class="hash-link" aria-label="Direct link to Streamhouse Architecture" title="Direct link to Streamhouse Architecture" translate="no">​</a></h2>
diff --git a/blog/fluss_rust_client_release/index.html b/blog/fluss_rust_client_release/index.html
index 7d18439d0..92e4c15c5 100644
--- a/blog/fluss_rust_client_release/index.html
+++ b/blog/fluss_rust_client_release/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>We are excited to announce the release of <a href="https://github.com/apache/fluss-rust" target="_blank" rel="noopener noreferrer" class="">fluss-rust clients</a> 0.1.0, the first official release of the <a href="https://clients.fluss.apache.org/user-guide/rust/installation" target="_blank" rel="noopener noreferrer" class="">Rust</a>, <a href="https://clients.fluss.apache.org/user-guide/python/installation" target="_blank" rel="noopener noreferrer" class="">Python</a>, and <a href="ht [...]
 <p>Under the hood, all three clients share a single Rust core that handles protocol negotiation, batching, retries, and <a href="https://arrow.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Arrow</a>-based data exchange, with thin language-specific bindings on top. This was a deliberate community decision to deliver native performance and feature parity across every language from day one.</p>
 <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="highlights">Highlights<a href="#highlights" class="hash-link" aria-label="Direct link to Highlights" title="Direct link to Highlights" translate="no">​</a></h2>
diff --git a/blog/hands-on-fluss-lakehouse/index.html b/blog/hands-on-fluss-lakehouse/index.html
index 8a8c7e150..1a30af205 100644
--- a/blog/hands-on-fluss-lakehouse/index.html
+++ b/blog/hands-on-fluss-lakehouse/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p><img decoding="async" loading="lazy" src="/assets/images/streamhouse-7b7f1260fc996ca89b50dbb9454584ab.png" width="3057" height="1237" class="img_ev3q"></p>
 <p>In this hands-on tutorial, we&#x27;ll walk you through setting up a local Fluss lakehouse environment, running some practical data operations, and getting first-hand experience with the complete Fluss lakehouse architecture. By the end, you&#x27;ll have a working environment for experimenting with Fluss&#x27;s powerful data processing capabilities.</p>
 <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="integrate-with-paimon-minio-lakehouse">Integrate with Paimon Minio Lakehouse<a href="#integrate-with-paimon-minio-lakehouse" class="hash-link" aria-label="Direct link to Integrate with Paimon Minio Lakehouse" title="Direct link to Integrate with Paimon Minio Lakehouse" translate="no">​</a></h2>
@@ -159,7 +159,7 @@
 <p>Open the Minio WebUI, and you&#x27;ll see the Paimon files in your bucket:</p>
 <p><img decoding="async" loading="lazy" src="/assets/images/fluss-bucket-data-47a0df43a938f44f5671f184588fd5ef.png" width="1508" height="530" class="img_ev3q"></p>
 <p>You can also check the Parquet files and manifest in your local filesystem under <code>/tmp/minio-data</code>:</p>
-<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">/tmp/minio-data ❯ tree .</span><br></div><div class="token-line" style="color:#36464e"><span [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">/tmp/minio-data ❯ tree .</span><br></div><div class="token-line" style="color:#36464e"><span [...]
 </li>
 <li class="">
 <p>View Snapshots</p>
diff --git a/blog/index.html b/blog/index.html
index fadcd03ac..96600f8eb 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -3,7 +3,7 @@
 <head>
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.10.0">
-<title data-rh="true">Blog | Apache Fluss™ (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
+<title data-rh="true">Blog | Apache Fluss™ (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fluss™ (Incubating) Atom Feed">
 
 
@@ -15,14 +15,23 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+The full combination of four dimensions means <strong>16 grouping methods</strong>; when the dimension count increases to seven, the number of possible groupings reaches <strong>128</strong>.</p>
+<p>How can multi-dimensional deduplication be both accurate and flexible while maintaining real-time performance? Behind this challenge lie two very different computing paradigms: direct deduplication of raw data, or set operations based on bitmaps.</p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="problems-with-traditional-deduplication-schemes">Problems with Traditional Deduplication Schemes<a href="#problems-with-traditional-deduplication-schemes" class="hash-link" aria-label="Direct link to Problems with Traditional Deduplication Schemes" title="Direct link to Problems with Traditional Deduplication Schemes" translate="no">​</a></h2>
+<p>Direct deduplication of raw data (e.g. <code>COUNT(DISTINCT user_id)</code>) is the most intuitive and accurate deduplication method: maintain a <strong>hash set</strong> for each dimension combination and record all user IDs that have appeared under the group.</p>
+<p>This approach works well with smaller data volumes and fewer dimensions, but as business scale grows, three core limitations emerge.</p>
+<p><strong>Performance increases linearly with the amount of data.</strong> Each dimension combination needs to independently store all user identities that have occurred. When daily page view logs reach billions and distinct users number in the tens or hundreds of millions, each group&#x27;s hash set demands significant memory and CPU for insertion and lookup. Total compute cost scales with the product of dimension combinations and data volume, which is especially noticeable during peak [...]
+<p><strong>Multidimensional extensibility is limited.</strong> If an analyst needs UV by <strong>Channel x City</strong> and <strong>Channel x Date</strong>, the traditional scheme must calculate two separate deduplication results. The existing <strong>Channel x City</strong> result cannot be rolled up to get the <strong>Channel</strong>-level UV, because user sets across cities may overlap and simple summation leads to double counting. With each additional dimension, the computational t [...]
+<p><strong>Insufficient query flexibility.</strong> Pre-aggregation schemes must fix dimension combinations in advance. When a business team needs a new dimension on the fly (such as adding <strong>device type</strong>), adjusting the entire data processing pipeline is often required instead of simply modifying a query.</p>
+<p>These three limitations share a root cause: storing and computing on raw user identities at every dimension combination does not scale.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Real-Time Unique User Counting at Scale with Apache Fluss" href="/blog/roaringbitmap-uv-deduplication/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/why-fluss-chose-r [...]
 <p>If you maintain a data system that only speaks Java, you will eventually hear from someone who doesn&#x27;t. A Python team building a feature store. A C++ service that needs sub-millisecond writes. An AI agent that wants to call your system through a tool binding. They all need the same capabilities (writes, reads, lookups) and none of them want to spin up a JVM to get them.</p>
 <p>Apache Fluss, streaming storage for real-time analytics and AI, hit this exact inflection point. The <a class="" href="/blog/fluss-java-client/">Java client</a> works well for Flink-based compute, where the JVM is already the world you live in. But outside that world, asking consumers to run a JVM sidecar just to write a record or look up a key creates friction that compounds across every service, every pipeline, every agent in the stack.</p>
 <p>We could have written a separate client for each language. Maintain five copies of the wire protocol, five implementations of the batching logic, five sets of retry semantics and idempotence tracking. That path scales linearly with languages and ends predictably: the Java client gets features first, the Python client gets them six months later with slightly different edge-case behavior, and the C++ client is perpetually &quot;almost done.&quot;</p>
@@ -91,9 +100,7 @@ Fluss solves the problems of redundant data transfer, difficulties in data profi
 By combining columnar storage with real-time update capabilities, Fluss supports column pruning, key-value point lookups, Delta Join, and seamless lake–stream integration, thereby <strong>cutting I/O and compute overhead</strong> while enhancing job stability and profiling efficiency.</p>
 <p>Already deployed on Taobao’s A/B-testing platform for critical services such as search and recommendation, the system proved its resilience during the 618 Grand Promotion:
 <strong>it handled tens of millions of requests with sub-second latency</strong>, lowered resource usage by <strong>30%</strong>, and removed more than 100 TB from state storage.
-Looking ahead, the team will continue to extend Fluss within a <strong>Lakehouse architecture</strong> and broaden its use across <strong>AI-driven</strong> workloads.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about How Taobao uses Apache Fluss (Incubating) for Real-Time Processing in Search and RecSys" href="/blog/taobao-practice/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class=" [...]
-<p><img decoding="async" loading="lazy" src="/assets/images/streamhouse-7b7f1260fc996ca89b50dbb9454584ab.png" width="3057" height="1237" class="img_ev3q"></p>
-<p>In this hands-on tutorial, we&#x27;ll walk you through setting up a local Fluss lakehouse environment, running some practical data operations, and getting first-hand experience with the complete Fluss lakehouse architecture. By the end, you&#x27;ll have a working environment for experimenting with Fluss&#x27;s powerful data processing capabilities.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about From Stream to Lake: Hands-On wi [...]
+Looking ahead, the team will continue to extend Fluss within a <strong>Lakehouse architecture</strong> and broaden its use across <strong>AI-driven</strong> workloads.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about How Taobao uses Apache Fluss (Incubating) for Real-Time Processing in Search and RecSys" href="/blog/taobao-practice/"><b>Read more</b></a></div></footer></article><nav class="pagination-nav" aria-label="Blog list page [...]
                   <p>Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
                   <p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
 </body>
diff --git a/blog/page/2/index.html b/blog/page/2/index.html
index e6f42233b..83e9f450d 100644
--- a/blog/page/2/index.html
+++ b/blog/page/2/index.html
@@ -3,7 +3,7 @@
 <head>
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.10.0">
-<title data-rh="true">Blog | Apache Fluss™ (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
+<title data-rh="true">Blog | Apache Fluss™ (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fluss™ (Incubating) Atom Feed">
 
 
@@ -15,14 +15,16 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<p><img decoding="async" loading="lazy" src="/assets/images/streamhouse-7b7f1260fc996ca89b50dbb9454584ab.png" width="3057" height="1237" class="img_ev3q"></p>
+<p>In this hands-on tutorial, we&#x27;ll walk you through setting up a local Fluss lakehouse environment, running some practical data operations, and getting first-hand experience with the complete Fluss lakehouse architecture. By the end, you&#x27;ll have a working environment for experimenting with Fluss&#x27;s powerful data processing capabilities.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about From Stream to Lake: Hands-On wi [...]
 neutral, and standardized. Moving forward, Fluss will leverage the ASF ecosystem to accelerate the building of a global developer community, continuously driving innovation and adoption of next-generation real-time data infrastructure.</p>
 <p><img decoding="async" loading="lazy" alt="ASF" src="/assets/images/asf-0621eab6f6aadbdfebfc5e24a36667c1.png" width="1231" height="631" class="img_ev3q"></p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Fluss Joins the Apache Incubator" href="/blog/fluss-joins-asf/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/fluss-java-client/">Apache Fluss Java Cl [...]
 <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h2>
@@ -59,10 +61,7 @@ with more than 200 code commits completed. Our heartfelt thanks go out to every
 <li class=""><strong>Streaming &amp; Lakehouse Unification:</strong> Seamlessly integrates streaming and lakehouse storage for unified data processing.</li>
 </ul></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Towards A Unified Streaming &amp; Lakehouse Architecture" href="/blog/unified-streaming-lakehouse/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/fluss-intro/">Introducing Fluss: Streaming Storage for Real-Time Analytics</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2024-12-12T00:0 [...]
 Today, we are excited to introduce Fluss, a cutting-edge streaming storage system designed to power real-time analytics.
-We are going to explore Fluss&#x27;s architecture, design principles, key features, and how it addresses the challenges of using Kafka for real-time analytics.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Introducing Fluss: Streaming Storage for Real-Time Analytics" href="/blog/fluss-intro/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/why-fluss/"> [...]
-This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
-where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
-value by leveraging real-time insights to drive business impact and enhance decision-making.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics" href="/blog/why-fluss/"><b>Read more</b></a></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/blog/"><div class="pagi [...]
+We are going to explore Fluss&#x27;s architecture, design principles, key features, and how it addresses the challenges of using Kafka for real-time analytics.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Introducing Fluss: Streaming Storage for Real-Time Analytics" href="/blog/fluss-intro/"><b>Read more</b></a></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"><a class="pagination-nav__ [...]
                   <p>Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
                   <p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
 </body>
diff --git a/blog/page/3/index.html b/blog/page/3/index.html
index 1b17e0ab4..d6f8fe326 100644
--- a/blog/page/3/index.html
+++ b/blog/page/3/index.html
@@ -3,7 +3,7 @@
 <head>
 <meta charset="UTF-8">
 <meta name="generator" content="Docusaurus v3.10.0">
-<title data-rh="true">Blog | Apache Fluss™ (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
+<title data-rh="true">Blog | Apache Fluss™ (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" property="og:url" content="https://fluss.a [...]
 <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fluss™ (Incubating) Atom Feed">
 
 
@@ -15,14 +15,17 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
+where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
+value by leveraging real-time insights to drive business impact and enhance decision-making.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics" href="/blog/why-fluss/"><b>Read more</b></a></div></footer></article><article class="margin-bottom--xl"><header><h2 class="title_f1Hy"><a href="/blog/fluss-open-source/">Fluss is Now Open Source</a></h2><div class="container_ [...]
 Fluss is a <strong>streaming storage system</strong> designed to power real-time analytics. It aspires to change how organizations approach real-time data by acting as the <strong>real-time data layer</strong> for the Lakehouse.
 Its cutting-edge design enables businesses to achieve <strong>sub-second latency</strong>, <strong>high throughput</strong>, and <strong>cost efficiency</strong> for data analytics, making it the ideal solution for modern data-driven applications.</p>
 <p>We have historically invested a lot of effort into advancing the data streaming ecosystem, being major contributors to <a href="https://flink.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Flink®</a>, <a href="https://www.ververica.com/blog/ververica-donates-flink-cdc-empowering-real-time-data-integration-for-the-community" target="_blank" rel="noopener noreferrer" class="">Apache Flink CDC</a>, and <a href="https://paimon.apache.org/" target="_blank" rel="noop [...]
diff --git a/blog/partial-updates/index.html b/blog/partial-updates/index.html
index 60fffcbf1..13a29f143 100644
--- a/blog/partial-updates/index.html
+++ b/blog/partial-updates/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>Traditional streaming data pipelines often need to join many tables or streams on a primary key to create a wide view.
 For example, imagine you’re building a real-time recommendation engine for an e-commerce platform.
 To serve highly personalized recommendations, your system needs a complete 360° view of each user, including:
diff --git a/blog/pk-key-tables-log-cache-streaming/index.html b/blog/pk-key-tables-log-cache-streaming/index.html
index e1be6c202..7f5b5e9f8 100644
--- a/blog/pk-key-tables-log-cache-streaming/index.html
+++ b/blog/pk-key-tables-log-cache-streaming/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 Common architectures include combinations such as Kafka with Redis, or Debezium feeding changes into a key-value store.
 While these patterns underpin a significant portion of production infrastructure, they also introduce <strong>complexity</strong>, <strong>fragility</strong>, and <strong>operational overhead</strong>.</p>
 <p>Apache Fluss (Incubating) addresses this challenge with an elegant solution: <strong>Primary Key Tables (PK Tables)</strong>.
@@ -113,7 +113,7 @@ and then ship the results into a <strong>separate serving</strong> system purely
 <p><strong>This introduces an important trade-off:</strong> every additional system means duplicate storage, increased latency, and extra operational overhead. Data has to be landed, indexed, and kept in sync, even though the stream processor has already computed the end state.</p>
 <p>With Fluss Primary Key Tables, you don’t need that extra serving layer. Your stateful computations in Flink can materialize directly into PK Tables, which are durable, consistent, and queryable in real time. This lets you power dashboards or APIs straight from the tables, cutting out redundant clusters and reducing end-to-end latency.</p>
 <p><strong>In short:</strong> compute once in Flink, persist in Fluss, and serve directly, without duplicating storage or managing another system.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-closing-thoughts">🚀 Closing Thoughts<a href="#-closing-thoughts" class="hash-link" aria-label="Direct link to 🚀 Closing Thoughts" title="Direct link to 🚀 Closing Thoughts" translate="no">​</a></h3>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-closing-thoughts">🚀 Closing Thoughts<a href="#-closing-thoughts" class="hash-link" aria-label="Direct link to 🚀 Closing Thoughts" title="Direct link to 🚀 Closing Thoughts" translate="no">​</a></h3>
 <p>The above are some examples use cases, we have seen recently and I&#x27;m only eager to see what users will build with Fluss - realtime features stores is another PK table use case currently under investigation.</p>
 <p>Fluss Primary Key Tables are one of the most compelling features of the platform. They embody the <strong>stream-table duality</strong> in practice: every write is a log entry and a KV update; every recovery is a snapshot plus replay; every cache read is guaranteed to be consistent with the log.</p>
 <p>The complexity of coordinating a log and a cache disappears. With Fluss, you don’t have to choose between speed and safety; you get both.</p>
diff --git a/blog/releases/0.6/index.html b/blog/releases/0.6/index.html
index 92a47c73c..26729cda1 100644
--- a/blog/releases/0.6/index.html
+++ b/blog/releases/0.6/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 three months of intensive development, bringing together the expertise and efforts of 45 contributors worldwide,
 with more than 200 code commits completed. Our heartfelt thanks go out to every contributor for their invaluable support!</p>
 <p><img decoding="async" loading="lazy" alt="Release Announcement" src="/assets/images/announce-9ab924e071ec69fe7af8765954f9e966.png" width="1224" height="440" class="img_ev3q"></p>
diff --git a/blog/releases/0.7/index.html b/blog/releases/0.7/index.html
index 232ccb8b4..744e8a3a4 100644
--- a/blog/releases/0.7/index.html
+++ b/blog/releases/0.7/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>🌊 We are excited to announce the official release of <strong>Fluss 0.7</strong>!</p>
 <p>This version has undergone extensive improvements in <strong>stability</strong>, <strong>architecture</strong>, <strong>performance optimization</strong>, and <strong>security</strong>, further enhancing its readiness for <strong>production environments</strong>. Over the past three months, we have completed more than <strong>250 commits</strong>, making this release a significant milestone toward becoming a mature, production-grade streaming storage platform.</p>
 <p><img decoding="async" loading="lazy" alt="Improvements Diagram" src="/assets/images/overview-255047ec7648f12c63660b40d1147c86.png" width="1248" height="778" class="img_ev3q"></p>
diff --git a/blog/releases/0.8/index.html b/blog/releases/0.8/index.html
index 0f26dfb0b..fa9ed45d1 100644
--- a/blog/releases/0.8/index.html
+++ b/blog/releases/0.8/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>🌊 We are excited to announce the official release of <strong>Apache Fluss (Incubating) 0.8</strong>!</p>
 <p>This is our first release under the incubator of the Apache Software Foundation, marking a significant milestone in our journey to provide a robust streaming storage platform for real-time analytics.</p>
 <p>Over the past four months, the community has made tremendous progress, delivering nearly 400 commits that push the boundaries of the Streaming Lakehouse ecosystem. This release includes multiple stability optimizations and introduces deeper integrations, performance breakthroughs, and next-generation stream processing capabilities. Highlights:</p>
diff --git a/blog/releases/0.9/index.html b/blog/releases/0.9/index.html
index 75e820782..5a786edd5 100644
--- a/blog/releases/0.9/index.html
+++ b/blog/releases/0.9/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>🌊 We are excited to announce the official release of <strong>Apache Fluss (Incubating) 0.9</strong>!</p>
 <p>This release marks a major milestone for the project. Fluss 0.9 significantly expands Fluss’s capabilities as a <strong>streaming storage system for real-time analytics, AI, and state-heavy streaming workloads</strong>, with a strong focus on:</p>
 <ul>
diff --git a/blog/roaringbitmap-uv-deduplication/index.html b/blog/roaringbitmap-uv-deduplication/index.html
new file mode 100644
index 000000000..8e2660bb8
--- /dev/null
+++ b/blog/roaringbitmap-uv-deduplication/index.html
@@ -0,0 +1,163 @@
+<!doctype html>
+<html lang="en" dir="ltr" class="blog-wrapper blog-post-page plugin-blog plugin-id-default" data-has-hydrated="false">
+<head>
+<meta charset="UTF-8">
+<meta name="generator" content="Docusaurus v3.10.0">
+<title data-rh="true">Real-Time Unique User Counting at Scale with Apache Fluss | Apache Fluss™ (Incubating)</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data-rh="true" name="twitter:image" content="https://fluss.apache.org/img/logo/png/colored_logo.png"><meta data [...]
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Fluss™ (Incubating) Atom Feed">
+
+
+
+
+<link rel="search" type="application/opensearchdescription+xml" title="Apache Fluss™ (Incubating)" href="/opensearch.xml">
+
+
+<link rel="icon" href="/img/logo.svg">
+<link rel="manifest" href="/manifest.json">
+<meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
+</head>
+<body>
+<svg style="display: none;"><defs>
+<symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
+</defs></svg>
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+The full combination of four dimensions means <strong>16 grouping methods</strong>; when the dimension count increases to seven, the number of possible groupings reaches <strong>128</strong>.</p>
+<p>How can multi-dimensional deduplication be both accurate and flexible while maintaining real-time performance? Behind this challenge lie two very different computing paradigms: direct deduplication of raw data, or set operations based on bitmaps.</p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="problems-with-traditional-deduplication-schemes">Problems with Traditional Deduplication Schemes<a href="#problems-with-traditional-deduplication-schemes" class="hash-link" aria-label="Direct link to Problems with Traditional Deduplication Schemes" title="Direct link to Problems with Traditional Deduplication Schemes" translate="no">​</a></h2>
+<p>Direct deduplication of raw data (e.g. <code>COUNT(DISTINCT user_id)</code>) is the most intuitive and accurate deduplication method: maintain a <strong>hash set</strong> for each dimension combination and record all user IDs that have appeared under the group.</p>
+<p>This approach works well with smaller data volumes and fewer dimensions, but as business scale grows, three core limitations emerge.</p>
+<p><strong>Performance increases linearly with the amount of data.</strong> Each dimension combination needs to independently store all user identities that have occurred. When daily page view logs reach billions and distinct users number in the tens or hundreds of millions, each group&#x27;s hash set demands significant memory and CPU for insertion and lookup. Total compute cost scales with the product of dimension combinations and data volume, which is especially noticeable during peak [...]
+<p><strong>Multidimensional extensibility is limited.</strong> If an analyst needs UV by <strong>Channel x City</strong> and <strong>Channel x Date</strong>, the traditional scheme must calculate two separate deduplication results. The existing <strong>Channel x City</strong> result cannot be rolled up to get the <strong>Channel</strong>-level UV, because user sets across cities may overlap and simple summation leads to double counting. With each additional dimension, the computational t [...]
+<p><strong>Insufficient query flexibility.</strong> Pre-aggregation schemes must fix dimension combinations in advance. When a business team needs a new dimension on the fly (such as adding <strong>device type</strong>), adjusting the entire data processing pipeline is often required instead of simply modifying a query.</p>
+<p>These three limitations share a root cause: storing and computing on raw user identities at every dimension combination does not scale.</p>
+<p>Put it another way: what if instead of storing the raw ID of each user, we represented the entire user set as a compact structure — one bit per user?</p>
+<p>In the bitmap scheme, deduplication count equals counting the number of 1s in the bitmap (<code>popcount</code>), merging two user sets equals a bitwise <code>OR</code>, and cross-dimensional analysis equals a bitwise <code>AND</code>. All operations are CPU-native bit operations, blisteringly fast.</p>
+<p>More importantly, bitmaps naturally support roll-up: the bitmap of <code>Channel = app, City = Shanghai</code> combined with <code>OR</code> with the bitmap of <code>Channel = app, City = Beijing</code> yields the user set for <code>Channel = app</code> — no need to re-scan the original data.</p>
+<p>This is a fundamental difference between the two computing paradigms: <strong>direct deduplication</strong> requires independent calculations for each dimension combination, while the intermediate results of <strong>bitmap deduplication</strong> are naturally composable.</p>
+<p>But the raw bitmap has a problem: if the user ID space is sparse (such as <code>UUID</code> or hash values), the bitmap will be very large and waste memory. A compressed bitmap format that works efficiently on sparse data is needed. This is where <strong>RoaringBitmap</strong> comes in.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/figure1-7c9e1064160a84decb149ba63e55b50b.png" width="1356" height="768" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-roaringbitmap-works">How RoaringBitmap Works<a href="#how-roaringbitmap-works" class="hash-link" aria-label="Direct link to How RoaringBitmap Works" title="Direct link to How RoaringBitmap Works" translate="no">​</a></h2>
+<p>The core idea of a bitmap is simple: use an array of bits to represent a collection of integers. If the user ID is <code>k</code>, set the <code>k</code>-th position to 1. The deduplication count is the number of 1s, and set merging is a bitwise <code>OR</code>. These operations map directly to CPU instructions, which is extremely efficient.</p>
+<p>However, the size of a raw bitmap depends on the maximum ID value. If the ID space is a <strong>32-bit integer</strong> (about 2.1 billion), a full bitmap takes <strong>256 MB</strong>. When the ID distribution is sparse, most bits are 0, and almost all memory is wasted.</p>
+<p><strong>RoaringBitmap</strong> solves this with a layered, adaptive compression strategy. It divides the 32-bit integer space into <strong>65,536 partitions</strong> by the upper 16 bits, and each partition holds up to 65,536 values (the lower 16 bits), called a <strong>Container</strong>. Each container automatically selects the optimal storage format based on its data density:</p>
+<ul>
+<li class=""><strong>ArrayContainer:</strong> When the number of elements is less than 4,096, values are stored in a sorted array of 16-bit integers. For sparse data, this saves tens of times more space than a raw bitmap.</li>
+<li class=""><strong>BitmapContainer:</strong> When the number of elements reaches 4,096 or more, the container switches to a raw 8 KB bitmap. For dense data, bitmaps are more compact than arrays.</li>
+<li class=""><strong>RunContainer:</strong> When data presents continuous interval characteristics (such as IDs 100–500), values are stored using run-length encoding, recording only the start and end of each run.</li>
+</ul>
+<p>This adaptive strategy allows RoaringBitmap to remain efficient across a variety of data distributions: as compact as an array when sparse, as fast as a bitmap when dense, and as economical as run-length encoding when continuous. In practice, its memory footprint is usually only one-tenth to one-hundredth of the original hash set.</p>
+<p>For deduplication scenarios, RoaringBitmap set operations map directly to analytical requirements: <code>OR</code> merges user sets, <code>AND</code> performs cross-dimensional analysis, <code>ANDNOT</code> performs exclusion analysis, and cardinality returns the deduplication count. All operations are accelerated by <strong>SIMD instructions</strong> and can be completed in milliseconds even on hundreds of millions of records.</p>
+<p>One prerequisite: the input to RoaringBitmap must be an integer, and the denser the ID space, the better the compression and efficiency. If the original user ID is a string (such as a <code>UUID</code> or phone number), a dictionary table is needed to map sparse IDs to dense integer IDs.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/figure2-88efa22dc33e081300bf9ecd388fd53d.png" width="1356" height="748" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-apache-fluss-enables-roaringbitmap-deduplication">How Apache Fluss Enables RoaringBitmap Deduplication<a href="#how-apache-fluss-enables-roaringbitmap-deduplication" class="hash-link" aria-label="Direct link to How Apache Fluss Enables RoaringBitmap Deduplication" title="Direct link to How Apache Fluss Enables RoaringBitmap Deduplication" translate="no">​</a></h2>
+<p>A RoaringBitmap-based deduplication scheme requires three things: <strong>a dense integer ID space</strong>, <strong>bitmap merging at the storage layer</strong>, and <strong>native bitmap aggregation functions</strong>. Apache Fluss provides all three as built-in capabilities.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="auto-increment-columns-zero-code-dictionary-tables">Auto-Increment Columns: Zero-Code Dictionary Tables<a href="#auto-increment-columns-zero-code-dictionary-tables" class="hash-link" aria-label="Direct link to Auto-Increment Columns: Zero-Code Dictionary Tables" title="Direct link to Auto-Increment Columns: Zero-Code Dictionary Tables" translate="no">​</a></h3>
+<p>The auto-increment column feature of Fluss lets you declare a field directly in the table definition. When a new user is written for the first time, Fluss automatically assigns an incrementing integer ID. No external ID service or historical data migration is required.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<p>A single <code>INSERT</code> statement is all that is needed to map sparse identities to dense integers. <code>int32</code> covers about 2.1 billion users, which is sufficient for most business scenarios. The generated ID is unique and monotonically increasing, which is naturally suited to RoaringBitmap&#x27;s compression strategy.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="aggregate-merge-engine-merge-on-write">Aggregate Merge Engine: Merge on Write<a href="#aggregate-merge-engine-merge-on-write" class="hash-link" aria-label="Direct link to Aggregate Merge Engine: Merge on Write" title="Direct link to Aggregate Merge Engine: Merge on Write" translate="no">​</a></h3>
+<p>The <strong>Aggregation Merge Engine</strong> of Fluss allows you to define aggregation rules for each column. When rows with the same primary key arrive, Fluss automatically merges them on the server side instead of overwriting or appending.</p>
+<p>This means the compute layer only needs to send raw events and does not need to maintain any aggregated intermediate state. With <strong>exactly-once semantics</strong> based on Flink Checkpoint, the write path is compact and reliable.</p>
+<p>For append-only aggregation operations such as bitmap union (UV deduplication), merging is naturally <strong>idempotent</strong> during writing. Adding the same <code>uid</code> to a bitmap multiple times does not change the result. In such scenarios, Flink jobs are only responsible for forwarding — no complex <code>UDAFs</code> or retraction messages are needed. For scenarios involving data retraction (such as order cancellation), rollback support for the aggregation merge engine is  [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="built-in-rbm32--rbm64-aggregate-functions">Built-in <code>rbm32</code> / <code>rbm64</code> Aggregate Functions<a href="#built-in-rbm32--rbm64-aggregate-functions" class="hash-link" aria-label="Direct link to built-in-rbm32--rbm64-aggregate-functions" title="Direct link to built-in-rbm32--rbm64-aggregate-functions" translate="no">​</a></h3>
+<p>Fluss supports RoaringBitmap as a first-class aggregation type. <code>rbm32</code> (32-bit) and <code>rbm64</code> (64-bit) perform native bitmap union on write.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<blockquote>
+<p>Note: the quickstart section extends this table with <code>&#x27;table.datalake.enabled&#x27; = &#x27;true&#x27;</code> and <code>&#x27;table.datalake.freshness&#x27; = &#x27;30s&#x27;</code> to enable lake tiering for batch queries. The core deduplication behaviour is identical.</p>
+</blockquote>
+<p>Each event carries a single-element bitmap, which Fluss merges into the existing bitmap of the corresponding primary key on the server side. The deduplication logic is entirely handled by the storage layer without requiring any custom merge code.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="putting-it-together-the-full-data-flow">Putting It Together: The Full Data Flow<a href="#putting-it-together-the-full-data-flow" class="hash-link" aria-label="Direct link to Putting It Together: The Full Data Flow" title="Direct link to Putting It Together: The Full Data Flow" translate="no">​</a></h3>
+<p>These three capabilities are interlinked: the auto-increment column provides a <strong>dense ID</strong> (the prerequisite for bitmap deduplication), the aggregation engine merges on write (deduplication is completed in the storage layer), and <code>rbm32</code> makes bitmap merging a native storage operation (no custom logic needed).</p>
+<p>The data flow is straightforward: when an event arrives, Flink obtains the dense <code>uid</code> by querying the dictionary table via a lookup join, calls <code>RB_BUILD(uid)</code> to build a single-element bitmap, and writes it to the aggregation table. Fluss automatically executes bitmap union on the server side. At query time, <code>RB_CARDINALITY()</code> extracts the UV count directly.</p>
+<p>The responsibilities are clearly separated: <strong>Flink</strong> handles mapping, joining, and forwarding without holding long-lived state; <strong>Fluss</strong> holds the persistent merged result; queries read the merged bitmap and extract the count. Deduplication happens at write time — the query side requires no aggregation at all.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="streaming-lakehouse-unification">Streaming Lakehouse Unification<a href="#streaming-lakehouse-unification" class="hash-link" aria-label="Direct link to Streaming Lakehouse Unification" title="Direct link to Streaming Lakehouse Unification" translate="no">​</a></h3>
+<p>When data volumes grow to require analysis across longer time windows, this architecture can be seamlessly extended through Fluss&#x27;s <strong>Lake-Stream integration</strong> capabilities. In a daily partitioning scenario, each day&#x27;s UV data is stored as a bitmap partition. Historical partitions (e.g., older than 30 days) can be offloaded to <strong>Data Lake</strong> storage (Paimon or Iceberg), while recent partitions remain in Fluss for real-time updates.</p>
+<p>To count UV for an entire year, you only need to <code>OR</code> the 365 daily bitmap partitions and compute the cardinality. Regardless of whether data is in Fluss or the data lake, the bitmap union semantics are identical. This architecture balances storage cost and query flexibility, enabling accurate deduplication analysis across any time span.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/figure3-44f89c0af7bdf4da5feb4fecea914242.png" width="1350" height="768" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="end-to-end-quickstart">End-to-End Quickstart<a href="#end-to-end-quickstart" class="hash-link" aria-label="Direct link to End-to-End Quickstart" title="Direct link to End-to-End Quickstart" translate="no">​</a></h2>
+<p>This section walks through the complete workflow with a minimal working example you can run locally.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="environment-preparation">Environment Preparation<a href="#environment-preparation" class="hash-link" aria-label="Direct link to Environment Preparation" title="Direct link to Environment Preparation" translate="no">​</a></h3>
+<p>Requirements: <strong>Docker</strong> and <strong>Docker Compose</strong>.</p>
+<p><strong>1. Create a working directory and download dependencies</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">mkdir</span><span class="token plain"> fluss-rbm-quickstart </span> [...]
+<p>The UDF JAR is a self-contained fat JAR. Placing it in Flink&#x27;s <code>lib/</code> directory makes all functions available without additional dependencies. The source code is available in the <a href="https://github.com/flink-extended/flink-roaringbitmap" target="_blank" rel="noopener noreferrer" class="">flink-roaringbitmap</a> repository. Paimon-related JARs enable the <strong>Lakehouse Tiering</strong> feature of Fluss, where data automatically tiers from Fluss into Paimon, supp [...]
+<p><strong>2. Create <code>docker-compose.yml</code></strong></p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">docker-compose.yml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token key atrule" style="color:#3f6ec6">services [...]
+<p><strong>3. Start the environment</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose up </span><span cla [...]
+<p><strong>4. Start the Lakehouse Tiering Service</strong></p>
+<p>The tiering service continuously transfers data from Fluss to Paimon to support batch queries. Start it in the background before writing data:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose </span><span class= [...]
+<p><strong>5. Open the SQL Client</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose </span><span class= [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-a-catalog-and-register-the-udfs">Create a Catalog and Register the UDFs<a href="#create-a-catalog-and-register-the-udfs" class="hash-link" aria-label="Direct link to Create a Catalog and Register the UDFs" title="Direct link to Create a Catalog and Register the UDFs" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<p>Register the RoaringBitmap UDFs. The JAR contains three functions: <code>RB_BUILD</code> wraps a single integer as a bitmap; <code>RB_CARDINALITY</code> extracts the deduplication count from a bitmap; <code>RB_OR_AGG</code> executes bitmap <code>OR</code> aggregation for roll-up queries. The deduplication merge at write time is performed by Fluss&#x27;s <code>rbm32</code> aggregation — these UDFs handle bitmap construction on the Flink side and analysis on the query side.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<blockquote>
+<p><strong>Note:</strong> These functions are currently provided by the external <a href="https://github.com/flink-extended/flink-roaringbitmap" target="_blank" rel="noopener noreferrer" class="">flink-roaringbitmap</a> library. Once <a href="https://cwiki.apache.org/confluence/display/FLUSS/FIP-37%3A+Native+RoaringBitmap+Integration+for+Apache+Fluss" target="_blank" rel="noopener noreferrer" class="">FIP-37: Native RoaringBitmap Integration for Apache Fluss</a> is completed, they will b [...]
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-dictionary-and-aggregation-tables">Create Dictionary and Aggregation Tables<a href="#create-dictionary-and-aggregation-tables" class="hash-link" aria-label="Direct link to Create Dictionary and Aggregation Tables" title="Direct link to Create Dictionary and Aggregation Tables" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token comment" style="color:#8e908c;font-style:italic">-- D [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="write-sample-data">Write Sample Data<a href="#write-sample-data" class="hash-link" aria-label="Direct link to Write Sample Data" title="Direct link to Write Sample Data" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token comment" style="color:#8e908c;font-style:italic">-- S [...]
+<p>Each event is written as one row carrying a single-element bitmap. Fluss merges it server-side via <code>rbm32</code> union into the existing bitmap of the corresponding primary key. Flink jobs are only responsible for mapping and forwarding — they hold no aggregation state, require no <code>GROUP BY</code>, and do not process retraction messages.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/figure4-b5f8ffeafbf32ec7c4f1090336f94b81.png" width="1344" height="746" class="img_ev3q"></p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="query-deduplication-results">Query Deduplication Results<a href="#query-deduplication-results" class="hash-link" aria-label="Direct link to Query Deduplication Results" title="Direct link to Query Deduplication Results" translate="no">​</a></h3>
+<p>After writing the data, wait approximately 60 seconds for the data to tier into Paimon. For PK tables, the tiering service uses the <strong>KV snapshot</strong> as a synchronization checkpoint — it reads the snapshot state first, then replays subsequent <strong>CDC events</strong> from that point. The wait covers one KV snapshot period (30 seconds) plus one tiering checkpoint period. Switch to <strong>batch mode</strong> to query the tiered data. Batch mode supports <code>ORDER BY</co [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SET</span><span class= [...]
+<p>Result:</p>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----------+----------+----+----+----+</span><br></div><div class="token-line [...]
+<p>Note the <code>(app, Shanghai, 20260301, 10)</code> row: <code>user_1</code> appeared twice and <code>user_2</code> appeared once, yielding <code>uv = 2</code>. The three single-element bitmaps were merged by Fluss into a deduplicated set containing two distinct users. <code>pv = 3</code> is the raw event count from the sum aggregation. The query side requires no aggregation — results are ready at write time.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="multi-dimensional-roll-up-queries">Multi-Dimensional Roll-Up Queries<a href="#multi-dimensional-roll-up-queries" class="hash-link" aria-label="Direct link to Multi-Dimensional Roll-Up Queries" title="Direct link to Multi-Dimensional Roll-Up Queries" translate="no">​</a></h3>
+<p>The preceding query reads the finest-granularity pre-aggregation results (<code>channel × city × ymd × hh</code>). The real power of bitmaps is supporting flexible roll-up: performing <code>OR</code> operations across fine-grained bitmaps yields coarse-grained deduplication counts without returning to the original data.</p>
+<p>Roll up by channel, overall UV across all cities, dates, and hours:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----+----+</span><br></div><div class="token-line" style="color:#36464e"><sp [...]
+<p><code>user_1</code> visited the <code>app</code> channel from both Shanghai and Beijing at multiple times. <code>RB_OR_AGG</code> combines all fine-grained bitmaps under the same channel into a single deduplicated set — each user is counted only once. The <code>app</code> channel has four distinct users (1, 2, 3, 5), not a simple sum of per-group UV counts.</p>
+<p>Roll up by date, daily UV across all channels and cities:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+----------+----+----+</span><br></div><div class="token-line" style="color:#36464e"><span c [...]
+<p>Active users are users 1–4 on March 1 and users 1, 2, 4, and 5 on March 2. Simply summing per-group UV counts would result in double counting, but the bitmap <code>OR</code> operation gives accurate results.</p>
+<p>Roll up by channel x date, a common dashboard view:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----------+----+----+</span><br></div><div class="token-line" style="color:# [...]
+<p>Global UV, total distinct users across all dimensions:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+----------+----------+</span><br></div><div class="token-line" style="color:#36464e"><span  [...]
+<p>Five distinct users generated a total of 12 page views. One query, one full bitmap <code>OR</code> — no need to re-scan the original events.</p>
+<p>All roll-up queries follow the same pattern: <code>GROUP BY</code> the target dimensions, apply <code>RB_OR_AGG</code> on the bitmap column, and use <code>RB_CARDINALITY</code> to extract the count. The finest-granularity pre-aggregated bitmap is the building block for all coarser-grained analysis.</p>
+<blockquote>
+<p>In a production environment, replace the bounded <code>page_views</code> view with a streaming data source and add the <code>/*+ OPTIONS(&#x27;lookup.insert-if-not-exists&#x27; = &#x27;true&#x27;) */</code> hint to automatically register new users and enable a real-time bitmap write pipeline. The storage-side schema remains identical.</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="clean-up-the-environment">Clean Up the Environment<a href="#clean-up-the-environment" class="hash-link" aria-label="Direct link to Clean Up the Environment" title="Direct link to Clean Up the Environment" translate="no">​</a></h3>
+<p>After exiting the SQL Client, run the following to stop and remove all containers:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose down </span><span c [...]
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="beyond-uv-other-use-cases">Beyond UV: Other Use Cases<a href="#beyond-uv-other-use-cases" class="hash-link" aria-label="Direct link to Beyond UV: Other Use Cases" title="Direct link to Beyond UV: Other Use Cases" translate="no">​</a></h2>
+<p>This pattern is not limited to UV counting. It extends naturally to a variety of analytical scenarios. The core structure is consistent: choose the appropriate primary key granularity, and bitmap merging is handled by the storage layer at write time.</p>
+<p><strong>Real-time multi-dimensional UV analysis.</strong> The main scenario in this post. Accurate UV statistics based on any combination of dimensions such as channel, city, date, and hour, with flexible dimension roll-up via bitmap union. Applicable to traffic dashboards, advertising effectiveness analysis, and activity monitoring.</p>
+<p><strong>User retention analysis.</strong> Store active user bitmaps at the granularity of <code>user × date</code>. The retained user set is obtained by <code>AND</code>-ing bitmaps from different dates. For example, the cardinality of <code>Day1_bitmap AND Day7_bitmap</code> gives the 7-day retention count.</p>
+<p><strong>Funnel analysis.</strong> Store an aggregation table for each funnel step, with bitmaps recording the set of users who reached that step. Conversion rates are computed by <code>AND</code>-ing bitmaps of adjacent steps. Since bitmaps support set difference (<code>ANDNOT</code>), you can further analyze the characteristics of users who dropped off at each step.</p>
+<p><strong>Audience segmentation and user profiling.</strong> Build user attribute labels (such as gender, province, and preference category) as bitmaps. Multi-label combination queries are converted into bitmap <code>AND</code>/<code>OR</code>/<code>ANDNOT</code> operations, enabling selection of tens of millions of users in milliseconds. This is a high-frequency scenario in advertising <strong>DMP</strong> and recommendation systems.</p>
+<p><img decoding="async" loading="lazy" src="/assets/images/figure5-86a3bd1f0dede51a77608a746ad9ff7b.png" width="1344" height="760" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting Started<a href="#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
+<p>If you are evaluating real-time multi-dimensional exact deduplication schemes, Fluss&#x27;s RoaringBitmap capability is a worthwhile starting point. The architecture follows a clear three-step pattern:</p>
+<ol>
+<li class=""><strong>Map</strong> sparse user identities to dense integers using an auto-increment <code>uid_dictionary</code> table.</li>
+<li class=""><strong>Deduplicate at write time</strong> using an <code>rbm32</code> aggregation table — no stateful Flink jobs, no complex UDAFs.</li>
+<li class=""><strong>Query directly</strong> using <code>RB_CARDINALITY()</code> for point reads or <code>RB_OR_AGG()</code> + <code>RB_CARDINALITY()</code> for any roll-up combination.</li>
+</ol>
+<p>The result is a system where deduplication is handled entirely by the storage layer, and the query side reads pre-computed results with no additional aggregation overhead.</p>
+<p><code>rbm32</code> / <code>rbm64</code> aggregation and the auto-increment dictionary scheme are available from <strong>Apache Fluss 0.9</strong>. See the <a href="https://fluss.apache.org" target="_blank" rel="noopener noreferrer" class="">Fluss documentation</a> for the full configuration reference.</p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="join-the-community">Join the Community<a href="#join-the-community" class="hash-link" aria-label="Direct link to Join the Community" title="Direct link to Join the Community" translate="no">​</a></h2>
+<p>Apache Fluss is an open-source project under active development within the Apache Software Foundation.</p>
+<ul>
+<li class="">GitHub: <a href="https://github.com/apache/fluss" target="_blank" rel="noopener noreferrer" class="">github.com/apache/fluss</a></li>
+<li class="">Documentation: <a href="https://fluss.apache.org" target="_blank" rel="noopener noreferrer" class="">fluss.apache.org</a></li>
+</ul></div></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Blog post page navigation"><a class="pagination-nav__link pagination-nav__link--next" href="/blog/why-fluss-chose-rust-for-multi-language-sdk/"><div class="pagination-nav__sublabel">Older post</div><div class="pagination-nav__label">Why Apache Fluss Chose Rust for Its Multi-Language SDK</div></a></nav></main><div class="col col--2"><div class="tableOfContents_bqdL thin-scrollbar"><ul class="table-of-contents ta [...]
+                  <p>Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
+                  <p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div></div>
+</body>
+</html>
\ No newline at end of file
diff --git a/blog/rss.xml b/blog/rss.xml
index 50b1ba360..4a3e98db3 100644
--- a/blog/rss.xml
+++ b/blog/rss.xml
@@ -4,10 +4,152 @@
         <title>Apache Fluss™ (Incubating) Blog</title>
         <link>https://fluss.apache.org/blog/</link>
         <description>Apache Fluss™ (Incubating) Blog</description>
-        <lastBuildDate>Thu, 09 Apr 2026 00:00:00 GMT</lastBuildDate>
+        <lastBuildDate>Thu, 16 Apr 2026 00:00:00 GMT</lastBuildDate>
         <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
         <generator>https://github.com/jpmonette/feed</generator>
         <language>en</language>
+        <item>
+            <title><![CDATA[Real-Time Unique User Counting at Scale with Apache Fluss]]></title>
+            <link>https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/</link>
+            <guid>https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/</guid>
+            <pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate>
+            <description><![CDATA[UV (Unique Visitors) measures the count of distinct users who visited a page or triggered an event within a given time window — unlike PV (Page Views), which counts every request regardless of who made it. For any product or platform, accurate real-time UV statistics across dimensions like channel, city, date, and hour are a core analytical requirement.]]></description>
+            <content:encoded><![CDATA[<p><strong>UV (Unique Visitors)</strong> measures the count of distinct users who visited a page or triggered an event within a given time window — unlike <strong>PV (Page Views)</strong>, which counts every request regardless of who made it. For any product or platform, accurate real-time UV statistics across dimensions like channel, city, date, and hour are a core analytical requirement.
+The full combination of four dimensions means <strong>16 grouping methods</strong>; when the dimension count increases to seven, the number of possible groupings reaches <strong>128</strong>.</p>
+<p>How can multi-dimensional deduplication be both accurate and flexible while maintaining real-time performance? Behind this challenge lie two very different computing paradigms: direct deduplication of raw data, or set operations based on bitmaps.</p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="problems-with-traditional-deduplication-schemes">Problems with Traditional Deduplication Schemes<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#problems-with-traditional-deduplication-schemes" class="hash-link" aria-label="Direct link to Problems with Traditional Deduplication Schemes" title="Direct link to Problems with Traditional Deduplication Schemes" translate="no">​</a></h2>
+<p>Direct deduplication of raw data (e.g. <code>COUNT(DISTINCT user_id)</code>) is the most intuitive and accurate deduplication method: maintain a <strong>hash set</strong> for each dimension combination and record all user IDs that have appeared under the group.</p>
+<p>This approach works well with smaller data volumes and fewer dimensions, but as business scale grows, three core limitations emerge.</p>
+<p><strong>Performance increases linearly with the amount of data.</strong> Each dimension combination needs to independently store all user identities that have occurred. When daily page view logs reach billions and distinct users number in the tens or hundreds of millions, each group's hash set demands significant memory and CPU for insertion and lookup. Total compute cost scales with the product of dimension combinations and data volume, which is especially noticeable during peak peri [...]
+<p><strong>Multidimensional extensibility is limited.</strong> If an analyst needs UV by <strong>Channel x City</strong> and <strong>Channel x Date</strong>, the traditional scheme must calculate two separate deduplication results. The existing <strong>Channel x City</strong> result cannot be rolled up to get the <strong>Channel</strong>-level UV, because user sets across cities may overlap and simple summation leads to double counting. With each additional dimension, the computational t [...]
+<p><strong>Insufficient query flexibility.</strong> Pre-aggregation schemes must fix dimension combinations in advance. When a business team needs a new dimension on the fly (such as adding <strong>device type</strong>), adjusting the entire data processing pipeline is often required instead of simply modifying a query.</p>
+<p>These three limitations share a root cause: storing and computing on raw user identities at every dimension combination does not scale.</p>
+<p>Put it another way: what if instead of storing the raw ID of each user, we represented the entire user set as a compact structure — one bit per user?</p>
+<p>In the bitmap scheme, deduplication count equals counting the number of 1s in the bitmap (<code>popcount</code>), merging two user sets equals a bitwise <code>OR</code>, and cross-dimensional analysis equals a bitwise <code>AND</code>. All operations are CPU-native bit operations, blisteringly fast.</p>
+<p>More importantly, bitmaps naturally support roll-up: the bitmap of <code>Channel = app, City = Shanghai</code> combined with <code>OR</code> with the bitmap of <code>Channel = app, City = Beijing</code> yields the user set for <code>Channel = app</code> — no need to re-scan the original data.</p>
+<p>This is a fundamental difference between the two computing paradigms: <strong>direct deduplication</strong> requires independent calculations for each dimension combination, while the intermediate results of <strong>bitmap deduplication</strong> are naturally composable.</p>
+<p>But the raw bitmap has a problem: if the user ID space is sparse (such as <code>UUID</code> or hash values), the bitmap will be very large and waste memory. A compressed bitmap format that works efficiently on sparse data is needed. This is where <strong>RoaringBitmap</strong> comes in.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure1-7c9e1064160a84decb149ba63e55b50b.png" width="1356" height="768" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-roaringbitmap-works">How RoaringBitmap Works<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#how-roaringbitmap-works" class="hash-link" aria-label="Direct link to How RoaringBitmap Works" title="Direct link to How RoaringBitmap Works" translate="no">​</a></h2>
+<p>The core idea of a bitmap is simple: use an array of bits to represent a collection of integers. If the user ID is <code>k</code>, set the <code>k</code>-th position to 1. The deduplication count is the number of 1s, and set merging is a bitwise <code>OR</code>. These operations map directly to CPU instructions, which is extremely efficient.</p>
+<p>However, the size of a raw bitmap depends on the maximum ID value. If the ID space is a <strong>32-bit integer</strong> (about 2.1 billion), a full bitmap takes <strong>256 MB</strong>. When the ID distribution is sparse, most bits are 0, and almost all memory is wasted.</p>
+<p><strong>RoaringBitmap</strong> solves this with a layered, adaptive compression strategy. It divides the 32-bit integer space into <strong>65,536 partitions</strong> by the upper 16 bits, and each partition holds up to 65,536 values (the lower 16 bits), called a <strong>Container</strong>. Each container automatically selects the optimal storage format based on its data density:</p>
+<ul>
+<li class=""><strong>ArrayContainer:</strong> When the number of elements is less than 4,096, values are stored in a sorted array of 16-bit integers. For sparse data, this saves tens of times more space than a raw bitmap.</li>
+<li class=""><strong>BitmapContainer:</strong> When the number of elements reaches 4,096 or more, the container switches to a raw 8 KB bitmap. For dense data, bitmaps are more compact than arrays.</li>
+<li class=""><strong>RunContainer:</strong> When data presents continuous interval characteristics (such as IDs 100–500), values are stored using run-length encoding, recording only the start and end of each run.</li>
+</ul>
+<p>This adaptive strategy allows RoaringBitmap to remain efficient across a variety of data distributions: as compact as an array when sparse, as fast as a bitmap when dense, and as economical as run-length encoding when continuous. In practice, its memory footprint is usually only one-tenth to one-hundredth of the original hash set.</p>
+<p>For deduplication scenarios, RoaringBitmap set operations map directly to analytical requirements: <code>OR</code> merges user sets, <code>AND</code> performs cross-dimensional analysis, <code>ANDNOT</code> performs exclusion analysis, and cardinality returns the deduplication count. All operations are accelerated by <strong>SIMD instructions</strong> and can be completed in milliseconds even on hundreds of millions of records.</p>
+<p>One prerequisite: the input to RoaringBitmap must be an integer, and the denser the ID space, the better the compression and efficiency. If the original user ID is a string (such as a <code>UUID</code> or phone number), a dictionary table is needed to map sparse IDs to dense integer IDs.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure2-88efa22dc33e081300bf9ecd388fd53d.png" width="1356" height="748" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="how-apache-fluss-enables-roaringbitmap-deduplication">How Apache Fluss Enables RoaringBitmap Deduplication<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#how-apache-fluss-enables-roaringbitmap-deduplication" class="hash-link" aria-label="Direct link to How Apache Fluss Enables RoaringBitmap Deduplication" title="Direct link to How Apache Fluss Enables RoaringBitmap Deduplication" translate="no">​</a></h2>
+<p>A RoaringBitmap-based deduplication scheme requires three things: <strong>a dense integer ID space</strong>, <strong>bitmap merging at the storage layer</strong>, and <strong>native bitmap aggregation functions</strong>. Apache Fluss provides all three as built-in capabilities.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="auto-increment-columns-zero-code-dictionary-tables">Auto-Increment Columns: Zero-Code Dictionary Tables<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#auto-increment-columns-zero-code-dictionary-tables" class="hash-link" aria-label="Direct link to Auto-Increment Columns: Zero-Code Dictionary Tables" title="Direct link to Auto-Increment Columns: Zero-Code Dictionary Tables" translate="no">​</a></h3>
+<p>The auto-increment column feature of Fluss lets you declare a field directly in the table definition. When a new user is written for the first time, Fluss automatically assigns an incrementing integer ID. No external ID service or historical data migration is required.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<p>A single <code>INSERT</code> statement is all that is needed to map sparse identities to dense integers. <code>int32</code> covers about 2.1 billion users, which is sufficient for most business scenarios. The generated ID is unique and monotonically increasing, which is naturally suited to RoaringBitmap's compression strategy.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="aggregate-merge-engine-merge-on-write">Aggregate Merge Engine: Merge on Write<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#aggregate-merge-engine-merge-on-write" class="hash-link" aria-label="Direct link to Aggregate Merge Engine: Merge on Write" title="Direct link to Aggregate Merge Engine: Merge on Write" translate="no">​</a></h3>
+<p>The <strong>Aggregation Merge Engine</strong> of Fluss allows you to define aggregation rules for each column. When rows with the same primary key arrive, Fluss automatically merges them on the server side instead of overwriting or appending.</p>
+<p>This means the compute layer only needs to send raw events and does not need to maintain any aggregated intermediate state. With <strong>exactly-once semantics</strong> based on Flink Checkpoint, the write path is compact and reliable.</p>
+<p>For append-only aggregation operations such as bitmap union (UV deduplication), merging is naturally <strong>idempotent</strong> during writing. Adding the same <code>uid</code> to a bitmap multiple times does not change the result. In such scenarios, Flink jobs are only responsible for forwarding — no complex <code>UDAFs</code> or retraction messages are needed. For scenarios involving data retraction (such as order cancellation), rollback support for the aggregation merge engine is  [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="built-in-rbm32--rbm64-aggregate-functions">Built-in <code>rbm32</code> / <code>rbm64</code> Aggregate Functions<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#built-in-rbm32--rbm64-aggregate-functions" class="hash-link" aria-label="Direct link to built-in-rbm32--rbm64-aggregate-functions" title="Direct link to built-in-rbm32--rbm64-aggregate-functions" translate="no">​</a></h3>
+<p>Fluss supports RoaringBitmap as a first-class aggregation type. <code>rbm32</code> (32-bit) and <code>rbm64</code> (64-bit) perform native bitmap union on write.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<blockquote>
+<p>Note: the quickstart section extends this table with <code>'table.datalake.enabled' = 'true'</code> and <code>'table.datalake.freshness' = '30s'</code> to enable lake tiering for batch queries. The core deduplication behaviour is identical.</p>
+</blockquote>
+<p>Each event carries a single-element bitmap, which Fluss merges into the existing bitmap of the corresponding primary key on the server side. The deduplication logic is entirely handled by the storage layer without requiring any custom merge code.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="putting-it-together-the-full-data-flow">Putting It Together: The Full Data Flow<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#putting-it-together-the-full-data-flow" class="hash-link" aria-label="Direct link to Putting It Together: The Full Data Flow" title="Direct link to Putting It Together: The Full Data Flow" translate="no">​</a></h3>
+<p>These three capabilities are interlinked: the auto-increment column provides a <strong>dense ID</strong> (the prerequisite for bitmap deduplication), the aggregation engine merges on write (deduplication is completed in the storage layer), and <code>rbm32</code> makes bitmap merging a native storage operation (no custom logic needed).</p>
+<p>The data flow is straightforward: when an event arrives, Flink obtains the dense <code>uid</code> by querying the dictionary table via a lookup join, calls <code>RB_BUILD(uid)</code> to build a single-element bitmap, and writes it to the aggregation table. Fluss automatically executes bitmap union on the server side. At query time, <code>RB_CARDINALITY()</code> extracts the UV count directly.</p>
+<p>The responsibilities are clearly separated: <strong>Flink</strong> handles mapping, joining, and forwarding without holding long-lived state; <strong>Fluss</strong> holds the persistent merged result; queries read the merged bitmap and extract the count. Deduplication happens at write time — the query side requires no aggregation at all.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="streaming-lakehouse-unification">Streaming Lakehouse Unification<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#streaming-lakehouse-unification" class="hash-link" aria-label="Direct link to Streaming Lakehouse Unification" title="Direct link to Streaming Lakehouse Unification" translate="no">​</a></h3>
+<p>When data volumes grow to require analysis across longer time windows, this architecture can be seamlessly extended through Fluss's <strong>Lake-Stream integration</strong> capabilities. In a daily partitioning scenario, each day's UV data is stored as a bitmap partition. Historical partitions (e.g., older than 30 days) can be offloaded to <strong>Data Lake</strong> storage (Paimon or Iceberg), while recent partitions remain in Fluss for real-time updates.</p>
+<p>To count UV for an entire year, you only need to <code>OR</code> the 365 daily bitmap partitions and compute the cardinality. Regardless of whether data is in Fluss or the data lake, the bitmap union semantics are identical. This architecture balances storage cost and query flexibility, enabling accurate deduplication analysis across any time span.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure3-44f89c0af7bdf4da5feb4fecea914242.png" width="1350" height="768" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="end-to-end-quickstart">End-to-End Quickstart<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#end-to-end-quickstart" class="hash-link" aria-label="Direct link to End-to-End Quickstart" title="Direct link to End-to-End Quickstart" translate="no">​</a></h2>
+<p>This section walks through the complete workflow with a minimal working example you can run locally.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="environment-preparation">Environment Preparation<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#environment-preparation" class="hash-link" aria-label="Direct link to Environment Preparation" title="Direct link to Environment Preparation" translate="no">​</a></h3>
+<p>Requirements: <strong>Docker</strong> and <strong>Docker Compose</strong>.</p>
+<p><strong>1. Create a working directory and download dependencies</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">mkdir</span><span class="token plain"> fluss-rbm-quickstart </span> [...]
+<p>The UDF JAR is a self-contained fat JAR. Placing it in Flink's <code>lib/</code> directory makes all functions available without additional dependencies. The source code is available in the <a href="https://github.com/flink-extended/flink-roaringbitmap" target="_blank" rel="noopener noreferrer" class="">flink-roaringbitmap</a> repository. Paimon-related JARs enable the <strong>Lakehouse Tiering</strong> feature of Fluss, where data automatically tiers from Fluss into Paimon, supportin [...]
+<p><strong>2. Create <code>docker-compose.yml</code></strong></p>
+<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">docker-compose.yml</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token key atrule" style="color:#3f6ec6">services [...]
+<p><strong>3. Start the environment</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose up </span><span cla [...]
+<p><strong>4. Start the Lakehouse Tiering Service</strong></p>
+<p>The tiering service continuously transfers data from Fluss to Paimon to support batch queries. Start it in the background before writing data:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose </span><span class= [...]
+<p><strong>5. Open the SQL Client</strong></p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose </span><span class= [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-a-catalog-and-register-the-udfs">Create a Catalog and Register the UDFs<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#create-a-catalog-and-register-the-udfs" class="hash-link" aria-label="Direct link to Create a Catalog and Register the UDFs" title="Direct link to Create a Catalog and Register the UDFs" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<p>Register the RoaringBitmap UDFs. The JAR contains three functions: <code>RB_BUILD</code> wraps a single integer as a bitmap; <code>RB_CARDINALITY</code> extracts the deduplication count from a bitmap; <code>RB_OR_AGG</code> executes bitmap <code>OR</code> aggregation for roll-up queries. The deduplication merge at write time is performed by Fluss's <code>rbm32</code> aggregation — these UDFs handle bitmap construction on the Flink side and analysis on the query side.</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">CREATE</span><span cla [...]
+<blockquote>
+<p><strong>Note:</strong> These functions are currently provided by the external <a href="https://github.com/flink-extended/flink-roaringbitmap" target="_blank" rel="noopener noreferrer" class="">flink-roaringbitmap</a> library. Once <a href="https://cwiki.apache.org/confluence/display/FLUSS/FIP-37%3A+Native+RoaringBitmap+Integration+for+Apache+Fluss" target="_blank" rel="noopener noreferrer" class="">FIP-37: Native RoaringBitmap Integration for Apache Fluss</a> is completed, they will b [...]
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="create-dictionary-and-aggregation-tables">Create Dictionary and Aggregation Tables<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#create-dictionary-and-aggregation-tables" class="hash-link" aria-label="Direct link to Create Dictionary and Aggregation Tables" title="Direct link to Create Dictionary and Aggregation Tables" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token comment" style="color:#8e908c;font-style:italic">-- D [...]
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="write-sample-data">Write Sample Data<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#write-sample-data" class="hash-link" aria-label="Direct link to Write Sample Data" title="Direct link to Write Sample Data" translate="no">​</a></h3>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token comment" style="color:#8e908c;font-style:italic">-- S [...]
+<p>Each event is written as one row carrying a single-element bitmap. Fluss merges it server-side via <code>rbm32</code> union into the existing bitmap of the corresponding primary key. Flink jobs are only responsible for mapping and forwarding — they hold no aggregation state, require no <code>GROUP BY</code>, and do not process retraction messages.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure4-b5f8ffeafbf32ec7c4f1090336f94b81.png" width="1344" height="746" class="img_ev3q"></p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="query-deduplication-results">Query Deduplication Results<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#query-deduplication-results" class="hash-link" aria-label="Direct link to Query Deduplication Results" title="Direct link to Query Deduplication Results" translate="no">​</a></h3>
+<p>After writing the data, wait approximately 60 seconds for the data to tier into Paimon. For PK tables, the tiering service uses the <strong>KV snapshot</strong> as a synchronization checkpoint — it reads the snapshot state first, then replays subsequent <strong>CDC events</strong> from that point. The wait covers one KV snapshot period (30 seconds) plus one tiering checkpoint period. Switch to <strong>batch mode</strong> to query the tiered data. Batch mode supports <code>ORDER BY</co [...]
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SET</span><span class= [...]
+<p>Result:</p>
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----------+----------+----+----+----+</span><br></div><div class="token-line [...]
+<p>Note the <code>(app, Shanghai, 20260301, 10)</code> row: <code>user_1</code> appeared twice and <code>user_2</code> appeared once, yielding <code>uv = 2</code>. The three single-element bitmaps were merged by Fluss into a deduplicated set containing two distinct users. <code>pv = 3</code> is the raw event count from the sum aggregation. The query side requires no aggregation — results are ready at write time.</p>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="multi-dimensional-roll-up-queries">Multi-Dimensional Roll-Up Queries<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#multi-dimensional-roll-up-queries" class="hash-link" aria-label="Direct link to Multi-Dimensional Roll-Up Queries" title="Direct link to Multi-Dimensional Roll-Up Queries" translate="no">​</a></h3>
+<p>The preceding query reads the finest-granularity pre-aggregation results (<code>channel × city × ymd × hh</code>). The real power of bitmaps is supporting flexible roll-up: performing <code>OR</code> operations across fine-grained bitmaps yields coarse-grained deduplication counts without returning to the original data.</p>
+<p>Roll up by channel, overall UV across all cities, dates, and hours:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----+----+</span><br></div><div class="token-line" style="color:#36464e"><sp [...]
+<p><code>user_1</code> visited the <code>app</code> channel from both Shanghai and Beijing at multiple times. <code>RB_OR_AGG</code> combines all fine-grained bitmaps under the same channel into a single deduplicated set — each user is counted only once. The <code>app</code> channel has four distinct users (1, 2, 3, 5), not a simple sum of per-group UV counts.</p>
+<p>Roll up by date, daily UV across all channels and cities:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+----------+----+----+</span><br></div><div class="token-line" style="color:#36464e"><span c [...]
+<p>Active users are users 1–4 on March 1 and users 1, 2, 4, and 5 on March 2. Simply summing per-group UV counts would result in double counting, but the bitmap <code>OR</code> operation gives accurate results.</p>
+<p>Roll up by channel x date, a common dashboard view:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+--------------+----------+----+----+</span><br></div><div class="token-line" style="color:# [...]
+<p>Global UV, total distinct users across all dimensions:</p>
+<div class="language-sql codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockTitle_OeMC">Flink SQL</div><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-sql codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token keyword" style="color:#3f6ec6">SELECT</span><span cla [...]
+<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token plain">+----------+----------+</span><br></div><div class="token-line" style="color:#36464e"><span  [...]
+<p>Five distinct users generated a total of 12 page views. One query, one full bitmap <code>OR</code> — no need to re-scan the original events.</p>
+<p>All roll-up queries follow the same pattern: <code>GROUP BY</code> the target dimensions, apply <code>RB_OR_AGG</code> on the bitmap column, and use <code>RB_CARDINALITY</code> to extract the count. The finest-granularity pre-aggregated bitmap is the building block for all coarser-grained analysis.</p>
+<blockquote>
+<p>In a production environment, replace the bounded <code>page_views</code> view with a streaming data source and add the <code>/*+ OPTIONS('lookup.insert-if-not-exists' = 'true') */</code> hint to automatically register new users and enable a real-time bitmap write pipeline. The storage-side schema remains identical.</p>
+</blockquote>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="clean-up-the-environment">Clean Up the Environment<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#clean-up-the-environment" class="hash-link" aria-label="Direct link to Clean Up the Environment" title="Direct link to Clean Up the Environment" translate="no">​</a></h3>
+<p>After exiting the SQL Client, run the following to stop and remove all containers:</p>
+<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#36464e;--prism-background-color:#f5f5f5"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#36464e;background-color:#f5f5f5"><code class="codeBlockLines_e6Vv"><div class="token-line" style="color:#36464e"><span class="token function" style="color:#a846b9">docker</span><span class="token plain"> compose down </span><span c [...]
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="beyond-uv-other-use-cases">Beyond UV: Other Use Cases<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#beyond-uv-other-use-cases" class="hash-link" aria-label="Direct link to Beyond UV: Other Use Cases" title="Direct link to Beyond UV: Other Use Cases" translate="no">​</a></h2>
+<p>This pattern is not limited to UV counting. It extends naturally to a variety of analytical scenarios. The core structure is consistent: choose the appropriate primary key granularity, and bitmap merging is handled by the storage layer at write time.</p>
+<p><strong>Real-time multi-dimensional UV analysis.</strong> The main scenario in this post. Accurate UV statistics based on any combination of dimensions such as channel, city, date, and hour, with flexible dimension roll-up via bitmap union. Applicable to traffic dashboards, advertising effectiveness analysis, and activity monitoring.</p>
+<p><strong>User retention analysis.</strong> Store active user bitmaps at the granularity of <code>user × date</code>. The retained user set is obtained by <code>AND</code>-ing bitmaps from different dates. For example, the cardinality of <code>Day1_bitmap AND Day7_bitmap</code> gives the 7-day retention count.</p>
+<p><strong>Funnel analysis.</strong> Store an aggregation table for each funnel step, with bitmaps recording the set of users who reached that step. Conversion rates are computed by <code>AND</code>-ing bitmaps of adjacent steps. Since bitmaps support set difference (<code>ANDNOT</code>), you can further analyze the characteristics of users who dropped off at each step.</p>
+<p><strong>Audience segmentation and user profiling.</strong> Build user attribute labels (such as gender, province, and preference category) as bitmaps. Multi-label combination queries are converted into bitmap <code>AND</code>/<code>OR</code>/<code>ANDNOT</code> operations, enabling selection of tens of millions of users in milliseconds. This is a high-frequency scenario in advertising <strong>DMP</strong> and recommendation systems.</p>
+<p><img decoding="async" loading="lazy" src="https://fluss.apache.org/assets/images/figure5-86a3bd1f0dede51a77608a746ad9ff7b.png" width="1344" height="760" class="img_ev3q"></p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="getting-started">Getting Started<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#getting-started" class="hash-link" aria-label="Direct link to Getting Started" title="Direct link to Getting Started" translate="no">​</a></h2>
+<p>If you are evaluating real-time multi-dimensional exact deduplication schemes, Fluss's RoaringBitmap capability is a worthwhile starting point. The architecture follows a clear three-step pattern:</p>
+<ol>
+<li class=""><strong>Map</strong> sparse user identities to dense integers using an auto-increment <code>uid_dictionary</code> table.</li>
+<li class=""><strong>Deduplicate at write time</strong> using an <code>rbm32</code> aggregation table — no stateful Flink jobs, no complex UDAFs.</li>
+<li class=""><strong>Query directly</strong> using <code>RB_CARDINALITY()</code> for point reads or <code>RB_OR_AGG()</code> + <code>RB_CARDINALITY()</code> for any roll-up combination.</li>
+</ol>
+<p>The result is a system where deduplication is handled entirely by the storage layer, and the query side reads pre-computed results with no additional aggregation overhead.</p>
+<p><code>rbm32</code> / <code>rbm64</code> aggregation and the auto-increment dictionary scheme are available from <strong>Apache Fluss 0.9</strong>. See the <a href="https://fluss.apache.org/" target="_blank" rel="noopener noreferrer" class="">Fluss documentation</a> for the full configuration reference.</p>
+<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="join-the-community">Join the Community<a href="https://fluss.apache.org/blog/roaringbitmap-uv-deduplication/#join-the-community" class="hash-link" aria-label="Direct link to Join the Community" title="Direct link to Join the Community" translate="no">​</a></h2>
+<p>Apache Fluss is an open-source project under active development within the Apache Software Foundation.</p>
+<ul>
+<li class="">GitHub: <a href="https://github.com/apache/fluss" target="_blank" rel="noopener noreferrer" class="">github.com/apache/fluss</a></li>
+<li class="">Documentation: <a href="https://fluss.apache.org/" target="_blank" rel="noopener noreferrer" class="">fluss.apache.org</a></li>
+</ul>]]></content:encoded>
+        </item>
         <item>
             <title><![CDATA[Why Apache Fluss Chose Rust for Its Multi-Language SDK]]></title>
             <link>https://fluss.apache.org/blog/why-fluss-chose-rust-for-multi-language-sdk/</link>
@@ -1211,7 +1353,7 @@ and then ship the results into a <strong>separate serving</strong> system purely
 <p><strong>This introduces an important trade-off:</strong> every additional system means duplicate storage, increased latency, and extra operational overhead. Data has to be landed, indexed, and kept in sync, even though the stream processor has already computed the end state.</p>
 <p>With Fluss Primary Key Tables, you don’t need that extra serving layer. Your stateful computations in Flink can materialize directly into PK Tables, which are durable, consistent, and queryable in real time. This lets you power dashboards or APIs straight from the tables, cutting out redundant clusters and reducing end-to-end latency.</p>
 <p><strong>In short:</strong> compute once in Flink, persist in Fluss, and serve directly, without duplicating storage or managing another system.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-closing-thoughts">🚀 Closing Thoughts<a href="https://fluss.apache.org/blog/pk-key-tables-log-cache-streaming/#-closing-thoughts" class="hash-link" aria-label="Direct link to �🚀 Closing Thoughts" title="Direct link to 🚀 Closing Thoughts" translate="no">​</a></h3>
+<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="-closing-thoughts">🚀 Closing Thoughts<a href="https://fluss.apache.org/blog/pk-key-tables-log-cache-streaming/#-closing-thoughts" class="hash-link" aria-label="Direct link to 🚀 Closing Thoughts" title="Direct link to 🚀 Closing Thoughts" translate="no">​</a></h3>
 <p>The above are some examples use cases, we have seen recently and I'm only eager to see what users will build with Fluss - realtime features stores is another PK table use case currently under investigation.</p>
 <p>Fluss Primary Key Tables are one of the most compelling features of the platform. They embody the <strong>stream-table duality</strong> in practice: every write is a log entry and a KV update; every recovery is a snapshot plus replay; every cache read is guaranteed to be consistent with the log.</p>
 <p>The complexity of coordinating a log and a cache disappears. With Fluss, you don’t have to choose between speed and safety; you get both.</p>
@@ -2603,74 +2745,5 @@ The future planning for Fluss involves three key aspects, each corresponding to
 </ul>
 <p>There are more exciting work happening in the community. You can check out <a class="" href="https://fluss.apache.org/roadmap/">Fluss Roadmap</a> for a comprehensive future planning.</p>]]></content:encoded>
         </item>
-        <item>
-            <title><![CDATA[Why Fluss? Top 4 Challenges of Using Kafka for Real-Time Analytics]]></title>
-            <link>https://fluss.apache.org/blog/why-fluss/</link>
-            <guid>https://fluss.apache.org/blog/why-fluss/</guid>
-            <pubDate>Wed, 11 Dec 2024 00:00:00 GMT</pubDate>
-            <description><![CDATA[The industry is undergoing a clear and significant shift as big data computing transitions from offline to real-time processing.]]></description>
-            <content:encoded><![CDATA[<p>The industry is undergoing a clear and significant shift as big data computing transitions from offline to real-time processing.
-This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
-where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
-value by leveraging real-time insights to drive business impact and enhance decision-making.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img1-a29d423ce0b5f952b79ad2babb903cf5.jpg" width="3656" height="1240" class="img_ev3q">
-The evolution of big data technology is becoming increasingly impactful, reshaping the computing architecture landscape.
-The traditional Hive-based data warehouse has given way to modern architectures, starting with Lakehouse models and progressing
-to the Paimon streaming Lakehouse, which has gained significant traction in markets like China and more recently started expanding to EU/US markets.
-The core driver behind these architectural innovations is the need to improve data processing timeliness. The data freshness is improved from traditional
-T+1 (next-day readiness) to T+1 hours, and now T+1 minutes. However, Lakehouse architectures, being file-system-based,
-inherently face minute-level latency as their practical upper limit.</p>
-<p>Yet, many critical use cases, such as search and recommendation systems, advertisement attribution, and anomaly detection, demand second-level latency.
-While big data technologies have advanced significantly, there remains a notable gap: a user-friendly, second-level storage solution tailored for big data analytics.</p>
-<p>In most real-time data scenarios, Apache Kafka has emerged as the go-to second-level storage solution. Its integration with Apache Flink represents the dominant architecture for building real-time data warehouses. However, while widely adopted, this combination presents significant challenges for achieving true real-time analytics at scale. The limitations of using Kafka for big data analytics highlight the need for a more robust solution to meet the demands of modern real-time use ca [...]
-<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kafka-falls-short-in-real-time-analytics">Kafka Falls Short in Real-Time Analytics<a href="https://fluss.apache.org/blog/why-fluss/#kafka-falls-short-in-real-time-analytics" class="hash-link" aria-label="Direct link to Kafka Falls Short in Real-Time Analytics" title="Direct link to Kafka Falls Short in Real-Time Analytics" translate="no">​</a></h2>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="no-support-for-updates">No Support for Updates<a href="https://fluss.apache.org/blog/why-fluss/#no-support-for-updates" class="hash-link" aria-label="Direct link to No Support for Updates" title="Direct link to No Support for Updates" translate="no">​</a></h3>
-<p>The first significant challenge with Apache Kafka is its lack of support for updates, a critical feature for data warehouses. In data warehousing, updates are often essential to correct or amend data. However, Kafka's inability to handle updates results in duplicate records for the same primary key. When consumed by a computing engine, this duplication necessitates costly deduplication processes to ensure accurate results.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img2-d2d1a314768a1be3da0308e20851d3f3.jpg" width="3656" height="1172" class="img_ev3q"></p>
-<p>In Apache Flink, for instance, handling this issue requires materializing all upstream data in state, which is resource-intensive. Every time data is consumed from Kafka, the deduplication process incurs a substantial overhead, significantly increasing computational and storage costs. This limitation not only impacts performance but also hampers the reusability of Kafka-stored data for downstream business processes.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="lack-of-querying-capabilities">Lack of Querying Capabilities<a href="https://fluss.apache.org/blog/why-fluss/#lack-of-querying-capabilities" class="hash-link" aria-label="Direct link to Lack of Querying Capabilities" title="Direct link to Lack of Querying Capabilities" translate="no">​</a></h3>
-<p>The second major limitation of Apache Kafka is hard to debug, primarily due to its lack of native querying capabilities. In data warehousing, querying is a fundamental feature that facilitates troubleshooting and ad-hoc analysis to understand data trends. Unfortunately, Kafka operates much like a black box, making it challenging to perform these critical tasks without additional tools or layers.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img3-32732f50a5420dad7d1dd6c5b3d17d6f.jpg" width="3696" height="1214" class="img_ev3q"></p>
-<p>To address this limitation, the industry has adopted two primary approaches, each with its own trade-offs:</p>
-<ul>
-<li class=""><strong>Synchronizing Kafka Data to an OLAP System:</strong> This allows for querying data using the OLAP system’s capabilities. However, this approach introduces additional components into the architecture, increasing both complexity and cost. Moreover, it risks data inconsistencies due to synchronization delays.</li>
-<li class=""><strong>Querying Kafka Directly Using Trino:</strong> While Trino can query Kafka, it relies solely on full scans, which are inefficient for large-scale operations. For instance, a simple query on just 1GB of Kafka data can take up to one minute, rendering it impractical for large datasets or real-time requirements.</li>
-</ul>
-<p>These limitations make Kafka unsuitable for efficient and scalable data exploration in modern data warehousing workflows.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="difficulty-with-data-backfilling">Difficulty with Data Backfilling<a href="https://fluss.apache.org/blog/why-fluss/#difficulty-with-data-backfilling" class="hash-link" aria-label="Direct link to Difficulty with Data Backfilling" title="Direct link to Difficulty with Data Backfilling" translate="no">​</a></h3>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img4-5a57c638bb5dd478a86a9fcd1683734f.jpg" width="3526" height="1210" class="img_ev3q">
-The third significant issue with Apache Kafka is processing historical data, also known as data backfilling, a common requirement in data warehousing.
-For instance, in logistics, it usually needs to process and analyze historical data from several months ago. However, Kafka only retain data for a few days due to the high cost of storage.
-Even though Kafka community has introduced <a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-405%3A+Kafka+Tiered+Storage" target="_blank" rel="noopener noreferrer" class="">Tiered Storage</a> to address the long-term data issue, it still has limitations.
-Reading historical data still require all the data to pass through Kafka brokers, which can lead to brokers unstable and <a href="https://www.warpstream.com/blog/tiered-storage-wont-fix-kafka#increased-complexity-and-operational-burden" target="_blank" rel="noopener noreferrer" class="">disrupt live traffics</a>.</p>
-<p>These limitations highlight Kafka’s inefficiency as a solution for data backfilling in large-scale and long-term analytical use cases, further underscoring the need for more robust alternatives in real-time data warehousing.</p>
-<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="excessive-network-costs">Excessive Network Costs<a href="https://fluss.apache.org/blog/why-fluss/#excessive-network-costs" class="hash-link" aria-label="Direct link to Excessive Network Costs" title="Direct link to Excessive Network Costs" translate="no">​</a></h3>
-<p>The final major challenge with Apache Kafka lies in its high network costs, which account for an estimated 88% of Kafka's overall operational expenses. In data warehousing, the "one write, multiple read" pattern is common, with each consumer often requiring only a subset of the data. However, Kafka's design mandates that consumers read the entire dataset, regardless of how much is actually needed.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img5-e185731d5e249a6c80b962b77b5a16ad.jpg" width="3636" height="1206" class="img_ev3q"></p>
-<p>For instance, among the tens of thousands of Flink SQL jobs at Alibaba, only 49% of the upstream columns are utilized per job on average. Despite this, consumers must read all the columns and pay 100% networking cost, which is highly inefficient and wasteful.</p>
-<p>In summary, using Kafka for real-time analytics presents several critical issues: <strong>(1) lack of support for updates</strong>, <strong>(2) absence of querying capabilities</strong>, <strong>(3) difficulty with data backfilling</strong>, and <strong>(4) excessive network costs</strong>. These limitations make the combination of Flink and Kafka less than ideal for real-time data warehousing.
-But why Kafka lacks these abilities? Is it possible to add the abilities to Kafka?</p>
-<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="kafka-is-not-designed-for-analytics">Kafka is not designed for Analytics<a href="https://fluss.apache.org/blog/why-fluss/#kafka-is-not-designed-for-analytics" class="hash-link" aria-label="Direct link to Kafka is not designed for Analytics" title="Direct link to Kafka is not designed for Analytics" translate="no">​</a></h2>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img6-4741286b7e5d1410d5a8d7036e3cad8d.jpg" width="3620" height="1148" class="img_ev3q">
-The root cause of these challenges lies in the fundamental design philosophy of Kafka: <strong>Kafka is designed for streaming events, NOT for streaming analytics</strong>. Each system has its own focus and strengths, and Kafka's design is optimized for message queue scenarios rather than analytical workloads.</p>
-<p>In Kafka, data is typically stored in a row-oriented format, such as CSV, JSON, or Avro.
-While this is highly efficient for use cases involving message streaming, it becomes a bottleneck for analytical scenarios.
-Data analysis requires handling large volumes of data, and therefore heavily relies on data skipping capabilities from storage, such as column pruning and predicate pushdown.
-For this reason, columnar storage is far better suited for analytical workloads, whereas Kafka's row-based storage is not designed to meet these demands effectively.</p>
-<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introducing-fluss">Introducing Fluss<a href="https://fluss.apache.org/blog/why-fluss/#introducing-fluss" class="hash-link" aria-label="Direct link to Introducing Fluss" title="Direct link to Introducing Fluss" translate="no">​</a></h2>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img7-06886bca9797751895c82d707cb04b2d.jpg" width="3644" height="1210" class="img_ev3q">
-When visualizing the data ecosystem as a four-quadrant matrix, an intriguing pattern emerges.
-The left side of the matrix represents operational systems, while the right side represents analytical systems.
-The top half is dedicated to stream storage, and the bottom half to table storage.
-In operational systems, both databases and stream storage predominantly use row-based formats, as row storage is more efficient for transactional workloads. Conversely, in analytical systems like Apache Iceberg and Snowflake, columnar storage is preferred due to its superior performance in analytical scenarios.</p>
-<p>Interestingly, the upper-right quadrant of the matrix remains empty, indicating a significant gap in the market: a streaming storage for analytical scenarios. Unsurprisingly, such a storage would likely adopt a columnar format to effectively address the needs of real-time analytics.</p>
-<p>To fill the gap and resolve problems in Flink and streaming analytics, we embarked on a journey two years ago to create a streaming storage. We named the project "<strong>FL</strong>ink <strong>U</strong>nified <strong>S</strong>treaming <strong>S</strong>torage", and from its initials, we derived the name <strong>Fluss</strong>.
-<img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img8-87cfb5887e9a49febaacd805de5216fe.jpg" width="3700" height="946" class="img_ev3q">
-Interestingly, Flink is derived from the German word for "<strong>agile</strong>", and Fluss, which translates to "<strong>river</strong>" in German, resonates deeply with the project’s vision.
-It symbolizes the streaming data is continuously flowing, distributing and converging into data lakes, just like a river.
-The launch of Fluss coincides with Flink's 10th anniversary, making it a fitting tribute to the project’s heritage and its enduring contribution to the streaming data landscape.</p>
-<p><img decoding="async" loading="lazy" alt="FF Announcement" src="https://fluss.apache.org/assets/images/img9-fb689d41f612ef840508c4c20399822c.jpg" width="3686" height="1242" class="img_ev3q"></p>
-<p>Learn more details about Fluss in the next <a class="" href="https://fluss.apache.org/blog/fluss-intro/">blog post</a>, where we will delve deeper into Fluss's architecture, design principles, key features, and explore how it addresses the challenges of using Kafka for real-time analytics.</p>]]></content:encoded>
-        </item>
     </channel>
 </rss>
\ No newline at end of file
diff --git a/blog/tags/apache-fluss/index.html b/blog/tags/apache-fluss/index.html
index 45b8e5ea1..26699d17d 100644
--- a/blog/tags/apache-fluss/index.html
+++ b/blog/tags/apache-fluss/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>Apache Fluss represents a new architectural approach: the <strong>Streamhouse</strong> for real-time lakehouses. Instead of stitching together separate streaming and batch systems, the Streamhouse unifies them under a single architecture. In this model, Apache Iceberg continues to serve exactly the role it was designed for: a highly efficient, scalable cold storage layer for analytics, while Fluss fills the missing piece: a hot streaming storage layer with sub-second latency, columnar [...]
 <p>After working on Fluss–Iceberg lakehouse integration and deploying this architecture at a massive scale, including Alibaba&#x27;s 3 PB production deployment processing 40 GB/s, we&#x27;re ready to share the architectural lessons learned. Specifically, why existing systems fall short, how Fluss and Iceberg naturally complement each other, and what this means for finally building true real-time lakehouses.</p>
 <p><img decoding="async" loading="lazy" alt="Banner" src="/assets/images/fluss-lakehouse-streaming_comp-62d4129ae29a5e1b5453892ae27cc212.png" width="768" height="336" class="img_ev3q"></p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a rel="tag" class="tag_zVej tagRegular_sFm0" href="/blog/tags/streaming-lakehouse/">Streaming Lakehouse</a></li><li class="tag_QGVx"><a rel="tag" class [...]
diff --git a/blog/tags/apache-iceberg/index.html b/blog/tags/apache-iceberg/index.html
index 3d7477f4c..13fc3e7ba 100644
--- a/blog/tags/apache-iceberg/index.html
+++ b/blog/tags/apache-iceberg/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>Apache Fluss represents a new architectural approach: the <strong>Streamhouse</strong> for real-time lakehouses. Instead of stitching together separate streaming and batch systems, the Streamhouse unifies them under a single architecture. In this model, Apache Iceberg continues to serve exactly the role it was designed for: a highly efficient, scalable cold storage layer for analytics, while Fluss fills the missing piece: a hot streaming storage layer with sub-second latency, columnar [...]
 <p>After working on Fluss–Iceberg lakehouse integration and deploying this architecture at a massive scale, including Alibaba&#x27;s 3 PB production deployment processing 40 GB/s, we&#x27;re ready to share the architectural lessons learned. Specifically, why existing systems fall short, how Fluss and Iceberg naturally complement each other, and what this means for finally building true real-time lakehouses.</p>
 <p><img decoding="async" loading="lazy" alt="Banner" src="/assets/images/fluss-lakehouse-streaming_comp-62d4129ae29a5e1b5453892ae27cc212.png" width="768" height="336" class="img_ev3q"></p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a rel="tag" class="tag_zVej tagRegular_sFm0" href="/blog/tags/streaming-lakehouse/">Streaming Lakehouse</a></li><li class="tag_QGVx"><a rel="tag" class [...]
diff --git a/blog/tags/arrow/index.html b/blog/tags/arrow/index.html
index b269db651..4fc1f3a36 100644
--- a/blog/tags/arrow/index.html
+++ b/blog/tags/arrow/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>If you maintain a data system that only speaks Java, you will eventually hear from someone who doesn&#x27;t. A Python team building a feature store. A C++ service that needs sub-millisecond writes. An AI agent that wants to call your system through a tool binding. They all need the same capabilities (writes, reads, lookups) and none of them want to spin up a JVM to get them.</p>
 <p>Apache Fluss, streaming storage for real-time analytics and AI, hit this exact inflection point. The <a class="" href="/blog/fluss-java-client/">Java client</a> works well for Flink-based compute, where the JVM is already the world you live in. But outside that world, asking consumers to run a JVM sidecar just to write a record or look up a key creates friction that compounds across every service, every pipeline, every agent in the stack.</p>
 <p>We could have written a separate client for each language. Maintain five copies of the wire protocol, five implementations of the batching logic, five sets of retry semantics and idempotence tracking. That path scales linearly with languages and ends predictably: the Java client gets features first, the Python client gets them six months later with slightly different edge-case behavior, and the C++ client is perpetually &quot;almost done.&quot;</p>
diff --git a/blog/tags/fluss-cpp/index.html b/blog/tags/fluss-cpp/index.html
index 0c4fc041b..c42d518d0 100644
--- a/blog/tags/fluss-cpp/index.html
+++ b/blog/tags/fluss-cpp/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>If you maintain a data system that only speaks Java, you will eventually hear from someone who doesn&#x27;t. A Python team building a feature store. A C++ service that needs sub-millisecond writes. An AI agent that wants to call your system through a tool binding. They all need the same capabilities (writes, reads, lookups) and none of them want to spin up a JVM to get them.</p>
 <p>Apache Fluss, streaming storage for real-time analytics and AI, hit this exact inflection point. The <a class="" href="/blog/fluss-java-client/">Java client</a> works well for Flink-based compute, where the JVM is already the world you live in. But outside that world, asking consumers to run a JVM sidecar just to write a record or look up a key creates friction that compounds across every service, every pipeline, every agent in the stack.</p>
 <p>We could have written a separate client for each language. Maintain five copies of the wire protocol, five implementations of the batching logic, five sets of retry semantics and idempotence tracking. That path scales linearly with languages and ends predictably: the Java client gets features first, the Python client gets them six months later with slightly different edge-case behavior, and the C++ client is perpetually &quot;almost done.&quot;</p>
diff --git a/blog/tags/fluss-rs/index.html b/blog/tags/fluss-rs/index.html
index 042fca16a..6489a8e41 100644
--- a/blog/tags/fluss-rs/index.html
+++ b/blog/tags/fluss-rs/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>If you maintain a data system that only speaks Java, you will eventually hear from someone who doesn&#x27;t. A Python team building a feature store. A C++ service that needs sub-millisecond writes. An AI agent that wants to call your system through a tool binding. They all need the same capabilities (writes, reads, lookups) and none of them want to spin up a JVM to get them.</p>
 <p>Apache Fluss, streaming storage for real-time analytics and AI, hit this exact inflection point. The <a class="" href="/blog/fluss-java-client/">Java client</a> works well for Flink-based compute, where the JVM is already the world you live in. But outside that world, asking consumers to run a JVM sidecar just to write a record or look up a key creates friction that compounds across every service, every pipeline, every agent in the stack.</p>
 <p>We could have written a separate client for each language. Maintain five copies of the wire protocol, five implementations of the batching logic, five sets of retry semantics and idempotence tracking. That path scales linearly with languages and ends predictably: the Java client gets features first, the Python client gets them six months later with slightly different edge-case behavior, and the C++ client is perpetually &quot;almost done.&quot;</p>
diff --git a/blog/tags/fluss-rust/index.html b/blog/tags/fluss-rust/index.html
index bd8e40eec..14d8fe77c 100644
--- a/blog/tags/fluss-rust/index.html
+++ b/blog/tags/fluss-rust/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>If you maintain a data system that only speaks Java, you will eventually hear from someone who doesn&#x27;t. A Python team building a feature store. A C++ service that needs sub-millisecond writes. An AI agent that wants to call your system through a tool binding. They all need the same capabilities (writes, reads, lookups) and none of them want to spin up a JVM to get them.</p>
 <p>Apache Fluss, streaming storage for real-time analytics and AI, hit this exact inflection point. The <a class="" href="/blog/fluss-java-client/">Java client</a> works well for Flink-based compute, where the JVM is already the world you live in. But outside that world, asking consumers to run a JVM sidecar just to write a record or look up a key creates friction that compounds across every service, every pipeline, every agent in the stack.</p>
 <p>We could have written a separate client for each language. Maintain five copies of the wire protocol, five implementations of the batching logic, five sets of retry semantics and idempotence tracking. That path scales linearly with languages and ends predictably: the Java client gets features first, the Python client gets them six months later with slightly different edge-case behavior, and the C++ client is perpetually &quot;almost done.&quot;</p>
diff --git a/blog/tags/index.html b/blog/tags/index.html
index 13055ccc1..7295486db 100644
--- a/blog/tags/index.html
+++ b/blog/tags/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
                   <p>Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
                   <p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div>
 </body>
diff --git a/blog/tags/pyfluss/index.html b/blog/tags/pyfluss/index.html
index 20d112c81..8ce0bfa56 100644
--- a/blog/tags/pyfluss/index.html
+++ b/blog/tags/pyfluss/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>If you maintain a data system that only speaks Java, you will eventually hear from someone who doesn&#x27;t. A Python team building a feature store. A C++ service that needs sub-millisecond writes. An AI agent that wants to call your system through a tool binding. They all need the same capabilities (writes, reads, lookups) and none of them want to spin up a JVM to get them.</p>
 <p>Apache Fluss, streaming storage for real-time analytics and AI, hit this exact inflection point. The <a class="" href="/blog/fluss-java-client/">Java client</a> works well for Flink-based compute, where the JVM is already the world you live in. But outside that world, asking consumers to run a JVM sidecar just to write a record or look up a key creates friction that compounds across every service, every pipeline, every agent in the stack.</p>
 <p>We could have written a separate client for each language. Maintain five copies of the wire protocol, five implementations of the batching logic, five sets of retry semantics and idempotence tracking. That path scales linearly with languages and ends predictably: the Java client gets features first, the Python client gets them six months later with slightly different edge-case behavior, and the C++ client is perpetually &quot;almost done.&quot;</p>
diff --git a/blog/tags/real-time-analytics/index.html b/blog/tags/real-time-analytics/index.html
index cd625b39c..902834ecd 100644
--- a/blog/tags/real-time-analytics/index.html
+++ b/blog/tags/real-time-analytics/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>Apache Fluss represents a new architectural approach: the <strong>Streamhouse</strong> for real-time lakehouses. Instead of stitching together separate streaming and batch systems, the Streamhouse unifies them under a single architecture. In this model, Apache Iceberg continues to serve exactly the role it was designed for: a highly efficient, scalable cold storage layer for analytics, while Fluss fills the missing piece: a hot streaming storage layer with sub-second latency, columnar [...]
 <p>After working on Fluss–Iceberg lakehouse integration and deploying this architecture at a massive scale, including Alibaba&#x27;s 3 PB production deployment processing 40 GB/s, we&#x27;re ready to share the architectural lessons learned. Specifically, why existing systems fall short, how Fluss and Iceberg naturally complement each other, and what this means for finally building true real-time lakehouses.</p>
 <p><img decoding="async" loading="lazy" alt="Banner" src="/assets/images/fluss-lakehouse-streaming_comp-62d4129ae29a5e1b5453892ae27cc212.png" width="768" height="336" class="img_ev3q"></p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a rel="tag" class="tag_zVej tagRegular_sFm0" href="/blog/tags/streaming-lakehouse/">Streaming Lakehouse</a></li><li class="tag_QGVx"><a rel="tag" class [...]
diff --git a/blog/tags/releases/index.html b/blog/tags/releases/index.html
index e75a441c7..bed21a913 100644
--- a/blog/tags/releases/index.html
+++ b/blog/tags/releases/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>We are excited to announce the release of <a href="https://github.com/apache/fluss-rust" target="_blank" rel="noopener noreferrer" class="">fluss-rust clients</a> 0.1.0, the first official release of the <a href="https://clients.fluss.apache.org/user-guide/rust/installation" target="_blank" rel="noopener noreferrer" class="">Rust</a>, <a href="https://clients.fluss.apache.org/user-guide/python/installation" target="_blank" rel="noopener noreferrer" class="">Python</a>, and <a href="ht [...]
 <p>Under the hood, all three clients share a single Rust core that handles protocol negotiation, batching, retries, and <a href="https://arrow.apache.org/" target="_blank" rel="noopener noreferrer" class="">Apache Arrow</a>-based data exchange, with thin language-specific bindings on top. This was a deliberate community decision to deliver native performance and feature parity across every language from day one.</p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tag [...]
 <p>🌊 We are excited to announce the official release of <strong>Apache Fluss (Incubating) 0.9</strong>!</p>
diff --git a/blog/tags/streaming-lakehouse/index.html b/blog/tags/streaming-lakehouse/index.html
index 89b7c4a2d..672471295 100644
--- a/blog/tags/streaming-lakehouse/index.html
+++ b/blog/tags/streaming-lakehouse/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__d [...]
 <p>Apache Fluss represents a new architectural approach: the <strong>Streamhouse</strong> for real-time lakehouses. Instead of stitching together separate streaming and batch systems, the Streamhouse unifies them under a single architecture. In this model, Apache Iceberg continues to serve exactly the role it was designed for: a highly efficient, scalable cold storage layer for analytics, while Fluss fills the missing piece: a hot streaming storage layer with sub-second latency, columnar [...]
 <p>After working on Fluss–Iceberg lakehouse integration and deploying this architecture at a massive scale, including Alibaba&#x27;s 3 PB production deployment processing 40 GB/s, we&#x27;re ready to share the architectural lessons learned. Specifically, why existing systems fall short, how Fluss and Iceberg naturally complement each other, and what this means for finally building true real-time lakehouses.</p>
 <p><img decoding="async" loading="lazy" alt="Banner" src="/assets/images/fluss-lakehouse-streaming_comp-62d4129ae29a5e1b5453892ae27cc212.png" width="768" height="336" class="img_ev3q"></p></div><footer class="row docusaurus-mt-lg"><div class="col col--9"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a rel="tag" class="tag_zVej tagRegular_sFm0" href="/blog/tags/streaming-lakehouse/">Streaming Lakehouse</a></li><li class="tag_QGVx"><a rel="tag" class [...]
diff --git a/blog/taobao-practice/index.html b/blog/taobao-practice/index.html
index 53d11d657..b4bc25422 100644
--- a/blog/taobao-practice/index.html
+++ b/blog/taobao-practice/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="introduction">Introduction<a href="#introduction" class="hash-link" aria-label="Direct link to Introduction" title="Direct link to Introduction" translate="no">​</a></h3>
 <p>The Data Development Team of Taobao has built a new <strong>generation of real-time data warehouse</strong> based on Apache Fluss.
 Fluss solves the problems of redundant data transfer, difficulties in data profiling, and challenges in large scale stateful workload operations and maintenance.
diff --git a/blog/tiering-service/index.html b/blog/tiering-service/index.html
index bc0840cc1..da9c25d29 100644
--- a/blog/tiering-service/index.html
+++ b/blog/tiering-service/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p><img decoding="async" loading="lazy" src="/assets/images/background-8a1ebc79c438a3deabba060edf8eaa0b.png" width="2036" height="924" class="img_ev3q"></p>
 <p>At the core of Fluss’s Lakehouse architecture sits the <strong>Tiering Service:</strong> a smart,
 policy-driven data pipeline that seamlessly bridges your real-time Fluss cluster and your cost-efficient lakehouse storage. It continuously ingests fresh events from the fluss cluster, automatically migrating older or less-frequently accessed data into colder storage tiers without interrupting ongoing queries. By balancing hot, warm, and cold storage according to configurable rules, the Tiering Service ensures that recent data remains instantly queryable while historical records are arch [...]
diff --git a/blog/unified-streaming-lakehouse/index.html b/blog/unified-streaming-lakehouse/index.html
index bdcab0e54..1db7f48df 100644
--- a/blog/unified-streaming-lakehouse/index.html
+++ b/blog/unified-streaming-lakehouse/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>Fluss is designed to address the demands of real-time analytics with the following key capabilities:</p>
 <ul>
 <li class=""><strong>Real-Time Stream Reading and Writing:</strong> Supports millisecond-level end-to-end latency.</li>
diff --git a/blog/unveil-fluss-logo/index.html b/blog/unveil-fluss-logo/index.html
index f9b62fff9..3c6b2192c 100644
--- a/blog/unveil-fluss-logo/index.html
+++ b/blog/unveil-fluss-logo/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <h2 class="anchor anchorTargetStickyNavbar_Vzrq" id="introducing-the-little-otter">Introducing the Little Otter<a href="#introducing-the-little-otter" class="hash-link" aria-label="Direct link to Introducing the Little Otter" title="Direct link to Introducing the Little Otter" translate="no">​</a></h2>
 <p>Today is <a href="https://www.otter.org/world-otter-day" target="_blank" rel="noopener noreferrer" class="">World Otter Day</a>, and we are thrilled to introduce the little otter to the Fluss community! 🎉</p>
 <p>Since open-sourced half a year ago, many community members and friends have asked us:
diff --git a/blog/why-fluss-chose-rust-for-multi-language-sdk/index.html b/blog/why-fluss-chose-rust-for-multi-language-sdk/index.html
index 63a936d5d..ba38806b1 100644
--- a/blog/why-fluss-chose-rust-for-multi-language-sdk/index.html
+++ b/blog/why-fluss-chose-rust-for-multi-language-sdk/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 <p>If you maintain a data system that only speaks Java, you will eventually hear from someone who doesn&#x27;t. A Python team building a feature store. A C++ service that needs sub-millisecond writes. An AI agent that wants to call your system through a tool binding. They all need the same capabilities (writes, reads, lookups) and none of them want to spin up a JVM to get them.</p>
 <p>Apache Fluss, streaming storage for real-time analytics and AI, hit this exact inflection point. The <a class="" href="/blog/fluss-java-client/">Java client</a> works well for Flink-based compute, where the JVM is already the world you live in. But outside that world, asking consumers to run a JVM sidecar just to write a record or look up a key creates friction that compounds across every service, every pipeline, every agent in the stack.</p>
 <p>We could have written a separate client for each language. Maintain five copies of the wire protocol, five implementations of the batching logic, five sets of retry semantics and idempotence tracking. That path scales linearly with languages and ends predictably: the Java client gets features first, the Python client gets them six months later with slightly different edge-case behavior, and the C++ client is perpetually &quot;almost done.&quot;</p>
@@ -96,7 +96,7 @@
 On the project side, the community is working toward moving fluss-rust into the main Apache Fluss repository. This would unify the release process, simplify cross-repo coordination, and signal the project&#x27;s long-term commitment to the multi-language SDK as a first-class part of Fluss.</p>
 <p>If any of this is interesting to you, we welcome contributions, bug reports, and feedback.</p>
 <hr>
-<p>And before you go 😊 don&#x27;t forget to give some ❤️ via ⭐ on GitHub: <a href="https://github.com/apache/fluss" target="_blank" rel="noopener noreferrer" class="">Apache Fluss</a> and <a href="https://github.com/apache/fluss-rust" target="_blank" rel="noopener noreferrer" class="">Fluss Rust SDK</a></p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"> [...]
+<p>And before you go 😊 don&#x27;t forget to give some ❤️ via ⭐ on GitHub: <a href="https://github.com/apache/fluss" target="_blank" rel="noopener noreferrer" class="">Apache Fluss</a> and <a href="https://github.com/apache/fluss-rust" target="_blank" rel="noopener noreferrer" class="">Fluss Rust SDK</a></p></div><footer class="docusaurus-mt-lg"><div class="row margin-top--sm theme-blog-footer-edit-meta-row"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"> [...]
                   <p>Copyright © 2026 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</p>
                   <p>Apache, the names of Apache projects, and the feather logo are either registered trademarks or trademarks of the Apache Software Foundation in the United States and/or other countries. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p></div></div></div></footer></div></div>
 </body>
diff --git a/blog/why-fluss/index.html b/blog/why-fluss/index.html
index b504b3e72..c0b277520 100644
--- a/blog/why-fluss/index.html
+++ b/blog/why-fluss/index.html
@@ -15,14 +15,14 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
 <symbol id="theme-svg-external-link" viewBox="0 0 24 24"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
 </defs></svg>
-<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
+<script>document.documentElement.setAttribute("data-theme","light"),document.documentElement.setAttribute("data-theme-choice","light"),function(){try{const c=new URLSearchParams(window.location.search).entries();for(var[t,e]of c)if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id="__docusaurus"><div class="blog-post-page-no-sidebar"><div role="region" aria-label="Skip to main content">< [...]
 This transition is revolutionizing various sectors, including the E-commerce, automotive networking, finance, and beyond,
 where real-time data applications are becoming integral to operations. This evolution enables organizations to unlock greater
 value by leveraging real-time insights to drive business impact and enhance decision-making.</p>
diff --git a/community/dev/building/index.html b/community/dev/building/index.html
index a22ede7a7..504a0e3d1 100644
--- a/community/dev/building/index.html
+++ b/community/dev/building/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/dev/ide-setup/index.html b/community/dev/ide-setup/index.html
index 8d7f3b230..ee2281776 100644
--- a/community/dev/ide-setup/index.html
+++ b/community/dev/ide-setup/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/fluss-logos/index.html b/community/fluss-logos/index.html
index 40b19c50f..3ca7604d0 100644
--- a/community/fluss-logos/index.html
+++ b/community/fluss-logos/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/fluss-team/index.html b/community/fluss-team/index.html
index c9ba6da5e..95b7a7e55 100644
--- a/community/fluss-team/index.html
+++ b/community/fluss-team/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-contribute/bug-reports-feature-requests/index.html b/community/how-to-contribute/bug-reports-feature-requests/index.html
index 58c0485a0..d7e735a7d 100644
--- a/community/how-to-contribute/bug-reports-feature-requests/index.html
+++ b/community/how-to-contribute/bug-reports-feature-requests/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-contribute/contribute-code/index.html b/community/how-to-contribute/contribute-code/index.html
index 80ed8846b..592fe19b6 100644
--- a/community/how-to-contribute/contribute-code/index.html
+++ b/community/how-to-contribute/contribute-code/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-contribute/contribute-docs/index.html b/community/how-to-contribute/contribute-docs/index.html
index 5a1578740..b126fd6c7 100644
--- a/community/how-to-contribute/contribute-docs/index.html
+++ b/community/how-to-contribute/contribute-docs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-contribute/review-pull-requests/index.html b/community/how-to-contribute/review-pull-requests/index.html
index b21580e8f..391d8e2e0 100644
--- a/community/how-to-contribute/review-pull-requests/index.html
+++ b/community/how-to-contribute/review-pull-requests/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-release/creating-a-fluss-release/index.html b/community/how-to-release/creating-a-fluss-release/index.html
index 80de39f41..e7b086113 100644
--- a/community/how-to-release/creating-a-fluss-release/index.html
+++ b/community/how-to-release/creating-a-fluss-release/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-release/creating-a-fluss-shaded-release/index.html b/community/how-to-release/creating-a-fluss-shaded-release/index.html
index b6bc765c2..14b5bfc06 100644
--- a/community/how-to-release/creating-a-fluss-shaded-release/index.html
+++ b/community/how-to-release/creating-a-fluss-shaded-release/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-release/release-manager-preparation/index.html b/community/how-to-release/release-manager-preparation/index.html
index 6e45d1dd6..2368d85b5 100644
--- a/community/how-to-release/release-manager-preparation/index.html
+++ b/community/how-to-release/release-manager-preparation/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-release/verifying-a-fluss-release/index.html b/community/how-to-release/verifying-a-fluss-release/index.html
index ac44bdd1b..12831927b 100644
--- a/community/how-to-release/verifying-a-fluss-release/index.html
+++ b/community/how-to-release/verifying-a-fluss-release/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/how-to-release/verifying-a-fluss-shaded-release/index.html b/community/how-to-release/verifying-a-fluss-shaded-release/index.html
index 5706f92de..1a54623d5 100644
--- a/community/how-to-release/verifying-a-fluss-shaded-release/index.html
+++ b/community/how-to-release/verifying-a-fluss-shaded-release/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/community/welcome/index.html b/community/welcome/index.html
index 4317bdf68..2525ed5ea 100644
--- a/community/welcome/index.html
+++ b/community/welcome/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/concepts/architecture/index.html b/docs/0.5/concepts/architecture/index.html
index 3f12c572f..32bdbcef3 100644
--- a/docs/0.5/concepts/architecture/index.html
+++ b/docs/0.5/concepts/architecture/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/dev/building/index.html b/docs/0.5/dev/building/index.html
index 5c7a7d1c9..33352828f 100644
--- a/docs/0.5/dev/building/index.html
+++ b/docs/0.5/dev/building/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/dev/ide-setup/index.html b/docs/0.5/dev/ide-setup/index.html
index fc845abf2..d315bd3e5 100644
--- a/docs/0.5/dev/ide-setup/index.html
+++ b/docs/0.5/dev/ide-setup/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/engine-flink/ddl/index.html b/docs/0.5/engine-flink/ddl/index.html
index 0a60b763f..400fc2a95 100644
--- a/docs/0.5/engine-flink/ddl/index.html
+++ b/docs/0.5/engine-flink/ddl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/engine-flink/getting-started/index.html b/docs/0.5/engine-flink/getting-started/index.html
index 61f27c6cd..4cf0999ea 100644
--- a/docs/0.5/engine-flink/getting-started/index.html
+++ b/docs/0.5/engine-flink/getting-started/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/engine-flink/lookups/index.html b/docs/0.5/engine-flink/lookups/index.html
index 6ef4570d6..5107180a2 100644
--- a/docs/0.5/engine-flink/lookups/index.html
+++ b/docs/0.5/engine-flink/lookups/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/engine-flink/reads/index.html b/docs/0.5/engine-flink/reads/index.html
index 028438d85..5a4b7fb13 100644
--- a/docs/0.5/engine-flink/reads/index.html
+++ b/docs/0.5/engine-flink/reads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/engine-flink/writes/index.html b/docs/0.5/engine-flink/writes/index.html
index 5460ac119..70a3d254e 100644
--- a/docs/0.5/engine-flink/writes/index.html
+++ b/docs/0.5/engine-flink/writes/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/index.html b/docs/0.5/index.html
index b30e3c50d..11357457b 100644
--- a/docs/0.5/index.html
+++ b/docs/0.5/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/install-deploy/deploying-distributed-cluster/index.html b/docs/0.5/install-deploy/deploying-distributed-cluster/index.html
index eb0d70439..18bacaa96 100644
--- a/docs/0.5/install-deploy/deploying-distributed-cluster/index.html
+++ b/docs/0.5/install-deploy/deploying-distributed-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/install-deploy/deploying-local-cluster/index.html b/docs/0.5/install-deploy/deploying-local-cluster/index.html
index 942a43238..c228ff524 100644
--- a/docs/0.5/install-deploy/deploying-local-cluster/index.html
+++ b/docs/0.5/install-deploy/deploying-local-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/install-deploy/deploying-with-docker/index.html b/docs/0.5/install-deploy/deploying-with-docker/index.html
index 4f9509c5a..94bd295fd 100644
--- a/docs/0.5/install-deploy/deploying-with-docker/index.html
+++ b/docs/0.5/install-deploy/deploying-with-docker/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/install-deploy/overview/index.html b/docs/0.5/install-deploy/overview/index.html
index 267525b73..9adadad43 100644
--- a/docs/0.5/install-deploy/overview/index.html
+++ b/docs/0.5/install-deploy/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/configuration/index.html b/docs/0.5/maintenance/configuration/index.html
index 7c8ed08cb..c927c32a1 100644
--- a/docs/0.5/maintenance/configuration/index.html
+++ b/docs/0.5/maintenance/configuration/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/filesystems/hdfs/index.html b/docs/0.5/maintenance/filesystems/hdfs/index.html
index de0c0f630..17daa2b31 100644
--- a/docs/0.5/maintenance/filesystems/hdfs/index.html
+++ b/docs/0.5/maintenance/filesystems/hdfs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/filesystems/oss/index.html b/docs/0.5/maintenance/filesystems/oss/index.html
index 05f50a3f0..4810c1e7b 100644
--- a/docs/0.5/maintenance/filesystems/oss/index.html
+++ b/docs/0.5/maintenance/filesystems/oss/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/filesystems/overview/index.html b/docs/0.5/maintenance/filesystems/overview/index.html
index fb4c8c8ae..e5c363866 100644
--- a/docs/0.5/maintenance/filesystems/overview/index.html
+++ b/docs/0.5/maintenance/filesystems/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/filesystems/s3/index.html b/docs/0.5/maintenance/filesystems/s3/index.html
index 237e36a76..26ab4fa9c 100644
--- a/docs/0.5/maintenance/filesystems/s3/index.html
+++ b/docs/0.5/maintenance/filesystems/s3/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/logging/index.html b/docs/0.5/maintenance/logging/index.html
index ab5c7905d..703ff7cb5 100644
--- a/docs/0.5/maintenance/logging/index.html
+++ b/docs/0.5/maintenance/logging/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/metric-reporters/index.html b/docs/0.5/maintenance/metric-reporters/index.html
index 0615a5739..e85170594 100644
--- a/docs/0.5/maintenance/metric-reporters/index.html
+++ b/docs/0.5/maintenance/metric-reporters/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/monitor-metrics/index.html b/docs/0.5/maintenance/monitor-metrics/index.html
index ca6851483..3daa9f12d 100644
--- a/docs/0.5/maintenance/monitor-metrics/index.html
+++ b/docs/0.5/maintenance/monitor-metrics/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/tiered-storage/lakehouse-storage/index.html b/docs/0.5/maintenance/tiered-storage/lakehouse-storage/index.html
index 9430bb40f..735276790 100644
--- a/docs/0.5/maintenance/tiered-storage/lakehouse-storage/index.html
+++ b/docs/0.5/maintenance/tiered-storage/lakehouse-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/tiered-storage/overview/index.html b/docs/0.5/maintenance/tiered-storage/overview/index.html
index 104c558de..fc43c1aa1 100644
--- a/docs/0.5/maintenance/tiered-storage/overview/index.html
+++ b/docs/0.5/maintenance/tiered-storage/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/maintenance/tiered-storage/remote-storage/index.html b/docs/0.5/maintenance/tiered-storage/remote-storage/index.html
index cfdf1e4a0..e4aee01fc 100644
--- a/docs/0.5/maintenance/tiered-storage/remote-storage/index.html
+++ b/docs/0.5/maintenance/tiered-storage/remote-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/quickstart/flink/index.html b/docs/0.5/quickstart/flink/index.html
index 4289a669f..900eb4ac7 100644
--- a/docs/0.5/quickstart/flink/index.html
+++ b/docs/0.5/quickstart/flink/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/streaming-lakehouse/integrate-data-lakes/paimon/index.html b/docs/0.5/streaming-lakehouse/integrate-data-lakes/paimon/index.html
index a57aa5eb7..a1d46c5e2 100644
--- a/docs/0.5/streaming-lakehouse/integrate-data-lakes/paimon/index.html
+++ b/docs/0.5/streaming-lakehouse/integrate-data-lakes/paimon/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/streaming-lakehouse/overview/index.html b/docs/0.5/streaming-lakehouse/overview/index.html
index 494308a6b..bfdb855c6 100644
--- a/docs/0.5/streaming-lakehouse/overview/index.html
+++ b/docs/0.5/streaming-lakehouse/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/table-design/data-distribution/bucketing/index.html b/docs/0.5/table-design/data-distribution/bucketing/index.html
index de6ee4276..9dff668f7 100644
--- a/docs/0.5/table-design/data-distribution/bucketing/index.html
+++ b/docs/0.5/table-design/data-distribution/bucketing/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/table-design/data-distribution/partitioning/index.html b/docs/0.5/table-design/data-distribution/partitioning/index.html
index d34af6dda..53e4d0dee 100644
--- a/docs/0.5/table-design/data-distribution/partitioning/index.html
+++ b/docs/0.5/table-design/data-distribution/partitioning/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/table-design/data-distribution/ttl/index.html b/docs/0.5/table-design/data-distribution/ttl/index.html
index 7fbd796f9..d2e7b29a7 100644
--- a/docs/0.5/table-design/data-distribution/ttl/index.html
+++ b/docs/0.5/table-design/data-distribution/ttl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/table-design/data-types/index.html b/docs/0.5/table-design/data-types/index.html
index 4b0a7e5f6..bac0d0ab0 100644
--- a/docs/0.5/table-design/data-types/index.html
+++ b/docs/0.5/table-design/data-types/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/table-design/overview/index.html b/docs/0.5/table-design/overview/index.html
index 4d5cb5141..08a5382a2 100644
--- a/docs/0.5/table-design/overview/index.html
+++ b/docs/0.5/table-design/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/table-design/table-types/log-table/index.html b/docs/0.5/table-design/table-types/log-table/index.html
index e82a2c371..949650109 100644
--- a/docs/0.5/table-design/table-types/log-table/index.html
+++ b/docs/0.5/table-design/table-types/log-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.5/table-design/table-types/pk-table/index.html b/docs/0.5/table-design/table-types/pk-table/index.html
index 3256b9dbc..d6c548ddf 100644
--- a/docs/0.5/table-design/table-types/pk-table/index.html
+++ b/docs/0.5/table-design/table-types/pk-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/concepts/architecture/index.html b/docs/0.6/concepts/architecture/index.html
index d5ab7a671..113205b9d 100644
--- a/docs/0.6/concepts/architecture/index.html
+++ b/docs/0.6/concepts/architecture/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/engine-flink/ddl/index.html b/docs/0.6/engine-flink/ddl/index.html
index 3e676c0ff..9bdde05d6 100644
--- a/docs/0.6/engine-flink/ddl/index.html
+++ b/docs/0.6/engine-flink/ddl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/engine-flink/getting-started/index.html b/docs/0.6/engine-flink/getting-started/index.html
index 2e058debd..641232ec0 100644
--- a/docs/0.6/engine-flink/getting-started/index.html
+++ b/docs/0.6/engine-flink/getting-started/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/engine-flink/lookups/index.html b/docs/0.6/engine-flink/lookups/index.html
index 8990b4143..c55449f70 100644
--- a/docs/0.6/engine-flink/lookups/index.html
+++ b/docs/0.6/engine-flink/lookups/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/engine-flink/options/index.html b/docs/0.6/engine-flink/options/index.html
index 9ff379152..abf8dd6a3 100644
--- a/docs/0.6/engine-flink/options/index.html
+++ b/docs/0.6/engine-flink/options/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/engine-flink/reads/index.html b/docs/0.6/engine-flink/reads/index.html
index bb3220564..4f105bd33 100644
--- a/docs/0.6/engine-flink/reads/index.html
+++ b/docs/0.6/engine-flink/reads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/engine-flink/writes/index.html b/docs/0.6/engine-flink/writes/index.html
index 18e0fe41d..5e769e84e 100644
--- a/docs/0.6/engine-flink/writes/index.html
+++ b/docs/0.6/engine-flink/writes/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/index.html b/docs/0.6/index.html
index 4a2d2ed7f..5071b0048 100644
--- a/docs/0.6/index.html
+++ b/docs/0.6/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/install-deploy/deploying-distributed-cluster/index.html b/docs/0.6/install-deploy/deploying-distributed-cluster/index.html
index 93c5df8a0..573dca2bc 100644
--- a/docs/0.6/install-deploy/deploying-distributed-cluster/index.html
+++ b/docs/0.6/install-deploy/deploying-distributed-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/install-deploy/deploying-local-cluster/index.html b/docs/0.6/install-deploy/deploying-local-cluster/index.html
index a4a5d4b34..ae5e0f732 100644
--- a/docs/0.6/install-deploy/deploying-local-cluster/index.html
+++ b/docs/0.6/install-deploy/deploying-local-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/install-deploy/deploying-with-docker/index.html b/docs/0.6/install-deploy/deploying-with-docker/index.html
index 8855680c6..162070162 100644
--- a/docs/0.6/install-deploy/deploying-with-docker/index.html
+++ b/docs/0.6/install-deploy/deploying-with-docker/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/install-deploy/overview/index.html b/docs/0.6/install-deploy/overview/index.html
index 59eae0024..8893c767b 100644
--- a/docs/0.6/install-deploy/overview/index.html
+++ b/docs/0.6/install-deploy/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/configuration/index.html b/docs/0.6/maintenance/configuration/index.html
index 14d67c0ed..2ee4aa673 100644
--- a/docs/0.6/maintenance/configuration/index.html
+++ b/docs/0.6/maintenance/configuration/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/filesystems/hdfs/index.html b/docs/0.6/maintenance/filesystems/hdfs/index.html
index 14a09f065..ae7df41bf 100644
--- a/docs/0.6/maintenance/filesystems/hdfs/index.html
+++ b/docs/0.6/maintenance/filesystems/hdfs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/filesystems/oss/index.html b/docs/0.6/maintenance/filesystems/oss/index.html
index 132eb5f75..208dee7cb 100644
--- a/docs/0.6/maintenance/filesystems/oss/index.html
+++ b/docs/0.6/maintenance/filesystems/oss/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/filesystems/overview/index.html b/docs/0.6/maintenance/filesystems/overview/index.html
index c84b873b3..88c39f85e 100644
--- a/docs/0.6/maintenance/filesystems/overview/index.html
+++ b/docs/0.6/maintenance/filesystems/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/filesystems/s3/index.html b/docs/0.6/maintenance/filesystems/s3/index.html
index cfa353551..97eb00cec 100644
--- a/docs/0.6/maintenance/filesystems/s3/index.html
+++ b/docs/0.6/maintenance/filesystems/s3/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/observability/logging/index.html b/docs/0.6/maintenance/observability/logging/index.html
index 5b07e745f..b9a66c624 100644
--- a/docs/0.6/maintenance/observability/logging/index.html
+++ b/docs/0.6/maintenance/observability/logging/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/observability/metric-reporters/index.html b/docs/0.6/maintenance/observability/metric-reporters/index.html
index f0a010c16..cfb44c529 100644
--- a/docs/0.6/maintenance/observability/metric-reporters/index.html
+++ b/docs/0.6/maintenance/observability/metric-reporters/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/observability/monitor-metrics/index.html b/docs/0.6/maintenance/observability/monitor-metrics/index.html
index 42b0208de..a4af57d23 100644
--- a/docs/0.6/maintenance/observability/monitor-metrics/index.html
+++ b/docs/0.6/maintenance/observability/monitor-metrics/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/observability/quickstart/index.html b/docs/0.6/maintenance/observability/quickstart/index.html
index 1aa817599..c282a90fa 100644
--- a/docs/0.6/maintenance/observability/quickstart/index.html
+++ b/docs/0.6/maintenance/observability/quickstart/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/tiered-storage/lakehouse-storage/index.html b/docs/0.6/maintenance/tiered-storage/lakehouse-storage/index.html
index cb6518cc7..b6ee0b30f 100644
--- a/docs/0.6/maintenance/tiered-storage/lakehouse-storage/index.html
+++ b/docs/0.6/maintenance/tiered-storage/lakehouse-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/tiered-storage/overview/index.html b/docs/0.6/maintenance/tiered-storage/overview/index.html
index 36439dc75..ca2e786b1 100644
--- a/docs/0.6/maintenance/tiered-storage/overview/index.html
+++ b/docs/0.6/maintenance/tiered-storage/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/maintenance/tiered-storage/remote-storage/index.html b/docs/0.6/maintenance/tiered-storage/remote-storage/index.html
index f3806f448..34059b2a6 100644
--- a/docs/0.6/maintenance/tiered-storage/remote-storage/index.html
+++ b/docs/0.6/maintenance/tiered-storage/remote-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/quickstart/flink/index.html b/docs/0.6/quickstart/flink/index.html
index 5a2745a03..cfca90fa8 100644
--- a/docs/0.6/quickstart/flink/index.html
+++ b/docs/0.6/quickstart/flink/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/streaming-lakehouse/integrate-data-lakes/paimon/index.html b/docs/0.6/streaming-lakehouse/integrate-data-lakes/paimon/index.html
index 09088c1bc..14b605e98 100644
--- a/docs/0.6/streaming-lakehouse/integrate-data-lakes/paimon/index.html
+++ b/docs/0.6/streaming-lakehouse/integrate-data-lakes/paimon/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/streaming-lakehouse/overview/index.html b/docs/0.6/streaming-lakehouse/overview/index.html
index 61b1175c6..0e0910e4d 100644
--- a/docs/0.6/streaming-lakehouse/overview/index.html
+++ b/docs/0.6/streaming-lakehouse/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/data-distribution/bucketing/index.html b/docs/0.6/table-design/data-distribution/bucketing/index.html
index 4c751b5d6..826f64c71 100644
--- a/docs/0.6/table-design/data-distribution/bucketing/index.html
+++ b/docs/0.6/table-design/data-distribution/bucketing/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/data-distribution/partitioning/index.html b/docs/0.6/table-design/data-distribution/partitioning/index.html
index 1d9728600..dd8b2f67f 100644
--- a/docs/0.6/table-design/data-distribution/partitioning/index.html
+++ b/docs/0.6/table-design/data-distribution/partitioning/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/data-distribution/ttl/index.html b/docs/0.6/table-design/data-distribution/ttl/index.html
index 236b7fb6e..62ccaeb4b 100644
--- a/docs/0.6/table-design/data-distribution/ttl/index.html
+++ b/docs/0.6/table-design/data-distribution/ttl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/data-types/index.html b/docs/0.6/table-design/data-types/index.html
index cf5ad90fe..32ebd0bf7 100644
--- a/docs/0.6/table-design/data-types/index.html
+++ b/docs/0.6/table-design/data-types/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/overview/index.html b/docs/0.6/table-design/overview/index.html
index 9a932d75e..fd4af9cb3 100644
--- a/docs/0.6/table-design/overview/index.html
+++ b/docs/0.6/table-design/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/table-types/log-table/index.html b/docs/0.6/table-design/table-types/log-table/index.html
index 62ccafc31..1c6991ea2 100644
--- a/docs/0.6/table-design/table-types/log-table/index.html
+++ b/docs/0.6/table-design/table-types/log-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/table-types/pk-table/index.html b/docs/0.6/table-design/table-types/pk-table/index.html
index e45f0b0f1..a8fad6d8e 100644
--- a/docs/0.6/table-design/table-types/pk-table/index.html
+++ b/docs/0.6/table-design/table-types/pk-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/table-types/pk-table/merge-engines/first-row/index.html b/docs/0.6/table-design/table-types/pk-table/merge-engines/first-row/index.html
index 279b48963..426575c30 100644
--- a/docs/0.6/table-design/table-types/pk-table/merge-engines/first-row/index.html
+++ b/docs/0.6/table-design/table-types/pk-table/merge-engines/first-row/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/table-types/pk-table/merge-engines/index.html b/docs/0.6/table-design/table-types/pk-table/merge-engines/index.html
index 02b28874e..7e5592c1f 100644
--- a/docs/0.6/table-design/table-types/pk-table/merge-engines/index.html
+++ b/docs/0.6/table-design/table-types/pk-table/merge-engines/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.6/table-design/table-types/pk-table/merge-engines/versioned/index.html b/docs/0.6/table-design/table-types/pk-table/merge-engines/versioned/index.html
index 856bb3810..6b1a64ed1 100644
--- a/docs/0.6/table-design/table-types/pk-table/merge-engines/versioned/index.html
+++ b/docs/0.6/table-design/table-types/pk-table/merge-engines/versioned/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/apis/java-client/index.html b/docs/0.7/apis/java-client/index.html
index 3756d385b..b179a468f 100644
--- a/docs/0.7/apis/java-client/index.html
+++ b/docs/0.7/apis/java-client/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/concepts/architecture/index.html b/docs/0.7/concepts/architecture/index.html
index d3ca4e4dd..62bf4fd52 100644
--- a/docs/0.7/concepts/architecture/index.html
+++ b/docs/0.7/concepts/architecture/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/engine-flink/datastream/index.html b/docs/0.7/engine-flink/datastream/index.html
index a9e0c1f40..d0c49e826 100644
--- a/docs/0.7/engine-flink/datastream/index.html
+++ b/docs/0.7/engine-flink/datastream/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/engine-flink/ddl/index.html b/docs/0.7/engine-flink/ddl/index.html
index 2a929ba57..2839609e0 100644
--- a/docs/0.7/engine-flink/ddl/index.html
+++ b/docs/0.7/engine-flink/ddl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/engine-flink/getting-started/index.html b/docs/0.7/engine-flink/getting-started/index.html
index 6d135a371..2fb82bc8b 100644
--- a/docs/0.7/engine-flink/getting-started/index.html
+++ b/docs/0.7/engine-flink/getting-started/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/engine-flink/lookups/index.html b/docs/0.7/engine-flink/lookups/index.html
index 4a823a79f..6e430f909 100644
--- a/docs/0.7/engine-flink/lookups/index.html
+++ b/docs/0.7/engine-flink/lookups/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/engine-flink/options/index.html b/docs/0.7/engine-flink/options/index.html
index bf765b79c..531a5ab21 100644
--- a/docs/0.7/engine-flink/options/index.html
+++ b/docs/0.7/engine-flink/options/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/engine-flink/reads/index.html b/docs/0.7/engine-flink/reads/index.html
index 0ef643a4a..0368ea756 100644
--- a/docs/0.7/engine-flink/reads/index.html
+++ b/docs/0.7/engine-flink/reads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/engine-flink/writes/index.html b/docs/0.7/engine-flink/writes/index.html
index f752bb98b..92bb1557a 100644
--- a/docs/0.7/engine-flink/writes/index.html
+++ b/docs/0.7/engine-flink/writes/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/index.html b/docs/0.7/index.html
index 795685988..7d1fe81b2 100644
--- a/docs/0.7/index.html
+++ b/docs/0.7/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/install-deploy/deploying-distributed-cluster/index.html b/docs/0.7/install-deploy/deploying-distributed-cluster/index.html
index e71e36e30..5d8b4bca4 100644
--- a/docs/0.7/install-deploy/deploying-distributed-cluster/index.html
+++ b/docs/0.7/install-deploy/deploying-distributed-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/install-deploy/deploying-local-cluster/index.html b/docs/0.7/install-deploy/deploying-local-cluster/index.html
index 1362896e5..354c0c048 100644
--- a/docs/0.7/install-deploy/deploying-local-cluster/index.html
+++ b/docs/0.7/install-deploy/deploying-local-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/install-deploy/deploying-with-docker/index.html b/docs/0.7/install-deploy/deploying-with-docker/index.html
index 9facdcf11..42947c227 100644
--- a/docs/0.7/install-deploy/deploying-with-docker/index.html
+++ b/docs/0.7/install-deploy/deploying-with-docker/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/install-deploy/overview/index.html b/docs/0.7/install-deploy/overview/index.html
index 3a350a9b8..81896bf6d 100644
--- a/docs/0.7/install-deploy/overview/index.html
+++ b/docs/0.7/install-deploy/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/configuration/index.html b/docs/0.7/maintenance/configuration/index.html
index 042662db5..2d9682efe 100644
--- a/docs/0.7/maintenance/configuration/index.html
+++ b/docs/0.7/maintenance/configuration/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/filesystems/hdfs/index.html b/docs/0.7/maintenance/filesystems/hdfs/index.html
index a8471bd86..f368e2707 100644
--- a/docs/0.7/maintenance/filesystems/hdfs/index.html
+++ b/docs/0.7/maintenance/filesystems/hdfs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/filesystems/oss/index.html b/docs/0.7/maintenance/filesystems/oss/index.html
index d03345631..f4e4c50a0 100644
--- a/docs/0.7/maintenance/filesystems/oss/index.html
+++ b/docs/0.7/maintenance/filesystems/oss/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/filesystems/overview/index.html b/docs/0.7/maintenance/filesystems/overview/index.html
index 50387b32b..157f86950 100644
--- a/docs/0.7/maintenance/filesystems/overview/index.html
+++ b/docs/0.7/maintenance/filesystems/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/filesystems/s3/index.html b/docs/0.7/maintenance/filesystems/s3/index.html
index cf86da8cc..2c91a1023 100644
--- a/docs/0.7/maintenance/filesystems/s3/index.html
+++ b/docs/0.7/maintenance/filesystems/s3/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/observability/logging/index.html b/docs/0.7/maintenance/observability/logging/index.html
index 9e062d397..98a908724 100644
--- a/docs/0.7/maintenance/observability/logging/index.html
+++ b/docs/0.7/maintenance/observability/logging/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/observability/metric-reporters/index.html b/docs/0.7/maintenance/observability/metric-reporters/index.html
index 667cb9638..456f4a2ea 100644
--- a/docs/0.7/maintenance/observability/metric-reporters/index.html
+++ b/docs/0.7/maintenance/observability/metric-reporters/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/observability/monitor-metrics/index.html b/docs/0.7/maintenance/observability/monitor-metrics/index.html
index 52424f481..238d80818 100644
--- a/docs/0.7/maintenance/observability/monitor-metrics/index.html
+++ b/docs/0.7/maintenance/observability/monitor-metrics/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/observability/quickstart/index.html b/docs/0.7/maintenance/observability/quickstart/index.html
index f64d82769..1f7b39ede 100644
--- a/docs/0.7/maintenance/observability/quickstart/index.html
+++ b/docs/0.7/maintenance/observability/quickstart/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/operations/racks/index.html b/docs/0.7/maintenance/operations/racks/index.html
index 9089f14f5..66a3f5f0f 100644
--- a/docs/0.7/maintenance/operations/racks/index.html
+++ b/docs/0.7/maintenance/operations/racks/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/operations/upgrading/index.html b/docs/0.7/maintenance/operations/upgrading/index.html
index ed7fec024..f94a222dd 100644
--- a/docs/0.7/maintenance/operations/upgrading/index.html
+++ b/docs/0.7/maintenance/operations/upgrading/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/tiered-storage/lakehouse-storage/index.html b/docs/0.7/maintenance/tiered-storage/lakehouse-storage/index.html
index 1ad4b5775..c7f8ba207 100644
--- a/docs/0.7/maintenance/tiered-storage/lakehouse-storage/index.html
+++ b/docs/0.7/maintenance/tiered-storage/lakehouse-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/tiered-storage/overview/index.html b/docs/0.7/maintenance/tiered-storage/overview/index.html
index fcae6c1ad..59d1801f0 100644
--- a/docs/0.7/maintenance/tiered-storage/overview/index.html
+++ b/docs/0.7/maintenance/tiered-storage/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/maintenance/tiered-storage/remote-storage/index.html b/docs/0.7/maintenance/tiered-storage/remote-storage/index.html
index 15b26d1dc..83d1d005c 100644
--- a/docs/0.7/maintenance/tiered-storage/remote-storage/index.html
+++ b/docs/0.7/maintenance/tiered-storage/remote-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/quickstart/flink/index.html b/docs/0.7/quickstart/flink/index.html
index ef9cf9fff..cd6dafb8f 100644
--- a/docs/0.7/quickstart/flink/index.html
+++ b/docs/0.7/quickstart/flink/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/quickstart/security/index.html b/docs/0.7/quickstart/security/index.html
index b4d72c2f4..6a72fb2de 100644
--- a/docs/0.7/quickstart/security/index.html
+++ b/docs/0.7/quickstart/security/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/security/authentication/index.html b/docs/0.7/security/authentication/index.html
index d9d3b5ea3..319d18357 100644
--- a/docs/0.7/security/authentication/index.html
+++ b/docs/0.7/security/authentication/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/security/authorization/index.html b/docs/0.7/security/authorization/index.html
index cacdd1d1f..43315b7d9 100644
--- a/docs/0.7/security/authorization/index.html
+++ b/docs/0.7/security/authorization/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/security/overview/index.html b/docs/0.7/security/overview/index.html
index 052c8879e..b71ebdf45 100644
--- a/docs/0.7/security/overview/index.html
+++ b/docs/0.7/security/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/streaming-lakehouse/integrate-data-lakes/paimon/index.html b/docs/0.7/streaming-lakehouse/integrate-data-lakes/paimon/index.html
index 4cc6d5f5a..0cbc4cd98 100644
--- a/docs/0.7/streaming-lakehouse/integrate-data-lakes/paimon/index.html
+++ b/docs/0.7/streaming-lakehouse/integrate-data-lakes/paimon/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/streaming-lakehouse/overview/index.html b/docs/0.7/streaming-lakehouse/overview/index.html
index 30d2ffe01..43786e172 100644
--- a/docs/0.7/streaming-lakehouse/overview/index.html
+++ b/docs/0.7/streaming-lakehouse/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/data-distribution/bucketing/index.html b/docs/0.7/table-design/data-distribution/bucketing/index.html
index 56b54b073..c87b7c0dd 100644
--- a/docs/0.7/table-design/data-distribution/bucketing/index.html
+++ b/docs/0.7/table-design/data-distribution/bucketing/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/data-distribution/partitioning/index.html b/docs/0.7/table-design/data-distribution/partitioning/index.html
index 78596cd4f..833f2bff0 100644
--- a/docs/0.7/table-design/data-distribution/partitioning/index.html
+++ b/docs/0.7/table-design/data-distribution/partitioning/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/data-distribution/ttl/index.html b/docs/0.7/table-design/data-distribution/ttl/index.html
index be747bc96..36df67d61 100644
--- a/docs/0.7/table-design/data-distribution/ttl/index.html
+++ b/docs/0.7/table-design/data-distribution/ttl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/data-types/index.html b/docs/0.7/table-design/data-types/index.html
index de218ac7d..d2af183ed 100644
--- a/docs/0.7/table-design/data-types/index.html
+++ b/docs/0.7/table-design/data-types/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/overview/index.html b/docs/0.7/table-design/overview/index.html
index 62c3ab8a6..debd608f3 100644
--- a/docs/0.7/table-design/overview/index.html
+++ b/docs/0.7/table-design/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/table-types/log-table/index.html b/docs/0.7/table-design/table-types/log-table/index.html
index 2ae142ecf..7d01e83ab 100644
--- a/docs/0.7/table-design/table-types/log-table/index.html
+++ b/docs/0.7/table-design/table-types/log-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/table-types/pk-table/index.html b/docs/0.7/table-design/table-types/pk-table/index.html
index 7e976a68a..8df4d1365 100644
--- a/docs/0.7/table-design/table-types/pk-table/index.html
+++ b/docs/0.7/table-design/table-types/pk-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/table-types/pk-table/merge-engines/default/index.html b/docs/0.7/table-design/table-types/pk-table/merge-engines/default/index.html
index 72f7a007a..407636393 100644
--- a/docs/0.7/table-design/table-types/pk-table/merge-engines/default/index.html
+++ b/docs/0.7/table-design/table-types/pk-table/merge-engines/default/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/table-types/pk-table/merge-engines/first-row/index.html b/docs/0.7/table-design/table-types/pk-table/merge-engines/first-row/index.html
index 73f3436fe..d853a11b0 100644
--- a/docs/0.7/table-design/table-types/pk-table/merge-engines/first-row/index.html
+++ b/docs/0.7/table-design/table-types/pk-table/merge-engines/first-row/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/table-types/pk-table/merge-engines/index.html b/docs/0.7/table-design/table-types/pk-table/merge-engines/index.html
index ea33506ff..473f6a45e 100644
--- a/docs/0.7/table-design/table-types/pk-table/merge-engines/index.html
+++ b/docs/0.7/table-design/table-types/pk-table/merge-engines/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.7/table-design/table-types/pk-table/merge-engines/versioned/index.html b/docs/0.7/table-design/table-types/pk-table/merge-engines/versioned/index.html
index 1e01f8d26..790c57009 100644
--- a/docs/0.7/table-design/table-types/pk-table/merge-engines/versioned/index.html
+++ b/docs/0.7/table-design/table-types/pk-table/merge-engines/versioned/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/apis/java-client/index.html b/docs/0.8/apis/java-client/index.html
index 373023305..353d73cf4 100644
--- a/docs/0.8/apis/java-client/index.html
+++ b/docs/0.8/apis/java-client/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/concepts/architecture/index.html b/docs/0.8/concepts/architecture/index.html
index d18ae30b0..3dbd52e9c 100644
--- a/docs/0.8/concepts/architecture/index.html
+++ b/docs/0.8/concepts/architecture/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/engine-flink/datastream/index.html b/docs/0.8/engine-flink/datastream/index.html
index 9e99f1a1d..9c9826ca3 100644
--- a/docs/0.8/engine-flink/datastream/index.html
+++ b/docs/0.8/engine-flink/datastream/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/engine-flink/ddl/index.html b/docs/0.8/engine-flink/ddl/index.html
index f8401c750..b34a0660d 100644
--- a/docs/0.8/engine-flink/ddl/index.html
+++ b/docs/0.8/engine-flink/ddl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/engine-flink/delta-joins/index.html b/docs/0.8/engine-flink/delta-joins/index.html
index b2d925432..8673851cf 100644
--- a/docs/0.8/engine-flink/delta-joins/index.html
+++ b/docs/0.8/engine-flink/delta-joins/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/engine-flink/getting-started/index.html b/docs/0.8/engine-flink/getting-started/index.html
index 9bafa88d7..432e6e31e 100644
--- a/docs/0.8/engine-flink/getting-started/index.html
+++ b/docs/0.8/engine-flink/getting-started/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/engine-flink/lookups/index.html b/docs/0.8/engine-flink/lookups/index.html
index 3e261a9b6..48df03599 100644
--- a/docs/0.8/engine-flink/lookups/index.html
+++ b/docs/0.8/engine-flink/lookups/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/engine-flink/options/index.html b/docs/0.8/engine-flink/options/index.html
index 3206ee04e..6230dca7d 100644
--- a/docs/0.8/engine-flink/options/index.html
+++ b/docs/0.8/engine-flink/options/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/engine-flink/reads/index.html b/docs/0.8/engine-flink/reads/index.html
index d88934860..4e1d6e811 100644
--- a/docs/0.8/engine-flink/reads/index.html
+++ b/docs/0.8/engine-flink/reads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/engine-flink/writes/index.html b/docs/0.8/engine-flink/writes/index.html
index 0bba2708a..7628fafdf 100644
--- a/docs/0.8/engine-flink/writes/index.html
+++ b/docs/0.8/engine-flink/writes/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/index.html b/docs/0.8/index.html
index b447e65d5..07a76aafe 100644
--- a/docs/0.8/index.html
+++ b/docs/0.8/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/install-deploy/deploying-distributed-cluster/index.html b/docs/0.8/install-deploy/deploying-distributed-cluster/index.html
index 0c926c939..813347e5e 100644
--- a/docs/0.8/install-deploy/deploying-distributed-cluster/index.html
+++ b/docs/0.8/install-deploy/deploying-distributed-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/install-deploy/deploying-local-cluster/index.html b/docs/0.8/install-deploy/deploying-local-cluster/index.html
index 8babdef60..c23244a00 100644
--- a/docs/0.8/install-deploy/deploying-local-cluster/index.html
+++ b/docs/0.8/install-deploy/deploying-local-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/install-deploy/deploying-with-docker/index.html b/docs/0.8/install-deploy/deploying-with-docker/index.html
index 7cfb4c4af..fcb84bdc2 100644
--- a/docs/0.8/install-deploy/deploying-with-docker/index.html
+++ b/docs/0.8/install-deploy/deploying-with-docker/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/install-deploy/deploying-with-helm/index.html b/docs/0.8/install-deploy/deploying-with-helm/index.html
index 3a244862a..c1c8f840d 100644
--- a/docs/0.8/install-deploy/deploying-with-helm/index.html
+++ b/docs/0.8/install-deploy/deploying-with-helm/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/install-deploy/overview/index.html b/docs/0.8/install-deploy/overview/index.html
index 166b350df..4dc3885cf 100644
--- a/docs/0.8/install-deploy/overview/index.html
+++ b/docs/0.8/install-deploy/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/configuration/index.html b/docs/0.8/maintenance/configuration/index.html
index be1b54aba..91bebb102 100644
--- a/docs/0.8/maintenance/configuration/index.html
+++ b/docs/0.8/maintenance/configuration/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/filesystems/hdfs/index.html b/docs/0.8/maintenance/filesystems/hdfs/index.html
index 51da1d5b6..3a305842a 100644
--- a/docs/0.8/maintenance/filesystems/hdfs/index.html
+++ b/docs/0.8/maintenance/filesystems/hdfs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/filesystems/obs/index.html b/docs/0.8/maintenance/filesystems/obs/index.html
index 205c286e3..5d0087add 100644
--- a/docs/0.8/maintenance/filesystems/obs/index.html
+++ b/docs/0.8/maintenance/filesystems/obs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/filesystems/oss/index.html b/docs/0.8/maintenance/filesystems/oss/index.html
index 73bd438bd..4cc3c5981 100644
--- a/docs/0.8/maintenance/filesystems/oss/index.html
+++ b/docs/0.8/maintenance/filesystems/oss/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/filesystems/overview/index.html b/docs/0.8/maintenance/filesystems/overview/index.html
index 6c5b19d26..421375e83 100644
--- a/docs/0.8/maintenance/filesystems/overview/index.html
+++ b/docs/0.8/maintenance/filesystems/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/filesystems/s3/index.html b/docs/0.8/maintenance/filesystems/s3/index.html
index 3b33b1b9f..2b2db915b 100644
--- a/docs/0.8/maintenance/filesystems/s3/index.html
+++ b/docs/0.8/maintenance/filesystems/s3/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/observability/logging/index.html b/docs/0.8/maintenance/observability/logging/index.html
index eced1d03f..2ddedc3f7 100644
--- a/docs/0.8/maintenance/observability/logging/index.html
+++ b/docs/0.8/maintenance/observability/logging/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/observability/metric-reporters/index.html b/docs/0.8/maintenance/observability/metric-reporters/index.html
index d9ac9df8f..8617c0b98 100644
--- a/docs/0.8/maintenance/observability/metric-reporters/index.html
+++ b/docs/0.8/maintenance/observability/metric-reporters/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/observability/monitor-metrics/index.html b/docs/0.8/maintenance/observability/monitor-metrics/index.html
index 231dd93fe..cd3aa4566 100644
--- a/docs/0.8/maintenance/observability/monitor-metrics/index.html
+++ b/docs/0.8/maintenance/observability/monitor-metrics/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/observability/quickstart/index.html b/docs/0.8/maintenance/observability/quickstart/index.html
index 922bd61e5..eab2a3601 100644
--- a/docs/0.8/maintenance/observability/quickstart/index.html
+++ b/docs/0.8/maintenance/observability/quickstart/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/operations/graceful-shutdown/index.html b/docs/0.8/maintenance/operations/graceful-shutdown/index.html
index 24bba8f91..e32807676 100644
--- a/docs/0.8/maintenance/operations/graceful-shutdown/index.html
+++ b/docs/0.8/maintenance/operations/graceful-shutdown/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/operations/racks/index.html b/docs/0.8/maintenance/operations/racks/index.html
index 39437bad9..9958b473d 100644
--- a/docs/0.8/maintenance/operations/racks/index.html
+++ b/docs/0.8/maintenance/operations/racks/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/operations/updating-configs/index.html b/docs/0.8/maintenance/operations/updating-configs/index.html
index 8227082a8..ecbe78d97 100644
--- a/docs/0.8/maintenance/operations/updating-configs/index.html
+++ b/docs/0.8/maintenance/operations/updating-configs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/operations/upgrade-notes-0.8/index.html b/docs/0.8/maintenance/operations/upgrade-notes-0.8/index.html
index f859df8e6..cb8686e5e 100644
--- a/docs/0.8/maintenance/operations/upgrade-notes-0.8/index.html
+++ b/docs/0.8/maintenance/operations/upgrade-notes-0.8/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/operations/upgrade-notes-0.9/index.html b/docs/0.8/maintenance/operations/upgrade-notes-0.9/index.html
index 9581c0781..387a79b97 100644
--- a/docs/0.8/maintenance/operations/upgrade-notes-0.9/index.html
+++ b/docs/0.8/maintenance/operations/upgrade-notes-0.9/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/operations/upgrading/index.html b/docs/0.8/maintenance/operations/upgrading/index.html
index f0c69d969..c91edaf64 100644
--- a/docs/0.8/maintenance/operations/upgrading/index.html
+++ b/docs/0.8/maintenance/operations/upgrading/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/tiered-storage/lakehouse-storage/index.html b/docs/0.8/maintenance/tiered-storage/lakehouse-storage/index.html
index ca4ed3767..8b25f9b5d 100644
--- a/docs/0.8/maintenance/tiered-storage/lakehouse-storage/index.html
+++ b/docs/0.8/maintenance/tiered-storage/lakehouse-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/tiered-storage/overview/index.html b/docs/0.8/maintenance/tiered-storage/overview/index.html
index 5dfe81e2f..a3f5496d6 100644
--- a/docs/0.8/maintenance/tiered-storage/overview/index.html
+++ b/docs/0.8/maintenance/tiered-storage/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/maintenance/tiered-storage/remote-storage/index.html b/docs/0.8/maintenance/tiered-storage/remote-storage/index.html
index b6cbfedbd..c668e37f3 100644
--- a/docs/0.8/maintenance/tiered-storage/remote-storage/index.html
+++ b/docs/0.8/maintenance/tiered-storage/remote-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/quickstart/flink/index.html b/docs/0.8/quickstart/flink/index.html
index f9d3ca5f6..46b198ad6 100644
--- a/docs/0.8/quickstart/flink/index.html
+++ b/docs/0.8/quickstart/flink/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/quickstart/lakehouse/index.html b/docs/0.8/quickstart/lakehouse/index.html
index 4a6facaf2..fee109110 100644
--- a/docs/0.8/quickstart/lakehouse/index.html
+++ b/docs/0.8/quickstart/lakehouse/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/quickstart/security/index.html b/docs/0.8/quickstart/security/index.html
index 8d44685e8..0c3a4e6cc 100644
--- a/docs/0.8/quickstart/security/index.html
+++ b/docs/0.8/quickstart/security/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/security/authentication/index.html b/docs/0.8/security/authentication/index.html
index a008f51d0..f0509a7df 100644
--- a/docs/0.8/security/authentication/index.html
+++ b/docs/0.8/security/authentication/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/security/authorization/index.html b/docs/0.8/security/authorization/index.html
index 816e785bd..b9de79c59 100644
--- a/docs/0.8/security/authorization/index.html
+++ b/docs/0.8/security/authorization/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/security/overview/index.html b/docs/0.8/security/overview/index.html
index c3ef6f859..384a2e62c 100644
--- a/docs/0.8/security/overview/index.html
+++ b/docs/0.8/security/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/streaming-lakehouse/integrate-data-lakes/iceberg/index.html b/docs/0.8/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
index f8d44f7b9..89117a2ec 100644
--- a/docs/0.8/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
+++ b/docs/0.8/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/streaming-lakehouse/integrate-data-lakes/lance/index.html b/docs/0.8/streaming-lakehouse/integrate-data-lakes/lance/index.html
index 48840b743..22d0713aa 100644
--- a/docs/0.8/streaming-lakehouse/integrate-data-lakes/lance/index.html
+++ b/docs/0.8/streaming-lakehouse/integrate-data-lakes/lance/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/streaming-lakehouse/integrate-data-lakes/paimon/index.html b/docs/0.8/streaming-lakehouse/integrate-data-lakes/paimon/index.html
index 5833cbf5a..1a9569dff 100644
--- a/docs/0.8/streaming-lakehouse/integrate-data-lakes/paimon/index.html
+++ b/docs/0.8/streaming-lakehouse/integrate-data-lakes/paimon/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/streaming-lakehouse/overview/index.html b/docs/0.8/streaming-lakehouse/overview/index.html
index 3158405b3..59fdd3b24 100644
--- a/docs/0.8/streaming-lakehouse/overview/index.html
+++ b/docs/0.8/streaming-lakehouse/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/data-distribution/bucketing/index.html b/docs/0.8/table-design/data-distribution/bucketing/index.html
index 2777f8057..790196568 100644
--- a/docs/0.8/table-design/data-distribution/bucketing/index.html
+++ b/docs/0.8/table-design/data-distribution/bucketing/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/data-distribution/partitioning/index.html b/docs/0.8/table-design/data-distribution/partitioning/index.html
index d8999580f..43b786883 100644
--- a/docs/0.8/table-design/data-distribution/partitioning/index.html
+++ b/docs/0.8/table-design/data-distribution/partitioning/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/data-distribution/ttl/index.html b/docs/0.8/table-design/data-distribution/ttl/index.html
index 80a4e4433..20dde7553 100644
--- a/docs/0.8/table-design/data-distribution/ttl/index.html
+++ b/docs/0.8/table-design/data-distribution/ttl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/data-types/index.html b/docs/0.8/table-design/data-types/index.html
index 357fa043d..2425343ea 100644
--- a/docs/0.8/table-design/data-types/index.html
+++ b/docs/0.8/table-design/data-types/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/overview/index.html b/docs/0.8/table-design/overview/index.html
index c2ac26012..6f7869773 100644
--- a/docs/0.8/table-design/overview/index.html
+++ b/docs/0.8/table-design/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/table-types/log-table/index.html b/docs/0.8/table-design/table-types/log-table/index.html
index 581faf9cd..b598224cf 100644
--- a/docs/0.8/table-design/table-types/log-table/index.html
+++ b/docs/0.8/table-design/table-types/log-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/table-types/pk-table/index.html b/docs/0.8/table-design/table-types/pk-table/index.html
index 39cf74089..982505d47 100644
--- a/docs/0.8/table-design/table-types/pk-table/index.html
+++ b/docs/0.8/table-design/table-types/pk-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/table-types/pk-table/merge-engines/default/index.html b/docs/0.8/table-design/table-types/pk-table/merge-engines/default/index.html
index 4d7ab420b..2443fb733 100644
--- a/docs/0.8/table-design/table-types/pk-table/merge-engines/default/index.html
+++ b/docs/0.8/table-design/table-types/pk-table/merge-engines/default/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/table-types/pk-table/merge-engines/first-row/index.html b/docs/0.8/table-design/table-types/pk-table/merge-engines/first-row/index.html
index 7ea46d805..d948fcdb8 100644
--- a/docs/0.8/table-design/table-types/pk-table/merge-engines/first-row/index.html
+++ b/docs/0.8/table-design/table-types/pk-table/merge-engines/first-row/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/table-types/pk-table/merge-engines/index.html b/docs/0.8/table-design/table-types/pk-table/merge-engines/index.html
index 44e3eeaa7..315afc621 100644
--- a/docs/0.8/table-design/table-types/pk-table/merge-engines/index.html
+++ b/docs/0.8/table-design/table-types/pk-table/merge-engines/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/0.8/table-design/table-types/pk-table/merge-engines/versioned/index.html b/docs/0.8/table-design/table-types/pk-table/merge-engines/versioned/index.html
index 2625d5e59..4a104c692 100644
--- a/docs/0.8/table-design/table-types/pk-table/merge-engines/versioned/index.html
+++ b/docs/0.8/table-design/table-types/pk-table/merge-engines/versioned/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/apis/client-support-matrix/index.html b/docs/apis/client-support-matrix/index.html
index a62330e02..b243f7577 100644
--- a/docs/apis/client-support-matrix/index.html
+++ b/docs/apis/client-support-matrix/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/apis/java-client/index.html b/docs/apis/java-client/index.html
index 9cc9e209b..2a7cf2d6f 100644
--- a/docs/apis/java-client/index.html
+++ b/docs/apis/java-client/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/concepts/architecture/index.html b/docs/concepts/architecture/index.html
index 4b43bd523..128e6d139 100644
--- a/docs/concepts/architecture/index.html
+++ b/docs/concepts/architecture/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/datastream/index.html b/docs/engine-flink/datastream/index.html
index 4ba522f95..22098520d 100644
--- a/docs/engine-flink/datastream/index.html
+++ b/docs/engine-flink/datastream/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/ddl/index.html b/docs/engine-flink/ddl/index.html
index f327a866e..85e89a161 100644
--- a/docs/engine-flink/ddl/index.html
+++ b/docs/engine-flink/ddl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/delta-joins/index.html b/docs/engine-flink/delta-joins/index.html
index eec71a154..3344f009d 100644
--- a/docs/engine-flink/delta-joins/index.html
+++ b/docs/engine-flink/delta-joins/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/getting-started/index.html b/docs/engine-flink/getting-started/index.html
index 46903d886..863990c43 100644
--- a/docs/engine-flink/getting-started/index.html
+++ b/docs/engine-flink/getting-started/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/lookups/index.html b/docs/engine-flink/lookups/index.html
index 44655c1b1..1da7a4591 100644
--- a/docs/engine-flink/lookups/index.html
+++ b/docs/engine-flink/lookups/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/options/index.html b/docs/engine-flink/options/index.html
index 7ed862848..5dfdd0909 100644
--- a/docs/engine-flink/options/index.html
+++ b/docs/engine-flink/options/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/procedures/index.html b/docs/engine-flink/procedures/index.html
index acf8f19ef..6dc1114be 100644
--- a/docs/engine-flink/procedures/index.html
+++ b/docs/engine-flink/procedures/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/reads/index.html b/docs/engine-flink/reads/index.html
index 13c2d10e3..a6e0cd44a 100644
--- a/docs/engine-flink/reads/index.html
+++ b/docs/engine-flink/reads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-flink/writes/index.html b/docs/engine-flink/writes/index.html
index 9f97f13f1..2ffce60d9 100644
--- a/docs/engine-flink/writes/index.html
+++ b/docs/engine-flink/writes/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-spark/ddl/index.html b/docs/engine-spark/ddl/index.html
index e96181942..0b98d0b2f 100644
--- a/docs/engine-spark/ddl/index.html
+++ b/docs/engine-spark/ddl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-spark/getting-started/index.html b/docs/engine-spark/getting-started/index.html
index 6249e69ae..1554fb911 100644
--- a/docs/engine-spark/getting-started/index.html
+++ b/docs/engine-spark/getting-started/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-spark/options/index.html b/docs/engine-spark/options/index.html
index 93c4ec5b1..e07acee01 100644
--- a/docs/engine-spark/options/index.html
+++ b/docs/engine-spark/options/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-spark/procedures/index.html b/docs/engine-spark/procedures/index.html
index a2863b383..b67e5f94d 100644
--- a/docs/engine-spark/procedures/index.html
+++ b/docs/engine-spark/procedures/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-spark/reads/index.html b/docs/engine-spark/reads/index.html
index d76addb87..c1515adea 100644
--- a/docs/engine-spark/reads/index.html
+++ b/docs/engine-spark/reads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-spark/structured-streaming/index.html b/docs/engine-spark/structured-streaming/index.html
index 38758a1a8..c7cbc0217 100644
--- a/docs/engine-spark/structured-streaming/index.html
+++ b/docs/engine-spark/structured-streaming/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/engine-spark/writes/index.html b/docs/engine-spark/writes/index.html
index 2edd9cd88..eff64fa73 100644
--- a/docs/engine-spark/writes/index.html
+++ b/docs/engine-spark/writes/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/index.html b/docs/index.html
index 082658c74..59dcb6938 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/install-deploy/deploying-distributed-cluster/index.html b/docs/install-deploy/deploying-distributed-cluster/index.html
index 98dedafa4..4c5318bb2 100644
--- a/docs/install-deploy/deploying-distributed-cluster/index.html
+++ b/docs/install-deploy/deploying-distributed-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/install-deploy/deploying-local-cluster/index.html b/docs/install-deploy/deploying-local-cluster/index.html
index 6d30c58b6..348c3b1d9 100644
--- a/docs/install-deploy/deploying-local-cluster/index.html
+++ b/docs/install-deploy/deploying-local-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/install-deploy/deploying-with-docker/index.html b/docs/install-deploy/deploying-with-docker/index.html
index 420003d43..a15514415 100644
--- a/docs/install-deploy/deploying-with-docker/index.html
+++ b/docs/install-deploy/deploying-with-docker/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/install-deploy/deploying-with-helm/index.html b/docs/install-deploy/deploying-with-helm/index.html
index 97d5ecd61..d8f5e0432 100644
--- a/docs/install-deploy/deploying-with-helm/index.html
+++ b/docs/install-deploy/deploying-with-helm/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/install-deploy/overview/index.html b/docs/install-deploy/overview/index.html
index a5de04597..7bc731189 100644
--- a/docs/install-deploy/overview/index.html
+++ b/docs/install-deploy/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/configuration/index.html b/docs/maintenance/configuration/index.html
index f6a9f72da..4ead2b875 100644
--- a/docs/maintenance/configuration/index.html
+++ b/docs/maintenance/configuration/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/filesystems/azure/index.html b/docs/maintenance/filesystems/azure/index.html
index 51fd2d9c2..b5d557ca2 100644
--- a/docs/maintenance/filesystems/azure/index.html
+++ b/docs/maintenance/filesystems/azure/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/filesystems/hdfs/index.html b/docs/maintenance/filesystems/hdfs/index.html
index 1ad1da62b..482c3bc37 100644
--- a/docs/maintenance/filesystems/hdfs/index.html
+++ b/docs/maintenance/filesystems/hdfs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/filesystems/obs/index.html b/docs/maintenance/filesystems/obs/index.html
index 2dce5131d..c393f5d58 100644
--- a/docs/maintenance/filesystems/obs/index.html
+++ b/docs/maintenance/filesystems/obs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/filesystems/oss/index.html b/docs/maintenance/filesystems/oss/index.html
index c6b580941..a1966eecd 100644
--- a/docs/maintenance/filesystems/oss/index.html
+++ b/docs/maintenance/filesystems/oss/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/filesystems/overview/index.html b/docs/maintenance/filesystems/overview/index.html
index 59f2bdde4..0ea7e6c2f 100644
--- a/docs/maintenance/filesystems/overview/index.html
+++ b/docs/maintenance/filesystems/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/filesystems/s3/index.html b/docs/maintenance/filesystems/s3/index.html
index f5bce48bc..e4ac4bb79 100644
--- a/docs/maintenance/filesystems/s3/index.html
+++ b/docs/maintenance/filesystems/s3/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/observability/logging/index.html b/docs/maintenance/observability/logging/index.html
index cf2182738..7dcd22cf2 100644
--- a/docs/maintenance/observability/logging/index.html
+++ b/docs/maintenance/observability/logging/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/observability/metric-reporters/index.html b/docs/maintenance/observability/metric-reporters/index.html
index 8a0eea398..02528dd99 100644
--- a/docs/maintenance/observability/metric-reporters/index.html
+++ b/docs/maintenance/observability/metric-reporters/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/observability/monitor-metrics/index.html b/docs/maintenance/observability/monitor-metrics/index.html
index dbcb00fbe..6c0c545b9 100644
--- a/docs/maintenance/observability/monitor-metrics/index.html
+++ b/docs/maintenance/observability/monitor-metrics/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/observability/quickstart/index.html b/docs/maintenance/observability/quickstart/index.html
index 36932b7bd..7a2c02172 100644
--- a/docs/maintenance/observability/quickstart/index.html
+++ b/docs/maintenance/observability/quickstart/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/operations/graceful-shutdown/index.html b/docs/maintenance/operations/graceful-shutdown/index.html
index 8ae6d98ff..02db784cb 100644
--- a/docs/maintenance/operations/graceful-shutdown/index.html
+++ b/docs/maintenance/operations/graceful-shutdown/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/operations/racks/index.html b/docs/maintenance/operations/racks/index.html
index 94e78f72d..0b95dfa4b 100644
--- a/docs/maintenance/operations/racks/index.html
+++ b/docs/maintenance/operations/racks/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/operations/rebalance/index.html b/docs/maintenance/operations/rebalance/index.html
index c021659c4..32b09212d 100644
--- a/docs/maintenance/operations/rebalance/index.html
+++ b/docs/maintenance/operations/rebalance/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/operations/updating-configs/index.html b/docs/maintenance/operations/updating-configs/index.html
index 1a44928bd..885302488 100644
--- a/docs/maintenance/operations/updating-configs/index.html
+++ b/docs/maintenance/operations/updating-configs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/operations/upgrade-notes-0.8/index.html b/docs/maintenance/operations/upgrade-notes-0.8/index.html
index d63da72bd..0a8031334 100644
--- a/docs/maintenance/operations/upgrade-notes-0.8/index.html
+++ b/docs/maintenance/operations/upgrade-notes-0.8/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/operations/upgrade-notes-0.9/index.html b/docs/maintenance/operations/upgrade-notes-0.9/index.html
index 8d7bc3f8c..0e2cf3871 100644
--- a/docs/maintenance/operations/upgrade-notes-0.9/index.html
+++ b/docs/maintenance/operations/upgrade-notes-0.9/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/operations/upgrade-notes-archive/index.html b/docs/maintenance/operations/upgrade-notes-archive/index.html
index eed47efa9..2439fdeed 100644
--- a/docs/maintenance/operations/upgrade-notes-archive/index.html
+++ b/docs/maintenance/operations/upgrade-notes-archive/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/operations/upgrading/index.html b/docs/maintenance/operations/upgrading/index.html
index fe83c21c9..8b5fcdec4 100644
--- a/docs/maintenance/operations/upgrading/index.html
+++ b/docs/maintenance/operations/upgrading/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/tiered-storage/lakehouse-storage/index.html b/docs/maintenance/tiered-storage/lakehouse-storage/index.html
index 457bc256c..4742531fb 100644
--- a/docs/maintenance/tiered-storage/lakehouse-storage/index.html
+++ b/docs/maintenance/tiered-storage/lakehouse-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/tiered-storage/overview/index.html b/docs/maintenance/tiered-storage/overview/index.html
index e258ec83c..10ed4794b 100644
--- a/docs/maintenance/tiered-storage/overview/index.html
+++ b/docs/maintenance/tiered-storage/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/maintenance/tiered-storage/remote-storage/index.html b/docs/maintenance/tiered-storage/remote-storage/index.html
index 033ca5eed..c243536b8 100644
--- a/docs/maintenance/tiered-storage/remote-storage/index.html
+++ b/docs/maintenance/tiered-storage/remote-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/apis/client-support-matrix/index.html b/docs/next/apis/client-support-matrix/index.html
index 408072b24..6b853f9a6 100644
--- a/docs/next/apis/client-support-matrix/index.html
+++ b/docs/next/apis/client-support-matrix/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/apis/cpp-client/index.html b/docs/next/apis/cpp-client/index.html
index 09eb3f341..973606ea8 100644
--- a/docs/next/apis/cpp-client/index.html
+++ b/docs/next/apis/cpp-client/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/apis/java-client/index.html b/docs/next/apis/java-client/index.html
index e2c044150..60e748c18 100644
--- a/docs/next/apis/java-client/index.html
+++ b/docs/next/apis/java-client/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/apis/python-client/index.html b/docs/next/apis/python-client/index.html
index 9ff6ee12f..3b8712995 100644
--- a/docs/next/apis/python-client/index.html
+++ b/docs/next/apis/python-client/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/apis/rust-client/index.html b/docs/next/apis/rust-client/index.html
index 4980ea4c7..b4b98cf38 100644
--- a/docs/next/apis/rust-client/index.html
+++ b/docs/next/apis/rust-client/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/concepts/architecture/index.html b/docs/next/concepts/architecture/index.html
index ef57dcab6..869ce87ff 100644
--- a/docs/next/concepts/architecture/index.html
+++ b/docs/next/concepts/architecture/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/datastream/index.html b/docs/next/engine-flink/datastream/index.html
index 110b972ad..0f35076e0 100644
--- a/docs/next/engine-flink/datastream/index.html
+++ b/docs/next/engine-flink/datastream/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/ddl/index.html b/docs/next/engine-flink/ddl/index.html
index a133d9168..694d4ba03 100644
--- a/docs/next/engine-flink/ddl/index.html
+++ b/docs/next/engine-flink/ddl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/delta-joins/index.html b/docs/next/engine-flink/delta-joins/index.html
index 8c10ba813..cecad8b40 100644
--- a/docs/next/engine-flink/delta-joins/index.html
+++ b/docs/next/engine-flink/delta-joins/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/getting-started/index.html b/docs/next/engine-flink/getting-started/index.html
index 23939dba4..a27731cf6 100644
--- a/docs/next/engine-flink/getting-started/index.html
+++ b/docs/next/engine-flink/getting-started/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/lookups/index.html b/docs/next/engine-flink/lookups/index.html
index 49466140c..b9ae4134f 100644
--- a/docs/next/engine-flink/lookups/index.html
+++ b/docs/next/engine-flink/lookups/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/options/index.html b/docs/next/engine-flink/options/index.html
index f221820f5..ce12bf64f 100644
--- a/docs/next/engine-flink/options/index.html
+++ b/docs/next/engine-flink/options/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/procedures/index.html b/docs/next/engine-flink/procedures/index.html
index 0f8163afd..8e7c3cae3 100644
--- a/docs/next/engine-flink/procedures/index.html
+++ b/docs/next/engine-flink/procedures/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/reads/index.html b/docs/next/engine-flink/reads/index.html
index 6d2023ec0..2e3c115fe 100644
--- a/docs/next/engine-flink/reads/index.html
+++ b/docs/next/engine-flink/reads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-flink/writes/index.html b/docs/next/engine-flink/writes/index.html
index 193001252..1bbde3567 100644
--- a/docs/next/engine-flink/writes/index.html
+++ b/docs/next/engine-flink/writes/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-spark/ddl/index.html b/docs/next/engine-spark/ddl/index.html
index 89cf3a217..21d82d20f 100644
--- a/docs/next/engine-spark/ddl/index.html
+++ b/docs/next/engine-spark/ddl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-spark/getting-started/index.html b/docs/next/engine-spark/getting-started/index.html
index cc30ec486..c504e76fb 100644
--- a/docs/next/engine-spark/getting-started/index.html
+++ b/docs/next/engine-spark/getting-started/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-spark/options/index.html b/docs/next/engine-spark/options/index.html
index 43de347c9..7fd9e0648 100644
--- a/docs/next/engine-spark/options/index.html
+++ b/docs/next/engine-spark/options/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-spark/procedures/index.html b/docs/next/engine-spark/procedures/index.html
index a84db31f0..c2fd3476a 100644
--- a/docs/next/engine-spark/procedures/index.html
+++ b/docs/next/engine-spark/procedures/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-spark/reads/index.html b/docs/next/engine-spark/reads/index.html
index 72e7d8062..73fb7459e 100644
--- a/docs/next/engine-spark/reads/index.html
+++ b/docs/next/engine-spark/reads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-spark/structured-streaming/index.html b/docs/next/engine-spark/structured-streaming/index.html
index 936296f7a..c5cb49b0e 100644
--- a/docs/next/engine-spark/structured-streaming/index.html
+++ b/docs/next/engine-spark/structured-streaming/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/engine-spark/writes/index.html b/docs/next/engine-spark/writes/index.html
index 9c994e3e6..a5dfe16d4 100644
--- a/docs/next/engine-spark/writes/index.html
+++ b/docs/next/engine-spark/writes/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/index.html b/docs/next/index.html
index ebb02930f..e74fa1da6 100644
--- a/docs/next/index.html
+++ b/docs/next/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/install-deploy/deploying-distributed-cluster/index.html b/docs/next/install-deploy/deploying-distributed-cluster/index.html
index 30153abf4..d0786ab0e 100644
--- a/docs/next/install-deploy/deploying-distributed-cluster/index.html
+++ b/docs/next/install-deploy/deploying-distributed-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/install-deploy/deploying-local-cluster/index.html b/docs/next/install-deploy/deploying-local-cluster/index.html
index 7215eda27..fb851fa8e 100644
--- a/docs/next/install-deploy/deploying-local-cluster/index.html
+++ b/docs/next/install-deploy/deploying-local-cluster/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/install-deploy/deploying-with-docker/index.html b/docs/next/install-deploy/deploying-with-docker/index.html
index e54a9b9d8..31e77f18f 100644
--- a/docs/next/install-deploy/deploying-with-docker/index.html
+++ b/docs/next/install-deploy/deploying-with-docker/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/install-deploy/deploying-with-helm/index.html b/docs/next/install-deploy/deploying-with-helm/index.html
index 20744ab1c..ed85f4541 100644
--- a/docs/next/install-deploy/deploying-with-helm/index.html
+++ b/docs/next/install-deploy/deploying-with-helm/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/install-deploy/overview/index.html b/docs/next/install-deploy/overview/index.html
index fa8d070a6..66cd3e4ed 100644
--- a/docs/next/install-deploy/overview/index.html
+++ b/docs/next/install-deploy/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/configuration/index.html b/docs/next/maintenance/configuration/index.html
index b734f2ee4..3e1bf8230 100644
--- a/docs/next/maintenance/configuration/index.html
+++ b/docs/next/maintenance/configuration/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/filesystems/azure/index.html b/docs/next/maintenance/filesystems/azure/index.html
index 30dc8820c..eb3960ba2 100644
--- a/docs/next/maintenance/filesystems/azure/index.html
+++ b/docs/next/maintenance/filesystems/azure/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/filesystems/hdfs/index.html b/docs/next/maintenance/filesystems/hdfs/index.html
index ffd369f26..671e7a88e 100644
--- a/docs/next/maintenance/filesystems/hdfs/index.html
+++ b/docs/next/maintenance/filesystems/hdfs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/filesystems/obs/index.html b/docs/next/maintenance/filesystems/obs/index.html
index 1b76c81de..a006173b3 100644
--- a/docs/next/maintenance/filesystems/obs/index.html
+++ b/docs/next/maintenance/filesystems/obs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/filesystems/oss/index.html b/docs/next/maintenance/filesystems/oss/index.html
index d2b45e97b..a63d47418 100644
--- a/docs/next/maintenance/filesystems/oss/index.html
+++ b/docs/next/maintenance/filesystems/oss/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/filesystems/overview/index.html b/docs/next/maintenance/filesystems/overview/index.html
index 5873c5061..808c51f26 100644
--- a/docs/next/maintenance/filesystems/overview/index.html
+++ b/docs/next/maintenance/filesystems/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/filesystems/s3/index.html b/docs/next/maintenance/filesystems/s3/index.html
index c8cab83cc..9d731b936 100644
--- a/docs/next/maintenance/filesystems/s3/index.html
+++ b/docs/next/maintenance/filesystems/s3/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/observability/logging/index.html b/docs/next/maintenance/observability/logging/index.html
index 68aa5814f..eba3dffde 100644
--- a/docs/next/maintenance/observability/logging/index.html
+++ b/docs/next/maintenance/observability/logging/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/observability/metric-reporters/index.html b/docs/next/maintenance/observability/metric-reporters/index.html
index e64318095..c231ca3cd 100644
--- a/docs/next/maintenance/observability/metric-reporters/index.html
+++ b/docs/next/maintenance/observability/metric-reporters/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/observability/monitor-metrics/index.html b/docs/next/maintenance/observability/monitor-metrics/index.html
index 54d57989f..99efed86f 100644
--- a/docs/next/maintenance/observability/monitor-metrics/index.html
+++ b/docs/next/maintenance/observability/monitor-metrics/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/observability/quickstart/index.html b/docs/next/maintenance/observability/quickstart/index.html
index a70f5afaa..5ba963863 100644
--- a/docs/next/maintenance/observability/quickstart/index.html
+++ b/docs/next/maintenance/observability/quickstart/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/graceful-shutdown/index.html b/docs/next/maintenance/operations/graceful-shutdown/index.html
index 1010c401a..29110e116 100644
--- a/docs/next/maintenance/operations/graceful-shutdown/index.html
+++ b/docs/next/maintenance/operations/graceful-shutdown/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/racks/index.html b/docs/next/maintenance/operations/racks/index.html
index 808e2b6f5..5dfd13e22 100644
--- a/docs/next/maintenance/operations/racks/index.html
+++ b/docs/next/maintenance/operations/racks/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/rebalance/index.html b/docs/next/maintenance/operations/rebalance/index.html
index d65a71d5b..f0bc09161 100644
--- a/docs/next/maintenance/operations/rebalance/index.html
+++ b/docs/next/maintenance/operations/rebalance/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/updating-configs/index.html b/docs/next/maintenance/operations/updating-configs/index.html
index e96749639..6aa9208ea 100644
--- a/docs/next/maintenance/operations/updating-configs/index.html
+++ b/docs/next/maintenance/operations/updating-configs/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/upgrade-notes-0.10/index.html b/docs/next/maintenance/operations/upgrade-notes-0.10/index.html
index d7c983671..5a929d5f2 100644
--- a/docs/next/maintenance/operations/upgrade-notes-0.10/index.html
+++ b/docs/next/maintenance/operations/upgrade-notes-0.10/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/upgrade-notes-0.8/index.html b/docs/next/maintenance/operations/upgrade-notes-0.8/index.html
index 9fb3b6b18..8275340a4 100644
--- a/docs/next/maintenance/operations/upgrade-notes-0.8/index.html
+++ b/docs/next/maintenance/operations/upgrade-notes-0.8/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/upgrade-notes-0.9/index.html b/docs/next/maintenance/operations/upgrade-notes-0.9/index.html
index aa5d5ac05..1e37f7a1d 100644
--- a/docs/next/maintenance/operations/upgrade-notes-0.9/index.html
+++ b/docs/next/maintenance/operations/upgrade-notes-0.9/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/upgrade-notes-archive/index.html b/docs/next/maintenance/operations/upgrade-notes-archive/index.html
index d9ff381e2..c497b38d8 100644
--- a/docs/next/maintenance/operations/upgrade-notes-archive/index.html
+++ b/docs/next/maintenance/operations/upgrade-notes-archive/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/operations/upgrading/index.html b/docs/next/maintenance/operations/upgrading/index.html
index 7e6495ef7..8ee869ce3 100644
--- a/docs/next/maintenance/operations/upgrading/index.html
+++ b/docs/next/maintenance/operations/upgrading/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/tiered-storage/lakehouse-storage/index.html b/docs/next/maintenance/tiered-storage/lakehouse-storage/index.html
index 18f67733f..2d07c703e 100644
--- a/docs/next/maintenance/tiered-storage/lakehouse-storage/index.html
+++ b/docs/next/maintenance/tiered-storage/lakehouse-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/tiered-storage/overview/index.html b/docs/next/maintenance/tiered-storage/overview/index.html
index c723716e6..941e1d1d5 100644
--- a/docs/next/maintenance/tiered-storage/overview/index.html
+++ b/docs/next/maintenance/tiered-storage/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/maintenance/tiered-storage/remote-storage/index.html b/docs/next/maintenance/tiered-storage/remote-storage/index.html
index 5254fb707..7d880edc2 100644
--- a/docs/next/maintenance/tiered-storage/remote-storage/index.html
+++ b/docs/next/maintenance/tiered-storage/remote-storage/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/quickstart/flink/index.html b/docs/next/quickstart/flink/index.html
index 633dff229..ff4921929 100644
--- a/docs/next/quickstart/flink/index.html
+++ b/docs/next/quickstart/flink/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/quickstart/lakehouse/index.html b/docs/next/quickstart/lakehouse/index.html
index 1825952f1..52b6fe6e8 100644
--- a/docs/next/quickstart/lakehouse/index.html
+++ b/docs/next/quickstart/lakehouse/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/quickstart/security/index.html b/docs/next/quickstart/security/index.html
index 250fe5364..0caa23cbf 100644
--- a/docs/next/quickstart/security/index.html
+++ b/docs/next/quickstart/security/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/security/authentication/index.html b/docs/next/security/authentication/index.html
index 94ae586d5..2f2f749db 100644
--- a/docs/next/security/authentication/index.html
+++ b/docs/next/security/authentication/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/security/authorization/index.html b/docs/next/security/authorization/index.html
index fe25b5ed4..d903bc957 100644
--- a/docs/next/security/authorization/index.html
+++ b/docs/next/security/authorization/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/security/overview/index.html b/docs/next/security/overview/index.html
index bb12f69fa..7b833b9ad 100644
--- a/docs/next/security/overview/index.html
+++ b/docs/next/security/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/streaming-lakehouse/integrate-data-lakes/iceberg/index.html b/docs/next/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
index f097b5eff..3cc373e9a 100644
--- a/docs/next/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
+++ b/docs/next/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/streaming-lakehouse/integrate-data-lakes/lance/index.html b/docs/next/streaming-lakehouse/integrate-data-lakes/lance/index.html
index 52ed29880..82b928775 100644
--- a/docs/next/streaming-lakehouse/integrate-data-lakes/lance/index.html
+++ b/docs/next/streaming-lakehouse/integrate-data-lakes/lance/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/streaming-lakehouse/integrate-data-lakes/paimon/index.html b/docs/next/streaming-lakehouse/integrate-data-lakes/paimon/index.html
index 0f8717469..052013eff 100644
--- a/docs/next/streaming-lakehouse/integrate-data-lakes/paimon/index.html
+++ b/docs/next/streaming-lakehouse/integrate-data-lakes/paimon/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/streaming-lakehouse/overview/index.html b/docs/next/streaming-lakehouse/overview/index.html
index c7fdf7893..d4e2388b4 100644
--- a/docs/next/streaming-lakehouse/overview/index.html
+++ b/docs/next/streaming-lakehouse/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/data-distribution/bucketing/index.html b/docs/next/table-design/data-distribution/bucketing/index.html
index d91ae08fd..88b8675e2 100644
--- a/docs/next/table-design/data-distribution/bucketing/index.html
+++ b/docs/next/table-design/data-distribution/bucketing/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/data-distribution/partitioning/index.html b/docs/next/table-design/data-distribution/partitioning/index.html
index fb9ab8de0..581a4506f 100644
--- a/docs/next/table-design/data-distribution/partitioning/index.html
+++ b/docs/next/table-design/data-distribution/partitioning/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/data-distribution/ttl/index.html b/docs/next/table-design/data-distribution/ttl/index.html
index ccc8be403..18c359c50 100644
--- a/docs/next/table-design/data-distribution/ttl/index.html
+++ b/docs/next/table-design/data-distribution/ttl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/data-formats/index.html b/docs/next/table-design/data-formats/index.html
index add65f0aa..16ac228e7 100644
--- a/docs/next/table-design/data-formats/index.html
+++ b/docs/next/table-design/data-formats/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/data-types/index.html b/docs/next/table-design/data-types/index.html
index 31b6e5ecd..309d71b81 100644
--- a/docs/next/table-design/data-types/index.html
+++ b/docs/next/table-design/data-types/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/merge-engines/aggregation/index.html b/docs/next/table-design/merge-engines/aggregation/index.html
index 1aa31262f..944973b33 100644
--- a/docs/next/table-design/merge-engines/aggregation/index.html
+++ b/docs/next/table-design/merge-engines/aggregation/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/merge-engines/default/index.html b/docs/next/table-design/merge-engines/default/index.html
index 2a10866a9..e7832614a 100644
--- a/docs/next/table-design/merge-engines/default/index.html
+++ b/docs/next/table-design/merge-engines/default/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/merge-engines/first-row/index.html b/docs/next/table-design/merge-engines/first-row/index.html
index 773b50c87..14c065d20 100644
--- a/docs/next/table-design/merge-engines/first-row/index.html
+++ b/docs/next/table-design/merge-engines/first-row/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/merge-engines/index.html b/docs/next/table-design/merge-engines/index.html
index f97817171..a46839090 100644
--- a/docs/next/table-design/merge-engines/index.html
+++ b/docs/next/table-design/merge-engines/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/merge-engines/versioned/index.html b/docs/next/table-design/merge-engines/versioned/index.html
index 8965590ac..ce37cbb8a 100644
--- a/docs/next/table-design/merge-engines/versioned/index.html
+++ b/docs/next/table-design/merge-engines/versioned/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/overview/index.html b/docs/next/table-design/overview/index.html
index 14ba35a75..215059a1c 100644
--- a/docs/next/table-design/overview/index.html
+++ b/docs/next/table-design/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/table-types/log-table/index.html b/docs/next/table-design/table-types/log-table/index.html
index 24b681369..88c3b1ff2 100644
--- a/docs/next/table-design/table-types/log-table/index.html
+++ b/docs/next/table-design/table-types/log-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/table-types/pk-table/index.html b/docs/next/table-design/table-types/pk-table/index.html
index 1f004bba4..e013c1e90 100644
--- a/docs/next/table-design/table-types/pk-table/index.html
+++ b/docs/next/table-design/table-types/pk-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/next/table-design/virtual-tables/index.html b/docs/next/table-design/virtual-tables/index.html
index 8887577e2..013a27046 100644
--- a/docs/next/table-design/virtual-tables/index.html
+++ b/docs/next/table-design/virtual-tables/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/quickstart/flink/index.html b/docs/quickstart/flink/index.html
index 59280e74b..1eace0f96 100644
--- a/docs/quickstart/flink/index.html
+++ b/docs/quickstart/flink/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/quickstart/lakehouse/index.html b/docs/quickstart/lakehouse/index.html
index a8c17bcba..44379a180 100644
--- a/docs/quickstart/lakehouse/index.html
+++ b/docs/quickstart/lakehouse/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/quickstart/security/index.html b/docs/quickstart/security/index.html
index 18f08871c..697ae412f 100644
--- a/docs/quickstart/security/index.html
+++ b/docs/quickstart/security/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/security/authentication/index.html b/docs/security/authentication/index.html
index 8ce287682..5e2f931d7 100644
--- a/docs/security/authentication/index.html
+++ b/docs/security/authentication/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/security/authorization/index.html b/docs/security/authorization/index.html
index c2a7b13b4..d7d5ee55b 100644
--- a/docs/security/authorization/index.html
+++ b/docs/security/authorization/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/security/overview/index.html b/docs/security/overview/index.html
index a6eb40de8..a88f098e9 100644
--- a/docs/security/overview/index.html
+++ b/docs/security/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/streaming-lakehouse/integrate-data-lakes/iceberg/index.html b/docs/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
index c69717d03..f7eeada53 100644
--- a/docs/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
+++ b/docs/streaming-lakehouse/integrate-data-lakes/iceberg/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/streaming-lakehouse/integrate-data-lakes/lance/index.html b/docs/streaming-lakehouse/integrate-data-lakes/lance/index.html
index d2bfc2f9f..52675f5d1 100644
--- a/docs/streaming-lakehouse/integrate-data-lakes/lance/index.html
+++ b/docs/streaming-lakehouse/integrate-data-lakes/lance/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/streaming-lakehouse/integrate-data-lakes/paimon/index.html b/docs/streaming-lakehouse/integrate-data-lakes/paimon/index.html
index 3cd809c31..6e28ba418 100644
--- a/docs/streaming-lakehouse/integrate-data-lakes/paimon/index.html
+++ b/docs/streaming-lakehouse/integrate-data-lakes/paimon/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/streaming-lakehouse/overview/index.html b/docs/streaming-lakehouse/overview/index.html
index 13343bc6f..2f2a04220 100644
--- a/docs/streaming-lakehouse/overview/index.html
+++ b/docs/streaming-lakehouse/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/data-distribution/bucketing/index.html b/docs/table-design/data-distribution/bucketing/index.html
index 0a9bcc2b6..839b200e7 100644
--- a/docs/table-design/data-distribution/bucketing/index.html
+++ b/docs/table-design/data-distribution/bucketing/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/data-distribution/partitioning/index.html b/docs/table-design/data-distribution/partitioning/index.html
index 303e85eee..31a139304 100644
--- a/docs/table-design/data-distribution/partitioning/index.html
+++ b/docs/table-design/data-distribution/partitioning/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/data-distribution/ttl/index.html b/docs/table-design/data-distribution/ttl/index.html
index 250baf96a..0522c0328 100644
--- a/docs/table-design/data-distribution/ttl/index.html
+++ b/docs/table-design/data-distribution/ttl/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/data-formats/index.html b/docs/table-design/data-formats/index.html
index a65fad918..bd134da23 100644
--- a/docs/table-design/data-formats/index.html
+++ b/docs/table-design/data-formats/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/data-types/index.html b/docs/table-design/data-types/index.html
index 6af023aa6..d69de4f03 100644
--- a/docs/table-design/data-types/index.html
+++ b/docs/table-design/data-types/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/merge-engines/aggregation/index.html b/docs/table-design/merge-engines/aggregation/index.html
index 7c0d61225..d8095b021 100644
--- a/docs/table-design/merge-engines/aggregation/index.html
+++ b/docs/table-design/merge-engines/aggregation/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/merge-engines/default/index.html b/docs/table-design/merge-engines/default/index.html
index d74e78ba0..d83296ce4 100644
--- a/docs/table-design/merge-engines/default/index.html
+++ b/docs/table-design/merge-engines/default/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/merge-engines/first-row/index.html b/docs/table-design/merge-engines/first-row/index.html
index 8b48bd9a3..f2fd84be8 100644
--- a/docs/table-design/merge-engines/first-row/index.html
+++ b/docs/table-design/merge-engines/first-row/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/merge-engines/index.html b/docs/table-design/merge-engines/index.html
index bfca5c1be..2a1cf5a98 100644
--- a/docs/table-design/merge-engines/index.html
+++ b/docs/table-design/merge-engines/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/merge-engines/versioned/index.html b/docs/table-design/merge-engines/versioned/index.html
index 92826945a..4b29572df 100644
--- a/docs/table-design/merge-engines/versioned/index.html
+++ b/docs/table-design/merge-engines/versioned/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/overview/index.html b/docs/table-design/overview/index.html
index f306d54bd..7d0c3a475 100644
--- a/docs/table-design/overview/index.html
+++ b/docs/table-design/overview/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/table-types/log-table/index.html b/docs/table-design/table-types/log-table/index.html
index a5a8febd1..ab96808f5 100644
--- a/docs/table-design/table-types/log-table/index.html
+++ b/docs/table-design/table-types/log-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/table-types/pk-table/index.html b/docs/table-design/table-types/pk-table/index.html
index c750972ab..6f558c9bc 100644
--- a/docs/table-design/table-types/pk-table/index.html
+++ b/docs/table-design/table-types/pk-table/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/docs/table-design/virtual-tables/index.html b/docs/table-design/virtual-tables/index.html
index 5d817d800..85f536ac4 100644
--- a/docs/table-design/virtual-tables/index.html
+++ b/docs/table-design/virtual-tables/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/downloads/index.html b/downloads/index.html
index 2b12457c0..410f183d7 100644
--- a/downloads/index.html
+++ b/downloads/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/img/avatars/yangwang.jpeg b/img/avatars/yangwang.jpeg
new file mode 100644
index 000000000..28bacdb34
Binary files /dev/null and b/img/avatars/yangwang.jpeg differ
diff --git a/index.html b/index.html
index 516d7219c..bc2f6a578 100644
--- a/index.html
+++ b/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/learn/talks/index.html b/learn/talks/index.html
index 6773aa9b9..baed9c56e 100644
--- a/learn/talks/index.html
+++ b/learn/talks/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/learn/videos/index.html b/learn/videos/index.html
index a19bd2600..474f7b043 100644
--- a/learn/videos/index.html
+++ b/learn/videos/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/roadmap/index.html b/roadmap/index.html
index 4fd5f13ca..642865bd5 100644
--- a/roadmap/index.html
+++ b/roadmap/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/search/index.html b/search/index.html
index 0147a592b..64dfa0a4d 100644
--- a/search/index.html
+++ b/search/index.html
@@ -15,8 +15,8 @@
 <link rel="icon" href="/img/logo.svg">
 <link rel="manifest" href="/manifest.json">
 <meta name="theme-color" content="#0071e3"><link rel="stylesheet" href="/assets/css/styles.ac3876d3.css">
-<script src="/assets/js/runtime~main.21c219fa.js" defer="defer"></script>
-<script src="/assets/js/main.f942df26.js" defer="defer"></script>
+<script src="/assets/js/runtime~main.10b2c66d.js" defer="defer"></script>
+<script src="/assets/js/main.16a8eb46.js" defer="defer"></script>
 </head>
 <body>
 <svg style="display: none;"><defs>
diff --git a/sitemap.xml b/sitemap.xml
index f13016598..215ff73c5 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://fluss.apache.org/blog/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://fluss.apache.org/blog/2025/12/02/fluss-x-i [...]
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://fluss.apache.org/blog/</loc><changefreq>weekly</changefreq><priority>0.5</priority></url><url><loc>https://fluss.apache.org/blog/2025/12/02/fluss-x-i [...]
\ No newline at end of file
diff --git a/sw.js b/sw.js
index 5c2c0b936..ba1981b6a 100644
--- a/sw.js
+++ b/sw.js
@@ -4568,7 +4568,7 @@ function getPossibleURLs(url) {
 (async () => {
     const params = parseSwParams();
     // eslint-disable-next-line no-underscore-dangle
-    const precacheManifest = [{"revision":"6e11d3a273ce639b6ce5c9eaa7629881","url":"manifest.json"},{"revision":"6362bef0754acb75fc21aab3cf417e86","url":"index.html"},{"revision":"e7181d968b65b1bac36dbf7d9b38a207","url":"404.html"},{"revision":"6b1d9719271ef37c629ae0bb8aa6a101","url":"search/index.html"},{"revision":"3f883136529e25a0a63f9a050d1ffd42","url":"roadmap/index.html"},{"revision":"8201e11a47780ff3bc2695e34a59e5f1","url":"learn/videos/index.html"},{"revision":"85fed8ee784817fb7d [...]
+    const precacheManifest = [{"revision":"6e11d3a273ce639b6ce5c9eaa7629881","url":"manifest.json"},{"revision":"49c1178781e5bdc59c478dafe5bb70a8","url":"index.html"},{"revision":"ec0764197414daf67a537a0cf46172a0","url":"404.html"},{"revision":"a8dfd2841eb3028a924834ce1b6f7413","url":"search/index.html"},{"revision":"52130c09b2b72acaf1f37e32f67fae54","url":"roadmap/index.html"},{"revision":"510ee0cb20ac4b3942f4153db18c56f0","url":"learn/videos/index.html"},{"revision":"8e086159b74f6cec24 [...]
     const controller = new workbox_precaching__WEBPACK_IMPORTED_MODULE_0__.PrecacheController({
         // Safer to turn this true?
         fallbackToNetwork: true,