hyperstreamdb 0.5.4__tar.gz → 0.5.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 (436) hide show
  1. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/Cargo.lock +1 -1
  2. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/Cargo.toml +1 -1
  3. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/PKG-INFO +20 -4
  4. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/README.md +19 -3
  5. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/spark-hyperstream/pom.xml +107 -7
  6. hyperstreamdb-0.5.5/spark-hyperstream/src/main/resources/META-INF/services/org.apache.spark.sql.sources.DataSourceRegister +1 -0
  7. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/DefaultSource.scala +46 -0
  8. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/HyperStreamMergeBuilder.scala +17 -0
  9. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/HyperStreamPositionDeltaWrite.scala +27 -0
  10. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/HyperStreamPositionDeltaWriterFactory.scala +78 -0
  11. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/HyperStreamRowLevelOperation.scala +37 -0
  12. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/HyperStreamScanBuilder.scala +44 -0
  13. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/HyperStreamTable.scala +53 -0
  14. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/HyperStreamWriteBuilder.scala +16 -0
  15. hyperstreamdb-0.5.5/spark-hyperstream/src/main/scala/com/hyperstreamdb/spark/jni/HyperStreamJNIBridge.scala +41 -0
  16. hyperstreamdb-0.5.5/spark-hyperstream/src/main/spark-3/com/hyperstreamdb/spark/HyperStreamCatalog.scala +38 -0
  17. hyperstreamdb-0.5.5/spark-hyperstream/src/main/spark-3/com/hyperstreamdb/spark/procedures/AddIndexProcedure.scala +40 -0
  18. hyperstreamdb-0.5.5/spark-hyperstream/src/main/spark-3/com/hyperstreamdb/spark/procedures/BuildIndexProcedure.scala +36 -0
  19. hyperstreamdb-0.5.5/spark-hyperstream/src/main/spark-3/com/hyperstreamdb/spark/procedures/SetPrimaryKeyProcedure.scala +39 -0
  20. hyperstreamdb-0.5.5/spark-hyperstream/src/main/spark-4/com/hyperstreamdb/spark/HyperStreamCatalog.scala +49 -0
  21. hyperstreamdb-0.5.5/spark-hyperstream/src/main/spark-4/com/hyperstreamdb/spark/procedures/AddIndexProcedure.scala +33 -0
  22. hyperstreamdb-0.5.5/spark-hyperstream/src/main/spark-4/com/hyperstreamdb/spark/procedures/BuildIndexProcedure.scala +31 -0
  23. hyperstreamdb-0.5.5/spark-hyperstream/src/main/spark-4/com/hyperstreamdb/spark/procedures/SetPrimaryKeyProcedure.scala +31 -0
  24. hyperstreamdb-0.5.5/spark-hyperstream/src/test/scala/com/hyperstreamdb/spark/SparkMergeIntegrationTest.scala +101 -0
  25. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/ffi.rs +196 -1
  26. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBConnectorFactory.java +9 -3
  27. hyperstreamdb-0.5.5/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBJNIBridge.java +24 -0
  28. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPageSource.java +7 -1
  29. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPageSourceProvider.java +6 -1
  30. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBSplitManager.java +10 -0
  31. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/test/java/com/hyperstreamdb/trino/TrinoConnectorTest.java +2 -2
  32. hyperstreamdb-0.5.4/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/DefaultSource.java +0 -30
  33. hyperstreamdb-0.5.4/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartition.java +0 -21
  34. hyperstreamdb-0.5.4/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartitionReader.java +0 -102
  35. hyperstreamdb-0.5.4/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamPartitionReaderFactory.java +0 -35
  36. hyperstreamdb-0.5.4/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamScanBuilder.java +0 -98
  37. hyperstreamdb-0.5.4/spark-hyperstream/src/main/java/com/hyperstreamdb/spark/HyperStreamTable.java +0 -43
  38. hyperstreamdb-0.5.4/spark-hyperstream/src/test/java/com/hyperstreamdb/spark/SparkConnectorTest.java +0 -209
  39. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.cargo/audit.toml +0 -0
  40. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.env.example +0 -0
  41. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.gitattributes +0 -0
  42. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.gitignore +0 -0
  43. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.hypothesis/constants/32b327793848e7d8 +0 -0
  44. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.hypothesis/constants/67b0a8ccf18bf5d2 +0 -0
  45. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.hypothesis/constants/84828557b4ee7be4 +0 -0
  46. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.instructions.md +0 -0
  47. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.ipynb_checkpoints/Untitled-checkpoint.ipynb +0 -0
  48. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.qwen/settings.json +0 -0
  49. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/.qwen/settings.json.orig +0 -0
  50. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/ADMIN_CLI.md +0 -0
  51. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/CHANGELOG.md +0 -0
  52. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/CNAME +0 -0
  53. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/CONTRIBUTING.md +0 -0
  54. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/Dockerfile +0 -0
  55. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/ELASTICSEARCH_INTEGRATION_PLAN.md +0 -0
  56. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/GETTING_STARTED.md +0 -0
  57. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/HyperStreamDB.png +0 -0
  58. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/LICENSE-APACHE +0 -0
  59. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/LICENSE-MIT +0 -0
  60. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/ROADMAP.md +0 -0
  61. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/RUN_COMPLIANCE_TESTS.sh +0 -0
  62. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/SECURITY.md +0 -0
  63. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/STEERING.md +0 -0
  64. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/THIRDPARTY_NOTICES.md +0 -0
  65. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/Untitled.ipynb +0 -0
  66. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benches/bench_table.rs +0 -0
  67. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benches/performance.rs +0 -0
  68. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/BENCHMARK_REPORT.md +0 -0
  69. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/benchmark_charts.png +0 -0
  70. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/benchmark_results.csv +0 -0
  71. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/concurrent_queries_20260409_214245.json +0 -0
  72. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/concurrent_queries_20260409_214245.md +0 -0
  73. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_search_comparison_20260409_222607.json +0 -0
  74. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_search_comparison_20260409_222607.md +0 -0
  75. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_vector_search_20260409_214355.json +0 -0
  76. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_vector_search_20260409_214355.md +0 -0
  77. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_vector_search_20260409_220418.json +0 -0
  78. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_vector_search_20260409_220418.md +0 -0
  79. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_vector_search_20260409_222053.json +0 -0
  80. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_vector_search_20260409_222053.md +0 -0
  81. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_vector_search_20260409_225907.json +0 -0
  82. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/filtered_vector_search_20260409_225907.md +0 -0
  83. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/full_scan_baseline_20260409_222303.json +0 -0
  84. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/full_scan_baseline_20260409_222303.md +0 -0
  85. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/full_scan_baseline_20260620_173334.json +0 -0
  86. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/full_scan_baseline_20260620_173334.md +0 -0
  87. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/full_scan_baseline_20260620_192646.json +0 -0
  88. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/full_scan_baseline_20260620_192646.md +0 -0
  89. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/full_scan_baseline_20260623_173013.json +0 -0
  90. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/full_scan_baseline_20260623_173013.md +0 -0
  91. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/high_selectivity_filter_20260409_222302.json +0 -0
  92. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/high_selectivity_filter_20260409_222302.md +0 -0
  93. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/high_selectivity_filter_20260620_173332.json +0 -0
  94. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/high_selectivity_filter_20260620_173332.md +0 -0
  95. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/high_selectivity_filter_20260620_192645.json +0 -0
  96. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/high_selectivity_filter_20260620_192645.md +0 -0
  97. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/high_selectivity_filter_20260623_173011.json +0 -0
  98. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/high_selectivity_filter_20260623_173011.md +0 -0
  99. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/ingestion_comparison_20260409_222516.json +0 -0
  100. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/ingestion_comparison_20260409_222516.md +0 -0
  101. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_214428.json +0 -0
  102. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_214428.md +0 -0
  103. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_220450.json +0 -0
  104. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_220450.md +0 -0
  105. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_222131.json +0 -0
  106. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_222131.md +0 -0
  107. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_225938.json +0 -0
  108. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_225938.md +0 -0
  109. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_231713.json +0 -0
  110. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260409_231713.md +0 -0
  111. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260620_173300.json +0 -0
  112. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260620_173300.md +0 -0
  113. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260620_192611.json +0 -0
  114. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260620_192611.md +0 -0
  115. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260623_172935.json +0 -0
  116. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/multi_filter_vector_20260623_172935.md +0 -0
  117. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/point_lookup_20260620_173332.json +0 -0
  118. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/point_lookup_20260620_173332.md +0 -0
  119. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/point_lookup_20260620_192644.json +0 -0
  120. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/point_lookup_20260620_192644.md +0 -0
  121. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/point_lookup_20260623_173011.json +0 -0
  122. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/point_lookup_20260623_173011.md +0 -0
  123. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260409_214501.json +0 -0
  124. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260409_214501.md +0 -0
  125. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260409_220524.json +0 -0
  126. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260409_220524.md +0 -0
  127. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260409_222204.json +0 -0
  128. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260409_222204.md +0 -0
  129. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260409_230010.json +0 -0
  130. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260409_230010.md +0 -0
  131. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260620_173303.json +0 -0
  132. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260620_173303.md +0 -0
  133. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260620_192614.json +0 -0
  134. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260620_192614.md +0 -0
  135. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260623_172938.json +0 -0
  136. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/post_vs_pre_filter_20260623_172938.md +0 -0
  137. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/query_comparison_20260409_222541.json +0 -0
  138. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/query_comparison_20260409_222541.md +0 -0
  139. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/range_query_20260409_222302.json +0 -0
  140. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/range_query_20260409_222302.md +0 -0
  141. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/range_query_20260620_173333.json +0 -0
  142. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/range_query_20260620_173333.md +0 -0
  143. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/range_query_20260620_192646.json +0 -0
  144. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/range_query_20260620_192646.md +0 -0
  145. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/range_query_20260623_173012.json +0 -0
  146. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/range_query_20260623_173012.md +0 -0
  147. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/search_filtered_high_selectivity_20260409_214144.json +0 -0
  148. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/search_filtered_high_selectivity_20260409_214144.md +0 -0
  149. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/search_unfiltered_20260409_214028.json +0 -0
  150. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/benchmark_results/search_unfiltered_20260409_214028.md +0 -0
  151. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/book.toml +0 -0
  152. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/build-connectors.sh +0 -0
  153. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/build.rs +0 -0
  154. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/check_iceberg_compliance.py +0 -0
  155. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/clippy.toml +0 -0
  156. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/clippy_output.txt +0 -0
  157. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/deny.toml +0 -0
  158. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docker-compose-hive.yml +0 -0
  159. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docker-compose-minio-nessie.yml +0 -0
  160. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docker-compose.production.yml +0 -0
  161. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docker-compose.yml +0 -0
  162. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/.nojekyll +0 -0
  163. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/BENCHMARKING.md +0 -0
  164. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/COMPREHENSIVE_GUIDE.md +0 -0
  165. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/CONCURRENCY.md +0 -0
  166. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/CONFIGURATION.md +0 -0
  167. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/DORIS_OPTIMIZATION_PATTERNS.md +0 -0
  168. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/GPU_SETUP_GUIDE.md +0 -0
  169. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/ICEBERG_V2_V3_API.md +0 -0
  170. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/INSTALLATION.md +0 -0
  171. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/PGVECTOR_SQL_GUIDE.md +0 -0
  172. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/PYTHON_VECTOR_API.md +0 -0
  173. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/VECTOR_CONFIGURATION.md +0 -0
  174. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/api_reference.md +0 -0
  175. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/architecture.md +0 -0
  176. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/catalog_usage.md +0 -0
  177. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/index.md +0 -0
  178. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/integrations/README.md +0 -0
  179. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/integrations/java_jni.md +0 -0
  180. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/integrations/python.md +0 -0
  181. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/integrations/spark.md +0 -0
  182. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/integrations/trino.md +0 -0
  183. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/monitoring.md +0 -0
  184. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/requirements.txt +0 -0
  185. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/source/_static/HyperStreamDB.png +0 -0
  186. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/source/api/python.rst +0 -0
  187. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/source/api/rust.rst +0 -0
  188. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/source/conf.py +0 -0
  189. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/source/index.rst +0 -0
  190. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/source/roadmap.md +0 -0
  191. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/docs/task_status.md +0 -0
  192. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/fix_deprecated.py +0 -0
  193. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/hive-config/hive-site.xml +0 -0
  194. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/marketing_site/index.html +0 -0
  195. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/marketing_site/styles.css +0 -0
  196. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/proptest-regressions/core/index/gpu.txt +0 -0
  197. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/proptest-regressions/core/sql/vector_literal.txt +0 -0
  198. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/proptest-regressions/core/sql/vector_udf.txt +0 -0
  199. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/pyproject.toml +0 -0
  200. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/python/hyperstreamdb/__init__.py +0 -0
  201. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/python/hyperstreamdb/embeddings.py +0 -0
  202. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/recovered_plan.txt +0 -0
  203. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/rust-toolchain.toml +0 -0
  204. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/scripts/fix_nb.py +0 -0
  205. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/scripts/split_table.py +0 -0
  206. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/scripts/update_cache.py +0 -0
  207. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/scripts/update_reader.py +0 -0
  208. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/scripts/update_schema_patch.py +0 -0
  209. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/scripts/update_schema_patch2.py +0 -0
  210. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/spark-hyperstream/.bloop/bloop.settings.json +0 -0
  211. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/spark-hyperstream/.bloop/spark-hyperstream-test.json +0 -0
  212. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/spark-hyperstream/.bloop/spark-hyperstream.json +0 -0
  213. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/bin/gateway.rs +0 -0
  214. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/bin/hdb.rs +0 -0
  215. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/bin/hyperstreamdb-admin.rs +0 -0
  216. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/bin/iceberg_rest.rs +0 -0
  217. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/bin/probe_datafusion.rs +0 -0
  218. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/bin/setup_test_data.rs +0 -0
  219. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/bin/verify_layered_indexing.rs +0 -0
  220. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/cache.rs +0 -0
  221. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/catalog/config.rs +0 -0
  222. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/catalog/glue.rs +0 -0
  223. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/catalog/hive.rs +0 -0
  224. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/catalog/jdbc.rs +0 -0
  225. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/catalog/mod.rs +0 -0
  226. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/catalog/nessie.rs +0 -0
  227. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/catalog/rest.rs +0 -0
  228. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/catalog/unity.rs +0 -0
  229. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/clustering.rs +0 -0
  230. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/compaction.rs +0 -0
  231. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/embeddings.rs +0 -0
  232. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/error.rs +0 -0
  233. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/delete.rs +0 -0
  234. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/iceberg_delete.rs +0 -0
  235. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/manifest.rs +0 -0
  236. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/mod.rs +0 -0
  237. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/schema.rs +0 -0
  238. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/transform.rs +0 -0
  239. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/types.rs +0 -0
  240. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/value.rs +0 -0
  241. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/iceberg/writer.rs +0 -0
  242. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/build_inverted.rs +0 -0
  243. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/build_vector.rs +0 -0
  244. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/cuda/cosine_distance.cu +0 -0
  245. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/cuda/hamming_distance.cu +0 -0
  246. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/cuda/inner_product.cu +0 -0
  247. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/cuda/jaccard_distance.cu +0 -0
  248. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/cuda/kmeans_assignment.cu +0 -0
  249. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/cuda/l1_distance.cu +0 -0
  250. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/cuda/l2_distance.cu +0 -0
  251. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/distance.rs +0 -0
  252. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/gpu.rs +0 -0
  253. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_ivf.rs +0 -0
  254. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/annhdf5.rs +0 -0
  255. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/api.rs +0 -0
  256. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/dist.rs +0 -0
  257. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/flatten.rs +0 -0
  258. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/hnsw.rs +0 -0
  259. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/hnswio.rs +0 -0
  260. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/libext.rs +0 -0
  261. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/mod.rs +0 -0
  262. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/prelude.rs +0 -0
  263. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/hnsw_rs/test.rs +0 -0
  264. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/ivf.rs +0 -0
  265. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/memory.rs +0 -0
  266. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/mod.rs +0 -0
  267. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/mps/cosine_distance.metal +0 -0
  268. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/mps/hamming_distance.metal +0 -0
  269. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/mps/inner_product.metal +0 -0
  270. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/mps/jaccard_distance.metal +0 -0
  271. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/mps/kmeans_assignment.metal +0 -0
  272. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/mps/l1_distance.metal +0 -0
  273. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/mps/l2_distance.metal +0 -0
  274. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/opencl/cosine_distance.cl +0 -0
  275. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/opencl/hamming_distance.cl +0 -0
  276. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/opencl/inner_product.cl +0 -0
  277. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/opencl/jaccard_distance.cl +0 -0
  278. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/opencl/kmeans_assignment.cl +0 -0
  279. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/opencl/l1_distance.cl +0 -0
  280. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/opencl/l2_distance.cl +0 -0
  281. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/pq.rs +0 -0
  282. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/tokenizer.rs +0 -0
  283. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/turboquant.rs +0 -0
  284. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/index/wgpu_kernel.wgsl +0 -0
  285. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/license.rs +0 -0
  286. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/lock.rs +0 -0
  287. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/maintenance.rs +0 -0
  288. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/manifest/manager/commit.rs +0 -0
  289. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/manifest/manager/load.rs +0 -0
  290. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/manifest/manager/partition.rs +0 -0
  291. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/manifest/manager/schema.rs +0 -0
  292. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/manifest/manager.rs +0 -0
  293. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/manifest/mod.rs +0 -0
  294. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/manifest/types.rs +0 -0
  295. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/merge.rs +0 -0
  296. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/metadata.rs +0 -0
  297. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/mod.rs +0 -0
  298. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/nessie.rs +0 -0
  299. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/planner/filter.rs +0 -0
  300. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/planner/pruning.rs +0 -0
  301. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/planner/vector_search.rs +0 -0
  302. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/planner.rs +0 -0
  303. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/puffin.rs +0 -0
  304. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/query.rs +0 -0
  305. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/reader/delete.rs +0 -0
  306. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/reader/filter.rs +0 -0
  307. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/reader/mod.rs +0 -0
  308. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/reader/scan.rs +0 -0
  309. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/search/mod.rs +0 -0
  310. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/search/rrf.rs +0 -0
  311. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/segment.rs +0 -0
  312. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/literal/binary.rs +0 -0
  313. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/literal/dense.rs +0 -0
  314. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/literal/mod.rs +0 -0
  315. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/literal/sparse.rs +0 -0
  316. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/mod.rs +0 -0
  317. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/optimizer/config.rs +0 -0
  318. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/optimizer/index_join.rs +0 -0
  319. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/optimizer/vector_search/mod.rs +0 -0
  320. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/optimizer/vector_search/plan_detection.rs +0 -0
  321. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/optimizer/vector_search/plan_rewriter.rs +0 -0
  322. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/optimizer/vector_search/sort_expr_parser.rs +0 -0
  323. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/optimizer.rs +0 -0
  324. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/pgvector_rewriter.rs +0 -0
  325. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/physical_plan/index_join.rs +0 -0
  326. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/physical_plan/vector_merge.rs +0 -0
  327. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/physical_plan/vector_scan.rs +0 -0
  328. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/physical_plan.rs +0 -0
  329. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/session.rs +0 -0
  330. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/udf/aggregate.rs +0 -0
  331. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/udf/distance.rs +0 -0
  332. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/udf/mod.rs +0 -0
  333. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/udf/sparse.rs +0 -0
  334. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/udf/transform.rs +0 -0
  335. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/vector_literal.rs +0 -0
  336. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/vector_operators.rs +0 -0
  337. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/vector_udf/aggregate.rs +0 -0
  338. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/vector_udf/distance.rs +0 -0
  339. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/vector_udf/mod.rs +0 -0
  340. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/vector_udf/sparse.rs +0 -0
  341. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/vector_udf/transform.rs +0 -0
  342. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/sql/vector_udf.rs +0 -0
  343. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/storage.rs +0 -0
  344. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/builder.rs +0 -0
  345. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/fluent.rs +0 -0
  346. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/index_config.rs +0 -0
  347. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/mod.rs +0 -0
  348. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/primary_key.rs +0 -0
  349. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/read.rs +0 -0
  350. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/schema.rs +0 -0
  351. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/state.rs +0 -0
  352. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/stats.rs +0 -0
  353. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/table/write.rs +0 -0
  354. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/telemetry.rs +0 -0
  355. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/core/wal.rs +0 -0
  356. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/enterprise/continuous_indexing.rs +0 -0
  357. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/enterprise/mod.rs +0 -0
  358. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/index.rs.old +0 -0
  359. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/lib.rs +0 -0
  360. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/catalog/glue.rs +0 -0
  361. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/catalog/hive.rs +0 -0
  362. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/catalog/jdbc.rs +0 -0
  363. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/catalog/mod.rs +0 -0
  364. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/catalog/nessie.rs +0 -0
  365. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/catalog/rest.rs +0 -0
  366. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/catalog/unity.rs +0 -0
  367. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/helpers.rs +0 -0
  368. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/manifest.rs +0 -0
  369. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/mod.rs +0 -0
  370. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/schema.rs +0 -0
  371. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/session.rs +0 -0
  372. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/stats.rs +0 -0
  373. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python/table.rs +0 -0
  374. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python_binding.rs +0 -0
  375. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python_distance.rs +0 -0
  376. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/python_gpu_context.rs +0 -0
  377. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/telemetry/metrics.rs +0 -0
  378. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/telemetry/mod.rs +0 -0
  379. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/src/telemetry/tracing.rs +0 -0
  380. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/all_types_index_test.rs +0 -0
  381. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/bin/generate_iceberg_manifests.rs +0 -0
  382. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/bin/verify_iceberg_read_check.rs +0 -0
  383. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/check_mmh3.py +0 -0
  384. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/data/download_nyc_taxi.sh +0 -0
  385. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/data/generate_embeddings.py +0 -0
  386. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/data/generate_wikipedia.py +0 -0
  387. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/data/start_nessie.sh +0 -0
  388. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/datafusion_rust_test.rs +0 -0
  389. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/debug_murmur3.rs +0 -0
  390. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/fuzz_murmur3.rs +0 -0
  391. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/gpu_test_helpers.rs +0 -0
  392. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/integration_test_hnsw_ivf_native.rs +0 -0
  393. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/performance/README.md +0 -0
  394. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/prototype_merge.py +0 -0
  395. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/python/verify_docstrings.py +0 -0
  396. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/python/verify_fluent_api.py +0 -0
  397. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/python/verify_unified_ingest.py +0 -0
  398. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/schema_evolution_test.rs +0 -0
  399. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/stability.rs +0 -0
  400. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_admin_cli.sh +0 -0
  401. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_all_algos.py +0 -0
  402. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_catalog_commit.rs +0 -0
  403. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_compliance.rs +0 -0
  404. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_delete_correctness.rs +0 -0
  405. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_iceberg_python_delete.sh +0 -0
  406. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_iceberg_rest.sh +0 -0
  407. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_iceberg_rest_create.sh +0 -0
  408. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_iceberg_rest_delete.sh +0 -0
  409. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_iceberg_rest_remove_index.sh +0 -0
  410. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_iceberg_rest_update.sh +0 -0
  411. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_metadata_creation.rs +0 -0
  412. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_mor_reads.rs +0 -0
  413. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_mor_writes.rs +0 -0
  414. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_partition_transforms.rs +0 -0
  415. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_partitioned_writes.rs +0 -0
  416. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_puffin_index.sh +0 -0
  417. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_rest_updates.sh +0 -0
  418. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/tests/verify_schema_compat.rs +0 -0
  419. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/.DS_Store +0 -0
  420. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/catalog/glue_catalog.properties +0 -0
  421. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/catalog/hyperstreamdb.properties +0 -0
  422. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/catalog/iceberg.properties +0 -0
  423. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/catalog/iceberg_hive.properties +0 -0
  424. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/catalog/memory.properties +0 -0
  425. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/catalog/postgres.properties +0 -0
  426. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/config.properties +0 -0
  427. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/entrypoint.sh +0 -0
  428. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/jvm.config +0 -0
  429. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config/node.properties +0 -0
  430. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-config.zip +0 -0
  431. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/pom.xml +0 -0
  432. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBColumnHandle.java +0 -0
  433. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBMetadata.java +0 -0
  434. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBPlugin.java +0 -0
  435. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBSplit.java +0 -0
  436. {hyperstreamdb-0.5.4 → hyperstreamdb-0.5.5}/trino-hyperstream/src/main/java/com/hyperstreamdb/trino/HyperStreamDBTableHandle.java +0 -0
