Skip to content

Releases: yext/sqlparser

v0.1.2

22 Feb 23:12

Choose a tag to compare

Full Changelog: v0.1.1...v0.1.2

MySQL 8.0 Grammar Enhancements

This release advances the parser from its Vitess-oriented baseline to broader MySQL 8.0 grammar coverage.

Highlights

The following list captures coverage improvements between this release and its upstream (diff):

  • Added support for Common Table Expressions, including WITH and WITH RECURSIVE across query and DML forms.
  • Added INTERSECT and EXCEPT set operations, including precedence and parenthesized set expressions.
  • Added window function grammar support, including OVER (...), named WINDOW definitions, and frame clauses (ROWS/RANGE).
  • Added modern row-locking forms: FOR SHARE, NOWAIT, and SKIP LOCKED.
  • Added JSON_TABLE support, including nested paths, FOR ORDINALITY, and EXISTS PATH.
  • Added MySQL 8.0 predicate/function support for MEMBER OF, REGEXP_LIKE, REGEXP_INSTR, REGEXP_SUBSTR, and REGEXP_REPLACE.
  • Added table value constructor support via VALUES ROW(...).
  • Added support for CREATE TEMPORARY TABLE, including IF NOT EXISTS and ... LIKE ... forms.
  • Added support for CREATE DATABASE / CREATE SCHEMA with database option parsing (including charset/collation forms).
  • Added trigger statement coverage for CREATE TRIGGER and DROP TRIGGER (including IF EXISTS).
  • Added MySQL table-locking statements: LOCK TABLES and UNLOCK TABLES (including READ LOCAL, LOW_PRIORITY WRITE, and aliases).
  • Added prepared statement grammar support for PREPARE and EXECUTE ... USING.
  • Added user-variable SQL forms: SELECT ... INTO @var and assignment expressions using :=.
  • Added privilege and account-management subset support for GRANT, REVOKE, DROP USER, and DROP ROLE.
  • Improved SHOW statement coverage with MySQL-oriented SHOW variants and removal of Vitess-specific SHOW forms.
  • Added REPAIR TABLE and OPTIMIZE TABLE statement support.
  • Added fractional-precision temporal function/default coverage (for example CURRENT_TIMESTAMP(6), LOCALTIME(6), and related forms).
  • Expanded CREATE TABLE option parsing to cover additional MySQL forms including AVG_ROW_LENGTH, CHECKSUM, COMPRESSION, DELAY_KEY_WRITE, ENCRYPTION, INSERT_METHOD, MAX_ROWS, MIN_ROWS, PACK_KEYS, and TABLESPACE ... [STORAGE ...].
  • Expanded charset/collation coverage across DDL, including table and column CHARACTER SET / COLLATE forms.
  • Added explicit FULLTEXT and SPATIAL index definition support across table/index DDL forms.
  • Added online index DDL option coverage for CREATE INDEX and DROP INDEX statements with ALGORITHM / LOCK.
  • Expanded partitioning support for CREATE TABLE and ALTER TABLE, including:
    • PARTITION BY RANGE, RANGE COLUMNS, HASH, and LINEAR HASH
    • Partition maintenance operations (ADD, DROP, DISCARD/IMPORT TABLESPACE, TRUNCATE, COALESCE, REORGANIZE, EXCHANGE ... WITH|WITHOUT VALIDATION, ANALYZE, CHECK, OPTIMIZE, REBUILD, REPAIR, REMOVE PARTITIONING)
  • Expanded DDL coverage for MySQL 8.0 features, including:
    • Generated columns (GENERATED ALWAYS AS, VIRTUAL/STORED)
    • CHECK constraints
    • Foreign keys and referential actions
    • Column visibility (VISIBLE/INVISIBLE)
    • RENAME COLUMN
    • Index key-part direction (ASC/DESC)
    • Online DDL options (ALGORITHM, LOCK)
    • Additional alter-table option coverage such as ENGINE=... and CONVERT TO CHARACTER SET ... [COLLATE ...]
    • Table options such as ROW_FORMAT, DATA DIRECTORY, INDEX DIRECTORY, and spatial SRID

Scope Notes

  • JSON_TABLE currently excludes ON EMPTY / ON ERROR clauses.
  • Privilege grammar support is intentionally a focused MySQL 8.0 subset, not full privilege/role syntax parity.

v0.1.1

22 Feb 09:33

Choose a tag to compare

Full Changelog: v0.1.0...v0.1.1

v0.1.0

22 Feb 04:38

Choose a tag to compare

Full Changelog: v0.0.1...v0.1.0

v0.0.1

18 Feb 21:43

Choose a tag to compare

This tag introduced Go module support to this fork. No functional changes are made.