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

lincoln pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/master by this push:
     new 072b7d3a129 [FLINK-39188][docs] Documentation for BITMAP type
072b7d3a129 is described below

commit 072b7d3a12927480a881fe1b4e6d33d4e6cb3650
Author: dylanhz <[email protected]>
AuthorDate: Fri Mar 27 11:24:40 2026 +0800

    [FLINK-39188][docs] Documentation for BITMAP type
    
    This closes #27835.
---
 .../docs/sql/functions/built-in-functions.md       |  6 ++
 docs/content.zh/docs/sql/reference/data-types.md   | 88 +++++++++++++++------
 .../docs/sql/functions/built-in-functions.md       |  6 ++
 docs/content/docs/sql/reference/data-types.md      | 90 ++++++++++++++++------
 4 files changed, 142 insertions(+), 48 deletions(-)

diff --git a/docs/content.zh/docs/sql/functions/built-in-functions.md 
b/docs/content.zh/docs/sql/functions/built-in-functions.md
index f931534ce6e..4aaf786e860 100644
--- a/docs/content.zh/docs/sql/functions/built-in-functions.md
+++ b/docs/content.zh/docs/sql/functions/built-in-functions.md
@@ -124,6 +124,12 @@ JSON 函数使用符合 ISO/IEC TR 19075-6 SQL标准的 JSON 路径表达式。
 
 ### 位图聚合函数
 
+**性能建议:**
+
+- 强烈建议开启 [MiniBatch 聚合]({{< ref "docs/dev/table/tuning" >}})或在[窗口聚合]({{< ref 
"docs/sql/reference/queries/window-agg" >}})中使用位图聚合函数,以优化状态访问开销、显著提升性能。
+- 位图聚合函数在处理仅追加(Append-Only)输入时性能最佳。处理回撤(Retraction)输入时性能会明显下降,因此应尽量避免对 BITMAP 
列进行多级 GROUP BY 聚合。
+- 在仅需要基数统计而不需要中间位图的场景中,建议使用 `BITMAP_XX_CARDINALITY_AGG()` 替代 
`BITMAP_CARDINALITY(BITMAP_XX_AGG())`。两者功能一致,但前者避免了中间位图的物化,性能更优。
+
 {{< sql_functions_zh "bitmapagg" >}}
 
 时间间隔单位和时间点单位标识符
diff --git a/docs/content.zh/docs/sql/reference/data-types.md 
b/docs/content.zh/docs/sql/reference/data-types.md
index c0566b13e54..1cbc6f8bae6 100644
--- a/docs/content.zh/docs/sql/reference/data-types.md
+++ b/docs/content.zh/docs/sql/reference/data-types.md
@@ -210,6 +210,7 @@ The default planner supports the following set of SQL types:
 | `RAW`            |                                                    |
 | Structured types | Only exposed in user-defined functions yet.        |
 | `VARIANT`        |                                                    |
+| `BITMAP`         |                                                    |
 
 
 ### Character Strings
@@ -1544,6 +1545,43 @@ DataTypes.VARIANT()
 {{< /tabs >}}
 
 
+#### `BITMAP`
+
+用于以压缩形式存储 32 位整数的位图数据类型,基于 [RoaringBitmap](https://roaringbitmap.org/) 实现。
+
+位图类型适用于高效地表示和查询大量整数集合。它支持多种内置的[标量函数]({{< ref 
"docs/sql/functions/built-in-functions" >}}#位图函数)和[聚合函数]({{< ref 
"docs/sql/functions/built-in-functions" >}}#位图聚合函数)。
+
+位图类型是对 SQL 标准的扩展。
+
+**声明**
+
+{{< tabs "0b9a98af-2e8d-4839-ba3a-964fa2ec0b97" >}}
+{{< tab "SQL" >}}
+```text
+BITMAP
+```
+
+位图类型可以通过 `BITMAP_BUILD` 函数从 `ARRAY<INT>` 创建。例如:
+
+```sql
+SELECT BITMAP_BUILD(ARRAY[1, 2, 3, 4, 5])
+```
+
+{{< /tab >}}
+{{< tab "Java/Scala" >}}
+```java
+DataTypes.BITMAP()
+```
+
+**桥接到 JVM 类型**
+
+| Java 类型                                      | 输入 | 输出 | 备注       |
+|:-----------------------------------------------|:----:|:----:|:----------|
+| `org.apache.flink.types.bitmap.Bitmap`         |  X   |  X   | *默认*     |
+
+{{< /tab >}}
+{{< /tabs >}}
+
 #### `RAW`
 
 Data type of an arbitrary serialized type. This type is a black box within the 
table ecosystem
@@ -1668,30 +1706,31 @@ COALESCE(TRY_CAST('non-number' AS INT), 0) --- 结果返回数字 0 
的 INT 格
 
 下表展示了各个类型的转换程度,"Y" 表示支持,"!" 表示转换可能会失败,"N" 表示不支持:
 
-| Input\Target                           | 
`CHAR`¹/<br/>`VARCHAR`¹/<br/>`STRING` | 
`BINARY`¹/<br/>`VARBINARY`¹/<br/>`BYTES` | `BOOLEAN` | `DECIMAL` | `TINYINT` | 
`SMALLINT` | `INTEGER` | `BIGINT` | `FLOAT` | `DOUBLE` | `DATE` | `TIME` | 
`TIMESTAMP` | `TIMESTAMP_LTZ` | `INTERVAL` | `ARRAY` | `MULTISET` | `MAP` | 
`ROW` | `STRUCTURED` | `RAW` | `VARIANT` |
-|:---------------------------------------|:-------------------------------------:|:----------------------------------------:|:---------:|:---------:|:---------:|:----------:|:---------:|:--------:|:-------:|:--------:|:------:|:------:|:-----------:|:---------------:|:----------:|:-------:|:----------:|:-----:|:-----:|:------------:|:-----:|:---------:|
-| `CHAR`/<br/>`VARCHAR`/<br/>`STRING`    |                   Y                 
  |                    !                     |     !     |     !     |     !    
 |     !      |     !     |    !     |    !    |    !     |   !    |   !    |   
   !      |        !        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `BINARY`/<br/>`VARBINARY`/<br/>`BYTES` |                   Y                 
  |                    Y                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `BOOLEAN`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `DECIMAL`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `TINYINT`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `SMALLINT`                             |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `INTEGER`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     Y⁵     |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `BIGINT`                               |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     Y⁶     |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `FLOAT`                                |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `DOUBLE`                               |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `DATE`                                 |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   N    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `TIME`                                 |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `TIMESTAMP`                            |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `TIMESTAMP_LTZ`                        |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `INTERVAL`                             |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |    Y⁵     |    Y⁶    |    N    |    N     |   N    |   N    |   
   N      |        N        |     Y      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `ARRAY`                                |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |   !³    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `MULTISET`                             |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     !³     |   N   |   N   
|      N       |   N   |     N     |
-| `MAP`                                  |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |  !³   |   N   
|      N       |   N   |     N     |
-| `ROW`                                  |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |  !³   
|      N       |   N   |     N     |
-| `STRUCTURED`                           |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      !³      |   N   |     N     |
-| `RAW`                                  |                   Y                 
  |                    !                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |  Y⁴   |     N     |
