mirror of
https://github.com/neondatabase/neon.git
synced 2025-12-22 21:59:59 +00:00
Don't depend on the postgres_ffi just for one type (#12610)
We don't want to depend on postgres_ffi in an API crate. If there is no such dependency, we can compile stuff like `storcon_cli` without needing a full working postgres build. Fixes regression of #12548 (before we could compile it).
This commit is contained in:
3
Cargo.lock
generated
3
Cargo.lock
generated
@@ -6211,6 +6211,7 @@ dependencies = [
|
|||||||
"postgres-protocol",
|
"postgres-protocol",
|
||||||
"postgres_backend",
|
"postgres_backend",
|
||||||
"postgres_ffi",
|
"postgres_ffi",
|
||||||
|
"postgres_ffi_types",
|
||||||
"postgres_versioninfo",
|
"postgres_versioninfo",
|
||||||
"pprof",
|
"pprof",
|
||||||
"pq_proto",
|
"pq_proto",
|
||||||
@@ -6255,7 +6256,7 @@ dependencies = [
|
|||||||
"anyhow",
|
"anyhow",
|
||||||
"const_format",
|
"const_format",
|
||||||
"pageserver_api",
|
"pageserver_api",
|
||||||
"postgres_ffi",
|
"postgres_ffi_types",
|
||||||
"postgres_versioninfo",
|
"postgres_versioninfo",
|
||||||
"pq_proto",
|
"pq_proto",
|
||||||
"serde",
|
"serde",
|
||||||
|
|||||||
@@ -110,7 +110,6 @@ fn main() -> anyhow::Result<()> {
|
|||||||
.allowlist_type("XLogRecPtr")
|
.allowlist_type("XLogRecPtr")
|
||||||
.allowlist_type("XLogSegNo")
|
.allowlist_type("XLogSegNo")
|
||||||
.allowlist_type("TimeLineID")
|
.allowlist_type("TimeLineID")
|
||||||
.allowlist_type("TimestampTz")
|
|
||||||
.allowlist_type("MultiXactId")
|
.allowlist_type("MultiXactId")
|
||||||
.allowlist_type("MultiXactOffset")
|
.allowlist_type("MultiXactOffset")
|
||||||
.allowlist_type("MultiXactStatus")
|
.allowlist_type("MultiXactStatus")
|
||||||
|
|||||||
@@ -227,8 +227,7 @@ pub mod walrecord;
|
|||||||
// Export some widely used datatypes that are unlikely to change across Postgres versions
|
// Export some widely used datatypes that are unlikely to change across Postgres versions
|
||||||
pub use v14::bindings::{
|
pub use v14::bindings::{
|
||||||
BlockNumber, CheckPoint, ControlFileData, MultiXactId, OffsetNumber, Oid, PageHeaderData,
|
BlockNumber, CheckPoint, ControlFileData, MultiXactId, OffsetNumber, Oid, PageHeaderData,
|
||||||
RepOriginId, TimeLineID, TimestampTz, TransactionId, XLogRecPtr, XLogRecord, XLogSegNo, uint32,
|
RepOriginId, TimeLineID, TransactionId, XLogRecPtr, XLogRecord, XLogSegNo, uint32, uint64,
|
||||||
uint64,
|
|
||||||
};
|
};
|
||||||
// Likewise for these, although the assumption that these don't change is a little more iffy.
|
// Likewise for these, although the assumption that these don't change is a little more iffy.
|
||||||
pub use v14::bindings::{MultiXactOffset, MultiXactStatus};
|
pub use v14::bindings::{MultiXactOffset, MultiXactStatus};
|
||||||
|
|||||||
@@ -4,13 +4,14 @@
|
|||||||
//! TODO: Generate separate types for each supported PG version
|
//! TODO: Generate separate types for each supported PG version
|
||||||
|
|
||||||
use bytes::{Buf, Bytes};
|
use bytes::{Buf, Bytes};
|
||||||
|
use postgres_ffi_types::TimestampTz;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use utils::bin_ser::DeserializeError;
|
use utils::bin_ser::DeserializeError;
|
||||||
use utils::lsn::Lsn;
|
use utils::lsn::Lsn;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
BLCKSZ, BlockNumber, MultiXactId, MultiXactOffset, MultiXactStatus, Oid, PgMajorVersion,
|
BLCKSZ, BlockNumber, MultiXactId, MultiXactOffset, MultiXactStatus, Oid, PgMajorVersion,
|
||||||
RepOriginId, TimestampTz, TransactionId, XLOG_SIZE_OF_XLOG_RECORD, XLogRecord, pg_constants,
|
RepOriginId, TransactionId, XLOG_SIZE_OF_XLOG_RECORD, XLogRecord, pg_constants,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
@@ -863,7 +864,8 @@ pub mod v17 {
|
|||||||
XlHeapDelete, XlHeapInsert, XlHeapLock, XlHeapMultiInsert, XlHeapUpdate, XlParameterChange,
|
XlHeapDelete, XlHeapInsert, XlHeapLock, XlHeapMultiInsert, XlHeapUpdate, XlParameterChange,
|
||||||
rm_neon,
|
rm_neon,
|
||||||
};
|
};
|
||||||
pub use crate::{TimeLineID, TimestampTz};
|
pub use crate::TimeLineID;
|
||||||
|
pub use postgres_ffi_types::TimestampTz;
|
||||||
|
|
||||||
#[repr(C)]
|
#[repr(C)]
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|||||||
@@ -9,10 +9,11 @@
|
|||||||
|
|
||||||
use super::super::waldecoder::WalStreamDecoder;
|
use super::super::waldecoder::WalStreamDecoder;
|
||||||
use super::bindings::{
|
use super::bindings::{
|
||||||
CheckPoint, ControlFileData, DBState_DB_SHUTDOWNED, FullTransactionId, TimeLineID, TimestampTz,
|
CheckPoint, ControlFileData, DBState_DB_SHUTDOWNED, FullTransactionId, TimeLineID,
|
||||||
XLogLongPageHeaderData, XLogPageHeaderData, XLogRecPtr, XLogRecord, XLogSegNo, XLOG_PAGE_MAGIC,
|
XLogLongPageHeaderData, XLogPageHeaderData, XLogRecPtr, XLogRecord, XLogSegNo, XLOG_PAGE_MAGIC,
|
||||||
MY_PGVERSION
|
MY_PGVERSION
|
||||||
};
|
};
|
||||||
|
use postgres_ffi_types::TimestampTz;
|
||||||
use super::wal_generator::LogicalMessageGenerator;
|
use super::wal_generator::LogicalMessageGenerator;
|
||||||
use crate::pg_constants;
|
use crate::pg_constants;
|
||||||
use crate::PG_TLI;
|
use crate::PG_TLI;
|
||||||
|
|||||||
@@ -11,3 +11,4 @@ pub mod forknum;
|
|||||||
|
|
||||||
pub type Oid = u32;
|
pub type Oid = u32;
|
||||||
pub type RepOriginId = u16;
|
pub type RepOriginId = u16;
|
||||||
|
pub type TimestampTz = i64;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ anyhow.workspace = true
|
|||||||
const_format.workspace = true
|
const_format.workspace = true
|
||||||
serde.workspace = true
|
serde.workspace = true
|
||||||
serde_json.workspace = true
|
serde_json.workspace = true
|
||||||
postgres_ffi.workspace = true
|
postgres_ffi_types.workspace = true
|
||||||
postgres_versioninfo.workspace = true
|
postgres_versioninfo.workspace = true
|
||||||
pq_proto.workspace = true
|
pq_proto.workspace = true
|
||||||
tokio.workspace = true
|
tokio.workspace = true
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
use std::net::SocketAddr;
|
use std::net::SocketAddr;
|
||||||
|
|
||||||
use pageserver_api::shard::ShardIdentity;
|
use pageserver_api::shard::ShardIdentity;
|
||||||
use postgres_ffi::TimestampTz;
|
use postgres_ffi_types::TimestampTz;
|
||||||
use postgres_versioninfo::PgVersionId;
|
use postgres_versioninfo::PgVersionId;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use tokio::time::Instant;
|
use tokio::time::Instant;
|
||||||
|
|||||||
@@ -2,7 +2,8 @@
|
|||||||
|
|
||||||
use bytes::Bytes;
|
use bytes::Bytes;
|
||||||
use postgres_ffi::walrecord::{MultiXactMember, describe_postgres_wal_record};
|
use postgres_ffi::walrecord::{MultiXactMember, describe_postgres_wal_record};
|
||||||
use postgres_ffi::{MultiXactId, MultiXactOffset, TimestampTz, TransactionId};
|
use postgres_ffi::{MultiXactId, MultiXactOffset, TransactionId};
|
||||||
|
use postgres_ffi_types::TimestampTz;
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use utils::bin_ser::DeserializeError;
|
use utils::bin_ser::DeserializeError;
|
||||||
|
|
||||||
|
|||||||
@@ -25,9 +25,9 @@ use pageserver_api::keyspace::{KeySpaceRandomAccum, SparseKeySpace};
|
|||||||
use pageserver_api::models::RelSizeMigration;
|
use pageserver_api::models::RelSizeMigration;
|
||||||
use pageserver_api::reltag::{BlockNumber, RelTag, SlruKind};
|
use pageserver_api::reltag::{BlockNumber, RelTag, SlruKind};
|
||||||
use pageserver_api::shard::ShardIdentity;
|
use pageserver_api::shard::ShardIdentity;
|
||||||
use postgres_ffi::{BLCKSZ, PgMajorVersion, TimestampTz, TransactionId};
|
use postgres_ffi::{BLCKSZ, PgMajorVersion, TransactionId};
|
||||||
use postgres_ffi_types::forknum::{FSM_FORKNUM, VISIBILITYMAP_FORKNUM};
|
use postgres_ffi_types::forknum::{FSM_FORKNUM, VISIBILITYMAP_FORKNUM};
|
||||||
use postgres_ffi_types::{Oid, RepOriginId};
|
use postgres_ffi_types::{Oid, RepOriginId, TimestampTz};
|
||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use strum::IntoEnumIterator;
|
use strum::IntoEnumIterator;
|
||||||
use tokio_util::sync::CancellationToken;
|
use tokio_util::sync::CancellationToken;
|
||||||
|
|||||||
@@ -32,9 +32,10 @@ use pageserver_api::reltag::{BlockNumber, RelTag, SlruKind};
|
|||||||
use pageserver_api::shard::ShardIdentity;
|
use pageserver_api::shard::ShardIdentity;
|
||||||
use postgres_ffi::walrecord::*;
|
use postgres_ffi::walrecord::*;
|
||||||
use postgres_ffi::{
|
use postgres_ffi::{
|
||||||
PgMajorVersion, TimestampTz, TransactionId, dispatch_pgversion, enum_pgversion,
|
PgMajorVersion, TransactionId, dispatch_pgversion, enum_pgversion, enum_pgversion_dispatch,
|
||||||
enum_pgversion_dispatch, fsm_logical_to_physical, pg_constants,
|
fsm_logical_to_physical, pg_constants,
|
||||||
};
|
};
|
||||||
|
use postgres_ffi_types::TimestampTz;
|
||||||
use postgres_ffi_types::forknum::{FSM_FORKNUM, INIT_FORKNUM, MAIN_FORKNUM, VISIBILITYMAP_FORKNUM};
|
use postgres_ffi_types::forknum::{FSM_FORKNUM, INIT_FORKNUM, MAIN_FORKNUM, VISIBILITYMAP_FORKNUM};
|
||||||
use tracing::*;
|
use tracing::*;
|
||||||
use utils::bin_ser::{DeserializeError, SerializeError};
|
use utils::bin_ser::{DeserializeError, SerializeError};
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ metrics.workspace = true
|
|||||||
pem.workspace = true
|
pem.workspace = true
|
||||||
postgres_backend.workspace = true
|
postgres_backend.workspace = true
|
||||||
postgres_ffi.workspace = true
|
postgres_ffi.workspace = true
|
||||||
|
postgres_ffi_types.workspace = true
|
||||||
postgres_versioninfo.workspace = true
|
postgres_versioninfo.workspace = true
|
||||||
pq_proto.workspace = true
|
pq_proto.workspace = true
|
||||||
remote_storage.workspace = true
|
remote_storage.workspace = true
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ use futures::FutureExt;
|
|||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
use parking_lot::Mutex;
|
use parking_lot::Mutex;
|
||||||
use postgres_backend::{CopyStreamHandlerEnd, PostgresBackend, PostgresBackendReader, QueryError};
|
use postgres_backend::{CopyStreamHandlerEnd, PostgresBackend, PostgresBackendReader, QueryError};
|
||||||
use postgres_ffi::{MAX_SEND_SIZE, PgMajorVersion, TimestampTz, get_current_timestamp};
|
use postgres_ffi::{MAX_SEND_SIZE, PgMajorVersion, get_current_timestamp};
|
||||||
|
use postgres_ffi_types::TimestampTz;
|
||||||
use pq_proto::{BeMessage, WalSndKeepAlive, XLogDataBody};
|
use pq_proto::{BeMessage, WalSndKeepAlive, XLogDataBody};
|
||||||
use safekeeper_api::Term;
|
use safekeeper_api::Term;
|
||||||
use safekeeper_api::models::{
|
use safekeeper_api::models::{
|
||||||
|
|||||||
Reference in New Issue
Block a user