Skip to content

Commit

Permalink
parser: make "ENGINE = xxx" optional in partition definition (pingcap…
Browse files Browse the repository at this point in the history
  • Loading branch information
tiancaiamao authored Apr 25, 2017
1 parent 1f75f38 commit 31d2cc8
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 3 deletions.
18 changes: 15 additions & 3 deletions parser/parser.y
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,8 @@ import (
PartitionDefinitionListOpt "Partition definition list option"
PartitionOpt "Partition option"
PartitionNumOpt "PARTITION NUM option"
PartDefValuesOpt "VALUES {LESS THAN {(expr | value_list) | MAXVALUE} | IN {value_list}"
PartDefStorageOpt "ENGINE = xxx or empty"
PasswordOpt "Password option"
ColumnPosition "Column position [First|After ColumnName]"
PreparedStmt "PreparedStmt"
Expand Down Expand Up @@ -1675,13 +1677,23 @@ PartitionDefinitionListOpt:
PartitionDefinitionList:
PartitionDefinition
{}
| PartitionDefinition ',' PartitionDefinitionList
| PartitionDefinitionList ',' PartitionDefinition
{}

PartitionDefinition:
"PARTITION" Identifier "VALUES" "LESS" "THAN" ExpressionList "ENGINE" eq Identifier
"PARTITION" Identifier PartDefValuesOpt PartDefStorageOpt
{}
| "PARTITION" Identifier "VALUES" "LESS" "THAN" "MAXVALUE" "ENGINE" eq Identifier

PartDefValuesOpt:
{}
| "VALUES" "LESS" "THAN" "MAXVALUE"
{}
| "VALUES" "LESS" "THAN" '(' ExpressionList ')'
{}

PartDefStorageOpt:
{}
| "ENGINE" eq Identifier
{}

/******************************************************************
Expand Down
2 changes: 2 additions & 0 deletions parser/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1051,6 +1051,8 @@ func (s *testParserSuite) TestDDL(c *C) {
// partition option
{"create table t (c int) PARTITION BY HASH (c) PARTITIONS 32;", true},
{"create table t (c int) PARTITION BY RANGE (Year(VDate)) (PARTITION p1980 VALUES LESS THAN (1980) ENGINE = MyISAM, PARTITION p1990 VALUES LESS THAN (1990) ENGINE = MyISAM, PARTITION pothers VALUES LESS THAN MAXVALUE ENGINE = MyISAM)", true},
{"create table t (c int, `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '') PARTITION BY RANGE (UNIX_TIMESTAMP(create_time)) (PARTITION p201610 VALUES LESS THAN(1477929600), PARTITION p201611 VALUES LESS THAN(1480521600),PARTITION p201612 VALUES LESS THAN(1483200000),PARTITION p201701 VALUES LESS THAN(1485878400),PARTITION p201702 VALUES LESS THAN(1488297600),PARTITION p201703 VALUES LESS THAN(1490976000))", true},

// for check clause
{"create table t (c1 bool, c2 bool, check (c1 in (0, 1)), check (c2 in (0, 1)))", true},
{"CREATE TABLE Customer (SD integer CHECK (SD > 0), First_Name varchar(30));", true},
Expand Down

0 comments on commit 31d2cc8

Please sign in to comment.