matrixorigin / matrixorigin/matrixone

[Feature Request]: Assorted unimplemented functions & locking/set-op syntax

Open
#25,107 2 comments 0 reactions 1 assignee Claimed by @XuPeng-SH View on GitHub
kind/feature
Dominant language
Go
Stars
1.9k
Forks
311
Avg merge
1d 3h
Merged PRs (30d)
768

Description

### Is there an existing issue for the same feature request?

- [X] I have checked the existing issues.

### Is your feature request related to a problem?

Found via cross-language ORM compatibility testing (PHP / Python / Java / Node.js) on `8.0.30-MatrixOne-v4.0.0-rc3` (MySQL 8.0.30 wire protocol). A group of smaller MySQL-compatibility gaps cause ORM/query failures; each was verified with raw SQL.

### Describe the feature you'd like

Implement / accept the following standard MySQL 8.0 functions and syntax (grouped by the error code currently returned):

- **Functions (`20105`):** `CHARACTER_LENGTH` (alias of `CHAR_LENGTH`), `OCTET_LENGTH`*, `UUID_SHORT`, `COERCIBILITY`, `WEIGHT_STRING`, `BENCHMARK`, `INET6_ATON`, `l1_distance`, spatial `ST_*` / `POINT` constructors.
- **Locking reads (`1064`):** `LOCK IN SHARE MODE`, `FOR SHARE`, `SKIP LOCKED`, `NOWAIT`.
- **Set ops (`20102`):** `EXCEPT ALL` / `INTERSECT ALL`.
- **DDL (`1064`/`20101`):** `CREATE INDEX … USING BTREE`, `ALTER TABLE … ADD … CHECK`, named `WINDOW` clause.
- **Cast (`20101`/`1064`):** `CAST/CONVERT(x AS CHAR(n))` errors on truncation instead of truncating; `CAST … AS NCHAR` / `… CHARACTER SET` rejected.
- **Date arg strictness (`20203`):** `HOUR('11:30:00')` / `MINUTE`/`SECOND` reject a bare time string (require a `TIME`/`DATETIME` typed arg).

(\* some of these may already be implemented in newer builds — please verify against current `main`.)

### Describe implementation you've considered

N/A — these are standard MySQL 8.0 functions/clauses; matching MySQL semantics is sufficient.

### Documentation, Adoption, Use Case, Migration Strategy

These appear in queries emitted by common ORMs/drivers across PHP / Python / Java / Node.js; supporting them removes per-feature workarounds when porting MySQL applications. Note: `FOR UPDATE SKIP LOCKED` is already tracked in #23126.

### Additional information

**Version:** 8.0.30-MatrixOne-v4.0.0-rc3.

**Background:** dengn/php-tester#1, dengn/php-tester#5, dengn/php-tester#6.

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.