DBZ-1501 Support partial timstamps in default values
This commit is contained in:
parent
97cc493ef5
commit
0f61a0c8de
@ -246,7 +246,14 @@ private Object convertToBoolean(String value) {
|
||||
|
||||
private DateTimeFormatter timestampFormat(int length) {
|
||||
final DateTimeFormatterBuilder dtf = new DateTimeFormatterBuilder()
|
||||
.appendPattern("yyyy-MM-dd HH:mm:ss");
|
||||
.appendPattern("yyyy-MM-dd")
|
||||
.optionalStart()
|
||||
.appendLiteral(" ")
|
||||
.append(DateTimeFormatter.ISO_LOCAL_TIME)
|
||||
.optionalEnd()
|
||||
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
|
||||
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
|
||||
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0);
|
||||
if (length > 0) {
|
||||
dtf.appendFraction(ChronoField.MICRO_OF_SECOND, 0, length, true);
|
||||
}
|
||||
|
@ -13,6 +13,8 @@
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.sql.Types;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneOffset;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Collectors;
|
||||
@ -2225,7 +2227,8 @@ public void parseDefaultValue() {
|
||||
"columnC VARCHAR(10) NULL DEFAULT 'C'," +
|
||||
"columnD VARCHAR(10) NULL DEFAULT NULL," +
|
||||
"columnE VARCHAR(10) NOT NULL," +
|
||||
"my_date datetime NOT NULL DEFAULT '2018-04-27 13:28:43');";
|
||||
"my_dateA datetime NOT NULL DEFAULT '2018-04-27 13:28:43'," +
|
||||
"my_dateB datetime NOT NULL DEFAULT '9999-12-31');";
|
||||
parser.parse(ddl, tables);
|
||||
Table table = tables.forTable(new TableId(null, null, "tmp"));
|
||||
assertThat(table.columnWithName("id").isOptional()).isEqualTo(false);
|
||||
@ -2234,6 +2237,8 @@ public void parseDefaultValue() {
|
||||
assertThat(table.columnWithName("columnC").defaultValue()).isEqualTo("C");
|
||||
assertThat(table.columnWithName("columnD").defaultValue()).isEqualTo(null);
|
||||
assertThat(table.columnWithName("columnE").defaultValue()).isEqualTo(null);
|
||||
assertThat(table.columnWithName("my_dateA").defaultValue()).isEqualTo(LocalDateTime.of(2018, 4, 27, 13, 28, 43).toEpochSecond(ZoneOffset.UTC) * 1_000);
|
||||
assertThat(table.columnWithName("my_dateB").defaultValue()).isEqualTo(LocalDateTime.of(9999, 12, 31, 0, 0, 0).toEpochSecond(ZoneOffset.UTC) * 1_000);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
Loading…
Reference in New Issue
Block a user