Skip to content

Commit 87ee756

Browse files
author
Ben Osheroff
committed
support BOOL, BOOLEAN
these two are SQL-syntax-only aliases for a TINYINT(1) column
1 parent 2cbdce8 commit 87ee756

File tree

5 files changed

+21
-2
lines changed

5 files changed

+21
-2
lines changed

src/main/antlr4/imports/column_definitions.g4

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,11 @@ data_type:
2121
// from http://dev.mysql.com/doc/refman/5.1/en/create-table.html
2222
generic_type: // types from which we're going to ignore any flags/length
2323
col_type=(BIT | BINARY | YEAR) length?
24-
| col_type=(DATE | TIME | TIMESTAMP | DATETIME | TINYBLOB | MEDIUMBLOB | LONGBLOB | BLOB )
24+
| col_type=(DATE | TIME | TIMESTAMP | DATETIME | TINYBLOB | MEDIUMBLOB | LONGBLOB | BLOB | BOOLEAN | BOOL )
2525
| col_type=VARBINARY length
2626
;
2727

28+
2829
signed_type: // we need the UNSIGNED flag here
2930
col_type=(TINYINT | INT1 | SMALLINT | INT2 | MEDIUMINT | INT3 | INT | INTEGER | INT4 | BIGINT | INT8 )
3031
length?

src/main/antlr4/imports/generate_tokens.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@
158158
NULL
159159
NO
160160
ACTION
161+
162+
BOOL
163+
BOOLEAN
161164
)
162165

163166
tokens_allowed_in_names = []

src/main/antlr4/imports/mysql_literal_tokens.g4

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
grammar mysql_literal_tokens;
22

3-
tokens_available_for_names: (ACTION | AFTER | AUTO_INCREMENT | AVG_ROW_LENGTH | BEGIN | BIT | BTREE | CHARSET | CHECKSUM | COLUMN_FORMAT | COMMENT | COMPACT | COMPRESSED | CONNECTION | DATA | DATE | DATETIME | DELAY_KEY_WRITE | DIRECTORY | DISABLE | DISK | DYNAMIC | ENABLE | ENGINE | ENUM | FIRST | FIXED | FULL | HASH | INSERT_METHOD | KEY_BLOCK_SIZE | LAST | MAX_ROWS | MEMORY | MIN_ROWS | MODIFY | NO | OFFLINE | ONLINE | PACK_KEYS | PARSER | PARTIAL | PASSWORD | REDUNDANT | ROW_FORMAT | SIMPLE | STORAGE | TABLESPACE | TEMPORARY | TEXT | TIME | TIMESTAMP | YEAR);
3+
tokens_available_for_names: (ACTION | AFTER | AUTO_INCREMENT | AVG_ROW_LENGTH | BEGIN | BIT | BOOL | BOOLEAN | BTREE | CHARSET | CHECKSUM | COLUMN_FORMAT | COMMENT | COMPACT | COMPRESSED | CONNECTION | DATA | DATE | DATETIME | DELAY_KEY_WRITE | DIRECTORY | DISABLE | DISK | DYNAMIC | ENABLE | ENGINE | ENUM | FIRST | FIXED | FULL | HASH | INSERT_METHOD | KEY_BLOCK_SIZE | LAST | MAX_ROWS | MEMORY | MIN_ROWS | MODIFY | NO | OFFLINE | ONLINE | PACK_KEYS | PARSER | PARTIAL | PASSWORD | REDUNDANT | ROW_FORMAT | SIMPLE | STORAGE | TABLESPACE | TEMPORARY | TEXT | TIME | TIMESTAMP | YEAR);
44

55

66
INT1: I N T '1';
@@ -21,6 +21,8 @@ BIGINT: B I G I N T;
2121
BINARY: B I N A R Y;
2222
BIT: B I T;
2323
BLOB: B L O B;
24+
BOOL: B O O L;
25+
BOOLEAN: B O O L E A N;
2426
BTREE: B T R E E;
2527
BY: B Y;
2628
CASCADE: C A S C A D E;

src/main/java/com/zendesk/maxwell/schema/columndef/ColumnDef.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ public static ColumnDef build(String tableName, String name, String encoding, St
3232
type = unalias_type(type);
3333

3434
switch(type) {
35+
case "bool":
36+
case "boolean":
37+
type = "tinyint";
38+
// fallthrough
3539
case "tinyint":
3640
case "smallint":
3741
case "mediumint":

src/test/java/com/zendesk/maxwell/schema/ddl/DDLIntegrationTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,13 @@ public void testYearWithLength() throws Exception {
154154

155155
testIntegration(sql);
156156
}
157+
158+
@Test
159+
public void testBooleans() throws Exception {
160+
String sql[] = {
161+
"create TABLE `test_boolean` ( b1 bool, b2 boolean )"
162+
};
163+
164+
testIntegration(sql);
165+
}
157166
}

0 commit comments

Comments
 (0)