hyperstreamdb 0.2.4__tar.gz → 0.2.5__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 (289) hide show
  1. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/Cargo.lock +14 -1
  2. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/Cargo.toml +2 -2
  3. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/PKG-INFO +1 -1
  4. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/compaction.rs +1 -1
  5. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/ffi.rs +4 -4
  6. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/iceberg.rs +17 -12
  7. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/manifest.rs +8 -4
  8. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/merge.rs +3 -3
  9. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/segment.rs +35 -37
  10. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/mod.rs +4 -4
  11. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/read.rs +2 -2
  12. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/schema.rs +6 -6
  13. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/write.rs +13 -13
  14. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/python_binding.rs +3 -2
  15. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/python_gpu_context.rs +1 -1
  16. hyperstreamdb-0.2.5/src/telemetry/tracing.rs +84 -0
  17. hyperstreamdb-0.2.4/src/telemetry/tracing.rs +0 -46
  18. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.gitattributes +0 -0
  19. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.gitignore +0 -0
  20. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.hypothesis/constants/32b327793848e7d8 +0 -0
  21. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.hypothesis/constants/67b0a8ccf18bf5d2 +0 -0
  22. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.hypothesis/constants/84828557b4ee7be4 +0 -0
  23. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.instructions.md +0 -0
  24. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/CNAME +0 -0
  25. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/DORIS_OPTIMIZATION_PATTERNS.md +0 -0
  26. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/LICENSE-APACHE +0 -0
  27. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/LICENSE-MIT +0 -0
  28. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/README.md +0 -0
  29. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/RUN_COMPLIANCE_TESTS.sh +0 -0
  30. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/STEERING.md +0 -0
  31. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/THIRDPARTY_NOTICES.md +0 -0
  32. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benches/bench_table.rs +0 -0
  33. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benches/performance.rs +0 -0
  34. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/BENCHMARK_REPORT.md +0 -0
  35. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/benchmark_charts.png +0 -0
  36. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/benchmark_results.csv +0 -0
  37. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/concurrent_queries_20260409_214245.json +0 -0
  38. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/concurrent_queries_20260409_214245.md +0 -0
  39. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_search_comparison_20260409_222607.json +0 -0
  40. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_search_comparison_20260409_222607.md +0 -0
  41. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_214355.json +0 -0
  42. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_214355.md +0 -0
  43. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_220418.json +0 -0
  44. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_220418.md +0 -0
  45. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_222053.json +0 -0
  46. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_222053.md +0 -0
  47. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_225907.json +0 -0
  48. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_225907.md +0 -0
  49. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/full_scan_baseline_20260409_222303.json +0 -0
  50. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/full_scan_baseline_20260409_222303.md +0 -0
  51. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/high_selectivity_filter_20260409_222302.json +0 -0
  52. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/high_selectivity_filter_20260409_222302.md +0 -0
  53. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/ingestion_comparison_20260409_222516.json +0 -0
  54. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/ingestion_comparison_20260409_222516.md +0 -0
  55. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_214428.json +0 -0
  56. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_214428.md +0 -0
  57. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_220450.json +0 -0
  58. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_220450.md +0 -0
  59. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_222131.json +0 -0
  60. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_222131.md +0 -0
  61. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_225938.json +0 -0
  62. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_225938.md +0 -0
  63. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_214501.json +0 -0
  64. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_214501.md +0 -0
  65. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_220524.json +0 -0
  66. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_220524.md +0 -0
  67. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_222204.json +0 -0
  68. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_222204.md +0 -0
  69. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_230010.json +0 -0
  70. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_230010.md +0 -0
  71. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/query_comparison_20260409_222541.json +0 -0
  72. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/query_comparison_20260409_222541.md +0 -0
  73. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/range_query_20260409_222302.json +0 -0
  74. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/range_query_20260409_222302.md +0 -0
  75. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/search_filtered_high_selectivity_20260409_214144.json +0 -0
  76. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/search_filtered_high_selectivity_20260409_214144.md +0 -0
  77. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/search_unfiltered_20260409_214028.json +0 -0
  78. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/search_unfiltered_20260409_214028.md +0 -0
  79. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/book.toml +0 -0
  80. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/broken_binaries_all.txt +0 -0
  81. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/broken_bins.txt +0 -0
  82. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/build-connectors.sh +0 -0
  83. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/build.rs +0 -0
  84. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/check_iceberg_compliance.py +0 -0
  85. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/compliance_output.txt +0 -0
  86. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/critical_code_review.md +0 -0
  87. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/debug_log.txt +0 -0
  88. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/demo_basics_run.txt +0 -0
  89. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/demo_basics_v2.txt +0 -0
  90. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docker-compose-minio-nessie.yml +0 -0
  91. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docker-compose.yml +0 -0
  92. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/BENCHMARKING.md +0 -0
  93. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/COMPREHENSIVE_GUIDE.md +0 -0
  94. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/CONCURRENCY.md +0 -0
  95. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/CONFIGURATION.md +0 -0
  96. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/GPU_SETUP_GUIDE.md +0 -0
  97. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/ICEBERG_V2_V3_API.md +0 -0
  98. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/INSTALLATION.md +0 -0
  99. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/PGVECTOR_SQL_GUIDE.md +0 -0
  100. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/PYTHON_VECTOR_API.md +0 -0
  101. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/VECTOR_CONFIGURATION.md +0 -0
  102. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/api_reference.md +0 -0
  103. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/architecture.md +0 -0
  104. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/catalog_usage.md +0 -0
  105. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/index.md +0 -0
  106. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/README.md +0 -0
  107. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/java_jni.md +0 -0
  108. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/python.md +0 -0
  109. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/spark.md +0 -0
  110. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/trino.md +0 -0
  111. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/requirements.txt +0 -0
  112. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/_static/HyperStreamDB.png +0 -0
  113. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/api/python.rst +0 -0
  114. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/api/rust.rst +0 -0
  115. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/conf.py +0 -0
  116. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/index.rst +0 -0
  117. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/roadmap.md +0 -0
  118. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/fix_nb.py +0 -0
  119. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/proptest-regressions/core/index/gpu.txt +0 -0
  120. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/proptest-regressions/core/sql/vector_literal.txt +0 -0
  121. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/proptest-regressions/core/sql/vector_udf.txt +0 -0
  122. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/pyproject.toml +0 -0
  123. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python/hyperstreamdb/__init__.py +0 -0
  124. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python/hyperstreamdb/embeddings.py +0 -0
  125. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python_test_output.txt +0 -0
  126. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python_test_output_v2.txt +0 -0
  127. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python_test_output_v3.txt +0 -0
  128. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/rust_check_all_warnings.txt +0 -0
  129. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/rust_test_output.txt +0 -0
  130. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/rust_warnings.txt +0 -0
  131. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/scratch/check_os_error.rs +0 -0
  132. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/simd_test_results.txt +0 -0
  133. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/.bloop/bloop.settings.json +0 -0
  134. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/.bloop/spark-hyperstream-test.json +0 -0
  135. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/.bloop/spark-hyperstream.json +0 -0
  136. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/pom.xml +0 -0
  137. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/DefaultSource.java +0 -0
  138. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartition.java +0 -0
  139. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartitionReader.java +0 -0
  140. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartitionReaderFactory.java +0 -0
  141. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamScanBuilder.java +0 -0
  142. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamTable.java +0 -0
  143. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/gateway.rs +0 -0
  144. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/hdb.rs +0 -0
  145. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/iceberg_rest.rs +0 -0
  146. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/probe_datafusion.rs +0 -0
  147. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/setup_test_data.rs +0 -0
  148. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/verify_layered_indexing.rs +0 -0
  149. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/cache.rs +0 -0
  150. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/config.rs +0 -0
  151. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/glue.rs +0 -0
  152. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/hive.rs +0 -0
  153. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/jdbc.rs +0 -0
  154. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/mod.rs +0 -0
  155. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/nessie.rs +0 -0
  156. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/rest.rs +0 -0
  157. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/unity.rs +0 -0
  158. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/clustering.rs +0 -0
  159. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/embeddings.rs +0 -0
  160. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/iceberg/iceberg_delete.rs +0 -0
  161. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/cosine_distance.cu +0 -0
  162. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/hamming_distance.cu +0 -0
  163. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/inner_product.cu +0 -0
  164. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/jaccard_distance.cu +0 -0
  165. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/kmeans_assignment.cu +0 -0
  166. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/l1_distance.cu +0 -0
  167. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/l2_distance.cu +0 -0
  168. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/distance.rs +0 -0
  169. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/gpu.rs +0 -0
  170. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_ivf.rs +0 -0
  171. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/annhdf5.rs +0 -0
  172. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/api.rs +0 -0
  173. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/dist.rs +0 -0
  174. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/flatten.rs +0 -0
  175. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/hnsw.rs +0 -0
  176. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/hnswio.rs +0 -0
  177. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/libext.rs +0 -0
  178. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/mod.rs +0 -0
  179. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/prelude.rs +0 -0
  180. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/test.rs +0 -0
  181. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/ivf.rs +0 -0
  182. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/memory.rs +0 -0
  183. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mod.rs +0 -0
  184. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/cosine_distance.metal +0 -0
  185. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/hamming_distance.metal +0 -0
  186. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/inner_product.metal +0 -0
  187. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/jaccard_distance.metal +0 -0
  188. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/kmeans_assignment.metal +0 -0
  189. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/l1_distance.metal +0 -0
  190. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/l2_distance.metal +0 -0
  191. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/cosine_distance.cl +0 -0
  192. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/hamming_distance.cl +0 -0
  193. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/inner_product.cl +0 -0
  194. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/jaccard_distance.cl +0 -0
  195. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/kmeans_assignment.cl +0 -0
  196. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/l1_distance.cl +0 -0
  197. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/l2_distance.cl +0 -0
  198. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/pq.rs +0 -0
  199. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/tokenizer.rs +0 -0
  200. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/wgpu_kernel.wgsl +0 -0
  201. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/license.rs +0 -0
  202. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/maintenance.rs +0 -0
  203. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/metadata.rs +0 -0
  204. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/mod.rs +0 -0
  205. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/nessie.rs +0 -0
  206. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/planner.rs +0 -0
  207. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/puffin.rs +0 -0
  208. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/query.rs +0 -0
  209. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/reader.rs +0 -0
  210. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/mod.rs +0 -0
  211. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/optimizer.rs +0 -0
  212. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/pgvector_rewriter.rs +0 -0
  213. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/physical_plan/index_join.rs +0 -0
  214. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/physical_plan.rs +0 -0
  215. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/session.rs +0 -0
  216. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/vector_literal.rs +0 -0
  217. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/vector_operators.rs +0 -0
  218. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/vector_udf.rs +0 -0
  219. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/storage.rs +0 -0
  220. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/builder.rs +0 -0
  221. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/fluent.rs +0 -0
  222. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/wal.rs +0 -0
  223. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/enterprise/continuous_indexing.rs +0 -0
  224. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/enterprise/license.rs +0 -0
  225. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/enterprise/mod.rs +0 -0
  226. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/index.rs.old +0 -0
  227. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/lib.rs +0 -0
  228. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/python_distance.rs +0 -0
  229. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/telemetry/metrics.rs +0 -0
  230. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/telemetry/mod.rs +0 -0
  231. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/task.md +0 -0
  232. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/all_types_index_test.rs +0 -0
  233. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/bin/generate_iceberg_manifests.rs +0 -0
  234. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/bin/verify_iceberg_read_check.rs +0 -0
  235. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/check_mmh3.py +0 -0
  236. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/data/download_nyc_taxi.sh +0 -0
  237. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/data/generate_embeddings.py +0 -0
  238. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/data/generate_wikipedia.py +0 -0
  239. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/data/start_nessie.sh +0 -0
  240. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/datafusion_rust_test.rs +0 -0
  241. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/debug_murmur3.rs +0 -0
  242. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/fuzz_murmur3.rs +0 -0
  243. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/integration_test_hnsw_ivf_native.rs +0 -0
  244. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/performance/README.md +0 -0
  245. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/prototype_merge.py +0 -0
  246. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/schema_evolution_test.rs +0 -0
  247. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_catalog_commit.rs +0 -0
  248. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_compliance.rs +0 -0
  249. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_delete_correctness.rs +0 -0
  250. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_python_delete.sh +0 -0
  251. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest.sh +0 -0
  252. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest_create.sh +0 -0
  253. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest_delete.sh +0 -0
  254. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest_remove_index.sh +0 -0
  255. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest_update.sh +0 -0
  256. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_metadata_creation.rs +0 -0
  257. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_mor_reads.rs +0 -0
  258. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_mor_writes.rs +0 -0
  259. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_partition_transforms.rs +0 -0
  260. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_partitioned_writes.rs +0 -0
  261. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_puffin_index.sh +0 -0
  262. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_rest_updates.sh +0 -0
  263. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_schema_compat.rs +0 -0
  264. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/.DS_Store +0 -0
  265. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/glue_catalog.properties +0 -0
  266. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/hyperstreamdb.properties +0 -0
  267. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/iceberg.properties +0 -0
  268. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/memory.properties +0 -0
  269. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/postgres.properties +0 -0
  270. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/config.properties +0 -0
  271. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/entrypoint.sh +0 -0
  272. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/jvm.config +0 -0
  273. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/node.properties +0 -0
  274. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config.zip +0 -0
  275. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/pom.xml +0 -0
  276. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBColumnHandle.java +0 -0
  277. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBConnectorFactory.java +0 -0
  278. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBMetadata.java +0 -0
  279. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPageSource.java +0 -0
  280. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPageSourceProvider.java +0 -0
  281. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPlugin.java +0 -0
  282. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBSplit.java +0 -0
  283. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBSplitManager.java +0 -0
  284. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBTableHandle.java +0 -0
  285. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/update_schema_patch.py +0 -0
  286. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/update_schema_patch2.py +0 -0
  287. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/verify_docstrings.py +0 -0
  288. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/verify_fluent_api.py +0 -0
  289. {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/verify_unified_ingest.py +0 -0
@@ -3375,7 +3375,7 @@ dependencies = [
3375
3375
 
3376
3376
  [[package]]
3377
3377
  name = "hyperstreamdb"
3378
- version = "0.2.4"
3378
+ version = "0.2.5"
3379
3379
  dependencies = [
3380
3380
  "ahash 0.8.12",
3381
3381
  "anyhow",
@@ -7141,6 +7141,16 @@ dependencies = [
7141
7141
  "web-time",
7142
7142
  ]
7143
7143
 
7144
+ [[package]]
7145
+ name = "tracing-serde"
7146
+ version = "0.2.0"
7147
+ source = "registry+https://github.com/rust-lang/crates.io-index"
7148
+ checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1"
7149
+ dependencies = [
7150
+ "serde",
7151
+ "tracing-core",
7152
+ ]
7153
+
7144
7154
  [[package]]
7145
7155
  name = "tracing-subscriber"
7146
7156
  version = "0.3.23"
@@ -7151,12 +7161,15 @@ dependencies = [
7151
7161
  "nu-ansi-term",
7152
7162
  "once_cell",
7153
7163
  "regex-automata",
7164
+ "serde",
7165
+ "serde_json",
7154
7166
  "sharded-slab",
7155
7167
  "smallvec",
7156
7168
  "thread_local",
7157
7169
  "tracing",
7158
7170
  "tracing-core",
7159
7171
  "tracing-log",
7172
+ "tracing-serde",
7160
7173
  ]
7161
7174
 
7162
7175
  [[package]]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "hyperstreamdb"
3
- version = "0.2.4"
3
+ version = "0.2.5"
4
4
  edition = "2021"
5
5
  license = "MIT AND Apache-2.0"
6
6
  description = "HyperStreamDB - Serverless Index-Streaming Database with Overlay Indexing and Vector Search"
@@ -102,7 +102,7 @@ anyhow = "1.0"
102
102
 
103
103
  # logging
104
104
  tracing = "0.1"
105
- tracing-subscriber = { version = "0.3", features = ["env-filter"] }
105
+ tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
106
106
  url = "2.5"
107
107
  uuid = { version = "1.10", features = ["v4", "fast-rng", "macro-diagnostics"] }
108
108
  chrono = "0.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperstreamdb
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Programming Language :: Rust
@@ -510,7 +510,7 @@ mod tests {
510
510
  // - Manifests v1, v2, v3
511
511
  // - The 3 original data files (since they are ONLY in v1-v3)
512
512
  let deleted = table.vacuum_async(1).await?;
513
- println!("Vacuum deleted {} files", deleted);
513
+ tracing::info!("Vacuum deleted {} files", deleted);
514
514
 
515
515
  // We expect at least 3 data files + 3 manifest files = 6 files deleted
516
516
  assert!(deleted >= 6);
@@ -108,7 +108,7 @@ pub extern "system" fn Java_com_hyperstreamdb_trino_HyperStreamDBPageSource_open
108
108
  Box::into_raw(Box::new(session)) as jlong
109
109
  },
110
110
  Err(e) => {
111
- eprintln!("FFI Error opening session: {}", e);
111
+ tracing::error!("FFI Error opening session: {}", e);
112
112
  0
113
113
  }
114
114
  }
@@ -196,7 +196,7 @@ pub extern "system" fn Java_com_hyperstreamdb_trino_HyperStreamDBSplitManager_ge
196
196
  }
197
197
  },
198
198
  Err(e) => {
199
- eprintln!("FFI Error creating table: {}", e);
199
+ tracing::error!("FFI Error creating table: {}", e);
200
200
  "[]".to_string()
201
201
  }
202
202
  };
@@ -234,7 +234,7 @@ pub extern "system" fn Java_com_hyperstreamdb_spark_HyperStreamScanBuilder_listD
234
234
  }
235
235
  },
236
236
  Err(e) => {
237
- eprintln!("FFI Error creating table: {}", e);
237
+ tracing::error!("FFI Error creating table: {}", e);
238
238
  "[]".to_string()
239
239
  }
240
240
  };
@@ -267,7 +267,7 @@ fn open_session_helper(mut env: JNIEnv, path: JString) -> jlong {
267
267
  match HyperStreamSession::new(&path_str) {
268
268
  Ok(session) => Box::into_raw(Box::new(session)) as jlong,
269
269
  Err(e) => {
270
- eprintln!("FFI Error opening session: {}", e);
270
+ tracing::error!("FFI Error opening session: {}", e);
271
271
  0
272
272
  }
273
273
  }
@@ -1240,19 +1240,24 @@ impl IcebergWriter {
1240
1240
  s if s.starts_with("truncate[") => r#"["null", "string"]"#,
1241
1241
  "identity" => {
1242
1242
  let source_id = field.source_ids.first().copied().or(field.source_id);
1243
- if let Some(id) = source_id {
1244
- if let Some(source_field) = schema.fields.iter().find(|f| f.id == id) {
1245
- match source_field.type_str.as_str() {
1246
- "Int32" | "int" => r#"["null", "int"]"#,
1247
- "Int64" | "long" => r#"["null", "long"]"#,
1248
- "Float32" | "float" => r#"["null", "float"]"#,
1249
- "Float64" | "double" => r#"["null", "double"]"#,
1250
- "Boolean" | "bool" | "boolean" => r#"["null", "boolean"]"#,
1251
- "string" | "utf8" | "utf-8" | "String" | "Utf8" => r#"["null", "string"]"#,
1252
- _ => r#"["null", "string"]"#,
1253
- }
1243
+ // Robustness: Prioritize Name-based resolution, fallback to ID (Name-First strategy)
1244
+ let resolved_field = schema.fields.iter().find(|sf| sf.name == field.name).cloned().or_else(|| {
1245
+ if let Some(id) = source_id {
1246
+ schema.fields.iter().find(|f| f.id == id).cloned()
1254
1247
  } else {
1255
- r#"["null", "string"]"#
1248
+ None
1249
+ }
1250
+ });
1251
+
1252
+ if let Some(f) = resolved_field {
1253
+ match f.type_str.as_str() {
1254
+ "Int32" | "int" => r#"["null", "int"]"#,
1255
+ "Int64" | "long" => r#"["null", "long"]"#,
1256
+ "Float32" | "float" => r#"["null", "float"]"#,
1257
+ "Float64" | "double" => r#"["null", "double"]"#,
1258
+ "Boolean" | "bool" | "boolean" => r#"["null", "boolean"]"#,
1259
+ "string" | "utf8" | "utf-8" | "String" | "Utf8" => r#"["null", "string"]"#,
1260
+ _ => r#"["null", "string"]"#,
1256
1261
  }
1257
1262
  } else {
1258
1263
  r#"["null", "string"]"#
@@ -1628,15 +1628,19 @@ impl PartitionSpec {
1628
1628
  for i in 0..batch.num_rows() {
1629
1629
  let mut key = Vec::with_capacity(self.fields.len());
1630
1630
  for field in &self.fields {
1631
- // Determine source columns
1631
+ // Determine source columns
1632
1632
  let source_ids = field.get_source_ids();
1633
1633
  let mut cols = Vec::new();
1634
1634
 
1635
- // Try finding by name first
1635
+ // Prioritize finding by Name (most intuitive for users)
1636
+ let mut found = false;
1636
1637
  if let Ok(idx) = batch.schema().index_of(&field.name) {
1637
1638
  cols.push(batch.column(idx));
1638
- } else {
1639
- // Search by Iceberg IDs
1639
+ found = true;
1640
+ }
1641
+
1642
+ // Fallback to Iceberg IDs only if name lookup failed
1643
+ if !found {
1640
1644
  for id in &source_ids {
1641
1645
  let idx = batch.schema().fields().iter().position(|f| {
1642
1646
  f.metadata().get("iceberg.id")
@@ -126,7 +126,7 @@ impl MergePlanner {
126
126
  ) -> Result<Vec<(Option<SegmentId>, SegmentId)>>
127
127
  where F: Fn(&SegmentId, &str) -> Result<Option<RoaringBitmap>>
128
128
  {
129
- println!("Executing Merge on {} candidates", candidate_segments.len());
129
+ tracing::info!("Executing Merge on {} candidates", candidate_segments.len());
130
130
 
131
131
  let mut updates_by_segment: HashMap<SegmentId, Vec<usize>> = HashMap::new();
132
132
  let mut unmatched_rows: Vec<usize> = Vec::new();
@@ -198,7 +198,7 @@ impl MergePlanner {
198
198
 
199
199
  // 2. Process Updates (Copy-on-Write)
200
200
  for (seg_id, source_row_indices) in updates_by_segment {
201
- println!("Updating Segment {} with {} rows", seg_id, source_row_indices.len());
201
+ tracing::info!("Updating Segment {} with {} rows", seg_id, source_row_indices.len());
202
202
 
203
203
  // A. Read Original Segment
204
204
  // Use empty base path for reader configuration because store is already rooted at base_path
@@ -276,7 +276,7 @@ impl MergePlanner {
276
276
 
277
277
  // 3. Process Inserts (Unmatched)
278
278
  if !unmatched_rows.is_empty() {
279
- println!("Inserting {} new rows", unmatched_rows.len());
279
+ tracing::info!("Inserting {} new rows", unmatched_rows.len());
280
280
  let indices_arr = arrow::array::UInt32Array::from(unmatched_rows.iter().map(|&x| x as u32).collect::<Vec<u32>>());
281
281
  let inserts_batch = arrow::compute::take_record_batch(source_batch, &indices_arr)?;
282
282
 
@@ -124,9 +124,7 @@ impl HybridSegmentWriter {
124
124
  }
125
125
  }
126
126
 
127
- if !index_files.is_empty() {
128
- eprintln!("DEBUG: to_manifest_entry: segment_id={}, generated index_files={:?}", self.config.segment_id, index_files);
129
- }
127
+
130
128
 
131
129
  ManifestEntry {
132
130
  file_path: self.config.parquet_path.clone().unwrap_or(parquet_file),
@@ -346,7 +344,7 @@ impl HybridSegmentWriter {
346
344
  files.push(path.to_str().unwrap().to_string());
347
345
  }
348
346
 
349
- println!("Written data to {} ({} rows)", path.display(), batch.num_rows());
347
+ tracing::info!("Written data to {} ({} rows)", path.display(), batch.num_rows());
350
348
  self.record_count.fetch_add(batch.num_rows(), std::sync::atomic::Ordering::Relaxed);
351
349
 
352
350
  Ok(())
@@ -409,7 +407,7 @@ impl HybridSegmentWriter {
409
407
  /// Build indexes for a batch (can be called asynchronously after write_batch).
410
408
  /// This is the expensive operation that should run in background.
411
409
  pub fn build_indexes(&self, batch: &RecordBatch) -> Result<()> {
412
- println!("Building indexes for batch of {} rows", batch.num_rows());
410
+ tracing::info!("Building indexes for batch of {} rows", batch.num_rows());
413
411
  let schema = batch.schema();
414
412
  let _fields = schema.fields();
415
413
 
@@ -439,20 +437,20 @@ impl HybridSegmentWriter {
439
437
  pub fn index_column(&self, col_name: &str, col_array: &std::sync::Arc<dyn Array>) -> Result<()> {
440
438
  // Apply per-column device override if specified
441
439
  if let Some(device_str) = self.config.column_devices.get(col_name) {
442
- println!("Applying device override for column {}: {}", col_name, device_str);
440
+ tracing::info!("Applying device override for column {}: {}", col_name, device_str);
443
441
  if let Ok(ctx) = ComputeContext::from_device_str(device_str) {
444
- println!("Successfully set global GPU context to {:?} for column {}", ctx.backend, col_name);
442
+ tracing::info!("Successfully set global GPU context to {:?} for column {}", ctx.backend, col_name);
445
443
  set_global_gpu_context(Some(ctx));
446
444
  } else {
447
- println!("Failed to parse device string: {}", device_str);
445
+ tracing::warn!("Failed to parse device string: {}", device_str);
448
446
  }
449
447
  } else if let Some(ref device_str) = self.config.default_device {
450
- println!("Applying default device for column {}: {}", col_name, device_str);
448
+ tracing::info!("Applying default device for column {}: {}", col_name, device_str);
451
449
  if let Ok(ctx) = ComputeContext::from_device_str(device_str) {
452
- println!("Successfully set global GPU context to {:?} for column {}", ctx.backend, col_name);
450
+ tracing::info!("Successfully set global GPU context to {:?} for column {}", ctx.backend, col_name);
453
451
  set_global_gpu_context(Some(ctx));
454
452
  } else {
455
- println!("Failed to parse default device string: {}", device_str);
453
+ tracing::warn!("Failed to parse default device string: {}", device_str);
456
454
  }
457
455
  }
458
456
 
@@ -487,7 +485,7 @@ impl HybridSegmentWriter {
487
485
  match col_array.data_type() {
488
486
  // Scalar Indexing (RoaringBitmap for Int32)
489
487
  arrow::datatypes::DataType::Int32 => {
490
- println!("Indexing Int32 column: {}", col_name);
488
+ tracing::info!("Indexing Int32 column: {}", col_name);
491
489
  let _array = col_array.as_any().downcast_ref::<arrow::array::Int32Array>().unwrap();
492
490
 
493
491
  // Scalar index (.idx) is removed for Int32 as we use more precise Inverted Index
@@ -568,7 +566,7 @@ impl HybridSegmentWriter {
568
566
 
569
567
  arrow::datatypes::DataType::List(inner) | arrow::datatypes::DataType::FixedSizeList(inner, _) => {
570
568
  if *inner.data_type() == arrow::datatypes::DataType::Float32 {
571
- println!("Indexing Vector column: {} (type={:?})", col_name, col_array.data_type());
569
+ tracing::info!("Indexing Vector column: {} (type={:?})", col_name, col_array.data_type());
572
570
 
573
571
  let vectors: Vec<Vec<f32>> = match col_array.data_type() {
574
572
  arrow::datatypes::DataType::FixedSizeList(_, _) => {
@@ -604,9 +602,9 @@ impl HybridSegmentWriter {
604
602
  if self.config.index_all || in_config {
605
603
  let use_pq = vectors.len() > 5_000;
606
604
  if use_pq {
607
- println!("Auto-enabling PQ for segment ({} vectors)", vectors.len());
605
+ tracing::info!("Auto-enabling PQ for segment ({} vectors)", vectors.len());
608
606
  }
609
- println!("Building HNSW-IVF index (blocking): {} vectors, {} dims, use_pq={}", vectors.len(), _dim, use_pq);
607
+ tracing::info!("Building HNSW-IVF index (blocking): {} vectors, {} dims, use_pq={}", vectors.len(), _dim, use_pq);
610
608
  let hnsw_ivf_index = HnswIvfIndex::build(vectors, crate::core::index::VectorMetric::L2, None, None, use_pq)
611
609
  .map_err(|e| anyhow::anyhow!("HNSW-IVF build failed: {}", e))?;
612
610
 
@@ -619,12 +617,12 @@ impl HybridSegmentWriter {
619
617
  files.extend(saved_files);
620
618
  }
621
619
  } else {
622
- println!("Skipping vector indexing for column {} (delayed/background mode)", col_name);
620
+ tracing::info!("Skipping vector indexing for column {} (delayed/background mode)", col_name);
623
621
  }
624
622
  }
625
623
  },
626
624
  arrow::datatypes::DataType::Int64 => {
627
- println!("Indexing Int64 column: {}", col_name);
625
+ tracing::info!("Indexing Int64 column: {}", col_name);
628
626
  let _array = col_array.as_any().downcast_ref::<arrow::array::Int64Array>().unwrap();
629
627
 
630
628
  // No mock .idx for Int64
@@ -700,7 +698,7 @@ impl HybridSegmentWriter {
700
698
  },
701
699
 
702
700
  arrow::datatypes::DataType::Float64 => {
703
- println!("Indexing Float64 column: {}", col_name);
701
+ tracing::info!("Indexing Float64 column: {}", col_name);
704
702
  let _array = col_array.as_any().downcast_ref::<arrow::array::Float64Array>().unwrap();
705
703
 
706
704
  // No mock .idx for Float64
@@ -777,7 +775,7 @@ impl HybridSegmentWriter {
777
775
  },
778
776
 
779
777
  arrow::datatypes::DataType::Float32 => {
780
- println!("Indexing Float32 column: {}", col_name);
778
+ tracing::info!("Indexing Float32 column: {}", col_name);
781
779
  let array = col_array.as_any().downcast_ref::<arrow::array::Float32Array>().unwrap();
782
780
 
783
781
  // No mock .idx for Float32
@@ -834,7 +832,7 @@ impl HybridSegmentWriter {
834
832
 
835
833
  // String/Utf8 Inverted Index - for category/tag filtering
836
834
  arrow::datatypes::DataType::Utf8 | arrow::datatypes::DataType::LargeUtf8 => {
837
- println!("Indexing String column: {}", col_name);
835
+ tracing::info!("Indexing String column: {}", col_name);
838
836
 
839
837
  // Unified handling: cast to Utf8 to reuse existing logic
840
838
  let casted_array = arrow::compute::cast(col_array, &arrow::datatypes::DataType::Utf8)
@@ -857,7 +855,7 @@ impl HybridSegmentWriter {
857
855
  }
858
856
  }
859
857
 
860
- println!(" Found {} unique values", inverted_map.len());
858
+ tracing::info!(" Found {} unique values", inverted_map.len());
861
859
 
862
860
  // Build Arrow Arrays for Parquet
863
861
  let mut key_builder = arrow::array::StringBuilder::new();
@@ -901,13 +899,13 @@ impl HybridSegmentWriter {
901
899
  files.push(inv_path.to_str().unwrap().to_string());
902
900
  }
903
901
 
904
- println!("String Inverted Index written to {}", inv_path.to_str().unwrap());
902
+ tracing::info!("String Inverted Index written to {}", inv_path.to_str().unwrap());
905
903
  },
906
904
 
907
905
  // Date32 Inverted Index - for date equality/range filtering
908
906
  // Date32 = days since Unix epoch (1970-01-01)
909
907
  arrow::datatypes::DataType::Date32 => {
910
- println!("Indexing Date32 column: {}", col_name);
908
+ tracing::info!("Indexing Date32 column: {}", col_name);
911
909
  let array = col_array.as_any().downcast_ref::<arrow::array::Date32Array>().unwrap();
912
910
 
913
911
  // Build inverted index: Date -> RowIDs
@@ -918,7 +916,7 @@ impl HybridSegmentWriter {
918
916
  }
919
917
  }
920
918
 
921
- println!(" Found {} unique dates", inverted_map.len());
919
+ tracing::info!(" Found {} unique dates", inverted_map.len());
922
920
 
923
921
  // Build Arrow Arrays for Parquet
924
922
  let mut key_builder = arrow::array::Date32Builder::new();
@@ -960,13 +958,13 @@ impl HybridSegmentWriter {
960
958
  files.push(inv_path.to_str().unwrap().to_string());
961
959
  }
962
960
 
963
- println!("Date32 Inverted Index written to {}", inv_path.to_str().unwrap());
961
+ tracing::info!("Date32 Inverted Index written to {}", inv_path.to_str().unwrap());
964
962
  },
965
963
 
966
964
  // Timestamp Inverted Index - truncate to day for practical indexing
967
965
  // High-cardinality timestamps are truncated to day granularity
968
966
  arrow::datatypes::DataType::Timestamp(_, _) => {
969
- println!("Indexing Timestamp column: {} (truncated to day)", col_name);
967
+ tracing::info!("Indexing Timestamp column: {} (truncated to day)", col_name);
970
968
 
971
969
  // Truncate timestamps to day granularity for indexing
972
970
  // This makes the inverted index practical (365 keys/year vs millions)
@@ -995,7 +993,7 @@ impl HybridSegmentWriter {
995
993
  inverted_map.entry(day).or_default().push(row_i as u32);
996
994
  }
997
995
 
998
- println!(" Found {} unique days", inverted_map.len());
996
+ tracing::info!(" Found {} unique days", inverted_map.len());
999
997
 
1000
998
  // Build Arrow Arrays (store as Date32 for the index key)
1001
999
  let mut key_builder = arrow::array::Date32Builder::new();
@@ -1037,12 +1035,12 @@ impl HybridSegmentWriter {
1037
1035
  files.push(inv_path.to_str().unwrap().to_string());
1038
1036
  }
1039
1037
 
1040
- println!("Timestamp Inverted Index (day granularity) written to {}", inv_path.to_str().unwrap());
1038
+ tracing::info!("Timestamp Inverted Index (day granularity) written to {}", inv_path.to_str().unwrap());
1041
1039
  },
1042
1040
 
1043
1041
  // Keep default
1044
1042
  arrow::datatypes::DataType::Boolean => {
1045
- println!("Indexing Boolean column: {} (native boolean index)", col_name);
1043
+ tracing::info!("Indexing Boolean column: {} (native boolean index)", col_name);
1046
1044
  // Build inverted index: Boolean -> RowIDs (true/false as native booleans)
1047
1045
  let mut inverted_map: std::collections::HashMap<bool, Vec<u32>> = std::collections::HashMap::new();
1048
1046
 
@@ -1094,12 +1092,12 @@ impl HybridSegmentWriter {
1094
1092
  let mut files = self.generated_files.lock().unwrap();
1095
1093
  files.push(inv_path.to_str().unwrap().to_string());
1096
1094
  }
1097
- println!("Boolean Inverted Index written to {}", inv_path.to_str().unwrap());
1095
+ tracing::info!("Boolean Inverted Index written to {}", inv_path.to_str().unwrap());
1098
1096
  },
1099
1097
 
1100
1098
  // Time32 (s/ms) -> Int32 keys
1101
1099
  arrow::datatypes::DataType::Time32(unit) => {
1102
- println!("Indexing Time32 column: {}", col_name);
1100
+ tracing::info!("Indexing Time32 column: {}", col_name);
1103
1101
  let mut inverted_map: std::collections::HashMap<i32, Vec<u32>> = std::collections::HashMap::new();
1104
1102
 
1105
1103
  match unit {
@@ -1173,7 +1171,7 @@ impl HybridSegmentWriter {
1173
1171
 
1174
1172
  // Time64 (us/ns) -> Int64 keys
1175
1173
  arrow::datatypes::DataType::Time64(unit) => {
1176
- println!("Indexing Time64 column: {}", col_name);
1174
+ tracing::info!("Indexing Time64 column: {}", col_name);
1177
1175
  let mut inverted_map: std::collections::HashMap<i64, Vec<u32>> = std::collections::HashMap::new();
1178
1176
 
1179
1177
  match unit {
@@ -1247,7 +1245,7 @@ impl HybridSegmentWriter {
1247
1245
 
1248
1246
  // Binary / LargeBinary / FixedSizeBinary -> Key is Vec<u8>
1249
1247
  arrow::datatypes::DataType::Binary | arrow::datatypes::DataType::LargeBinary | arrow::datatypes::DataType::FixedSizeBinary(_) => {
1250
- println!("Indexing Binary column: {}", col_name);
1248
+ tracing::info!("Indexing Binary column: {}", col_name);
1251
1249
  // Cast to BinaryArray for uniform handling (if possible, else matching works)
1252
1250
  // Simple handling: Iterate as BinaryArray (works for large and regular if we cast, or just use generics.
1253
1251
  // arrow::compute::cast to Binary is easiest)
@@ -1291,7 +1289,7 @@ impl HybridSegmentWriter {
1291
1289
 
1292
1290
  // Decimal128
1293
1291
  arrow::datatypes::DataType::Decimal128(precision, scale) => {
1294
- println!("Indexing Decimal128 column: {}", col_name);
1292
+ tracing::info!("Indexing Decimal128 column: {}", col_name);
1295
1293
  let array = col_array.as_any().downcast_ref::<arrow::array::Decimal128Array>().unwrap();
1296
1294
 
1297
1295
  let mut inverted_map: std::collections::HashMap<i128, Vec<u32>> = std::collections::HashMap::new();
@@ -1331,7 +1329,7 @@ impl HybridSegmentWriter {
1331
1329
 
1332
1330
  // Dictionary Types (Recursive)
1333
1331
  arrow::datatypes::DataType::Dictionary(_, value_type) => {
1334
- println!("Indexing Dictionary column: {} (unpacking to {:?})", col_name, value_type.as_ref());
1332
+ tracing::info!("Indexing Dictionary column: {} (unpacking to {:?})", col_name, value_type.as_ref());
1335
1333
  // Cast to value type to unpack
1336
1334
  let casted = arrow::compute::cast(col_array, value_type)
1337
1335
  .map_err(|e| anyhow::anyhow!("Failed to unpack dictionary: {}", e))?;
@@ -1341,7 +1339,7 @@ impl HybridSegmentWriter {
1341
1339
 
1342
1340
  _ => {
1343
1341
  // Skip unsupported
1344
- eprintln!("Warning: Skipping indexing for unsupported type: {:?}", col_array.data_type());
1342
+ tracing::warn!("Skipping indexing for unsupported type: {:?}", col_array.data_type());
1345
1343
  }
1346
1344
  }
1347
1345
 
@@ -1384,7 +1382,7 @@ impl HybridSegmentWriter {
1384
1382
  let mut files = self.generated_files.lock().unwrap();
1385
1383
  files.push(inv_path.to_str().unwrap().to_string());
1386
1384
  }
1387
- println!("Inverted Index written to {}", inv_path.display());
1385
+ tracing::info!("Inverted Index written to {}", inv_path.display());
1388
1386
  Ok(())
1389
1387
  }
1390
1388
  }
@@ -1340,7 +1340,7 @@ impl Table {
1340
1340
 
1341
1341
  let candidates = planner.prune_entries(&all_entries, Some(&expr), None);
1342
1342
  let candidate_paths: std::collections::HashSet<String> = candidates.iter().map(|(e, _)| e.file_path.clone()).collect();
1343
- eprintln!("DEBUG: delete_async: filter='{}', potential candidates: {}", filter, candidates.len());
1343
+ tracing::debug!("delete_async: filter='{}', potential candidates: {}", filter, candidates.len());
1344
1344
 
1345
1345
  let mut all_updated_entries = Vec::new();
1346
1346
 
@@ -1351,7 +1351,7 @@ impl Table {
1351
1351
  continue;
1352
1352
  }
1353
1353
 
1354
- eprintln!("DEBUG: delete_async: processing segment {}", entry.file_path);
1354
+ tracing::debug!("delete_async: processing segment {}", entry.file_path);
1355
1355
  let file_path_str = entry.file_path.clone();
1356
1356
 
1357
1357
  // Fix path resolution: find correct physical subdirectory
@@ -1538,7 +1538,7 @@ impl Table {
1538
1538
  let deleted = reader.load_merged_deletes().await?;
1539
1539
  let alive_bm = bm.clone() - deleted.clone();
1540
1540
 
1541
- println!("DEBUG: PK Check for {}: Index bits: {}, Deleted bits: {}, Alive bits: {}",
1541
+ tracing::debug!("PK Check for {}: Index bits: {}, Deleted bits: {}, Alive bits: {}",
1542
1542
  f.column, bm.len(), deleted.len(), alive_bm.len());
1543
1543
 
1544
1544
  if let Some(current) = bitmap_opt {
@@ -2527,7 +2527,7 @@ mod tests {
2527
2527
  table.truncate_async().await?;
2528
2528
  let batches = table.read_async(None, None, None).await?;
2529
2529
  let total_rows: usize = batches.iter().map(|b| b.num_rows()).sum();
2530
- println!("After truncate, read {} records in {} batches", total_rows, batches.len());
2530
+ tracing::info!("After truncate, read {} records in {} batches", total_rows, batches.len());
2531
2531
  assert!(total_rows == 0, "Table should be empty after truncate, but found {} rows!", total_rows);
2532
2532
 
2533
2533
  // 4. Autocommit
@@ -442,7 +442,7 @@ impl Table {
442
442
  Ok(b_vec) => {
443
443
  all_batches.extend(b_vec);
444
444
  },
445
- Err(e) => eprintln!("Error reading batch {}: {}", i, e),
445
+ Err(e) => tracing::error!("Error reading batch {}: {}", i, e),
446
446
  }
447
447
  }
448
448
 
@@ -609,7 +609,7 @@ impl Table {
609
609
  }
610
610
  }
611
611
  Err(e) => {
612
- eprintln!("DEBUG: Failed to evaluate filter expression on batch: {}", e);
612
+ tracing::error!("Failed to evaluate filter expression on batch: {}", e);
613
613
  }
614
614
  }
615
615
  }
@@ -51,7 +51,7 @@ impl Table {
51
51
 
52
52
  // Commit Metadata Only Change
53
53
  manifest_manager.update_schema(manifest.schemas, manifest.current_schema_id, Some(new_id)).await?;
54
- println!("Schema Evolution: Added column '{}' (Schema ID: {})", name, new_schema_id);
54
+ tracing::info!("Schema Evolution: Added column '{}' (Schema ID: {})", name, new_schema_id);
55
55
 
56
56
  let new_arrow_schema = current_schema.to_arrow();
57
57
  let mut lock = self.schema.write().unwrap();
@@ -113,7 +113,7 @@ impl Table {
113
113
  };
114
114
 
115
115
  manifest_manager.commit(&[], &[], metadata).await?;
116
- println!("Partition Evolution: New spec ID {} with {} fields", new_spec_id, fields.len());
116
+ tracing::info!("Partition Evolution: New spec ID {} with {} fields", new_spec_id, fields.len());
117
117
 
118
118
  Ok(())
119
119
  }
@@ -139,7 +139,7 @@ impl Table {
139
139
  manifest.schemas.push(current_schema.clone());
140
140
  manifest.current_schema_id = new_schema_id;
141
141
  manifest_manager.update_schema(manifest.schemas, manifest.current_schema_id, Some(manifest.last_column_id)).await?;
142
- println!("Schema Evolution: Dropped column '{}' (Schema ID: {})", name, new_schema_id);
142
+ tracing::info!("Schema Evolution: Dropped column '{}' (Schema ID: {})", name, new_schema_id);
143
143
 
144
144
  let new_arrow_schema = current_schema.to_arrow();
145
145
  let mut lock = self.schema.write().unwrap();
@@ -167,7 +167,7 @@ impl Table {
167
167
  manifest.schemas.push(current_schema.clone());
168
168
  manifest.current_schema_id = new_schema_id;
169
169
  manifest_manager.update_schema(manifest.schemas, manifest.current_schema_id, Some(manifest.last_column_id)).await?;
170
- println!("Schema Evolution: Renamed '{}' -> '{}' (Schema ID: {})", old_name, new_name, new_schema_id);
170
+ tracing::info!("Schema Evolution: Renamed '{}' -> '{}' (Schema ID: {})", old_name, new_name, new_schema_id);
171
171
 
172
172
  let new_arrow_schema = current_schema.to_arrow();
173
173
  let mut lock = self.schema.write().unwrap();
@@ -200,7 +200,7 @@ impl Table {
200
200
  manifest.current_schema_id = new_schema_id;
201
201
 
202
202
  manifest_manager.update_schema(manifest.schemas, manifest.current_schema_id, Some(manifest.last_column_id)).await?;
203
- println!("Schema Evolution: Updated column type '{}' to '{}' (Schema ID: {})", name, new_type, new_schema_id);
203
+ tracing::info!("Schema Evolution: Updated column type '{}' to '{}' (Schema ID: {})", name, new_type, new_schema_id);
204
204
 
205
205
  let new_arrow_schema = current_schema.to_arrow();
206
206
  let mut lock = self.schema.write().unwrap();
@@ -249,7 +249,7 @@ impl Table {
249
249
  manifest.current_schema_id = new_schema_id;
250
250
 
251
251
  manifest_manager.update_schema(manifest.schemas, manifest.current_schema_id, Some(manifest.last_column_id)).await?;
252
- println!("Schema Evolution: Moved column '{}' to index {} (Schema ID: {})", name, new_index, new_schema_id);
252
+ tracing::info!("Schema Evolution: Moved column '{}' to index {} (Schema ID: {})", name, new_index, new_schema_id);
253
253
 
254
254
  let new_arrow_schema = current_schema.to_arrow();
255
255
  let mut lock = self.schema.write().unwrap();