vastdb 1.3.7__tar.gz → 1.3.9__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 (227) hide show
  1. {vastdb-1.3.7 → vastdb-1.3.9}/CHANGELOG.md +30 -2
  2. {vastdb-1.3.7 → vastdb-1.3.9}/PKG-INFO +1 -1
  3. {vastdb-1.3.7 → vastdb-1.3.9}/setup.py +1 -1
  4. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/__init__.py +2 -2
  5. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/_internal.py +197 -83
  6. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/test_perf.py +2 -2
  7. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/config.py +3 -0
  8. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/errors.py +6 -0
  9. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/features.py +9 -0
  10. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/schema.py +5 -3
  11. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/table.py +99 -17
  12. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/test_imports.py +70 -1
  13. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/test_tables.py +217 -0
  14. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/util.py +2 -2
  15. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Aggregate.py +4 -4
  16. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Call.py +2 -2
  17. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CaseFragment.py +2 -2
  18. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Cast.py +2 -2
  19. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConditionalCase.py +2 -2
  20. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Filter.py +3 -3
  21. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Grouping.py +1 -1
  22. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Join.py +4 -4
  23. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/KeyValue.py +2 -2
  24. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Limit.py +2 -2
  25. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ListLiteral.py +1 -1
  26. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Literal.py +1 -1
  27. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralColumn.py +1 -1
  28. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralRelation.py +2 -2
  29. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapKey.py +1 -1
  30. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapLiteral.py +1 -1
  31. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/OrderBy.py +3 -3
  32. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Plan.py +1 -1
  33. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Project.py +3 -3
  34. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOperation.py +2 -2
  35. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SimpleCase.py +3 -3
  36. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SortKey.py +1 -1
  37. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Source.py +4 -4
  38. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructLiteral.py +1 -1
  39. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/WindowCall.py +3 -3
  40. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryBatch.py +1 -1
  41. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryEncoding.py +1 -1
  42. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Field.py +3 -3
  43. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Footer.py +4 -4
  44. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Message.py +1 -1
  45. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/RecordBatch.py +3 -3
  46. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Schema.py +2 -2
  47. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixIndexCSX.py +4 -4
  48. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensor.py +2 -2
  49. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCOO.py +2 -2
  50. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCSF.py +4 -4
  51. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Tensor.py +2 -2
  52. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/CreateProjectionRequest.py +1 -1
  53. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/GetRowColumnSecurityResponse.py +4 -4
  54. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/GetTableStatsResponse.py +1 -1
  55. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/ImportDataRequest.py +34 -1
  56. vastdb-1.3.9/vastdb/vast_flatbuf/tabular/KeyName.py +45 -0
  57. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/ListProjectionsResponse.py +1 -1
  58. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/ListSchemasResponse.py +1 -1
  59. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/ListTablesResponse.py +1 -1
  60. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/ListViewsResponse.py +1 -1
  61. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb.egg-info/PKG-INFO +1 -1
  62. vastdb-1.3.9/vastdb.egg-info/SOURCES.txt +223 -0
  63. vastdb-1.3.9/vastdb.egg-info/top_level.txt +1 -0
  64. vastdb-1.3.7/vastdb.egg-info/SOURCES.txt +0 -222
  65. vastdb-1.3.7/vastdb.egg-info/top_level.txt +0 -2
  66. {vastdb-1.3.7 → vastdb-1.3.9}/CONTRIBUTING.md +0 -0
  67. {vastdb-1.3.7 → vastdb-1.3.9}/LICENSE +0 -0
  68. {vastdb-1.3.7 → vastdb-1.3.9}/MANIFEST.in +0 -0
  69. {vastdb-1.3.7 → vastdb-1.3.9}/README.md +0 -0
  70. {vastdb-1.3.7 → vastdb-1.3.9}/requirements.txt +0 -0
  71. {vastdb-1.3.7 → vastdb-1.3.9}/setup.cfg +0 -0
  72. {vastdb-1.3.7/vast_flatbuf → vastdb-1.3.9/vastdb/bench}/__init__.py +0 -0
  73. {vastdb-1.3.7/vast_flatbuf/org → vastdb-1.3.9/vastdb/bench/perf_bench}/__init__.py +0 -0
  74. {vastdb-1.3.7/vast_flatbuf/org/apache → vastdb-1.3.9/vastdb/bench/perf_bench/bench_repo}/__init__.py +0 -0
  75. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/bench_repo/mega_combo.py +0 -0
  76. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/cli.py +0 -0
  77. {vastdb-1.3.7/vast_flatbuf/org/apache/arrow → vastdb-1.3.9/vastdb/bench/perf_bench/common}/__init__.py +0 -0
  78. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/common/constants.py +0 -0
  79. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/common/log_utils.py +0 -0
  80. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/common/types.py +0 -0
  81. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/common/utils.py +0 -0
  82. {vastdb-1.3.7/vast_flatbuf/org/apache/arrow/computeir → vastdb-1.3.9/vastdb/bench/perf_bench/dataset}/__init__.py +0 -0
  83. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/dataset/generate_secmaster.py +0 -0
  84. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/dataset/generate_stocks_dataset.py +0 -0
  85. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/dataset/schemas.py +0 -0
  86. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/dataset/secmaster.py +0 -0
  87. {vastdb-1.3.7/vast_flatbuf/org/apache/arrow/computeir/flatbuf → vastdb-1.3.9/vastdb/bench/perf_bench/orchestrate}/__init__.py +0 -0
  88. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/orchestrate/bench_spec.py +0 -0
  89. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/orchestrate/results_helpers.py +0 -0
  90. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/orchestrate/scenario.py +0 -0
  91. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/orchestrate/scenario_generator.py +0 -0
  92. {vastdb-1.3.7/vast_flatbuf/org/apache/arrow/flatbuf → vastdb-1.3.9/vastdb/bench/perf_bench/query}/__init__.py +0 -0
  93. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/query/arrow_common.py +0 -0
  94. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/query/query.py +0 -0
  95. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/query/query_pyarrow.py +0 -0
  96. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/query/query_vastdb.py +0 -0
  97. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/perf_bench/run.py +0 -0
  98. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bench/test_sample.py +0 -0
  99. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/bucket.py +0 -0
  100. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/conftest.py +0 -0
  101. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/session.py +0 -0
  102. {vastdb-1.3.7/vast_flatbuf/tabular → vastdb-1.3.9/vastdb/tests}/__init__.py +0 -0
  103. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/metrics.py +0 -0
  104. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/test_duckdb.py +0 -0
  105. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/test_nested.py +0 -0
  106. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/test_projections.py +0 -0
  107. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/test_sanity.py +0 -0
  108. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/test_schemas.py +0 -0
  109. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/tests/test_util.py +0 -0
  110. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/transaction.py +0 -0
  111. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/util.py +0 -0
  112. {vastdb-1.3.7/vastdb/bench → vastdb-1.3.9/vastdb/vast_flatbuf}/__init__.py +0 -0
  113. {vastdb-1.3.7/vastdb/bench/perf_bench → vastdb-1.3.9/vastdb/vast_flatbuf/org}/__init__.py +0 -0
  114. {vastdb-1.3.7/vastdb/bench/perf_bench/bench_repo → vastdb-1.3.9/vastdb/vast_flatbuf/org/apache}/__init__.py +0 -0
  115. {vastdb-1.3.7/vastdb/bench/perf_bench/common → vastdb-1.3.9/vastdb/vast_flatbuf/org/apache/arrow}/__init__.py +0 -0
  116. {vastdb-1.3.7/vastdb/bench/perf_bench/dataset → vastdb-1.3.9/vastdb/vast_flatbuf/org/apache/arrow/computeir}/__init__.py +0 -0
  117. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySlice.py +0 -0
  118. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySubscript.py +0 -0
  119. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BinaryLiteral.py +0 -0
  120. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BooleanLiteral.py +0 -0
  121. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Bound.py +0 -0
  122. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConcreteBoundImpl.py +0 -0
  123. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CurrentRow.py +0 -0
  124. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DateLiteral.py +0 -0
  125. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DecimalLiteral.py +0 -0
  126. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Deref.py +0 -0
  127. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DurationLiteral.py +0 -0
  128. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Expression.py +0 -0
  129. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ExpressionImpl.py +0 -0
  130. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldIndex.py +0 -0
  131. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldRef.py +0 -0
  132. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FixedSizeBinaryLiteral.py +0 -0
  133. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float16Literal.py +0 -0
  134. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float32Literal.py +0 -0
  135. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float64Literal.py +0 -0
  136. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Following.py +0 -0
  137. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Frame.py +0 -0
  138. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int16Literal.py +0 -0
  139. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int32Literal.py +0 -0
  140. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int64Literal.py +0 -0
  141. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int8Literal.py +0 -0
  142. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteral.py +0 -0
  143. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralDaysMilliseconds.py +0 -0
  144. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralImpl.py +0 -0
  145. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralMonths.py +0 -0
  146. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/JoinKind.py +0 -0
  147. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralImpl.py +0 -0
  148. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Ordering.py +0 -0
  149. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Preceding.py +0 -0
  150. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelId.py +0 -0
  151. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Relation.py +0 -0
  152. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelationImpl.py +0 -0
  153. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOpKind.py +0 -0
  154. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StringLiteral.py +0 -0
  155. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructField.py +0 -0
  156. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimeLiteral.py +0 -0
  157. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimestampLiteral.py +0 -0
  158. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt16Literal.py +0 -0
  159. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt32Literal.py +0 -0
  160. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt64Literal.py +0 -0
  161. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt8Literal.py +0 -0
  162. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Unbounded.py +0 -0
  163. {vastdb-1.3.7/vastdb/bench/perf_bench/orchestrate → vastdb-1.3.9/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf}/__init__.py +0 -0
  164. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Binary.py +0 -0
  165. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Block.py +0 -0
  166. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompression.py +0 -0
  167. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompressionMethod.py +0 -0
  168. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Bool.py +0 -0
  169. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Buffer.py +0 -0
  170. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/CompressionType.py +0 -0
  171. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Date.py +0 -0
  172. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/DateUnit.py +0 -0
  173. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Decimal.py +0 -0
  174. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryKind.py +0 -0
  175. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Duration.py +0 -0
  176. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Endianness.py +0 -0
  177. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Feature.py +0 -0
  178. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/FieldNode.py +0 -0
  179. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeBinary.py +0 -0
  180. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeList.py +0 -0
  181. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/FloatingPoint.py +0 -0
  182. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Int.py +0 -0
  183. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Interval.py +0 -0
  184. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/IntervalUnit.py +0 -0
  185. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/KeyValue.py +0 -0
  186. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/LargeBinary.py +0 -0
  187. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/LargeList.py +0 -0
  188. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/LargeUtf8.py +0 -0
  189. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/List.py +0 -0
  190. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Map.py +0 -0
  191. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/MessageHeader.py +0 -0
  192. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/MetadataVersion.py +0 -0
  193. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Null.py +0 -0
  194. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Precision.py +0 -0
  195. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixCompressedAxis.py +0 -0
  196. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndex.py +0 -0
  197. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Struct_.py +0 -0
  198. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/TensorDim.py +0 -0
  199. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Time.py +0 -0
  200. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/TimeUnit.py +0 -0
  201. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Timestamp.py +0 -0
  202. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Type.py +0 -0
  203. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Union.py +0 -0
  204. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/UnionMode.py +0 -0
  205. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/org/apache/arrow/flatbuf/Utf8.py +0 -0
  206. {vastdb-1.3.7/vastdb/bench/perf_bench/query → vastdb-1.3.9/vastdb/vast_flatbuf/org/apache/arrow/flatbuf}/__init__.py +0 -0
  207. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/AlterColumnRequest.py +0 -0
  208. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/AlterProjectionTableRequest.py +0 -0
  209. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/AlterSchemaRequest.py +0 -0
  210. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/AlterTableRequest.py +0 -0
  211. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/Column.py +0 -0
  212. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/ColumnDetails.py +0 -0
  213. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/ColumnType.py +0 -0
  214. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/CreateSchemaRequest.py +0 -0
  215. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/CreateViewRequest.py +0 -0
  216. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/FilterString.py +0 -0
  217. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/GetProjectionTableStatsResponse.py +0 -0
  218. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/NameString.py +0 -0
  219. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/ObjectDetails.py +0 -0
  220. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/S3File.py +0 -0
  221. {vastdb-1.3.7 → vastdb-1.3.9/vastdb}/vast_flatbuf/tabular/VipRange.py +0 -0
  222. {vastdb-1.3.7/vastdb/tests → vastdb-1.3.9/vastdb/vast_flatbuf/tabular}/__init__.py +0 -0
  223. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/vast_tests/__init__.py +0 -0
  224. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/vast_tests/test_ha.py +0 -0
  225. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb/vast_tests/test_scale.py +0 -0
  226. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb.egg-info/dependency_links.txt +0 -0
  227. {vastdb-1.3.7 → vastdb-1.3.9}/vastdb.egg-info/requires.txt +0 -0
@@ -4,14 +4,42 @@ 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
+ ## [1.3.9] (2025-04-22)
8
+ [1.3.9]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.8...v1.3.9
9
+
10
+ ### Fixed
11
+ - Elysium-check validation
12
+ - Fix logging level
13
+
14
+ ### Added
15
+ - Support elysium new stats
16
+ - Exposing `sorting_done` flag for Elysium tables (for other tables, `sorting_done()` will always return false)
17
+
18
+
19
+ ## [1.3.8] (2025-03-31)
20
+ [1.3.8]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.7...v1.3.8
21
+
22
+ ### Fixed
23
+ - Support InsufficientCapacity (fixes internal issue)
24
+
25
+ ### Added
26
+ - Add server feature supported checks
27
+ - Support zip import
28
+ - Add split estimation for sorted tables
29
+ - Support Update & Delete for Sorted Tables
30
+ - Support Elysium DDL for the pysdk
31
+
32
+ ### Changed
33
+ - Move vast_flatbuf under vastdb
34
+
7
35
  ## [1.3.7] (2024-12-23)
8
- [1.3.2]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.1...v1.3.2
36
+ [1.3.7]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.6...v1.3.7
9
37
 
10
38
  ### Fixed
11
39
  - Fix creating kafka schema before calling create table.
12
40
 
13
41
  ## [1.3.6] (2024-12-23)
14
- [1.3.2]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.1...v1.3.2
42
+ [1.3.6]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.5...v1.3.6
15
43
 
16
44
  ### Fixed
17
45
  - Fix missing api call.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 1.3.7
3
+ Version: 1.3.9
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
@@ -29,7 +29,7 @@ setup(
29
29
  name='vastdb',
30
30
  python_requires='>=3.9.0',
31
31
  description='VAST Data SDK',
32
- version='1.3.7' + suffix,
32
+ version='1.3.9' + suffix,
33
33
  url='https://github.com/vast-data/vastdb_sdk',
34
34
  author='VAST DATA',
35
35
  author_email='hello@vastdata.com',
@@ -13,5 +13,5 @@ def connect(*args, **kwargs): # noqa: D103
13
13
 
14
14
  def version():
15
15
  """Return VAST DB SDK version."""
16
- import importlib
17
- return importlib.metadata.distribution(__package__).version
16
+ from importlib import metadata
17
+ return metadata.distribution(__package__).version
@@ -38,75 +38,82 @@ from ibis.expr.operations.relations import Field
38
38
  from ibis.expr.operations.strings import StartsWith, StringContains
39
39
  from ibis.expr.operations.structs import StructField
40
40
 
41
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.BinaryLiteral as fb_binary_lit
42
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.BooleanLiteral as fb_bool_lit
43
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Call as fb_call
44
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.DateLiteral as fb_date32_lit
45
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.DecimalLiteral as fb_decimal_lit
46
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Expression as fb_expression
47
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.FieldIndex as fb_field_index
48
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.FieldRef as fb_field_ref
49
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Float32Literal as fb_float32_lit
50
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Float64Literal as fb_float64_lit
51
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int8Literal as fb_int8_lit
52
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int16Literal as fb_int16_lit
53
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int32Literal as fb_int32_lit
54
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int64Literal as fb_int64_lit
55
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Literal as fb_literal
56
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Relation as fb_relation
57
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.RelationImpl as rel_impl
58
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Source as fb_source
59
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.StringLiteral as fb_string_lit
60
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.TimeLiteral as fb_time_lit
61
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.TimestampLiteral as fb_timestamp_lit
62
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt8Literal as fb_uint8_lit
63
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt16Literal as fb_uint16_lit
64
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt32Literal as fb_uint32_lit
65
- import vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt64Literal as fb_uint64_lit
66
- import vast_flatbuf.org.apache.arrow.flatbuf.Binary as fb_binary
67
- import vast_flatbuf.org.apache.arrow.flatbuf.Bool as fb_bool
68
- import vast_flatbuf.org.apache.arrow.flatbuf.Date as fb_date
69
- import vast_flatbuf.org.apache.arrow.flatbuf.Decimal as fb_decimal
70
- import vast_flatbuf.org.apache.arrow.flatbuf.Field as fb_field
71
- import vast_flatbuf.org.apache.arrow.flatbuf.FixedSizeBinary as fb_fixed_size_binary
72
- import vast_flatbuf.org.apache.arrow.flatbuf.FloatingPoint as fb_floating_point
73
- import vast_flatbuf.org.apache.arrow.flatbuf.Int as fb_int
74
- import vast_flatbuf.org.apache.arrow.flatbuf.List as fb_list
75
- import vast_flatbuf.org.apache.arrow.flatbuf.Map as fb_map
76
- import vast_flatbuf.org.apache.arrow.flatbuf.Schema as fb_schema
77
- import vast_flatbuf.org.apache.arrow.flatbuf.Struct_ as fb_struct
78
- import vast_flatbuf.org.apache.arrow.flatbuf.Time as fb_time
79
- import vast_flatbuf.org.apache.arrow.flatbuf.Timestamp as fb_timestamp
80
- import vast_flatbuf.org.apache.arrow.flatbuf.Utf8 as fb_utf8
81
- import vast_flatbuf.tabular.AlterColumnRequest as tabular_alter_column
82
- import vast_flatbuf.tabular.AlterProjectionTableRequest as tabular_alter_projection
83
- import vast_flatbuf.tabular.AlterSchemaRequest as tabular_alter_schema
84
- import vast_flatbuf.tabular.AlterTableRequest as tabular_alter_table
85
- import vast_flatbuf.tabular.Column as tabular_projecion_column
86
- import vast_flatbuf.tabular.ColumnType as tabular_proj_column_type
87
- import vast_flatbuf.tabular.CreateProjectionRequest as tabular_create_projection
88
- import vast_flatbuf.tabular.CreateSchemaRequest as tabular_create_schema
89
- import vast_flatbuf.tabular.ImportDataRequest as tabular_import_data
90
- import vast_flatbuf.tabular.S3File as tabular_s3_file
91
- from vast_flatbuf.org.apache.arrow.computeir.flatbuf.Deref import Deref
92
- from vast_flatbuf.org.apache.arrow.computeir.flatbuf.ExpressionImpl import (
41
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.BinaryLiteral as fb_binary_lit
42
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.BooleanLiteral as fb_bool_lit
43
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Call as fb_call
44
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.DateLiteral as fb_date32_lit
45
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.DecimalLiteral as fb_decimal_lit
46
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Expression as fb_expression
47
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.FieldIndex as fb_field_index
48
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.FieldRef as fb_field_ref
49
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Float32Literal as fb_float32_lit
50
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Float64Literal as fb_float64_lit
51
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int8Literal as fb_int8_lit
52
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int16Literal as fb_int16_lit
53
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int32Literal as fb_int32_lit
54
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Int64Literal as fb_int64_lit
55
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Literal as fb_literal
56
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Relation as fb_relation
57
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.RelationImpl as rel_impl
58
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Source as fb_source
59
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.StringLiteral as fb_string_lit
60
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.TimeLiteral as fb_time_lit
61
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.TimestampLiteral as fb_timestamp_lit
62
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt8Literal as fb_uint8_lit
63
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt16Literal as fb_uint16_lit
64
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt32Literal as fb_uint32_lit
65
+ import vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt64Literal as fb_uint64_lit
66
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Binary as fb_binary
67
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Bool as fb_bool
68
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Date as fb_date
69
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Decimal as fb_decimal
70
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Field as fb_field
71
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.FixedSizeBinary as fb_fixed_size_binary
72
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.FloatingPoint as fb_floating_point
73
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Int as fb_int
74
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.List as fb_list
75
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Map as fb_map
76
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Schema as fb_schema
77
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Struct_ as fb_struct
78
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Time as fb_time
79
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Timestamp as fb_timestamp
80
+ import vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Utf8 as fb_utf8
81
+ import vastdb.vast_flatbuf.tabular.AlterColumnRequest as tabular_alter_column
82
+ import vastdb.vast_flatbuf.tabular.AlterProjectionTableRequest as tabular_alter_projection
83
+ import vastdb.vast_flatbuf.tabular.AlterSchemaRequest as tabular_alter_schema
84
+ import vastdb.vast_flatbuf.tabular.AlterTableRequest as tabular_alter_table
85
+ import vastdb.vast_flatbuf.tabular.Column as tabular_projecion_column
86
+ import vastdb.vast_flatbuf.tabular.ColumnType as tabular_proj_column_type
87
+ import vastdb.vast_flatbuf.tabular.CreateProjectionRequest as tabular_create_projection
88
+ import vastdb.vast_flatbuf.tabular.CreateSchemaRequest as tabular_create_schema
89
+ import vastdb.vast_flatbuf.tabular.ImportDataRequest as tabular_import_data
90
+ import vastdb.vast_flatbuf.tabular.KeyName as import_key_name
91
+ import vastdb.vast_flatbuf.tabular.S3File as tabular_s3_file
92
+ from vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.Deref import Deref
93
+ from vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.ExpressionImpl import (
93
94
  ExpressionImpl,
94
95
  )
95
- from vast_flatbuf.org.apache.arrow.computeir.flatbuf.LiteralImpl import LiteralImpl
96
- from vast_flatbuf.org.apache.arrow.flatbuf.DateUnit import DateUnit
97
- from vast_flatbuf.org.apache.arrow.flatbuf.TimeUnit import TimeUnit
98
- from vast_flatbuf.org.apache.arrow.flatbuf.Type import Type
99
- from vast_flatbuf.tabular.GetProjectionTableStatsResponse import (
96
+ from vastdb.vast_flatbuf.org.apache.arrow.computeir.flatbuf.LiteralImpl import (
97
+ LiteralImpl,
98
+ )
99
+ from vastdb.vast_flatbuf.org.apache.arrow.flatbuf.DateUnit import DateUnit
100
+ from vastdb.vast_flatbuf.org.apache.arrow.flatbuf.TimeUnit import TimeUnit
101
+ from vastdb.vast_flatbuf.org.apache.arrow.flatbuf.Type import Type
102
+ from vastdb.vast_flatbuf.tabular.GetProjectionTableStatsResponse import (
100
103
  GetProjectionTableStatsResponse as get_projection_table_stats,
101
104
  )
102
- from vast_flatbuf.tabular.GetTableStatsResponse import (
105
+ from vastdb.vast_flatbuf.tabular.GetTableStatsResponse import (
103
106
  GetTableStatsResponse as get_table_stats,
104
107
  )
105
- from vast_flatbuf.tabular.ListProjectionsResponse import (
108
+ from vastdb.vast_flatbuf.tabular.ListProjectionsResponse import (
106
109
  ListProjectionsResponse as list_projections,
107
110
  )
108
- from vast_flatbuf.tabular.ListSchemasResponse import ListSchemasResponse as list_schemas
109
- from vast_flatbuf.tabular.ListTablesResponse import ListTablesResponse as list_tables
111
+ from vastdb.vast_flatbuf.tabular.ListSchemasResponse import (
112
+ ListSchemasResponse as list_schemas,
113
+ )
114
+ from vastdb.vast_flatbuf.tabular.ListTablesResponse import (
115
+ ListTablesResponse as list_tables,
116
+ )
110
117
 
111
118
  from . import errors, util
112
119
  from .config import BackoffConfig
@@ -787,7 +794,7 @@ def _decode_table_props(s):
787
794
  return {y: _prop_coding[x][1](z) for x, y, z in triplets if z != ''}
788
795
 
789
796
 
790
- TableInfo = namedtuple('TableInfo', 'name properties handle num_rows size_in_bytes num_partitions')
797
+ 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
798
 
792
799
 
793
800
  def _parse_table_info(obj, parse_properties):
@@ -798,13 +805,21 @@ def _parse_table_info(obj, parse_properties):
798
805
  used_bytes = obj.SizeInBytes()
799
806
  num_partitions = obj.NumPartitions()
800
807
  properties = parse_properties(properties)
801
- return TableInfo(name, properties, handle, num_rows, used_bytes, num_partitions)
808
+ sorting_key_enabled = obj.SortingKeyEnabled()
809
+ sorting_score_raw = obj.SortingScore()
810
+ write_amplification = obj.WriteAmplification()
811
+ acummulative_row_insertion_count = obj.AcummulativeRowInseritionCount()
812
+
813
+ sorting_score = sorting_score_raw & ((1 << 63) - 1)
814
+ sorting_done = bool(sorting_score_raw >> 63)
815
+ return TableInfo(name, properties, handle, num_rows, used_bytes, num_partitions, sorting_key_enabled,
816
+ sorting_score, write_amplification, acummulative_row_insertion_count, sorting_done)
802
817
 
803
818
 
804
819
  # Results that returns from tablestats
805
820
 
806
821
 
807
- TableStatsResult = namedtuple("TableStatsResult", ["num_rows", "size_in_bytes", "is_external_rowid_alloc", "endpoints"])
822
+ TableStatsResult = namedtuple("TableStatsResult", 'num_rows size_in_bytes is_external_rowid_alloc sorting_key_enabled sorting_score write_amplification acummulative_row_inserition_count sorting_done endpoints')
808
823
 
809
824
 
810
825
  _RETRIABLE_EXCEPTIONS = (
@@ -962,12 +977,12 @@ class VastdbApi:
962
977
  prefix += '&'.join(params_list)
963
978
  return prefix
964
979
 
965
- def _fill_common_headers(self, txid=0, client_tags=[], version_id=1):
980
+ def _fill_common_headers(self, txid=0, client_tags=[], version_id=1, sorting_key=[]):
966
981
  common_headers = {
967
982
  'tabular-txid': str(txid),
968
983
  'tabular-api-version-id': str(version_id),
969
984
  'tabular-client-name': 'tabular-api'
970
- }
985
+ } | {f"tabular-sorted-column-{i}": str(k) for i, k in enumerate(sorting_key)}
971
986
 
972
987
  return common_headers | {f'tabular-client-tags-{index}': tag for index, tag in enumerate(client_tags)}
973
988
 
@@ -1122,11 +1137,12 @@ class VastdbApi:
1122
1137
 
1123
1138
  def create_table(self, bucket, schema, name, arrow_schema=None,
1124
1139
  txid=0, client_tags=[], expected_retvals=[],
1125
- create_imports_table=False, use_external_row_ids_allocation=False, table_props=None):
1140
+ create_imports_table=False, use_external_row_ids_allocation=False, table_props=None,
1141
+ sorting_key=[]):
1126
1142
  self._create_table_internal(bucket=bucket, schema=schema, name=name, arrow_schema=arrow_schema,
1127
1143
  txid=txid, client_tags=client_tags, expected_retvals=expected_retvals,
1128
1144
  create_imports_table=create_imports_table, use_external_row_ids_allocation=use_external_row_ids_allocation,
1129
- table_props=table_props)
1145
+ table_props=table_props, sorting_key=sorting_key)
1130
1146
 
1131
1147
  def create_topic(self, bucket, name, topic_partitions, expected_retvals=[],
1132
1148
  message_timestamp_type=None, retention_ms=None, message_timestamp_after_max_ms=None,
@@ -1143,7 +1159,8 @@ class VastdbApi:
1143
1159
 
1144
1160
  def _create_table_internal(self, bucket, schema, name, arrow_schema=None,
1145
1161
  txid=0, client_tags=[], expected_retvals=[], topic_partitions=0,
1146
- create_imports_table=False, use_external_row_ids_allocation=False, table_props=None):
1162
+ create_imports_table=False, use_external_row_ids_allocation=False, table_props=None,
1163
+ sorting_key=[]):
1147
1164
  """
1148
1165
  Create a table, use the following request
1149
1166
  POST /bucket/schema/table?table HTTP/1.1
@@ -1160,8 +1177,7 @@ class VastdbApi:
1160
1177
  The request will look like:
1161
1178
  POST /bucket/schema/table?table&sub-table=vastdb-imported-objects HTTP/1.1
1162
1179
  """
1163
- headers = self._fill_common_headers(txid=txid, client_tags=client_tags)
1164
-
1180
+ headers = self._fill_common_headers(txid=txid, client_tags=client_tags, sorting_key=sorting_key)
1165
1181
  if arrow_schema is None:
1166
1182
  arrow_schema = pa.schema([])
1167
1183
 
@@ -1204,8 +1220,16 @@ class VastdbApi:
1204
1220
  num_rows = stats.NumRows()
1205
1221
  size_in_bytes = stats.SizeInBytes()
1206
1222
  is_external_rowid_alloc = stats.IsExternalRowidAlloc()
1223
+ sorting_key_enabled = stats.SortingKeyEnabled()
1224
+ sorting_score_raw = stats.SortingScore()
1225
+ write_amplification = stats.WriteAmplification()
1226
+ acummulative_row_inserition_count = stats.AcummulativeRowInseritionCount()
1227
+
1228
+ sorting_score = sorting_score_raw & ((1 << 63) - 1)
1229
+ sorting_done = bool(sorting_score_raw >> 63)
1230
+
1207
1231
  endpoints = [self.url] # we cannot replace the host by a VIP address in HTTPS-based URLs
1208
- return TableStatsResult(num_rows, size_in_bytes, is_external_rowid_alloc, tuple(endpoints))
1232
+ return TableStatsResult(num_rows, size_in_bytes, is_external_rowid_alloc, sorting_key_enabled, sorting_score, write_amplification, acummulative_row_inserition_count, sorting_done, tuple(endpoints))
1209
1233
 
1210
1234
  def alter_topic(self, bucket, name,
1211
1235
  new_name="", expected_retvals=[],
@@ -1222,7 +1246,7 @@ class VastdbApi:
1222
1246
  table_properties=table_properties, new_name=new_name, expected_retvals=expected_retvals)
1223
1247
 
1224
1248
  def alter_table(self, bucket, schema, name, txid=0, client_tags=[], table_properties="",
1225
- new_name="", expected_retvals=[]):
1249
+ new_name="", expected_retvals=[], sorting_key=[]):
1226
1250
  """
1227
1251
  PUT /mybucket/myschema/mytable?table HTTP/1.1
1228
1252
  Content-Length: ContentLength
@@ -1246,7 +1270,7 @@ class VastdbApi:
1246
1270
  builder.Finish(params)
1247
1271
  alter_table_req = builder.Output()
1248
1272
 
1249
- headers = self._fill_common_headers(txid=txid, client_tags=client_tags)
1273
+ headers = self._fill_common_headers(txid=txid, client_tags=client_tags, sorting_key=sorting_key)
1250
1274
  headers['Content-Length'] = str(len(alter_table_req))
1251
1275
  url_params = {'tabular-new-table-name': schema + "/" + new_name} if len(new_name) else {}
1252
1276
 
@@ -1293,8 +1317,8 @@ class VastdbApi:
1293
1317
  expected_retvals=expected_retvals,
1294
1318
  include_list_stats=include_list_stats, count_only=count_only)
1295
1319
 
1296
- def _list_tables_internal(self, bucket, schema, parse_properties, txid=0, client_tags=[], max_keys=1000, next_key=0, name_prefix="",
1297
- exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False):
1320
+ def _list_tables_raw(self, bucket, schema, txid=0, client_tags=[], max_keys=1000, next_key=0, name_prefix="",
1321
+ exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False):
1298
1322
  """
1299
1323
  GET /mybucket/schema_path?table HTTP/1.1
1300
1324
  tabular-txid: TransactionId
@@ -1314,7 +1338,6 @@ class VastdbApi:
1314
1338
  headers['tabular-list-count-only'] = str(count_only)
1315
1339
  headers['tabular-include-list-stats'] = str(include_list_stats)
1316
1340
 
1317
- tables = []
1318
1341
  res = self._request(
1319
1342
  method="GET",
1320
1343
  url=self._url(bucket=bucket, schema=schema, command="table"),
@@ -1324,17 +1347,36 @@ class VastdbApi:
1324
1347
  next_key = int(res_headers['tabular-next-key'])
1325
1348
  is_truncated = res_headers['tabular-is-truncated'] == 'true'
1326
1349
  lists = list_tables.GetRootAs(res.content)
1350
+ tables_length = lists.TablesLength()
1351
+ count = int(res_headers['tabular-list-count']) if 'tabular-list-count' in res_headers else tables_length
1352
+ return lists, is_truncated, count
1353
+
1354
+ def _list_tables_internal(self, bucket, schema, parse_properties, txid=0, client_tags=[], max_keys=1000, next_key=0, name_prefix="",
1355
+ exact_match=False, expected_retvals=[], include_list_stats=False, count_only=False):
1356
+ tables = []
1357
+ lists, is_truncated, count = self._list_tables_raw(bucket, schema, txid=txid, client_tags=client_tags, max_keys=max_keys,
1358
+ next_key=next_key, name_prefix=name_prefix, exact_match=exact_match, expected_retvals=expected_retvals,
1359
+ include_list_stats=include_list_stats, count_only=count_only)
1327
1360
  bucket_name = lists.BucketName().decode()
1328
1361
  schema_name = lists.SchemaName().decode()
1329
1362
  if not bucket.startswith(bucket_name): # ignore snapshot name
1330
1363
  raise ValueError(f'bucket: {bucket} did not start from {bucket_name}')
1331
1364
  tables_length = lists.TablesLength()
1332
- count = int(res_headers['tabular-list-count']) if 'tabular-list-count' in res_headers else tables_length
1333
1365
  for i in range(tables_length):
1334
1366
  tables.append(_parse_table_info(lists.Tables(i), parse_properties))
1335
1367
 
1336
1368
  return bucket_name, schema_name, tables, next_key, is_truncated, count
1337
1369
 
1370
+ def raw_sorting_score(self, bucket, schema, txid, name):
1371
+ lists, _, _ = self._list_tables_raw(bucket, schema, txid=txid, exact_match=True, name_prefix=name, include_list_stats=True)
1372
+ bucket_name = lists.BucketName().decode()
1373
+ if not bucket.startswith(bucket_name): # ignore snapshot name
1374
+ raise ValueError(f'bucket: {bucket} did not start from {bucket_name}')
1375
+ tables_length = lists.TablesLength()
1376
+ if tables_length != 1:
1377
+ raise ValueError(f'table: {name} received {tables_length} response')
1378
+ return lists.Tables(0).SortingScore()
1379
+
1338
1380
  def add_columns(self, bucket, schema, name, arrow_schema, txid=0, client_tags=[], expected_retvals=[]):
1339
1381
  """
1340
1382
  Add a column to table, use the following request
@@ -1415,9 +1457,9 @@ class VastdbApi:
1415
1457
  url=self._url(bucket=bucket, schema=schema, table=table, command="column"),
1416
1458
  data=serialized_schema, headers=headers)
1417
1459
 
1418
- def list_columns(self, bucket, schema, table, *, txid=0, client_tags=None, max_keys=None, next_key=0,
1419
- count_only=False, name_prefix="", exact_match=False,
1420
- expected_retvals=None, bc_list_internals=False, list_imports_table=False):
1460
+ def _list_columns_internal(self, command, bucket, schema, table, txid, client_tags, max_keys, next_key,
1461
+ count_only, name_prefix, exact_match, expected_retvals, bc_list_internals,
1462
+ list_imports_table):
1421
1463
  """
1422
1464
  GET /mybucket/myschema/mytable?columns HTTP/1.1
1423
1465
  tabular-txid: TransactionId
@@ -1447,7 +1489,7 @@ class VastdbApi:
1447
1489
  url_params = {'sub-table': IMPORTED_OBJECTS_TABLE_NAME} if list_imports_table else {}
1448
1490
  res = self._request(
1449
1491
  method="GET",
1450
- url=self._url(bucket=bucket, schema=schema, table=table, command="column", url_params=url_params),
1492
+ url=self._url(bucket=bucket, schema=schema, table=table, command=command, url_params=url_params),
1451
1493
  headers=headers)
1452
1494
 
1453
1495
  res_headers = res.headers
@@ -1458,6 +1500,20 @@ class VastdbApi:
1458
1500
 
1459
1501
  return columns, next_key, is_truncated, count
1460
1502
 
1503
+ def list_columns(self, bucket, schema, table, *, txid=0, client_tags=None, max_keys=None, next_key=0,
1504
+ count_only=False, name_prefix="", exact_match=False,
1505
+ expected_retvals=None, bc_list_internals=False, list_imports_table=False):
1506
+ return self._list_columns_internal('column', bucket, schema, table, txid, client_tags, max_keys, next_key,
1507
+ count_only, name_prefix, exact_match, expected_retvals, bc_list_internals,
1508
+ list_imports_table)
1509
+
1510
+ def list_sorted_columns(self, bucket, schema, table, *, txid=0, client_tags=None, max_keys=None, next_key=0,
1511
+ count_only=False, name_prefix="", exact_match=False,
1512
+ expected_retvals=None, bc_list_internals=False, list_imports_table=False):
1513
+ return self._list_columns_internal('sorted-columns', bucket, schema, table, txid, client_tags, max_keys, next_key,
1514
+ count_only, name_prefix, exact_match, expected_retvals, bc_list_internals,
1515
+ list_imports_table)
1516
+
1461
1517
  def head_bucket(self, bucket_name):
1462
1518
  """
1463
1519
  Reimplemented, instead of depending on boto3 for checking the existence of a bucket.
@@ -1596,7 +1652,7 @@ class VastdbApi:
1596
1652
  source_files: list of (bucket_name, file_name)
1597
1653
  """
1598
1654
  def import_data(self, bucket, schema, table, source_files, txid=0, client_tags=[], expected_retvals=[], case_sensitive=True,
1599
- schedule_id=None, retry_count=0, blocking=True):
1655
+ schedule_id=None, retry_count=0, blocking=True, key_names=[]):
1600
1656
  """
1601
1657
  POST /mybucket/myschema/mytable?data HTTP/1.1
1602
1658
  Content-Length: ContentLength
@@ -1638,8 +1694,23 @@ class VastdbApi:
1638
1694
  builder.PrependUOffsetTRelative(f)
1639
1695
 
1640
1696
  files = builder.EndVector()
1697
+
1698
+ key_names_arr = []
1699
+ for key in key_names:
1700
+ kname = builder.CreateString(key)
1701
+ import_key_name.Start(builder)
1702
+ import_key_name.AddName(builder, kname)
1703
+ key_names_arr.append(import_key_name.End(builder))
1704
+
1705
+ tabular_import_data.StartKeyNamesVector(builder, len(key_names_arr))
1706
+ for key in reversed(key_names_arr):
1707
+ builder.PrependUOffsetTRelative(key)
1708
+
1709
+ key_names_vec = builder.EndVector()
1710
+
1641
1711
  tabular_import_data.Start(builder)
1642
1712
  tabular_import_data.AddS3Files(builder, files)
1713
+ tabular_import_data.AddKeyNames(builder, key_names_vec)
1643
1714
  params = tabular_import_data.End(builder)
1644
1715
  builder.Finish(params)
1645
1716
  import_req = builder.Output()
@@ -1953,6 +2024,49 @@ class QueryDataInternalError(Exception):
1953
2024
  pass
1954
2025
 
1955
2026
 
2027
+ def read_first_batch(fileobj):
2028
+ readers = {} # {stream_id: pa.ipc.RecordBatchStreamReader}
2029
+ while True:
2030
+ stream_id_bytes = fileobj.read(4)
2031
+ if not stream_id_bytes:
2032
+ if readers:
2033
+ raise EOFError(f'no readers ({readers}) should be open at EOF')
2034
+ break
2035
+
2036
+ stream_id, = struct.unpack('<L', stream_id_bytes)
2037
+ if stream_id == TABULAR_KEEP_ALIVE_STREAM_ID:
2038
+ continue
2039
+
2040
+ if stream_id == TABULAR_QUERY_DATA_COMPLETED_STREAM_ID:
2041
+ # read the terminating end chunk from socket
2042
+ res = fileobj.read()
2043
+ _logger.debug("stream_id=%d res=%s (finish)", stream_id, res)
2044
+ return None
2045
+
2046
+ if stream_id == TABULAR_QUERY_DATA_FAILED_STREAM_ID:
2047
+ # read the terminating end chunk from socket
2048
+ res = fileobj.read()
2049
+ _logger.debug("stream_id=%d res=%s (failed)", stream_id, res)
2050
+ raise QueryDataInternalError() # connection closed by server due to an internal error
2051
+
2052
+ next_row_id_bytes = fileobj.read(8)
2053
+ next_row_id, = struct.unpack('<Q', next_row_id_bytes)
2054
+ _logger.debug("stream_id=%d next_row_id=%d", stream_id, next_row_id)
2055
+
2056
+ if stream_id not in readers:
2057
+ # we implicitly read 1st message (Arrow schema) when constructing RecordBatchStreamReader
2058
+ reader = pa.ipc.RecordBatchStreamReader(fileobj)
2059
+ _logger.debug("stream_id=%d schema=%s", stream_id, reader.schema)
2060
+ readers[stream_id] = reader
2061
+ continue
2062
+
2063
+ reader = readers[stream_id]
2064
+ try:
2065
+ return reader.read_next_batch() # read single-column chunk data
2066
+ except StopIteration: # we got an end-of-stream IPC message for a given stream ID
2067
+ return None
2068
+
2069
+
1956
2070
  def _iter_query_data_response_columns(fileobj, stream_ids=None):
1957
2071
  readers = {} # {stream_id: pa.ipc.RecordBatchStreamReader}
1958
2072
  while True:
@@ -10,11 +10,11 @@ log = logging.getLogger(__name__)
10
10
 
11
11
 
12
12
  @pytest.mark.benchmark
13
- def test_bench(session, bucket_name, parquets_path, crater_path):
13
+ def test_bench(session, test_bucket_name, parquets_path, crater_path):
14
14
  files = [str(parquets_path / f) for f in (parquets_path.glob('**/*.pq'))]
15
15
 
16
16
  with session.transaction() as tx:
17
- b = tx.bucket(bucket_name)
17
+ b = tx.bucket(test_bucket_name)
18
18
  s = b.create_schema('s1')
19
19
  t = util.create_table_from_files(s, 't1', files, config=ImportConfig(import_concurrency=8))
20
20
  config = QueryConfig(num_splits=8, num_sub_splits=4)
@@ -63,3 +63,6 @@ class ImportConfig:
63
63
  """Import execution configiration."""
64
64
 
65
65
  import_concurrency: int = 2
66
+
67
+ # import key column names
68
+ key_names: Optional[List[str]] = None
@@ -17,6 +17,7 @@ class HttpStatus(Enum):
17
17
  INTERNAL_SERVER_ERROR = 500
18
18
  NOT_IMPLEMENTED = 501
19
19
  SERVICE_UNAVAILABLE = 503
20
+ INSUFFICIENT_CAPACITY = 507
20
21
 
21
22
 
22
23
  log = logging.getLogger(__name__)
@@ -79,6 +80,10 @@ class UnexpectedError(HttpError):
79
80
  pass
80
81
 
81
82
 
83
+ class InsufficientCapacity(HttpError):
84
+ pass
85
+
86
+
82
87
  @dataclass
83
88
  class ImportFilesError(Exception):
84
89
  message: str
@@ -197,6 +202,7 @@ ERROR_TYPES_MAP = {
197
202
  HttpStatus.INTERNAL_SERVER_ERROR: InternalServerError,
198
203
  HttpStatus.NOT_IMPLEMENTED: NotImplemented,
199
204
  HttpStatus.SERVICE_UNAVAILABLE: handle_unavailable,
205
+ HttpStatus.INSUFFICIENT_CAPACITY: InsufficientCapacity,
200
206
  }
201
207
 
202
208
 
@@ -13,6 +13,7 @@ class Features:
13
13
  def __init__(self, vast_version):
14
14
  """Save the server version."""
15
15
  self.vast_version = vast_version
16
+ log.info("VAST version: %s", self.vast_version)
16
17
 
17
18
  self.check_imports_table = self._check(
18
19
  "Imported objects' table feature requires 5.2+ VAST release",
@@ -30,6 +31,14 @@ class Features:
30
31
  "External row IDs allocation requires 5.1+ VAST release",
31
32
  vast_version >= (5, 1))
32
33
 
34
+ self.check_elysium = self._check(
35
+ "Elysium requires 5.3.5+ VAST release",
36
+ vast_version >= (5, 3)) # TODO: make this validation stricter for v5.4 (beta/poc version is 5.3.0.x)
37
+
38
+ self.check_zip_import = self._check(
39
+ "Zip import requires 5.3.1+ VAST release",
40
+ vast_version >= (5, 3, 1))
41
+
33
42
  def _check(self, msg, supported):
34
43
  log.debug("%s (current version is %s): supported=%s", msg, self.vast_version, supported)
35
44
  if not supported:
@@ -76,7 +76,8 @@ class Schema:
76
76
  break
77
77
  return result
78
78
 
79
- def create_table(self, table_name: str, columns: pa.Schema, fail_if_exists=True, use_external_row_ids_allocation=False) -> "Table":
79
+ def create_table(self, table_name: str, columns: pa.Schema, fail_if_exists=True,
80
+ use_external_row_ids_allocation=False, sorting_key=[]) -> "Table":
80
81
  """Create a new table under this schema.
81
82
 
82
83
  A virtual `vastdb_rowid` column (of `int64` type) can be created to access and filter by internal VAST row IDs.
@@ -91,7 +92,8 @@ class Schema:
91
92
  self.tx._rpc.features.check_external_row_ids_allocation()
92
93
 
93
94
  self.tx._rpc.api.create_table(self.bucket.name, self.name, table_name, columns, txid=self.tx.txid,
94
- use_external_row_ids_allocation=use_external_row_ids_allocation)
95
+ use_external_row_ids_allocation=use_external_row_ids_allocation,
96
+ sorting_key=sorting_key)
95
97
  log.info("Created table: %s", table_name)
96
98
  return self.table(table_name) # type: ignore[return-value]
97
99
 
@@ -149,4 +151,4 @@ class Schema:
149
151
 
150
152
 
151
153
  def _parse_table_info(table_info, schema: "schema.Schema"):
152
- return table.Table(name=table_info.name, schema=schema, handle=int(table_info.handle), _imports_table=False)
154
+ return table.Table(name=table_info.name, schema=schema, handle=int(table_info.handle), _imports_table=False, sorted_table=table_info.sorting_key_enabled)