Skip to main content

PgwireConfig

Struct PgwireConfig 

Source
pub struct PgwireConfig {
    pub enabled: bool,
    pub listen: IpAddr,
    pub port: u16,
    pub username: String,
    pub password: Option<String>,
    pub tls_cert: Option<PathBuf>,
    pub tls_key: Option<PathBuf>,
}
Expand description

Experimental PostgreSQL wire-protocol server ([server.pgwire] block).

When enabled on the DataFusion backend, BI tools (Power BI via Npgsql, psql, DBeaver, …) can connect and query the registered datasets as if this process were PostgreSQL. Off by default and a no-op unless the binary was built with the pgwire feature on datapress-datafusion.

Fields§

§enabled: bool

Start the pgwire listener after datasets are registered.

§listen: IpAddr

Listen address. Defaults to loopback (127.0.0.1). Binding a non-loopback address requires a password (and, since only cleartext password auth is available, TLS as well).

§port: u16

TCP port. Defaults to the PostgreSQL default 5432.

§username: String

Username clients must present. Defaults to datapress.

§password: Option<String>

Password clients must present. Optional only for a loopback-only listener; required for any non-loopback bind.

§tls_cert: Option<PathBuf>

PEM certificate path for TLS. Must be set together with tls_key.

§tls_key: Option<PathBuf>

PKCS#8 private-key path for TLS. Must be set together with tls_cert.

Implementations§

Source§

impl PgwireConfig

Source

pub fn validate_enabled(&self) -> Result<(), AppError>

Validate the enabled pgwire configuration. Because the only available authentication mechanism is cleartext password (SCRAM would need a salted verifier the integration library does not expose), the rules are deliberately strict about exposing an off-box listener:

  • a non-loopback listen requires a password — an unauthenticated SQL endpoint must never be reachable off the local host;
  • tls_cert and tls_key must be set together or not at all;
  • a non-loopback listen also requires TLS, so the cleartext password never crosses a plaintext TCP connection off the box.

Trait Implementations§

Source§

impl Clone for PgwireConfig

Source§

fn clone(&self) -> PgwireConfig

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PgwireConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PgwireConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for PgwireConfig

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more