@@ -3516,7 +3516,7 @@ dependencies = [
3516
3516
 
3517
3517
  [[package]]
3518
3518
  name = "hyperstreamdb"
3519
- version = "0.5.4"
3519
+ version = "0.5.5"
3520
3520
  dependencies = [
3521
3521
  "ahash",
3522
3522
  "anyhow",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "hyperstreamdb"
3
- version = "0.5.4"
3
+ version = "0.5.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"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hyperstreamdb
3
- Version: 0.5.4
3
+ Version: 0.5.5
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: Programming Language :: Rust
@@ -486,11 +486,15 @@ s3://bucket/table/
486
486
  ## 🔌 Connectors
487
487
 
488
488
  ### Spark
489
+ The Spark connector supports **Spark 3.5, 4.0, and 4.1** via a shared JNI FFI bridge. It intercepts row-level operations (like `MERGE INTO`) to take advantage of HyperStreamDB's fast indexing and supports configuring GPU backends.
490
+
489
491
  ```scala
490
492
  // Read
491
493
  val df = spark.read
492
494
  .format("hyperstream")
493
495
  .option("path", "s3://bucket/table")
496
+ // Optionally configure the GPU device (cuda, mps, intel, rocm, auto, or cpu)
497
+ .option("hyperstream.gpu_device", "cuda")
494
498
  .load()
495
499
 
496
500
  // Write
@@ -500,10 +504,23 @@ df.write
500
504
  .save()
501
505
  ```
502
506
 
507
+ You can also globally configure the GPU for Spark stored procedures (e.g. index building):
508
+ ```scala
509
+ spark.conf.set("spark.hyperstream.gpu.device", "cuda")
510
+ ```
511
+
503
512
  ### Trino
513
+ The Trino connector intercepts reads to natively push down scalar and vector filtering to the HyperStreamDB core, drastically reducing IO.
514
+
504
515
  ```sql
505
516
  SELECT * FROM hyperstream.default.my_table
506
- WHERE id > 100; -- Uses scalar index
517
+ WHERE id > 100; -- Uses scalar index natively via JNI pushdown
518
+ ```
519
+
520
+ You can configure the GPU backend for Trino globally or per-catalog using the properties file (e.g. `etc/catalog/hyperstream.properties`):
521
+ ```properties
522
+ connector.name=hyperstreamdb
523
+ hyperstream.gpu-device=cuda
507
524
  ```
508
525
 
509
526
  ### Python (Direct)
@@ -614,8 +631,7 @@ hyperstreamdb/
614
631
  - [x] Multi-backend GPU support (CUDA, ROCm, Metal, XPU)
615
632
  - [x] Sparse and binary vector operations
616
633
 
617
- ### 📝 In Progress
618
- - [ ] Spark/Trino connectors
634
+ - [x] Spark/Trino connectors (JNI Bridge & Native GPU support)
619
635
  - [ ] Elasticsearch-like REST Search API (`hyperstreamdb-search` add-on)
620
636
 
621
637
  ### 📋 Planned
@@ -447,11 +447,15 @@ s3://bucket/table/
447
447
  ## 🔌 Connectors
448
448
 
449
449
  ### Spark
450
+ The Spark connector supports **Spark 3.5, 4.0, and 4.1** via a shared JNI FFI bridge. It intercepts row-level operations (like `MERGE INTO`) to take advantage of HyperStreamDB's fast indexing and supports configuring GPU backends.
451
+
450
452
  ```scala
451
453
  // Read
452
454
  val df = spark.read
453
455
  .format("hyperstream")
454
456
  .option("path", "s3://bucket/table")
457
+ // Optionally configure the GPU device (cuda, mps, intel, rocm, auto, or cpu)
458
+ .option("hyperstream.gpu_device", "cuda")
455
459
  .load()
456
460
 
457
461
  // Write
@@ -461,10 +465,23 @@ df.write
461
465
  .save()
462
466
  ```
463
467
 
468
+ You can also globally configure the GPU for Spark stored procedures (e.g. index building):
469
+ ```scala
470
+ spark.conf.set("spark.hyperstream.gpu.device", "cuda")
471
+ ```
472
+
464
473
  ### Trino
474
+ The Trino connector intercepts reads to natively push down scalar and vector filtering to the HyperStreamDB core, drastically reducing IO.
475
+
465
476
  ```sql
466
477
  SELECT * FROM hyperstream.default.my_table
467
- WHERE id > 100; -- Uses scalar index
478
+ WHERE id > 100; -- Uses scalar index natively via JNI pushdown
479
+ ```
480
+
481
+ You can configure the GPU backend for Trino globally or per-catalog using the properties file (e.g. `etc/catalog/hyperstream.properties`):
482
+ ```properties
483
+ connector.name=hyperstreamdb
484
+ hyperstream.gpu-device=cuda
468
485
  ```
469
486
 
470
487
  ### Python (Direct)
@@ -575,8 +592,7 @@ hyperstreamdb/
575
592
  - [x] Multi-backend GPU support (CUDA, ROCm, Metal, XPU)
576
593
  - [x] Sparse and binary vector operations
577
594
 
578
- ### 📝 In Progress
579
- - [ ] Spark/Trino connectors
595
+ - [x] Spark/Trino connectors (JNI Bridge & Native GPU support)
580
596
  - [ ] Elasticsearch-like REST Search API (`hyperstreamdb-search` add-on)
581
597
 
582
598
  ### 📋 Planned
@@ -26,24 +26,55 @@
26
26
  </properties>
27
27
 
28
28
  <profiles>
29
+ <profile>
30
+ <id>spark-4.1</id>
31
+ <properties>
32
+ <spark.version>4.1.2</spark.version>
33
+ <spark.major.version>4</spark.major.version>
34
+ <iceberg.spark.version>4.1_2.13</iceberg.spark.version>
35
+ <iceberg.version>1.11.0</iceberg.version>
36
+ </properties>
37
+ </profile>
29
38
  <profile>
30
39
  <id>spark-4.0</id>
31
40
  <activation>
32
41
  <activeByDefault>true</activeByDefault>
33
42
  </activation>
34
43
  <properties>
35
- <spark.version>4.0.0-preview1</spark.version>
44
+ <spark.version>4.0.1</spark.version>
45
+ <spark.major.version>4</spark.major.version>
46
+ <iceberg.spark.version>4.0_2.13</iceberg.spark.version>
47
+ <iceberg.version>1.11.0</iceberg.version>
36
48
  </properties>
37
49
  </profile>
38
50
  <profile>
39
51
  <id>spark-3.5</id>
40
52
  <properties>
41
53
  <spark.version>3.5.1</spark.version>
54
+ <spark.major.version>3</spark.major.version>
55
+ <iceberg.spark.version>3.5_2.12</iceberg.spark.version>
56
+ <iceberg.version>1.5.2</iceberg.version>
57
+ <scala.binary.version>2.12</scala.binary.version>
42
58
  </properties>
43
59
  </profile>
44
60
  </profiles>
45
61
 
46
62
  <dependencies>
63
+ <!-- Scala Library -->
64
+ <dependency>
65
+ <groupId>org.scala-lang</groupId>
66
+ <artifactId>scala-library</artifactId>
67
+ <version>${scala.binary.version}.18</version>
68
+ <scope>provided</scope>
69
+ </dependency>
70
+
71
+ <!-- Iceberg Spark Runtime -->
72
+ <dependency>
73
+ <groupId>org.apache.iceberg</groupId>
74
+ <artifactId>iceberg-spark-runtime-${iceberg.spark.version}</artifactId>
75
+ <version>${iceberg.version}</version>
76
+ <scope>provided</scope>
77
+ </dependency>
47
78
  <!-- Spark Core (Provided) -->
48
79
  <dependency>
49
80
  <groupId>org.apache.spark</groupId>
@@ -76,12 +107,6 @@
76
107
  <version>5.13.0</version>
77
108
  </dependency>
78
109
 
79
- <!-- Jackson for JSON processing -->
80
- <dependency>
81
- <groupId>com.fasterxml.jackson.core</groupId>
82
- <artifactId>jackson-databind</artifactId>
83
- <version>2.15.2</version>
84
- </dependency>
85
110
 
86
111
  <!-- Testing -->
87
112
  <dependency>
@@ -90,16 +115,75 @@
90
115
  <version>4.13.2</version>
91
116
  <scope>test</scope>
92
117
  </dependency>
118
+ <dependency>
119
+ <groupId>org.scalatest</groupId>
120
+ <artifactId>scalatest_${scala.binary.version}</artifactId>
121
+ <version>3.2.19</version>
122
+ <scope>test</scope>
123
+ </dependency>
124
+ <dependency>
125
+ <groupId>org.apache.hadoop</groupId>
126
+ <artifactId>hadoop-client</artifactId>
127
+ <version>3.3.6</version>
128
+ <scope>test</scope>
129
+ </dependency>
130
+ <dependency>
131
+ <groupId>org.apache.hive</groupId>
132
+ <artifactId>hive-exec</artifactId>
133
+ <version>3.1.3</version>
134
+ <scope>test</scope>
135
+ <exclusions>
136
+ <exclusion>
137
+ <groupId>org.pentaho</groupId>
138
+ <artifactId>pentaho-aggdesigner-algorithm</artifactId>
139
+ </exclusion>
140
+ </exclusions>
141
+ </dependency>
93
142
  </dependencies>
94
143
 
95
144
  <build>
96
145
  <plugins>
146
+ <plugin>
147
+ <groupId>org.codehaus.mojo</groupId>
148
+ <artifactId>build-helper-maven-plugin</artifactId>
149
+ <version>3.5.0</version>
150
+ <executions>
151
+ <execution>
152
+ <id>add-source</id>
153
+ <phase>generate-sources</phase>
154
+ <goals>
155
+ <goal>add-source</goal>
156
+ </goals>
157
+ <configuration>
158
+ <sources>
159
+ <source>src/main/spark-${spark.major.version}</source>
160
+ </sources>
161
+ </configuration>
162
+ </execution>
163
+ </executions>
164
+ </plugin>
97
165
  <plugin>
98
166
  <groupId>org.apache.maven.plugins</groupId>
99
167
  <artifactId>maven-surefire-plugin</artifactId>
100
168
  <version>3.2.5</version>
101
169
  <configuration>
102
170
  <useSystemClassLoader>false</useSystemClassLoader>
171
+ <argLine>
172
+ --add-opens=java.base/java.lang=ALL-UNNAMED
173
+ --add-opens=java.base/java.lang.invoke=ALL-UNNAMED
174
+ --add-opens=java.base/java.lang.reflect=ALL-UNNAMED
175
+ --add-opens=java.base/java.io=ALL-UNNAMED
176
+ --add-opens=java.base/java.net=ALL-UNNAMED
177
+ --add-opens=java.base/java.nio=ALL-UNNAMED
178
+ --add-opens=java.base/java.util=ALL-UNNAMED
179
+ --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
180
+ --add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
181
+ --add-opens=java.base/sun.nio.ch=ALL-UNNAMED
182
+ --add-opens=java.base/sun.nio.cs=ALL-UNNAMED
183
+ --add-opens=java.base/sun.security.action=ALL-UNNAMED
184
+ --add-opens=java.base/sun.util.calendar=ALL-UNNAMED
185
+ --add-opens=java.security.jgss/sun.security.krb5=ALL-UNNAMED
186
+ </argLine>
103
187
  </configuration>
104
188
  </plugin>
105
189
  <plugin>
@@ -137,6 +221,22 @@
137
221
  </execution>
138
222
  </executions>
139
223
  </plugin>
224
+ <plugin>
225
+ <groupId>net.alchim31.maven</groupId>
226
+ <artifactId>scala-maven-plugin</artifactId>
227
+ <version>4.8.1</version>
228
+ <executions>
229
+ <execution>
230
+ <goals>
231
+ <goal>compile</goal>
232
+ <goal>testCompile</goal>
233
+ </goals>
234
+ </execution>
235
+ </executions>
236
+ <configuration>
237
+ <scalaVersion>${scala.binary.version}.18</scalaVersion>
238
+ </configuration>
239
+ </plugin>
140
240
  </plugins>
141
241
  </build>
142
242
  </project>
@@ -0,0 +1,46 @@
1
+ package com.hyperstreamdb.spark
2
+
3
+ import org.apache.spark.sql.connector.catalog.{Table, TableProvider}
4
+ import org.apache.spark.sql.connector.expressions.Transform
5
+ import org.apache.spark.sql.types.StructType
6
+ import org.apache.spark.sql.util.CaseInsensitiveStringMap
7
+ import org.apache.iceberg.spark.source.IcebergSource
8
+ import java.util.Map
9
+
10
+ import org.apache.spark.sql.sources.DataSourceRegister
11
+
12
+ /**
13
+ * The entry point for the HyperStreamDB Spark Connector.
14
+ * This wraps the official Iceberg source but injects our custom Table implementation
15
+ * to intercept MERGE INTO and other operations.
16
+ */
17
+ class DefaultSource extends TableProvider with DataSourceRegister {
18
+
19
+ override def shortName(): String = "hyperstream"
20
+
21
+ // We delegate basic metadata/table resolution to the official IcebergSource
22
+ private lazy val icebergSource = new IcebergSource()
23
+
24
+ override def inferSchema(options: CaseInsensitiveStringMap): StructType = {
25
+ // Delegate to Iceberg to read the schema from the manifest
26
+ icebergSource.inferSchema(options)
27
+ }
28
+
29
+ override def getTable(
30
+ schema: StructType,
31
+ partitioning: Array[Transform],
32
+ properties: Map[String, String]
33
+ ): Table = {
34
+ // Get the underlying Iceberg Table
35
+ val icebergTable = icebergSource.getTable(schema, partitioning, properties)
36
+
37
+ val gpuDevice = properties.getOrDefault("hyperstream.gpu_device", "auto")
38
+
39
+ // Wrap it in our HyperStreamTable to intercept operations
40
+ new HyperStreamTable(icebergTable, schema, properties, gpuDevice)
41
+ }
42
+
43
+ override def supportsExternalMetadata(): Boolean = {
44
+ true
45
+ }
46
+ }
@@ -0,0 +1,17 @@
1
+ package com.hyperstreamdb.spark
2
+
3
+ import org.apache.spark.sql.connector.write.{RowLevelOperation, RowLevelOperationBuilder, RowLevelOperationInfo, LogicalWriteInfo}
4
+
5
+ class HyperStreamMergeBuilder(
6
+ table: HyperStreamTable,
7
+ info: RowLevelOperationInfo,
8
+ gpuDevice: String
9
+ ) extends RowLevelOperationBuilder {
10
+
11
+ override def build(): RowLevelOperation = {
12
+ // We return our custom RowLevelOperation that handles Merge-on-Read
13
+ new HyperStreamRowLevelOperation(table, info, gpuDevice)
14
+ }
15
+ }
16
+
17
+
@@ -0,0 +1,27 @@
1
+ package com.hyperstreamdb.spark
2
+
3
+ import org.apache.spark.sql.connector.write.{LogicalWriteInfo, RowLevelOperationInfo, DataWriterFactory, PhysicalWriteInfo, WriterCommitMessage, DeltaWrite, DeltaBatchWrite, DeltaWriterFactory, DeltaWriter}
4
+
5
+ class HyperStreamPositionDeltaWrite(
6
+ table: HyperStreamTable,
7
+ info: LogicalWriteInfo,
8
+ gpuDevice: String
9
+ ) extends DeltaWrite {
10
+
11
+ override def toBatch(): DeltaBatchWrite = new HyperStreamDeltaBatchWrite(table, gpuDevice)
12
+ }
13
+
14
+ class HyperStreamDeltaBatchWrite(table: HyperStreamTable, gpuDevice: String) extends DeltaBatchWrite {
15
+ override def createBatchWriterFactory(physicalInfo: PhysicalWriteInfo): DeltaWriterFactory = {
16
+ // Return a factory that creates our custom JNI Position Delta Writers
17
+ new HyperStreamPositionDeltaWriterFactory(table.name(), gpuDevice)
18
+ }
19
+
20
+ override def commit(messages: Array[WriterCommitMessage]): Unit = {
21
+ // Commit manifest updates
22
+ }
23
+
24
+ override def abort(messages: Array[WriterCommitMessage]): Unit = {
25
+ // Cleanup any orphaned delete files if the job aborts
26
+ }
27
+ }
@@ -0,0 +1,78 @@
1
+ package com.hyperstreamdb.spark
2
+
3
+ import org.apache.spark.sql.connector.write.{DeltaWriter, DeltaWriterFactory}
4
+ import org.apache.spark.sql.catalyst.InternalRow
5
+ import org.apache.spark.sql.connector.write.WriterCommitMessage
6
+
7
+ // We will use Jackson (available in Spark) to serialize JSON
8
+ import com.fasterxml.jackson.databind.ObjectMapper
9
+
10
+ class HyperStreamPositionDeltaWriterFactory(tableName: String, gpuDevice: String) extends DeltaWriterFactory {
11
+ override def createWriter(partitionId: Int, taskId: Long): DeltaWriter[InternalRow] = {
12
+ new HyperStreamDeltaWriter(tableName, gpuDevice)
13
+ }
14
+ }
15
+
16
+ class HyperStreamDeltaCommitMessage(val status: String) extends WriterCommitMessage
17
+
18
+ class HyperStreamDeltaWriter(tableName: String, gpuDevice: String) extends DeltaWriter[InternalRow] {
19
+
20
+ // Accumulate deletes: Map[FilePath, ArrayBuffer[RowPosition]]
21
+ private val deletes = scala.collection.mutable.Map.empty[String, scala.collection.mutable.ArrayBuffer[Long]]
22
+
23
+ override def delete(metadata: InternalRow, id: InternalRow): Unit = {
24
+ // Spark passes _file as UTF8String at index 0, _pos as Long at index 1
25
+ val file = metadata.getUTF8String(0).toString
26
+ val pos = metadata.getLong(1)
27
+ deletes.getOrElseUpdate(file, scala.collection.mutable.ArrayBuffer.empty[Long]) += pos
28
+ }
29
+
30
+ override def update(metadata: InternalRow, id: InternalRow, row: InternalRow): Unit = {
31
+ // For MERGE/UPDATE, the old record is deleted via position
32
+ val file = metadata.getUTF8String(0).toString
33
+ val pos = metadata.getLong(1)
34
+ deletes.getOrElseUpdate(file, scala.collection.mutable.ArrayBuffer.empty[Long]) += pos
35
+
36
+ // The new record 'row' needs to be inserted.
37
+ // In a full implementation, we'd also buffer `row` to write as a new Parquet file.
38
+ }
39
+
40
+ override def insert(row: InternalRow): Unit = {
41
+ // In a full implementation, we'd buffer `row` to write as a new Parquet file.
42
+ }
43
+
44
+ override def commit(): WriterCommitMessage = {
45
+ if (deletes.nonEmpty) {
46
+ // Serialize deletes to JSON
47
+ val mapper = new ObjectMapper()
48
+
49
+ // Convert Scala Map to Java Map for Jackson
50
+ val javaMap = new java.util.HashMap[String, java.util.List[Long]]()
51
+ deletes.foreach { case (k, v) =>
52
+ val list = new java.util.ArrayList[Long]()
53
+ v.foreach(list.add)
54
+ javaMap.put(k, list)
55
+ }
56
+
57
+ val jsonStr = mapper.writeValueAsString(javaMap)
58
+
59
+ // Call Rust Core
60
+ val jniBridge = com.hyperstreamdb.spark.jni.HyperStreamJNIBridge.getInstance()
61
+ jniBridge.setGpuContext(gpuDevice)
62
+ val success = jniBridge.commitPositionDeletes(tableName.split("\\.").last, jsonStr)
63
+ // For now, print what would happen
64
+ println(s"HyperStreamDB: Committing position deletes to Rust Core for $tableName")
65
+ println(s"HyperStreamDB: Payload -> $jsonStr")
66
+ }
67
+
68
+ new HyperStreamDeltaCommitMessage("success")
69
+ }
70
+
71
+ override def abort(): Unit = {
72
+ deletes.clear()
73
+ }
74
+
75
+ override def close(): Unit = {
76
+ deletes.clear()
77
+ }
78
+ }
@@ -0,0 +1,37 @@
1
+ package com.hyperstreamdb.spark
2
+
3
+ import org.apache.spark.sql.connector.read.ScanBuilder
4
+ import org.apache.spark.sql.connector.write.{RowLevelOperation, RowLevelOperationInfo, LogicalWriteInfo, WriteBuilder}
5
+ import org.apache.spark.sql.connector.expressions.{NamedReference, Expressions}
6
+ import org.apache.spark.sql.connector.expressions.filter.Predicate
7
+ import org.apache.spark.sql.util.CaseInsensitiveStringMap
8
+
9
+ class HyperStreamRowLevelOperation(
10
+ table: HyperStreamTable,
11
+ info: RowLevelOperationInfo,
12
+ gpuDevice: String
13
+ ) extends RowLevelOperation {
14
+
15
+ override def command(): RowLevelOperation.Command = info.command()
16
+
17
+ override def description(): String = s"HyperStream RowLevelOperation: ${info.command()}"
18
+
19
+ override def newScanBuilder(options: CaseInsensitiveStringMap): ScanBuilder = {
20
+ // Return a custom ScanBuilder that supports Runtime Filtering!
21
+ // This allows us to intercept the dynamically broadcasted keys from the MERGE source.
22
+ new HyperStreamScanBuilder(table, options)
23
+ }
24
+
25
+ override def newWriteBuilder(writeInfo: LogicalWriteInfo): WriteBuilder = {
26
+ // Return a WriteBuilder that writes Position Deletes instead of Copy-on-Write
27
+ new HyperStreamWriteBuilder(table, writeInfo, gpuDevice)
28
+ }
29
+
30
+ override def requiredMetadataAttributes(): Array[NamedReference] = {
31
+ // Request Iceberg's implicit metadata columns for position deletes
32
+ Array(
33
+ Expressions.column("_file"),
34
+ Expressions.column("_pos")
35
+ )
36
+ }
37
+ }
@@ -0,0 +1,44 @@
1
+ package com.hyperstreamdb.spark
2
+
3
+ import org.apache.spark.sql.connector.read.{Scan, ScanBuilder, SupportsRuntimeFiltering}
4
+ import org.apache.spark.sql.connector.expressions.NamedReference
5
+ import org.apache.spark.sql.connector.expressions.filter.Predicate
6
+ import org.apache.spark.sql.sources.Filter
7
+ import org.apache.spark.sql.util.CaseInsensitiveStringMap
8
+
9
+ class HyperStreamScanBuilder(
10
+ table: HyperStreamTable,
11
+ options: CaseInsensitiveStringMap
12
+ ) extends ScanBuilder {
13
+
14
+ override def build(): Scan = {
15
+ val delegateBuilder = table.delegate.asInstanceOf[org.apache.spark.sql.connector.catalog.SupportsRead].newScanBuilder(options)
16
+ new HyperStreamScan(delegateBuilder.build(), table)
17
+ }
18
+ }
19
+
20
+ class HyperStreamScan(val delegate: Scan, val table: HyperStreamTable) extends Scan with SupportsRuntimeFiltering {
21
+
22
+ private var dynamicFilters: Array[Filter] = Array.empty
23
+
24
+ override def readSchema(): org.apache.spark.sql.types.StructType = delegate.readSchema()
25
+
26
+ override def toBatch() = delegate.toBatch()
27
+ // TODO: we should intercept toBatch to use our filters
28
+
29
+ override def filterAttributes(): Array[NamedReference] = {
30
+ // We advertise all columns for runtime filtering so Spark gives us the broadcast keys
31
+ Array.empty // TODO: Return the primary key columns here to receive DynamicFilters
32
+ }
33
+
34
+ override def filter(filters: Array[Filter]): Unit = {
35
+ this.dynamicFilters = filters
36
+ // MAGIC HAPPENS HERE:
37
+ // Extract the primary keys from 'filters' (usually an IN filter)
38
+ // Send them to Rust Core via JNI:
39
+ val jniBridge = com.hyperstreamdb.spark.jni.HyperStreamJNIBridge.getInstance()
40
+ jniBridge.setGpuContext(table.gpuDevice)
41
+ val fileBitmaps = jniBridge.queryIndexIn(delegate.asInstanceOf[org.apache.spark.sql.connector.read.Scan].getClass.getSimpleName, "pk", "[]") // Placeholder for JSON extraction
42
+ // Then we can configure the Iceberg delegateBuilder with these exact file/bitmap constraints!
43
+ }
44
+ }
@@ -0,0 +1,53 @@
1
+ package com.hyperstreamdb.spark
2
+
3
+ import org.apache.spark.sql.connector.catalog.{SupportsRead, SupportsRowLevelOperations, Table, TableCapability}
4
+ import org.apache.spark.sql.connector.read.ScanBuilder
5
+ import org.apache.spark.sql.connector.write.{LogicalWriteInfo, RowLevelOperationBuilder, WriteBuilder}
6
+ import org.apache.spark.sql.connector.write.RowLevelOperationInfo
7
+ import org.apache.spark.sql.types.StructType
8
+ import org.apache.spark.sql.util.CaseInsensitiveStringMap
9
+ import java.util.{Set => JSet}
10
+ import scala.collection.JavaConverters._
11
+
12
+ /**
13
+ * HyperStreamTable wraps the official Iceberg SparkTable.
14
+ * It intercepts operations where HyperStreamDB's indexes can be used (like MERGE),
15
+ * and delegates everything else back to Iceberg.
16
+ */
17
+ class HyperStreamTable(
18
+ val delegate: Table,
19
+ val tableSchema: StructType,
20
+ override val properties: java.util.Map[String, String],
21
+ val gpuDevice: String
22
+ ) extends Table with SupportsRead with SupportsRowLevelOperations {
23
+
24
+ override def name(): String = delegate.name()
25
+
26
+ override def schema(): StructType = delegate.schema()
27
+
28
+ override def capabilities(): JSet[TableCapability] = {
29
+ // We add our row-level operation capabilities on top of the delegate's capabilities
30
+ val caps = new java.util.HashSet[TableCapability](delegate.capabilities())
31
+ caps.add(TableCapability.BATCH_READ)
32
+ caps.add(TableCapability.BATCH_WRITE)
33
+ caps.add(TableCapability.ACCEPT_ANY_SCHEMA)
34
+ caps
35
+ }
36
+
37
+ override def newScanBuilder(options: CaseInsensitiveStringMap): ScanBuilder = {
38
+ // If it's a simple read, we could just delegate, but we might want to intercept
39
+ // to use our indexes for standard SELECT queries with WHERE clauses too!
40
+ // For now, we delegate to Iceberg. In the future, return HyperStreamScanBuilder.
41
+ delegate match {
42
+ case r: SupportsRead => r.newScanBuilder(options)
43
+ case _ => throw new UnsupportedOperationException("Underlying table does not support read")
44
+ }
45
+ }
46
+
47
+ override def newRowLevelOperationBuilder(info: RowLevelOperationInfo): RowLevelOperationBuilder = {
48
+ // This is where the magic happens!
49
+ // When Spark executes MERGE INTO, UPDATE, or DELETE, it calls this method.
50
+ // We return our custom builder that enforces Merge-on-Read and uses our indexes.
51
+ new HyperStreamMergeBuilder(this, info, gpuDevice)
52
+ }
53
+ }
@@ -0,0 +1,16 @@
1
+ package com.hyperstreamdb.spark
2
+
3
+ import org.apache.spark.sql.connector.write.{LogicalWriteInfo, Write, WriteBuilder}
4
+
5
+ class HyperStreamWriteBuilder(
6
+ table: HyperStreamTable,
7
+ info: LogicalWriteInfo,
8
+ gpuDevice: String
9
+ ) extends WriteBuilder {
10
+
11
+ override def build(): Write = {
12
+ // This Write implementation will provide factories for PositionDeltaWriter
13
+ // to emit `.del` position deletes using HyperStreamDB's native writers.
14
+ new HyperStreamPositionDeltaWrite(table, info, gpuDevice)
15
+ }
16
+ }
@@ -0,0 +1,41 @@
1
+ package com.hyperstreamdb.spark.jni
2
+
3
+ import org.slf4j.LoggerFactory
4
+
5
+ class HyperStreamJNIBridge private () {
6
+
7
+ @native def addIndex(table: String, column: String, indexType: String): Boolean
8
+ @native def buildIndex(table: String, segmentId: String): Boolean
9
+ @native def setPrimaryKey(table: String, columns: String): Boolean
10
+ @native def queryIndexIn(table: String, column: String, valuesJson: String): String
11
+ @native def commitPositionDeletes(table: String, deletesJson: String): Boolean
12
+ @native def setGpuContext(deviceType: String): Boolean
13
+
14
+ }
15
+
16
+ object HyperStreamJNIBridge {
17
+ private val logger = LoggerFactory.getLogger(classOf[HyperStreamJNIBridge])
18
+ private var instance: HyperStreamJNIBridge = _
19
+ private var loaded = false
20
+
21
+ def getInstance(): HyperStreamJNIBridge = {
22
+ if (instance == null) {
23
+ synchronized {
24
+ if (instance == null) {
25
+ try {
26
+ System.loadLibrary("hyperstreamdb")
27
+ loaded = true
28
+ logger.info("Successfully loaded native HyperStreamDB library.")
29
+ } catch {
30
+ case e: UnsatisfiedLinkError =>
31
+ logger.warn(s"Failed to load native HyperStreamDB library: ${e.getMessage}. Using fallback/mock implementation for testing.")
32
+ }
33
+ instance = new HyperStreamJNIBridge()
34
+ }
35
+ }
36
+ }
37
+ instance
38
+ }
39
+
40
+ def isLoaded: Boolean = loaded
41
+ }