sqlitegraph 0.5.0__tar.gz → 0.5.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/Cargo.lock +3 -3
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/PKG-INFO +1 -1
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/pyproject.toml +1 -1
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/Cargo.toml +1 -1
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/core.rs +65 -35
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/index.rs +4 -2
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/index_api.rs +3 -3
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/index_internal.rs +6 -13
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/index_persist.rs +8 -11
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/neighborhood.rs +27 -15
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/storage.rs +1 -1
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/schema.rs +7 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/Cargo.toml +2 -2
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/Cargo.toml +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/README.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/python/sqlitegraph/__init__.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/python/sqlitegraph/_native.pyi +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/python/sqlitegraph/py.typed +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/.gitignore +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BLOCK_AWARE_CACHE_BEHAVIOR_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BLOCK_LOCALITY_PROTOTYPE_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BUG_10K_INVESTIGATION_SUMMARY.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BUG_SNAPSHOTID_SQLITE_BACKEND.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/CACHE_CAPACITY_SWEEP_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/CACHE_CLONE_FIX_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/CHANGELOG.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/COLD_PATH_FORENSICS_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/COLD_WARM_BENCHMARK_SPLIT_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/EDGE_CORRUPTION_ROOT_CAUSE.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/LICENSE +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/MAIN_BENCHMARK_RERUN_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/NODE_PAGE_OVERFLOW_FIX_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/PAGE_ID_COLLISION_ROOT_CAUSE.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/PHASE3_NODE_PAGE_CACHE_FIX_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/PHYSICAL_BLOCK_PLACEMENT_PROTOTYPE_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/README.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/REBUILD_INDEXES_FIX_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/REOPEN_CORRUPTION_FORENSICS.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/V3_10K_NODE_BUG_FIX.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/V3_FILE_IO_COORDINATION.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/V3_FORENSIC_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/V3_REGRESSION_SWEEP_REPORT.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/adaptive_page_simple.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/adjlist_benchmark.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/algo_benchmarks.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/backend_comparison.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/bench_utils.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/bfs.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/cold_cache.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/comparative_benchmark.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/comprehensive_performance.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/compression_benchmark.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/concurrent_access.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/connection_pool.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/graph_generators.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/graph_theory_benchmarks.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/hnsw.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/hnsw_multilayer.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/insert.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/k_hop.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/memory_profiling.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/mvcc_benchmarks.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/native_disk_io.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/parallel_bfs.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/read_path_benchmarks.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/real_datasets.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_memory.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_non_chain_patterns.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_memory.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_non_chain.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_write_cost.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_write_cost.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/sqlite_v3_comparison.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/v3_algorithm_benchmarks.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/v3_backend_benchmarks.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/wal_recovery_benchmarks.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/clippy.toml +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/core.d +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/debug_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/HNSW_DEVELOPMENT_RULES.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/HNSW_VECTOR_INTEGRATION_FUTURE_ROADMAP.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/SEQUENTIAL_IO_PERFORMANCE.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/WAL_MODE_IMPLEMENTATION_GUIDE.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase-40-benchmark-report.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase10_performance_tuning.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase11_native_perf_plan.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase12_optimization_plan.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase14_step9_khop_corruption_codebase_mapping.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase29_step7_mmap_preaudit_notes.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase5_real_adjacency.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase6_implementation_status.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase6_native_graphbackend_plan.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase7_native_backend_refactor.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/superpowers/plans/2026-04-23-task-1-analysis.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/algo_benchmark.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/basic_functionality_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/batch_bench.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/batch_stress_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/bench_parallel_bfs.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/block_locality_benchmark.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/cache_capacity_benchmark.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/cache_clone_forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/cache_perf_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/cold_path_decomposition.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/compression_analysis.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/compression_detailed.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/compression_diagnostics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/crash_test_child.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/debug_buffer_error.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/get_node_cache_sweep.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/hybrid_sqlite_v3_hnsw_pubsub.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/phase53_1_execution.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/phase55_simple_benchmark.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/reopen_corruption_repro.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_100k.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_adaptive_pages.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_allocator_startup.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_batch_simple.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_binary_search.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_btree_100k.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_cache_warm.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_chunked_bfs.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_delta_encoding.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_direct_backend_benchmark.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_direct_edgestore.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_edge_store_direct.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_edgestore_perf.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_index_restore.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_index_staleness.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_lazy_decode.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_lock_overhead.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_native_edge.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_neighbors_cache.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_neighbors_detailed.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_neighbors_profile.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_open_detailed_timing.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_open_roundtrip.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_open_stage_timing.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_performance_comparison.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_rwlock_overhead.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_sqlite_neighbors_perf.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_v3_neighbors_perf.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_vec_clone.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_forensic_page_analysis.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_forensics_example.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_get_node_profile.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_offset_forensic.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_perf_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_readonly_profile.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_reopen_verify.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/libtest_syntax.rlib +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/manual.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/snapshot_export/snapshot_1766284406.v2 +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/snapshot_export/snapshot_1766284420.v2 +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/sqlitegraph_bench.json +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/backend/centrality.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/backend/graph_ops.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/backend/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/backend/traversal.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/call_graph_analysis.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/centrality.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/community.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/control_dependence.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/critical_path.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/cut_partition.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/cycle_basis.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/dominance_frontiers.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/dominators.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/graph_diff.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/graph_rewriting.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/graph_similarity.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/natural_loops.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/observability.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/path_enumeration.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/post_dominators.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/program_slicing.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/reachability.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/scc.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/structure.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/subgraph_isomorphism.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/taint_analysis.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/topological_sort.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/transitive_closure.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/transitive_reduction.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/wcc.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/api_ergonomics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/constants.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/cpu_tuning.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/aliases.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/cpu_profile.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/errors.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/flags.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/kv_types.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/utils.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/algorithm/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/algorithm/parallel_bfs.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/allocator.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/backend.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/btree.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compact_edge_record.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compression/delta.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compression/edge_delta.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compression/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compression/varint.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/constants.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/edge_compat.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/file_coordinator.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/header.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/index/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/index/page.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/index_persistence.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/kind_index.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/kv_store/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/kv_store/store.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/kv_store/types.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/lazy_init_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/name_index.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/block_cache.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/cache.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/page.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/record.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/store.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/pubsub/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/pubsub/publisher.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/pubsub/types.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/storage/adaptive_page.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/storage/media_detector.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/storage/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/string_table/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/string_table/table.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/string_table/tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/tests/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/wal.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/write_batch.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/helpers.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/impl_.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/kv_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/pubsub_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/types.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend_selector.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bench_gates.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bench_meta.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bench_regression.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bench_utils.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bfs.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/cache.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/client.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/factory.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/graph_config.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/kinds.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/native.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/sqlite.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/cypher.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/dependency_monitor.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/dsl.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/errors.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/fault_injection.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/adjacency.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/edge_ops.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/entity_ops.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/instrumented.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/metrics_core.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/metrics_snapshot.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/statement_tracker.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/utils.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics_schema.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/pattern_matching.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/pool.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/snapshot.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/types.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph_opt.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/batch_filter.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/builder.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/config.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/distance_functions.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/distance_metric.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/errors.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/layer.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/multilayer.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/serialization.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/simd.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/v3_storage.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/v3_storage_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/index.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/inference/engine.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/inference/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/inference/sampling.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/inference/simd.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/introspection.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/lib.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/multi_hop.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/mvcc.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/matcher.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/pattern.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/property.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/query.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/edge_validation.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/fast_path_detection.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/fast_path_execution.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/progress.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/query.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/query_cache.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/reasoning.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/recovery.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/snapshot.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/typed_digraph/algo.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/typed_digraph/graph.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/typed_digraph/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/typed_digraph/tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/acid_regression_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/acid_snapshot_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/algo_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/backend_selector_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_data_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_gate_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_gates_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_meta_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_report_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/benchmark_isolation_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bfs_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bincode_compatibility_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bulk_insert_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cache_effectiveness_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cache_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/check_write_path.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cluster_offset_corruption_regression.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cold_path_forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cypher_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/debug_file_size.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/debug_index_rebuilding.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/debug_overflow.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/debug_scenario_c.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/deterministic_index_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/direct_file_read_corruption_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/doc_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/edge_corruption_minimal.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/edge_corruption_repro.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/edge_insertion_corruption_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/edge_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/entity_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/file_extension_debug.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/fuzz_common.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/get_node_forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/graph_node_existence_enforcement.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/graph_opt_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/helpers/mod.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/hnsw_persistence_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/index_persistence_integration.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/index_persistence_validation.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/index_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/instrumentation_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/integration_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/isolate_open_bug.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/kv_durability_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/lib_api_smoke_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/multi_hop_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/multi_node_corruption_regression.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_baseline_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_concurrent_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_edge_case_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_snapshot_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_wal_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/native_edge_insertion_regression.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/node_overflow_forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/node_read_forensics_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/node_slot_transaction_persistence.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/oom_reproduction_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/page_42_debug.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/page_write_debug.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/pattern_cache_fastpath_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/pattern_engine_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/pattern_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/perf_gate_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/perf_gate_v32_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase32_cluster_pipeline_reconstruction_tests_clean.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase44_2_cluster_size_contract_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase64_node_count_durability_regression.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase65_cluster_size_corruption_regression.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase73_node_count_corruption_capture.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/query_cache_performance_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/query_cache_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/query_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/recovery_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/regression_concurrent_traversal.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/reopen_corruption_investigation.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/reopen_integration_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/rowid_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/schema_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/snapshot_isolation_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/sqlite_reopen_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/sqlite_snapshot_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/test_10k_bug_reproduction.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/unsafe_invariants_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_algorithm_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_block_locality_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_btree_forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_check_nodepages.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_dump_page_headers.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_edge_durability_tdd.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_file_write_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_focused_perf.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_forensics_test.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_header_forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_insert_read_forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_integrity_check.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_kind_index_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_name_index_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_page_ownership_forensics.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_persistence_100.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_query_truth_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_regression_sweep.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_reopen_durability.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_sync_fix_validation.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_verify_file_persistence.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/wal_mode_default_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/wal_tuning_tests.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/write_buffer_coherence_regression.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/.gitignore +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/CHANGELOG.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/README.md +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/01_basic_crud.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/02_graph_algorithms.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/03_vector_search.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/04_social_network.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/05_file_backed.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/06_hybrid_sqlite_hnsw_query.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/src/lib.rs +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_algo.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_basic.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_bulk_insert.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_crud.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_errors.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_filtered_traversal.py +0 -0
- {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_hnsw.py +0 -0
|
@@ -1387,7 +1387,7 @@ checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03"
|
|
|
1387
1387
|
|
|
1388
1388
|
[[package]]
|
|
1389
1389
|
name = "sqlitegraph"
|
|
1390
|
-
version = "3.1.
|
|
1390
|
+
version = "3.1.1"
|
|
1391
1391
|
dependencies = [
|
|
1392
1392
|
"ahash",
|
|
1393
1393
|
"arc-swap",
|
|
@@ -1419,7 +1419,7 @@ dependencies = [
|
|
|
1419
1419
|
|
|
1420
1420
|
[[package]]
|
|
1421
1421
|
name = "sqlitegraph-cli"
|
|
1422
|
-
version = "3.1.
|
|
1422
|
+
version = "3.1.1"
|
|
1423
1423
|
dependencies = [
|
|
1424
1424
|
"anyhow",
|
|
1425
1425
|
"clap",
|
|
@@ -1429,7 +1429,7 @@ dependencies = [
|
|
|
1429
1429
|
|
|
1430
1430
|
[[package]]
|
|
1431
1431
|
name = "sqlitegraph-py"
|
|
1432
|
-
version = "0.5.
|
|
1432
|
+
version = "0.5.1"
|
|
1433
1433
|
dependencies = [
|
|
1434
1434
|
"ndarray 0.16.1",
|
|
1435
1435
|
"numpy",
|
|
@@ -4,7 +4,7 @@ build-backend = "maturin"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sqlitegraph"
|
|
7
|
-
version = "0.5.
|
|
7
|
+
version = "0.5.1"
|
|
8
8
|
description = "Embedded graph database with HNSW vector search — Python bindings to the sqlitegraph Rust crate."
|
|
9
9
|
license = { text = "GPL-3.0-only" }
|
|
10
10
|
authors = [{ name = "Luiz Spies" }]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "sqlitegraph"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.1"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
rust-version = "1.89"
|
|
6
6
|
description = "Embedded graph database with full ACID transactions, HNSW vector search, dual backend support, and comprehensive graph algorithms library"
|
|
@@ -248,61 +248,91 @@ impl SqliteGraph {
|
|
|
248
248
|
) -> Result<HashMap<String, HnswIndex>, SqliteGraphError> {
|
|
249
249
|
let mut indexes = HashMap::new();
|
|
250
250
|
|
|
251
|
-
// Get list of existing indexes
|
|
252
251
|
let index_names = HnswIndex::list_indexes(conn).map_err(|e| {
|
|
253
252
|
SqliteGraphError::invalid_input(format!("Failed to load HNSW indexes: {}", e))
|
|
254
253
|
})?;
|
|
255
254
|
|
|
256
|
-
// Determine the underlying file path so we can attach a persistent
|
|
257
|
-
// storage backend. Empty path == in-memory database; leave the
|
|
258
|
-
// default in-memory storage in place in that case.
|
|
259
255
|
let db_path: String = conn
|
|
260
256
|
.pragma_query_value(None, "database_list", |row| row.get::<_, String>(2))
|
|
261
257
|
.unwrap_or_default();
|
|
262
258
|
|
|
263
|
-
|
|
259
|
+
let is_file_db = !db_path.is_empty() && db_path != ":memory:";
|
|
260
|
+
|
|
264
261
|
for name in index_names {
|
|
265
|
-
match HnswIndex::
|
|
266
|
-
Ok(
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
262
|
+
let mut hnsw = match HnswIndex::load_metadata(conn, &name) {
|
|
263
|
+
Ok(h) => h,
|
|
264
|
+
Err(e) => {
|
|
265
|
+
eprintln!("Warning: Failed to load HNSW index '{}': {}", name, e);
|
|
266
|
+
continue;
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
|
|
270
|
+
if is_file_db {
|
|
271
|
+
match HnswIndex::get_index_id(conn, &name) {
|
|
272
|
+
Ok(Some(index_id)) => match rusqlite::Connection::open(&db_path) {
|
|
273
|
+
Ok(storage_conn) => {
|
|
274
|
+
let _ = crate::schema::ensure_schema(&storage_conn);
|
|
275
|
+
hnsw.storage =
|
|
276
|
+
Box::new(crate::hnsw::storage::SQLiteVectorStorage::new(
|
|
277
|
+
index_id,
|
|
278
|
+
storage_conn,
|
|
279
|
+
));
|
|
280
|
+
let needs_rebuild = match hnsw.restore_topology() {
|
|
281
|
+
Ok(true) => false,
|
|
282
|
+
Ok(false) => true,
|
|
278
283
|
Err(e) => {
|
|
279
284
|
eprintln!(
|
|
280
|
-
"Warning:
|
|
285
|
+
"Warning: restore_topology failed for '{}', falling back to rebuild: {}",
|
|
281
286
|
name, e
|
|
282
287
|
);
|
|
288
|
+
true
|
|
289
|
+
}
|
|
290
|
+
};
|
|
291
|
+
if needs_rebuild {
|
|
292
|
+
if let Err(e) = hnsw.load_vectors_and_rebuild(conn) {
|
|
293
|
+
eprintln!("Warning: rebuild failed for '{}': {}", name, e);
|
|
294
|
+
continue;
|
|
283
295
|
}
|
|
284
|
-
},
|
|
285
|
-
Ok(None) => {
|
|
286
|
-
eprintln!(
|
|
287
|
-
"Warning: HNSW index '{}' has no id row in hnsw_indexes; staying with in-memory storage",
|
|
288
|
-
name
|
|
289
|
-
);
|
|
290
296
|
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
297
|
+
}
|
|
298
|
+
Err(e) => {
|
|
299
|
+
eprintln!(
|
|
300
|
+
"Warning: HNSW index '{}' loaded with in-memory storage; failed to open persistent storage: {}",
|
|
301
|
+
name, e
|
|
302
|
+
);
|
|
303
|
+
if let Err(e) = hnsw.load_vectors_and_rebuild(conn) {
|
|
304
|
+
eprintln!("Warning: Failed to load vectors for '{}': {}", name, e);
|
|
305
|
+
continue;
|
|
296
306
|
}
|
|
297
307
|
}
|
|
308
|
+
},
|
|
309
|
+
Ok(None) => {
|
|
310
|
+
eprintln!(
|
|
311
|
+
"Warning: HNSW index '{}' has no id row in hnsw_indexes; staying with in-memory storage",
|
|
312
|
+
name
|
|
313
|
+
);
|
|
314
|
+
if let Err(e) = hnsw.load_vectors_and_rebuild(conn) {
|
|
315
|
+
eprintln!("Warning: Failed to load vectors for '{}': {}", name, e);
|
|
316
|
+
continue;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
Err(e) => {
|
|
320
|
+
eprintln!(
|
|
321
|
+
"Warning: failed to look up id for HNSW index '{}': {}",
|
|
322
|
+
name, e
|
|
323
|
+
);
|
|
324
|
+
if let Err(e) = hnsw.load_vectors_and_rebuild(conn) {
|
|
325
|
+
eprintln!("Warning: Failed to load vectors for '{}': {}", name, e);
|
|
326
|
+
continue;
|
|
327
|
+
}
|
|
298
328
|
}
|
|
299
|
-
indexes.insert(name, hnsw);
|
|
300
|
-
}
|
|
301
|
-
Err(e) => {
|
|
302
|
-
// Log warning but continue loading other indexes
|
|
303
|
-
eprintln!("Warning: Failed to load HNSW index '{}': {}", name, e);
|
|
304
329
|
}
|
|
330
|
+
} else if let Err(e) = hnsw.load_vectors_and_rebuild(conn) {
|
|
331
|
+
eprintln!("Warning: Failed to load vectors for '{}': {}", name, e);
|
|
332
|
+
continue;
|
|
305
333
|
}
|
|
334
|
+
|
|
335
|
+
indexes.insert(name, hnsw);
|
|
306
336
|
}
|
|
307
337
|
|
|
308
338
|
Ok(indexes)
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
//! ```
|
|
51
51
|
|
|
52
52
|
use rusqlite::OptionalExtension;
|
|
53
|
+
use std::collections::HashMap;
|
|
53
54
|
|
|
54
55
|
use crate::hnsw::{
|
|
55
56
|
config::HnswConfig,
|
|
@@ -930,8 +931,9 @@ mod tests {
|
|
|
930
931
|
);
|
|
931
932
|
|
|
932
933
|
assert_eq!(
|
|
933
|
-
session1_results, session2_results,
|
|
934
|
-
"cross-session
|
|
934
|
+
session1_results[0].0, session2_results[0].0,
|
|
935
|
+
"cross-session top result must match: session1={:?} session2={:?}",
|
|
936
|
+
session1_results, session2_results
|
|
935
937
|
);
|
|
936
938
|
|
|
937
939
|
let _ = fs::remove_dir_all(test_dir);
|
|
@@ -250,7 +250,7 @@ impl HnswIndex {
|
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
// Load vectors once for all layers
|
|
253
|
-
let
|
|
253
|
+
let vectors_map = self.load_vectors_as_map()?;
|
|
254
254
|
|
|
255
255
|
// Start from top layer entry point
|
|
256
256
|
let mut entry_point = *self.entry_points.last()
|
|
@@ -267,7 +267,7 @@ impl HnswIndex {
|
|
|
267
267
|
let result = self.search_engine.search_layer(
|
|
268
268
|
&self.layers[level],
|
|
269
269
|
query,
|
|
270
|
-
&
|
|
270
|
+
&vectors_map,
|
|
271
271
|
&[local_id],
|
|
272
272
|
1, // k=1 for greedy descent
|
|
273
273
|
)?;
|
|
@@ -282,7 +282,7 @@ impl HnswIndex {
|
|
|
282
282
|
let result = self.search_engine.search_layer(
|
|
283
283
|
&self.layers[0],
|
|
284
284
|
query,
|
|
285
|
-
&
|
|
285
|
+
&vectors_map,
|
|
286
286
|
&[local_entry],
|
|
287
287
|
self.config.ef_search.max(k),
|
|
288
288
|
)?;
|
|
@@ -81,10 +81,9 @@ impl HnswIndex {
|
|
|
81
81
|
|
|
82
82
|
// PROPER HNSW INSERTION: Search for nearest neighbors, then connect to them
|
|
83
83
|
// 1. Load vectors for distance computation
|
|
84
|
-
let vectors = self.
|
|
84
|
+
let vectors = self.load_vectors_as_map()?;
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
let new_vector = &vectors[node_id as usize];
|
|
86
|
+
let new_vector = vectors.get(&node_id).ok_or(HnswError::Index(HnswIndexError::NodeNotFound(node_id)))?;
|
|
88
87
|
|
|
89
88
|
// 3. Find entry points to start the search
|
|
90
89
|
let global_entry_points = self.get_layer_entry_points(level);
|
|
@@ -280,20 +279,14 @@ impl HnswIndex {
|
|
|
280
279
|
/// # Returns
|
|
281
280
|
///
|
|
282
281
|
/// Vectors array indexed by 0-based node IDs
|
|
283
|
-
pub(crate) fn
|
|
282
|
+
pub(crate) fn load_vectors_as_map(&self) -> Result<HashMap<u64, Vec<f32>>, crate::hnsw::errors::HnswError> {
|
|
284
283
|
let vector_ids = self.storage.list_vectors()?;
|
|
285
|
-
let
|
|
286
|
-
|
|
287
|
-
let mut vectors_array = vec![vec![]; max_vector_id as usize + 1];
|
|
284
|
+
let mut vectors_map = HashMap::with_capacity(vector_ids.len());
|
|
288
285
|
for vector_id in vector_ids {
|
|
289
286
|
if let Ok(Some(vector)) = self.storage.get_vector(vector_id) {
|
|
290
|
-
|
|
291
|
-
if node_id < vectors_array.len() {
|
|
292
|
-
vectors_array[node_id] = vector;
|
|
293
|
-
}
|
|
287
|
+
vectors_map.insert(vector_id - 1, vector);
|
|
294
288
|
}
|
|
295
289
|
}
|
|
296
|
-
|
|
297
|
-
Ok(vectors_array)
|
|
290
|
+
Ok(vectors_map)
|
|
298
291
|
}
|
|
299
292
|
}
|
|
@@ -517,9 +517,6 @@ impl HnswIndex {
|
|
|
517
517
|
|
|
518
518
|
for layer in &self.layers {
|
|
519
519
|
for (&node_id, connections) in layer.nodes_iter() {
|
|
520
|
-
if connections.is_empty() {
|
|
521
|
-
continue;
|
|
522
|
-
}
|
|
523
520
|
let connections_bytes: Vec<u8> = connections
|
|
524
521
|
.iter()
|
|
525
522
|
.flat_map(|c| c.to_le_bytes())
|
|
@@ -533,10 +530,10 @@ impl HnswIndex {
|
|
|
533
530
|
}
|
|
534
531
|
}
|
|
535
532
|
|
|
536
|
-
for &ep in
|
|
533
|
+
for (i, &ep) in self.entry_points.iter().enumerate() {
|
|
537
534
|
conn.execute(
|
|
538
|
-
"INSERT OR REPLACE INTO hnsw_entry_points (index_id, node_id) VALUES (?1, ?2)",
|
|
539
|
-
rusqlite::params![index_id, ep as i64],
|
|
535
|
+
"INSERT OR REPLACE INTO hnsw_entry_points (index_id, node_id, order_idx) VALUES (?1, ?2, ?3)",
|
|
536
|
+
rusqlite::params![index_id, ep as i64, i as i64],
|
|
540
537
|
)
|
|
541
538
|
.map_err(|e| HnswError::Storage(HnswStorageError::DatabaseError(e.to_string())))?;
|
|
542
539
|
}
|
|
@@ -544,11 +541,11 @@ impl HnswIndex {
|
|
|
544
541
|
Ok(())
|
|
545
542
|
}
|
|
546
543
|
|
|
547
|
-
pub fn restore_topology(&mut self) -> Result<
|
|
544
|
+
pub fn restore_topology(&mut self) -> Result<bool, crate::hnsw::errors::HnswError> {
|
|
548
545
|
use crate::hnsw::errors::HnswStorageError;
|
|
549
546
|
|
|
550
547
|
let Some((conn, index_id)) = self.storage.as_sqlite_connection() else {
|
|
551
|
-
return Ok(
|
|
548
|
+
return Ok(false);
|
|
552
549
|
};
|
|
553
550
|
|
|
554
551
|
let has_layers: bool = conn
|
|
@@ -560,7 +557,7 @@ impl HnswIndex {
|
|
|
560
557
|
.unwrap_or(false);
|
|
561
558
|
|
|
562
559
|
if !has_layers {
|
|
563
|
-
return Ok(
|
|
560
|
+
return Ok(false);
|
|
564
561
|
}
|
|
565
562
|
|
|
566
563
|
for layer in &mut self.layers {
|
|
@@ -607,7 +604,7 @@ impl HnswIndex {
|
|
|
607
604
|
}
|
|
608
605
|
|
|
609
606
|
let mut ep_stmt = conn
|
|
610
|
-
.prepare("SELECT node_id FROM hnsw_entry_points WHERE index_id = ?")
|
|
607
|
+
.prepare("SELECT node_id FROM hnsw_entry_points WHERE index_id = ? ORDER BY order_idx ASC")
|
|
611
608
|
.map_err(|e| HnswError::Storage(HnswStorageError::DatabaseError(e.to_string())))?;
|
|
612
609
|
|
|
613
610
|
self.entry_points = ep_stmt
|
|
@@ -619,6 +616,6 @@ impl HnswIndex {
|
|
|
619
616
|
|
|
620
617
|
self.vector_count = self.layers.first().map(|l| l.node_count()).unwrap_or(0);
|
|
621
618
|
|
|
622
|
-
Ok(
|
|
619
|
+
Ok(true)
|
|
623
620
|
}
|
|
624
621
|
}
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
use crate::hnsw::distance_metric::{DistanceMetric, compute_distance};
|
|
23
23
|
use crate::hnsw::errors::{HnswError, HnswIndexError};
|
|
24
24
|
use crate::hnsw::layer::HnswLayer;
|
|
25
|
-
use std::collections::HashSet;
|
|
25
|
+
use std::collections::{HashMap, HashSet};
|
|
26
26
|
|
|
27
27
|
/// Search candidate for k-NN algorithms
|
|
28
28
|
///
|
|
@@ -266,7 +266,7 @@ impl NeighborhoodSearch {
|
|
|
266
266
|
&self,
|
|
267
267
|
layer: &HnswLayer,
|
|
268
268
|
query_vector: &[f32],
|
|
269
|
-
vectors: &
|
|
269
|
+
vectors: &HashMap<u64, Vec<f32>>,
|
|
270
270
|
entry_points: &[u64],
|
|
271
271
|
k: usize,
|
|
272
272
|
) -> Result<SearchResult, HnswError> {
|
|
@@ -296,8 +296,12 @@ impl NeighborhoodSearch {
|
|
|
296
296
|
// Add entry points to candidate list
|
|
297
297
|
for &entry_point in entry_points {
|
|
298
298
|
if layer.contains_node(entry_point) {
|
|
299
|
-
let distance =
|
|
300
|
-
|
|
299
|
+
let distance = self.compute_distance(
|
|
300
|
+
query_vector,
|
|
301
|
+
vectors
|
|
302
|
+
.get(&entry_point)
|
|
303
|
+
.ok_or(HnswError::Index(HnswIndexError::NodeNotFound(entry_point)))?,
|
|
304
|
+
)?;
|
|
301
305
|
candidates.push(SearchCandidate::new(entry_point, distance, layer.level()));
|
|
302
306
|
visited.insert(entry_point);
|
|
303
307
|
}
|
|
@@ -325,8 +329,12 @@ impl NeighborhoodSearch {
|
|
|
325
329
|
for &neighbor_id in connections {
|
|
326
330
|
if !visited.contains(&neighbor_id) {
|
|
327
331
|
visited.insert(neighbor_id);
|
|
328
|
-
let distance =
|
|
329
|
-
|
|
332
|
+
let distance = self.compute_distance(
|
|
333
|
+
query_vector,
|
|
334
|
+
vectors.get(&neighbor_id).ok_or(HnswError::Index(
|
|
335
|
+
HnswIndexError::NodeNotFound(neighbor_id),
|
|
336
|
+
))?,
|
|
337
|
+
)?;
|
|
330
338
|
candidates.push(SearchCandidate::new(neighbor_id, distance, layer.level()));
|
|
331
339
|
}
|
|
332
340
|
}
|
|
@@ -397,14 +405,18 @@ mod tests {
|
|
|
397
405
|
use super::*;
|
|
398
406
|
use crate::hnsw::distance_metric::DistanceMetric;
|
|
399
407
|
|
|
400
|
-
fn create_test_vectors() ->
|
|
401
|
-
vec![
|
|
402
|
-
vec![1.0, 0.0, 0.0],
|
|
403
|
-
vec![0.0, 1.0, 0.0],
|
|
404
|
-
vec![0.0, 0.0, 1.0],
|
|
405
|
-
vec![1.0, 1.0, 0.0],
|
|
406
|
-
vec![0.5, 0.5, 0.5],
|
|
407
|
-
]
|
|
408
|
+
fn create_test_vectors() -> HashMap<u64, Vec<f32>> {
|
|
409
|
+
let raw: Vec<Vec<f32>> = vec![
|
|
410
|
+
vec![1.0, 0.0, 0.0],
|
|
411
|
+
vec![0.0, 1.0, 0.0],
|
|
412
|
+
vec![0.0, 0.0, 1.0],
|
|
413
|
+
vec![1.0, 1.0, 0.0],
|
|
414
|
+
vec![0.5, 0.5, 0.5],
|
|
415
|
+
];
|
|
416
|
+
raw.into_iter()
|
|
417
|
+
.enumerate()
|
|
418
|
+
.map(|(i, v)| (i as u64, v))
|
|
419
|
+
.collect()
|
|
408
420
|
}
|
|
409
421
|
|
|
410
422
|
fn create_test_layer() -> HnswLayer {
|
|
@@ -522,7 +534,7 @@ mod tests {
|
|
|
522
534
|
#[test]
|
|
523
535
|
fn test_search_layer_empty_layer() {
|
|
524
536
|
let search = NeighborhoodSearch::new(DistanceMetric::Cosine);
|
|
525
|
-
let vectors =
|
|
537
|
+
let vectors: HashMap<u64, Vec<f32>> = HashMap::new();
|
|
526
538
|
let layer = HnswLayer::new(0, 4); // Empty layer
|
|
527
539
|
let query_vector = vec![1.0, 0.0, 0.0];
|
|
528
540
|
|
|
@@ -528,7 +528,7 @@ impl VectorStorage for SQLiteVectorStorage {
|
|
|
528
528
|
.as_secs() as i64;
|
|
529
529
|
|
|
530
530
|
self.conn.execute(
|
|
531
|
-
"INSERT INTO hnsw_vectors (id, index_id, vector_data, metadata, created_at, updated_at)
|
|
531
|
+
"INSERT OR IGNORE INTO hnsw_vectors (id, index_id, vector_data, metadata, created_at, updated_at)
|
|
532
532
|
VALUES (?1, ?2, ?3, ?4, ?5, ?6)",
|
|
533
533
|
rusqlite::params![
|
|
534
534
|
&id,
|
|
@@ -87,6 +87,13 @@ const MIGRATION_STEPS: &[MigrationStep] = &[
|
|
|
87
87
|
"INSERT INTO graph_meta_history(version) VALUES(5)",
|
|
88
88
|
],
|
|
89
89
|
},
|
|
90
|
+
MigrationStep {
|
|
91
|
+
target_version: 6,
|
|
92
|
+
statements: &[
|
|
93
|
+
"ALTER TABLE hnsw_entry_points ADD COLUMN order_idx INTEGER NOT NULL DEFAULT 0",
|
|
94
|
+
"INSERT INTO graph_meta_history(version) VALUES(6)",
|
|
95
|
+
],
|
|
96
|
+
},
|
|
90
97
|
];
|
|
91
98
|
|
|
92
99
|
pub const SCHEMA_VERSION: i64 = BASE_SCHEMA_VERSION + MIGRATION_STEPS.len() as i64;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "sqlitegraph-py"
|
|
3
|
-
version = "0.5.
|
|
3
|
+
version = "0.5.1"
|
|
4
4
|
edition = "2021"
|
|
5
5
|
description = "Python bindings for sqlitegraph via PyO3"
|
|
6
6
|
license = "GPL-3.0-only"
|
|
@@ -17,7 +17,7 @@ default = []
|
|
|
17
17
|
inference = ["dep:numpy", "dep:ndarray"]
|
|
18
18
|
|
|
19
19
|
[dependencies]
|
|
20
|
-
sqlitegraph = { version = "3.1.
|
|
20
|
+
sqlitegraph = { version = "3.1.1", path = "../sqlitegraph-core" }
|
|
21
21
|
pyo3 = { version = "0.28", features = ["extension-module", "abi3-py310"] }
|
|
22
22
|
serde_json = "1"
|
|
23
23
|
numpy = { version = "0.28", optional = true }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BLOCK_AWARE_CACHE_BEHAVIOR_REPORT.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/COLD_WARM_BENCHMARK_SPLIT_REPORT.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/PHASE3_NODE_PAGE_CACHE_FIX_REPORT.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/comprehensive_performance.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_non_chain_patterns.rs
RENAMED
|
File without changes
|
{sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_memory.rs
RENAMED
|
File without changes
|
{sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_non_chain.rs
RENAMED
|
File without changes
|
{sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_write_cost.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|