Skip to content

Commit

Permalink
docs: Added timestamp generator docs
Browse files Browse the repository at this point in the history
  • Loading branch information
smoczy123 committed Dec 11, 2024
1 parent 55b556d commit 4ad3cd7
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions docs/source/queries/timestamp_generators.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# 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, as longas the statement did not
already have a timestamp provided (e.g. by using the `TIMESTAMP` clause).

## Monotonic Timestamp Generator

Most basic 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 (provided in the constructor, 1s by default)
user will be warned with timestamp generation with warning_interval cooldown period
(provided in the constructor, 1s by default) to not spam the user.

``` rust
# extern crate scylla;
# use std::error::Error;
# async fn check_only_compiles() -> Result<(), Box<dyn std::error::Error>> {
use scylla::{Session, SessionBuilder};
use scylla::transport::timestamp_generator::MonotonicTimestampGenerator;
use std::sync::Arc;
use std::time::Duration;

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(())
# }


0 comments on commit 4ad3cd7

Please sign in to comment.