[package]
edition = "2024"
rust-version = "1.95"
name = "spg-server"
version = "7.11.18"
authors = ["GOLIA K.K. <lihao@golia.jp>"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "SPG daemon — listens for self-built wire-frame connections and PG-wire (libpq-compatible)."
readme = "README.md"
keywords = [
"spg",
"database",
"server",
"sql",
"postgres",
]
categories = [
"database-implementations",
"network-programming",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/goliajp/spg"
[[bin]]
name = "spg-server"
path = "src/main.rs"
[[test]]
name = "chaos_compact_atomic"
path = "tests/chaos_compact_atomic.rs"
[[test]]
name = "chaos_wal_compression_torn_write"
path = "tests/chaos_wal_compression_torn_write.rs"
[[test]]
name = "cross_version_compat"
path = "tests/cross_version_compat.rs"
[[test]]
name = "e2e_alter_rebuild"
path = "tests/e2e_alter_rebuild.rs"
[[test]]
name = "e2e_async_commit"
path = "tests/e2e_async_commit.rs"
[[test]]
name = "e2e_audit"
path = "tests/e2e_audit.rs"
[[test]]
name = "e2e_audit_verify"
path = "tests/e2e_audit_verify.rs"
[[test]]
name = "e2e_auth"
path = "tests/e2e_auth.rs"
[[test]]
name = "e2e_auto_analyze"
path = "tests/e2e_auto_analyze.rs"
[[test]]
name = "e2e_backup"
path = "tests/e2e_backup.rs"
[[test]]
name = "e2e_cascade"
path = "tests/e2e_cascade.rs"
[[test]]
name = "e2e_chaos"
path = "tests/e2e_chaos.rs"
[[test]]
name = "e2e_chaos_async_commit"
path = "tests/e2e_chaos_async_commit.rs"
[[test]]
name = "e2e_chaos_freeze"
path = "tests/e2e_chaos_freeze.rs"
[[test]]
name = "e2e_chaos_logical"
path = "tests/e2e_chaos_logical.rs"
[[test]]
name = "e2e_chaos_netsplit"
path = "tests/e2e_chaos_netsplit.rs"
[[test]]
name = "e2e_compression_metrics"
path = "tests/e2e_compression_metrics.rs"
[[test]]
name = "e2e_copy_options"
path = "tests/e2e_copy_options.rs"
[[test]]
name = "e2e_correlated"
path = "tests/e2e_correlated.rs"
[[test]]
name = "e2e_cte"
path = "tests/e2e_cte.rs"
[[test]]
name = "e2e_disk_watermark"
path = "tests/e2e_disk_watermark.rs"
[[test]]
name = "e2e_explain"
path = "tests/e2e_explain.rs"
[[test]]
name = "e2e_flusher"
path = "tests/e2e_flusher.rs"
[[test]]
name = "e2e_freezer"
path = "tests/e2e_freezer.rs"
[[test]]
name = "e2e_fuzz"
path = "tests/e2e_fuzz.rs"
[[test]]
name = "e2e_graceful_shutdown"
path = "tests/e2e_graceful_shutdown.rs"
[[test]]
name = "e2e_group_commit"
path = "tests/e2e_group_commit.rs"
[[test]]
name = "e2e_half"
path = "tests/e2e_half.rs"
[[test]]
name = "e2e_index"
path = "tests/e2e_index.rs"
[[test]]
name = "e2e_json"
path = "tests/e2e_json.rs"
[[test]]
name = "e2e_json_path"
path = "tests/e2e_json_path.rs"
[[test]]
name = "e2e_limits"
path = "tests/e2e_limits.rs"
[[test]]
name = "e2e_manifest"
path = "tests/e2e_manifest.rs"
[[test]]
name = "e2e_observability"
path = "tests/e2e_observability.rs"
[[test]]
name = "e2e_parallel_freezer"
path = "tests/e2e_parallel_freezer.rs"
[[test]]
name = "e2e_persistence"
path = "tests/e2e_persistence.rs"
[[test]]
name = "e2e_pg_catalog"
path = "tests/e2e_pg_catalog.rs"
[[test]]
name = "e2e_pg_copy"
path = "tests/e2e_pg_copy.rs"
[[test]]
name = "e2e_pg_extended"
path = "tests/e2e_pg_extended.rs"
[[test]]
name = "e2e_pg_scram"
path = "tests/e2e_pg_scram.rs"
[[test]]
name = "e2e_pg_session_vars"
path = "tests/e2e_pg_session_vars.rs"
[[test]]
name = "e2e_pg_vacuum"
path = "tests/e2e_pg_vacuum.rs"
[[test]]
name = "e2e_pgbouncer_compat"
path = "tests/e2e_pgbouncer_compat.rs"
[[test]]
name = "e2e_pgwire"
path = "tests/e2e_pgwire.rs"
[[test]]
name = "e2e_pgwire_binary_params"
path = "tests/e2e_pgwire_binary_params.rs"
[[test]]
name = "e2e_pgwire_client_compat"
path = "tests/e2e_pgwire_client_compat.rs"
[[test]]
name = "e2e_pgwire_describe"
path = "tests/e2e_pgwire_describe.rs"
[[test]]
name = "e2e_pgwire_pipelined"
path = "tests/e2e_pgwire_pipelined.rs"
[[test]]
name = "e2e_ping"
path = "tests/e2e_ping.rs"
[[test]]
name = "e2e_prefetch"
path = "tests/e2e_prefetch.rs"
[[test]]
name = "e2e_publication_ddl"
path = "tests/e2e_publication_ddl.rs"
[[test]]
name = "e2e_query"
path = "tests/e2e_query.rs"
[[test]]
name = "e2e_query_budget"
path = "tests/e2e_query_budget.rs"
[[test]]
name = "e2e_query_ns_budget"
path = "tests/e2e_query_ns_budget.rs"
[[test]]
name = "e2e_rbac"
path = "tests/e2e_rbac.rs"
[[test]]
name = "e2e_recursive_cte"
path = "tests/e2e_recursive_cte.rs"
[[test]]
name = "e2e_replay_only"
path = "tests/e2e_replay_only.rs"
[[test]]
name = "e2e_replication"
path = "tests/e2e_replication.rs"
[[test]]
name = "e2e_replication_filter"
path = "tests/e2e_replication_filter.rs"
[[test]]
name = "e2e_restore_drill"
path = "tests/e2e_restore_drill.rs"
[[test]]
name = "e2e_segment_forward"
path = "tests/e2e_segment_forward.rs"
[[test]]
name = "e2e_slow_query_log"
path = "tests/e2e_slow_query_log.rs"
[[test]]
name = "e2e_spg_stat_activity"
path = "tests/e2e_spg_stat_activity.rs"
[[test]]
name = "e2e_spg_statistic"
path = "tests/e2e_spg_statistic.rs"
[[test]]
name = "e2e_sq8"
path = "tests/e2e_sq8.rs"
[[test]]
name = "e2e_subqueries"
path = "tests/e2e_subqueries.rs"
[[test]]
name = "e2e_subscription"
path = "tests/e2e_subscription.rs"
[[test]]
name = "e2e_table_metrics"
path = "tests/e2e_table_metrics.rs"
[[test]]
name = "e2e_timeouts"
path = "tests/e2e_timeouts.rs"
[[test]]
name = "e2e_two_tier_server"
path = "tests/e2e_two_tier_server.rs"
[[test]]
name = "e2e_tx"
path = "tests/e2e_tx.rs"
[[test]]
name = "e2e_update_delete"
path = "tests/e2e_update_delete.rs"
[[test]]
name = "e2e_vector"
path = "tests/e2e_vector.rs"
[[test]]
name = "e2e_wait_events"
path = "tests/e2e_wait_events.rs"
[[test]]
name = "e2e_wait_pos"
path = "tests/e2e_wait_pos.rs"
[[test]]
name = "e2e_wal"
path = "tests/e2e_wal.rs"
[[test]]
name = "e2e_wal_binary"
path = "tests/e2e_wal_binary.rs"
[[test]]
name = "e2e_wal_compression"
path = "tests/e2e_wal_compression.rs"
[[test]]
name = "e2e_wal_level"
path = "tests/e2e_wal_level.rs"
[[test]]
name = "e2e_wal_tee"
path = "tests/e2e_wal_tee.rs"
[[test]]
name = "e2e_window"
path = "tests/e2e_window.rs"
[[test]]
name = "e2e_window_ext"
path = "tests/e2e_window_ext.rs"
[[test]]
name = "e2e_window_frames"
path = "tests/e2e_window_frames.rs"
[[test]]
name = "perf_1b_rows"
path = "tests/perf_1b_rows.rs"
[[test]]
name = "perf_concurrency"
path = "tests/perf_concurrency.rs"
[[test]]
name = "perf_gate_sq8"
path = "tests/perf_gate_sq8.rs"
[[test]]
name = "perf_parallel_freezer"
path = "tests/perf_parallel_freezer.rs"
[[test]]
name = "perf_prefetch"
path = "tests/perf_prefetch.rs"
[[test]]
name = "perf_prepared_vs_simple"
path = "tests/perf_prepared_vs_simple.rs"
[[test]]
name = "prod_ready"
path = "tests/prod_ready.rs"
[[test]]
name = "slo_smoke"
path = "tests/slo_smoke.rs"
[dependencies.libc]
version = "0.2"
[dependencies.spg-audit]
version = "7.9"
[dependencies.spg-crypto]
version = "7.9"
[dependencies.spg-engine]
version = "7.9"
[dependencies.spg-manifest]
version = "7.9"
[dependencies.spg-sql]
version = "7.9"
[dependencies.spg-storage]
version = "7.9"
[dependencies.spg-wire]
version = "7.9"
[dev-dependencies.libc]
version = "0.2"
[dev-dependencies.spg-audit]
version = "7.9"
[lints.clippy]
approx_constant = "allow"
assigning_clones = "allow"
bool_assert_comparison = "allow"
case_sensitive_file_extension_comparisons = "allow"
cast_lossless = "allow"
cast_possible_truncation = "allow"
cast_possible_wrap = "allow"
cast_precision_loss = "allow"
cast_sign_loss = "allow"
collapsible_if = "allow"
collapsible_match = "allow"
comparison_chain = "allow"
doc_lazy_continuation = "allow"
doc_markdown = "allow"
doc_overindented_list_items = "allow"
duration_suboptimal_units = "allow"
duration_subsec = "allow"
elidable_lifetime_names = "allow"
explicit_iter_loop = "allow"
float_cmp = "allow"
float_cmp_const = "allow"
for_kv_map = "allow"
format_push_string = "allow"
from_iter_instead_of_collect = "allow"
if_not_else = "allow"
ignore_without_reason = "allow"
ignored_unit_patterns = "allow"
items_after_statements = "allow"
len_zero = "allow"
let_and_return = "allow"
manual_assert = "allow"
manual_checked_ops = "allow"
manual_clamp = "allow"
manual_contains = "allow"
manual_div_ceil = "allow"
manual_is_multiple_of = "allow"
manual_let_else = "allow"
manual_midpoint = "allow"
many_single_char_names = "allow"
map_unwrap_or = "allow"
match_same_arms = "allow"
missing_const_for_fn = "allow"
missing_errors_doc = "allow"
missing_panics_doc = "allow"
module_name_repetitions = "allow"
must_use_candidate = "allow"
needless_collect = "allow"
needless_continue = "allow"
needless_option_as_deref = "allow"
needless_pass_by_value = "allow"
needless_range_loop = "allow"
needless_raw_string_hashes = "allow"
no_effect_underscore_binding = "allow"
range_plus_one = "allow"
redundant_closure = "allow"
redundant_closure_for_method_calls = "allow"
ref_option = "allow"
return_self_not_must_use = "allow"
semicolon_if_nothing_returned = "allow"
should_panic_without_expect = "allow"
similar_names = "allow"
single_char_pattern = "allow"
single_match_else = "allow"
stable_sort_primitive = "allow"
struct_field_names = "allow"
too_many_lines = "allow"
uninlined_format_args = "allow"
unnecessary_lazy_evaluations = "allow"
unnecessary_map_or = "allow"
unnecessary_to_owned = "allow"
unnecessary_wraps = "allow"
unnested_or_patterns = "allow"
unreadable_literal = "allow"
unused_self = "allow"
useless_format = "allow"
wildcard_imports = "allow"
[lints.clippy.all]
level = "warn"
priority = -1
[lints.clippy.pedantic]
level = "warn"
priority = -1
[lints.rust]
dead_code = "allow"
missing_debug_implementations = "warn"
non_snake_case = "allow"
unsafe_code = "deny"
unused_must_use = "deny"
unused_mut = "allow"
unused_variables = "allow"