vastdb 1.2.0__tar.gz → 1.3.0__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 (218) hide show
  1. {vastdb-1.2.0 → vastdb-1.3.0}/CHANGELOG.md +7 -0
  2. {vastdb-1.2.0 → vastdb-1.3.0}/PKG-INFO +1 -1
  3. {vastdb-1.2.0 → vastdb-1.3.0}/setup.py +1 -1
  4. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/_internal.py +21 -2
  5. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/test_tables.py +45 -0
  6. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/test_util.py +13 -0
  7. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/util.py +10 -0
  8. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb.egg-info/PKG-INFO +1 -1
  9. {vastdb-1.2.0 → vastdb-1.3.0}/CONTRIBUTING.md +0 -0
  10. {vastdb-1.2.0 → vastdb-1.3.0}/LICENSE +0 -0
  11. {vastdb-1.2.0 → vastdb-1.3.0}/MANIFEST.in +0 -0
  12. {vastdb-1.2.0 → vastdb-1.3.0}/README.md +0 -0
  13. {vastdb-1.2.0 → vastdb-1.3.0}/requirements.txt +0 -0
  14. {vastdb-1.2.0 → vastdb-1.3.0}/setup.cfg +0 -0
  15. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/__init__.py +0 -0
  16. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/__init__.py +0 -0
  17. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/__init__.py +0 -0
  18. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/__init__.py +0 -0
  19. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/__init__.py +0 -0
  20. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Aggregate.py +0 -0
  21. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySlice.py +0 -0
  22. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySubscript.py +0 -0
  23. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BinaryLiteral.py +0 -0
  24. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BooleanLiteral.py +0 -0
  25. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Bound.py +0 -0
  26. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Call.py +0 -0
  27. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CaseFragment.py +0 -0
  28. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Cast.py +0 -0
  29. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConcreteBoundImpl.py +0 -0
  30. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConditionalCase.py +0 -0
  31. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CurrentRow.py +0 -0
  32. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DateLiteral.py +0 -0
  33. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DecimalLiteral.py +0 -0
  34. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Deref.py +0 -0
  35. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DurationLiteral.py +0 -0
  36. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Expression.py +0 -0
  37. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ExpressionImpl.py +0 -0
  38. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldIndex.py +0 -0
  39. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldRef.py +0 -0
  40. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Filter.py +0 -0
  41. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FixedSizeBinaryLiteral.py +0 -0
  42. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float16Literal.py +0 -0
  43. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float32Literal.py +0 -0
  44. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float64Literal.py +0 -0
  45. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Following.py +0 -0
  46. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Frame.py +0 -0
  47. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Grouping.py +0 -0
  48. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int16Literal.py +0 -0
  49. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int32Literal.py +0 -0
  50. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int64Literal.py +0 -0
  51. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int8Literal.py +0 -0
  52. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteral.py +0 -0
  53. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralDaysMilliseconds.py +0 -0
  54. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralImpl.py +0 -0
  55. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralMonths.py +0 -0
  56. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Join.py +0 -0
  57. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/JoinKind.py +0 -0
  58. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/KeyValue.py +0 -0
  59. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Limit.py +0 -0
  60. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ListLiteral.py +0 -0
  61. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Literal.py +0 -0
  62. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralColumn.py +0 -0
  63. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralImpl.py +0 -0
  64. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralRelation.py +0 -0
  65. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapKey.py +0 -0
  66. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapLiteral.py +0 -0
  67. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/OrderBy.py +0 -0
  68. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Ordering.py +0 -0
  69. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Plan.py +0 -0
  70. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Preceding.py +0 -0
  71. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Project.py +0 -0
  72. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelId.py +0 -0
  73. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Relation.py +0 -0
  74. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelationImpl.py +0 -0
  75. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOpKind.py +0 -0
  76. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOperation.py +0 -0
  77. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SimpleCase.py +0 -0
  78. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SortKey.py +0 -0
  79. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Source.py +0 -0
  80. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StringLiteral.py +0 -0
  81. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructField.py +0 -0
  82. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructLiteral.py +0 -0
  83. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimeLiteral.py +0 -0
  84. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimestampLiteral.py +0 -0
  85. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt16Literal.py +0 -0
  86. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt32Literal.py +0 -0
  87. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt64Literal.py +0 -0
  88. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt8Literal.py +0 -0
  89. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Unbounded.py +0 -0
  90. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/WindowCall.py +0 -0
  91. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/__init__.py +0 -0
  92. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Binary.py +0 -0
  93. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Block.py +0 -0
  94. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompression.py +0 -0
  95. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompressionMethod.py +0 -0
  96. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Bool.py +0 -0
  97. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Buffer.py +0 -0
  98. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/CompressionType.py +0 -0
  99. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Date.py +0 -0
  100. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/DateUnit.py +0 -0
  101. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Decimal.py +0 -0
  102. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryBatch.py +0 -0
  103. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryEncoding.py +0 -0
  104. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryKind.py +0 -0
  105. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Duration.py +0 -0
  106. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Endianness.py +0 -0
  107. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Feature.py +0 -0
  108. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Field.py +0 -0
  109. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/FieldNode.py +0 -0
  110. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeBinary.py +0 -0
  111. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeList.py +0 -0
  112. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/FloatingPoint.py +0 -0
  113. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Footer.py +0 -0
  114. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Int.py +0 -0
  115. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Interval.py +0 -0
  116. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/IntervalUnit.py +0 -0
  117. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/KeyValue.py +0 -0
  118. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/LargeBinary.py +0 -0
  119. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/LargeList.py +0 -0
  120. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/LargeUtf8.py +0 -0
  121. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/List.py +0 -0
  122. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Map.py +0 -0
  123. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Message.py +0 -0
  124. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/MessageHeader.py +0 -0
  125. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/MetadataVersion.py +0 -0
  126. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Null.py +0 -0
  127. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Precision.py +0 -0
  128. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/RecordBatch.py +0 -0
  129. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Schema.py +0 -0
  130. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixCompressedAxis.py +0 -0
  131. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixIndexCSX.py +0 -0
  132. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensor.py +0 -0
  133. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndex.py +0 -0
  134. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCOO.py +0 -0
  135. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCSF.py +0 -0
  136. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Struct_.py +0 -0
  137. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Tensor.py +0 -0
  138. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/TensorDim.py +0 -0
  139. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Time.py +0 -0
  140. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/TimeUnit.py +0 -0
  141. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Timestamp.py +0 -0
  142. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Type.py +0 -0
  143. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Union.py +0 -0
  144. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/UnionMode.py +0 -0
  145. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/Utf8.py +0 -0
  146. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/org/apache/arrow/flatbuf/__init__.py +0 -0
  147. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/AlterColumnRequest.py +0 -0
  148. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/AlterProjectionTableRequest.py +0 -0
  149. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/AlterSchemaRequest.py +0 -0
  150. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/AlterTableRequest.py +0 -0
  151. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/Column.py +0 -0
  152. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/ColumnType.py +0 -0
  153. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/CreateProjectionRequest.py +0 -0
  154. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/CreateSchemaRequest.py +0 -0
  155. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/GetProjectionTableStatsResponse.py +0 -0
  156. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/GetTableStatsResponse.py +0 -0
  157. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/ImportDataRequest.py +0 -0
  158. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/ListProjectionsResponse.py +0 -0
  159. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/ListSchemasResponse.py +0 -0
  160. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/ListTablesResponse.py +0 -0
  161. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/ObjectDetails.py +0 -0
  162. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/S3File.py +0 -0
  163. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/VipRange.py +0 -0
  164. {vastdb-1.2.0 → vastdb-1.3.0}/vast_flatbuf/tabular/__init__.py +0 -0
  165. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/__init__.py +0 -0
  166. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/__init__.py +0 -0
  167. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/__init__.py +0 -0
  168. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/bench_repo/__init__.py +0 -0
  169. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/bench_repo/mega_combo.py +0 -0
  170. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/cli.py +0 -0
  171. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/common/__init__.py +0 -0
  172. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/common/constants.py +0 -0
  173. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/common/log_utils.py +0 -0
  174. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/common/types.py +0 -0
  175. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/common/utils.py +0 -0
  176. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/dataset/__init__.py +0 -0
  177. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/dataset/generate_secmaster.py +0 -0
  178. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/dataset/generate_stocks_dataset.py +0 -0
  179. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/dataset/schemas.py +0 -0
  180. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/dataset/secmaster.py +0 -0
  181. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/orchestrate/__init__.py +0 -0
  182. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/orchestrate/bench_spec.py +0 -0
  183. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/orchestrate/results_helpers.py +0 -0
  184. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/orchestrate/scenario.py +0 -0
  185. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/orchestrate/scenario_generator.py +0 -0
  186. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/query/__init__.py +0 -0
  187. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/query/arrow_common.py +0 -0
  188. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/query/query.py +0 -0
  189. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/query/query_pyarrow.py +0 -0
  190. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/query/query_vastdb.py +0 -0
  191. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/perf_bench/run.py +0 -0
  192. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/test_perf.py +0 -0
  193. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bench/test_sample.py +0 -0
  194. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/bucket.py +0 -0
  195. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/config.py +0 -0
  196. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/conftest.py +0 -0
  197. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/errors.py +0 -0
  198. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/features.py +0 -0
  199. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/schema.py +0 -0
  200. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/session.py +0 -0
  201. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/table.py +0 -0
  202. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/__init__.py +0 -0
  203. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/metrics.py +0 -0
  204. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/test_duckdb.py +0 -0
  205. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/test_imports.py +0 -0
  206. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/test_nested.py +0 -0
  207. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/test_projections.py +0 -0
  208. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/test_sanity.py +0 -0
  209. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/test_schemas.py +0 -0
  210. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/tests/util.py +0 -0
  211. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/transaction.py +0 -0
  212. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/vast_tests/__init__.py +0 -0
  213. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/vast_tests/test_ha.py +0 -0
  214. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb/vast_tests/test_scale.py +0 -0
  215. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb.egg-info/SOURCES.txt +0 -0
  216. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb.egg-info/dependency_links.txt +0 -0
  217. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb.egg-info/requires.txt +0 -0
  218. {vastdb-1.2.0 → vastdb-1.3.0}/vastdb.egg-info/top_level.txt +0 -0
