This is an automated email from the ASF dual-hosted git repository.
Gabriel39 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push:
new c99440a8a81 [docs](lakehouse) Add catalog type mapping subpages
aligned with Doris 4.2 (#4410)
c99440a8a81 is described below
commit c99440a8a81df085187550e7ad664d6cb321631f
Author: Gabriel <[email protected]>
AuthorDate: Tue Oct 20 14:16:01 2026 +0800
[docs](lakehouse) Add catalog type mapping subpages aligned with Doris 4.2
(#4410)
## Summary
The catalog pages already contain type mapping tables, but several
entries lag behind Doris `branch-4.2`, and the tables are embedded in
long catalog guides. Add a **Doris Data Type Mapping** child page under
each Iceberg, Paimon, Lance, and Hive Catalog, with English and Chinese
versions for dev and 4.x. Keep the existing catalog URLs and
mapping-section anchors as links to the new references.
Mappings were checked against Apache Doris `branch-4.2` at
`bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549`, with pinned implementation
links on each page:
- Iceberg: native UUID, unzoned nanosecond timestamps, Variant, and
unsupported TIME/zoned nanosecond timestamps.
- Paimon: bounded CHAR/VARCHAR, binary lengths, nanosecond timestamp
preservation, and the Variant read prerequisite.
- Hive: explicit timestamp precision, recursive mappings, and
unsupported union types.
- Lance: native string naming, timestamp precision, decimal constraints,
extensions, and unsupported-field behavior.
The references distinguish read mappings from write capabilities and
identify the 4.2 scope. Existing 3.x documentation is not changed
because these mappings were verified against 4.2.
## Validation and self-review
- Docusaurus MD/MDX compilation passed for all 34 changed documents.
- Verified all eight catalog navigation placements, preservation of
every existing catalog heading anchor, and type-table consistency across
all 16 new version/language pages.
- `git diff --check` passed; reviewed the complete diff and checked
added content for sensitive information.
- The CI link checker (`python3 scripts/check_md_links_single.py <file>
--no-external`) passes for all 34 changed documents. Dev Lance
references explicitly link to the existing 4.x guide in both languages.
The separate anchor-aware governance report still identifies two
pre-existing Hive `#configure-catalog` references.
- Language/version sync has one existing-layout exception: the full
Lance Catalog overview only exists in 4.x. The new mapping pages exist
in both dev and 4.x; dev gets a Lance Catalog navigation group and links
from its existing Lance file-format page.
- Scope and information architecture reviewed: focused
documentation/navigation changes, stable existing URLs and anchors,
synchronized English/Chinese content. No frontend runtime, styling, or
build-script changes; no additional correctness or usability issues
found. Full site builds and Doris runtime tests were not run for this
documentation-only change.
## Versions
- [x] dev
- [x] 4.x
- [ ] 3.x
- [ ] 2.1 or older (not covered by version/language sync gate)
## Languages
- [x] Chinese
- [x] English
## Docs Checklist
- [x] Checked by AI
- [ ] Test Cases Built
- [x] Updated required version and language counterparts, or explained
why not
- [x] If only one language changed, confirmed whether source/translation
counterparts need sync
---
docs/lakehouse/catalogs/hive-catalog.mdx | 25 +-------
.../catalogs/hive-catalog/doris-type-mapping.md | 39 ++++++++++++
docs/lakehouse/catalogs/iceberg-catalog.mdx | 30 +--------
.../catalogs/iceberg-catalog/doris-type-mapping.md | 45 +++++++++++++
.../catalogs/lance-catalog/doris-type-mapping.md | 73 ++++++++++++++++++++++
docs/lakehouse/catalogs/paimon-catalog.mdx | 29 +--------
.../catalogs/paimon-catalog/doris-type-mapping.md | 42 +++++++++++++
docs/lakehouse/file-formats/lance.md | 6 ++
.../current/lakehouse/catalogs/hive-catalog.mdx | 24 +------
.../catalogs/hive-catalog/doris-type-mapping.md | 39 ++++++++++++
.../current/lakehouse/catalogs/iceberg-catalog.mdx | 30 +--------
.../catalogs/iceberg-catalog/doris-type-mapping.md | 45 +++++++++++++
.../catalogs/lance-catalog/doris-type-mapping.md | 73 ++++++++++++++++++++++
.../current/lakehouse/catalogs/paimon-catalog.mdx | 29 +--------
.../catalogs/paimon-catalog/doris-type-mapping.md | 42 +++++++++++++
.../current/lakehouse/file-formats/lance.md | 7 ++-
.../lakehouse/catalogs/hive-catalog.mdx | 22 +------
.../catalogs/hive-catalog/doris-type-mapping.md | 39 ++++++++++++
.../lakehouse/catalogs/iceberg-catalog.mdx | 28 +--------
.../catalogs/iceberg-catalog/doris-type-mapping.md | 45 +++++++++++++
.../lakehouse/catalogs/lance-catalog.mdx | 58 +----------------
.../catalogs/lance-catalog/doris-type-mapping.md | 73 ++++++++++++++++++++++
.../lakehouse/catalogs/paimon-catalog.mdx | 29 +--------
.../catalogs/paimon-catalog/doris-type-mapping.md | 42 +++++++++++++
.../version-4.x/lakehouse/file-formats/lance.md | 2 +
sidebars.ts | 14 ++++-
.../lakehouse/catalogs/hive-catalog.mdx | 23 +------
.../catalogs/hive-catalog/doris-type-mapping.md | 39 ++++++++++++
.../lakehouse/catalogs/iceberg-catalog.mdx | 28 +--------
.../catalogs/iceberg-catalog/doris-type-mapping.md | 45 +++++++++++++
.../lakehouse/catalogs/lance-catalog.mdx | 58 +----------------
.../catalogs/lance-catalog/doris-type-mapping.md | 73 ++++++++++++++++++++++
.../lakehouse/catalogs/paimon-catalog.mdx | 29 +--------
.../catalogs/paimon-catalog/doris-type-mapping.md | 42 +++++++++++++
.../version-4.x/lakehouse/file-formats/lance.md | 2 +
versioned_sidebars/version-4.x-sidebars.json | 26 +++++++-
36 files changed, 864 insertions(+), 431 deletions(-)
diff --git a/docs/lakehouse/catalogs/hive-catalog.mdx
b/docs/lakehouse/catalogs/hive-catalog.mdx
index 2b9459da041..af3286d2137 100644
--- a/docs/lakehouse/catalogs/hive-catalog.mdx
+++ b/docs/lakehouse/catalogs/hive-catalog.mdx
@@ -89,7 +89,7 @@ Starting from Doris 4.1.x, Hive Catalog's external metadata
cache is configured
### Cache Property Configuration {#meta-cache-unified-model}
-Each cache entry uses a unified configuration key format:
`meta.cache.<engine>.<entry>.{enable,ttl-second,capacity,max-weight}`. For Hive
the `<engine>` is `hive`. A Hive Metastore Catalog that contains Iceberg tables
also uses the `iceberg` entries described in [Iceberg
Catalog](./iceberg-catalog#meta-cache).
+Each cache entry uses a unified configuration key format:
`meta.cache.<engine>.<entry>.{enable,ttl-second,capacity,max-weight}`. For Hive
the `<engine>` is `hive`. A Hive Metastore Catalog that contains Iceberg tables
also uses the `iceberg` entries described in [Iceberg
Catalog](./iceberg-catalog.mdx#meta-cache).
| Property | Example | Meaning |
|---|---|---|
@@ -263,28 +263,7 @@ The same property is accepted by file table-valued
functions that read Parquet f
## Column Type Mapping
-| Hive Type | Doris Type | Comment
|
-| ------------- | ------------- |
---------------------------------------------- |
-| boolean | boolean |
|
-| tinyint | tinyint |
|
-| smallint | smallint |
|
-| int | int |
|
-| bigint | bigint |
|
-| date | date |
|
-| timestamp | datetime(6) | Mapped to datetime with precision 6
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) | Defaults to decimal(9, 0) if precision not
specified |
-| char(N) | char(N) |
|
-| varchar(N) | varchar(N) |
|
-| string | string |
|
-| binary | VARBINARY | Since 4.1.5, this type always maps to `VARBINARY`. The
`enable.mapping.varbinary` property is retained for compatibility; setting it
to `false` no longer restores the `STRING` mapping. Earlier versions allow the
property to select the legacy mapping. |
-| timestamp with local time zone | TIMESTAMPTZ | Since 4.1.5, this type always
maps to `TIMESTAMPTZ`. The `enable.mapping.timestamp_tz` property is retained
for compatibility; setting it to `false` no longer restores the `DATETIME`
mapping. Precision is capped at 6, so higher precision is lost. Earlier
versions allow the property to select the legacy mapping. |
-| array | array |
|
-| map | map |
|
-| struct | struct |
|
-| other | unsupported |
|
-
+See [Hive to Doris Data Type Mapping](hive-catalog/doris-type-mapping.md) for
the complete Doris 4.2 mapping table, precision rules, and unsupported types.
## Examples
### Hive Metastore
diff --git a/docs/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
b/docs/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..baaf40f2f85
--- /dev/null
+++ b/docs/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
@@ -0,0 +1,39 @@
+---
+{
+ "title": "Hive to Doris Data Type Mapping",
+ "sidebar_label": "Doris Data Type Mapping",
+ "description": "Doris 4.2 Hive type mapping reference covering data types,
precision, nested types, and unsupported types."
+}
+---
+
+The following table describes how Doris 4.2 (`branch-4.2`) maps Hive
external-table schemas when reading. Writes also depend on the target schema
and supported write operations; the read mapping is not an automatic inverse
mapping for writes.
+
+| Hive Type | Doris Type | Comment
|
+| ------------- | ------------- |
---------------------------------------------- |
+| boolean | boolean |
|
+| tinyint | tinyint |
|
+| smallint | smallint |
|
+| int | int |
|
+| bigint | bigint |
|
+| date | date |
|
+| timestamp | datetime(6) | Mapped to datetime with precision 6
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) | Defaults to decimal(9, 0) if precision not
specified |
+| char(N) | char(N) |
|
+| varchar(N) | varchar(N) |
|
+| string | string |
|
+| binary | VARBINARY | Since 4.1.5, this type always maps to `VARBINARY`. |
+| timestamp with local time zone | TIMESTAMPTZ(6) | Since 4.1.5, this type
always maps to `TIMESTAMPTZ(6)`. Precision is capped at 6, so higher precision
is lost. |
+| array | array |
|
+| map | map |
|
+| struct | struct |
|
+| other | unsupported |
|
+
+## Usage Notes
+
+Child fields of complex types use the same mappings recursively. `TIMESTAMPTZ`
represents an instant displayed in the session `time_zone`.
+
+Hive Catalog derives schemas from Hive Metastore type strings. `timestamp`
maps to `DATETIME(6)`; nanosecond data in the underlying file does not
automatically change the mapping to `TIMESTAMP_NS`. Types not listed as
supported, including `uniontype`, are unsupported.
+
+Implementation reference:
[HiveMetaStoreClientHelper.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreClientHelper.java)
(`branch-4.2`).
diff --git a/docs/lakehouse/catalogs/iceberg-catalog.mdx
b/docs/lakehouse/catalogs/iceberg-catalog.mdx
index 1f861c6dcaf..dbf717bcbf6 100644
--- a/docs/lakehouse/catalogs/iceberg-catalog.mdx
+++ b/docs/lakehouse/catalogs/iceberg-catalog.mdx
@@ -248,35 +248,7 @@ Since version 4.1.4, the Iceberg identity partition
metadata is delivered with e
## Column Type Mapping
-| Iceberg Type | Doris Type | Comment
|
-| -------------------------------------- | -------------------- |
--------------------------------------- |
-| boolean | boolean |
|
-| integer | int |
|
-| long | bigint |
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) |
|
-| date | date |
|
-| timestamp (Timestamp without timezone) | datetime(6) | Mapped to
datetime with precision 6 |
-| timestamptz (Timestamp with timezone) | TIMESTAMPTZ(6) | Since 4.1.5, this
type always maps to `TIMESTAMPTZ(6)`. The `enable.mapping.timestamp_tz`
property is retained for compatibility; setting it to `false` no longer
restores the `DATETIME` mapping. Precision is capped at 6, so higher precision
is lost. Earlier versions allow the property to select the legacy mapping. |
-| fixed(N) | VARBINARY(N) | Since 4.1.5, the fixed binary width is preserved. |
-| string | string |
|
-| binary | VARBINARY | Since 4.1.5, this type always maps to `VARBINARY`. The
`enable.mapping.varbinary` property is retained for compatibility; setting it
to `false` no longer restores the `STRING` mapping. Earlier versions allow the
property to select the legacy mapping. |
-| uuid | UUID | The dev version maps Iceberg UUID directly to native Doris
`UUID`, independently of `enable.mapping.varbinary`. Doris 4.1.5 maps it to
`VARBINARY(16)`. |
-| struct | struct (supported from version
2.1.3) | |
-| map | map (supported from version 2.1.3)
| |
-| list | array |
|
-| other | UNSUPPORTED |
|
-
-Iceberg UUID maps directly to native Doris `UUID` in the dev version. Doris
4.1.5 maps it to `VARBINARY(16)`. Parquet writes retain the UUID logical
annotation, including nested fields. See the [UUID
type](../../sql-manual/basic-element/sql-data-types/uuid.md).
-
-> Note:
->
-> Since 4.1.5, `timestamp` maps to `DATETIME(6)` and `timestamptz` always maps
to `TIMESTAMPTZ(6)`. The latter represents an instant displayed in the session
`time_zone`; `enable.mapping.timestamp_tz=false` cannot restore the old mapping.
->
-> You can check whether the source type has timezone information in the Extra
column of the `DESCRIBE table_name` statement. If it shows `WITH_TIMEZONE`, it
indicates that the source type is a timezone-aware type. (Supported since
3.1.0).
->
-> Supported since version 4.0.3, `timestamptz` (timestamp with time zone) can
be mapped to the Doris `timestamptz` type.
+See [Iceberg to Doris Data Type
Mapping](iceberg-catalog/doris-type-mapping.md) for the complete Doris 4.2
mapping table, precision rules, and unsupported types.
### Column Name Case
diff --git a/docs/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
b/docs/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..d5080921849
--- /dev/null
+++ b/docs/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
@@ -0,0 +1,45 @@
+---
+{
+ "title": "Iceberg to Doris Data Type Mapping",
+ "sidebar_label": "Doris Data Type Mapping",
+ "description": "Doris 4.2 Iceberg type mapping reference covering data
types, precision, nested types, and unsupported types."
+}
+---
+
+The following table describes how Doris 4.2 (`branch-4.2`) maps Iceberg
external-table schemas when reading. Writes also depend on the target schema
and supported write operations; the read mapping is not an automatic inverse
mapping for writes.
+
+| Iceberg Type | Doris Type | Comment
|
+| -------------------------------------- | -------------------- |
--------------------------------------- |
+| boolean | boolean |
|
+| integer | int |
|
+| long | bigint |
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) |
|
+| date | date |
|
+| timestamp (Timestamp without timezone) | datetime(6) | Mapped to
datetime with precision 6 |
+| timestamptz (Timestamp with timezone) | TIMESTAMPTZ(6) | Since 4.1.5, this
type always maps to `TIMESTAMPTZ(6)`. Precision is capped at 6, so higher
precision is lost. |
+| fixed(N) | VARBINARY(N) | Since 4.1.5, the fixed binary width is preserved. |
+| string | string |
|
+| binary | VARBINARY | Since 4.1.5, this type always maps to `VARBINARY`. |
+| uuid | UUID | Native `UUID` in 4.2; Doris 4.1.5 maps this to
`VARBINARY(16)`. |
+| struct | struct (supported from version
2.1.3) | |
+| map | map (supported from version 2.1.3)
| |
+| list | array |
|
+| timestamp_ns (without timezone) | TIMESTAMP_NS | Preserves nanosecond
precision without session time-zone conversion. |
+| timestamptz_ns (with timezone) | UNSUPPORTED | Timezone-aware nanosecond
timestamps are unsupported. |
+| time | UNSUPPORTED | Does not map to Doris `TIME`. |
+| variant | VARIANT | Iceberg V3 Variant; participating BEs must support
Variant reads. |
+| other | UNSUPPORTED |
|
+
+## Usage Notes
+
+Child fields of complex types use the same mappings recursively. `TIMESTAMPTZ`
represents an instant displayed in the session `time_zone`.
+
+`timestamp` and `timestamptz` use microsecond precision. Only timezone-naive
`timestamp_ns` maps to `TIMESTAMP_NS`. Its range is `1677-09-21
00:12:43.145224192` through `2262-04-11 23:47:16.854775807`; values outside
this range cannot be represented.
+
+In `DESCRIBE table_name`, `WITH_TIMEZONE` in the Extra column identifies a
timezone-aware source field.
+
+Parquet writes to Iceberg UUID fields retain the UUID logical annotation,
including nested fields.
+
+Implementation reference:
[IcebergUtils.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergUtils.java)
(`branch-4.2`).
diff --git a/docs/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
b/docs/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..01f1ea8c0a3
--- /dev/null
+++ b/docs/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
@@ -0,0 +1,73 @@
+---
+{
+ "title": "Lance to Doris Data Type Mapping",
+ "sidebar_label": "Doris Data Type Mapping",
+ "description": "Doris 4.2 Lance type mapping reference covering data
types, precision, nested types, and unsupported types."
+}
+---
+
+The following table describes read type mappings for Lance Catalog and Lance
file TVFs in Doris 4.2 (`branch-4.2`). Doris does not support writing to Lance.
+
+| Lance / Arrow Type | Doris Type | Description |
+|---|---|---|
+| `null` (nullable field) | `NULL` | Every value is SQL NULL; non-nullable
Null fields are unsupported |
+| `duration(s/ms/us/ns)` | `BIGINT` | Preserves the signed count in the
declared unit; does not normalize to seconds |
+| `bool` | `BOOLEAN` | |
+| `int8` | `TINYINT` | |
+| `uint8` | `SMALLINT` | Losslessly widened unsigned integer |
+| `int16` | `SMALLINT` | |
+| `uint16` | `INT` | Losslessly widened unsigned integer |
+| `int32` | `INT` | |
+| `uint32` | `BIGINT` | Losslessly widened unsigned integer |
+| `int64` | `BIGINT` | |
+| `uint64` | `LARGEINT` | Losslessly widened unsigned integer |
+| `float16` | `FLOAT` | Widened to a 32-bit floating-point value |
+| `float32` | `FLOAT` | |
+| `float64` | `DOUBLE` | |
+| `decimal128(P,S)` | `DECIMAL(P,S)` | Maximum precision is 38 |
+| `decimal256(P,S)` | `DECIMAL(P,S)` | Maximum precision is 76 |
+| `utf8`, `large_utf8` | `STRING` | |
+| `arrow.json` Extension | `JSON` | Requires `utf8` or `large_utf8` storage |
+| `lance.json` Extension | `JSON` | Requires `large_binary` storage; read as
the logical JSON type |
+| `lance.bfloat16` Extension | `FLOAT` | Requires `fixed_size_binary(2)`
storage; widened to Float32 without precision loss |
+| `binary`, `large_binary` | `VARBINARY(2147483647)` | |
+| `fixed_size_binary(N)` | `VARBINARY(N)` | Preserves the fixed byte width |
+| `date32(day)`, `date64(ms)` | `DATE` | A `date64` value must represent a
complete calendar day |
+| `time32(s)` | `TIME(0)` | |
+| `time32(ms)` | `TIME(3)` | |
+| `time64(us)`, `time64(ns)` | `TIME(6)` | Nanosecond precision is truncated
to microseconds |
+| Timezone-naive `timestamp(s)` | `DATETIME(0)` | Not converted according to
the Session Time Zone |
+| Timezone-naive `timestamp(ms)` | `DATETIME(3)` | Not converted according to
the Session Time Zone |
+| Timezone-naive `timestamp(us)`, `timestamp(ns)` | `DATETIME(6)` | Nanosecond
precision is truncated to microseconds |
+| Timezone-aware `timestamp` | `TIMESTAMPTZ(P)` | Preserves the instant and
displays it in the Doris Session Time Zone |
+| `struct` | `STRUCT` | Child fields are mapped recursively |
+| `list`, `large_list`, `fixed_size_list` | `ARRAY` | Element types are mapped
recursively |
+| `map` | `MAP` | Key and value types are mapped recursively |
+
+## Usage Notes
+
+Timestamp precision `P` is 0 for seconds, 3 for milliseconds, and 6 for
microseconds or nanoseconds. Unlike the Iceberg/Paimon nanosecond mappings,
Lance nanosecond timestamps still map to `DATETIME(6)` or `TIMESTAMPTZ(6)` and
are truncated to microseconds. Decimals require `1 <= P <= 76` and `0 <= S <=
P`; negative scales are unsupported.
+
+Doris recognizes these extensions through `ARROW:extension:name` metadata and
validates their storage types. JSON extensions map to Doris `JSON` (internally
`JSONB`). An ordinary `utf8`/`large_utf8` column containing JSON text still
maps to `STRING`; its contents do not automatically change its type. JSON read
support does not imply pushdown of arbitrary JSON path expressions; supported
predicate forms must be checked separately.
+
+Reading JSON, Duration, Null, and BFloat16 requires the corresponding type
support in both the FE and the BEs serving the query. Older builds may still
report these types as unsupported; verify schema discovery and actual reads
when upgrading.
+
+The following types are not currently supported:
+
+- Non-nullable Arrow `null` fields.
+- Arrow/Lance Extension types not listed as supported, such as Lance Blob v2;
known extensions with incompatible storage types are also unsupported.
+- Complex types whose child types cannot be mapped recursively.
+- Arrow Dictionary types that preserve the Dictionary marker.
+
+For an unsupported top-level column, `DESC` on a Catalog table and `DESC
FUNCTION` on a Lance file TVF both preserve the column and display `unknown
type: UNSUPPORTED_TYPE`. If any child of a complex type cannot be mapped, the
whole top-level complex column is marked unsupported. Queries can still project
only supported columns. Doris reports an error during analysis when SQL
projects an unsupported column. For example:
+
+```sql
+SELECT * EXCEPT(blob_col)
+FROM lance_catalog.default.all_types;
+```
+
+:::note
+Some Lance Java SDK versions may lose the Dictionary marker while reading a
Schema and expose a Dictionary column as its physical index type. This behavior
does not mean that Doris supports the logical Dictionary values and must not be
relied upon.
+:::
+
+Implementation reference:
[LanceTypeConverter.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/lance/metadata/LanceTypeConverter.java)
(`branch-4.2`).
diff --git a/docs/lakehouse/catalogs/paimon-catalog.mdx
b/docs/lakehouse/catalogs/paimon-catalog.mdx
index cd2d857ff25..b3b44517883 100644
--- a/docs/lakehouse/catalogs/paimon-catalog.mdx
+++ b/docs/lakehouse/catalogs/paimon-catalog.mdx
@@ -342,26 +342,7 @@ The currently dependent Paimon version is 1.4.2.
## Column Type Mapping
-| Paimon Type | Doris Type | Comment
|
-| ---------------------------------- | ------------- |
----------------------------------------------------------------------- |
-| boolean | boolean |
|
-| tinyint | tinyint |
|
-| smallint | smallint |
|
-| integer | int |
|
-| bigint | bigint |
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) |
|
-| varchar | string |
|
-| char | string |
|
-| binary, varbinary | VARBINARY | Since 4.1.5, this type always maps to
`VARBINARY`. The `enable.mapping.varbinary` property is retained for
compatibility; setting it to `false` no longer restores the `STRING` mapping.
Earlier versions allow the property to select the legacy mapping. |
-| date | date |
|
-| timestamp\_without\_time\_zone | datetime(N) | Mapped according to
precision. If precision is greater than 6, it maps to a maximum of 6 (may cause
precision loss). |
-| timestamp\_with\_local\_time\_zone | TIMESTAMPTZ(N) | Since 4.1.5, this type
always maps to `TIMESTAMPTZ(N)`. The `enable.mapping.timestamp_tz` property is
retained for compatibility; setting it to `false` no longer restores the
`DATETIME` mapping. Precision is capped at 6, so higher precision is lost.
Earlier versions allow the property to select the legacy mapping. |
-| array | array |
|
-| map | map |
|
-| row | struct |
|
-| other | UNSUPPORTED |
|
+See [Paimon to Doris Data Type Mapping](paimon-catalog/doris-type-mapping.md)
for the complete Doris 4.2 mapping table, precision rules, and unsupported
types.
Doris preserves the exact spelling of quoted top-level columns and nested
`STRUCT` fields on both Paimon JNI scanner
paths. Names containing delimiters such as commas (`region,code`), hash signs
(`nested#value`), colons (`colon:name`),
@@ -377,14 +358,6 @@ Versions in the 4.0 line before 4.0.8 located columns by
exact match when readin
Since 4.1.5, explicit `REFRESH TABLE`, `REFRESH DATABASE`, and `REFRESH
CATALOG` commands also invalidate the corresponding Paimon metadata caches.
After external schema changes or dropping and recreating a table, use a refresh
command to reload metadata. Queries that have already started retain their
selected snapshot.
-:::info Note
-Since 4.1.5, `timestamp_without_time_zone` maps to `DATETIME(N)`, while
`timestamp_with_local_time_zone` always maps to `TIMESTAMPTZ(N)`. The latter
represents an instant displayed in the session `time_zone`;
`enable.mapping.timestamp_tz=false` cannot restore the old mapping.
-
-You can check whether the source type contains timezone information in the
Extra column of the `DESCRIBE table_name` statement. If it displays
`WITH_TIMEZONE`, it indicates that the source type is a timezone-aware type.
(This feature is supported since 3.0.8)
-
-Supported since version 4.0.3, `timestamp_with_local_time_zone` can be mapped
to Doris `timestamptz` type.
-:::
-
## Examples
### Hive Metastore
diff --git a/docs/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
b/docs/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..4da8d128642
--- /dev/null
+++ b/docs/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
@@ -0,0 +1,42 @@
+---
+{
+ "title": "Paimon to Doris Data Type Mapping",
+ "sidebar_label": "Doris Data Type Mapping",
+ "description": "Doris 4.2 Paimon type mapping reference covering data
types, precision, nested types, and unsupported types."
+}
+---
+
+The following table describes how Doris 4.2 (`branch-4.2`) maps Paimon
external-table schemas when reading. Writes also depend on the target schema
and supported write operations; the read mapping is not an automatic inverse
mapping for writes.
+
+| Paimon Type | Doris Type | Comment
|
+| ---------------------------------- | ------------- |
----------------------------------------------------------------------- |
+| boolean | boolean |
|
+| tinyint | tinyint |
|
+| smallint | smallint |
|
+| integer | int |
|
+| bigint | bigint |
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) |
|
+| varchar(N) | VARCHAR(N) / STRING | `VARCHAR(N)` for `N <= 65533`; otherwise
`STRING`. |
+| char(N) | CHAR(N) / STRING | `CHAR(N)` for `N <= 255`; otherwise `STRING`. |
+| binary(N), varbinary(N) | VARBINARY(N) | Preserves the declared byte length.
|
+| date | date |
|
+| timestamp_without_time_zone(P) | DATETIME(P) / TIMESTAMP_NS | `DATETIME(P)`
for `P <= 6`; in 4.2, `P > 6` maps to `TIMESTAMP_NS`, preserving
sub-microsecond precision. |
+| timestamp\_with\_local\_time\_zone | TIMESTAMPTZ(N) | Since 4.1.5, this type
always maps to `TIMESTAMPTZ(N)`. Precision is capped at 6, so higher precision
is lost. |
+| array | array |
|
+| map | map |
|
+| row | struct |
|
+| variant | VARIANT | Reading requires the FE configuration
`enable_variant_v2=true`. |
+| time_without_time_zone | UNSUPPORTED | |
+| other | UNSUPPORTED |
|
+
+## Usage Notes
+
+Child fields of complex types use the same mappings recursively. `TIMESTAMPTZ`
represents an instant displayed in the session `time_zone`.
+
+Precision handling differs for unzoned and local-zoned timestamps: 4.2 can
preserve nanoseconds for the former, while the latter is capped at six
fractional digits. The `TIMESTAMP_NS` range is `1677-09-21 00:12:43.145224192`
through `2262-04-11 23:47:16.854775807`.
+
+In `DESCRIBE table_name`, `WITH_TIMEZONE` in the Extra column identifies a
timezone-aware source field.
+
+Implementation reference:
[PaimonUtil.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonUtil.java)
(`branch-4.2`).
diff --git a/docs/lakehouse/file-formats/lance.md
b/docs/lakehouse/file-formats/lance.md
index d64d6269712..d606573d343 100644
--- a/docs/lakehouse/file-formats/lance.md
+++ b/docs/lakehouse/file-formats/lance.md
@@ -15,6 +15,8 @@ Lance support is available starting from Apache Doris 4.2.
[Lance](https://docs.lancedb.com/lance) is a columnar data format designed for
analytics and AI workloads. Doris can read Lance datasets through a Lance
Catalog or through the `s3()` and `local()` table-valued functions (TVFs).
+For Lance type mappings, see [Doris Data Type
Mapping](../catalogs/lance-catalog/doris-type-mapping.md).
+
## Supported Features
| Feature | Support |
@@ -29,6 +31,9 @@ Lance support is available starting from Apache Doris 4.2.
| Time Travel | Not supported |
| Full-Text Search / Hybrid Search | Not supported |
+<!-- The full Lance Catalog guide is currently available only in the 4.x
documentation tree. -->
+For Catalog configuration, predicate pushdown, and vector search details, see
[Lance Catalog (4.x)](/docs/4.x/lakehouse/catalogs/lance-catalog).
+
## Query a Lance Dataset with a File TVF
The `uri` or `file_path` must point directly to the **root directory of one
Lance dataset**, rather than an internal file such as `data/*.lance`.
@@ -61,4 +66,5 @@ To read a local dataset, use `local()` and specify the
dataset root with `file_p
## References
+- [Lance Catalog (4.x)](/docs/4.x/lakehouse/catalogs/lance-catalog)
- [Lance Format Documentation](https://docs.lancedb.com/lance)
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.mdx
index 965a22d44fb..1a98bec1718 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog.mdx
@@ -91,7 +91,7 @@ Doris 4.1.x 之前的版本,元数据缓存主要由 FE 配置项全局控制
### 缓存属性配置 {#meta-cache-unified-model}
-每个缓存模块使用统一的配置键格式:`meta.cache.<engine>.<entry>.{enable,ttl-second,capacity,max-weight}`。Hive
的 `<engine>` 为 `hive`。包含 Iceberg 表的 Hive Metastore Catalog 还会使用 [Iceberg
Catalog](./iceberg-catalog#meta-cache) 中描述的 `iceberg` 模块。
+每个缓存模块使用统一的配置键格式:`meta.cache.<engine>.<entry>.{enable,ttl-second,capacity,max-weight}`。Hive
的 `<engine>` 为 `hive`。包含 Iceberg 表的 Hive Metastore Catalog 还会使用 [Iceberg
Catalog](./iceberg-catalog.mdx#meta-cache) 中描述的 `iceberg` 模块。
| 属性 | 示例 | 含义 |
|---|---|---|
@@ -275,27 +275,7 @@ CREATE CATALOG hive_legacy_int96 PROPERTIES (
## 列类型映射
-| Hive Type | Doris Type | Comment |
-| ------------- | ------------- | ------------------------- |
-| boolean | boolean | |
-| tinyint | tinyint | |
-| smallint | smallint | |
-| int | int | |
-| bigint | bigint | |
-| date | date | |
-| timestamp | datetime(6) | 固定映射到精度为 6 的 datetime |
-| float | float | |
-| double | double | |
-| decimal(P, S) | decimal(P, S) | 如果未指定精度,默认为 decimal(9, 0) |
-| char(N) | char(N) | |
-| varchar(N) | varchar(N) | |
-| string | string | |
-| binary | VARBINARY | 自 4.1.5 版本起固定映射为
`VARBINARY`,`enable.mapping.varbinary` 仅作为兼容标记,设为 `false` 不再恢复 `STRING`
映射。4.1.5 之前可通过该属性选择旧映射。 |
-| timestamp with local time zone| TIMESTAMPTZ | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ`,`enable.mapping.timestamp_tz` 仅作为兼容标记,设为 `false` 不再恢复 `DATETIME`
映射。精度最高为 6,超过的部分会丢失。4.1.5 之前可通过该属性选择旧映射。 |
-| array | array | |
-| map | map | |
-| struct | struct | |
-| other | unsupported | |
+请参阅[Hive 与 Doris 数据类型映射](hive-catalog/doris-type-mapping.md),了解 Doris 4.2
的完整映射表、精度和不支持的类型。
## 基础示例
### Hive Metastore
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..c5cee00ca01
--- /dev/null
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
@@ -0,0 +1,39 @@
+---
+{
+ "title": "Hive 与 Doris 数据类型映射",
+ "sidebar_label": "Doris 数据类型映射",
+ "description": "Doris 4.2 Hive 类型映射参考:数据类型、精度、嵌套类型和不支持的类型。"
+}
+---
+
+以下表格描述 Doris 4.2(`branch-4.2`)读取 Hive 外部表 Schema 时的类型映射。写入外部表时还受目标表 Schema
和写入能力限制,不能直接将读取映射反向使用。
+
+| Hive Type | Doris Type | Comment |
+| ------------- | ------------- | ------------------------- |
+| boolean | boolean | |
+| tinyint | tinyint | |
+| smallint | smallint | |
+| int | int | |
+| bigint | bigint | |
+| date | date | |
+| timestamp | datetime(6) | 固定映射到精度为 6 的 datetime |
+| float | float | |
+| double | double | |
+| decimal(P, S) | decimal(P, S) | 如果未指定精度,默认为 decimal(9, 0) |
+| char(N) | char(N) | |
+| varchar(N) | varchar(N) | |
+| string | string | |
+| binary | VARBINARY | 自 4.1.5 版本起固定映射为 `VARBINARY`。 |
+| timestamp with local time zone| TIMESTAMPTZ(6) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(6)`。精度最高为 6,超过的部分会丢失。 |
+| array | array | |
+| map | map | |
+| struct | struct | |
+| other | unsupported | |
+
+## 使用说明
+
+复合类型的子字段递归使用上述映射。`TIMESTAMPTZ` 表示时间点,按会话 `time_zone` 展示。
+
+Hive Catalog 从 Hive Metastore 的类型字符串推断 Schema。`timestamp` 映射为
`DATETIME(6)`,不会因为底层文件保存了纳秒就自动映射为 `TIMESTAMP_NS`。`uniontype` 等未列为支持的类型不受支持。
+
+实现依据:[HiveMetaStoreClientHelper.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreClientHelper.java)(`branch-4.2`)。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.mdx
index f285aa7fbba..ce4457472aa 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog.mdx
@@ -264,35 +264,7 @@ ORDER BY engine_name, entry_name;
## 列类型映射
-| Iceberg Type | Doris Type | Comment
|
-| -------------------------------------- | -------------------- |
--------------------- |
-| boolean | boolean |
|
-| integer | int |
|
-| long | bigint |
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) |
|
-| date | date |
|
-| timestamp (Timestamp without timezone) | datetime(6) | 固定映射到精度为 6 的
datetime |
-| timestamptz (Timestamp with timezone) | TIMESTAMPTZ(6) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(6)`,`enable.mapping.timestamp_tz` 仅作为兼容标记,设为 `false` 不再恢复
`DATETIME` 映射。精度最高为 6,超过的部分会丢失。4.1.5 之前可通过该属性选择旧映射。 |
-| fixed(N) | VARBINARY(N) | 自 4.1.5 版本起保留固定二进制宽度。 |
-| string | string |
|
-| binary | VARBINARY | 自 4.1.5 版本起固定映射为
`VARBINARY`,`enable.mapping.varbinary` 仅作为兼容标记,设为 `false` 不再恢复 `STRING`
映射。4.1.5 之前可通过该属性选择旧映射。 |
-| uuid | UUID | dev 版本直接映射到 Doris 原生 `UUID`,不受 `enable.mapping.varbinary`
影响;4.1.5 映射到 `VARBINARY(16)`。 |
-| struct | struct(2.1.3 版本开始支持) |
|
-| map | map(2.1.3 版本开始支持) |
|
-| list | array |
|
-| other | UNSUPPORTED |
|
-
-dev 版本的 Iceberg UUID 直接映射到 Doris 原生 `UUID`,4.1.5 则映射到 `VARBINARY(16)`。向
Iceberg UUID 字段写入 Parquet 时保留 UUID 逻辑标记,包括嵌套字段。详见 [UUID
类型](../../sql-manual/basic-element/sql-data-types/uuid.md)。
-
-> 注:
->
-> 自 4.1.5 版本起,`timestamp` 映射到 `DATETIME(6)`,`timestamptz` 固定映射到
`TIMESTAMPTZ(6)`。后者表示时间点,按会话 `time_zone` 展示;`enable.mapping.timestamp_tz=false`
不能恢复旧映射。
->
-> 可以在 `DESCRIBE table_name` 语句中的 Extra 列查看源类型是否带时区信息。如显示
`WITH_TIMEZONE`,则表示源类型是带时区的类型(该功能自 3.1.0 版本支持)。
->
-> 4.0.3 后开始支持,可以映射 `timestamptz (Timestamp with timezone)` 到 Doris 的
`timestamptz` 类型。
+请参阅[Iceberg 与 Doris 数据类型映射](iceberg-catalog/doris-type-mapping.md),了解 Doris
4.2 的完整映射表、精度和不支持的类型。
### 列名大小写
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..a165509a8b9
--- /dev/null
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
@@ -0,0 +1,45 @@
+---
+{
+ "title": "Iceberg 与 Doris 数据类型映射",
+ "sidebar_label": "Doris 数据类型映射",
+ "description": "Doris 4.2 Iceberg 类型映射参考:数据类型、精度、嵌套类型和不支持的类型。"
+}
+---
+
+以下表格描述 Doris 4.2(`branch-4.2`)读取 Iceberg 外部表 Schema 时的类型映射。写入外部表时还受目标表 Schema
和写入能力限制,不能直接将读取映射反向使用。
+
+| Iceberg Type | Doris Type | Comment
|
+| -------------------------------------- | -------------------- |
--------------------- |
+| boolean | boolean |
|
+| integer | int |
|
+| long | bigint |
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) |
|
+| date | date |
|
+| timestamp (Timestamp without timezone) | datetime(6) | 固定映射到精度为 6 的
datetime |
+| timestamptz (Timestamp with timezone) | TIMESTAMPTZ(6) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(6)`。精度最高为 6,超过的部分会丢失。 |
+| fixed(N) | VARBINARY(N) | 自 4.1.5 版本起保留固定二进制宽度。 |
+| string | string |
|
+| binary | VARBINARY | 自 4.1.5 版本起固定映射为
`VARBINARY`。 |
+| uuid | UUID | 4.2 映射为原生 `UUID`;4.1.5 映射为 `VARBINARY(16)`。 |
+| struct | struct(2.1.3 版本开始支持) |
|
+| map | map(2.1.3 版本开始支持) |
|
+| list | array |
|
+| timestamp_ns (without timezone) | TIMESTAMP_NS | 保留纳秒精度,不按会话时区转换。 |
+| timestamptz_ns (with timezone) | UNSUPPORTED | 不支持带时区的纳秒时间戳。 |
+| time | UNSUPPORTED | 不映射为 Doris `TIME`。 |
+| variant | VARIANT | Iceberg V3 Variant;读取需要参与查询的 BE 支持 Variant。 |
+| other | UNSUPPORTED |
|
+
+## 使用说明
+
+复合类型的子字段递归使用上述映射。`TIMESTAMPTZ` 表示时间点,按会话 `time_zone` 展示。
+
+`timestamp` 和 `timestamptz` 使用微秒精度;只有不带时区的 `timestamp_ns` 映射为
`TIMESTAMP_NS`。`TIMESTAMP_NS` 的范围为 `1677-09-21 00:12:43.145224192` 至
`2262-04-11 23:47:16.854775807`,超出范围的值不能表示。
+
+执行 `DESCRIBE table_name` 时,Extra 列中的 `WITH_TIMEZONE` 表示源字段带时区信息。
+
+向 Iceberg UUID 字段写入 Parquet 时会保留 UUID 逻辑标记,包括嵌套字段。
+
+实现依据:[IcebergUtils.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergUtils.java)(`branch-4.2`)。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..63ceea6fa70
--- /dev/null
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
@@ -0,0 +1,73 @@
+---
+{
+ "title": "Lance 与 Doris 数据类型映射",
+ "sidebar_label": "Doris 数据类型映射",
+ "description": "Doris 4.2 Lance 类型映射参考:数据类型、精度、嵌套类型和不支持的类型。"
+}
+---
+
+以下表格描述 Doris 4.2(`branch-4.2`)中 Lance Catalog 和 Lance 文件 TVF 的读取类型映射。Doris
不支持写入 Lance。
+
+| Lance / Arrow 类型 | Doris 类型 | 说明 |
+|---|---|---|
+| `null`(可空字段) | `NULL` | 所有值均为 SQL NULL;非可空 Null 字段不支持 |
+| `duration(s/ms/us/ns)` | `BIGINT` | 保留字段声明单位的有符号计数,不统一转换为秒 |
+| `bool` | `BOOLEAN` | |
+| `int8` | `TINYINT` | |
+| `uint8` | `SMALLINT` | 无符号整数无损提升 |
+| `int16` | `SMALLINT` | |
+| `uint16` | `INT` | 无符号整数无损提升 |
+| `int32` | `INT` | |
+| `uint32` | `BIGINT` | 无符号整数无损提升 |
+| `int64` | `BIGINT` | |
+| `uint64` | `LARGEINT` | 无符号整数无损提升 |
+| `float16` | `FLOAT` | 提升为 32 位浮点数 |
+| `float32` | `FLOAT` | |
+| `float64` | `DOUBLE` | |
+| `decimal128(P,S)` | `DECIMAL(P,S)` | 最大精度为 38 |
+| `decimal256(P,S)` | `DECIMAL(P,S)` | 最大精度为 76 |
+| `utf8`、`large_utf8` | `STRING` | |
+| `arrow.json` Extension | `JSON` | 底层类型为 `utf8` 或 `large_utf8` |
+| `lance.json` Extension | `JSON` | 底层类型为 `large_binary`;按 JSON 逻辑类型读取 |
+| `lance.bfloat16` Extension | `FLOAT` | 底层类型为 `fixed_size_binary(2)`;无损提升为
Float32 |
+| `binary`、`large_binary` | `VARBINARY(2147483647)` | |
+| `fixed_size_binary(N)` | `VARBINARY(N)` | 保留固定字节宽度 |
+| `date32(day)`、`date64(ms)` | `DATE` | `date64` 应表示完整自然日 |
+| `time32(s)` | `TIME(0)` | |
+| `time32(ms)` | `TIME(3)` | |
+| `time64(us)`、`time64(ns)` | `TIME(6)` | 纳秒精度截断为微秒 |
+| 无时区 `timestamp(s)` | `DATETIME(0)` | 不随 Session Time Zone 转换 |
+| 无时区 `timestamp(ms)` | `DATETIME(3)` | 不随 Session Time Zone 转换 |
+| 无时区 `timestamp(us)`、`timestamp(ns)` | `DATETIME(6)` | 纳秒精度截断为微秒 |
+| 带时区 `timestamp` | `TIMESTAMPTZ(P)` | 保存时间点,按 Doris Session Time Zone 展示 |
+| `struct` | `STRUCT` | 子字段递归映射 |
+| `list`、`large_list`、`fixed_size_list` | `ARRAY` | 元素类型递归映射 |
+| `map` | `MAP` | Key 和 Value 类型递归映射 |
+
+## 使用说明
+
+时间戳的精度 `P` 按单位确定:秒为 0、毫秒为 3、微秒和纳秒为 6。与 Iceberg/Paimon 的纳秒映射不同,Lance 的纳秒时间戳仍映射为
`DATETIME(6)` 或 `TIMESTAMPTZ(6)`,并截断到微秒。Decimal 要求 `1 <= P <= 76` 且 `0 <= S <=
P`;负 scale 不支持。
+
+Doris 根据 `ARROW:extension:name` 元数据识别上述扩展类型,并校验其底层存储类型。JSON 扩展映射为 Doris
`JSON`(内部类型 `JSONB`),普通 `utf8`/`large_utf8` 列即使包含 JSON 文本,仍映射为 `STRING`,不会自动变成
JSON。支持 JSON 读取不代表任意 JSON 路径表达式都能下推;谓词下推范围需要单独确认。
+
+JSON、Duration、Null 和 BFloat16 读取需要 FE 与参与查询的 BE 均包含对应类型支持。旧构建可能仍显示不支持;升级时应同时确认
Schema 识别和实际读取能力。
+
+当前不支持以下类型:
+
+- 非可空的 Arrow `null` 字段。
+- 未列为支持的 Arrow/Lance Extension 类型,例如 Lance Blob v2;已知扩展类型的底层存储与上表不匹配时也不支持。
+- 无法递归映射其子类型的复杂类型。
+- 保留了 Dictionary 标记的 Arrow Dictionary 类型。
+
+对于不支持的顶层列,Catalog 表的 `DESC` 和 Lance 文件 TVF 的 `DESC FUNCTION` 都会保留该列,并显示
`unknown type:
UNSUPPORTED_TYPE`。如果复杂类型的任一子字段无法映射,则整个顶层复杂列会标记为不支持。查询只投影支持的列仍可正常执行;当 SQL
投影不支持的列时,Doris 会在分析阶段报错。例如:
+
+```sql
+SELECT * EXCEPT(blob_col)
+FROM lance_catalog.default.all_types;
+```
+
+:::note
+部分 Lance Java SDK 版本可能在读取 Schema 时丢失 Dictionary 标记,并将 Dictionary
列暴露为物理索引类型。该结果不代表 Doris 已支持 Dictionary 的逻辑值,请勿依赖这一行为。
+:::
+
+实现依据:[LanceTypeConverter.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/lance/metadata/LanceTypeConverter.java)(`branch-4.2`)。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog.mdx
index 24db7802fcd..66f27f5163a 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog.mdx
@@ -334,26 +334,7 @@ ORDER BY engine_name, entry_name;
## 列类型映射
-| Paimon Type | Doris Type | Comment
|
-| ---------------------------------- | ------------- |
-------------------------------------- |
-| boolean | boolean |
|
-| tinyint | tinyint |
|
-| smallint | smallint |
|
-| integer | int |
|
-| bigint | bigint |
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) |
|
-| varchar | string |
|
-| char | string |
|
-| binary, varbinary | VARBINARY | 自 4.1.5 版本起固定映射为
`VARBINARY`,`enable.mapping.varbinary` 仅作为兼容标记,设为 `false` 不再恢复 `STRING`
映射。4.1.5 之前可通过该属性选择旧映射。 |
-| date | date |
|
-| timestamp\_without\_time\_zone | datetime(N) |
会根据精度进行对应映射。如果精度大于 6,则最大映射到 6。(可能导致精度丢失)
|
-| timestamp\_with\_local\_time\_zone | TIMESTAMPTZ(N) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(N)`,`enable.mapping.timestamp_tz` 仅作为兼容标记,设为 `false` 不再恢复
`DATETIME` 映射。精度最高为 6,超过的部分会丢失。4.1.5 之前可通过该属性选择旧映射。 |
-| array | array |
|
-| map | map |
|
-| row | struct |
|
-| other | UNSUPPORTED |
|
+请参阅[Paimon 与 Doris 数据类型映射](paimon-catalog/doris-type-mapping.md),了解 Doris 4.2
的完整映射表、精度和不支持的类型。
在两个 Paimon JNI Scanner 路径上,Doris 都会保留带引号的顶层列名和嵌套 `STRUCT` 字段名的原始大小写与字符。
包含逗号(`region,code`)、井号(`nested#value`)、冒号(`colon:name`)、空格或 Unicode 字符的名称,除普通
@@ -367,14 +348,6 @@ SQL 标识符引用外无需额外转义。读取时列按不区分大小写的
自 4.1.5 版本起,显式执行 `REFRESH TABLE`、`REFRESH DATABASE` 或 `REFRESH CATALOG` 时,也会使
Paimon 的相应元数据缓存失效。外部表结构变更、删除后重建等操作后,可用刷新命令重新加载元数据;已开始执行的查询仍使用其已选定的快照。
-> 注:
->
-> 自 4.1.5 版本起,`timestamp_without_time_zone` 映射到
`DATETIME(N)`,`timestamp_with_local_time_zone` 固定映射到
`TIMESTAMPTZ(N)`。后者表示时间点,按会话 `time_zone` 展示;设为
`enable.mapping.timestamp_tz=false` 不能恢复旧映射。
->
-> 可以在 `DESCRIBE table_name` 语句中的 Extra 列查看源类型是否带时区信息。如显示
`WITH_TIMEZONE`,则表示源类型是带时区的类型(该功能自 3.0.8 版本支持)。
->
-> 4.0.3 后开始支持,可以映射 `timestamp_with_local_time_zone` 到 Doris 的 `timestamptz` 类型。
-
## 基础示例
### Hive Metastore
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..ebf11e5508b
--- /dev/null
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
@@ -0,0 +1,42 @@
+---
+{
+ "title": "Paimon 与 Doris 数据类型映射",
+ "sidebar_label": "Doris 数据类型映射",
+ "description": "Doris 4.2 Paimon 类型映射参考:数据类型、精度、嵌套类型和不支持的类型。"
+}
+---
+
+以下表格描述 Doris 4.2(`branch-4.2`)读取 Paimon 外部表 Schema 时的类型映射。写入外部表时还受目标表 Schema
和写入能力限制,不能直接将读取映射反向使用。
+
+| Paimon Type | Doris Type | Comment
|
+| ---------------------------------- | ------------- |
-------------------------------------- |
+| boolean | boolean |
|
+| tinyint | tinyint |
|
+| smallint | smallint |
|
+| integer | int |
|
+| bigint | bigint |
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) |
|
+| varchar(N) | VARCHAR(N) / STRING | `N <= 65533` 时为 `VARCHAR(N)`;更长时为
`STRING`。 |
+| char(N) | CHAR(N) / STRING | `N <= 255` 时为 `CHAR(N)`;更长时为 `STRING`。 |
+| binary(N), varbinary(N) | VARBINARY(N) | 保留声明的字节长度。 |
+| date | date |
|
+| timestamp_without_time_zone(P) | DATETIME(P) / TIMESTAMP_NS | `P <= 6` 时为
`DATETIME(P)`;4.2 中 `P > 6` 时为 `TIMESTAMP_NS`,保留亚微秒精度。 |
+| timestamp\_with\_local\_time\_zone | TIMESTAMPTZ(N) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(N)`。精度最高为 6,超过的部分会丢失。 |
+| array | array |
|
+| map | map |
|
+| row | struct |
|
+| variant | VARIANT | 读取需要 FE 配置 `enable_variant_v2=true`。 |
+| time_without_time_zone | UNSUPPORTED | |
+| other | UNSUPPORTED |
|
+
+## 使用说明
+
+复合类型的子字段递归使用上述映射。`TIMESTAMPTZ` 表示时间点,按会话 `time_zone` 展示。
+
+无时区时间戳和带本地时区时间戳的精度处理不同:前者在 4.2 中可保留纳秒,后者最多保留 6 位小数。`TIMESTAMP_NS` 的范围为
`1677-09-21 00:12:43.145224192` 至 `2262-04-11 23:47:16.854775807`。
+
+执行 `DESCRIBE table_name` 时,Extra 列中的 `WITH_TIMEZONE` 表示源字段带时区信息。
+
+实现依据:[PaimonUtil.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonUtil.java)(`branch-4.2`)。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/file-formats/lance.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/file-formats/lance.md
index 7bac698894f..f0dcc7b05e0 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/file-formats/lance.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/lakehouse/file-formats/lance.md
@@ -15,6 +15,8 @@ Lance 支持自 Apache Doris 4.2 版本开始提供。
[Lance](https://docs.lancedb.com/lance) 是面向分析和 AI 场景的列式数据格式。Doris 可以通过 Lance
Catalog,或通过 `s3()` 和 `local()` 表值函数(TVF)读取 Lance 数据集。
+Lance 的类型映射请参阅 [Doris 数据类型映射](../catalogs/lance-catalog/doris-type-mapping.md)。
+
## 支持的功能
| 功能 | 支持情况 |
@@ -29,7 +31,8 @@ Lance 支持自 Apache Doris 4.2 版本开始提供。
| Time Travel | 暂不支持 |
| Full-Text Search / Hybrid Search | 暂不支持 |
-Catalog 配置、类型映射、谓词下推和向量检索的详细说明请参见 [Lance
Catalog](../catalogs/lance-catalog.mdx)。
+<!-- The full Lance Catalog guide is currently available only in the 4.x
documentation tree. -->
+Catalog 配置、谓词下推和向量检索的详细说明请参见 [Lance
Catalog(4.x)](/zh-CN/docs/4.x/lakehouse/catalogs/lance-catalog)。
## 通过文件 TVF 查询 Lance 数据集
@@ -63,5 +66,5 @@ WHERE user_id > 100;
## 参考资料
-- [Lance Catalog](../catalogs/lance-catalog.mdx)
+- [Lance Catalog(4.x)](/zh-CN/docs/4.x/lakehouse/catalogs/lance-catalog)
- [Lance 格式官方文档](https://docs.lancedb.com/lance)
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/hive-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/hive-catalog.mdx
index 78538e5cf17..87e2b87daa1 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/hive-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/hive-catalog.mdx
@@ -231,27 +231,7 @@ ORDER BY entry_name;
## 列类型映射
-| Hive Type | Doris Type | Comment |
-| ------------- | ------------- | ------------------------- |
-| boolean | boolean | |
-| tinyint | tinyint | |
-| smallint | smallint | |
-| int | int | |
-| bigint | bigint | |
-| date | date | |
-| timestamp | datetime(6) | 固定映射到精度为 6 的 datetime |
-| float | float | |
-| double | double | |
-| decimal(P, S) | decimal(P, S) | 如果未指定精度,默认为 decimal(9, 0) |
-| char(N) | char(N) | |
-| varchar(N) | varchar(N) | |
-| string | string | |
-| binary | VARBINARY | 自 4.1.5 版本起固定映射为
`VARBINARY`,`enable.mapping.varbinary` 仅作为兼容标记,设为 `false` 不再恢复 `STRING`
映射。4.1.5 之前可通过该属性选择旧映射。 |
-| timestamp with local time zone| TIMESTAMPTZ | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ`,`enable.mapping.timestamp_tz` 仅作为兼容标记,设为 `false` 不再恢复 `DATETIME`
映射。精度最高为 6,超过的部分会丢失。4.1.5 之前可通过该属性选择旧映射。 |
-| array | array | |
-| map | map | |
-| struct | struct | |
-| other | unsupported | |
+请参阅[Hive 与 Doris 数据类型映射](hive-catalog/doris-type-mapping.md),了解 Doris 4.2
的完整映射表、精度和不支持的类型。
## 基础示例
### Hive Metastore
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..c5cee00ca01
--- /dev/null
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
@@ -0,0 +1,39 @@
+---
+{
+ "title": "Hive 与 Doris 数据类型映射",
+ "sidebar_label": "Doris 数据类型映射",
+ "description": "Doris 4.2 Hive 类型映射参考:数据类型、精度、嵌套类型和不支持的类型。"
+}
+---
+
+以下表格描述 Doris 4.2(`branch-4.2`)读取 Hive 外部表 Schema 时的类型映射。写入外部表时还受目标表 Schema
和写入能力限制,不能直接将读取映射反向使用。
+
+| Hive Type | Doris Type | Comment |
+| ------------- | ------------- | ------------------------- |
+| boolean | boolean | |
+| tinyint | tinyint | |
+| smallint | smallint | |
+| int | int | |
+| bigint | bigint | |
+| date | date | |
+| timestamp | datetime(6) | 固定映射到精度为 6 的 datetime |
+| float | float | |
+| double | double | |
+| decimal(P, S) | decimal(P, S) | 如果未指定精度,默认为 decimal(9, 0) |
+| char(N) | char(N) | |
+| varchar(N) | varchar(N) | |
+| string | string | |
+| binary | VARBINARY | 自 4.1.5 版本起固定映射为 `VARBINARY`。 |
+| timestamp with local time zone| TIMESTAMPTZ(6) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(6)`。精度最高为 6,超过的部分会丢失。 |
+| array | array | |
+| map | map | |
+| struct | struct | |
+| other | unsupported | |
+
+## 使用说明
+
+复合类型的子字段递归使用上述映射。`TIMESTAMPTZ` 表示时间点,按会话 `time_zone` 展示。
+
+Hive Catalog 从 Hive Metastore 的类型字符串推断 Schema。`timestamp` 映射为
`DATETIME(6)`,不会因为底层文件保存了纳秒就自动映射为 `TIMESTAMP_NS`。`uniontype` 等未列为支持的类型不受支持。
+
+实现依据:[HiveMetaStoreClientHelper.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreClientHelper.java)(`branch-4.2`)。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/iceberg-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/iceberg-catalog.mdx
index 258f07ccdb1..87717b080ee 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/iceberg-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/iceberg-catalog.mdx
@@ -262,33 +262,7 @@ ORDER BY entry_name;
## 列类型映射
-| Iceberg Type | Doris Type | Comment
|
-| -------------------------------------- | -------------------- |
--------------------- |
-| boolean | boolean |
|
-| integer | int |
|
-| long | bigint |
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) |
|
-| date | date |
|
-| timestamp (Timestamp without timezone) | datetime(6) | 固定映射到精度为 6 的
datetime |
-| timestamptz (Timestamp with timezone) | TIMESTAMPTZ(6) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(6)`,`enable.mapping.timestamp_tz` 仅作为兼容标记,设为 `false` 不再恢复
`DATETIME` 映射。精度最高为 6,超过的部分会丢失。4.1.5 之前可通过该属性选择旧映射。 |
-| fixed(N) | VARBINARY(N) | 自 4.1.5 版本起保留固定二进制宽度。 |
-| string | string |
|
-| binary | VARBINARY | 自 4.1.5 版本起固定映射为
`VARBINARY`,`enable.mapping.varbinary` 仅作为兼容标记,设为 `false` 不再恢复 `STRING`
映射。4.1.5 之前可通过该属性选择旧映射。 |
-| uuid | VARBINARY(16) | 自 4.1.5 版本起固定映射为
`VARBINARY`,`enable.mapping.varbinary` 仅作为兼容标记,设为 `false` 不再恢复 `STRING`
映射。4.1.5 之前可通过该属性选择旧映射。 |
-| struct | struct(2.1.3 版本开始支持) |
|
-| map | map(2.1.3 版本开始支持) |
|
-| list | array |
|
-| other | UNSUPPORTED |
|
-
-> 注:
->
-> 自 4.1.5 版本起,`timestamp` 映射到 `DATETIME(6)`,`timestamptz` 固定映射到
`TIMESTAMPTZ(6)`。后者表示时间点,按会话 `time_zone` 展示;`enable.mapping.timestamp_tz=false`
不能恢复旧映射。
->
-> 可以在 `DESCRIBE table_name` 语句中的 Extra 列查看源类型是否带时区信息。如显示
`WITH_TIMEZONE`,则表示源类型是带时区的类型(该功能自 3.1.0 版本支持)。
->
-> 4.0.3 后开始支持,可以映射 `timestamptz (Timestamp with timezone)` 到 Doris 的
`timestamptz` 类型。
+请参阅[Iceberg 与 Doris 数据类型映射](iceberg-catalog/doris-type-mapping.md),了解 Doris
4.2 的完整映射表、精度和不支持的类型。
### 列名大小写
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..a165509a8b9
--- /dev/null
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
@@ -0,0 +1,45 @@
+---
+{
+ "title": "Iceberg 与 Doris 数据类型映射",
+ "sidebar_label": "Doris 数据类型映射",
+ "description": "Doris 4.2 Iceberg 类型映射参考:数据类型、精度、嵌套类型和不支持的类型。"
+}
+---
+
+以下表格描述 Doris 4.2(`branch-4.2`)读取 Iceberg 外部表 Schema 时的类型映射。写入外部表时还受目标表 Schema
和写入能力限制,不能直接将读取映射反向使用。
+
+| Iceberg Type | Doris Type | Comment
|
+| -------------------------------------- | -------------------- |
--------------------- |
+| boolean | boolean |
|
+| integer | int |
|
+| long | bigint |
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) |
|
+| date | date |
|
+| timestamp (Timestamp without timezone) | datetime(6) | 固定映射到精度为 6 的
datetime |
+| timestamptz (Timestamp with timezone) | TIMESTAMPTZ(6) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(6)`。精度最高为 6,超过的部分会丢失。 |
+| fixed(N) | VARBINARY(N) | 自 4.1.5 版本起保留固定二进制宽度。 |
+| string | string |
|
+| binary | VARBINARY | 自 4.1.5 版本起固定映射为
`VARBINARY`。 |
+| uuid | UUID | 4.2 映射为原生 `UUID`;4.1.5 映射为 `VARBINARY(16)`。 |
+| struct | struct(2.1.3 版本开始支持) |
|
+| map | map(2.1.3 版本开始支持) |
|
+| list | array |
|
+| timestamp_ns (without timezone) | TIMESTAMP_NS | 保留纳秒精度,不按会话时区转换。 |
+| timestamptz_ns (with timezone) | UNSUPPORTED | 不支持带时区的纳秒时间戳。 |
+| time | UNSUPPORTED | 不映射为 Doris `TIME`。 |
+| variant | VARIANT | Iceberg V3 Variant;读取需要参与查询的 BE 支持 Variant。 |
+| other | UNSUPPORTED |
|
+
+## 使用说明
+
+复合类型的子字段递归使用上述映射。`TIMESTAMPTZ` 表示时间点,按会话 `time_zone` 展示。
+
+`timestamp` 和 `timestamptz` 使用微秒精度;只有不带时区的 `timestamp_ns` 映射为
`TIMESTAMP_NS`。`TIMESTAMP_NS` 的范围为 `1677-09-21 00:12:43.145224192` 至
`2262-04-11 23:47:16.854775807`,超出范围的值不能表示。
+
+执行 `DESCRIBE table_name` 时,Extra 列中的 `WITH_TIMEZONE` 表示源字段带时区信息。
+
+向 Iceberg UUID 字段写入 Parquet 时会保留 UUID 逻辑标记,包括嵌套字段。
+
+实现依据:[IcebergUtils.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergUtils.java)(`branch-4.2`)。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/lance-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/lance-catalog.mdx
index 3f802eb678a..18504b391dc 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/lance-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/lance-catalog.mdx
@@ -508,63 +508,7 @@ lance_catalog default vs_ivf_pq_f32
embedding_ivf_pq_f32 3f9c2a1e-7b4d-
## 类型映射
-| Lance / Arrow 类型 | Doris 类型 | 说明 |
-|---|---|---|
-| `null`(可空字段) | `NULL` | 所有值均为 SQL NULL;非可空 Null 字段不支持 |
-| `duration(s/ms/us/ns)` | `BIGINT` | 保留字段声明单位的有符号计数,不统一转换为秒 |
-| `bool` | `BOOLEAN` | |
-| `int8` | `TINYINT` | |
-| `uint8` | `SMALLINT` | 无符号整数无损提升 |
-| `int16` | `SMALLINT` | |
-| `uint16` | `INT` | 无符号整数无损提升 |
-| `int32` | `INT` | |
-| `uint32` | `BIGINT` | 无符号整数无损提升 |
-| `int64` | `BIGINT` | |
-| `uint64` | `LARGEINT` | 无符号整数无损提升 |
-| `float16` | `FLOAT` | 提升为 32 位浮点数 |
-| `float32` | `FLOAT` | |
-| `float64` | `DOUBLE` | |
-| `decimal128(P,S)` | `DECIMAL(P,S)` | 最大精度为 38 |
-| `decimal256(P,S)` | `DECIMAL(P,S)` | 最大精度为 76 |
-| `utf8`、`large_utf8` | `TEXT` | |
-| `arrow.json` Extension | `JSON` | 底层类型为 `utf8` 或 `large_utf8` |
-| `lance.json` Extension | `JSON` | 底层类型为 `large_binary`;按 JSON 逻辑类型读取 |
-| `lance.bfloat16` Extension | `FLOAT` | 底层类型为 `fixed_size_binary(2)`;无损提升为
Float32 |
-| `binary`、`large_binary` | `VARBINARY(2147483647)` | |
-| `fixed_size_binary(N)` | `VARBINARY(N)` | 保留固定字节宽度 |
-| `date32(day)`、`date64(ms)` | `DATE` | `date64` 应表示完整自然日 |
-| `time32(s)` | `TIME(0)` | |
-| `time32(ms)` | `TIME(3)` | |
-| `time64(us)`、`time64(ns)` | `TIME(6)` | 纳秒精度截断为微秒 |
-| 无时区 `timestamp(s)` | `DATETIME` | 不随 Session Time Zone 转换 |
-| 无时区 `timestamp(ms)` | `DATETIME(3)` | 不随 Session Time Zone 转换 |
-| 无时区 `timestamp(us)`、`timestamp(ns)` | `DATETIME(6)` | 纳秒精度截断为微秒 |
-| 带时区 `timestamp` | `TIMESTAMPTZ(0-6)` | 保存时间点,按 Doris Session Time Zone 展示 |
-| `struct` | `STRUCT` | 子字段递归映射 |
-| `list`、`large_list`、`fixed_size_list` | `ARRAY` | 元素类型递归映射 |
-| `map` | `MAP` | Key 和 Value 类型递归映射 |
-
-Doris 根据 `ARROW:extension:name` 元数据识别上述扩展类型,并校验其底层存储类型。JSON 扩展映射为 Doris
`JSON`(内部类型 `JSONB`),普通 `utf8`/`large_utf8` 列即使包含 JSON 文本,仍映射为 `TEXT`,不会自动变成
JSON。支持 JSON 读取不代表任意 JSON 路径表达式都能下推;下推范围见[谓词下推](#谓词下推)。
-
-JSON、Duration、Null 和 BFloat16 读取需要 FE 与参与查询的 BE 均包含对应类型支持。旧构建可能仍显示不支持;升级时应同时确认
Schema 识别和实际读取能力。
-
-当前不支持以下类型:
-
-- 非可空的 Arrow `null` 字段。
-- 未列为支持的 Arrow/Lance Extension 类型,例如 Lance Blob v2;已知扩展类型的底层存储与上表不匹配时也不支持。
-- 无法递归映射其子类型的复杂类型。
-- 保留了 Dictionary 标记的 Arrow Dictionary 类型。
-
-对于不支持的顶层列,Catalog 表的 `DESC` 和 Lance 文件 TVF 的 `DESC FUNCTION` 都会保留该列,并显示
`unknown type:
UNSUPPORTED_TYPE`。如果复杂类型的任一子字段无法映射,则整个顶层复杂列会标记为不支持。查询只投影支持的列仍可正常执行;当 SQL
投影不支持的列时,Doris 会在分析阶段报错。例如:
-
-```sql
-SELECT * EXCEPT(blob_col)
-FROM lance_catalog.default.all_types;
-```
-
-:::note
-部分 Lance Java SDK 版本可能在读取 Schema 时丢失 Dictionary 标记,并将 Dictionary
列暴露为物理索引类型。该结果不代表 Doris 已支持 Dictionary 的逻辑值,请勿依赖这一行为。
-:::
+请参阅[Lance 与 Doris 数据类型映射](lance-catalog/doris-type-mapping.md),了解 Doris 4.2
的完整映射表、精度和不支持的类型。
## 谓词下推
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..3870389831a
--- /dev/null
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
@@ -0,0 +1,73 @@
+---
+{
+ "title": "Lance 与 Doris 数据类型映射",
+ "sidebar_label": "Doris 数据类型映射",
+ "description": "Doris 4.2 Lance 类型映射参考:数据类型、精度、嵌套类型和不支持的类型。"
+}
+---
+
+以下表格描述 Doris 4.2(`branch-4.2`)中 Lance Catalog 和 Lance 文件 TVF 的读取类型映射。Doris
不支持写入 Lance。
+
+| Lance / Arrow 类型 | Doris 类型 | 说明 |
+|---|---|---|
+| `null`(可空字段) | `NULL` | 所有值均为 SQL NULL;非可空 Null 字段不支持 |
+| `duration(s/ms/us/ns)` | `BIGINT` | 保留字段声明单位的有符号计数,不统一转换为秒 |
+| `bool` | `BOOLEAN` | |
+| `int8` | `TINYINT` | |
+| `uint8` | `SMALLINT` | 无符号整数无损提升 |
+| `int16` | `SMALLINT` | |
+| `uint16` | `INT` | 无符号整数无损提升 |
+| `int32` | `INT` | |
+| `uint32` | `BIGINT` | 无符号整数无损提升 |
+| `int64` | `BIGINT` | |
+| `uint64` | `LARGEINT` | 无符号整数无损提升 |
+| `float16` | `FLOAT` | 提升为 32 位浮点数 |
+| `float32` | `FLOAT` | |
+| `float64` | `DOUBLE` | |
+| `decimal128(P,S)` | `DECIMAL(P,S)` | 最大精度为 38 |
+| `decimal256(P,S)` | `DECIMAL(P,S)` | 最大精度为 76 |
+| `utf8`、`large_utf8` | `STRING` | |
+| `arrow.json` Extension | `JSON` | 底层类型为 `utf8` 或 `large_utf8` |
+| `lance.json` Extension | `JSON` | 底层类型为 `large_binary`;按 JSON 逻辑类型读取 |
+| `lance.bfloat16` Extension | `FLOAT` | 底层类型为 `fixed_size_binary(2)`;无损提升为
Float32 |
+| `binary`、`large_binary` | `VARBINARY(2147483647)` | |
+| `fixed_size_binary(N)` | `VARBINARY(N)` | 保留固定字节宽度 |
+| `date32(day)`、`date64(ms)` | `DATE` | `date64` 应表示完整自然日 |
+| `time32(s)` | `TIME(0)` | |
+| `time32(ms)` | `TIME(3)` | |
+| `time64(us)`、`time64(ns)` | `TIME(6)` | 纳秒精度截断为微秒 |
+| 无时区 `timestamp(s)` | `DATETIME(0)` | 不随 Session Time Zone 转换 |
+| 无时区 `timestamp(ms)` | `DATETIME(3)` | 不随 Session Time Zone 转换 |
+| 无时区 `timestamp(us)`、`timestamp(ns)` | `DATETIME(6)` | 纳秒精度截断为微秒 |
+| 带时区 `timestamp` | `TIMESTAMPTZ(P)` | 保存时间点,按 Doris Session Time Zone 展示 |
+| `struct` | `STRUCT` | 子字段递归映射 |
+| `list`、`large_list`、`fixed_size_list` | `ARRAY` | 元素类型递归映射 |
+| `map` | `MAP` | Key 和 Value 类型递归映射 |
+
+## 使用说明
+
+时间戳的精度 `P` 按单位确定:秒为 0、毫秒为 3、微秒和纳秒为 6。与 Iceberg/Paimon 的纳秒映射不同,Lance 的纳秒时间戳仍映射为
`DATETIME(6)` 或 `TIMESTAMPTZ(6)`,并截断到微秒。Decimal 要求 `1 <= P <= 76` 且 `0 <= S <=
P`;负 scale 不支持。
+
+Doris 根据 `ARROW:extension:name` 元数据识别上述扩展类型,并校验其底层存储类型。JSON 扩展映射为 Doris
`JSON`(内部类型 `JSONB`),普通 `utf8`/`large_utf8` 列即使包含 JSON 文本,仍映射为 `STRING`,不会自动变成
JSON。支持 JSON 读取不代表任意 JSON 路径表达式都能下推;下推范围见[谓词下推](../lance-catalog.mdx#谓词下推)。
+
+JSON、Duration、Null 和 BFloat16 读取需要 FE 与参与查询的 BE 均包含对应类型支持。旧构建可能仍显示不支持;升级时应同时确认
Schema 识别和实际读取能力。
+
+当前不支持以下类型:
+
+- 非可空的 Arrow `null` 字段。
+- 未列为支持的 Arrow/Lance Extension 类型,例如 Lance Blob v2;已知扩展类型的底层存储与上表不匹配时也不支持。
+- 无法递归映射其子类型的复杂类型。
+- 保留了 Dictionary 标记的 Arrow Dictionary 类型。
+
+对于不支持的顶层列,Catalog 表的 `DESC` 和 Lance 文件 TVF 的 `DESC FUNCTION` 都会保留该列,并显示
`unknown type:
UNSUPPORTED_TYPE`。如果复杂类型的任一子字段无法映射,则整个顶层复杂列会标记为不支持。查询只投影支持的列仍可正常执行;当 SQL
投影不支持的列时,Doris 会在分析阶段报错。例如:
+
+```sql
+SELECT * EXCEPT(blob_col)
+FROM lance_catalog.default.all_types;
+```
+
+:::note
+部分 Lance Java SDK 版本可能在读取 Schema 时丢失 Dictionary 标记,并将 Dictionary
列暴露为物理索引类型。该结果不代表 Doris 已支持 Dictionary 的逻辑值,请勿依赖这一行为。
+:::
+
+实现依据:[LanceTypeConverter.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/lance/metadata/LanceTypeConverter.java)(`branch-4.2`)。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/paimon-catalog.mdx
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/paimon-catalog.mdx
index 47942b0e2c9..e61f6657828 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/paimon-catalog.mdx
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/paimon-catalog.mdx
@@ -334,26 +334,7 @@ ORDER BY entry_name;
## 列类型映射
-| Paimon Type | Doris Type | Comment
|
-| ---------------------------------- | ------------- |
-------------------------------------- |
-| boolean | boolean |
|
-| tinyint | tinyint |
|
-| smallint | smallint |
|
-| integer | int |
|
-| bigint | bigint |
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) |
|
-| varchar | string |
|
-| char | string |
|
-| binary, varbinary | VARBINARY | 自 4.1.5 版本起固定映射为
`VARBINARY`,`enable.mapping.varbinary` 仅作为兼容标记,设为 `false` 不再恢复 `STRING`
映射。4.1.5 之前可通过该属性选择旧映射。 |
-| date | date |
|
-| timestamp\_without\_time\_zone | datetime(N) |
会根据精度进行对应映射。如果精度大于 6,则最大映射到 6。(可能导致精度丢失)
|
-| timestamp\_with\_local\_time\_zone | TIMESTAMPTZ(N) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(N)`,`enable.mapping.timestamp_tz` 仅作为兼容标记,设为 `false` 不再恢复
`DATETIME` 映射。精度最高为 6,超过的部分会丢失。4.1.5 之前可通过该属性选择旧映射。 |
-| array | array |
|
-| map | map |
|
-| row | struct |
|
-| other | UNSUPPORTED |
|
+请参阅[Paimon 与 Doris 数据类型映射](paimon-catalog/doris-type-mapping.md),了解 Doris 4.2
的完整映射表、精度和不支持的类型。
在两个 Paimon JNI Scanner 路径上,Doris 都会保留带引号的顶层列名和嵌套 `STRUCT` 字段名的原始大小写与字符。
包含逗号(`region,code`)、井号(`nested#value`)、冒号(`colon:name`)、空格或 Unicode 字符的名称,除普通
@@ -367,14 +348,6 @@ SQL 标识符引用外无需额外转义。读取时列按不区分大小写的
:::
-> 注:
->
-> 自 4.1.5 版本起,`timestamp_without_time_zone` 映射到
`DATETIME(N)`,`timestamp_with_local_time_zone` 固定映射到
`TIMESTAMPTZ(N)`。后者表示时间点,按会话 `time_zone` 展示;设为
`enable.mapping.timestamp_tz=false` 不能恢复旧映射。
->
-> 可以在 `DESCRIBE table_name` 语句中的 Extra 列查看源类型是否带时区信息。如显示
`WITH_TIMEZONE`,则表示源类型是带时区的类型(该功能自 3.0.8 版本支持)。
->
-> 4.0.3 后开始支持,可以映射 `timestamp_with_local_time_zone` 到 Doris 的 `timestamptz` 类型。
-
## 基础示例
### Hive Metastore
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..ebf11e5508b
--- /dev/null
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
@@ -0,0 +1,42 @@
+---
+{
+ "title": "Paimon 与 Doris 数据类型映射",
+ "sidebar_label": "Doris 数据类型映射",
+ "description": "Doris 4.2 Paimon 类型映射参考:数据类型、精度、嵌套类型和不支持的类型。"
+}
+---
+
+以下表格描述 Doris 4.2(`branch-4.2`)读取 Paimon 外部表 Schema 时的类型映射。写入外部表时还受目标表 Schema
和写入能力限制,不能直接将读取映射反向使用。
+
+| Paimon Type | Doris Type | Comment
|
+| ---------------------------------- | ------------- |
-------------------------------------- |
+| boolean | boolean |
|
+| tinyint | tinyint |
|
+| smallint | smallint |
|
+| integer | int |
|
+| bigint | bigint |
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) |
|
+| varchar(N) | VARCHAR(N) / STRING | `N <= 65533` 时为 `VARCHAR(N)`;更长时为
`STRING`。 |
+| char(N) | CHAR(N) / STRING | `N <= 255` 时为 `CHAR(N)`;更长时为 `STRING`。 |
+| binary(N), varbinary(N) | VARBINARY(N) | 保留声明的字节长度。 |
+| date | date |
|
+| timestamp_without_time_zone(P) | DATETIME(P) / TIMESTAMP_NS | `P <= 6` 时为
`DATETIME(P)`;4.2 中 `P > 6` 时为 `TIMESTAMP_NS`,保留亚微秒精度。 |
+| timestamp\_with\_local\_time\_zone | TIMESTAMPTZ(N) | 自 4.1.5 版本起固定映射为
`TIMESTAMPTZ(N)`。精度最高为 6,超过的部分会丢失。 |
+| array | array |
|
+| map | map |
|
+| row | struct |
|
+| variant | VARIANT | 读取需要 FE 配置 `enable_variant_v2=true`。 |
+| time_without_time_zone | UNSUPPORTED | |
+| other | UNSUPPORTED |
|
+
+## 使用说明
+
+复合类型的子字段递归使用上述映射。`TIMESTAMPTZ` 表示时间点,按会话 `time_zone` 展示。
+
+无时区时间戳和带本地时区时间戳的精度处理不同:前者在 4.2 中可保留纳秒,后者最多保留 6 位小数。`TIMESTAMP_NS` 的范围为
`1677-09-21 00:12:43.145224192` 至 `2262-04-11 23:47:16.854775807`。
+
+执行 `DESCRIBE table_name` 时,Extra 列中的 `WITH_TIMEZONE` 表示源字段带时区信息。
+
+实现依据:[PaimonUtil.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonUtil.java)(`branch-4.2`)。
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/file-formats/lance.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/file-formats/lance.md
index 7bac698894f..227635fefb7 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/file-formats/lance.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/lakehouse/file-formats/lance.md
@@ -15,6 +15,8 @@ Lance 支持自 Apache Doris 4.2 版本开始提供。
[Lance](https://docs.lancedb.com/lance) 是面向分析和 AI 场景的列式数据格式。Doris 可以通过 Lance
Catalog,或通过 `s3()` 和 `local()` 表值函数(TVF)读取 Lance 数据集。
+Lance 的类型映射请参阅 [Doris 数据类型映射](../catalogs/lance-catalog/doris-type-mapping.md)。
+
## 支持的功能
| 功能 | 支持情况 |
diff --git a/sidebars.ts b/sidebars.ts
index 7a4679125fe..2473ec3d403 100644
--- a/sidebars.ts
+++ b/sidebars.ts
@@ -705,12 +705,18 @@ const sidebars: SidebarsConfig = {
label: 'Data Catalogs',
link: {type: 'doc', id: 'lakehouse/catalog-overview'},
items: [
- 'lakehouse/catalogs/hive-catalog',
+ {
+ type: 'category',
+ label: 'Hive Catalog',
+ link: {type: 'doc', id:
'lakehouse/catalogs/hive-catalog'},
+ items:
['lakehouse/catalogs/hive-catalog/doris-type-mapping'],
+ },
{
type: 'category',
label: 'Iceberg Catalog',
link: {type: 'doc', id:
'lakehouse/catalogs/iceberg-catalog'},
items: [
+
'lakehouse/catalogs/iceberg-catalog/doris-type-mapping',
'lakehouse/best-practices/doris-iceberg-capability-matrix',
'lakehouse/best-practices/doris-iceberg',
'lakehouse/best-practices/doris-aws-s3tables',
@@ -731,11 +737,17 @@ const sidebars: SidebarsConfig = {
label: 'Paimon Catalog',
link: {type: 'doc', id:
'lakehouse/catalogs/paimon-catalog'},
items: [
+
'lakehouse/catalogs/paimon-catalog/doris-type-mapping',
'lakehouse/best-practices/doris-paimon-capability-matrix',
'lakehouse/best-practices/doris-paimon',
'lakehouse/best-practices/doris-dlf-paimon',
],
},
+ {
+ type: 'category',
+ label: 'Lance Catalog',
+ items:
['lakehouse/catalogs/lance-catalog/doris-type-mapping'],
+ },
'lakehouse/catalogs/fluss-catalog',
{
type: 'category',
diff --git a/versioned_docs/version-4.x/lakehouse/catalogs/hive-catalog.mdx
b/versioned_docs/version-4.x/lakehouse/catalogs/hive-catalog.mdx
index 940cbdf4361..ad43d74fd69 100644
--- a/versioned_docs/version-4.x/lakehouse/catalogs/hive-catalog.mdx
+++ b/versioned_docs/version-4.x/lakehouse/catalogs/hive-catalog.mdx
@@ -215,28 +215,7 @@ The optional Catalog property `hive.parquet.time-zone`
specifies the writer time
## Column Type Mapping
-| Hive Type | Doris Type | Comment
|
-| ------------- | ------------- |
---------------------------------------------- |
-| boolean | boolean |
|
-| tinyint | tinyint |
|
-| smallint | smallint |
|
-| int | int |
|
-| bigint | bigint |
|
-| date | date |
|
-| timestamp | datetime(6) | Mapped to datetime with precision 6
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) | Defaults to decimal(9, 0) if precision not
specified |
-| char(N) | char(N) |
|
-| varchar(N) | varchar(N) |
|
-| string | string |
|
-| binary | VARBINARY | Since 4.1.5, this type always maps to `VARBINARY`. The
`enable.mapping.varbinary` property is retained for compatibility; setting it
to `false` no longer restores the `STRING` mapping. Earlier versions allow the
property to select the legacy mapping. |
-| timestamp with local time zone | TIMESTAMPTZ | Since 4.1.5, this type always
maps to `TIMESTAMPTZ`. The `enable.mapping.timestamp_tz` property is retained
for compatibility; setting it to `false` no longer restores the `DATETIME`
mapping. Precision is capped at 6, so higher precision is lost. Earlier
versions allow the property to select the legacy mapping. |
-| array | array |
|
-| map | map |
|
-| struct | struct |
|
-| other | unsupported |
|
-
+See [Hive to Doris Data Type Mapping](hive-catalog/doris-type-mapping.md) for
the complete Doris 4.2 mapping table, precision rules, and unsupported types.
## Examples
### Hive Metastore
diff --git
a/versioned_docs/version-4.x/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
b/versioned_docs/version-4.x/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..baaf40f2f85
--- /dev/null
+++
b/versioned_docs/version-4.x/lakehouse/catalogs/hive-catalog/doris-type-mapping.md
@@ -0,0 +1,39 @@
+---
+{
+ "title": "Hive to Doris Data Type Mapping",
+ "sidebar_label": "Doris Data Type Mapping",
+ "description": "Doris 4.2 Hive type mapping reference covering data types,
precision, nested types, and unsupported types."
+}
+---
+
+The following table describes how Doris 4.2 (`branch-4.2`) maps Hive
external-table schemas when reading. Writes also depend on the target schema
and supported write operations; the read mapping is not an automatic inverse
mapping for writes.
+
+| Hive Type | Doris Type | Comment
|
+| ------------- | ------------- |
---------------------------------------------- |
+| boolean | boolean |
|
+| tinyint | tinyint |
|
+| smallint | smallint |
|
+| int | int |
|
+| bigint | bigint |
|
+| date | date |
|
+| timestamp | datetime(6) | Mapped to datetime with precision 6
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) | Defaults to decimal(9, 0) if precision not
specified |
+| char(N) | char(N) |
|
+| varchar(N) | varchar(N) |
|
+| string | string |
|
+| binary | VARBINARY | Since 4.1.5, this type always maps to `VARBINARY`. |
+| timestamp with local time zone | TIMESTAMPTZ(6) | Since 4.1.5, this type
always maps to `TIMESTAMPTZ(6)`. Precision is capped at 6, so higher precision
is lost. |
+| array | array |
|
+| map | map |
|
+| struct | struct |
|
+| other | unsupported |
|
+
+## Usage Notes
+
+Child fields of complex types use the same mappings recursively. `TIMESTAMPTZ`
represents an instant displayed in the session `time_zone`.
+
+Hive Catalog derives schemas from Hive Metastore type strings. `timestamp`
maps to `DATETIME(6)`; nanosecond data in the underlying file does not
automatically change the mapping to `TIMESTAMP_NS`. Types not listed as
supported, including `uniontype`, are unsupported.
+
+Implementation reference:
[HiveMetaStoreClientHelper.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/hive/HiveMetaStoreClientHelper.java)
(`branch-4.2`).
diff --git a/versioned_docs/version-4.x/lakehouse/catalogs/iceberg-catalog.mdx
b/versioned_docs/version-4.x/lakehouse/catalogs/iceberg-catalog.mdx
index 09af8167a25..a6f206d48d3 100644
--- a/versioned_docs/version-4.x/lakehouse/catalogs/iceberg-catalog.mdx
+++ b/versioned_docs/version-4.x/lakehouse/catalogs/iceberg-catalog.mdx
@@ -242,33 +242,7 @@ Since version 4.1.4, the Iceberg identity partition
metadata is delivered with e
## Column Type Mapping
-| Iceberg Type | Doris Type | Comment
|
-| -------------------------------------- | -------------------- |
--------------------------------------- |
-| boolean | boolean |
|
-| integer | int |
|
-| long | bigint |
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) |
|
-| date | date |
|
-| timestamp (Timestamp without timezone) | datetime(6) | Mapped to
datetime with precision 6 |
-| timestamptz (Timestamp with timezone) | TIMESTAMPTZ(6) | Since 4.1.5, this
type always maps to `TIMESTAMPTZ(6)`. The `enable.mapping.timestamp_tz`
property is retained for compatibility; setting it to `false` no longer
restores the `DATETIME` mapping. Precision is capped at 6, so higher precision
is lost. Earlier versions allow the property to select the legacy mapping. |
-| fixed(N) | VARBINARY(N) | Since 4.1.5, the fixed binary width is preserved. |
-| string | string |
|
-| binary | VARBINARY | Since 4.1.5, this type always maps to `VARBINARY`. The
`enable.mapping.varbinary` property is retained for compatibility; setting it
to `false` no longer restores the `STRING` mapping. Earlier versions allow the
property to select the legacy mapping. |
-| uuid | VARBINARY(16) | Since 4.1.5, this type always maps to `VARBINARY`.
The `enable.mapping.varbinary` property is retained for compatibility; setting
it to `false` no longer restores the `STRING` mapping. Earlier versions allow
the property to select the legacy mapping. |
-| struct | struct (supported from version
2.1.3) | |
-| map | map (supported from version 2.1.3)
| |
-| list | array |
|
-| other | UNSUPPORTED |
|
-
-> Note:
->
-> Since 4.1.5, `timestamp` maps to `DATETIME(6)` and `timestamptz` always maps
to `TIMESTAMPTZ(6)`. The latter represents an instant displayed in the session
`time_zone`; `enable.mapping.timestamp_tz=false` cannot restore the old mapping.
->
-> You can check whether the source type has timezone information in the Extra
column of the `DESCRIBE table_name` statement. If it shows `WITH_TIMEZONE`, it
indicates that the source type is a timezone-aware type. (Supported since
3.1.0).
->
-> Supported since version 4.0.3, `timestamptz` (timestamp with time zone) can
be mapped to the Doris `timestamptz` type.
+See [Iceberg to Doris Data Type
Mapping](iceberg-catalog/doris-type-mapping.md) for the complete Doris 4.2
mapping table, precision rules, and unsupported types.
### Column Name Case
diff --git
a/versioned_docs/version-4.x/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
b/versioned_docs/version-4.x/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..d5080921849
--- /dev/null
+++
b/versioned_docs/version-4.x/lakehouse/catalogs/iceberg-catalog/doris-type-mapping.md
@@ -0,0 +1,45 @@
+---
+{
+ "title": "Iceberg to Doris Data Type Mapping",
+ "sidebar_label": "Doris Data Type Mapping",
+ "description": "Doris 4.2 Iceberg type mapping reference covering data
types, precision, nested types, and unsupported types."
+}
+---
+
+The following table describes how Doris 4.2 (`branch-4.2`) maps Iceberg
external-table schemas when reading. Writes also depend on the target schema
and supported write operations; the read mapping is not an automatic inverse
mapping for writes.
+
+| Iceberg Type | Doris Type | Comment
|
+| -------------------------------------- | -------------------- |
--------------------------------------- |
+| boolean | boolean |
|
+| integer | int |
|
+| long | bigint |
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) |
|
+| date | date |
|
+| timestamp (Timestamp without timezone) | datetime(6) | Mapped to
datetime with precision 6 |
+| timestamptz (Timestamp with timezone) | TIMESTAMPTZ(6) | Since 4.1.5, this
type always maps to `TIMESTAMPTZ(6)`. Precision is capped at 6, so higher
precision is lost. |
+| fixed(N) | VARBINARY(N) | Since 4.1.5, the fixed binary width is preserved. |
+| string | string |
|
+| binary | VARBINARY | Since 4.1.5, this type always maps to `VARBINARY`. |
+| uuid | UUID | Native `UUID` in 4.2; Doris 4.1.5 maps this to
`VARBINARY(16)`. |
+| struct | struct (supported from version
2.1.3) | |
+| map | map (supported from version 2.1.3)
| |
+| list | array |
|
+| timestamp_ns (without timezone) | TIMESTAMP_NS | Preserves nanosecond
precision without session time-zone conversion. |
+| timestamptz_ns (with timezone) | UNSUPPORTED | Timezone-aware nanosecond
timestamps are unsupported. |
+| time | UNSUPPORTED | Does not map to Doris `TIME`. |
+| variant | VARIANT | Iceberg V3 Variant; participating BEs must support
Variant reads. |
+| other | UNSUPPORTED |
|
+
+## Usage Notes
+
+Child fields of complex types use the same mappings recursively. `TIMESTAMPTZ`
represents an instant displayed in the session `time_zone`.
+
+`timestamp` and `timestamptz` use microsecond precision. Only timezone-naive
`timestamp_ns` maps to `TIMESTAMP_NS`. Its range is `1677-09-21
00:12:43.145224192` through `2262-04-11 23:47:16.854775807`; values outside
this range cannot be represented.
+
+In `DESCRIBE table_name`, `WITH_TIMEZONE` in the Extra column identifies a
timezone-aware source field.
+
+Parquet writes to Iceberg UUID fields retain the UUID logical annotation,
including nested fields.
+
+Implementation reference:
[IcebergUtils.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/iceberg/IcebergUtils.java)
(`branch-4.2`).
diff --git a/versioned_docs/version-4.x/lakehouse/catalogs/lance-catalog.mdx
b/versioned_docs/version-4.x/lakehouse/catalogs/lance-catalog.mdx
index 1e20a20b4a4..b403731678b 100644
--- a/versioned_docs/version-4.x/lakehouse/catalogs/lance-catalog.mdx
+++ b/versioned_docs/version-4.x/lakehouse/catalogs/lance-catalog.mdx
@@ -508,63 +508,7 @@ lance_catalog default vs_ivf_pq_f32
embedding_ivf_pq_f32 3f9c2a1e-7b4d-
## Type Mapping
-| Lance / Arrow Type | Doris Type | Description |
-|---|---|---|
-| `null` (nullable field) | `NULL` | Every value is SQL NULL; non-nullable
Null fields are unsupported |
-| `duration(s/ms/us/ns)` | `BIGINT` | Preserves the signed count in the
declared unit; does not normalize to seconds |
-| `bool` | `BOOLEAN` | |
-| `int8` | `TINYINT` | |
-| `uint8` | `SMALLINT` | Losslessly widened unsigned integer |
-| `int16` | `SMALLINT` | |
-| `uint16` | `INT` | Losslessly widened unsigned integer |
-| `int32` | `INT` | |
-| `uint32` | `BIGINT` | Losslessly widened unsigned integer |
-| `int64` | `BIGINT` | |
-| `uint64` | `LARGEINT` | Losslessly widened unsigned integer |
-| `float16` | `FLOAT` | Widened to a 32-bit floating-point value |
-| `float32` | `FLOAT` | |
-| `float64` | `DOUBLE` | |
-| `decimal128(P,S)` | `DECIMAL(P,S)` | Maximum precision is 38 |
-| `decimal256(P,S)` | `DECIMAL(P,S)` | Maximum precision is 76 |
-| `utf8`, `large_utf8` | `TEXT` | |
-| `arrow.json` Extension | `JSON` | Requires `utf8` or `large_utf8` storage |
-| `lance.json` Extension | `JSON` | Requires `large_binary` storage; read as
the logical JSON type |
-| `lance.bfloat16` Extension | `FLOAT` | Requires `fixed_size_binary(2)`
storage; widened to Float32 without precision loss |
-| `binary`, `large_binary` | `VARBINARY(2147483647)` | |
-| `fixed_size_binary(N)` | `VARBINARY(N)` | Preserves the fixed byte width |
-| `date32(day)`, `date64(ms)` | `DATE` | A `date64` value must represent a
complete calendar day |
-| `time32(s)` | `TIME(0)` | |
-| `time32(ms)` | `TIME(3)` | |
-| `time64(us)`, `time64(ns)` | `TIME(6)` | Nanosecond precision is truncated
to microseconds |
-| Timezone-naive `timestamp(s)` | `DATETIME` | Not converted according to the
Session Time Zone |
-| Timezone-naive `timestamp(ms)` | `DATETIME(3)` | Not converted according to
the Session Time Zone |
-| Timezone-naive `timestamp(us)`, `timestamp(ns)` | `DATETIME(6)` | Nanosecond
precision is truncated to microseconds |
-| Timezone-aware `timestamp` | `TIMESTAMPTZ(0-6)` | Preserves the instant and
displays it in the Doris Session Time Zone |
-| `struct` | `STRUCT` | Child fields are mapped recursively |
-| `list`, `large_list`, `fixed_size_list` | `ARRAY` | Element types are mapped
recursively |
-| `map` | `MAP` | Key and value types are mapped recursively |
-
-Doris recognizes these extensions through `ARROW:extension:name` metadata and
validates their storage types. JSON extensions map to Doris `JSON` (internally
`JSONB`). An ordinary `utf8`/`large_utf8` column containing JSON text still
maps to `TEXT`; its contents do not automatically change its type. JSON read
support does not imply pushdown of arbitrary JSON path expressions; see
[Predicate Pushdown](#predicate-pushdown) for the supported scope.
-
-Reading JSON, Duration, Null, and BFloat16 requires the corresponding type
support in both the FE and the BEs serving the query. Older builds may still
report these types as unsupported; verify schema discovery and actual reads
when upgrading.
-
-The following types are not currently supported:
-
-- Non-nullable Arrow `null` fields.
-- Arrow/Lance Extension types not listed as supported, such as Lance Blob v2;
known extensions with incompatible storage types are also unsupported.
-- Complex types whose child types cannot be mapped recursively.
-- Arrow Dictionary types that preserve the Dictionary marker.
-
-For an unsupported top-level column, `DESC` on a Catalog table and `DESC
FUNCTION` on a Lance file TVF both preserve the column and display `unknown
type: UNSUPPORTED_TYPE`. If any child of a complex type cannot be mapped, the
whole top-level complex column is marked unsupported. Queries can still project
only supported columns. Doris reports an error during analysis when SQL
projects an unsupported column. For example:
-
-```sql
-SELECT * EXCEPT(blob_col)
-FROM lance_catalog.default.all_types;
-```
-
-:::note
-Some Lance Java SDK versions may lose the Dictionary marker while reading a
Schema and expose a Dictionary column as its physical index type. This behavior
does not mean that Doris supports the logical Dictionary values and must not be
relied upon.
-:::
+See [Lance to Doris Data Type Mapping](lance-catalog/doris-type-mapping.md)
for the complete Doris 4.2 mapping table, precision rules, and unsupported
types.
## Predicate Pushdown
diff --git
a/versioned_docs/version-4.x/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
b/versioned_docs/version-4.x/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..74f65ceea6c
--- /dev/null
+++
b/versioned_docs/version-4.x/lakehouse/catalogs/lance-catalog/doris-type-mapping.md
@@ -0,0 +1,73 @@
+---
+{
+ "title": "Lance to Doris Data Type Mapping",
+ "sidebar_label": "Doris Data Type Mapping",
+ "description": "Doris 4.2 Lance type mapping reference covering data
types, precision, nested types, and unsupported types."
+}
+---
+
+The following table describes read type mappings for Lance Catalog and Lance
file TVFs in Doris 4.2 (`branch-4.2`). Doris does not support writing to Lance.
+
+| Lance / Arrow Type | Doris Type | Description |
+|---|---|---|
+| `null` (nullable field) | `NULL` | Every value is SQL NULL; non-nullable
Null fields are unsupported |
+| `duration(s/ms/us/ns)` | `BIGINT` | Preserves the signed count in the
declared unit; does not normalize to seconds |
+| `bool` | `BOOLEAN` | |
+| `int8` | `TINYINT` | |
+| `uint8` | `SMALLINT` | Losslessly widened unsigned integer |
+| `int16` | `SMALLINT` | |
+| `uint16` | `INT` | Losslessly widened unsigned integer |
+| `int32` | `INT` | |
+| `uint32` | `BIGINT` | Losslessly widened unsigned integer |
+| `int64` | `BIGINT` | |
+| `uint64` | `LARGEINT` | Losslessly widened unsigned integer |
+| `float16` | `FLOAT` | Widened to a 32-bit floating-point value |
+| `float32` | `FLOAT` | |
+| `float64` | `DOUBLE` | |
+| `decimal128(P,S)` | `DECIMAL(P,S)` | Maximum precision is 38 |
+| `decimal256(P,S)` | `DECIMAL(P,S)` | Maximum precision is 76 |
+| `utf8`, `large_utf8` | `STRING` | |
+| `arrow.json` Extension | `JSON` | Requires `utf8` or `large_utf8` storage |
+| `lance.json` Extension | `JSON` | Requires `large_binary` storage; read as
the logical JSON type |
+| `lance.bfloat16` Extension | `FLOAT` | Requires `fixed_size_binary(2)`
storage; widened to Float32 without precision loss |
+| `binary`, `large_binary` | `VARBINARY(2147483647)` | |
+| `fixed_size_binary(N)` | `VARBINARY(N)` | Preserves the fixed byte width |
+| `date32(day)`, `date64(ms)` | `DATE` | A `date64` value must represent a
complete calendar day |
+| `time32(s)` | `TIME(0)` | |
+| `time32(ms)` | `TIME(3)` | |
+| `time64(us)`, `time64(ns)` | `TIME(6)` | Nanosecond precision is truncated
to microseconds |
+| Timezone-naive `timestamp(s)` | `DATETIME(0)` | Not converted according to
the Session Time Zone |
+| Timezone-naive `timestamp(ms)` | `DATETIME(3)` | Not converted according to
the Session Time Zone |
+| Timezone-naive `timestamp(us)`, `timestamp(ns)` | `DATETIME(6)` | Nanosecond
precision is truncated to microseconds |
+| Timezone-aware `timestamp` | `TIMESTAMPTZ(P)` | Preserves the instant and
displays it in the Doris Session Time Zone |
+| `struct` | `STRUCT` | Child fields are mapped recursively |
+| `list`, `large_list`, `fixed_size_list` | `ARRAY` | Element types are mapped
recursively |
+| `map` | `MAP` | Key and value types are mapped recursively |
+
+## Usage Notes
+
+Timestamp precision `P` is 0 for seconds, 3 for milliseconds, and 6 for
microseconds or nanoseconds. Unlike the Iceberg/Paimon nanosecond mappings,
Lance nanosecond timestamps still map to `DATETIME(6)` or `TIMESTAMPTZ(6)` and
are truncated to microseconds. Decimals require `1 <= P <= 76` and `0 <= S <=
P`; negative scales are unsupported.
+
+Doris recognizes these extensions through `ARROW:extension:name` metadata and
validates their storage types. JSON extensions map to Doris `JSON` (internally
`JSONB`). An ordinary `utf8`/`large_utf8` column containing JSON text still
maps to `STRING`; its contents do not automatically change its type. JSON read
support does not imply pushdown of arbitrary JSON path expressions; see
[Predicate Pushdown](../lance-catalog.mdx#predicate-pushdown) for the supported
scope.
+
+Reading JSON, Duration, Null, and BFloat16 requires the corresponding type
support in both the FE and the BEs serving the query. Older builds may still
report these types as unsupported; verify schema discovery and actual reads
when upgrading.
+
+The following types are not currently supported:
+
+- Non-nullable Arrow `null` fields.
+- Arrow/Lance Extension types not listed as supported, such as Lance Blob v2;
known extensions with incompatible storage types are also unsupported.
+- Complex types whose child types cannot be mapped recursively.
+- Arrow Dictionary types that preserve the Dictionary marker.
+
+For an unsupported top-level column, `DESC` on a Catalog table and `DESC
FUNCTION` on a Lance file TVF both preserve the column and display `unknown
type: UNSUPPORTED_TYPE`. If any child of a complex type cannot be mapped, the
whole top-level complex column is marked unsupported. Queries can still project
only supported columns. Doris reports an error during analysis when SQL
projects an unsupported column. For example:
+
+```sql
+SELECT * EXCEPT(blob_col)
+FROM lance_catalog.default.all_types;
+```
+
+:::note
+Some Lance Java SDK versions may lose the Dictionary marker while reading a
Schema and expose a Dictionary column as its physical index type. This behavior
does not mean that Doris supports the logical Dictionary values and must not be
relied upon.
+:::
+
+Implementation reference:
[LanceTypeConverter.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/lance/metadata/LanceTypeConverter.java)
(`branch-4.2`).
diff --git a/versioned_docs/version-4.x/lakehouse/catalogs/paimon-catalog.mdx
b/versioned_docs/version-4.x/lakehouse/catalogs/paimon-catalog.mdx
index e99f36db14b..ac0c4f08233 100644
--- a/versioned_docs/version-4.x/lakehouse/catalogs/paimon-catalog.mdx
+++ b/versioned_docs/version-4.x/lakehouse/catalogs/paimon-catalog.mdx
@@ -339,26 +339,7 @@ The currently dependent Paimon version is 1.4.2 (1.3.1
before 4.1.4).
## Column Type Mapping
-| Paimon Type | Doris Type | Comment
|
-| ---------------------------------- | ------------- |
----------------------------------------------------------------------- |
-| boolean | boolean |
|
-| tinyint | tinyint |
|
-| smallint | smallint |
|
-| integer | int |
|
-| bigint | bigint |
|
-| float | float |
|
-| double | double |
|
-| decimal(P, S) | decimal(P, S) |
|
-| varchar | string |
|
-| char | string |
|
-| binary, varbinary | VARBINARY | Since 4.1.5, this type always maps to
`VARBINARY`. The `enable.mapping.varbinary` property is retained for
compatibility; setting it to `false` no longer restores the `STRING` mapping.
Earlier versions allow the property to select the legacy mapping. |
-| date | date |
|
-| timestamp\_without\_time\_zone | datetime(N) | Mapped according to
precision. If precision is greater than 6, it maps to a maximum of 6 (may cause
precision loss). |
-| timestamp\_with\_local\_time\_zone | TIMESTAMPTZ(N) | Since 4.1.5, this type
always maps to `TIMESTAMPTZ(N)`. The `enable.mapping.timestamp_tz` property is
retained for compatibility; setting it to `false` no longer restores the
`DATETIME` mapping. Precision is capped at 6, so higher precision is lost.
Earlier versions allow the property to select the legacy mapping. |
-| array | array |
|
-| map | map |
|
-| row | struct |
|
-| other | UNSUPPORTED |
|
+See [Paimon to Doris Data Type Mapping](paimon-catalog/doris-type-mapping.md)
for the complete Doris 4.2 mapping table, precision rules, and unsupported
types.
Doris preserves the exact spelling of quoted top-level columns and nested
`STRUCT` fields on both Paimon JNI scanner
paths. Names containing delimiters such as commas (`region,code`), hash signs
(`nested#value`), colons (`colon:name`),
@@ -374,14 +355,6 @@ Versions before 4.0.8 located columns by exact match when
reading, so Paimon and
Since 4.1.5, explicit `REFRESH TABLE`, `REFRESH DATABASE`, and `REFRESH
CATALOG` commands also invalidate the corresponding Paimon SDK caches. After
external schema changes or dropping and recreating a table, use a refresh
command to reload metadata. Queries that have already started retain their
selected snapshot.
-:::info Note
-Since 4.1.5, `timestamp_without_time_zone` maps to `DATETIME(N)`, while
`timestamp_with_local_time_zone` always maps to `TIMESTAMPTZ(N)`. The latter
represents an instant displayed in the session `time_zone`;
`enable.mapping.timestamp_tz=false` cannot restore the old mapping.
-
-You can check whether the source type contains timezone information in the
Extra column of the `DESCRIBE table_name` statement. If it displays
`WITH_TIMEZONE`, it indicates that the source type is a timezone-aware type.
(This feature is supported since 3.0.8)
-
-Supported since version 4.0.3, `timestamp_with_local_time_zone` can be mapped
to Doris `timestamptz` type.
-:::
-
## Examples
### Hive Metastore
diff --git
a/versioned_docs/version-4.x/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
b/versioned_docs/version-4.x/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
new file mode 100644
index 00000000000..4da8d128642
--- /dev/null
+++
b/versioned_docs/version-4.x/lakehouse/catalogs/paimon-catalog/doris-type-mapping.md
@@ -0,0 +1,42 @@
+---
+{
+ "title": "Paimon to Doris Data Type Mapping",
+ "sidebar_label": "Doris Data Type Mapping",
+ "description": "Doris 4.2 Paimon type mapping reference covering data
types, precision, nested types, and unsupported types."
+}
+---
+
+The following table describes how Doris 4.2 (`branch-4.2`) maps Paimon
external-table schemas when reading. Writes also depend on the target schema
and supported write operations; the read mapping is not an automatic inverse
mapping for writes.
+
+| Paimon Type | Doris Type | Comment
|
+| ---------------------------------- | ------------- |
----------------------------------------------------------------------- |
+| boolean | boolean |
|
+| tinyint | tinyint |
|
+| smallint | smallint |
|
+| integer | int |
|
+| bigint | bigint |
|
+| float | float |
|
+| double | double |
|
+| decimal(P, S) | decimal(P, S) |
|
+| varchar(N) | VARCHAR(N) / STRING | `VARCHAR(N)` for `N <= 65533`; otherwise
`STRING`. |
+| char(N) | CHAR(N) / STRING | `CHAR(N)` for `N <= 255`; otherwise `STRING`. |
+| binary(N), varbinary(N) | VARBINARY(N) | Preserves the declared byte length.
|
+| date | date |
|
+| timestamp_without_time_zone(P) | DATETIME(P) / TIMESTAMP_NS | `DATETIME(P)`
for `P <= 6`; in 4.2, `P > 6` maps to `TIMESTAMP_NS`, preserving
sub-microsecond precision. |
+| timestamp\_with\_local\_time\_zone | TIMESTAMPTZ(N) | Since 4.1.5, this type
always maps to `TIMESTAMPTZ(N)`. Precision is capped at 6, so higher precision
is lost. |
+| array | array |
|
+| map | map |
|
+| row | struct |
|
+| variant | VARIANT | Reading requires the FE configuration
`enable_variant_v2=true`. |
+| time_without_time_zone | UNSUPPORTED | |
+| other | UNSUPPORTED |
|
+
+## Usage Notes
+
+Child fields of complex types use the same mappings recursively. `TIMESTAMPTZ`
represents an instant displayed in the session `time_zone`.
+
+Precision handling differs for unzoned and local-zoned timestamps: 4.2 can
preserve nanoseconds for the former, while the latter is capped at six
fractional digits. The `TIMESTAMP_NS` range is `1677-09-21 00:12:43.145224192`
through `2262-04-11 23:47:16.854775807`.
+
+In `DESCRIBE table_name`, `WITH_TIMEZONE` in the Extra column identifies a
timezone-aware source field.
+
+Implementation reference:
[PaimonUtil.java](https://github.com/apache/doris/blob/bcaaa5f293674f1adba0dfa52c8f8f57fb5e9549/fe/fe-core/src/main/java/org/apache/doris/datasource/paimon/PaimonUtil.java)
(`branch-4.2`).
diff --git a/versioned_docs/version-4.x/lakehouse/file-formats/lance.md
b/versioned_docs/version-4.x/lakehouse/file-formats/lance.md
index a906718ad1b..11aa759029a 100644
--- a/versioned_docs/version-4.x/lakehouse/file-formats/lance.md
+++ b/versioned_docs/version-4.x/lakehouse/file-formats/lance.md
@@ -15,6 +15,8 @@ Lance support is available starting from Apache Doris 4.2.
[Lance](https://docs.lancedb.com/lance) is a columnar data format designed for
analytics and AI workloads. Doris can read Lance datasets through a Lance
Catalog or through the `s3()` and `local()` table-valued functions (TVFs).
+For Lance type mappings, see [Doris Data Type
Mapping](../catalogs/lance-catalog/doris-type-mapping.md).
+
## Supported Features
| Feature | Support |
diff --git a/versioned_sidebars/version-4.x-sidebars.json
b/versioned_sidebars/version-4.x-sidebars.json
index d8bc243771d..48497bb81ec 100644
--- a/versioned_sidebars/version-4.x-sidebars.json
+++ b/versioned_sidebars/version-4.x-sidebars.json
@@ -792,7 +792,17 @@
"id": "lakehouse/catalog-overview"
},
"items": [
- "lakehouse/catalogs/hive-catalog",
+ {
+ "type": "category",
+ "label": "Hive Catalog",
+ "link": {
+ "type": "doc",
+ "id": "lakehouse/catalogs/hive-catalog"
+ },
+ "items": [
+ "lakehouse/catalogs/hive-catalog/doris-type-mapping"
+ ]
+ },
{
"type": "category",
"label": "Iceberg Catalog",
@@ -801,6 +811,7 @@
"id": "lakehouse/catalogs/iceberg-catalog"
},
"items": [
+ "lakehouse/catalogs/iceberg-catalog/doris-type-mapping",
"lakehouse/best-practices/doris-iceberg",
"lakehouse/best-practices/doris-aws-s3tables",
"lakehouse/best-practices/doris-aliyun-oss-tables",
@@ -815,7 +826,17 @@
"lakehouse/best-practices/doris-dlf-iceberg"
]
},
- "lakehouse/catalogs/lance-catalog",
+ {
+ "type": "category",
+ "label": "Lance Catalog",
+ "link": {
+ "type": "doc",
+ "id": "lakehouse/catalogs/lance-catalog"
+ },
+ "items": [
+ "lakehouse/catalogs/lance-catalog/doris-type-mapping"
+ ]
+ },
{
"type": "category",
"label": "Paimon Catalog",
@@ -824,6 +845,7 @@
"id": "lakehouse/catalogs/paimon-catalog"
},
"items": [
+ "lakehouse/catalogs/paimon-catalog/doris-type-mapping",
"lakehouse/best-practices/doris-paimon",
"lakehouse/best-practices/doris-dlf-paimon"
]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]