vastdb 2.0.5__tar.gz → 2.0.8__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 (236) hide show
  1. {vastdb-2.0.5 → vastdb-2.0.8}/CHANGELOG.md +29 -0
  2. {vastdb-2.0.5 → vastdb-2.0.8}/PKG-INFO +2 -1
  3. {vastdb-2.0.5 → vastdb-2.0.8}/requirements.txt +1 -0
  4. {vastdb-2.0.5 → vastdb-2.0.8}/setup.py +1 -1
  5. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/_internal.py +40 -15
  6. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/schema.py +15 -4
  7. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/table.py +11 -1
  8. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/table_metadata.py +7 -7
  9. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_tables.py +63 -0
  10. vastdb-2.0.8/vastdb/tests/test_vector_index.py +324 -0
  11. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/ObjectDetails.py +56 -1
  12. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_tests/test_scale.py +2 -0
  13. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb.egg-info/PKG-INFO +2 -1
  14. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb.egg-info/requires.txt +1 -0
  15. vastdb-2.0.5/vastdb/tests/test_vector_index.py +0 -162
  16. {vastdb-2.0.5 → vastdb-2.0.8}/CONTRIBUTING.md +0 -0
  17. {vastdb-2.0.5 → vastdb-2.0.8}/LICENSE +0 -0
  18. {vastdb-2.0.5 → vastdb-2.0.8}/MANIFEST.in +0 -0
  19. {vastdb-2.0.5 → vastdb-2.0.8}/README.md +0 -0
  20. {vastdb-2.0.5 → vastdb-2.0.8}/setup.cfg +0 -0
  21. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/__init__.py +0 -0
  22. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/_adbc.py +0 -0
  23. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/_ibis_support.py +0 -0
  24. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/_table_interface.py +0 -0
  25. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/__init__.py +0 -0
  26. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/__init__.py +0 -0
  27. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/bench_repo/__init__.py +0 -0
  28. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/bench_repo/mega_combo.py +0 -0
  29. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/cli.py +0 -0
  30. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/common/__init__.py +0 -0
  31. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/common/constants.py +0 -0
  32. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/common/log_utils.py +0 -0
  33. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/common/types.py +0 -0
  34. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/common/utils.py +0 -0
  35. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/dataset/__init__.py +0 -0
  36. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/dataset/generate_secmaster.py +0 -0
  37. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/dataset/generate_stocks_dataset.py +0 -0
  38. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/dataset/schemas.py +0 -0
  39. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/dataset/secmaster.py +0 -0
  40. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/orchestrate/__init__.py +0 -0
  41. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/orchestrate/bench_spec.py +0 -0
  42. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/orchestrate/results_helpers.py +0 -0
  43. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/orchestrate/scenario.py +0 -0
  44. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/orchestrate/scenario_generator.py +0 -0
  45. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/query/__init__.py +0 -0
  46. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/query/arrow_common.py +0 -0
  47. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/query/query.py +0 -0
  48. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/query/query_pyarrow.py +0 -0
  49. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/query/query_vastdb.py +0 -0
  50. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/perf_bench/run.py +0 -0
  51. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/test_perf.py +0 -0
  52. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bench/test_sample.py +0 -0
  53. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/bucket.py +0 -0
  54. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/config.py +0 -0
  55. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/conftest.py +0 -0
  56. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/errors.py +0 -0
  57. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/features.py +0 -0
  58. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/session.py +0 -0
  59. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/__init__.py +0 -0
  60. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/metrics.py +0 -0
  61. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_adbc_integration.py +0 -0
  62. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_duckdb.py +0 -0
  63. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_fixed_list.py +0 -0
  64. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_imports.py +0 -0
  65. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_nested.py +0 -0
  66. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_projections.py +0 -0
  67. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_sanity.py +0 -0
  68. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_schemas.py +0 -0
  69. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_table_in_tx.py +0 -0
  70. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_util.py +0 -0
  71. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/test_vector_search.py +0 -0
  72. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/tests/util.py +0 -0
  73. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/transaction.py +0 -0
  74. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/util.py +0 -0
  75. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/__init__.py +0 -0
  76. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/__init__.py +0 -0
  77. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/__init__.py +0 -0
  78. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/__init__.py +0 -0
  79. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/__init__.py +0 -0
  80. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Aggregate.py +0 -0
  81. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySlice.py +0 -0
  82. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySubscript.py +0 -0
  83. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BinaryLiteral.py +0 -0
  84. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BooleanLiteral.py +0 -0
  85. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Bound.py +0 -0
  86. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Call.py +0 -0
  87. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CaseFragment.py +0 -0
  88. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Cast.py +0 -0
  89. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConcreteBoundImpl.py +0 -0
  90. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConditionalCase.py +0 -0
  91. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CurrentRow.py +0 -0
  92. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DateLiteral.py +0 -0
  93. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DecimalLiteral.py +0 -0
  94. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Deref.py +0 -0
  95. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DurationLiteral.py +0 -0
  96. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Expression.py +0 -0
  97. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ExpressionImpl.py +0 -0
  98. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldIndex.py +0 -0
  99. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldRef.py +0 -0
  100. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Filter.py +0 -0
  101. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FixedSizeBinaryLiteral.py +0 -0
  102. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float16Literal.py +0 -0
  103. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float32Literal.py +0 -0
  104. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float64Literal.py +0 -0
  105. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Following.py +0 -0
  106. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Frame.py +0 -0
  107. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Grouping.py +0 -0
  108. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int16Literal.py +0 -0
  109. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int32Literal.py +0 -0
  110. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int64Literal.py +0 -0
  111. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int8Literal.py +0 -0
  112. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteral.py +0 -0
  113. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralDaysMilliseconds.py +0 -0
  114. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralImpl.py +0 -0
  115. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralMonths.py +0 -0
  116. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Join.py +0 -0
  117. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/JoinKind.py +0 -0
  118. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/KeyValue.py +0 -0
  119. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Limit.py +0 -0
  120. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ListLiteral.py +0 -0
  121. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Literal.py +0 -0
  122. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralColumn.py +0 -0
  123. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralImpl.py +0 -0
  124. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralRelation.py +0 -0
  125. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapKey.py +0 -0
  126. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapLiteral.py +0 -0
  127. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/OrderBy.py +0 -0
  128. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Ordering.py +0 -0
  129. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Plan.py +0 -0
  130. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Preceding.py +0 -0
  131. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Project.py +0 -0
  132. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelId.py +0 -0
  133. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Relation.py +0 -0
  134. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelationImpl.py +0 -0
  135. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOpKind.py +0 -0
  136. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOperation.py +0 -0
  137. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SimpleCase.py +0 -0
  138. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SortKey.py +0 -0
  139. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Source.py +0 -0
  140. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StringLiteral.py +0 -0
  141. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructField.py +0 -0
  142. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructLiteral.py +0 -0
  143. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimeLiteral.py +0 -0
  144. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimestampLiteral.py +0 -0
  145. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt16Literal.py +0 -0
  146. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt32Literal.py +0 -0
  147. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt64Literal.py +0 -0
  148. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt8Literal.py +0 -0
  149. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Unbounded.py +0 -0
  150. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/WindowCall.py +0 -0
  151. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/__init__.py +0 -0
  152. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Binary.py +0 -0
  153. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Block.py +0 -0
  154. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompression.py +0 -0
  155. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompressionMethod.py +0 -0
  156. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Bool.py +0 -0
  157. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Buffer.py +0 -0
  158. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/CompressionType.py +0 -0
  159. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Date.py +0 -0
  160. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/DateUnit.py +0 -0
  161. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Decimal.py +0 -0
  162. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryBatch.py +0 -0
  163. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryEncoding.py +0 -0
  164. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryKind.py +0 -0
  165. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Duration.py +0 -0
  166. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Endianness.py +0 -0
  167. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Feature.py +0 -0
  168. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Field.py +0 -0
  169. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/FieldNode.py +0 -0
  170. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeBinary.py +0 -0
  171. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeList.py +0 -0
  172. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/FloatingPoint.py +0 -0
  173. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Footer.py +0 -0
  174. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Int.py +0 -0
  175. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Interval.py +0 -0
  176. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/IntervalUnit.py +0 -0
  177. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/KeyValue.py +0 -0
  178. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/LargeBinary.py +0 -0
  179. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/LargeList.py +0 -0
  180. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/LargeUtf8.py +0 -0
  181. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/List.py +0 -0
  182. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Map.py +0 -0
  183. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Message.py +0 -0
  184. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/MessageHeader.py +0 -0
  185. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/MetadataVersion.py +0 -0
  186. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Null.py +0 -0
  187. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Precision.py +0 -0
  188. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/RecordBatch.py +0 -0
  189. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Schema.py +0 -0
  190. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixCompressedAxis.py +0 -0
  191. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixIndexCSX.py +0 -0
  192. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensor.py +0 -0
  193. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndex.py +0 -0
  194. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCOO.py +0 -0
  195. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCSF.py +0 -0
  196. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Struct_.py +0 -0
  197. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Tensor.py +0 -0
  198. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/TensorDim.py +0 -0
  199. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Time.py +0 -0
  200. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/TimeUnit.py +0 -0
  201. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Timestamp.py +0 -0
  202. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Type.py +0 -0
  203. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Union.py +0 -0
  204. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/UnionMode.py +0 -0
  205. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Utf8.py +0 -0
  206. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/__init__.py +0 -0
  207. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/AlterColumnRequest.py +0 -0
  208. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/AlterProjectionTableRequest.py +0 -0
  209. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/AlterSchemaRequest.py +0 -0
  210. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/AlterTableRequest.py +0 -0
  211. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/Column.py +0 -0
  212. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/ColumnDetails.py +0 -0
  213. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/ColumnType.py +0 -0
  214. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/CreateProjectionRequest.py +0 -0
  215. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/CreateSchemaRequest.py +0 -0
  216. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/CreateViewRequest.py +0 -0
  217. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/FilterString.py +0 -0
  218. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/GetProjectionTableStatsResponse.py +0 -0
  219. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/GetRowColumnSecurityResponse.py +0 -0
  220. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/GetTableStatsResponse.py +0 -0
  221. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/ImportDataRequest.py +0 -0
  222. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/KeyName.py +0 -0
  223. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/ListProjectionsResponse.py +0 -0
  224. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/ListSchemasResponse.py +0 -0
  225. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/ListTablesResponse.py +0 -0
  226. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/ListViewsResponse.py +0 -0
  227. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/NameString.py +0 -0
  228. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/S3File.py +0 -0
  229. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/VectorIndexMetadata.py +0 -0
  230. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/VipRange.py +0 -0
  231. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_flatbuf/tabular/__init__.py +0 -0
  232. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_tests/__init__.py +0 -0
  233. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb/vast_tests/test_ha.py +0 -0
  234. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb.egg-info/SOURCES.txt +0 -0
  235. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb.egg-info/dependency_links.txt +0 -0
  236. {vastdb-2.0.5 → vastdb-2.0.8}/vastdb.egg-info/top_level.txt +0 -0
@@ -4,6 +4,35 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
6
6
 
7
+ ## [2.0.8] (2026-01-21)
8
+ [2.0.8]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.7...v2.0.8
9
+
10
+ ### Changed
11
+ - populate _metadata._vector_index from list_tables response.
12
+
13
+ ## [2.0.7] (2026-01-19)
14
+ [2.0.7]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.5...v2.0.6
15
+
16
+ ### Added
17
+ - Vector Index table support (ORION-276190):
18
+ - `sorting_key_enabled` field in `TableInfo` is now exclusive to Elysium tables (no longer `true` for vector index tables)
19
+ - Vector index tables are now classified as `TableType.Regular` instead of `TableType.Elysium`
20
+ - Requires VAST Cluster with ORION-276190 support
21
+ - Vector Index metadata fields in `TableInfo` (conditioned on `include_vector_index_metadata`):
22
+ - `vector_index_enabled`: boolean flag indicating vector index presence
23
+ - `vector_index_column_name`: name of the column with vector index
24
+ - `vector_index_distance_metric`: distance metric used (L2, COSINE, etc.)
25
+ - `vector_index_sql_function_name`: SQL function name for distance calculation (e.g., "array_distance")
26
+
27
+ ## [2.0.6] (2026-01-19)
28
+ [2.0.6]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.5...v2.0.6
29
+
30
+ ### Added
31
+ - Float16 (half-precision floating point) type support
32
+ - Schema serialization for float16 columns with precision.half
33
+ - Predicate literal handling for float16 values
34
+ - Fixes 'unsupported column type halffloat' error when creating tables with float16 columns
35
+
7
36
  ## [2.0.5] (2025-01-08)
8
37
  [2.0.4]: https://github.com/vast-data/vastdb_sdk/compare/v2.0.4...v2.0.5
9
38
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vastdb
3
- Version: 2.0.5
3
+ Version: 2.0.8
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
@@ -20,6 +20,7 @@ Description-Content-Type: text/markdown
20
20
  License-File: LICENSE
21
21
  Requires-Dist: aws-requests-auth
22
22
  Requires-Dist: ibis-framework~=10.1
23
+ Requires-Dist: sqlglot<28.7,>=23.4
23
24
  Requires-Dist: pyarrow~=18.0
24
25
  Requires-Dist: pyarrow-hotfix==0.7
25
26
  Requires-Dist: flatbuffers
@@ -1,5 +1,6 @@
1
1
  aws-requests-auth
2
2
  ibis-framework~=10.1
3
+ sqlglot>=23.4,<28.7
3
4
  pyarrow~=18.0
4
5
  pyarrow-hotfix==0.7
5
6
  flatbuffers
@@ -29,7 +29,7 @@ setup(
29
29
  name='vastdb',
30
30
  python_requires='>=3.10.0',
31
31
  description='VAST Data SDK',
32
- version='2.0.5' + suffix,
32
+ version='2.0.8' + suffix,
33
33
  url='https://github.com/vast-data/vastdb_sdk',
34
34
  author='VAST DATA',
35
35
  author_email='hello@vastdata.com',
@@ -47,6 +47,7 @@ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.DecimalLiteral as
47
47
  import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Expression as fb_expression
48
48
  import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.FieldIndex as fb_field_index
49
49
  import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.FieldRef as fb_field_ref
50
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Float16Literal as fb_float16_lit
50
51
  import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Float32Literal as fb_float32_lit
51
52
  import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Float64Literal as fb_float64_lit
52
53
  import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int8Literal as fb_int8_lit
@@ -411,15 +412,19 @@ class Predicate:
411
412
 
412
413
  if pa.types.is_floating(pa_type):
413
414
  impl_type, impl_class = None, None
414
- value = float(value)
415
415
 
416
- if pa.types.is_float32(pa_type):
417
- impl_type, impl_class = LiteralImpl.Float32Literal, fb_float32_lit
418
- elif pa.types.is_float64(pa_type):
419
- impl_type, impl_class = LiteralImpl.Float64Literal, fb_float64_lit
416
+ if pa.types.is_float16(pa_type):
417
+ import numpy as np
418
+ value = np.float16(value).view(np.uint16).item()
419
+ impl_type, impl_class = LiteralImpl.Float16Literal, fb_float16_lit
420
420
  else:
421
- # Float16 is not supported by Vast.
422
- raise ValueError(f'unsupported floating point predicate type: {pa_type}, value={value}')
421
+ value = float(value)
422
+ if pa.types.is_float32(pa_type):
423
+ impl_type, impl_class = LiteralImpl.Float32Literal, fb_float32_lit
424
+ elif pa.types.is_float64(pa_type):
425
+ impl_type, impl_class = LiteralImpl.Float64Literal, fb_float64_lit
426
+ else:
427
+ raise ValueError(f'unsupported floating point predicate type: {pa_type}, value={value}')
423
428
 
424
429
  impl_class.Start(self.builder)
425
430
  impl_class.AddValue(self.builder, value)
@@ -783,7 +788,7 @@ def _decode_table_props(s):
783
788
  return {y: _prop_coding[x][1](z) for x, y, z in triplets if z != ''}
784
789
 
785
790
 
786
- TableInfo = namedtuple('TableInfo', 'name properties handle num_rows size_in_bytes num_partitions sorting_key_enabled sorting_score write_amplification acummulative_row_insertion_count sorting_done')
791
+ TableInfo = namedtuple('TableInfo', 'name properties handle num_rows size_in_bytes num_partitions sorting_key_enabled sorting_score write_amplification acummulative_row_insertion_count sorting_done vector_index_enabled vector_index_column_name vector_index_distance_metric vector_index_sql_function_name')
787
792
 
788
793
 
789
794
  def _parse_table_info(obj, parse_properties):
@@ -801,8 +806,15 @@ def _parse_table_info(obj, parse_properties):
801
806
 
802
807
  sorting_score = sorting_score_raw & ((1 << 63) - 1)
803
808
  sorting_done = bool(sorting_score_raw >> 63)
809
+
810
+ vector_index_enabled = obj.VectorIndexEnabled() if hasattr(obj, 'VectorIndexEnabled') else False
811
+ vector_index_column_name = obj.VectorIndexColumnName().decode() if hasattr(obj, 'VectorIndexColumnName') and obj.VectorIndexColumnName() else ""
812
+ vector_index_distance_metric = obj.VectorIndexDistanceMetric().decode() if hasattr(obj, 'VectorIndexDistanceMetric') and obj.VectorIndexDistanceMetric() else ""
813
+ vector_index_sql_function_name = obj.VectorIndexSqlFunctionName().decode() if hasattr(obj, 'VectorIndexSqlFunctionName') and obj.VectorIndexSqlFunctionName() else ""
814
+
804
815
  return TableInfo(name, properties, handle, num_rows, used_bytes, num_partitions, sorting_key_enabled,
805
- sorting_score, write_amplification, acummulative_row_insertion_count, sorting_done)
816
+ sorting_score, write_amplification, acummulative_row_insertion_count, sorting_done,
817
+ vector_index_enabled, vector_index_column_name, vector_index_distance_metric, vector_index_sql_function_name)
806
818
 
807
819
 
808
820
  @dataclass
@@ -1384,20 +1396,24 @@ class VastdbApi:
1384
1396
  parse_properties=_decode_table_props, max_keys=max_keys,
1385
1397
  next_key=next_key, name_prefix=name_prefix, exact_match=exact_match,
1386
1398
  expected_retvals=expected_retvals,
1387
- include_list_stats=include_list_stats, count_only=count_only)
1399
+ include_list_stats=include_list_stats, count_only=count_only,
1400
+ include_vector_index_metadata=False)
1388
1401
 
1389
1402
  def list_tables(self, bucket, schema, txid=0, client_tags=[], max_keys=1000, next_key=0, name_prefix="",
1390
- exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False):
1403
+ exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False,
1404
+ include_vector_index_metadata=False):
1391
1405
  def parse_properties(x):
1392
1406
  return x
1393
1407
  return self._list_tables_internal(bucket=bucket, schema=schema, txid=txid, client_tags=client_tags,
1394
1408
  parse_properties=parse_properties, max_keys=max_keys, next_key=next_key,
1395
1409
  name_prefix=name_prefix, exact_match=exact_match,
1396
1410
  expected_retvals=expected_retvals,
1397
- include_list_stats=include_list_stats, count_only=count_only)
1411
+ include_list_stats=include_list_stats, count_only=count_only,
1412
+ include_vector_index_metadata=include_vector_index_metadata)
1398
1413
 
1399
1414
  def _list_tables_raw(self, bucket, schema, txid=0, client_tags=[], max_keys=1000, next_key=0, name_prefix="",
1400
- exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False):
1415
+ exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False,
1416
+ include_vector_index_metadata=False):
1401
1417
  """
1402
1418
  GET /mybucket/schema_path?table HTTP/1.1
1403
1419
  tabular-txid: TransactionId
@@ -1416,6 +1432,7 @@ class VastdbApi:
1416
1432
 
1417
1433
  headers['tabular-list-count-only'] = str(count_only)
1418
1434
  headers['tabular-include-list-stats'] = str(include_list_stats)
1435
+ headers['tabular-include-vector-index-meta-data'] = str(include_vector_index_metadata).lower()
1419
1436
 
1420
1437
  res = self._request(
1421
1438
  method="GET",
@@ -1431,11 +1448,13 @@ class VastdbApi:
1431
1448
  return lists, next_key, is_truncated, count
1432
1449
 
1433
1450
  def _list_tables_internal(self, bucket, schema, parse_properties, txid=0, client_tags=[], max_keys=1000, next_key=0, name_prefix="",
1434
- exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False):
1451
+ exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False,
1452
+ include_vector_index_metadata=False):
1435
1453
  tables = []
1436
1454
  lists, next_key, is_truncated, count = self._list_tables_raw(bucket, schema, txid=txid, client_tags=client_tags, max_keys=max_keys,
1437
1455
  next_key=next_key, name_prefix=name_prefix, exact_match=exact_match, expected_retvals=expected_retvals,
1438
- include_list_stats=include_list_stats, count_only=count_only)
1456
+ include_list_stats=include_list_stats, count_only=count_only,
1457
+ include_vector_index_metadata=include_vector_index_metadata)
1439
1458
  bucket_name = lists.BucketName().decode()
1440
1459
  schema_name = lists.SchemaName().decode()
1441
1460
  if not bucket.startswith(bucket_name): # ignore snapshot name
@@ -2283,6 +2302,12 @@ def get_field_type(builder: flatbuffers.Builder, field: pa.Field):
2283
2302
  fb_int.AddIsSigned(builder, False)
2284
2303
  field_type = fb_int.End(builder)
2285
2304
 
2305
+ elif field.type.equals(pa.float16()):
2306
+ field_type_type = Type.FloatingPoint
2307
+ fb_floating_point.Start(builder)
2308
+ fb_floating_point.AddPrecision(builder, 0) # half
2309
+ field_type = fb_floating_point.End(builder)
2310
+
2286
2311
  elif field.type.equals(pa.float32()):
2287
2312
  field_type_type = Type.FloatingPoint
2288
2313
  fb_floating_point.Start(builder)
@@ -14,7 +14,7 @@ from vastdb.table_metadata import TableMetadata, TableRef, TableType
14
14
 
15
15
  from . import bucket, errors, schema, table
16
16
  from ._ibis_support import validate_ibis_support_schema
17
- from ._internal import VectorIndexSpec
17
+ from ._internal import VectorIndex, VectorIndexSpec
18
18
 
19
19
  if TYPE_CHECKING:
20
20
  from .table import Table
@@ -130,7 +130,7 @@ class Schema:
130
130
  log.debug("Found table: %s", t[0])
131
131
  return t[0]
132
132
 
133
- def _iter_tables(self, table_name=None, page_size=1000):
133
+ def _iter_tables(self, table_name=None, page_size=1000, include_vector_index_metadata=False):
134
134
  next_key = 0
135
135
  name_prefix = table_name if table_name else ""
136
136
  exact_match = bool(table_name)
@@ -138,7 +138,8 @@ class Schema:
138
138
  _bucket_name, _schema_name, curr_tables, next_key, is_truncated, _ = \
139
139
  self.tx._rpc.api.list_tables(
140
140
  bucket=self.bucket.name, schema=self.name, next_key=next_key, max_keys=page_size, txid=self.tx.active_txid,
141
- exact_match=exact_match, name_prefix=name_prefix, include_list_stats=exact_match)
141
+ exact_match=exact_match, name_prefix=name_prefix, include_list_stats=exact_match,
142
+ include_vector_index_metadata=include_vector_index_metadata)
142
143
  if not curr_tables:
143
144
  break
144
145
  yield from curr_tables
@@ -177,7 +178,17 @@ def _parse_table_info(table_info, schema: "schema.Schema"):
177
178
  table=table_info.name)
178
179
 
179
180
  table_type = TableType.Elysium if table_info.sorting_key_enabled else TableType.Regular
180
- table_metadata = TableMetadata(ref, table_type=table_type)
181
+
182
+ # populate vector_index from list_tables if vector index is enabled
183
+ vector_index = None
184
+ if table_info.vector_index_enabled:
185
+ vector_index = VectorIndex(
186
+ column=table_info.vector_index_column_name,
187
+ distance_metric=table_info.vector_index_distance_metric,
188
+ sql_distance_function=table_info.vector_index_sql_function_name
189
+ )
190
+
191
+ table_metadata = TableMetadata(ref, table_type=table_type, vector_index=vector_index)
181
192
 
182
193
  return table.Table(handle=int(table_info.handle),
183
194
  metadata=table_metadata,
@@ -226,7 +226,7 @@ class TableInTransaction(ITable):
226
226
 
227
227
  @property
228
228
  def _internal_rowid_field(self) -> pa.Field:
229
- return INTERNAL_ROW_ID_SORTED_FIELD if self._is_sorted_table else INTERNAL_ROW_ID_FIELD
229
+ return INTERNAL_ROW_ID_SORTED_FIELD if self._uses_global_row_ids else INTERNAL_ROW_ID_FIELD
230
230
 
231
231
  def sorted_columns(self) -> list[pa.Field]:
232
232
  """Return sorted columns' metadata."""