@@ -4,6 +4,13 @@ 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.0] (2024-09-01)
8
+ [1.3.0]: https://github.com/vast-data/vastdb_sdk/compare/v1.2.0...v1.3.0
9
+
10
+ ### Added
11
+ - Support `startswith` pushdown over string columns
12
+
13
+
7
14
  ## [1.2.0] (2024-08-19)
8
15
  [1.2.0]: https://github.com/vast-data/vastdb_sdk/compare/v1.1.2...v1.2.0
9
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 1.2.0
3
+ Version: 1.3.0
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.2.0' + suffix,
32
+ version='1.3.0' + suffix,
33
33
  url='https://github.com/vast-data/vastdb_sdk',
34
34
  author='VAST DATA',
35
35
  author_email='hello@vastdata.com',
@@ -34,7 +34,7 @@ from ibis.expr.operations.logical import (
34
34
  Or,
35
35
  )
36
36
  from ibis.expr.operations.relations import Field
37
- from ibis.expr.operations.strings import StringContains
37
+ from ibis.expr.operations.strings import StartsWith, StringContains
38
38
  from ibis.expr.operations.structs import StructField
39
39
 
40
40
  import vast_flatbuf.org.apache.arrow.computeir.flatbuf.BinaryLiteral as fb_binary_lit