-| `VARIANT`                              |                   N                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
+| Input\Target                           | 
`CHAR`¹/<br/>`VARCHAR`¹/<br/>`STRING` | 
`BINARY`¹/<br/>`VARBINARY`¹/<br/>`BYTES` | `BOOLEAN` | `DECIMAL` | `TINYINT` | 
`SMALLINT` | `INTEGER` | `BIGINT` | `FLOAT` | `DOUBLE` | `DATE` | `TIME` | 
`TIMESTAMP` | `TIMESTAMP_LTZ` | `INTERVAL` | `ARRAY` | `MULTISET` | `MAP` | 
`ROW` | `STRUCTURED` | `RAW` | `VARIANT` | `BITMAP` |
+|:---------------------------------------|:-------------------------------------:|:----------------------------------------:|:---------:|:---------:|:---------:|:----------:|:---------:|:--------:|:-------:|:--------:|:------:|:------:|:-----------:|:---------------:|:----------:|:-------:|:----------:|:-----:|:-----:|:------------:|:-----:|:---------:|:--------:|
+| `CHAR`/<br/>`VARCHAR`/<br/>`STRING`    |                   Y                 
  |                    !                     |     !     |     !     |     !    
 |     !      |     !     |    !     |    !    |    !     |   !    |   !    |   
   !      |        !        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `BINARY`/<br/>`VARBINARY`/<br/>`BYTES` |                   Y                 
  |                    Y                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `BOOLEAN`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `DECIMAL`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `TINYINT`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `SMALLINT`                             |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `INTEGER`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     Y⁵     |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `BIGINT`                               |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     Y⁶     |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `FLOAT`                                |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `DOUBLE`                               |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `DATE`                                 |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   N    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `TIME`                                 |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `TIMESTAMP`                            |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `TIMESTAMP_LTZ`                        |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `INTERVAL`                             |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |    Y⁵     |    Y⁶    |    N    |    N     |   N    |   N    |   
   N      |        N        |     Y      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `ARRAY`                                |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |   !³    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `MULTISET`                             |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     !³     |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `MAP`                                  |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |  !³   |   N   
|      N       |   N   |     N     |    N     |
+| `ROW`                                  |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |  !³   
|      N       |   N   |     N     |    N     |
+| `STRUCTURED`                           |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      !³      |   N   |     N     |    N     |
+| `RAW`                                  |                   Y                 
  |                    !                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |  Y⁴   |     N     |    N     |
+| `VARIANT`                              |                   N                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `BITMAP`                               |                   Y                 
  |                   Y⁷                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
 
 备注:
 
@@ -1701,6 +1740,7 @@ COALESCE(TRY_CAST('non-number' AS INT), 0) --- 结果返回数字 0 的 
INT 格
 4. 支持转换,当且仅当用使用 `RAW` 的类和类的序列化器一样。
 5. 支持转换,当且仅当用使用 `INTERVAL` 做“月”到“年”的转换。
 6. 支持转换,当且仅当用使用 `INTERVAL` 做“天”到“时间”的转换。
+7. 仅支持转换到无界的 `VARBINARY`(`BYTES`),因为裁剪或填充会破坏序列化的位图数据。
 
 请注意:无论是 `CAST` 还是 `TRY_CAST`,当输入为 `NULL` ,输出也为 `NULL`。
 
diff --git a/docs/content/docs/sql/functions/built-in-functions.md 
b/docs/content/docs/sql/functions/built-in-functions.md
index 3ba23b32f33..42808103674 100644
--- a/docs/content/docs/sql/functions/built-in-functions.md
+++ b/docs/content/docs/sql/functions/built-in-functions.md
@@ -127,6 +127,12 @@ The aggregate functions take an expression across all the 
rows as the input and
 
 ### Bitmap Aggregate Functions
 
+**Performance Tips:**
+
+- It is strongly recommended to enable [MiniBatch aggregation]({{< ref 
"docs/dev/table/tuning" >}}) or use bitmap aggregate functions within [window 
aggregations]({{< ref "docs/sql/reference/queries/window-agg" >}}) to optimize 
state access overhead and significantly improve performance.
+- Bitmap aggregate functions perform best with append-only input. Performance 
degrades noticeably with retraction input, so avoid multi-level GROUP BY 
aggregations on BITMAP columns when possible.
+- For cardinality-only scenarios where the intermediate bitmap is not needed, 
prefer `BITMAP_XX_CARDINALITY_AGG()` over 
`BITMAP_CARDINALITY(BITMAP_XX_AGG())`. They are functionally equivalent, but 
the former avoids materializing the intermediate bitmap and performs better.
+
 {{< sql_functions "bitmapagg" >}}
 
 Time Interval and Point Unit Specifiers
diff --git a/docs/content/docs/sql/reference/data-types.md 
b/docs/content/docs/sql/reference/data-types.md
index 56d96e915a6..a849ee5dac8 100644
--- a/docs/content/docs/sql/reference/data-types.md
+++ b/docs/content/docs/sql/reference/data-types.md
@@ -218,6 +218,7 @@ The default planner supports the following set of SQL types:
 | `RAW`            |                                                    |
 | Structured types | Only exposed in user-defined functions yet.        |
 | `VARIANT`        |                                                    |
