Skip to content

MySQL Compatibility Matrix

Auto-generated from mysql_compat frontmatter across docs/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-run node scripts/generate-compat-matrix.js after 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