Skip to content

Parse unique parameters for MySQL's MERGE engine. #6653

@nicktobey

Description

@nicktobey

There are two parameters for CREATE TABLE and ALTER TABLE statements in MySQL that are only used for MySQL's MERGE engine (https://dev.mysql.com/doc/refman/8.0/en/merge-storage-engine.html)

There parameters are UNION and INSERT_METHOD

The statements look like this:

CREATE TABLE `t24534` (`c1` TINYINT KEY, c2 TINYINT NULL) UNION = (`c3`, `c4`) MAX_ROWS 4;
CREATE TABLE `t22e94` (`c1` NUMERIC UNIQUE, c2 NUMERIC PRIMARY KEY) INSERT_METHOD = LAST, MIN_ROWS 16;

(The = is optional, like with the other parameters.)

INSERT_METHOD has three accepted values: FIRST, LAST, and NO. We currently parse FIRST and NO, but don't parse LAST.

UNION may be slightly trickier to parse because we need to parse the parentheses and the identifiers within. The identifiers should just be a comma-separated list of table names.

We have no plans to support the MERGE engine, but we want to make these parameters consistent with other parameters that are tied to features we don't intend to support (like SECONDARY_ENGINE): Dolt should successfully parse these statements even if it doesn't use the parameter.

Metadata

Metadata

Assignees

No one assigned

    Labels

    correctnessWe don't return the same result as MySQLsqlIssue with SQL

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions