matrixorigin / matrixorigin/matrixone

[Feature Request]: Establish first-class MatrixOne ODBC support and compatibility testing

Open
#26,677 1 comment 0 reactions 1 assignee Claimed by @iamlinjunhong View on GitHub
area/compatibility kind/feature priority/p0
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?

MatrixOne speaks the MySQL wire protocol, but ODBC and BI clients depend on behavior beyond basic protocol connectivity: ODBC metadata, SQLSTATE mapping, prepared statements and parameter binding, Unicode conversion, transactions, cancellation, timeouts, TLS, and BI-generated SQL.

Power BI users currently have to choose between the built-in MySQL connector and an unverified MySQL ODBC driver path. When compatibility breaks, it is difficult to determine whether the problem is in Power BI, the ODBC driver, the MySQL compatibility layer, or MatrixOne itself.

### Describe the feature you would like

Establish a first-class MatrixOne ODBC compatibility project with:

1. A MatrixOne-branded ODBC driver, initially derived from MySQL Connector/ODBC where practical.
2. A documented Windows x64 installation and DSN workflow suitable for Power BI, plus Linux x86_64 and macOS ARM64 developer builds.
3. A reproducible compatibility suite that runs against a real MatrixOne instance.
4. CI coverage for driver build, connection, authentication failures, metadata, parameter binding, data types, transactions, Unicode, large result sets, timeout and cancellation, concurrency, and representative BI queries.
5. Stable error classification and ODBC SQLSTATE behavior so client and server failures can be diagnosed independently.
6. A published compatibility matrix across MatrixOne releases, driver releases, operating systems, and BI clients.

An initial experimental driver and CI are available at:
https://github.com/iamlinjunhong/matrixone-odbc

### Describe implementation you have considered

Use a layered approach:

- Driver unit and ABI tests that do not require a server.
- ODBC Driver Manager integration tests through unixODBC on Linux and the native driver manager on Windows.
- Differential tests comparing selected behavior with MySQL 8.0 where MatrixOne intends compatibility.
- End-to-end tests against a pinned MatrixOne release and, separately, the current MatrixOne development build.
- Power BI oriented probes for schema discovery, catalog metadata, type mapping, generated SQL, DirectQuery, and Import mode.
- Minimal reproducible MatrixOne issues for server-side incompatibilities found by the suite; driver-side deviations remain in the driver repository.

The server contract should be written down before compatibility work grows: supported authentication modes, session variables, prepared statement behavior, metadata fields, error codes, and intentionally unsupported MySQL behavior.

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

Primary use case: connect Power BI and other ODBC-based tools to MatrixOne with a supportable, diagnosable path.

Suggested rollout:

1. Experimental driver and automated compatibility suite.
2. Windows x64 package and Power BI Import validation.
3. DirectQuery, TLS, cancellation, and concurrency hardening.
4. Versioned compatibility matrix and support policy.
5. Consider moving or publishing the driver under the MatrixOrigin organization after review.

Existing users of MySQL Connector/ODBC can continue using it during the experimental phase. The MatrixOne driver should use a distinct driver name and DSN so both can be installed side by side.

### Acceptance criteria

- A clean Windows x64 runner can install the driver and connect to a real MatrixOne instance through ODBC.
- Linux CI builds both ANSI and Unicode variants and executes positive and negative connection tests.
- The suite covers catalog and type metadata, prepared statements, parameter arrays, transactions, Unicode, large values, SQLSTATE mappings, timeout and cancellation, and concurrent connections.
- Power BI can enumerate schemas and tables, import a representative model, and run documented DirectQuery scenarios.
- Known deviations are documented as intentional or linked to focused MatrixOne or driver issues.
- CI results and driver artifacts are reproducible for supported MatrixOne releases.

### Additional information

This issue is intended as the umbrella feature and acceptance tracker. Individual MatrixOne server defects discovered during implementation should be filed as separate minimal reproduction issues and linked back here.

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.