Skip to content

Conversation

@dataroaring
Copy link
Contributor

Summary

This PR adds documentation for the new unique_key_update_mode property in Routine Load that enables flexible partial column updates, corresponding to apache/doris#59896.

Changes

  • partial-column-update.md:

    • Updated caution note to include Routine Load as a supported method
    • Added complete Routine Load section with CREATE and ALTER syntax examples
    • Added caution block for Routine Load-specific limitations
  • routine-load-manual.md:

    • Added unique_key_update_mode property to the job_properties table with all three modes documented
    • Fixed partial_columns link to point to correct documentation
    • Added complete "Flexible Partial Column Update" example with:
      • Sample JSON data with different columns per row
      • Table creation with required properties
      • Routine Load job creation
      • Expected results

Feature Description

The unique_key_update_mode property supports three modes:

Mode Description
UPSERT Default mode. Full row insert/update
UPDATE_FIXED_COLUMNS Partial update where all rows update same columns (equivalent to partial_columns=true)
UPDATE_FLEXIBLE_COLUMNS New - Each row can update different columns

Limitations for UPDATE_FLEXIBLE_COLUMNS

  • JSON format only
  • Cannot use jsonpaths, fuzzy_parse, COLUMNS clause, or WHERE clause
  • Table must have enable_unique_key_skip_bitmap_column=true

Test plan

  • Verify documentation renders correctly
  • Verify all links are working
  • Review examples for accuracy

🤖 Generated with Claude Code

dataroaring and others added 3 commits January 5, 2026 16:43
…o 4.0.1, add FAQs

- Fix start-doris.sh to properly handle docker-compose failure
- Update default Doris version from 2.1.9 to 4.0.1
- Add FAQs section for Mac Docker installation and common errors
- Update docs for versions 3.x and 4.x (EN and CN)
- Fix version example in 3.x docs: use 3.0.8 instead of 2.1.8
- Add security note for credsStore workaround (local dev only)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove reference to 4.0.1 default in 3.x docs - users reading
3.x documentation should use a 3.x version (e.g., 3.0.8)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings January 21, 2026 18:32
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds documentation for the new unique_key_update_mode property in Routine Load that enables flexible partial column updates for Apache Doris. However, the PR also includes unrelated changes to quick-start guides and installation scripts.

Changes:

  • Added Routine Load support to flexible partial column update documentation
  • Added unique_key_update_mode property documentation in routine-load-manual.md with a comprehensive example
  • Fixed partial_columns link to point to correct documentation
  • Updated quick-start guides to version 4.0.1 with Docker FAQ additions (unrelated to PR purpose)
  • Updated start-doris.sh script with version and error handling improvements (unrelated to PR purpose)

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
docs/data-operate/update/partial-column-update.md Added Routine Load section with CREATE/ALTER syntax and limitations for flexible partial column updates
docs/data-operate/import/import-way/routine-load-manual.md Added unique_key_update_mode property documentation and comprehensive flexible partial column update example
docs/gettingStarted/quick-start.mdx Updated default version to 4.0.1 and added Docker-related FAQs (unrelated change)
versioned_docs/version-4.x/gettingStarted/quick-start.mdx Same as above for version 4.x (unrelated change)
versioned_docs/version-3.x/gettingStarted/quick-start.mdx Updated to show 3.0.8 example and added Docker FAQs (unrelated change)
static/files/start-doris.sh Updated default version to 4.0.1 and added error handling (unrelated change)
i18n/zh-CN/docusaurus-plugin-content-docs/version-4.x/gettingStarted/quick-start.mdx Chinese version of 4.x quick-start updates (unrelated change)
i18n/zh-CN/docusaurus-plugin-content-docs/version-3.x/gettingStarted/quick-start.mdx Chinese version of 3.x quick-start updates (unrelated change)
i18n/zh-CN/docusaurus-plugin-content-docs/current/gettingStarted/quick-start.mdx Chinese version of current quick-start updates (unrelated change)

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

:::caution Note:

1. Currently, only the Stream Load import method and tools using Stream Load (e.g. Doris-Flink-Connector) support this feature.
1. Flexible column updates are supported by Stream Load, Routine Load, and tools using Stream Load (e.g. Doris-Flink-Connector).
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The corresponding Chinese documentation file (i18n/zh-CN/docusaurus-plugin-content-docs/current/data-operate/update/partial-column-update.md) has not been updated to include "Routine Load" in the caution note. Line 127 in the Chinese version still only mentions "stream load". This creates an inconsistency between English and Chinese documentation.

Suggested change
1. Flexible column updates are supported by Stream Load, Routine Load, and tools using Stream Load (e.g. Doris-Flink-Connector).
1. Flexible column updates are supported by Stream Load and tools using Stream Load (e.g. Doris-Flink-Connector).

Copilot uses AI. Check for mistakes.
Comment on lines +164 to +204
**Routine Load**

When using Routine Load, add the following property in the `PROPERTIES` clause:

```sql
CREATE ROUTINE LOAD db1.job1 ON tbl1
PROPERTIES (
"format" = "json",
"unique_key_update_mode" = "UPDATE_FLEXIBLE_COLUMNS"
)
FROM KAFKA (
"kafka_broker_list" = "localhost:9092",
"kafka_topic" = "my_topic",
"property.kafka_default_offsets" = "OFFSET_BEGINNING"
);
```

You can also modify the update mode of an existing Routine Load job using `ALTER ROUTINE LOAD`:

```sql
-- Pause the job first
PAUSE ROUTINE LOAD FOR db1.job1;

-- Alter the update mode
ALTER ROUTINE LOAD FOR db1.job1
PROPERTIES (
"unique_key_update_mode" = "UPDATE_FLEXIBLE_COLUMNS"
);

-- Resume the job
RESUME ROUTINE LOAD FOR db1.job1;
```

:::caution Routine Load Limitations
When using `UPDATE_FLEXIBLE_COLUMNS` mode with Routine Load, the following restrictions apply:
- The data format must be JSON (`"format" = "json"`)
- The `jsonpaths` property cannot be specified
- The `fuzzy_parse` option cannot be enabled
- The `COLUMNS` clause cannot be used
- The `WHERE` clause cannot be used
:::
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Routine Load section (lines 164-204) has been added to the English documentation, but the corresponding Chinese documentation file (i18n/zh-CN/docusaurus-plugin-content-docs/current/data-operate/update/partial-column-update.md) does not include this new Routine Load section. This creates a significant documentation gap between languages.

