MySQL Compatibility Matrix
Auto-generated from
mysql_compatfrontmatter acrossdocs/MatrixOne/Reference/SQL-Reference/**,docs/MatrixOne/Reference/Functions-and-Operators/**,docs/MatrixOne/Reference/Operators/**,docs/MatrixOne/Reference/Data-Types/**,docs/MatrixOne/Reference/Language-Structure/**. Do not edit by hand — re-runnode scripts/generate-compat-matrix.jsafter updating any source page.
Summary
| Status | Count |
|---|---|
| ✅ Full | 142 |
| ⚠️ Partial | 62 |
| ❌ None | 0 |
| 🟣 MatrixOne-only | 93 |
| ❓ Unknown | 73 |
| Total | 370 |
SQL Statements
| Status | Count |
|---|---|
| ✅ Full | 30 |
| ⚠️ Partial | 43 |
| 🟣 MatrixOne-only | 57 |
| Total | 130 |
SQL Statements
| Statement | MySQL Compat | Notes |
|---|---|---|
| Type of SQL Statements | 🟣 MatrixOne-only | [MO-only] Index page describing MatrixOne's own SQL statement taxonomy; not a MySQL-equivalent concept. |
Data Control Language (DCL)
| Statement | MySQL Compat | Notes |
|---|---|---|
| ALTER ACCOUNT | 🟣 MatrixOne-only | [MO-only] ALTER ACCOUNT |
| ALTER USER | ⚠️ Partial | Only ALTER USER can change passwords; account-limit clauses not honoured |
| CREATE ACCOUNT | 🟣 MatrixOne-only | [MO-only] CREATE ACCOUNT … ADMIN_NAME … |
| CREATE ROLE | ⚠️ Partial | Role exists inside MatrixOne's multi-account model; roles are account-scoped, not server-global as in MySQL. |
| CREATE USER | ⚠️ Partial | IDENTIFIED BY is the only supported password form; IDENTIFIED WITH plugins not supported Connection-IP whitelists and connection-limit clauses not supported COMMENT and ATTRIBUTE clauses are accepted syntactically but not honoured User identifier is a bare username scoped to the current account; MySQL uses 'user'@'host' tuples |
| DROP ACCOUNT | 🟣 MatrixOne-only | [MO-only] DROP ACCOUNT |
| DROP ROLE | ⚠️ Partial | Role exists inside MatrixOne's multi-account model; roles are account-scoped, not server-global as in MySQL. |
| DROP USER | ⚠️ Partial | User identifier is a bare username scoped to the current account; MySQL uses 'user'@'host' tuples. |
| GRANT | ⚠️ Partial | Authorization logic differs from MySQL — MatrixOne evaluates via its role/account model User identifier is a bare username scoped to the current account; MySQL uses 'user'@'host' tuples [MO-only] GRANT ... ON ACCOUNT * — account-level privileges have no MySQL counterpart[MO-only] GRANT ... ON DATABASE * — MatrixOne-specific database-level grant target |
| REVOKE | ⚠️ Partial | Recovery logic differs from MySQL — privileges return to the role/account graph User identifier is a bare username scoped to the current account; MySQL uses 'user'@'host' tuples [MO-only] REVOKE ... ON ACCOUNT * — account-level privileges have no MySQL counterpart[MO-only] REVOKE ... ON DATABASE * — MatrixOne-specific database-level revoke target |
| Role Rewrite Rules (ALTER ROLE ... RULE / SHOW RULES) | 🟣 MatrixOne-only | — |
Data Definition Language (DDL)
| Statement | MySQL Compat | Notes |
|---|---|---|
| ALTER PITR | 🟣 MatrixOne-only | [MO-only] ALTER PITR |
| ALTER PUBLICATION | 🟣 MatrixOne-only | [MO-only] ALTER PUBLICATION |
| ALTER REINDEX | 🟣 MatrixOne-only | [MO-only] ALTER … REINDEX (rebuild vector index) |
| ALTER SEQUENCE | 🟣 MatrixOne-only | [MO-only] ALTER SEQUENCE |
| ALTER STAGE | 🟣 MatrixOne-only | [MO-only] ALTER STAGE |
| ALTER TABLE | ⚠️ Partial | CHANGE [COLUMN], MODIFY [COLUMN], RENAME COLUMN, ADD/DROP PRIMARY KEY, ALTER COLUMN ORDER BY cannot be combined with other clauses in the same ALTER TABLE Temporary tables cannot be altered Tables created with CLUSTER BY cannot be altered ALTER TABLE does not support PARTITION operations |
| ALTER VIEW | ⚠️ Partial | Inherits CREATE VIEW limitations: no WITH CHECK OPTION, no DEFINER = user clause |
| Branch Protect Snapshots | 🟣 MatrixOne-only | — |
| CREATE CLONE | 🟣 MatrixOne-only | [MO-only] CREATE TABLE … CLONE db.table [TO ACCOUNT …] |
| CREATE CLUSTER TABLE | 🟣 MatrixOne-only | [MO-only] CREATE CLUSTER TABLE |
| CREATE DATABASE | ⚠️ Partial | Chinese database names not supported Only utf8mb4 / utf8mb4_bin are supported and cannot be changed ENCRYPTION clause accepted but inert |
| CREATE DYNAMIC TABLE | 🟣 MatrixOne-only | [MO-only] CREATE DYNAMIC TABLE |
| CREATE EXTERNAL TABLE | 🟣 MatrixOne-only | [MO-only] CREATE EXTERNAL TABLE |
| Create Fulltext Index | ⚠️ Partial | MatrixOne full-text index is implemented on TAE storage with CJK/English optimizations; MySQL implements it on InnoDB/MyISAM with different stopword and parser semantics. |
| CREATE FUNCTION...LANGUAGE PYTHON AS | 🟣 MatrixOne-only | [MO-only] CREATE FUNCTION … LANGUAGE PYTHON AS … |
| CREATE FUNCTION...LANGUAGE SQL AS | ⚠️ Partial | Only LANGUAGE SQL and LANGUAGE PYTHON are supported; usage differs significantly from MySQL stored functions |
| CREATE INDEX | ⚠️ Partial | Secondary indexes are syntactically accepted but do not yet provide query speed-up Foreign keys do not support ON CASCADE DELETE [MO-only] USING IVFFLAT — vector index for approximate nearest neighbour [MO-only] USING HNSW — vector index for approximate nearest neighbour [MO-only] USING MASTER — composite master index |
| CREATE INDEX USING HNSW | 🟣 MatrixOne-only | [MO-only] CREATE INDEX … USING HNSW |
| CREATE INDEX USING IVFFLAT | 🟣 MatrixOne-only | [MO-only] CREATE INDEX … USING IVFFLAT |
| CREATE PITR | 🟣 MatrixOne-only | [MO-only] CREATE PITR … RANGE N {h|d|mo|y} |
| CREATE PUBLICATION | 🟣 MatrixOne-only | [MO-only] CREATE PUBLICATION |
| CREATE SEQUENCE | 🟣 MatrixOne-only | [MO-only] CREATE SEQUENCE (PostgreSQL-style) |
| CREATE SNAPSHOT | 🟣 MatrixOne-only | [MO-only] CREATE SNAPSHOT FOR {ACCOUNT|DATABASE|TABLE|CLUSTER} |
| CREATE SOURCE | 🟣 MatrixOne-only | [MO-only] CREATE SOURCE (stream/Kafka connector) |
| CREATE STAGE | 🟣 MatrixOne-only | [MO-only] CREATE STAGE (external file-system binding) |
| CREATE TABLE | ⚠️ Partial | ENGINE= clause in table definition not supported (MatrixOne has a single TAE engine) Spatial and SET types not supported; MEDIUMINT not supported BOOL is a native boolean type, not an INT alias as in MySQL AUTO_INCREMENT step is always 1; @@auto_increment_increment / @@auto_increment_offset are syntactically accepted but inert Partitioning accepts syntax but only HASH and KEY participate in partition pruning (RANGE/LIST/RANGE COLUMNS/LIST COLUMNS are syntax-only); subpartitioning is syntax-only; ADD/DROP/TRUNCATE PARTITION not supported [MO-only] CLUSTER BY (col, …) — pre-sort columns to accelerate queries |
| CREATE TABLE ... LIKE | ✅ Full | — |
| CREATE TABLE AS SELECT | ✅ Full | — |
| CREATE TASK (SQL Task) | 🟣 MatrixOne-only | — |
| CREATE VIEW | ⚠️ Partial | WITH CHECK OPTION clause not supported DEFINER = user clause not supported; SQL SECURITY {DEFINER | INVOKER} is supported ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE} clause not supported |
| CREATE...FROM...PUBLICATION... | 🟣 MatrixOne-only | [MO-only] CREATE DATABASE … FROM … PUBLICATION … |
| DATA BRANCH CREATE | 🟣 MatrixOne-only | [MO-only] DATA BRANCH CREATE (Git-for-Data) |
| DATA BRANCH DELETE | 🟣 MatrixOne-only | [MO-only] DATA BRANCH DELETE |
| DATA BRANCH DIFF | 🟣 MatrixOne-only | [MO-only] DATA BRANCH DIFF |
| DATA BRANCH MERGE | 🟣 MatrixOne-only | [MO-only] DATA BRANCH MERGE |
| DATA BRANCH PICK | 🟣 MatrixOne-only | — |
| DROP DATABASE | ✅ Full | — |
| DROP FUNCTION | ⚠️ Partial | Drops MatrixOne-style SQL / Python functions, not MySQL stored procedures/functions |
| DROP INDEX | ✅ Full | — |
| DROP PITR | 🟣 MatrixOne-only | [MO-only] DROP PITR |
| DROP PUBLICATION | 🟣 MatrixOne-only | [MO-only] DROP PUBLICATION |
| DROP SEQUENCE | 🟣 MatrixOne-only | [MO-only] DROP SEQUENCE |
| DROP SNAPSHOT | 🟣 MatrixOne-only | [MO-only] DROP SNAPSHOT |
| DROP STAGE | 🟣 MatrixOne-only | [MO-only] DROP STAGE |
| DROP TABLE | ✅ Full | — |
| DROP VIEW | ✅ Full | — |
| Rename Table | ✅ Full | — |
| RESTORE ... FROM PITR | 🟣 MatrixOne-only | [MO-only] RESTORE … FROM PITR |
| RESTORE ... SNAPSHOT | 🟣 MatrixOne-only | [MO-only] RESTORE … FROM SNAPSHOT |
| TRUNCATE TABLE | ✅ Full | — |
Data Manipulation Language (DML)
| Statement | MySQL Compat | Notes |
|---|---|---|
| CASE | ✅ Full | — |
| CURRENT_ROLE() | ⚠️ Partial | Returns a single active role name; MySQL 8.0 can return multiple comma-separated active roles or 'NONE'. |
| DELETE | ⚠️ Partial | LOW_PRIORITY, QUICK, IGNORE modifiers not supported |
| INSERT | ⚠️ Partial | Modifiers LOW_PRIORITY / DELAYED / HIGH_PRIORITY not supported |
| INSERT ... ON DUPLICATE KEY UPDATE | ✅ Full | — |
| INSERT IGNORE | ⚠️ Partial | LOW_PRIORITY / DELAYED / HIGH_PRIORITY modifiers not supported Duplicates are silently ignored; MySQL emits a warning for each skipped row. Does not ignore NULL-into-NOT-NULL, type-conversion, or partition-mismatch errors as MySQL does. |
| INSERT INTO SELECT | ✅ Full | — |
| LAST_INSERT_ID() | ⚠️ Partial | Multi-row INSERT returns the last inserted auto-increment value; MySQL returns the first inserted value. |
| LAST_QUERY_ID | 🟣 MatrixOne-only | [MO-only] LAST_QUERY_ID() |
| LOAD DATA | ⚠️ Partial | LOAD DATA LOCAL requires --local-infile on the client SET clause only accepts columns_name = nullif(expr1, expr2) JSONLines import uses MatrixOne-specific syntax Object-storage import (S3/URL) uses MatrixOne-specific syntax |
| LOAD DATA INLINE | 🟣 MatrixOne-only | [MO-only] LOAD DATA INLINE (stage-sourced import) |
| REPLACE | ⚠️ Partial | REPLACE does not support VALUES row_constructor_list node-sql-parser rejects REPLACE … WHERE (parser bug, not MatrixOne) |
| REPLACE | ⚠️ Partial | REPLACE does not support VALUES row_constructor_list node-sql-parser rejects REPLACE … WHERE (parser bug, not MatrixOne) |
| UPDATE | ⚠️ Partial | LOW_PRIORITY and IGNORE modifiers not supported |
| UPSERT | 🟣 MatrixOne-only | [MO-only] UPSERT (convenience alias over INSERT … ON DUPLICATE KEY UPDATE) |
Data Query Language (DQL)
| Statement | MySQL Compat | Notes |
|---|---|---|
| BY RANK WITH OPTION | 🟣 MatrixOne-only | [MO-only] BY RANK WITH OPTION (IVF vector ranking) |
| Combining Queries (UNION, INTERSECT, MINUS) | 🟣 MatrixOne-only | [MO-only] MINUS, INTERSECT set operators |
| Comparisons Using Subqueries | ✅ Full | — |
| CROSS APPLY | 🟣 MatrixOne-only | [MO-only] CROSS APPLY (SQL Server-style, not in MySQL) |
| CROSS JOIN | ✅ Full | — |
| Derived Tables | ✅ Full | — |
| FULL JOIN | 🟣 MatrixOne-only | [MO-only] FULL JOIN / FULL OUTER JOIN is not supported in MySQL 8.0 (users must emulate it with LEFT JOIN UNION RIGHT JOIN). |
| INNER JOIN | ✅ Full | — |
| INTERSECT | 🟣 MatrixOne-only | [MO-only] INTERSECT set operator is not available in MySQL 8.0. |
| JOIN | ✅ Full | — |
| LEFT JOIN | ✅ Full | — |
| MINUS | 🟣 MatrixOne-only | [MO-only] MINUS (set-difference query, not in MySQL) |
| NATURAL JOIN | ✅ Full | — |
| OUTER APPLY | 🟣 MatrixOne-only | [MO-only] OUTER APPLY (SQL Server-style, not in MySQL) |
| OUTER JOIN | ⚠️ Partial | Overview page that includes FULL OUTER JOIN, which MySQL 8.0 does not support. |
| RIGHT JOIN | ✅ Full | — |
| SELECT | ⚠️ Partial | SELECT … FOR UPDATE only supports single-table queries SELECT INTO OUTFILE is only partially supported Unqualified SELECT ... FROM DUAL requires explicit database name (SELECT ... FROM dbname.DUAL) [MO-only] { AS OF TIMESTAMP 'YYYY-MM-DD HH:MM:SS' } — time-travel query against snapshot/PITR [MO-only] ORDER BY ... NULLS { FIRST | LAST } — PostgreSQL-style NULL ordering not available in MySQL |
| Subqueries with ALL | ✅ Full | — |
| Subqueries with ANY or SOME | ✅ Full | — |
| Subqueries with EXISTS or NOT EXISTS | ✅ Full | — |
| Subqueries with IN | ⚠️ Partial | Multi-level correlated subqueries inside IN() are not supported |
| SUBQUERY | ⚠️ Partial | Multi-level correlated subqueries inside IN() are not supported |
| UNION | ✅ Full | — |
| WITH (Common Table Expressions) | ✅ Full | — |
Other
| Statement | MySQL Compat | Notes |
|---|---|---|
| DEALLOCATE PREPARE | ✅ Full | — |
| EXECUTE | ✅ Full | — |
| EXPLAIN | ⚠️ Partial | Output format mirrors PostgreSQL, not MySQL JSON output not supported |
| EXPLAIN Output Format | ⚠️ Partial | Output format mirrors PostgreSQL; JSON output not supported |
| EXPLAIN PREPARED | 🟣 MatrixOne-only | [MO-only] EXPLAIN FORCE EXECUTE stmt_name [USING @var] is a MatrixOne extension; MySQL explains prepared statements through EXPLAIN FOR CONNECTION. |
| Get information with EXPLAIN ANALYZE | ⚠️ Partial | Output format mirrors PostgreSQL; JSON output not supported |
| KILL | ✅ Full | — |
| PREPARE | ⚠️ Partial | MatrixOne cannot PREPARE SET statements |
| SET ROLE | ⚠️ Partial | Accepts a single role name only; MySQL 8.0 also supports NONE, DEFAULT, ALL, ALL EXCEPT role_list, and role lists. [MO-only] SET SECONDARY ROLE {NONE | ALL} — MatrixOne-only primary/secondary role model. |
| SHOW ACCOUNTS | 🟣 MatrixOne-only | [MO-only] SHOW ACCOUNTS |
| SHOW COLLATION | ⚠️ Partial | Only utf8mb4_bin is effective; other collations appear but are inert |
| SHOW COLUMNS | ✅ Full | — |
| SHOW CREATE PUBLICATION | 🟣 MatrixOne-only | [MO-only] SHOW CREATE PUBLICATION |
| SHOW CREATE TABLE | ⚠️ Partial | Output reflects MatrixOne-specific extensions (CLUSTER BY, USING IVFFLAT/HNSW, etc.) |
| SHOW CREATE VIEW | ⚠️ Partial | DEFINER = user clause absent from output; SQL SECURITY {DEFINER|INVOKER} is emitted |
| SHOW DATABASES | ✅ Full | — |
| SHOW FUNCTION STATUS | ⚠️ Partial | Lists MatrixOne SQL/Python functions, not MySQL stored routines |
| SHOW GRANTS | ⚠️ Partial | Results reflect MatrixOne role/account graph and differ from MySQL significantly |
| SHOW INDEX | ⚠️ Partial | Reflects MatrixOne index model — secondary index rows appear but may not accelerate queries |
| SHOW PITR | 🟣 MatrixOne-only | [MO-only] SHOW PITR |
| SHOW PROCESSLIST | ⚠️ Partial | Output differs significantly from MySQL due to different implementation |
| SHOW PUBLICATIONS | 🟣 MatrixOne-only | [MO-only] SHOW PUBLICATIONS |
| SHOW ROLES | 🟣 MatrixOne-only | [MO-only] SHOW ROLES |
| SHOW SEQUENCES | 🟣 MatrixOne-only | [MO-only] SHOW SEQUENCES |
| SHOW STAGES | 🟣 MatrixOne-only | [MO-only] SHOW STAGES |
| SHOW SUBSCRIPTIONS | 🟣 MatrixOne-only | [MO-only] SHOW SUBSCRIPTIONS |
| SHOW TABLES | ⚠️ Partial | Result column is named 'name' rather than MySQL's 'Tables_in_ |
| SHOW VARIABLES | ⚠️ Partial | System variables are mostly syntactic stubs; actual behaviour differs from MySQL |
| USE | ✅ Full | — |
Functions
| Status | Count |
|---|---|
| ✅ Full | 111 |
| ⚠️ Partial | 17 |
| 🟣 MatrixOne-only | 36 |
| Total | 164 |
Functions
| Function | MySQL Compat | Notes |
|---|---|---|
| Summary table of functions | 🟣 MatrixOne-only | [MO-only] Listing page (includes MatrixOne-only functions). |
Aggregate Functions
| Function | MySQL Compat | Notes |
|---|---|---|
| ANY_VALUE | ✅ Full | — |
| AVG | ✅ Full | — |
| BIT_AND | ✅ Full | — |
| BIT_OR | ✅ Full | — |
| BIT_XOR | ✅ Full | — |
| BITMAP function | 🟣 MatrixOne-only | [MO-only] BITMAP aggregates are MatrixOne extensions. |
| COUNT | ✅ Full | — |
| GROUP_CONCAT | ✅ Full | — |
| MAX | ✅ Full | — |
| MEDIAN() | 🟣 MatrixOne-only | [MO-only] MEDIAN aggregate is a MatrixOne-specific aggregate (no native MySQL equivalent). |
| MIN | ✅ Full | — |
| STDDEV_POP | ✅ Full | — |
| SUM | ✅ Full | — |
| VAR_POP | ✅ Full | — |
| VARIANCE | ✅ Full | — |
Datetime
| Function | MySQL Compat | Notes |
|---|---|---|
| ADDTIME() | ✅ Full | — |
| CONVERT_TZ() | ✅ Full | — |
| CURDATE() | ⚠️ Partial | curdate()+int returns days since 1970-01-01 rather than coercing both sides to integer and adding like MySQL. |
| CURRENT_TIMESTAMP() | ✅ Full | — |
| CURTIME() | ✅ Full | — |
| DATE_ADD() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants. |
| DATE_FORMAT() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants. |
| DATE_SUB() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants. |
| DATE() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants (yy-mm-dd, yy/mm/dd, yymmdd, etc.). |
| DATEDIFF() | ✅ Full | — |
| DAY() | ✅ Full | — |
| DAYOFYEAR() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants. |
| EXTRACT() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants. |
| FROM_UNIXTIME() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants. |
| GET_FORMAT() | ✅ Full | — |
| HOUR() | ✅ Full | — |
| MINUTE() | ✅ Full | — |
| MONTH() | ✅ Full | — |
| NOW() | ✅ Full | — |
| SECOND() | ✅ Full | — |
| STR_TO_DATE() | ✅ Full | — |
| SUBTIME() | ✅ Full | — |
| SYSDATE() | ✅ Full | — |
| TIME() | ✅ Full | — |
| TIMEDIFF() | ✅ Full | — |
| TIMESTAMP() | ⚠️ Partial | MatrixOne TIMESTAMP range is '0001-01-01'–'9999-12-31' vs MySQL '1970-01-01'–'2038-01-19' (compat doc: Data Types). |
| TIMESTAMPADD() | ✅ Full | — |
| TIMESTAMPDIFF() | ✅ Full | — |
| TO_DATE() | 🟣 MatrixOne-only | [MO-only] TO_DATE is a MatrixOne alias for MySQL STR_TO_DATE (compat doc: Date and Time Functions). MySQL's own TO_DATE does not exist. |
| TO_DAYS() | ⚠️ Partial | Two-digit year handling differs: MatrixOne completes '08-10-07' to year 0008; MySQL interprets it as 2008. Dates '0000-00-00' and '0000-01-01' raise an error in MatrixOne rather than being accepted as MySQL does. |
| TO_SECONDS() | ⚠️ Partial | Two-digit year handling differs: MatrixOne completes '08-10-07' to year 0008; MySQL interprets it as 2008. Dates '0000-00-00' and '0000-01-01' raise an error in MatrixOne rather than being accepted as MySQL does. |
| UNIX_TIMESTAMP() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants. |
| UTC_TIMESTAMP() | ✅ Full | — |
| WEEK() | ✅ Full | — |
| WEEKDAY() | ✅ Full | — |
| YEAR() | ⚠️ Partial | Date literals accept only 'yyyy-mm-dd' and 'yyyymmdd' formats; MySQL accepts wider variants. [MO-only] TOYEAR() is a MatrixOne alias for YEAR() with no MySQL counterpart. |
| YEARWEEK() | ✅ Full | — |
Json
| Function | MySQL Compat | Notes |
|---|---|---|
| JQ() | 🟣 MatrixOne-only | [MO-only] MatrixOne integration of the jq JSON query language; no MySQL equivalent. |
| JSON Arrow Operators -> and ->> | ✅ Full | — |
| JSON_EXTRACT_FLOAT64() | 🟣 MatrixOne-only | [MO-only] MatrixOne convenience wrapper returning FLOAT64 directly. |
| JSON_EXTRACT_FLOAT64() | 🟣 MatrixOne-only | [MO-only] MatrixOne convenience wrapper returning a string result directly. |
| JSON_EXTRACT() | ✅ Full | — |
| JSON_QUOTE() | ✅ Full | — |
| JSON_ROW() | 🟣 MatrixOne-only | [MO-only] MatrixOne-only; no MySQL equivalent. |
| JSON_SET() | ✅ Full | — |
| JSON_UNQUOTE() | ✅ Full | — |
| TRY_JQ() | 🟣 MatrixOne-only | [MO-only] MatrixOne integration of the jq JSON query language; no MySQL equivalent. |
Mathematical
| Function | MySQL Compat | Notes |
|---|---|---|
| ABS() | ✅ Full | — |
| ACOS() | ✅ Full | — |
| ATAN() | ✅ Full | — |
| CEIL() | ✅ Full | — |
| CEILING() | ✅ Full | — |
| COS() | ✅ Full | — |
| COT() | ✅ Full | — |
| CRC32() | ✅ Full | — |
| EXP() | ✅ Full | — |
| FLOOR() | ✅ Full | — |
| LN() | ✅ Full | — |
| LOG() | ✅ Full | — |
| LOG10() | ✅ Full | — |
| LOG2() | ✅ Full | — |
| PI() | ✅ Full | — |
| POWER() | ✅ Full | — |
| RAND() | ✅ Full | — |
| ROUND() | ✅ Full | — |
| SIN() | ✅ Full | — |
| SINH() | 🟣 MatrixOne-only | [MO-only] MySQL 8.0 has no hyperbolic trigonometric functions; SINH() is a MatrixOne extension. |
| TAN() | ✅ Full | — |
Other
| Function | MySQL Compat | Notes |
|---|---|---|
| LOAD_FILE() | 🟣 MatrixOne-only | [MO-only] LOAD_FILE() takes a DATALINK value (file:// or stage:// URL) rather than MySQL's plain filesystem path argument; semantics differ. |
| SAMPLE Sampling Function | 🟣 MatrixOne-only | [MO-only] SAMPLE() is a MatrixOne sampling operator; no MySQL equivalent. |
| SAVE_FILE() | 🟣 MatrixOne-only | [MO-only] SAVE_FILE() writes to a MatrixOne stage; no MySQL equivalent. |
| SERIAL_EXTRACT function | 🟣 MatrixOne-only | [MO-only] SERIAL_EXTRACT() is a MatrixOne internal serial-column extractor. |
| SLEEP() | ✅ Full | — |
| STAGE_LIST() | 🟣 MatrixOne-only | [MO-only] STAGE_LIST() lists MatrixOne stage contents. |
| UUID() | ✅ Full | — |
String
| Function | MySQL Compat | Notes |
|---|---|---|
| AES_DECRYPT() | ⚠️ Partial | MatrixOne supports only aes-128-ecb and aes-256-cbc block modes; MySQL 8.0 also supports the full set of ECB/CBC/CFB/OFB variants at multiple key sizes. MatrixOne AES_DECRYPT does not accept the optional kdf_name / salt / info KDF arguments present in MySQL 8.0. |
| AES_ENCRYPT() | ⚠️ Partial | MatrixOne supports only aes-128-ecb and aes-256-cbc block modes; MySQL 8.0 also supports the full set of ECB/CBC/CFB/OFB variants at multiple key sizes. MatrixOne AES_ENCRYPT does not accept the optional kdf_name / salt / info KDF arguments present in MySQL 8.0. |
| BIN() | ✅ Full | — |
| BIT_LENGTH() | ✅ Full | — |
| CHAR_LENGTH() | ✅ Full | — |
| CONCAT_WS() | ✅ Full | — |
| CONCAT() | ✅ Full | — |
| ELT() | ✅ Full | — |
| EMPTY() | 🟣 MatrixOne-only | [MO-only] EMPTY() is a MatrixOne helper returning whether a string is empty. |
| ENDSWITH() | 🟣 MatrixOne-only | [MO-only] ENDSWITH() is a MatrixOne helper; MySQL has no direct equivalent. |
| FIELD() | ✅ Full | — |
| FIND_IN_SET() | ✅ Full | — |
| FORMAT() | ✅ Full | — |
| FROM_BASE64() | ✅ Full | — |
| HEX() | ✅ Full | — |
| INSTR() | ✅ Full | — |
| LCASE() | ✅ Full | — |
| LEFT() | ✅ Full | — |
| LENGTH() | ✅ Full | — |
| LOCATE() | ✅ Full | — |
| LOWER() | ✅ Full | — |
| LPAD() | ✅ Full | — |
| LTRIM() | ✅ Full | — |
| MD5() | ✅ Full | — |
| NOT REGEXP | ✅ Full | — |
| OCT(N) | ✅ Full | — |
| REGEXP_INSTR() | ✅ Full | — |
| REGEXP_LIKE() | ✅ Full | — |
| REGEXP_REPLACE() | ✅ Full | — |
| REGEXP_SUBSTR() | ✅ Full | — |
| Regular Expressions Overview | ✅ Full | — |
| REPEAT() | ✅ Full | — |
| REVERSE() | ✅ Full | — |
| RPAD() | ✅ Full | — |
| RTRIM() | ✅ Full | — |
| SHA1()/SHA() | ✅ Full | — |
| SHA2() | ✅ Full | — |
| SPACE() | ✅ Full | — |
| SPLIT_PART() | 🟣 MatrixOne-only | [MO-only] SPLIT_PART() is inherited from PostgreSQL; no MySQL equivalent. |
| STARTSWITH() | 🟣 MatrixOne-only | [MO-only] STARTSWITH() is a MatrixOne helper; MySQL has no direct equivalent. |
| STRCMP() | ✅ Full | — |
| SUBSTRING_INDEX() | ✅ Full | — |
| SUBSTRING() | ✅ Full | — |
| TO_BASE64() | ✅ Full | — |
| TRIM() | ✅ Full | — |
| UCASE() | ✅ Full | — |
| UNHEX() | ✅ Full | — |
| UPPER() | ✅ Full | — |
System Operations
| Function | MySQL Compat | Notes |
|---|---|---|
| CURRENT_ROLE_NAME() | 🟣 MatrixOne-only | [MO-only] MatrixOne multi-account/role system management function (compat doc: System Management Functions). |
| CURRENT_ROLE() | ⚠️ Partial | Returns a single active role name; MySQL 8.0 can return multiple comma-separated active roles or 'NONE'. |
| CURRENT_USER_NAME() | 🟣 MatrixOne-only | [MO-only] MatrixOne multi-account/role system management function (compat doc: System Management Functions). |
| CURRENT_USER, CURRENT_USER() | ⚠️ Partial | Return format is 'username@0.0.0.0' rather than MySQL's 'username@host' with a resolved client host. |
| PURGE_LOG() | 🟣 MatrixOne-only | [MO-only] MatrixOne multi-account/role system management function (compat doc: System Management Functions). |
| VERSION | ✅ Full | — |
Table
| Function | MySQL Compat | Notes |
|---|---|---|
| GENERATE_SERIES() | 🟣 MatrixOne-only | [MO-only] Table-valued function; no direct MySQL equivalent. |
| UNNEST() | 🟣 MatrixOne-only | [MO-only] Table-valued function; no direct MySQL equivalent. |
Vector
| Function | MySQL Compat | Notes |
|---|---|---|
| Arithmetic operators | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| CLUSTER_CENTERS | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| COSINE_DISTANCE() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| cosine_similarity() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| inner_product() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| l1_norm() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| L2_DISTANCE() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| l2_norm() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| Mathematical class functions | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| NORMALIZE_L2() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| SUBVECTOR() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
| vector_dims() | 🟣 MatrixOne-only | [MO-only] Vector type and related distance/norm/clustering functions are MatrixOne extensions (compat doc: Data Types — \"MatrixOne supports vector types\"). |
Window Functions
| Function | MySQL Compat | Notes |
|---|---|---|
| CUME_DIST() | ✅ Full | — |
| DENSE_RANK() | ✅ Full | — |
| PERCENT_RANK() | ✅ Full | — |
| RANK() | ✅ Full | — |
| ROW_NUMBER() | ✅ Full | — |
Operators
| Status | Count |
|---|---|
| ✅ Full | 1 |
| ❓ Unknown | 61 |
| Total | 62 |
Operators
| Operator | MySQL Compat | Notes |
|---|---|---|
| interval | ❓ Unknown | — |
operators
| Operator | MySQL Compat | Notes |
|---|---|---|
| <=> | ✅ Full | — |
| addition | ❓ Unknown | — |
| and | ❓ Unknown | — |
| arithmetic-operators-overview | ❓ Unknown | — |
| assign-equal | ❓ Unknown | — |
| assignment-operators-overview | ❓ Unknown | — |
| between | ❓ Unknown | — |
| binary | ❓ Unknown | — |
| bit-functions-and-operators-overview | ❓ Unknown | — |
| bitwise-and | ❓ Unknown | — |
| bitwise-inversion | ❓ Unknown | — |
| bitwise-or | ❓ Unknown | — |
| bitwise-xor | ❓ Unknown | — |
| case-when | ❓ Unknown | — |
| cast | ❓ Unknown | — |
| cast-functions-and-operators-overview | ❓ Unknown | — |
| coalesce | ❓ Unknown | — |
| comparison-functions-and-operators-overview | ❓ Unknown | — |
| convert | ❓ Unknown | — |
| decode | ❓ Unknown | — |
| div | ❓ Unknown | — |
| division | ❓ Unknown | — |
| encode | ❓ Unknown | — |
| equal | ❓ Unknown | — |
| flow-control-functions-overview | ❓ Unknown | — |
| function_if | ❓ Unknown | — |
| function_ifnull | ❓ Unknown | — |
| function_interval | ❓ Unknown | — |
| function_isnull | ❓ Unknown | — |
| function_least | ❓ Unknown | — |
| function_nullif | ❓ Unknown | — |
| function_strcmp | ❓ Unknown | — |
| greater-than | ❓ Unknown | — |
| greater-than-or-equal | ❓ Unknown | — |
| ilike | ❓ Unknown | — |
| in | ❓ Unknown | — |
| is | ❓ Unknown | — |
| is-not | ❓ Unknown | — |
| is-not-null | ❓ Unknown | — |
| is-null | ❓ Unknown | — |
| left-shift | ❓ Unknown | — |
| less-than | ❓ Unknown | — |
| less-than-or-equal | ❓ Unknown | — |
| like | ❓ Unknown | — |
| logical-operators-overview | ❓ Unknown | — |
| minus | ❓ Unknown | — |
| mod | ❓ Unknown | — |
| multiplication | ❓ Unknown | — |
| not | ❓ Unknown | — |
| not-between | ❓ Unknown | — |
| not-equal | ❓ Unknown | — |
| not-in | ❓ Unknown | — |
| not-like | ❓ Unknown | — |
| operator-precedence | ❓ Unknown | — |
| operators | ❓ Unknown | — |
| or | ❓ Unknown | — |
| right-shift | ❓ Unknown | — |
| serial | ❓ Unknown | — |
| serial_full | ❓ Unknown | — |
| unary-minus | ❓ Unknown | — |
| xor | ❓ Unknown | — |
Data Types
| Status | Count |
|---|---|
| ⚠️ Partial | 2 |
| ❓ Unknown | 10 |
| Total | 12 |
Data Types
| Data Type | MySQL Compat | Notes |
|---|---|---|
| blob-text-type | ❓ Unknown | — |
| data-type-conversion | ❓ Unknown | — |
| data-types | ❓ Unknown | — |
| datalink-type | ❓ Unknown | — |
| ENUM Type | ⚠️ Partial | — |
| fixed-point-types | ❓ Unknown | — |
| json-type | ❓ Unknown | — |
| SET Type | ⚠️ Partial | — |
| uuid-type | ❓ Unknown | — |
| vector-type | ❓ Unknown | — |
Date/Time Data Types
| Data Type | MySQL Compat | Notes |
|---|---|---|
| timestamp-initialization | ❓ Unknown | — |
| year-type | ❓ Unknown | — |
Language Structure
| Status | Count |
|---|---|
| ❓ Unknown | 2 |
| Total | 2 |
Language Structure
| Element | MySQL Compat | Notes |
|---|---|---|
| comment | ❓ Unknown | — |
| keywords | ❓ Unknown | — |