[package]
edition = "2021"
rust-version = "1.74"
name = "dsfb-database"
version = "0.1.1"
authors = ["Riaan de Beer <riaan@invariantforge.net>"]
build = false
include = [
"src/**",
"spec/**",
"tests/**",
"examples/**",
"audit/**",
"colab/dsfb_database_repro.ipynb",
"/Cargo.toml",
"/README.md",
"/LICENSE",
"/NOTICE",
"/CITATION.cff",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
default-run = "dsfb-database"
description = "DSFB-Database: deterministic, read-only structural observer for residual trajectories in SQL database telemetry. Empirical prior-art demonstration on Snowset, SQLShare, CEB, JOB, and TPC-DS."
homepage = "https://github.com/infinityabundance/dsfb"
documentation = "https://docs.rs/dsfb-database"
readme = "README.md"
keywords = [
"dsfb",
"database",
"observability",
"residual",
"sql",
]
categories = [
"science",
"command-line-utilities",
]
license = "Apache-2.0"
repository = "https://github.com/infinityabundance/dsfb"
[features]
cli = ["dep:clap"]
default = ["cli"]
full = [
"cli",
"report",
"otel",
"live-postgres",
"live-mysql",
]
live-mysql = [
"dep:mysql_async",
"dep:tokio",
"dep:futures-util",
"report",
]
live-postgres = [
"dep:tokio",
"dep:tokio-postgres",
"dep:futures-util",
"report",
]
otel = ["dep:serde_json"]
report = [
"dep:plotters",
"dep:serde_json",
]
[lib]
name = "dsfb_database"
path = "src/lib.rs"
[[bin]]
name = "ablation_sweep"
path = "src/bin/ablation_sweep.rs"
required-features = ["cli"]
[[bin]]
name = "baseline_bake_off"
path = "src/bin/baseline_bake_off.rs"
required-features = ["cli"]
[[bin]]
name = "baseline_tune"
path = "src/bin/baseline_tune.rs"
required-features = [
"cli",
"report",
"live-postgres",
]
[[bin]]
name = "bootstrap_coverage"
path = "src/bin/bootstrap_coverage.rs"
required-features = ["cli"]
[[bin]]
name = "dsfb-database"
path = "src/main.rs"
required-features = [
"cli",
"report",
]
[[bin]]
name = "ingest_throughput"
path = "src/bin/ingest_throughput.rs"
required-features = ["cli"]
[[bin]]
name = "inject_over_real"
path = "src/bin/inject_over_real.rs"
required-features = ["cli"]
[[bin]]
name = "live_pulsed_scrape_figure"
path = "src/bin/live_pulsed_scrape_figure.rs"
required-features = [
"cli",
"report",
"live-postgres",
]
[[bin]]
name = "null_trace"
path = "src/bin/null_trace.rs"
required-features = ["cli"]
[[bin]]
name = "pr_sweep"
path = "src/bin/pr_sweep.rs"
required-features = [
"cli",
"report",
]
[[bin]]
name = "public_trace_bakeoff"
path = "src/bin/public_trace_bakeoff.rs"
required-features = [
"cli",
"report",
]
[[bin]]
name = "render_live_eval_figures"
path = "src/bin/render_live_eval_figures.rs"
required-features = [
"cli",
"report",
"live-postgres",
]
[[bin]]
name = "replay_tape_baselines"
path = "src/bin/replay_tape_baselines.rs"
required-features = [
"cli",
"report",
"live-postgres",
]
[[bin]]
name = "tpc_c_generalization"
path = "src/bin/tpc_c_generalization.rs"
required-features = ["cli"]
[[bin]]
name = "variance_sweep"
path = "src/bin/variance_sweep.rs"
required-features = ["cli"]
[[example]]
name = "postgres_ingest"
path = "examples/postgres_ingest.rs"
[[test]]
name = "adapter_roundtrip"
path = "tests/adapter_roundtrip.rs"
[[test]]
name = "concurrent_stream_loom"
path = "tests/concurrent_stream_loom.rs"
[[test]]
name = "deterministic_replay"
path = "tests/deterministic_replay.rs"
[[test]]
name = "forbidden_phrases"
path = "tests/forbidden_phrases.rs"
[[test]]
name = "live_backpressure_throttles"
path = "tests/live_backpressure_throttles.rs"
[[test]]
name = "live_distiller_matches_batch"
path = "tests/live_distiller_matches_batch.rs"
[[test]]
name = "live_query_allowlist_lock"
path = "tests/live_query_allowlist_lock.rs"
[[test]]
name = "live_query_allowlist_lock_mysql"
path = "tests/live_query_allowlist_lock_mysql.rs"
[[test]]
name = "live_readonly_conn_surface"
path = "tests/live_readonly_conn_surface.rs"
[[test]]
name = "live_replay_baselines_reproducibility"
path = "tests/live_replay_baselines_reproducibility.rs"
[[test]]
name = "live_tape_replay_is_deterministic"
path = "tests/live_tape_replay_is_deterministic.rs"
[[test]]
name = "non_claim_lock"
path = "tests/non_claim_lock.rs"
[[test]]
name = "property_baselines"
path = "tests/property_baselines.rs"
[[test]]
name = "property_envelope_arbtest"
path = "tests/property_envelope_arbtest.rs"
[[test]]
name = "property_threshold"
path = "tests/property_threshold.rs"
[[test]]
name = "reproduce_all_zip_is_deterministic"
path = "tests/reproduce_all_zip_is_deterministic.rs"
[[test]]
name = "spec_validation"
path = "tests/spec_validation.rs"
[[test]]
name = "stress_sweep"
path = "tests/stress_sweep.rs"
[dependencies.anyhow]
version = "1"
[dependencies.chrono]
version = "0.4"
features = ["clock"]
default-features = false
[dependencies.clap]
version = "4"
features = ["derive"]
optional = true
[dependencies.csv]
version = "1.3"
[dependencies.dsfb]
version = "0.1.2"
[dependencies.futures-util]
version = "0.3"
optional = true
[dependencies.mysql_async]
version = "0.36"
features = ["default-rustls"]
optional = true
default-features = false
[dependencies.plotters]
version = "0.3"
features = [
"bitmap_backend",
"bitmap_encoder",
"line_series",
"ttf",
]
optional = true
default-features = false
[dependencies.rand]
version = "0.8"
[dependencies.rand_pcg]
version = "0.3"
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
optional = true
[dependencies.serde_yaml]
version = "0.9"
[dependencies.sha2]
version = "0.10"
[dependencies.tokio]
version = "1"
features = [
"rt",
"time",
"macros",
"signal",
"sync",
]
optional = true
[dependencies.tokio-postgres]
version = "0.7"
optional = true
[dependencies.zip]
version = "0.6"
default-features = false
[dev-dependencies.arbtest]
version = "0.3"
[dev-dependencies.criterion]
version = "0.5"
[dev-dependencies.loom]
version = "0.7"
[dev-dependencies.tempfile]
version = "3"
[dev-dependencies.trybuild]
version = "1"
[profile.release]
opt-level = 3
lto = "thin"