Skip to content

columnar: pin CSE FTS Spec v1 on cloud-engine - #11026

Draft
3pointer wants to merge 5 commits into
pingcap:masterfrom
3pointer:agent/fts-spec-v1-index-fields
Draft

columnar: pin CSE FTS Spec v1 on cloud-engine#11026
3pointer wants to merge 5 commits into
pingcap:masterfrom
3pointer:agent/fts-spec-v1-index-fields

Conversation

@3pointer

@3pointer 3pointer commented Aug 10, 2026

Copy link
Copy Markdown

What problem does this PR solve?

Issue Number: N/A

Problem Summary:

TiDB/CSE FTS Spec v1 uses full_text_index.index_fields as the canonical ordered physical field layout. CSE now owns parsing, validation, and conversion of that metadata. This PR now pins the latest fts_spec_v1 after its cloud-engine rebase (36128849380c), including match-expression query protocol support from tidbcloud/cloud-storage-engine#5801.

The production TiFlash path builds CSE through contrib/tiflash-columnar-hub, so TiFlash only needs to pin that CSE revision. TiFlash C++ does not need to parse or validate the FTS fields.

What is changed and how it works?

columnar: pin CSE FTS Spec v1 on cloud-engine
  • Bump contrib/cloud-storage-engine to 36128849380c, the latest fts_spec_v1 head after the cloud-engine rebase.
  • Align the columnar-hub workspace's Tantivy patch with CSE's pingcap/tantivy:cse-0.22.1 and refresh Cargo.lock. This parent-workspace patch is required because Cargo ignores a child workspace's [patch.crates-io] when CSE is built by columnar hub.
  • Keep TiFlash C++ unchanged. Schema parsing, Analyzer validation, ordered/repeated column_id handling, Analyzer parameters, and enable_bm25 remain in CSE.

Metadata compatibility:

  • Spec v1 canonical metadata is ordered index_fields; old filter_columns and transitional fields are not used as the physical layout.
  • Legacy parser_type remains readable in CSE for rolling upgrades of existing single-field indexes.

Deployment order:

  1. Land and deploy the CSE change and this TiFlash/columnar-hub pin.
  2. Only then allow TiDB to emit new multi-field FTS DDL.

Check List

Tests

  • Unit test
  • Integration test
  • Manual test (details below)
  • No code

Completed locally on Apple arm64 (revalidated with CSE 36128849380c):

  • cargo check --locked --manifest-path hub-runtime/Cargo.toml
  • make debug, producing an arm64 libtiflash_proxy.dylib
  • cargo fmt --all -- --check

Pending:

  • TiFlash X64/ARM64 CI builds.
  • End-to-end round-trip using TableInfo JSON emitted by a real TiDB instance.

Side effects

  • Performance regression: Consumes more CPU
  • Performance regression: Consumes more Memory
  • Breaking backward compatibility

Documentation

  • Affects user behaviors
  • Contains syntax changes
  • Contains variable changes
  • Contains experimental features
  • Changes MySQL compatibility

Release note

None

Signed-off-by: 3pointer <l3pointer@foxmail.com>
Signed-off-by: 3pointer <l3pointer@foxmail.com>
@ti-chi-bot

ti-chi-bot Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@ti-chi-bot ti-chi-bot Bot added do-not-merge/needs-linked-issue release-note-none Denotes a PR that doesn't merit a release note. do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. labels Aug 10, 2026
@ti-chi-bot

ti-chi-bot Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign fuzhe1989 for approval. For more information see the Code Review Process.
Please ensure that each of them provides their approval before proceeding.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@ti-chi-bot ti-chi-bot Bot added the size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. label Aug 10, 2026
@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f22214d7-cf0f-4d39-bc11-22c915211a0c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Signed-off-by: 3pointer <l3pointer@foxmail.com>
@ti-chi-bot ti-chi-bot Bot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Aug 10, 2026
Signed-off-by: 3pointer <l3pointer@foxmail.com>
@3pointer 3pointer changed the title tiflash: pass through FTS Spec v1 index_fields columnar: pin CSE FTS Spec v1 on cloud-engine Aug 10, 2026
Signed-off-by: 3pointer <l3pointer@foxmail.com>
@ti-chi-bot

ti-chi-bot Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

[FORMAT CHECKER NOTIFICATION]

Notice: To remove the do-not-merge/needs-linked-issue label, please provide the linked issue number on one line in the PR body, for example: Issue Number: close #123 or Issue Number: ref #456.

📖 For more info, you can check the "Contribute Code" section in the development guide.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

do-not-merge/needs-linked-issue do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. release-note-none Denotes a PR that doesn't merit a release note. size/M Denotes a PR that changes 30-99 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant