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>
impl<T> Insert<T>
Sourcepub fn with_timeouts(
self,
send_timeout: Option<Duration>,
end_timeout: Option<Duration>,
) -> Self
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()
.
Sourcepub fn with_option(
self,
name: impl Into<String>,
value: impl Into<String>,
) -> Self
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
.
Sourcepub fn write<'a>(
&'a mut self,
row: &T,
) -> impl Future<Output = Result<()>> + 'a + Sendwhere
T: Serialize,
pub fn write<'a>(
&'a mut self,
row: &T,
) -> impl Future<Output = Result<()>> + 'a + Sendwhere
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.