DBZ-870 Adding test
This commit is contained in:
parent
99ab131910
commit
414ebe5f13
@ -32,8 +32,8 @@
|
|||||||
*/
|
*/
|
||||||
public abstract class AbstractMysqlDefaultValueTest {
|
public abstract class AbstractMysqlDefaultValueTest {
|
||||||
|
|
||||||
private AbstractDdlParser parser;
|
protected AbstractDdlParser parser;
|
||||||
private Tables tables;
|
protected Tables tables;
|
||||||
private MySqlValueConverters converters;
|
private MySqlValueConverters converters;
|
||||||
protected Function<MySqlValueConverters, AbstractDdlParser> parserProducer;
|
protected Function<MySqlValueConverters, AbstractDdlParser> parserProducer;
|
||||||
|
|
||||||
@ -355,4 +355,6 @@ public void parseTimeDefaultValue() {
|
|||||||
assertThat(table.columnWithName("K").defaultValue()).isEqualTo(Date.from(ZonedDateTime.of(2018, 6, 26, 12, 34, 56, 0, ZoneOffset.UTC).toInstant()));
|
assertThat(table.columnWithName("K").defaultValue()).isEqualTo(Date.from(ZonedDateTime.of(2018, 6, 26, 12, 34, 56, 0, ZoneOffset.UTC).toInstant()));
|
||||||
assertThat(table.columnWithName("L").defaultValue()).isEqualTo(Date.from(ZonedDateTime.of(2018, 6, 26, 12, 34, 56, 780_000_000, ZoneOffset.UTC).toInstant()));
|
assertThat(table.columnWithName("L").defaultValue()).isEqualTo(Date.from(ZonedDateTime.of(2018, 6, 26, 12, 34, 56, 780_000_000, ZoneOffset.UTC).toInstant()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,18 @@
|
|||||||
*/
|
*/
|
||||||
package io.debezium.connector.mysql;
|
package io.debezium.connector.mysql;
|
||||||
|
|
||||||
|
import static org.fest.assertions.Assertions.assertThat;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
import io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser;
|
import io.debezium.connector.mysql.antlr.MySqlAntlrDdlParser;
|
||||||
|
import io.debezium.doc.FixFor;
|
||||||
|
import io.debezium.relational.Table;
|
||||||
|
import io.debezium.relational.TableId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Jiri Pechanec <jpechane@redhat.com>
|
* @author Jiri Pechanec <jpechane@redhat.com>
|
||||||
@ -15,4 +26,28 @@ public class MysqlAntlrDefaultValueTest extends AbstractMysqlDefaultValueTest {
|
|||||||
{
|
{
|
||||||
parserProducer = MySqlAntlrDdlParser::new;
|
parserProducer = MySqlAntlrDdlParser::new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@FixFor("DBZ-870")
|
||||||
|
public void shouldAcceptZeroAsDefaultValueForDateColumn() {
|
||||||
|
String ddl = "CREATE TABLE data(id INT, nullable_date date default 0, not_nullable_date date not null default 0, PRIMARY KEY (id))";
|
||||||
|
parser.parse(ddl, tables);
|
||||||
|
|
||||||
|
Table table = tables.forTable(new TableId(null, null, "data"));
|
||||||
|
|
||||||
|
assertThat(table.columnWithName("nullable_date").hasDefaultValue()).isTrue();
|
||||||
|
|
||||||
|
// zero date should be mapped to null for nullable column
|
||||||
|
assertThat(table.columnWithName("nullable_date").defaultValue()).isNull();
|
||||||
|
|
||||||
|
assertThat(table.columnWithName("not_nullable_date").hasDefaultValue()).isTrue();
|
||||||
|
|
||||||
|
// zero date should be mapped to epoch for non-nullable column (expecting Date, as this test is using "connect"
|
||||||
|
// mode)
|
||||||
|
assertThat(table.columnWithName("not_nullable_date").defaultValue()).isEqualTo(getEpochDate());
|
||||||
|
}
|
||||||
|
|
||||||
|
private Date getEpochDate() {
|
||||||
|
return Date.from(LocalDate.of(1970, 1, 1).atStartOfDay(ZoneId.of("UTC")).toInstant());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user