DBZ-646 Enhancing DDL parser to support compression parameter used with

CREATE TABLE on TokuDB
This commit is contained in:
Maciej Bryński 2018-03-13 13:22:08 +01:00 committed by Gunnar Morling
parent d73c27d9bd
commit b7f13213b2
2 changed files with 17 additions and 2 deletions

View File

@ -418,7 +418,8 @@ protected boolean parseTableOption(Marker start, TableEditor table) {
return true;
} else if (tokens.canConsumeAnyOf("CHECKSUM", "ENGINE", "AVG_ROW_LENGTH", "MAX_ROWS", "MIN_ROWS", "ROW_FORMAT",
"DELAY_KEY_WRITE", "INSERT_METHOD", "KEY_BLOCK_SIZE", "PACK_KEYS",
"STATS_AUTO_RECALC", "STATS_PERSISTENT", "STATS_SAMPLE_PAGES" , "PAGE_CHECKSUM" )) {
"STATS_AUTO_RECALC", "STATS_PERSISTENT", "STATS_SAMPLE_PAGES" , "PAGE_CHECKSUM",
"COMPRESSION")) {
// One option token followed by '=' by a single value
tokens.canConsume('=');
tokens.consume();
@ -437,7 +438,7 @@ protected boolean parseTableOption(Marker start, TableEditor table) {
tokens.canConsume('=');
tokens.consume();
return true;
} else if (tokens.canConsumeAnyOf("COMMENT", "COMPRESSION", "CONNECTION", "ENCRYPTION", "PASSWORD")) {
} else if (tokens.canConsumeAnyOf("COMMENT", "CONNECTION", "ENCRYPTION", "PASSWORD")) {
tokens.canConsume('=');
consumeQuotedString();
return true;

View File

@ -148,6 +148,20 @@ public void shouldParseCreateTableStatementWithCollate() {
Column column = table.columnWithName("v1");
assertThat(column.typeUsesCharset()).isTrue();
}
@Test
@FixFor("DBZ-646")
public void shouldParseTokuDBTable() {
String ddl = "CREATE TABLE foo ( " + System.lineSeparator()
+ " c1 INTEGER NOT NULL, " + System.lineSeparator()
+ " c2 VARCHAR(22) " + System.lineSeparator()
+ ") engine=TokuDB `compression`=tokudb_zlib;";
parser.parse(ddl, tables);
assertThat(tables.size()).isEqualTo(1);
listener.assertNext().createTableNamed("foo").ddlStartsWith("CREATE TABLE foo (");
parser.parse("DROP TABLE foo", tables);
assertThat(tables.size()).isEqualTo(0);
}
@Test
public void shouldParseCreateUserTable() {