Copilot uses AI. Check for mistakes.
| load_to_single_tablet | Supports importing data to only one tablet in the corresponding partition per task. Default value is false. This parameter can only be set when importing data to OLAP tables with random bucketing. |
| partial_columns | Specifies whether to enable partial column update feature. Default value is false. This parameter can only be set when the table model is Unique and uses Merge on Write. Multi-table streaming does not support this parameter. For details, refer to [Partial Column Update](../../../data-operate/update/update-of-unique-model) |
| partial_columns | Specifies whether to enable partial column update feature. Default value is false. This parameter can only be set when the table model is Unique and uses Merge on Write. Multi-table streaming does not support this parameter. For details, refer to [Partial Column Update](../../../data-operate/update/partial-column-update) |
| unique_key_update_mode | Specifies the update mode for Unique Key tables. Available values are:<ul><li>`UPSERT` (default): Standard insert or update operation for the entire row.</li><li>`UPDATE_FIXED_COLUMNS`: Partial column update where all rows update the same columns. Equivalent to `partial_columns=true`.</li><li>`UPDATE_FLEXIBLE_COLUMNS`: Flexible partial column update where each row can update different columns. Requires JSON format and the table must have `enable_unique_key_skip_bitmap_column=true`. Cannot be used with `jsonpaths`, `fuzzy_parse`, `COLUMNS` clause, or `WHERE` clause.</li></ul>For details, refer to [Partial Column Update](../../../data-operate/update/partial-column-update#flexible-partial-column-updates) |
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The unique_key_update_mode property documentation (line 410) and the "Flexible Partial Column Update" example (lines 1366-1442) have been added to the English documentation, but the corresponding Chinese documentation file (i18n/zh-CN/docusaurus-plugin-content-docs/current/data-operate/import/import-way/routine-load-manual.md) does not include these additions. This creates a significant documentation gap between English and Chinese versions.

Suggested change
| unique_key_update_mode | Specifies the update mode for Unique Key tables. Available values are:<ul><li>`UPSERT` (default): Standard insert or update operation for the entire row.</li><li>`UPDATE_FIXED_COLUMNS`: Partial column update where all rows update the same columns. Equivalent to `partial_columns=true`.</li><li>`UPDATE_FLEXIBLE_COLUMNS`: Flexible partial column update where each row can update different columns. Requires JSON format and the table must have `enable_unique_key_skip_bitmap_column=true`. Cannot be used with `jsonpaths`, `fuzzy_parse`, `COLUMNS` clause, or `WHERE` clause.</li></ul>For details, refer to [Partial Column Update](../../../data-operate/update/partial-column-update#flexible-partial-column-updates) |

Copilot uses AI. Check for mistakes.
Comment on lines +164 to +204
**Routine Load**

When using Routine Load, add the following property in the `PROPERTIES` clause:

```sql
CREATE ROUTINE LOAD db1.job1 ON tbl1
PROPERTIES (
"format" = "json",
"unique_key_update_mode" = "UPDATE_FLEXIBLE_COLUMNS"
)
FROM KAFKA (
"kafka_broker_list" = "localhost:9092",
"kafka_topic" = "my_topic",
"property.kafka_default_offsets" = "OFFSET_BEGINNING"
);
```

You can also modify the update mode of an existing Routine Load job using `ALTER ROUTINE LOAD`:

```sql
-- Pause the job first
PAUSE ROUTINE LOAD FOR db1.job1;

-- Alter the update mode
ALTER ROUTINE LOAD FOR db1.job1
PROPERTIES (
"unique_key_update_mode" = "UPDATE_FLEXIBLE_COLUMNS"
);

-- Resume the job
RESUME ROUTINE LOAD FOR db1.job1;
```

:::caution Routine Load Limitations
When using `UPDATE_FLEXIBLE_COLUMNS` mode with Routine Load, the following restrictions apply:
- The data format must be JSON (`"format" = "json"`)
- The `jsonpaths` property cannot be specified
- The `fuzzy_parse` option cannot be enabled
- The `COLUMNS` clause cannot be used
- The `WHERE` clause cannot be used
:::
Copy link

Copilot AI Jan 21, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The versioned English documentation files (versioned_docs/version-3.x/data-operate/update/partial-column-update.md and versioned_docs/version-4.x/data-operate/update/partial-column-update.md) have not been updated with the new Routine Load section. Since this feature is supported in version 3.1.0 and above (as mentioned in the documentation), the version-3.x and version-4.x documentation should also be updated to include the Routine Load support.

Copilot uses AI. Check for mistakes.
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Add documentation for the new `unique_key_update_mode` property in Routine Load
that enables flexible partial column updates where different rows can update
different columns (PR #59896).

Changes (English):
- Update partial-column-update.md to include Routine Load as supported method
- Add Routine Load syntax examples with CREATE and ALTER commands
- Add `unique_key_update_mode` property to routine-load-manual.md job_properties
- Add complete example for flexible partial column update in Routine Load
- Document limitations for UPDATE_FLEXIBLE_COLUMNS mode

Changes (Chinese):
- Update partial-column-update.md to include Routine Load support
- Add Routine Load section with syntax and limitations
- Add `unique_key_update_mode` property to routine-load-manual.md
- Add complete flexible partial column update example

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@dataroaring dataroaring force-pushed the docs/flexible-partial-update-routine-load branch from 8581399 to 6fbf370 Compare January 22, 2026 22:56
@dataroaring dataroaring merged commit ab3f192 into apache:master Jan 23, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant