Struct Insert

Source
pub struct Insert<T> { /* private fields */ }
Expand description

Performs one INSERT.

The Insert::end must be called to finalize the INSERT. Otherwise, the whole INSERT will be aborted.

Rows are being sent progressively to spread network load.

Implementations§

Source§

impl<T> Insert<T>

Source

pub fn with_timeouts( self, send_timeout: Option<Duration>, end_timeout: Option<Duration>, ) -> Self

Sets timeouts for different operations.

send_timeout restricts time on sending a data chunk to a socket. None disables the timeout, it’s a default. It’s roughly equivalent to tokio::time::timeout(insert.write(...)).

end_timeout restricts time on waiting for a response from the CH server. Thus, it includes all work needed to handle INSERT by the CH server, e.g. handling all materialized views and so on. None disables the timeout, it’s a default. It’s roughly equivalent to tokio::time::timeout(insert.end(...)).

These timeouts are much more performant (~x10) than wrapping write() and end() calls into tokio::time::timeout().

Source

pub fn with_option( self, name: impl Into<String>, value: impl Into<String>, ) -> Self

Similar to Client::with_option, but for this particular INSERT statement only.

§Panics

If called after the request is started, e.g., after Insert::write.

Source

pub fn write<'a>( &'a mut self, row: &T, ) -> impl Future<Output = Result<()>> + 'a + Send
where T: Serialize,

Serializes the provided row into an internal buffer. Once the buffer is full, it’s sent to a background task writing to the socket.

Close to:

async fn write<T>(&self, row: &T) -> Result<usize>;

A returned future doesn’t depend on the row’s lifetime.

Returns an error if the row cannot be serialized or the background task failed. Once failed, the whole INSERT is aborted and cannot be used anymore.

§Panics

If called after the previous call that returned an error.

Source

pub async fn end(self) -> Result<()>

Ends INSERT, the server starts processing the data.

Succeeds if the server returns 200, that means the INSERT was handled successfully, including all materialized views and quorum writes.

NOTE: If it isn’t called, the whole INSERT is aborted.

Trait Implementations§

Source§

impl<T> Drop for Insert<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Insert<T>

§

impl<T> !RefUnwindSafe for Insert<T>

§

impl<T> Send for Insert<T>

§

impl<T> Sync for Insert<T>

§

impl<T> Unpin for Insert<T>

§

impl<T> !UnwindSafe for Insert<T>

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> 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, 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
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T