Was this page helpful?
Caution
You're viewing documentation for an unstable version of Scylla Rust Driver. Switch to the latest stable version.
Timestamp generators¶
If you want to generate timestamps on the client side you can provide a TimestampGenerator to a SessionBuilder when creating a Session. Then every executed statement will have attached a new timestamp generated by the provided TimestampGenerator. Timestamps are set according to precendence:
USING TIMESTAMP
in the query itselfManually using
set_timestamp
on the queryTimestamp generated by the generator
Simple Timestamp Generator¶
Most basic client-side timestamp generator. Generates timestamp based on system clock. Provides no guarantees and panics when the system clock provides timestamp before the unix epoch.
Monotonic Timestamp Generator¶
Client-side timestamp generator. Guarantees monotonic timestamps
based on the system clock, with automatic timestamp incrementation
if the system clock timestamp would not be monotonic. If the clock skew
exceeds warning_threshold
of the generator (can be changed with with_warning_times
, 1s by default)
user will be warned with timestamp generation with warning_interval
cooldown period
(can be changed with with_warning_times
, 1s by default) to not spam the user. If user does not want to
be warned about the clock skew, the warnings can be turned off with without_warnings
function.
# extern crate scylla;
# use std::error::Error;
# async fn check_only_compiles() -> Result<(), Box<dyn std::error::Error>> {
use scylla::client::session::Session;
use scylla::client::session_builder::SessionBuilder;
use scylla::policies::timestamp_generator::MonotonicTimestampGenerator;
use scylla::query::Query;
use std::sync::Arc;
let session: Session = SessionBuilder::new()
.known_node("127.0.0.1:9042")
.timestamp_generator(Arc::new(MonotonicTimestampGenerator::new()))
.build()
.await?;
// This query will have a timestamp generated
// by the monotonic timestamp generator
let my_query: Query = Query::new("INSERT INTO ks.tab (a) VALUES(?)");
let to_insert: i32 = 12345;
session.query_unpaged(my_query, (to_insert,)).await?;
# Ok(())
# }