Skip to content

pkg/encoded: add encoding capabilities package for TiFlash dictionary encoding (Phases 1-4)#2

Open
devin-ai-integration[bot] wants to merge 2 commits into
tidb-shard-key-support-v8.5.6from
tidb-encoded-support-v8.5.6
Open

pkg/encoded: add encoding capabilities package for TiFlash dictionary encoding (Phases 1-4)#2
devin-ai-integration[bot] wants to merge 2 commits into
tidb-shard-key-support-v8.5.6from
tidb-encoded-support-v8.5.6

Conversation

@devin-ai-integration

@devin-ai-integration devin-ai-integration Bot commented Jun 16, 2026

Copy link
Copy Markdown

What problem does this PR solve?

Issue Number: ref #xxx

PD needs to track which TiFlash stores support dictionary-encoded operations (Phases 1-4) so TiDB can make informed decisions about enabling encoded query paths cluster-wide.

What is changed and how does it work?

Phase 1 — Base Capabilities:

  • StoreEncodingCapabilities: per-store capability tracking (version, capabilities list, max cardinality)
  • ClusterEncodingStatus: cluster-wide view with AllStoresReady flag and MinEncodingVersion
  • ComputeClusterStatus(): aggregates individual store reports
  • HTTP handler at /pd/api/v1/tiflash/encoding-status

Phases 2-4 — Extended Capabilities:

  • NewFullEncodingCapabilities(): creates v3 store with all 5 capabilities (dict, filter, group-by, bloom, star-join)
  • PhaseCapabilities map: maps encoding version → supported capabilities
  • SupportsPhase() / ClusterSupportsPhase(): version-based phase checks
  • OperationFeasibility: per-operation cluster readiness with stores_ready/stores_total
  • CheckOperationFeasibility() / AllOperationsFeasibility(): checks if specific ops can run on all stores
pkg/encoded: add Phase 1-4 encoding capability tracking and feasibility checks

Check List

Tests

  • Unit test (13 test cases covering capabilities, phases, feasibility, cluster status)

Code changes

  • Has HTTP API interfaces changed (new /pd/api/v1/tiflash/encoding-status endpoint)

Side effects

  • None (additive, feature gated)

Release note

None.

Link to Devin session: https://6sense.devinenterprise.com/sessions/3710f99abca4415ba59b856f0a5588fc
Requested by: @premal

Adds PD-side tracking of TiFlash encoding capabilities:

- StoreEncodingCapabilities: tracks per-store encoding support
  (dictionary encoding, encoded filter/group-by/bloom filter/star join)
- ClusterEncodingStatus: cluster-wide view with AllStoresReady flag
  for safe dictionary encoding enablement
- Registry: thread-safe store for encoding capability reporting
- Handler: HTTP API endpoints for encoding status and registration
  (GET /pd/api/v1/encoding/status, POST /pd/api/v1/encoding/capabilities)
- ComputeClusterStatus: computes min encoding version across stores
- Comprehensive unit tests for all functionality

This enables TiDB's planner to query PD for cluster encoding readiness
before enabling dictionary-encoded operations on TiFlash nodes.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

Adds:
- NewFullEncodingCapabilities(): creates v3 store with all 5 capabilities
- PhaseCapabilities map: phase→capabilities mapping
- SupportsPhase()/ClusterSupportsPhase(): phase version checks
- OperationFeasibility struct: per-operation cluster readiness
- CheckOperationFeasibility()/AllOperationsFeasibility(): checks if
  all TiFlash stores support specific encoded operations

13 tests covering full capability lifecycle.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration devin-ai-integration Bot changed the title pkg/encoded: add encoding capabilities package for TiFlash dictionary encoding pkg/encoded: add encoding capabilities package for TiFlash dictionary encoding (Phases 1-4) Jun 16, 2026
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