@@ -818,6 +818,16 @@ class TableInTransaction(ITable):
818
818
  def _is_sorted_table(self) -> bool:
819
819
  return self._metadata.table_type is TableType.Elysium
820
820
 
821
+ @property
822
+ def _uses_global_row_ids(self) -> bool:
823
+ """Check if table uses global row IDs (decimal128: ehandle + row_id).
824
+
825
+ Both Elysium and Vector Index tables use global row IDs.
826
+ """
827
+ # _vector_index is set from list_tables or synced from stats.vector_index by _parse_stats_vector_index()
828
+ has_vector_index = self._metadata._vector_index is not None
829
+ return self._is_sorted_table or has_vector_index
830
+
821
831
  def vector_search(
822
832
  self,
823
833
  vec: list[float],
@@ -173,14 +173,14 @@ class TableMetadata:
173
173
  self._parse_stats_vector_index()
174
174
 
175
175
  def _parse_stats_vector_index(self):
176
- vector_index_is_set = self._vector_index is not None
176
+ if self._vector_index is not None and self._stats.vector_index != self._vector_index:
177
+ is_empty_placeholder = not self._vector_index.column and not self._vector_index.distance_metric
178
+ if not is_empty_placeholder:
179
+ raise ValueError(
180
+ f"Table has index {self._stats.vector_index}, but was initialized as {self._vector_index}"
181
+ )
177
182
 
178
- if vector_index_is_set and self._stats.vector_index != self._vector_index:
179
- raise ValueError(
180
- f"Table has index {self._stats.vector_index}, but was initialized as {self._vector_index}"
181
- )
182
- else:
183
- self._vector_index = self._stats.vector_index
183
+ self._vector_index = self._stats.vector_index
184
184
 
185
185
  def _set_sorted_table(self, tx: "Transaction"):
186
186
  self._table_type = TableType.Elysium
@@ -9,6 +9,7 @@ from contextlib import closing
9
9
  from tempfile import NamedTemporaryFile
10
10
 
11
11
  import ibis
12
+ import numpy as np
12
13
  import pandas as pd
13
14
  import pyarrow as pa
14
15
  import pyarrow.compute as pc
@@ -390,6 +391,7 @@ def test_types(session, clean_bucket_name):
390
391
  ('a2', pa.int16()),
391
392
  ('a4', pa.int64()),
392
393
  ('b', pa.float32()),
394
+ ('f16', pa.float16()),
393
395
  ('s', pa.string()),
394
396
  ('d', pa.decimal128(7, 3)),
395
397
  ('bin', pa.binary()),
@@ -410,6 +412,7 @@ def test_types(session, clean_bucket_name):
410
412
  [1999, 2000, 2001],
411
413
  [11122221, 222111122, 333333],
412
414
  [0.5, 1.5, 2.5],
415
+ [np.float16(0.5), np.float16(1.5), np.float16(2.5)],
413
416
  ["a", "v", "s"],
414
417
  [decimal.Decimal('110.52'), decimal.Decimal('231.15'), decimal.Decimal('3332.44')],
415
418
  [b"\x01\x02", b"\x01\x05", b"\x01\x07"],
@@ -436,6 +439,13 @@ def test_types(session, clean_bucket_name):
436
439
  assert select(t['a2'] == 2000) == expected.filter(pc.field('a2') == 2000)
437
440
  assert select(t['a4'] == 222111122) == expected.filter(pc.field('a4') == 222111122)
438
441
  assert select(t['b'] == 1.5) == expected.filter(pc.field('b') == 1.5)
442
+
443
+ # Test float16 predicate (PyArrow compute doesn't support float16, so validate manually)
444
+ f16_literal = np.float16(1.5)
445
+ result = select(t['f16'] == f16_literal)
446
+ assert len(result) == 1, f"Expected 1 row for f16==1.5, got {len(result)}"
447
+ assert np.float16(result.column('f16')[0].as_py()) == f16_literal
448
+
439
449
  assert select(t['s'] == "v") == expected.filter(pc.field('s') == "v")
440
450
  assert select(t['d'] == 231.15) == expected.filter(pc.field('d') == 231.15)
441
451
  assert select(t['bin'] == b"\x01\x02") == expected.filter(pc.field('bin') == b"\x01\x02")
@@ -468,6 +478,59 @@ def test_types(session, clean_bucket_name):
468
478
  assert select(t['ts9'] == ts_literal) == expected.filter(pc.field('ts9') == ts_literal)
469
479
 
470
480
 
481
+ @pytest.mark.parametrize("element_type,test_name", [
482
+ (pa.float32(), "float32"),
483
+ (pa.float16(), "float16"),
484
+ ])
485
+ def test_vector_types(session, clean_bucket_name, element_type, test_name):
486
+ """Test vector (fixed-size list) columns with different element types."""
487
+ vector_dim = 3
488
+ vec_type = pa.list_(pa.field('', element_type, False), vector_dim)
489
+
490
+ columns = pa.schema([
491
+ ('id', pa.int32()),
492
+ ('vector', vec_type),
493
+ ])
494
+
495
+ # Create test data based on element type
496
+ if element_type == pa.float16():
497
+ test_vectors = [
498
+ [np.float16(1.0), np.float16(2.0), np.float16(3.0)],
499
+ [np.float16(4.5), np.float16(5.5), np.float16(6.5)],
500
+ [np.float16(-1.0), np.float16(0.0), np.float16(1.0)],
501
+ ]
502
+ else: # float32
503
+ test_vectors = [
504
+ [1.0, 2.0, 3.0],
505
+ [4.5, 5.5, 6.5],
506
+ [-1.0, 0.0, 1.0],
507
+ ]
508
+
509
+ expected = pa.table(schema=columns, data=[
510
+ [0, 1, 2],
511
+ test_vectors,
512
+ ])
513
+
514
+ with prepare_data(session, clean_bucket_name, 's', 't', expected) as table:
515
+ # Read back and verify
516
+ actual = table.select().read_all()
517
+ assert actual.schema == columns
518
+ assert len(actual) == 3
519
+
520
+ # Verify vector data
521
+ actual_vectors = actual.column('vector').to_pylist()
522
+ for i, (actual_vec, expected_vec) in enumerate(zip(actual_vectors, test_vectors)):
523
+ assert len(actual_vec) == vector_dim, f"Wrong vector dimension at row {i}"
524
+ for j, (act, exp) in enumerate(zip(actual_vec, expected_vec)):
525
+ if element_type == pa.float16():
526
+ assert np.float16(act) == np.float16(exp), \
527
+ f"Mismatch at row {i}, element {j}: {act} != {exp}"
528
+ else:
529
+ assert act == exp, f"Mismatch at row {i}, element {j}: {act} != {exp}"
530
+
531
+ log.info(f"Vector type test ({test_name}) passed successfully")
532
+
533
+
471
534
  @pytest.mark.parametrize("arrow_type,internal_support", [
472
535
  # Types not supported by Vast.
473
536
  (pa.null(), False),