@@ -103,7 +103,7 @@ from vast_flatbuf.tabular.ListProjectionsResponse import (
103
103
  from vast_flatbuf.tabular.ListSchemasResponse import ListSchemasResponse as list_schemas
104
104
  from vast_flatbuf.tabular.ListTablesResponse import ListTablesResponse as list_tables
105
105
 
106
- from . import errors
106
+ from . import errors, util
107
107
  from .config import BackoffConfig
108
108
 
109
109
  UINT64_MAX = 18446744073709551615
@@ -168,6 +168,7 @@ class Predicate:
168
168
  IsNull: self.build_is_null,
169
169
  Not: self.build_is_not_null,
170
170
  StringContains: self.build_match_substring,
171
+ StartsWith: self.build_starts_with,
171
172
  Between: self.build_between,
172
173
  }
173
174
 
@@ -207,6 +208,14 @@ class Predicate:
207
208
  elif builder_func == self.build_between:
208
209
  column, lower, upper = inner_op.args
209
210
  literals = (None,)
211
+ elif builder_func == self.build_starts_with:
212
+ column, prefix = inner_op.args
213
+ literals = (None,)
214
+ if prefix.value:
215
+ lower_bytes, upper_bytes = util.prefix_to_range(prefix.value)
216
+ else:
217
+ # `col.starts_with('')` is equivalent to `col IS NOT NULL`
218
+ builder_func = self.build_is_not_null
210
219
  else:
211
220
  column, arg = inner_op.args
212
221
  if isinstance(arg, tuple):
@@ -249,6 +258,9 @@ class Predicate:
249
258
  if builder_func == self.build_between:
250
259
  args_offsets.append(self.build_literal(field=node.field, value=lower.value))
251
260
  args_offsets.append(self.build_literal(field=node.field, value=upper.value))
261
+ if builder_func == self.build_starts_with:
262
+ args_offsets.append(self.build_literal(field=node.field, value=lower_bytes))
263
+ args_offsets.append(self.build_literal(field=node.field, value=upper_bytes))
252
264
 
253
265
  inner_offsets.append(builder_func(*args_offsets))
254
266
 
@@ -550,6 +562,13 @@ class Predicate:
550
562
  ]
551
563
  return self.build_and(offsets)
552
564
 
565
+ def build_starts_with(self, column: int, lower: int, upper: int):
566
+ offsets = [
567
+ self.build_greater_equal(column, lower),
568
+ self.build_less(column, upper),
569
+ ]
570
+ return self.build_and(offsets)
571
+
553
572
 
554
573
  class FieldNodesState:
555
574
  def __init__(self) -> None:
@@ -837,3 +837,48 @@ def test_catalog_snapshots_select(session, clean_bucket_name):
837
837
  rows = t.select().read_all()
838
838
  if not rows:
839
839
  raise NotReady
840
+
841
+
842
+ def test_starts_with(session, clean_bucket_name):
843
+ columns = pa.schema([
844
+ ('s', pa.utf8()),
845
+ ('i', pa.int16()),
846
+ ])
847
+
848
+ expected = pa.table(schema=columns, data=[
849
+ ['a', 'ab', 'abc', None, 'abd', 'α', '', 'b'],
850
+ [0, 1, 2, 3, 4, 5, 6, 7],
851
+ ])
852
+
853
+ with prepare_data(session, clean_bucket_name, 's', 't', expected) as table:
854
+ def select(prefix):
855
+ res = table.select(predicate=table['s'].startswith(prefix)).read_all()
856
+ return res.to_pydict()
857
+
858
+ assert select('')['s'] == ['a', 'ab', 'abc', 'abd', 'α', '', 'b']
859
+ assert select('a')['s'] == ['a', 'ab', 'abc', 'abd']
860
+ assert select('b')['s'] == ['b']
861
+ assert select('ab')['s'] == ['ab', 'abc', 'abd']
862
+ assert select('abc')['s'] == ['abc']
863
+ assert select('α')['s'] == ['α']
864
+
865
+ res = table.select(predicate=(table['s'].startswith('ab') | (table['s'].isnull()))).read_all()
866
+ assert res.to_pydict()['s'] == ['ab', 'abc', None, 'abd']
867
+
868
+ res = table.select(predicate=(table['s'].startswith('ab') | (table['s'] == 'b'))).read_all()
869
+ assert res.to_pydict()['s'] == ['ab', 'abc', 'abd', 'b']
870
+
871
+ res = table.select(predicate=((table['s'] == 'b') | table['s'].startswith('ab'))).read_all()
872
+ assert res.to_pydict()['s'] == ['ab', 'abc', 'abd', 'b']
873
+
874
+ res = table.select(predicate=(table['s'].startswith('ab') & (table['s'] != 'abc'))).read_all()
875
+ assert res.to_pydict()['s'] == ['ab', 'abd']
876
+
877
+ res = table.select(predicate=((table['s'] != 'abc') & table['s'].startswith('ab'))).read_all()
878
+ assert res.to_pydict()['s'] == ['ab', 'abd']
879
+
880
+ res = table.select(predicate=((table['i'] > 3) & table['s'].startswith('ab'))).read_all()
881
+ assert res.to_pydict() == {'i': [4], 's': ['abd']}
882
+
883
+ res = table.select(predicate=(table['s'].startswith('ab')) & (table['i'] > 3)).read_all()
884
+ assert res.to_pydict() == {'i': [4], 's': ['abd']}
@@ -43,3 +43,16 @@ def _parse(bufs):
43
43
  for buf in bufs:
44
44
  with pa.ipc.open_stream(buf) as reader:
45
45
  yield from reader
46
+
47
+
48
+ def test_prefix():
49
+ assert util.prefix_to_range('a') == (b'a', b'b')
50
+ assert util.prefix_to_range('abc') == (b'abc', b'abd')
51
+ assert util.prefix_to_range('abc\x00') == (b'abc\x00', b'abc\x01')
52
+ assert util.prefix_to_range('abc\x7f') == (b'abc\x7f', b'abc\x80')
53
+ assert util.prefix_to_range('/a/b/c') == (b'/a/b/c', b'/a/b/d')
54
+ assert util.prefix_to_range('/123α') == (b'/123\xce\xb1', b'/123\xce\xb2')
55
+ assert util.prefix_to_range('/123αA') == (b'/123\xce\xb1A', b'/123\xce\xb1B')
56
+ assert util.prefix_to_range('\U0010ffff') == (b'\xf4\x8f\xbf\xbf', b'\xf4\x8f\xbf\xc0') # max unicode codepoint
57
+ with pytest.raises(AssertionError):
58
+ util.prefix_to_range('')
@@ -157,3 +157,13 @@ def sort_record_batch_if_needed(record_batch, sort_column):
157
157
  return record_batch.sort_by(sort_column)
158
158
  else:
159
159
  return record_batch
160
+
161
+
162
+ def prefix_to_range(prefix: str):
163
+ """Compute (L, U) such that `s.starts_with(prefix)` is equivalent to `L <= s.encode() < H`."""
164
+ assert prefix, "Empty prefix is not convertible to range predicate"
165
+ lower = prefix.encode()
166
+ upper = bytearray(lower)
167
+ # https://en.wikipedia.org/wiki/UTF-8#Encoding guarantees that the last byte is not 0xFF
168
+ upper[-1] = upper[-1] + 1
169
+ return (lower, bytes(upper))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 1.2.0
3
+ Version: 1.3.0
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes