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.
Files changed (453) hide show
  1. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/Cargo.lock +3 -3
  2. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/PKG-INFO +1 -1
  3. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/pyproject.toml +1 -1
  4. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/Cargo.toml +1 -1
  5. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/core.rs +65 -35
  6. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/index.rs +4 -2
  7. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/index_api.rs +3 -3
  8. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/index_internal.rs +6 -13
  9. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/index_persist.rs +8 -11
  10. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/neighborhood.rs +27 -15
  11. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/storage.rs +1 -1
  12. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/schema.rs +7 -0
  13. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/Cargo.toml +2 -2
  14. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/Cargo.toml +0 -0
  15. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/README.md +0 -0
  16. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/python/sqlitegraph/__init__.py +0 -0
  17. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/python/sqlitegraph/_native.pyi +0 -0
  18. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/python/sqlitegraph/py.typed +0 -0
  19. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/.gitignore +0 -0
  20. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BLOCK_AWARE_CACHE_BEHAVIOR_REPORT.md +0 -0
  21. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BLOCK_LOCALITY_PROTOTYPE_REPORT.md +0 -0
  22. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BUG_10K_INVESTIGATION_SUMMARY.md +0 -0
  23. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/BUG_SNAPSHOTID_SQLITE_BACKEND.md +0 -0
  24. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/CACHE_CAPACITY_SWEEP_REPORT.md +0 -0
  25. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/CACHE_CLONE_FIX_REPORT.md +0 -0
  26. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/CHANGELOG.md +0 -0
  27. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/COLD_PATH_FORENSICS_REPORT.md +0 -0
  28. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/COLD_WARM_BENCHMARK_SPLIT_REPORT.md +0 -0
  29. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/EDGE_CORRUPTION_ROOT_CAUSE.md +0 -0
  30. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/LICENSE +0 -0
  31. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/MAIN_BENCHMARK_RERUN_REPORT.md +0 -0
  32. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/NODE_PAGE_OVERFLOW_FIX_REPORT.md +0 -0
  33. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/PAGE_ID_COLLISION_ROOT_CAUSE.md +0 -0
  34. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/PHASE3_NODE_PAGE_CACHE_FIX_REPORT.md +0 -0
  35. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/PHYSICAL_BLOCK_PLACEMENT_PROTOTYPE_REPORT.md +0 -0
  36. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/README.md +0 -0
  37. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/REBUILD_INDEXES_FIX_REPORT.md +0 -0
  38. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/REOPEN_CORRUPTION_FORENSICS.md +0 -0
  39. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/V3_10K_NODE_BUG_FIX.md +0 -0
  40. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/V3_FILE_IO_COORDINATION.md +0 -0
  41. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/V3_FORENSIC_REPORT.md +0 -0
  42. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/V3_REGRESSION_SWEEP_REPORT.md +0 -0
  43. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/adaptive_page_simple.rs +0 -0
  44. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/adjlist_benchmark.rs +0 -0
  45. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/algo_benchmarks.rs +0 -0
  46. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/backend_comparison.rs +0 -0
  47. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/bench_utils.rs +0 -0
  48. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/bfs.rs +0 -0
  49. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/cold_cache.rs +0 -0
  50. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/comparative_benchmark.rs +0 -0
  51. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/comprehensive_performance.rs +0 -0
  52. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/compression_benchmark.rs +0 -0
  53. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/concurrent_access.rs +0 -0
  54. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/connection_pool.rs +0 -0
  55. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/graph_generators.rs +0 -0
  56. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/graph_theory_benchmarks.rs +0 -0
  57. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/hnsw.rs +0 -0
  58. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/hnsw_multilayer.rs +0 -0
  59. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/insert.rs +0 -0
  60. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/k_hop.rs +0 -0
  61. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/memory_profiling.rs +0 -0
  62. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/mvcc_benchmarks.rs +0 -0
  63. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/native_disk_io.rs +0 -0
  64. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/parallel_bfs.rs +0 -0
  65. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/read_path_benchmarks.rs +0 -0
  66. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/real_datasets.rs +0 -0
  67. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_memory.rs +0 -0
  68. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_non_chain_patterns.rs +0 -0
  69. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_memory.rs +0 -0
  70. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_non_chain.rs +0 -0
  71. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_pubsub_write_cost.rs +0 -0
  72. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/regression_write_cost.rs +0 -0
  73. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/sqlite_v3_comparison.rs +0 -0
  74. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/v3_algorithm_benchmarks.rs +0 -0
  75. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/v3_backend_benchmarks.rs +0 -0
  76. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/benches/wal_recovery_benchmarks.rs +0 -0
  77. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/clippy.toml +0 -0
  78. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/core.d +0 -0
  79. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/debug_test.rs +0 -0
  80. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/HNSW_DEVELOPMENT_RULES.md +0 -0
  81. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/HNSW_VECTOR_INTEGRATION_FUTURE_ROADMAP.md +0 -0
  82. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/SEQUENTIAL_IO_PERFORMANCE.md +0 -0
  83. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/WAL_MODE_IMPLEMENTATION_GUIDE.md +0 -0
  84. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase-40-benchmark-report.md +0 -0
  85. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase10_performance_tuning.md +0 -0
  86. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase11_native_perf_plan.md +0 -0
  87. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase12_optimization_plan.md +0 -0
  88. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase14_step9_khop_corruption_codebase_mapping.md +0 -0
  89. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase29_step7_mmap_preaudit_notes.md +0 -0
  90. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase5_real_adjacency.md +0 -0
  91. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase6_implementation_status.md +0 -0
  92. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase6_native_graphbackend_plan.md +0 -0
  93. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/phase7_native_backend_refactor.md +0 -0
  94. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/docs/superpowers/plans/2026-04-23-task-1-analysis.md +0 -0
  95. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/algo_benchmark.rs +0 -0
  96. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/basic_functionality_test.rs +0 -0
  97. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/batch_bench.rs +0 -0
  98. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/batch_stress_test.rs +0 -0
  99. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/bench_parallel_bfs.rs +0 -0
  100. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/block_locality_benchmark.rs +0 -0
  101. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/cache_capacity_benchmark.rs +0 -0
  102. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/cache_clone_forensics.rs +0 -0
  103. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/cache_perf_test.rs +0 -0
  104. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/cold_path_decomposition.rs +0 -0
  105. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/compression_analysis.rs +0 -0
  106. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/compression_detailed.rs +0 -0
  107. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/compression_diagnostics.rs +0 -0
  108. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/crash_test_child.rs +0 -0
  109. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/debug_buffer_error.rs +0 -0
  110. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/get_node_cache_sweep.rs +0 -0
  111. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/hybrid_sqlite_v3_hnsw_pubsub.rs +0 -0
  112. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/phase53_1_execution.rs +0 -0
  113. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/phase55_simple_benchmark.rs +0 -0
  114. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/reopen_corruption_repro.rs +0 -0
  115. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_100k.rs +0 -0
  116. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_adaptive_pages.rs +0 -0
  117. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_allocator_startup.rs +0 -0
  118. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_batch_simple.rs +0 -0
  119. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_binary_search.rs +0 -0
  120. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_btree_100k.rs +0 -0
  121. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_cache_warm.rs +0 -0
  122. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_chunked_bfs.rs +0 -0
  123. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_delta_encoding.rs +0 -0
  124. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_direct_backend_benchmark.rs +0 -0
  125. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_direct_edgestore.rs +0 -0
  126. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_edge_store_direct.rs +0 -0
  127. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_edgestore_perf.rs +0 -0
  128. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_index_restore.rs +0 -0
  129. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_index_staleness.rs +0 -0
  130. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_lazy_decode.rs +0 -0
  131. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_lock_overhead.rs +0 -0
  132. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_native_edge.rs +0 -0
  133. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_neighbors_cache.rs +0 -0
  134. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_neighbors_detailed.rs +0 -0
  135. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_neighbors_profile.rs +0 -0
  136. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_open_detailed_timing.rs +0 -0
  137. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_open_roundtrip.rs +0 -0
  138. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_open_stage_timing.rs +0 -0
  139. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_performance_comparison.rs +0 -0
  140. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_rwlock_overhead.rs +0 -0
  141. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_sqlite_neighbors_perf.rs +0 -0
  142. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_v3_neighbors_perf.rs +0 -0
  143. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/test_vec_clone.rs +0 -0
  144. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_forensic_page_analysis.rs +0 -0
  145. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_forensics_example.rs +0 -0
  146. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_get_node_profile.rs +0 -0
  147. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_offset_forensic.rs +0 -0
  148. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_perf_test.rs +0 -0
  149. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_readonly_profile.rs +0 -0
  150. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/examples/v3_reopen_verify.rs +0 -0
  151. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/libtest_syntax.rlib +0 -0
  152. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/manual.md +0 -0
  153. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/snapshot_export/snapshot_1766284406.v2 +0 -0
  154. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/snapshot_export/snapshot_1766284420.v2 +0 -0
  155. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/sqlitegraph_bench.json +0 -0
  156. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/backend/centrality.rs +0 -0
  157. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/backend/graph_ops.rs +0 -0
  158. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/backend/mod.rs +0 -0
  159. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/backend/traversal.rs +0 -0
  160. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/call_graph_analysis.rs +0 -0
  161. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/centrality.rs +0 -0
  162. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/community.rs +0 -0
  163. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/control_dependence.rs +0 -0
  164. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/critical_path.rs +0 -0
  165. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/cut_partition.rs +0 -0
  166. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/cycle_basis.rs +0 -0
  167. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/dominance_frontiers.rs +0 -0
  168. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/dominators.rs +0 -0
  169. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/graph_diff.rs +0 -0
  170. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/graph_rewriting.rs +0 -0
  171. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/graph_similarity.rs +0 -0
  172. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/mod.rs +0 -0
  173. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/natural_loops.rs +0 -0
  174. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/observability.rs +0 -0
  175. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/path_enumeration.rs +0 -0
  176. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/post_dominators.rs +0 -0
  177. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/program_slicing.rs +0 -0
  178. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/reachability.rs +0 -0
  179. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/scc.rs +0 -0
  180. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/structure.rs +0 -0
  181. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/subgraph_isomorphism.rs +0 -0
  182. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/taint_analysis.rs +0 -0
  183. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/tests.rs +0 -0
  184. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/topological_sort.rs +0 -0
  185. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/transitive_closure.rs +0 -0
  186. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/transitive_reduction.rs +0 -0
  187. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/algo/wcc.rs +0 -0
  188. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/api_ergonomics.rs +0 -0
  189. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/constants.rs +0 -0
  190. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/cpu_tuning.rs +0 -0
  191. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/mod.rs +0 -0
  192. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/aliases.rs +0 -0
  193. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/cpu_profile.rs +0 -0
  194. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/errors.rs +0 -0
  195. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/flags.rs +0 -0
  196. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/kv_types.rs +0 -0
  197. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/mod.rs +0 -0
  198. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/types/utils.rs +0 -0
  199. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/algorithm/mod.rs +0 -0
  200. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/algorithm/parallel_bfs.rs +0 -0
  201. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/allocator.rs +0 -0
  202. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/backend.rs +0 -0
  203. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/btree.rs +0 -0
  204. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compact_edge_record.rs +0 -0
  205. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compression/delta.rs +0 -0
  206. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compression/edge_delta.rs +0 -0
  207. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compression/mod.rs +0 -0
  208. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/compression/varint.rs +0 -0
  209. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/constants.rs +0 -0
  210. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/edge_compat.rs +0 -0
  211. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/file_coordinator.rs +0 -0
  212. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/forensics.rs +0 -0
  213. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/header.rs +0 -0
  214. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/index/mod.rs +0 -0
  215. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/index/page.rs +0 -0
  216. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/index_persistence.rs +0 -0
  217. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/kind_index.rs +0 -0
  218. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/kv_store/mod.rs +0 -0
  219. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/kv_store/store.rs +0 -0
  220. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/kv_store/types.rs +0 -0
  221. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/lazy_init_tests.rs +0 -0
  222. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/mod.rs +0 -0
  223. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/name_index.rs +0 -0
  224. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/block_cache.rs +0 -0
  225. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/cache.rs +0 -0
  226. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/mod.rs +0 -0
  227. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/page.rs +0 -0
  228. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/record.rs +0 -0
  229. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/store.rs +0 -0
  230. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/node/tests.rs +0 -0
  231. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/pubsub/mod.rs +0 -0
  232. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/pubsub/publisher.rs +0 -0
  233. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/pubsub/types.rs +0 -0
  234. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/storage/adaptive_page.rs +0 -0
  235. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/storage/media_detector.rs +0 -0
  236. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/storage/mod.rs +0 -0
  237. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/string_table/mod.rs +0 -0
  238. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/string_table/table.rs +0 -0
  239. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/string_table/tests.rs +0 -0
  240. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/tests/mod.rs +0 -0
  241. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/wal.rs +0 -0
  242. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/native/v3/write_batch.rs +0 -0
  243. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/helpers.rs +0 -0
  244. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/impl_.rs +0 -0
  245. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/kv_tests.rs +0 -0
  246. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/mod.rs +0 -0
  247. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/pubsub_tests.rs +0 -0
  248. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend/sqlite/types.rs +0 -0
  249. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend.rs +0 -0
  250. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/backend_selector.rs +0 -0
  251. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bench_gates.rs +0 -0
  252. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bench_meta.rs +0 -0
  253. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bench_regression.rs +0 -0
  254. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bench_utils.rs +0 -0
  255. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/bfs.rs +0 -0
  256. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/cache.rs +0 -0
  257. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/client.rs +0 -0
  258. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/factory.rs +0 -0
  259. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/graph_config.rs +0 -0
  260. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/kinds.rs +0 -0
  261. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/mod.rs +0 -0
  262. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/native.rs +0 -0
  263. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/config/sqlite.rs +0 -0
  264. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/cypher.rs +0 -0
  265. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/dependency_monitor.rs +0 -0
  266. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/dsl.rs +0 -0
  267. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/errors.rs +0 -0
  268. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/fault_injection.rs +0 -0
  269. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/adjacency.rs +0 -0
  270. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/edge_ops.rs +0 -0
  271. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/entity_ops.rs +0 -0
  272. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/instrumented.rs +0 -0
  273. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/metrics_core.rs +0 -0
  274. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/metrics_snapshot.rs +0 -0
  275. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/mod.rs +0 -0
  276. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/statement_tracker.rs +0 -0
  277. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics/utils.rs +0 -0
  278. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/metrics_schema.rs +0 -0
  279. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/mod.rs +0 -0
  280. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/pattern_matching.rs +0 -0
  281. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/pool.rs +0 -0
  282. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/snapshot.rs +0 -0
  283. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph/types.rs +0 -0
  284. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/graph_opt.rs +0 -0
  285. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/batch_filter.rs +0 -0
  286. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/builder.rs +0 -0
  287. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/config.rs +0 -0
  288. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/distance_functions.rs +0 -0
  289. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/distance_metric.rs +0 -0
  290. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/errors.rs +0 -0
  291. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/layer.rs +0 -0
  292. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/mod.rs +0 -0
  293. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/multilayer.rs +0 -0
  294. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/serialization.rs +0 -0
  295. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/simd.rs +0 -0
  296. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/v3_storage.rs +0 -0
  297. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/hnsw/v3_storage_tests.rs +0 -0
  298. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/index.rs +0 -0
  299. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/inference/engine.rs +0 -0
  300. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/inference/mod.rs +0 -0
  301. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/inference/sampling.rs +0 -0
  302. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/inference/simd.rs +0 -0
  303. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/introspection.rs +0 -0
  304. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/lib.rs +0 -0
  305. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/multi_hop.rs +0 -0
  306. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/mvcc.rs +0 -0
  307. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern.rs +0 -0
  308. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/matcher.rs +0 -0
  309. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/mod.rs +0 -0
  310. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/pattern.rs +0 -0
  311. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/property.rs +0 -0
  312. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/query.rs +0 -0
  313. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine/tests.rs +0 -0
  314. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/edge_validation.rs +0 -0
  315. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/fast_path_detection.rs +0 -0
  316. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/fast_path_execution.rs +0 -0
  317. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/mod.rs +0 -0
  318. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/pattern_engine_cache/tests.rs +0 -0
  319. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/progress.rs +0 -0
  320. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/query.rs +0 -0
  321. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/query_cache.rs +0 -0
  322. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/reasoning.rs +0 -0
  323. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/recovery.rs +0 -0
  324. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/snapshot.rs +0 -0
  325. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/typed_digraph/algo.rs +0 -0
  326. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/typed_digraph/graph.rs +0 -0
  327. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/typed_digraph/mod.rs +0 -0
  328. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/src/typed_digraph/tests.rs +0 -0
  329. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/acid_regression_test.rs +0 -0
  330. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/acid_snapshot_test.rs +0 -0
  331. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/algo_tests.rs +0 -0
  332. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/backend_selector_tests.rs +0 -0
  333. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_data_tests.rs +0 -0
  334. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_gate_tests.rs +0 -0
  335. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_gates_tests.rs +0 -0
  336. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_meta_tests.rs +0 -0
  337. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bench_report_tests.rs +0 -0
  338. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/benchmark_isolation_test.rs +0 -0
  339. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bfs_tests.rs +0 -0
  340. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bincode_compatibility_test.rs +0 -0
  341. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/bulk_insert_tests.rs +0 -0
  342. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cache_effectiveness_tests.rs +0 -0
  343. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cache_tests.rs +0 -0
  344. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/check_write_path.rs +0 -0
  345. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cluster_offset_corruption_regression.rs +0 -0
  346. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cold_path_forensics.rs +0 -0
  347. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/cypher_tests.rs +0 -0
  348. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/debug_file_size.rs +0 -0
  349. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/debug_index_rebuilding.rs +0 -0
  350. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/debug_overflow.rs +0 -0
  351. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/debug_scenario_c.rs +0 -0
  352. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/deterministic_index_tests.rs +0 -0
  353. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/direct_file_read_corruption_test.rs +0 -0
  354. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/doc_tests.rs +0 -0
  355. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/edge_corruption_minimal.rs +0 -0
  356. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/edge_corruption_repro.rs +0 -0
  357. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/edge_insertion_corruption_test.rs +0 -0
  358. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/edge_tests.rs +0 -0
  359. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/entity_tests.rs +0 -0
  360. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/file_extension_debug.rs +0 -0
  361. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/fuzz_common.rs +0 -0
  362. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/get_node_forensics.rs +0 -0
  363. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/graph_node_existence_enforcement.rs +0 -0
  364. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/graph_opt_tests.rs +0 -0
  365. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/helpers/mod.rs +0 -0
  366. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/hnsw_persistence_tests.rs +0 -0
  367. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/index_persistence_integration.rs +0 -0
  368. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/index_persistence_validation.rs +0 -0
  369. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/index_tests.rs +0 -0
  370. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/instrumentation_tests.rs +0 -0
  371. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/integration_tests.rs +0 -0
  372. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/isolate_open_bug.rs +0 -0
  373. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/kv_durability_tests.rs +0 -0
  374. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/lib_api_smoke_tests.rs +0 -0
  375. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/multi_hop_tests.rs +0 -0
  376. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/multi_node_corruption_regression.rs +0 -0
  377. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_baseline_tests.rs +0 -0
  378. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_concurrent_tests.rs +0 -0
  379. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_edge_case_tests.rs +0 -0
  380. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_snapshot_tests.rs +0 -0
  381. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/mvcc_wal_tests.rs +0 -0
  382. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/native_edge_insertion_regression.rs +0 -0
  383. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/node_overflow_forensics.rs +0 -0
  384. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/node_read_forensics_test.rs +0 -0
  385. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/node_slot_transaction_persistence.rs +0 -0
  386. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/oom_reproduction_test.rs +0 -0
  387. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/page_42_debug.rs +0 -0
  388. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/page_write_debug.rs +0 -0
  389. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/pattern_cache_fastpath_tests.rs +0 -0
  390. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/pattern_engine_tests.rs +0 -0
  391. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/pattern_tests.rs +0 -0
  392. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/perf_gate_tests.rs +0 -0
  393. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/perf_gate_v32_tests.rs +0 -0
  394. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase32_cluster_pipeline_reconstruction_tests_clean.rs +0 -0
  395. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase44_2_cluster_size_contract_tests.rs +0 -0
  396. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase64_node_count_durability_regression.rs +0 -0
  397. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase65_cluster_size_corruption_regression.rs +0 -0
  398. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/phase73_node_count_corruption_capture.rs +0 -0
  399. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/query_cache_performance_tests.rs +0 -0
  400. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/query_cache_tests.rs +0 -0
  401. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/query_tests.rs +0 -0
  402. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/recovery_tests.rs +0 -0
  403. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/regression_concurrent_traversal.rs +0 -0
  404. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/reopen_corruption_investigation.rs +0 -0
  405. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/reopen_integration_test.rs +0 -0
  406. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/rowid_tests.rs +0 -0
  407. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/schema_tests.rs +0 -0
  408. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/snapshot_isolation_tests.rs +0 -0
  409. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/sqlite_reopen_tests.rs +0 -0
  410. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/sqlite_snapshot_tests.rs +0 -0
  411. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/test_10k_bug_reproduction.rs +0 -0
  412. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/unsafe_invariants_tests.rs +0 -0
  413. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_algorithm_tests.rs +0 -0
  414. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_block_locality_tests.rs +0 -0
  415. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_btree_forensics.rs +0 -0
  416. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_check_nodepages.rs +0 -0
  417. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_dump_page_headers.rs +0 -0
  418. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_edge_durability_tdd.rs +0 -0
  419. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_file_write_test.rs +0 -0
  420. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_focused_perf.rs +0 -0
  421. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_forensics_test.rs +0 -0
  422. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_header_forensics.rs +0 -0
  423. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_insert_read_forensics.rs +0 -0
  424. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_integrity_check.rs +0 -0
  425. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_kind_index_tests.rs +0 -0
  426. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_name_index_tests.rs +0 -0
  427. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_page_ownership_forensics.rs +0 -0
  428. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_persistence_100.rs +0 -0
  429. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_query_truth_tests.rs +0 -0
  430. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_regression_sweep.rs +0 -0
  431. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_reopen_durability.rs +0 -0
  432. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_sync_fix_validation.rs +0 -0
  433. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/v3_verify_file_persistence.rs +0 -0
  434. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/wal_mode_default_tests.rs +0 -0
  435. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/wal_tuning_tests.rs +0 -0
  436. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-core/tests/write_buffer_coherence_regression.rs +0 -0
  437. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/.gitignore +0 -0
  438. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/CHANGELOG.md +0 -0
  439. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/README.md +0 -0
  440. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/01_basic_crud.py +0 -0
  441. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/02_graph_algorithms.py +0 -0
  442. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/03_vector_search.py +0 -0
  443. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/04_social_network.py +0 -0
  444. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/05_file_backed.py +0 -0
  445. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/examples/06_hybrid_sqlite_hnsw_query.py +0 -0
  446. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/src/lib.rs +0 -0
  447. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_algo.py +0 -0
  448. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_basic.py +0 -0
  449. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_bulk_insert.py +0 -0
  450. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_crud.py +0 -0
  451. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_errors.py +0 -0
  452. {sqlitegraph-0.5.0 → sqlitegraph-0.5.1}/sqlitegraph-py/tests/test_filtered_traversal.py +0 -0
  453. {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.0"
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.0"
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.0"
1432
+ version = "0.5.1"
1433
1433
  dependencies = [
1434
1434
  "ndarray 0.16.1",
1435
1435
  "numpy",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlitegraph
3
- Version: 0.5.0
3
+ Version: 0.5.1
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
6
6
  Classifier: Programming Language :: Python :: 3
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "sqlitegraph"
7
- version = "0.5.0"
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.0"
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
- // Load each index with vectors
259
+ let is_file_db = !db_path.is_empty() && db_path != ":memory:";
260
+
264
261
  for name in index_names {
265
- match HnswIndex::load_with_vectors(conn, &name) {
266
- Ok(mut hnsw) => {
267
- if !db_path.is_empty() && db_path != ":memory:" {
268
- match HnswIndex::get_index_id(conn, &name) {
269
- Ok(Some(index_id)) => match rusqlite::Connection::open(&db_path) {
270
- Ok(storage_conn) => {
271
- let _ = crate::schema::ensure_schema(&storage_conn);
272
- hnsw.storage =
273
- Box::new(crate::hnsw::storage::SQLiteVectorStorage::new(
274
- index_id,
275
- storage_conn,
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: HNSW index '{}' loaded with in-memory storage; failed to open persistent storage: {}",
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
- Err(e) => {
292
- eprintln!(
293
- "Warning: failed to look up id for HNSW index '{}': {}",
294
- name, e
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 search results must match"
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 vectors_array = self.load_vectors_as_array()?;
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
- &vectors_array,
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
- &vectors_array,
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.load_vectors_as_array()?;
84
+ let vectors = self.load_vectors_as_map()?;
85
85
 
86
- // 2. Get the vector data for the new node
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 load_vectors_as_array(&self) -> Result<Vec<Vec<f32>>, crate::hnsw::errors::HnswError> {
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 max_vector_id = vector_ids.iter().copied().max().unwrap_or(0);
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
- let node_id = (vector_id - 1) as usize;
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 &self.entry_points {
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<(), crate::hnsw::errors::HnswError> {
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: &[Vec<f32>],
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
- self.compute_distance(query_vector, &vectors[entry_point as usize])?;
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
- self.compute_distance(query_vector, &vectors[neighbor_id as usize])?;
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() -> Vec<Vec<f32>> {
401
- vec![
402
- vec![1.0, 0.0, 0.0], // Node 0
403
- vec![0.0, 1.0, 0.0], // Node 1
404
- vec![0.0, 0.0, 1.0], // Node 2
405
- vec![1.0, 1.0, 0.0], // Node 3
406
- vec![0.5, 0.5, 0.5], // Node 4
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 = vec![];
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.0"
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.0", path = "../sqlitegraph-core" }
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