Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
sqlparser: column option and table option #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
- Loading branch information