Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sqlparser: column option and table option #615 #628

Merged

Commits on May 2, 2020

  1. sqlparser: column option and table option radondb#615

    [summary]
    reference: https://dev.mysql.com/doc/refman/5.7/en/create-table.html
    
    1. complete more columnn options, add `STORAGE DEFAULT` which is not descriped on official 5.7 document, but actually mysql support it.
    see: https://github.com/mysql/mysql-server/blob/5.7/sql/sql_yacc.yy#L6953
    and extra option suppored by mysql: `ON UPDATE ...`
    see: https://github.com/mysql/mysql-server/blob/5.7/sql/sql_yacc.yy#L6888
    ```
    column_definition:
        data_type [NOT NULL | NULL] [DEFAULT default_value]
          [AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY]
          [COMMENT 'string']
          [COLLATE collation_name]
          [COLUMN_FORMAT {FIXED | DYNAMIC | DEFAULT}]
          [STORAGE {DISK | MEMORY}]
          [ON UPDATE NOW_SYM]
      | data_type
          [COLLATE collation_name]
          [VIRTUAL | STORED] [NOT NULL | NULL]
          [UNIQUE [KEY]] [[PRIMARY] KEY]
          [COMMENT 'string']
    ```
    Currently we do not support  column option ` [reference_definition]`, ` [GENERATED ALWAYS] AS (expr)`
    also : some `DEFAULT now_or_signed_literal` and `SERIAL_SYM DEFAULT VALUE_SYM` options not in 5.7 document, but acctually mysql support them.
    see:
    https://github.com/mysql/mysql-server/blob/5.7/sql/sql_yacc.yy#L6897
    https://github.com/mysql/mysql-server/blob/5.7/sql/sql_yacc.yy#L6887
    
    2. complete more table options.
    ```
    table_option:
        AUTO_INCREMENT [=] value
      | AVG_ROW_LENGTH [=] value
      | [DEFAULT] CHARACTER SET [=] charset_name
      | CHECKSUM [=] {0 | 1}
      | [DEFAULT] COLLATE [=] collation_name
      | COMMENT [=] 'string'
      | COMPRESSION [=] {'ZLIB' | 'LZ4' | 'NONE'}
      | CONNECTION [=] 'connect_string'
      | {DATA | INDEX} DIRECTORY [=] 'absolute path to directory'
      | DELAY_KEY_WRITE [=] {0 | 1}
      | ENCRYPTION [=] {'Y' | 'N'}
      | ENGINE [=] engine_name
      | INSERT_METHOD [=] { NO | FIRST | LAST }
      | KEY_BLOCK_SIZE [=] value
      | MAX_ROWS [=] value
      | MIN_ROWS [=] value
      | PACK_KEYS [=] {0 | 1 | DEFAULT}
      | PASSWORD [=] 'string'
      | ROW_FORMAT [=] {DEFAULT | DYNAMIC | FIXED | COMPRESSED | REDUNDANT | COMPACT | TOKUDB...}
      | STATS_AUTO_RECALC [=] {DEFAULT | 0 | 1}
      | STATS_PERSISTENT [=] {DEFAULT | 0 | 1}
      | STATS_SAMPLE_PAGES [=] value
      | TABLESPACE tablespace_name [STORAGE {DISK | MEMORY}]
    ```
    Currently we do not support  table options:
    `UNION [=] (tbl_name[,tbl_name]...)`
    [test case]
    sqlparser/parse_test.go
    sqlparser/ddl_test.go
    proxy/ddl_test.go
    [patch codecov]
    N/A
    hustjieke committed May 2, 2020
    Configuration menu
    Copy the full SHA
    eef2752 View commit details
    Browse the repository at this point in the history