[package]
edition = "2024"
name = "fsqlite"
version = "0.3.4"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Public API facade"
readme = "README.md"
license-file = "LICENSE"
repository = "https://github.com/Dicklesworthstone/frankensqlite"
resolver = "2"
[features]
async-api = [
"dep:asupersync",
"dep:futures-lite",
"fsqlite-types/native",
]
default = [
"native",
"linux-asupersync-uring",
"json",
"fts5",
"rtree",
]
fts3 = ["dep:fsqlite-ext-fts3"]
fts5 = ["dep:fsqlite-ext-fts5"]
icu = ["dep:fsqlite-ext-icu"]
json = ["dep:fsqlite-ext-json"]
linux-asupersync-uring = [
"native",
"fsqlite-core/linux-asupersync-uring",
"fsqlite-vfs/linux-asupersync-uring",
]
misc = ["dep:fsqlite-ext-misc"]
mvcc = []
native = [
"dep:asupersync",
"fsqlite-types/native",
"fsqlite-core/native",
"fsqlite-vfs/native",
]
raptorq = []
rtree = ["dep:fsqlite-ext-rtree"]
session = ["dep:fsqlite-ext-session"]
wasm = [
"fsqlite-types/wasm",
"fsqlite-core/wasm",
"fsqlite-vfs/wasm",
]
[lib]
name = "fsqlite"
path = "src/lib.rs"
[[test]]
name = "agg_composite_full_eq_oracle"
path = "tests/agg_composite_full_eq_oracle.rs"
[[test]]
name = "agg_composite_leading_eq_oracle"
path = "tests/agg_composite_leading_eq_oracle.rs"
[[test]]
name = "agg_composite_prefix_range_oracle"
path = "tests/agg_composite_prefix_range_oracle.rs"
[[test]]
name = "agg_in_list_composite_prefix_oracle"
path = "tests/agg_in_list_composite_prefix_oracle.rs"
[[test]]
name = "agg_in_list_residual_oracle"
path = "tests/agg_in_list_residual_oracle.rs"
[[test]]
name = "agg_index_range_oracle"
path = "tests/agg_index_range_oracle.rs"
[[test]]
name = "agg_leading_eq_residual_oracle"
path = "tests/agg_leading_eq_residual_oracle.rs"
[[test]]
name = "agg_range_shadowed_index_oracle"
path = "tests/agg_range_shadowed_index_oracle.rs"
[[test]]
name = "agg_rowid_eq_coerced_oracle"
path = "tests/agg_rowid_eq_coerced_oracle.rs"
[[test]]
name = "agg_rowid_eq_residual_oracle"
path = "tests/agg_rowid_eq_residual_oracle.rs"
[[test]]
name = "agg_rowid_in_oracle"
path = "tests/agg_rowid_in_oracle.rs"
[[test]]
name = "agg_rowid_range_residual_oracle"
path = "tests/agg_rowid_range_residual_oracle.rs"
[[test]]
name = "aoj0g_insert_profile"
path = "tests/aoj0g_insert_profile.rs"
[[test]]
name = "async_api_storage_migration"
path = "tests/async_api_storage_migration.rs"
[[test]]
name = "async_drop_skips_detached_checkpoint"
path = "tests/async_drop_skips_detached_checkpoint.rs"
[[test]]
name = "cass_orphan_fk_repros"
path = "tests/cass_orphan_fk_repros.rs"
[[test]]
name = "compat_tests"
path = "tests/compat_tests.rs"
[[test]]
name = "composite_eq_plan_probe"
path = "tests/composite_eq_plan_probe.rs"
[[test]]
name = "composite_eq_seek_oracle"
path = "tests/composite_eq_seek_oracle.rs"
[[test]]
name = "composite_eq_seek_profile"
path = "tests/composite_eq_seek_profile.rs"
[[test]]
name = "composite_prefix_range_residual_oracle"
path = "tests/composite_prefix_range_residual_oracle.rs"
[[test]]
name = "concurrent_freelist_churn"
path = "tests/concurrent_freelist_churn.rs"
[[test]]
name = "count_distinct_index_walk_oracle"
path = "tests/count_distinct_index_walk_oracle.rs"
[[test]]
name = "count_in_list_shadowed_index_oracle"
path = "tests/count_in_list_shadowed_index_oracle.rs"
[[test]]
name = "count_rowid_eq_coerced_oracle"
path = "tests/count_rowid_eq_coerced_oracle.rs"
[[test]]
name = "count_rowid_eq_oracle"
path = "tests/count_rowid_eq_oracle.rs"
[[test]]
name = "count_rowid_in_oracle"
path = "tests/count_rowid_in_oracle.rs"
[[test]]
name = "count_rowid_residual_oracle"
path = "tests/count_rowid_residual_oracle.rs"
[[test]]
name = "covering_range_before_directive_oracle"
path = "tests/covering_range_before_directive_oracle.rs"
[[test]]
name = "create_sql_verbatim_starts_at_statement"
path = "tests/create_sql_verbatim_starts_at_statement.rs"
[[test]]
name = "dcg_fts_external_content_repro"
path = "tests/dcg_fts_external_content_repro.rs"
[[test]]
name = "delete_rowid_in_oracle"
path = "tests/delete_rowid_in_oracle.rs"
[[test]]
name = "distinct_groupby_profile"
path = "tests/distinct_groupby_profile.rs"
[[test]]
name = "distinct_loose_scan_oracle"
path = "tests/distinct_loose_scan_oracle.rs"
[[test]]
name = "dml_index_eq_oracle"
path = "tests/dml_index_eq_oracle.rs"
[[test]]
name = "dml_index_eq_param_oracle"
path = "tests/dml_index_eq_param_oracle.rs"
[[test]]
name = "dml_rowid_eq_coerced_oracle"
path = "tests/dml_rowid_eq_coerced_oracle.rs"
[[test]]
name = "dml_rowid_eq_residual_oracle"
path = "tests/dml_rowid_eq_residual_oracle.rs"
[[test]]
name = "dml_rowid_range_oracle"
path = "tests/dml_rowid_range_oracle.rs"
[[test]]
name = "eq_seek_exact_oracle"
path = "tests/eq_seek_exact_oracle.rs"
[[test]]
name = "eq_seek_exact_profile"
path = "tests/eq_seek_exact_profile.rs"
[[test]]
name = "eq_seek_nonagg_exact_oracle"
path = "tests/eq_seek_nonagg_exact_oracle.rs"
[[test]]
name = "eq_seek_nonagg_profile"
path = "tests/eq_seek_nonagg_profile.rs"
[[test]]
name = "execute_body_split"
path = "tests/execute_body_split.rs"
[[test]]
name = "fts5_contentless_incremental_persist"
path = "tests/fts5_contentless_incremental_persist.rs"
[[test]]
name = "fts5_contentless_reopen_mutate"
path = "tests/fts5_contentless_reopen_mutate.rs"
[[test]]
name = "fts5_deferred_open_cass368"
path = "tests/fts5_deferred_open_cass368.rs"
[[test]]
name = "fts5_delete_all_reinsert_diagnosis"
path = "tests/fts5_delete_all_reinsert_diagnosis.rs"
[[test]]
name = "fts5_overlong_term"
path = "tests/fts5_overlong_term.rs"
[[test]]
name = "fts5_update_idx_shadow_repro"
path = "tests/fts5_update_idx_shadow_repro.rs"
[[test]]
name = "gap_probe2"
path = "tests/gap_probe2.rs"
[[test]]
name = "in_list_shadowed_index_oracle"
path = "tests/in_list_shadowed_index_oracle.rs"
[[test]]
name = "in_subquery_combined_with_in_predicate"
path = "tests/in_subquery_combined_with_in_predicate.rs"
[[test]]
name = "indexed_by_composite_range_oracle"
path = "tests/indexed_by_composite_range_oracle.rs"
[[test]]
name = "insert_select_column_reorder"
path = "tests/insert_select_column_reorder.rs"
[[test]]
name = "insert_test"
path = "tests/insert_test.rs"
[[test]]
name = "issue_106_rebuild_db_size"
path = "tests/issue_106_rebuild_db_size.rs"
[[test]]
name = "migration_tests"
path = "tests/migration_tests.rs"
[[test]]
name = "minmax_composite_leading_oracle"
path = "tests/minmax_composite_leading_oracle.rs"
[[test]]
name = "minmax_composite_leading_profile"
path = "tests/minmax_composite_leading_profile.rs"
[[test]]
name = "minmax_desc_index_oracle"
path = "tests/minmax_desc_index_oracle.rs"
[[test]]
name = "minmax_desc_index_profile"
path = "tests/minmax_desc_index_profile.rs"
[[test]]
name = "minmax_index_oracle"
path = "tests/minmax_index_oracle.rs"
[[test]]
name = "minmax_index_profile"
path = "tests/minmax_index_profile.rs"
[[test]]
name = "minmax_not_null_oracle"
path = "tests/minmax_not_null_oracle.rs"
[[test]]
name = "minmax_pair_oracle"
path = "tests/minmax_pair_oracle.rs"
[[test]]
name = "minmax_pair_profile"
path = "tests/minmax_pair_profile.rs"
[[test]]
name = "minmax_prefix_desc_oracle"
path = "tests/minmax_prefix_desc_oracle.rs"
[[test]]
name = "minmax_prefix_desc_profile"
path = "tests/minmax_prefix_desc_profile.rs"
[[test]]
name = "minmax_prefix_oracle"
path = "tests/minmax_prefix_oracle.rs"
[[test]]
name = "minmax_prefix_profile"
path = "tests/minmax_prefix_profile.rs"
[[test]]
name = "minmax_range_oracle"
path = "tests/minmax_range_oracle.rs"
[[test]]
name = "minmax_range_profile"
path = "tests/minmax_range_profile.rs"
[[test]]
name = "minmax_rowid_range_oracle"
path = "tests/minmax_rowid_range_oracle.rs"
[[test]]
name = "misc_shapes_profile"
path = "tests/misc_shapes_profile.rs"
[[test]]
name = "nonagg_eq_residual_oracle"
path = "tests/nonagg_eq_residual_oracle.rs"
[[test]]
name = "nonagg_in_residual_oracle"
path = "tests/nonagg_in_residual_oracle.rs"
[[test]]
name = "nonagg_index_eq_order_rowid_oracle"
path = "tests/nonagg_index_eq_order_rowid_oracle.rs"
[[test]]
name = "nonagg_range_shadowed_index_oracle"
path = "tests/nonagg_range_shadowed_index_oracle.rs"
[[test]]
name = "nonagg_rowid_eq_coerced_oracle"
path = "tests/nonagg_rowid_eq_coerced_oracle.rs"
[[test]]
name = "nonagg_rowid_eq_residual_oracle"
path = "tests/nonagg_rowid_eq_residual_oracle.rs"
[[test]]
name = "nonagg_rowid_in_order_oracle"
path = "tests/nonagg_rowid_in_order_oracle.rs"
[[test]]
name = "nonagg_rowid_in_residual_oracle"
path = "tests/nonagg_rowid_in_residual_oracle.rs"
[[test]]
name = "nonagg_rowid_order_scan_oracle"
path = "tests/nonagg_rowid_order_scan_oracle.rs"
[[test]]
name = "nonagg_rowid_range_residual_oracle"
path = "tests/nonagg_rowid_range_residual_oracle.rs"
[[test]]
name = "repro_zna34"
path = "tests/repro_zna34.rs"
[[test]]
name = "rowid_range_before_directive_oracle"
path = "tests/rowid_range_before_directive_oracle.rs"
[[test]]
name = "single_writer_ddl_batch_freelist_republication"
path = "tests/single_writer_ddl_batch_freelist_republication.rs"
[[test]]
name = "skip_scan_oracle"
path = "tests/skip_scan_oracle.rs"
[[test]]
name = "sorter_limit_offset_oracle"
path = "tests/sorter_limit_offset_oracle.rs"
[[test]]
name = "sorter_limit_profile"
path = "tests/sorter_limit_profile.rs"
[[test]]
name = "trigger_depth_worker_probe"
path = "tests/trigger_depth_worker_probe.rs"
[[test]]
name = "update_rewrite_rowid_seek_oracle"
path = "tests/update_rewrite_rowid_seek_oracle.rs"
[[test]]
name = "update_rowid_in_oracle"
path = "tests/update_rowid_in_oracle.rs"
[[test]]
name = "vacuum_into_desc_composite_index_self_check"
path = "tests/vacuum_into_desc_composite_index_self_check.rs"
[[test]]
name = "vacuum_into_desc_index_self_check"
path = "tests/vacuum_into_desc_index_self_check.rs"
[[test]]
name = "wal_invalid_header_open"
path = "tests/wal_invalid_header_open.rs"
[[test]]
name = "where_a_plan_probe"
path = "tests/where_a_plan_probe.rs"
[[test]]
name = "where_eq_orderby_limit_probe"
path = "tests/where_eq_orderby_limit_probe.rs"
[[bench]]
name = "minmax_prefix_contract_bench"
path = "benches/minmax_prefix_contract_bench.rs"
harness = false
[dependencies.asupersync]
version = ">=0.4.3,<0.5"
optional = true
default-features = false
[dependencies.fsqlite-core]
version = "0.3.0"
default-features = false
[dependencies.fsqlite-error]
version = "0.3.4"
[dependencies.fsqlite-ext-fts3]
version = "0.3.4"
optional = true
[dependencies.fsqlite-ext-fts5]
version = "0.3.4"
optional = true
[dependencies.fsqlite-ext-icu]
version = "0.3.4"
optional = true
[dependencies.fsqlite-ext-json]
version = "0.3.4"
optional = true
[dependencies.fsqlite-ext-misc]
version = "0.3.4"
optional = true
[dependencies.fsqlite-ext-rtree]
version = "0.3.4"
optional = true
[dependencies.fsqlite-ext-session]
version = "0.3.4"
optional = true
[dependencies.fsqlite-parser]
version = "0.3.4"
[dependencies.fsqlite-types]
version = "0.3.4"
default-features = false
[dependencies.fsqlite-vfs]
version = "0.3.0"
default-features = false
[dependencies.futures-lite]
version = "2.6.1"
optional = true
[dependencies.tracing]
version = "0.1"
[dev-dependencies.asupersync]
version = ">=0.4.3,<0.5"
features = ["test-internals"]
default-features = false
[dev-dependencies.fsqlite-ast]
version = "0.3.4"
[dev-dependencies.fsqlite-func]
version = "0.3.4"
[dev-dependencies.fsqlite-pager]
version = "0.3.4"
[dev-dependencies.rand]
version = "0.10"
[dev-dependencies.rusqlite]
version = "0.40.1"
features = [
"bundled",
"backup",
"functions",
]
[dev-dependencies.sha2]
version = "0.11"
[dev-dependencies.tempfile]
version = "3.27"
[lints.clippy.approx_constant]
level = "allow"
priority = 1
[lints.clippy.assertions_on_constants]
level = "allow"
priority = 1
[lints.clippy.bool_to_int_with_if]
level = "allow"
priority = 1
[lints.clippy.case_sensitive_file_extension_comparisons]
level = "allow"
priority = 1
[lints.clippy.cast_lossless]
level = "allow"
priority = 1
[lints.clippy.cast_possible_truncation]
level = "allow"
priority = 1
[lints.clippy.cast_possible_wrap]
level = "allow"
priority = 1
[lints.clippy.cast_precision_loss]
level = "allow"
priority = 1
[lints.clippy.cast_sign_loss]
level = "allow"
priority = 1
[lints.clippy.cloned_ref_to_slice_refs]
level = "allow"
priority = 1
[lints.clippy.collection_is_never_read]
level = "allow"
priority = 1
[lints.clippy.default_trait_access]
level = "allow"
priority = 1
[lints.clippy.doc_lazy_continuation]
level = "allow"
priority = 1
[lints.clippy.doc_markdown]
level = "allow"
priority = 1
[lints.clippy.expect_fun_call]
level = "allow"
priority = 1
[lints.clippy.explicit_iter_loop]
level = "allow"
priority = 1
[lints.clippy.float_cmp]
level = "allow"
priority = 1
[lints.clippy.format_collect]
level = "allow"
priority = 1
[lints.clippy.format_push_string]
level = "allow"
priority = 1
[lints.clippy.future_not_send]
level = "allow"
priority = 1
[lints.clippy.if_not_else]
level = "allow"
priority = 1
[lints.clippy.if_then_some_else_none]
level = "allow"
priority = 1
[lints.clippy.items_after_statements]
level = "allow"
priority = 1
[lints.clippy.large_futures]
level = "allow"
priority = 1
[lints.clippy.let_and_return]
level = "allow"
priority = 1
[lints.clippy.manual_assert]
level = "allow"
priority = 1
[lints.clippy.manual_checked_ops]
level = "allow"
priority = 1
[lints.clippy.manual_let_else]
level = "allow"
priority = 1
[lints.clippy.manual_range_contains]
level = "allow"
priority = 1
[lints.clippy.manual_string_new]
level = "allow"
priority = 1
[lints.clippy.many_single_char_names]
level = "allow"
priority = 1
[lints.clippy.map_unwrap_or]
level = "allow"
priority = 1
[lints.clippy.match_wildcard_for_single_variants]
level = "allow"
priority = 1
[lints.clippy.missing_const_for_fn]
level = "allow"
priority = 1
[lints.clippy.missing_errors_doc]
level = "allow"
priority = 1
[lints.clippy.missing_panics_doc]
level = "allow"
priority = 1
[lints.clippy.module_name_repetitions]
level = "allow"
priority = 1
[lints.clippy.must_use_candidate]
level = "allow"
priority = 1
[lints.clippy.needless_collect]
level = "allow"
priority = 1
[lints.clippy.needless_pass_by_value]
level = "allow"
priority = 1
[lints.clippy.no_effect_underscore_binding]
level = "allow"
priority = 1
[lints.clippy.nursery]
level = "deny"
priority = -1
[lints.clippy.option_if_let_else]
level = "allow"
priority = 1
[lints.clippy.pedantic]
level = "deny"
priority = -1
[lints.clippy.redundant_clone]
level = "allow"
priority = 1
[lints.clippy.redundant_closure_for_method_calls]
level = "allow"
priority = 1
[lints.clippy.return_self_not_must_use]
level = "allow"
priority = 1
[lints.clippy.semicolon_if_nothing_returned]
level = "allow"
priority = 1
[lints.clippy.significant_drop_tightening]
level = "allow"
priority = 1
[lints.clippy.similar_names]
level = "allow"
priority = 1
[lints.clippy.single_char_pattern]
level = "allow"
priority = 1
[lints.clippy.single_match]
level = "allow"
priority = 1
[lints.clippy.single_match_else]
level = "allow"
priority = 1
[lints.clippy.stable_sort_primitive]
level = "allow"
priority = 1
[lints.clippy.too_many_lines]
level = "allow"
priority = 1
[lints.clippy.uninlined_format_args]
level = "allow"
priority = 1
[lints.clippy.unnecessary_cast]
level = "allow"
priority = 1
[lints.clippy.unnecessary_literal_bound]
level = "allow"
priority = 1
[lints.clippy.unreadable_literal]
level = "allow"
priority = 1
[lints.clippy.used_underscore_binding]
level = "allow"
priority = 1
[lints.clippy.useless_format]
level = "allow"
priority = 1
[lints.clippy.useless_vec]
level = "allow"
priority = 1
[lints.clippy.wildcard_enum_match_arm]
level = "allow"
priority = 1
[lints.rust]
unsafe_code = "forbid"