+| `BITMAP`         |                                                    |
 
 ### Character Strings
 
@@ -1551,6 +1552,45 @@ DataTypes.VARIANT()
 {{< /tab >}}
 {{< /tabs >}}
 
+#### `BITMAP`
+
+Data type of bitmap data that stores 32-bit integers in a compressed form 
using [RoaringBitmap](https://roaringbitmap.org/).
+
+The bitmap type is useful for efficiently representing and querying large sets 
of integers. It supports
+a variety of built-in [scalar functions]({{< ref 
"docs/sql/functions/built-in-functions" >}}#bitmap-functions) and
+[aggregate functions]({{< ref "docs/sql/functions/built-in-functions" 
>}}#bitmap-aggregate-functions).
+
+The bitmap type is an extension to the SQL standard.
+
+**Declaration**
+
+{{< tabs "c8a3f1e2-7d5b-4a9e-b6c0-1e2f3a4b5c6d" >}}
+{{< tab "SQL" >}}
+```text
+BITMAP
+```
+
+Bitmap type can be created from an `ARRAY<INT>` using the `BITMAP_BUILD` 
function. For example:
+
+```sql
+SELECT BITMAP_BUILD(ARRAY[1, 2, 3, 4, 5])
+```
+
+{{< /tab >}}
+{{< tab "Java/Scala" >}}
+```java
+DataTypes.BITMAP()
+```
+
+**Bridging to JVM Types**
+
+| Java Type                                      | Input | Output | Remarks   |
+|:-----------------------------------------------|:-----:|:------:|:----------|
+| `org.apache.flink.types.bitmap.Bitmap`         |   X   |   X    | *Default* |
+
+{{< /tab >}}
+{{< /tabs >}}
+
 #### `RAW`
 
 Data type of an arbitrary serialized type. This type is a black box within the 
table ecosystem
@@ -1675,30 +1715,31 @@ COALESCE(TRY_CAST('non-number' AS INT), 0) --- returns 
0 of type INT NOT NULL
 
 The matrix below describes the supported cast pairs, where "Y" means 
supported, "!" means fallible, "N" means unsupported:
 
-| Input\Target                           | 
`CHAR`¹/<br/>`VARCHAR`¹/<br/>`STRING` | 
`BINARY`¹/<br/>`VARBINARY`¹/<br/>`BYTES` | `BOOLEAN` | `DECIMAL` | `TINYINT` | 
`SMALLINT` | `INTEGER` | `BIGINT` | `FLOAT` | `DOUBLE` | `DATE` | `TIME` | 
`TIMESTAMP` | `TIMESTAMP_LTZ` | `INTERVAL` | `ARRAY` | `MULTISET` | `MAP` | 
`ROW` | `STRUCTURED` | `RAW` | `VARIANT` |
-|:---------------------------------------|:-------------------------------------:|:----------------------------------------:|:---------:|:---------:|:---------:|:----------:|:---------:|:--------:|:-------:|:--------:|:------:|:------:|:-----------:|:---------------:|:----------:|:-------:|:----------:|:-----:|:-----:|:------------:|:-----:|:---------:|
-| `CHAR`/<br/>`VARCHAR`/<br/>`STRING`    |                   Y                 
  |                    !                     |     !     |     !     |     !    
 |     !      |     !     |    !     |    !    |    !     |   !    |   !    |   
   !      |        !        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `BINARY`/<br/>`VARBINARY`/<br/>`BYTES` |                   Y                 
  |                    Y                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `BOOLEAN`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `DECIMAL`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `TINYINT`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `SMALLINT`                             |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `INTEGER`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     Y⁵     |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `BIGINT`                               |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     Y⁶     |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `FLOAT`                                |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `DOUBLE`                               |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `DATE`                                 |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   N    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `TIME`                                 |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `TIMESTAMP`                            |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `TIMESTAMP_LTZ`                        |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `INTERVAL`                             |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |    Y⁵     |    Y⁶    |    N    |    N     |   N    |   N    |   
   N      |        N        |     Y      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `ARRAY`                                |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |   !³    |     N      |   N   |   N   
|      N       |   N   |     N     |
-| `MULTISET`                             |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     !³     |   N   |   N   
|      N       |   N   |     N     |
-| `MAP`                                  |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |  !³   |   N   
|      N       |   N   |     N     |
-| `ROW`                                  |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |  !³   
|      N       |   N   |     N     |
-| `STRUCTURED`                           |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      !³      |   N   |     N     |
-| `RAW`                                  |                   Y                 
  |                    !                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |  Y⁴   |     N     |
-| `VARIANT`                              |                   N                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |
+| Input\Target                           | 
`CHAR`¹/<br/>`VARCHAR`¹/<br/>`STRING` | 
`BINARY`¹/<br/>`VARBINARY`¹/<br/>`BYTES` | `BOOLEAN` | `DECIMAL` | `TINYINT` | 
`SMALLINT` | `INTEGER` | `BIGINT` | `FLOAT` | `DOUBLE` | `DATE` | `TIME` | 
`TIMESTAMP` | `TIMESTAMP_LTZ` | `INTERVAL` | `ARRAY` | `MULTISET` | `MAP` | 
`ROW` | `STRUCTURED` | `RAW` | `VARIANT` | `BITMAP` |
+|:---------------------------------------|:-------------------------------------:|:----------------------------------------:|:---------:|:---------:|:---------:|:----------:|:---------:|:--------:|:-------:|:--------:|:------:|:------:|:-----------:|:---------------:|:----------:|:-------:|:----------:|:-----:|:-----:|:------------:|:-----:|:---------:|:--------:|
+| `CHAR`/<br/>`VARCHAR`/<br/>`STRING`    |                   Y                 
  |                    !                     |     !     |     !     |     !    
 |     !      |     !     |    !     |    !    |    !     |   !    |   !    |   
   !      |        !        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `BINARY`/<br/>`VARBINARY`/<br/>`BYTES` |                   Y                 
  |                    Y                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `BOOLEAN`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `DECIMAL`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `TINYINT`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `SMALLINT`                             |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `INTEGER`                              |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     Y⁵     |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `BIGINT`                               |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
  N²      |       N²        |     Y⁶     |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `FLOAT`                                |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `DOUBLE`                               |                   Y                 
  |                    N                     |     Y     |     Y     |     Y    
 |     Y      |     Y     |    Y     |    Y    |    Y     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `DATE`                                 |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   N    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `TIME`                                 |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `TIMESTAMP`                            |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `TIMESTAMP_LTZ`                        |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   Y    |   Y    |   
   Y      |        Y        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `INTERVAL`                             |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |    Y⁵     |    Y⁶    |    N    |    N     |   N    |   N    |   
   N      |        N        |     Y      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `ARRAY`                                |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |   !³    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `MULTISET`                             |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     !³     |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `MAP`                                  |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |  !³   |   N   
|      N       |   N   |     N     |    N     |
+| `ROW`                                  |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |  !³   
|      N       |   N   |     N     |    N     |
+| `STRUCTURED`                           |                   Y                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      !³      |   N   |     N     |    N     |
+| `RAW`                                  |                   Y                 
  |                    !                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |  Y⁴   |     N     |    N     |
+| `VARIANT`                              |                   N                 
  |                    N                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
+| `BITMAP`                               |                   Y                 
  |                   Y⁷                     |     N     |     N     |     N    
 |     N      |     N     |    N     |    N    |    N     |   N    |   N    |   
   N      |        N        |     N      |    N    |     N      |   N   |   N   
|      N       |   N   |     N     |    N     |
 
 Notes:
 
@@ -1708,6 +1749,7 @@ Notes:
 4. Supported iff the `RAW` class and serializer are equals.
 5. Supported iff `INTERVAL` is a `MONTH TO YEAR` range.
 6. Supported iff `INTERVAL` is a `DAY TO TIME` range.
+7. Supported only for unbounded `VARBINARY` (`BYTES`), because trimming or 
padding would corrupt the serialized bitmap data.
 
 Also note that a cast of a `NULL` value will always return `NULL`, 
 regardless of whether the function used is `CAST` or `TRY_CAST`.


Reply via email to