Skip to content

Tracking: Paimon table write support #65086

Open

Description

@suxiaogang223

Background

Apache Doris already supports reading Apache Paimon tables through External Catalog. To complete the read/write experience for lakehouse workloads, we are adding support for writing data from Doris into Paimon tables, so users can write query results and computed data into Paimon tables using standard Doris SQL.

This issue tracks the feature requirements and implementation plan for Paimon write support.

Goals

  • Support INSERT INTO for Paimon tables.
  • Support INSERT OVERWRITE for Paimon tables.
  • Support append-only tables and primary-key tables.
  • Support partitioned, fixed bucket, and unaware bucket tables.
  • Support primitive types and complex types (ARRAY, MAP, STRUCT).
  • Align Doris transaction semantics with Paimon commit and abort.
  • Preserve correctness for failure, retry, and rollback scenarios.

Current Status

Core Paimon JNI write support and the main merged follow-up work are implemented on branch-4.1:

Status legend:

  • ✅ Implemented
  • 🚧 Partially implemented; remaining modes are follow-up work
  • ➡️ Follow-up work

Feature Checklist

Write Path & DML

Feature Status
INSERT INTO ... SELECT ... ✅
INSERT INTO ... VALUES ... ✅
Non-partitioned INSERT OVERWRITE ✅
Static partition overwrite ✅
Partial static partition overwrite ✅
Dynamic partition overwrite ✅
Empty-input overwrite ✅
Row-level UPDATE / DELETE / MERGE SQL ✅

Table Types & Write Semantics

Feature Status
Append-only tables ✅
Primary-key full-row writes ✅
Deduplicate merge engine ✅
Partial-update merge engine ✅
Aggregation merge engine ✅
First-row merge engine ✅
Omitted-column schema defaults ✅

Partitioning & Bucketing

Feature Status
Non-partitioned tables ✅
Partitioned tables ✅
Fixed bucket ✅
Unaware bucket ✅
Postpone bucket ✅
Hash dynamic bucket ✅
Key dynamic bucket ✅
Bucket-aware parallel distribution 🚧

Fixed-bucket tables now use Paimon-compatible (partition, bucket) routing so each bucket has one stable writer within a write job. Bucket-unaware tables retain concurrent random distribution. Hash-dynamic, key-dynamic, custom bucket functions, and unsupported partition or bucket key types continue to use the correctness-first single-writer fallback.

Data Types

Feature Status
Primitive types ✅
DECIMAL, DATE, TIMESTAMP ✅
ARRAY, MAP, STRUCT ✅
Nested NULL handling ✅

Commit & Transaction

Feature Status
FE-coordinated atomic commit ✅
Multiple-writer commit aggregation ✅
Commit idempotency and reconciliation ✅
Abort and rollback cleanup ✅
Commit-message deduplication ✅
Empty overwrite commit ✅

Write Backend

Feature Status
Java SDK backend through JNI ✅
Rust SDK backend through FFI ➡️ Follow-up PR

Changelog & Compaction

Feature Status
Changelog producer: None ✅
Changelog producer: Input ✅
Changelog producer: Lookup ✅
Changelog producer: FullCompaction ✅
Automatic write-time compaction correctness ✅

Catalog & Storage

Feature Status
Filesystem catalog ✅
HDFS ✅
Object storage ✅
HMS catalog suite ✅
REST catalog suite ✅

The HMS and REST catalog write suites have been added under external_table_p2.

Schema & DDL

Feature Status
Paimon CREATE TABLE ✅
CREATE properties and write integration ✅
ADD/DROP/RENAME/MODIFY COLUMN ✅
Column reorder ✅
Schema-change and write integration ✅
Latest remote-schema projection ✅
Typed partition metadata ✅

Remaining Follow-up Work

  1. Bucket-aware parallel routing for hash-dynamic, key-dynamic, custom bucket functions, and currently unsupported key types.
  2. Rust FFI write backend.
  3. Paimon Branch/Tag lifecycle and branch writes: [Feature](paimon) Support Branch/Tag lifecycle and branch writes #67336
  4. Paimon maintenance procedures and actions: [Feature](catalog) Support Paimon maintenance procedures and actions #67337

Activity

  1. self-assigned this
    on Jul 1, 2026
  2. changed the title [-]Support writing to Apache Paimon tables[/-] [+]Tracking: Paimon table write support[/+] on Jul 14, 2026
  3. added 4 commits that reference this issue on Jul 16, 2026
    de32257
    92703b1
    bebb70b
    d6183d6
  4. suxiaogang223 commented on Jul 31, 2026

    @suxiaogang223
    MemberAuthor

    Variant V2 write support is tracked in #66321. It covers lossless value/metadata transport, nested Variant values, V2-only analysis checks, and Paimon Parquet shredding/unshredding regression coverage.

  5. suxiaogang223 commented on Aug 6, 2026

    @suxiaogang223
    MemberAuthor

    upgrade paimon 1.4.2 to support variant write #66346

  6. 282 remaining items

  7. added 11 commits that reference this issue on Sep 29, 2026
    4872fed
    e2561c2
    5216ba7
    fd06842
    28d406c
    1865105
    01cb339
    b4ed7c9
    3aae283
    8eebab9
    8c8131d
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions