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.
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/Cargo.lock +14 -1
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/Cargo.toml +2 -2
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/PKG-INFO +1 -1
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/compaction.rs +1 -1
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/ffi.rs +4 -4
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/iceberg.rs +17 -12
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/manifest.rs +8 -4
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/merge.rs +3 -3
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/segment.rs +35 -37
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/mod.rs +4 -4
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/read.rs +2 -2
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/schema.rs +6 -6
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/write.rs +13 -13
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/python_binding.rs +3 -2
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/python_gpu_context.rs +1 -1
- hyperstreamdb-0.2.5/src/telemetry/tracing.rs +84 -0
- hyperstreamdb-0.2.4/src/telemetry/tracing.rs +0 -46
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.gitattributes +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.gitignore +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.hypothesis/constants/32b327793848e7d8 +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.hypothesis/constants/67b0a8ccf18bf5d2 +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.hypothesis/constants/84828557b4ee7be4 +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/.instructions.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/CNAME +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/DORIS_OPTIMIZATION_PATTERNS.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/LICENSE-APACHE +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/LICENSE-MIT +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/README.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/RUN_COMPLIANCE_TESTS.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/STEERING.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/THIRDPARTY_NOTICES.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benches/bench_table.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benches/performance.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/BENCHMARK_REPORT.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/benchmark_charts.png +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/benchmark_results.csv +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/concurrent_queries_20260409_214245.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/concurrent_queries_20260409_214245.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_search_comparison_20260409_222607.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_search_comparison_20260409_222607.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_214355.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_214355.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_220418.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_220418.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_222053.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_222053.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_225907.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/filtered_vector_search_20260409_225907.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/full_scan_baseline_20260409_222303.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/full_scan_baseline_20260409_222303.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/high_selectivity_filter_20260409_222302.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/high_selectivity_filter_20260409_222302.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/ingestion_comparison_20260409_222516.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/ingestion_comparison_20260409_222516.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_214428.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_214428.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_220450.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_220450.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_222131.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_222131.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_225938.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/multi_filter_vector_20260409_225938.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_214501.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_214501.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_220524.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_220524.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_222204.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_222204.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_230010.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/post_vs_pre_filter_20260409_230010.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/query_comparison_20260409_222541.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/query_comparison_20260409_222541.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/range_query_20260409_222302.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/range_query_20260409_222302.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/search_filtered_high_selectivity_20260409_214144.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/search_filtered_high_selectivity_20260409_214144.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/search_unfiltered_20260409_214028.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/benchmark_results/search_unfiltered_20260409_214028.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/book.toml +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/broken_binaries_all.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/broken_bins.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/build-connectors.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/build.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/check_iceberg_compliance.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/compliance_output.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/critical_code_review.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/debug_log.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/demo_basics_run.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/demo_basics_v2.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docker-compose-minio-nessie.yml +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docker-compose.yml +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/BENCHMARKING.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/COMPREHENSIVE_GUIDE.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/CONCURRENCY.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/CONFIGURATION.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/GPU_SETUP_GUIDE.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/ICEBERG_V2_V3_API.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/INSTALLATION.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/PGVECTOR_SQL_GUIDE.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/PYTHON_VECTOR_API.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/VECTOR_CONFIGURATION.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/api_reference.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/architecture.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/catalog_usage.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/index.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/README.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/java_jni.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/python.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/spark.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/integrations/trino.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/requirements.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/_static/HyperStreamDB.png +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/api/python.rst +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/api/rust.rst +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/conf.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/index.rst +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/docs/source/roadmap.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/fix_nb.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/proptest-regressions/core/index/gpu.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/proptest-regressions/core/sql/vector_literal.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/proptest-regressions/core/sql/vector_udf.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/pyproject.toml +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python/hyperstreamdb/__init__.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python/hyperstreamdb/embeddings.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python_test_output.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python_test_output_v2.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/python_test_output_v3.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/rust_check_all_warnings.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/rust_test_output.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/rust_warnings.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/scratch/check_os_error.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/simd_test_results.txt +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/.bloop/bloop.settings.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/.bloop/spark-hyperstream-test.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/.bloop/spark-hyperstream.json +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/pom.xml +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/DefaultSource.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartition.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartitionReader.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartitionReaderFactory.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamScanBuilder.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamTable.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/gateway.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/hdb.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/iceberg_rest.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/probe_datafusion.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/setup_test_data.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/bin/verify_layered_indexing.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/cache.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/config.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/glue.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/hive.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/jdbc.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/mod.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/nessie.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/rest.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/catalog/unity.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/clustering.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/embeddings.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/iceberg/iceberg_delete.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/cosine_distance.cu +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/hamming_distance.cu +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/inner_product.cu +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/jaccard_distance.cu +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/kmeans_assignment.cu +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/l1_distance.cu +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/cuda/l2_distance.cu +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/distance.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/gpu.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_ivf.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/annhdf5.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/api.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/dist.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/flatten.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/hnsw.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/hnswio.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/libext.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/mod.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/prelude.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/hnsw_rs/test.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/ivf.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/memory.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mod.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/cosine_distance.metal +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/hamming_distance.metal +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/inner_product.metal +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/jaccard_distance.metal +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/kmeans_assignment.metal +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/l1_distance.metal +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/mps/l2_distance.metal +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/cosine_distance.cl +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/hamming_distance.cl +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/inner_product.cl +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/jaccard_distance.cl +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/kmeans_assignment.cl +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/l1_distance.cl +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/opencl/l2_distance.cl +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/pq.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/tokenizer.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/index/wgpu_kernel.wgsl +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/license.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/maintenance.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/metadata.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/mod.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/nessie.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/planner.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/puffin.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/query.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/reader.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/mod.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/optimizer.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/pgvector_rewriter.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/physical_plan/index_join.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/physical_plan.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/session.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/vector_literal.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/vector_operators.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/sql/vector_udf.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/storage.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/builder.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/table/fluent.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/core/wal.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/enterprise/continuous_indexing.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/enterprise/license.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/enterprise/mod.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/index.rs.old +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/lib.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/python_distance.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/telemetry/metrics.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/src/telemetry/mod.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/task.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/all_types_index_test.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/bin/generate_iceberg_manifests.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/bin/verify_iceberg_read_check.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/check_mmh3.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/data/download_nyc_taxi.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/data/generate_embeddings.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/data/generate_wikipedia.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/data/start_nessie.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/datafusion_rust_test.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/debug_murmur3.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/fuzz_murmur3.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/integration_test_hnsw_ivf_native.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/performance/README.md +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/prototype_merge.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/schema_evolution_test.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_catalog_commit.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_compliance.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_delete_correctness.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_python_delete.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest_create.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest_delete.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest_remove_index.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_iceberg_rest_update.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_metadata_creation.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_mor_reads.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_mor_writes.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_partition_transforms.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_partitioned_writes.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_puffin_index.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_rest_updates.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/tests/verify_schema_compat.rs +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/.DS_Store +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/glue_catalog.properties +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/hyperstreamdb.properties +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/iceberg.properties +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/memory.properties +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/catalog/postgres.properties +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/config.properties +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/entrypoint.sh +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/jvm.config +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config/node.properties +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-config.zip +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/pom.xml +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBColumnHandle.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBConnectorFactory.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBMetadata.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPageSource.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPageSourceProvider.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPlugin.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBSplit.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBSplitManager.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBTableHandle.java +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/update_schema_patch.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/update_schema_patch2.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/verify_docstrings.py +0 -0
- {hyperstreamdb-0.2.4 → hyperstreamdb-0.2.5}/verify_fluent_api.py +0 -0
- {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.
|
|
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.
|
|
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"
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1631
|
+
// Determine source columns
|
|
1632
1632
|
let source_ids = field.get_source_ids();
|
|
1633
1633
|
let mut cols = Vec::new();
|
|
1634
1634
|
|
|
1635
|
-
//
|
|
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
|
-
|
|
1639
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
605
|
+
tracing::info!("Auto-enabling PQ for segment ({} vectors)", vectors.len());
|
|
608
606
|
}
|
|
609
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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) =>
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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();
|