@Override
    public Serializable read(final MySQLBinlogColumnDef columnDef, final MySQLPacketPayload payload) {
        int seconds = payload.getByteBuf().readInt();
        if (0 == seconds) {
            return MySQLTimeValueUtils.DATETIME_OF_ZERO;
        }
        int nanos = columnDef.getColumnMeta() > 0 ? new MySQLFractionalSeconds(columnDef.getColumnMeta(), payload).getNanos() : 0;
        Timestamp result = new Timestamp(seconds * 1000L);
        result.setNanos(nanos);
        return result;
    }
@Test
    void assertReadWithFraction() {
        columnDef.setColumnMeta(1);
        long currentTimeMillis = 1678795614082L;
        int currentSeconds = Long.valueOf(currentTimeMillis / 1000L).intValue();
        int currentMilliseconds = Long.valueOf(currentTimeMillis % 100L).intValue();
        when(payload.readInt1()).thenReturn(currentMilliseconds);
        when(byteBuf.readInt()).thenReturn(currentSeconds);
        assertThat("currentTimeMillis:" + currentTimeMillis, new MySQLTimestamp2BinlogProtocolValue().read(columnDef, payload), is(new Timestamp(currentSeconds * 1000L + currentMilliseconds * 10L)));
    }