diff --git a/postgres_ffi/src/xlog_utils.rs b/postgres_ffi/src/xlog_utils.rs index aabbf8628b..127e8afbf3 100644 --- a/postgres_ffi/src/xlog_utils.rs +++ b/postgres_ffi/src/xlog_utils.rs @@ -38,7 +38,7 @@ pub const XLOG_SIZE_OF_XLOG_RECORD: usize = std::mem::size_of::(); pub type XLogRecPtr = u64; pub type TimeLineID = u32; -pub type TimestampTz = u64; +pub type TimestampTz = i64; pub type XLogSegNo = u64; #[allow(non_snake_case)] @@ -90,9 +90,9 @@ pub fn get_current_timestamp() -> TimestampTz { const USECS_PER_SEC: u64 = 1000000; match SystemTime::now().duration_since(SystemTime::UNIX_EPOCH) { Ok(n) => { - (n.as_secs() - ((POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY)) - * USECS_PER_SEC - + n.subsec_micros() as u64 + ((n.as_secs() - ((POSTGRES_EPOCH_JDATE - UNIX_EPOCH_JDATE) * SECS_PER_DAY)) + * USECS_PER_SEC + + n.subsec_micros() as u64) as i64 } Err(_) => panic!("SystemTime before UNIX EPOCH!"), } diff --git a/zenith_utils/src/pq_proto.rs b/zenith_utils/src/pq_proto.rs index 77d73d50da..5570e1b223 100644 --- a/zenith_utils/src/pq_proto.rs +++ b/zenith_utils/src/pq_proto.rs @@ -360,7 +360,7 @@ impl Default for RowDescriptor<'_> { pub struct XLogDataBody<'a> { pub wal_start: u64, pub wal_end: u64, - pub timestamp: u64, + pub timestamp: i64, pub data: &'a [u8], } @@ -626,7 +626,7 @@ impl<'a> BeMessage<'a> { buf.put_u8(b'w'); buf.put_u64(body.wal_start); buf.put_u64(body.wal_end); - buf.put_u64(body.timestamp); + buf.put_i64(body.timestamp); buf.put_slice(body.data); Ok::<_, io::Error>(()) })