matrixorigin / matrixorigin/matrixone

[Refactoring]: Add the shared integer-parameter binding contract

Open
#28,977 0 comments 0 reactions 1 assignee Claimed by @ck89119 View on GitHub
kind/refactoring
Dominant language
Go
Stars
1.9k
Forks
311
Avg merge
1d 3h
Merged PRs (30d)
768

Description

## Parent

- #28893

## Scope

Establish the shared binding-layer contract for semantically integral function parameters and migrate SUBSTRING_INDEX as the representative end-to-end consumer.

- Add parameter-owned integer metadata and shared source-domain coercion.
- Preserve exact DECIMAL, approximate FLOAT, explicit REAL, text-prefix, signed/unsigned, NULL, and inactive-row semantics.
- Preserve legacy overload execution identities while excluding compatibility-only entries from new binding.
- Preserve typed prepared-parameter provenance and bounded plan specialization.
- Add MORPC v76 remote execution and persisted-expression admission for new private execution identities.
- Cover selector lowering, constant folding, catalog round trips, mixed-version rejection, and restart recovery.

## Non-goals

- Bulk migration of the remaining inventory.
- Function-specific conversion kernels.
- Global conversion-cost changes.
- Changes to explicit CAST or assignment semantics.

## Acceptance criteria

- SUBSTRING_INDEX binds its count through the canonical INT64 contract.
- Legacy SUBSTRING_INDEX overload identities remain executable but are not selected for new expressions.
- Protocol 75 rejects and protocol 76 accepts new serialized identities.
- Prepared constants, columns, SQL EXECUTE, binary parameters, NULL, exact boundaries, and overflow are covered.
- This issue owns the design review. Follow-up migration issues reuse this approved contract unless they introduce a new semantic or compatibility mechanism.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.