MatrixOne ODBC is a thin, experimental fork of MySQL Connector/ODBC 9.7.0 for MatrixOne and Power BI DirectQuery compatibility work. It intentionally keeps the upstream MySQL client protocol and most internal library names unchanged so that failures remain easy to compare with the upstream driver.
This repository currently produces:
myodbc9wandmyodbc9a: Unicode and ANSI ODBC driver libraries with the registered namesMatrixOne ODBC 9.7 Unicode DriverandMatrixOne ODBC 9.7 ANSI Driver.MatrixOne.mez: a Power BI custom connector usingOdbc.DataSource, with DirectQuery enabled and MatrixOne port6001as the default.
The fork stays deliberately narrow: it changes user-visible branding, default
port, packaging registration names, Power BI data-source identity,
authentication SQLSTATE mapping, Unicode transport, and only the catalog or
prepared-result compatibility paths demonstrated by MatrixOne regressions.
MySQL wire protocol and internal myodbc* library names remain close to
upstream. See
MATRIXONE_CHANGES.md.
Prerequisites:
brew install cmake mysql-client unixodbcConfigure and build:
cmake -S . -B build-arm64 \
-DWITH_UNIXODBC=1 \
-DMYSQL_DIR=/opt/homebrew/opt/mysql-client \
-DODBC_INCLUDES=/opt/homebrew/opt/unixodbc/include \
-DODBC_LIB_DIR=/opt/homebrew/opt/unixodbc/lib \
-DODBCINST_LIB_DIR=/opt/homebrew/opt/unixodbc/lib \
-DMYSQLCLIENT_STATIC_LINKING=0 \
-DMYSQL_LINK_FLAGS=-L/opt/homebrew/opt/zstd/lib \
-DWITH_PBI=1
cmake --build build-arm64 --parallelThe Power BI extension is generated as build-arm64/pbi/MatrixOne.mez.
Power BI Desktop testing requires Windows; the ODBC protocol, catalog metadata,
and SQL paths can be exercised independently on macOS or Linux.
Build and run the MatrixOne-specific API test against a registered driver:
cmake --build build-arm64 --target mo_odbc_smoke
export MO_PASSWORD='your-password'
mysql -h 127.0.0.1 -P 6001 -u root -p < test/mo_odbc_smoke.sql
export MO_ODBC_CONNECTION_STRING="DRIVER={MatrixOne ODBC 9.7 Unicode Driver};SERVER=127.0.0.1;DATABASE=mo_odbc_smoke;UID=root;PWD=${MO_PASSWORD};SSLMODE=DISABLED"
./build-arm64/test/mo_odbc_smokeLeaving PORT out of that string intentionally verifies the MatrixOne default
of 6001. Current results are recorded in
docs/COMPATIBILITY.md.
For the Unicode/ANSI 18-case suite covering metadata, descriptors, prepared values, Power BI DirectQuery-shaped SQL, transactions, streaming, diagnostics, concurrency, timeout, and cancellation, follow docs/TESTING.md. Known MatrixOne defects remain visible as issue-linked XFAILs.
Every pull request builds the driver and MatrixOne.mez on Linux and macOS
ARM64. The Linux job also starts a pinned MatrixOne release and runs the ODBC
smoke test, the expected authentication failure path, and the deep suite with
both public driver variants. See
docs/CI.md for check names, artifact retention, and the recommended
merge ruleset.
Use the layered workflow in docs/POWER_BI.md. In short, first reproduce with the ODBC smoke test, then enable unixODBC or Windows ODBC tracing, and only then enable Power Query connector tracing. This identifies whether a failure belongs to connection setup, wire protocol, ODBC metadata, Power Query translation, or MatrixOne SQL semantics.
The baseline is MySQL Connector/ODBC tag 9.7.0, commit
70150742aced011228424c39f9322993d9a468d2. Original Oracle copyrights and
license notices are retained. This derivative remains under GPL-2.0 with the
Universal FOSS Exception; see LICENSE.txt.
MySQL is a trademark of Oracle and/or its affiliates. MatrixOne ODBC is not an Oracle product and is not supported by Oracle.