[package]
edition = "2024"
name = "fsqlite-core"
version = "0.3.3"
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Core engine: connection, prepare, schema, DDL/DML codegen"
readme = "README.md"
license-file = "LICENSE"
repository = "https://github.com/Dicklesworthstone/frankensqlite"
resolver = "2"
[features]
bench-internals = []
default = [
"native",
"linux-asupersync-uring",
]
diagnostic-pragmas = ["dep:serde_json"]
ext-fts5 = [
"dep:fsqlite-ext-fts5",
"fsqlite-func/ext-fts5",
]
ext-icu = [
"dep:fsqlite-ext-icu",
"fsqlite-func/ext-icu",
]
ext-json = [
"dep:fsqlite-ext-json",
"fsqlite-func/ext-json",
]
ext-misc = ["dep:fsqlite-ext-misc"]
ext-rtree = [
"dep:fsqlite-ext-rtree",
"fsqlite-func/ext-geopoly",
"fsqlite-func/ext-rtree",
]
extensions = [
"ext-json",
"ext-fts5",
"ext-icu",
"ext-misc",
"ext-rtree",
]
linux-asupersync-uring = [
"native",
"fsqlite-vfs/linux-asupersync-uring",
]
native = [
"fsqlite-types/native",
"fsqlite-vfs/native",
"fsqlite-pager/native",
"fsqlite-wal/native",
"fsqlite-mvcc/native",
"fsqlite-btree/native",
"fsqlite-planner/native",
"fsqlite-vdbe/native",
"diagnostic-pragmas",
"extensions",
]
wasm = [
"fsqlite-types/wasm",
"fsqlite-vfs/wasm",
"fsqlite-pager/wasm",
"fsqlite-wal/wasm",
"fsqlite-mvcc/wasm",
"fsqlite-btree/wasm",
"fsqlite-planner/wasm",
"fsqlite-vdbe/wasm",
"wasm-tracing-max-level-error",
]
wasm-tracing-max-level-error = ["tracing/release_max_level_error"]
wasm-tracing-max-level-warn = ["tracing/release_max_level_warn"]
[lib]
name = "fsqlite_core"
path = "src/lib.rs"
[[test]]
name = "agent_swarm_coordination_test_matrix_contract"
path = "tests/agent_swarm_coordination_test_matrix_contract.rs"
[[test]]
name = "agent_swarm_explain_concurrency_contract"
path = "tests/agent_swarm_explain_concurrency_contract.rs"
[[test]]
name = "agent_swarm_fallback_transparency_contract"
path = "tests/agent_swarm_fallback_transparency_contract.rs"
[[test]]
name = "agent_swarm_lease_contract"
path = "tests/agent_swarm_lease_contract.rs"
[[test]]
name = "agent_swarm_queue_claim_contract"
path = "tests/agent_swarm_queue_claim_contract.rs"
[[test]]
name = "agent_swarm_worker_range_contract"
path = "tests/agent_swarm_worker_range_contract.rs"
[[test]]
name = "alter_rename_sqlite_sequence_oracle"
path = "tests/alter_rename_sqlite_sequence_oracle.rs"
[[test]]
name = "autoincrement_or_ignore_gh186_probe"
path = "tests/autoincrement_or_ignore_gh186_probe.rs"
[[test]]
name = "b4_query_row_indexed_equality"
path = "tests/b4_query_row_indexed_equality.rs"
[[test]]
name = "batched_commit_scaling_repro"
path = "tests/batched_commit_scaling_repro.rs"
[[test]]
name = "bd_2lt76_1_bridge"
path = "tests/bd_2lt76_1_bridge.rs"
[[test]]
name = "bd_420r8_trigger_when_subquery_reparse"
path = "tests/bd_420r8_trigger_when_subquery_reparse.rs"
[[test]]
name = "bd_76k72_affinity_probe"
path = "tests/bd_76k72_affinity_probe.rs"
[[test]]
name = "bd_76k72_fts5_join_rhs"
path = "tests/bd_76k72_fts5_join_rhs.rs"
[[test]]
name = "bd_84rh4_freelist_hole_repair"
path = "tests/bd_84rh4_freelist_hole_repair.rs"
[[test]]
name = "bd_m0e3b_without_rowid_column_order"
path = "tests/bd_m0e3b_without_rowid_column_order.rs"
[[test]]
name = "bd_n7ypv_vacuum_into_read_only"
path = "tests/bd_n7ypv_vacuum_into_read_only.rs"
[[test]]
name = "bd_ota5x_bounded_without_rowid"
path = "tests/bd_ota5x_bounded_without_rowid.rs"
[[test]]
name = "bd_qteu2_memdb_reload_row_rehydration_scaling"
path = "tests/bd_qteu2_memdb_reload_row_rehydration_scaling.rs"
[[test]]
name = "bd_rwaxp_builtin_needcoll_uncovered_arity"
path = "tests/bd_rwaxp_builtin_needcoll_uncovered_arity.rs"
[[test]]
name = "beads_rebuild_fresh_lookup"
path = "tests/beads_rebuild_fresh_lookup.rs"
[[test]]
name = "between_collate_propagation_gh256_oracle"
path = "tests/between_collate_propagation_gh256_oracle.rs"
[[test]]
name = "bld9w6_string_functions_decoded_codepoints"
path = "tests/bld9w6_string_functions_decoded_codepoints.rs"
[[test]]
name = "boundary_duplication_census"
path = "tests/boundary_duplication_census.rs"
[[test]]
name = "bulk_import_upsert_text_pk_phantom_pk"
path = "tests/bulk_import_upsert_text_pk_phantom_pk.rs"
[[test]]
name = "bulk_insert_values_memdb_reload_scaling"
path = "tests/bulk_insert_values_memdb_reload_scaling.rs"
[[test]]
name = "busy_snapshot_self_conflict_gh338"
path = "tests/busy_snapshot_self_conflict_gh338.rs"
[[test]]
name = "cache_staleness_cross_txn_regression"
path = "tests/cache_staleness_cross_txn_regression.rs"
[[test]]
name = "check_affinity_ordering_oracle"
path = "tests/check_affinity_ordering_oracle.rs"
[[test]]
name = "codegen_gap_probe"
path = "tests/codegen_gap_probe.rs"
[[test]]
name = "compound_order_by_collate_oracle"
path = "tests/compound_order_by_collate_oracle.rs"
[[test]]
name = "conformance_oracle_alter_table"
path = "tests/conformance_oracle_alter_table.rs"
[[test]]
name = "conformance_oracle_ext"
path = "tests/conformance_oracle_ext.rs"
[[test]]
name = "conformance_oracle_json_paths"
path = "tests/conformance_oracle_json_paths.rs"
[[test]]
name = "conformance_oracle_minmax_rowid_seek"
path = "tests/conformance_oracle_minmax_rowid_seek.rs"
[[test]]
name = "conformance_oracle_s55"
path = "tests/conformance_oracle_s55.rs"
[[test]]
name = "conformance_oracle_s74b"
path = "tests/conformance_oracle_s74b.rs"
[[test]]
name = "conformance_oracle_s77"
path = "tests/conformance_oracle_s77.rs"
[[test]]
name = "conformance_oracle_s78"
path = "tests/conformance_oracle_s78.rs"
[[test]]
name = "conformance_oracle_s79"
path = "tests/conformance_oracle_s79.rs"
[[test]]
name = "conformance_oracle_s80"
path = "tests/conformance_oracle_s80.rs"
[[test]]
name = "conformance_oracle_s81"
path = "tests/conformance_oracle_s81.rs"
[[test]]
name = "conformance_oracle_s82"
path = "tests/conformance_oracle_s82.rs"
[[test]]
name = "conformance_oracle_s83"
path = "tests/conformance_oracle_s83.rs"
[[test]]
name = "conformance_oracle_type_affinity"
path = "tests/conformance_oracle_type_affinity.rs"
[[test]]
name = "core_sql_rusqlite_conformance"
path = "tests/core_sql_rusqlite_conformance.rs"
[[test]]
name = "ctas_decltype_affinity_oracle"
path = "tests/ctas_decltype_affinity_oracle.rs"
[[test]]
name = "datetime_now_statement_stable_gh175"
path = "tests/datetime_now_statement_stable_gh175.rs"
[[test]]
name = "defer_foreign_keys_pragma_gh161_oracle"
path = "tests/defer_foreign_keys_pragma_gh161_oracle.rs"
[[test]]
name = "deferred_fk_parent_dml_gh149"
path = "tests/deferred_fk_parent_dml_gh149.rs"
[[test]]
name = "differential_proptest"
path = "tests/differential_proptest.rs"
[[test]]
name = "divergence_hunt_probe"
path = "tests/divergence_hunt_probe.rs"
[[test]]
name = "drop_without_close_semantics"
path = "tests/drop_without_close_semantics.rs"
[[test]]
name = "fast_path_separation"
path = "tests/fast_path_separation.rs"
[[test]]
name = "fk_explicit_rowid_insert_scaling"
path = "tests/fk_explicit_rowid_insert_scaling.rs"
[[test]]
name = "fk_insert_conflict_oracle"
path = "tests/fk_insert_conflict_oracle.rs"
[[test]]
name = "fromless_where_subquery_params_contract"
path = "tests/fromless_where_subquery_params_contract.rs"
[[test]]
name = "fts5_column_match_gh249"
path = "tests/fts5_column_match_gh249.rs"
[[test]]
name = "generated_column_primary_key_oracle"
path = "tests/generated_column_primary_key_oracle.rs"
[[test]]
name = "glob_bracket_class_oracle"
path = "tests/glob_bracket_class_oracle.rs"
[[test]]
name = "having_bare_column_gh225_probe"
path = "tests/having_bare_column_gh225_probe.rs"
[[test]]
name = "having_filter_groupby_resolution_oracle"
path = "tests/having_filter_groupby_resolution_oracle.rs"
[[test]]
name = "having_name_resolution_oracle"
path = "tests/having_name_resolution_oracle.rs"
[[test]]
name = "having_unknown_function_gh270"
path = "tests/having_unknown_function_gh270.rs"
[[test]]
name = "iif_two_arg_arity"
path = "tests/iif_two_arg_arity.rs"
[[test]]
name = "implicit_agg_bare_column_gh226_oracle"
path = "tests/implicit_agg_bare_column_gh226_oracle.rs"
[[test]]
name = "in_exists_regression"
path = "tests/in_exists_regression.rs"
[[test]]
name = "in_subquery_text_affinity_oracle"
path = "tests/in_subquery_text_affinity_oracle.rs"
[[test]]
name = "insert_or_ignore_returning_rowid_gh158"
path = "tests/insert_or_ignore_returning_rowid_gh158.rs"
[[test]]
name = "insert_select_returning_conformance"
path = "tests/insert_select_returning_conformance.rs"
[[test]]
name = "integrity_check_empty_non_root_leaf"
path = "tests/integrity_check_empty_non_root_leaf.rs"
[[test]]
name = "integrity_check_index_entry_payload_match_oracle"
path = "tests/integrity_check_index_entry_payload_match_oracle.rs"
[[test]]
name = "issue_122_check_isnull_precedence"
path = "tests/issue_122_check_isnull_precedence.rs"
[[test]]
name = "join_unary_plus_predicate_oracle"
path = "tests/join_unary_plus_predicate_oracle.rs"
[[test]]
name = "octet_length_ingress_probe"
path = "tests/octet_length_ingress_probe.rs"
[[test]]
name = "planner_join_order_wire"
path = "tests/planner_join_order_wire.rs"
[[test]]
name = "planner_sqlite_stat1"
path = "tests/planner_sqlite_stat1.rs"
[[test]]
name = "pragma_data_version_oracle"
path = "tests/pragma_data_version_oracle.rs"
[[test]]
name = "pragma_database_list_tvf"
path = "tests/pragma_database_list_tvf.rs"
[[test]]
name = "pragma_foreign_key_check_tvf_gh261"
path = "tests/pragma_foreign_key_check_tvf_gh261.rs"
[[test]]
name = "pragma_writable_schema_reset_gh284"
path = "tests/pragma_writable_schema_reset_gh284.rs"
[[test]]
name = "prepared_hit_rate_proof"
path = "tests/prepared_hit_rate_proof.rs"
[[test]]
name = "prepared_pragma_dispatch"
path = "tests/prepared_pragma_dispatch.rs"
[[test]]
name = "printf_negative_zero_oracle"
path = "tests/printf_negative_zero_oracle.rs"
[[test]]
name = "readonly_close_no_checkpoint_mutation"
path = "tests/readonly_close_no_checkpoint_mutation.rs"
[[test]]
name = "recursive_cte_limit_gh152_oracle"
path = "tests/recursive_cte_limit_gh152_oracle.rs"
[[test]]
name = "recursive_cte_perf_repro"
path = "tests/recursive_cte_perf_repro.rs"
[[test]]
name = "row_value_between_oracle"
path = "tests/row_value_between_oracle.rs"
[[test]]
name = "row_value_is_distinct_oracle"
path = "tests/row_value_is_distinct_oracle.rs"
[[test]]
name = "rtree_update_live_refresh_gh208"
path = "tests/rtree_update_live_refresh_gh208.rs"
[[test]]
name = "scalar_result_diff_probe"
path = "tests/scalar_result_diff_probe.rs"
[[test]]
name = "scalar_subquery_order_by_limit_gh172_oracle"
path = "tests/scalar_subquery_order_by_limit_gh172_oracle.rs"
[[test]]
name = "self_connection_read_your_own_write"
path = "tests/self_connection_read_your_own_write.rs"
[[test]]
name = "self_connection_read_your_own_write_peer_races"
path = "tests/self_connection_read_your_own_write_peer_races.rs"
[[test]]
name = "sequential_autocommit_increment_probe"
path = "tests/sequential_autocommit_increment_probe.rs"
[[test]]
name = "ssi_e_process_gate"
path = "tests/ssi_e_process_gate.rs"
[[test]]
name = "ssi_e_process_wired"
path = "tests/ssi_e_process_wired.rs"
[[test]]
name = "statement_cache_invalidation"
path = "tests/statement_cache_invalidation.rs"
[[test]]
name = "strict_affinity_coercion_gh272_oracle"
path = "tests/strict_affinity_coercion_gh272_oracle.rs"
[[test]]
name = "strict_multi_process"
path = "tests/strict_multi_process.rs"
[[test]]
name = "strict_text_numeric_coercion_gh163_oracle"
path = "tests/strict_text_numeric_coercion_gh163_oracle.rs"
[[test]]
name = "strict_typecheck_coercion_gh162_164_oracle"
path = "tests/strict_typecheck_coercion_gh162_164_oracle.rs"
[[test]]
name = "track_w_gate"
path = "tests/track_w_gate.rs"
[[test]]
name = "trigger_rowid_alias_gh205_probe"
path = "tests/trigger_rowid_alias_gh205_probe.rs"
[[test]]
name = "trigger_rowid_alias_gh216"
path = "tests/trigger_rowid_alias_gh216.rs"
[[test]]
name = "union_view_root_page_collision"
path = "tests/union_view_root_page_collision.rs"
[[test]]
name = "update_generated_column_oracle"
path = "tests/update_generated_column_oracle.rs"
[[test]]
name = "update_multicolumn_set_conformance"
path = "tests/update_multicolumn_set_conformance.rs"
[[test]]
name = "update_or_ignore_returning_gh159_oracle"
path = "tests/update_or_ignore_returning_gh159_oracle.rs"
[[test]]
name = "upsert_rowid_alias_set_gh151_oracle"
path = "tests/upsert_rowid_alias_set_gh151_oracle.rs"
[[test]]
name = "utf16_database_oracle_bld9w"
path = "tests/utf16_database_oracle_bld9w.rs"
[[test]]
name = "v1_e2e_regression_tests"
path = "tests/v1_e2e_regression_tests.rs"
[[test]]
name = "v2_superinstruction_tests"
path = "tests/v2_superinstruction_tests.rs"
[[test]]
name = "virtual_generated_column_join_gh227_oracle"
path = "tests/virtual_generated_column_join_gh227_oracle.rs"
[[test]]
name = "window_order_nulls_gh248_oracle"
path = "tests/window_order_nulls_gh248_oracle.rs"
[[test]]
name = "writable_schema_dml_denial_gh284"
path = "tests/writable_schema_dml_denial_gh284.rs"
[[bench]]
name = "prepared_cache_hot_paths"
path = "benches/prepared_cache_hot_paths.rs"
harness = false
[[bench]]
name = "rowid_eq_aggregate_bench"
path = "benches/rowid_eq_aggregate_bench.rs"
harness = false
[[bench]]
name = "symbol_ops"
path = "benches/symbol_ops.rs"
harness = false
[dependencies.blake3]
version = "1.8"
[dependencies.foldhash]
version = "0.2.0"
[dependencies.fsqlite-ast]
version = "0.3.3"
[dependencies.fsqlite-btree]
version = "0.3.0"
default-features = false
[dependencies.fsqlite-error]
version = "0.3.3"
[dependencies.fsqlite-ext-fts5]
version = "0.3.3"
optional = true
[dependencies.fsqlite-ext-icu]
version = "0.3.3"
optional = true
[dependencies.fsqlite-ext-json]
version = "0.3.3"
optional = true
[dependencies.fsqlite-ext-misc]
version = "0.3.3"
optional = true
[dependencies.fsqlite-ext-rtree]
version = "0.3.3"
optional = true
[dependencies.fsqlite-func]
version = "0.3.3"
[dependencies.fsqlite-mvcc]
version = "0.3.0"
default-features = false
[dependencies.fsqlite-observability]
version = "0.3.3"
[dependencies.fsqlite-pager]
version = "0.3.0"
default-features = false
[dependencies.fsqlite-parser]
version = "0.3.3"
[dependencies.fsqlite-planner]
version = "0.3.0"
default-features = false
[dependencies.fsqlite-types]
version = "0.3.0"
default-features = false
[dependencies.fsqlite-vdbe]
version = "0.3.0"
default-features = false
[dependencies.fsqlite-vfs]
version = "0.3.0"
default-features = false
[dependencies.fsqlite-wal]
version = "0.3.0"
default-features = false
[dependencies.hashbrown]
version = "0.17"
features = ["serde"]
[dependencies.itoa]
version = "1.0"
[dependencies.lazy_static]
version = "1.5"
[dependencies.lru]
version = "0.18"
[dependencies.serde]
version = "1.0"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1.0"
features = ["preserve_order"]
optional = true
[dependencies.smallvec]
version = "1.15"
[dependencies.tracing]
version = "0.1"
[dependencies.xxhash-rust]
version = "0.8"
features = ["xxh3"]
[dev-dependencies.asupersync]
version = ">=0.4.3,<0.5"
features = ["test-internals"]
default-features = false
[dev-dependencies.criterion]
version = "0.8"
features = ["html_reports"]
[dev-dependencies.proptest]
version = "1.11"
[dev-dependencies.rusqlite]
version = "0.40.1"
features = [
"bundled",
"backup",
]
[dev-dependencies.serde_json]
version = "1.0"
features = ["preserve_order"]
[dev-dependencies.sha2]
version = "0.11"
[dev-dependencies.tempfile]
version = "3.27"
[dev-dependencies.tracing]
version = "0.1"
[dev-dependencies.tracing-subscriber]
version = "0.3.23"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.asupersync]
version = ">=0.4.3,<0.5"
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tempfile]
version = "3.27"
[target.'cfg(target_arch = "wasm32")'.dependencies.asupersync]
version = ">=0.4.3,<0.5"
default-features = false
[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"