-
Notifications
You must be signed in to change notification settings - Fork 218
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
sqlparser: column option and table option #615 #628
Conversation
f003872
to
9d10791
Compare
[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
9d10791
to
eef2752
Compare
Codecov Report
@@ Coverage Diff @@
## master #628 +/- ##
======================================
- Coverage 89% 89% -1%
======================================
Files 128 128
Lines 10234 10234
======================================
- Hits 9183 9179 -4
- Misses 710 712 +2
- Partials 341 343 +2
Continue to review full report at Codecov.
|
@andyli029 |
ACK |
{ | ||
$$ = string($2) | ||
} | ||
| COLUMN_FORMAT DYNAMIC |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Delete one more space
{ | ||
$$ = string($2) | ||
} | ||
| COLUMN_FORMAT DEFAULT |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Delete one more space
LGTM |
[summary]
reference: https://dev.mysql.com/doc/refman/5.7/en/create-table.html
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
Currently we do not support column option
[reference_definition]
,[GENERATED ALWAYS] AS (expr)
also : some
DEFAULT now_or_signed_literal
andSERIAL_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
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