vastdb 0.1.9__tar.gz → 0.1.10__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 (189) hide show
  1. {vastdb-0.1.9 → vastdb-0.1.10}/CHANGELOG.md +7 -0
  2. {vastdb-0.1.9/vastdb.egg-info → vastdb-0.1.10}/PKG-INFO +1 -1
  3. {vastdb-0.1.9 → vastdb-0.1.10}/README.md +5 -7
  4. {vastdb-0.1.9 → vastdb-0.1.10}/setup.py +1 -1
  5. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/_internal.py +1 -1
  6. vastdb-0.1.10/vastdb/bench/test_sample.py +196 -0
  7. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/conftest.py +28 -6
  8. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/table.py +7 -2
  9. vastdb-0.1.10/vastdb/tests/metrics.py +42 -0
  10. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/util.py +5 -0
  11. {vastdb-0.1.9 → vastdb-0.1.10/vastdb.egg-info}/PKG-INFO +1 -1
  12. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb.egg-info/SOURCES.txt +2 -0
  13. {vastdb-0.1.9 → vastdb-0.1.10}/LICENSE +0 -0
  14. {vastdb-0.1.9 → vastdb-0.1.10}/MANIFEST.in +0 -0
  15. {vastdb-0.1.9 → vastdb-0.1.10}/requirements.txt +0 -0
  16. {vastdb-0.1.9 → vastdb-0.1.10}/setup.cfg +0 -0
  17. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/__init__.py +0 -0
  18. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/__init__.py +0 -0
  19. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/__init__.py +0 -0
  20. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/__init__.py +0 -0
  21. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/__init__.py +0 -0
  22. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Aggregate.py +0 -0
  23. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySlice.py +0 -0
  24. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySubscript.py +0 -0
  25. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BinaryLiteral.py +0 -0
  26. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BooleanLiteral.py +0 -0
  27. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Bound.py +0 -0
  28. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Call.py +0 -0
  29. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CaseFragment.py +0 -0
  30. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Cast.py +0 -0
  31. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConcreteBoundImpl.py +0 -0
  32. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConditionalCase.py +0 -0
  33. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CurrentRow.py +0 -0
  34. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DateLiteral.py +0 -0
  35. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DecimalLiteral.py +0 -0
  36. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Deref.py +0 -0
  37. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DurationLiteral.py +0 -0
  38. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Expression.py +0 -0
  39. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ExpressionImpl.py +0 -0
  40. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldIndex.py +0 -0
  41. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldRef.py +0 -0
  42. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Filter.py +0 -0
  43. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FixedSizeBinaryLiteral.py +0 -0
  44. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float16Literal.py +0 -0
  45. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float32Literal.py +0 -0
  46. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float64Literal.py +0 -0
  47. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Following.py +0 -0
  48. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Frame.py +0 -0
  49. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Grouping.py +0 -0
  50. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int16Literal.py +0 -0
  51. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int32Literal.py +0 -0
  52. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int64Literal.py +0 -0
  53. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int8Literal.py +0 -0
  54. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteral.py +0 -0
  55. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralDaysMilliseconds.py +0 -0
  56. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralImpl.py +0 -0
  57. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralMonths.py +0 -0
  58. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Join.py +0 -0
  59. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/JoinKind.py +0 -0
  60. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/KeyValue.py +0 -0
  61. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Limit.py +0 -0
  62. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ListLiteral.py +0 -0
  63. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Literal.py +0 -0
  64. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralColumn.py +0 -0
  65. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralImpl.py +0 -0
  66. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralRelation.py +0 -0
  67. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapKey.py +0 -0
  68. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapLiteral.py +0 -0
  69. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/OrderBy.py +0 -0
  70. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Ordering.py +0 -0
  71. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Plan.py +0 -0
  72. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Preceding.py +0 -0
  73. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Project.py +0 -0
  74. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelId.py +0 -0
  75. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Relation.py +0 -0
  76. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelationImpl.py +0 -0
  77. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOpKind.py +0 -0
  78. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOperation.py +0 -0
  79. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SimpleCase.py +0 -0
  80. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SortKey.py +0 -0
  81. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Source.py +0 -0
  82. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StringLiteral.py +0 -0
  83. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructField.py +0 -0
  84. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructLiteral.py +0 -0
  85. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimeLiteral.py +0 -0
  86. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimestampLiteral.py +0 -0
  87. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt16Literal.py +0 -0
  88. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt32Literal.py +0 -0
  89. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt64Literal.py +0 -0
  90. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt8Literal.py +0 -0
  91. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Unbounded.py +0 -0
  92. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/WindowCall.py +0 -0
  93. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/__init__.py +0 -0
  94. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Binary.py +0 -0
  95. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Block.py +0 -0
  96. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompression.py +0 -0
  97. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompressionMethod.py +0 -0
  98. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Bool.py +0 -0
  99. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Buffer.py +0 -0
  100. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/CompressionType.py +0 -0
  101. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Date.py +0 -0
  102. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/DateUnit.py +0 -0
  103. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Decimal.py +0 -0
  104. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryBatch.py +0 -0
  105. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryEncoding.py +0 -0
  106. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryKind.py +0 -0
  107. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Duration.py +0 -0
  108. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Endianness.py +0 -0
  109. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Feature.py +0 -0
  110. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Field.py +0 -0
  111. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/FieldNode.py +0 -0
  112. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeBinary.py +0 -0
  113. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeList.py +0 -0
  114. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/FloatingPoint.py +0 -0
  115. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Footer.py +0 -0
  116. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Int.py +0 -0
  117. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Interval.py +0 -0
  118. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/IntervalUnit.py +0 -0
  119. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/KeyValue.py +0 -0
  120. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/LargeBinary.py +0 -0
  121. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/LargeList.py +0 -0
  122. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/LargeUtf8.py +0 -0
  123. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/List.py +0 -0
  124. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Map.py +0 -0
  125. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Message.py +0 -0
  126. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/MessageHeader.py +0 -0
  127. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/MetadataVersion.py +0 -0
  128. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Null.py +0 -0
  129. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Precision.py +0 -0
  130. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/RecordBatch.py +0 -0
  131. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Schema.py +0 -0
  132. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixCompressedAxis.py +0 -0
  133. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixIndexCSX.py +0 -0
  134. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensor.py +0 -0
  135. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndex.py +0 -0
  136. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCOO.py +0 -0
  137. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCSF.py +0 -0
  138. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Struct_.py +0 -0
  139. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Tensor.py +0 -0
  140. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/TensorDim.py +0 -0
  141. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Time.py +0 -0
  142. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/TimeUnit.py +0 -0
  143. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Timestamp.py +0 -0
  144. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Type.py +0 -0
  145. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Union.py +0 -0
  146. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/UnionMode.py +0 -0
  147. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/Utf8.py +0 -0
  148. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/org/apache/arrow/flatbuf/__init__.py +0 -0
  149. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/AlterColumnRequest.py +0 -0
  150. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/AlterProjectionTableRequest.py +0 -0
  151. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/AlterSchemaRequest.py +0 -0
  152. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/AlterTableRequest.py +0 -0
  153. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/Column.py +0 -0
  154. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/ColumnType.py +0 -0
  155. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/CreateProjectionRequest.py +0 -0
  156. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/CreateSchemaRequest.py +0 -0
  157. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/GetProjectionTableStatsResponse.py +0 -0
  158. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/GetTableStatsResponse.py +0 -0
  159. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/ImportDataRequest.py +0 -0
  160. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/ListProjectionsResponse.py +0 -0
  161. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/ListSchemasResponse.py +0 -0
  162. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/ListTablesResponse.py +0 -0
  163. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/ObjectDetails.py +0 -0
  164. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/S3File.py +0 -0
  165. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/VipRange.py +0 -0
  166. {vastdb-0.1.9 → vastdb-0.1.10}/vast_flatbuf/tabular/__init__.py +0 -0
  167. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/__init__.py +0 -0
  168. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/bench/__init__.py +0 -0
  169. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/bench/test_perf.py +0 -0
  170. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/bucket.py +0 -0
  171. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/errors.py +0 -0
  172. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/schema.py +0 -0
  173. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/session.py +0 -0
  174. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/__init__.py +0 -0
  175. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/test_duckdb.py +0 -0
  176. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/test_imports.py +0 -0
  177. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/test_nested.py +0 -0
  178. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/test_projections.py +0 -0
  179. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/test_sanity.py +0 -0
  180. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/test_schemas.py +0 -0
  181. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/test_tables.py +0 -0
  182. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/test_util.py +0 -0
  183. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/tests/util.py +0 -0
  184. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/transaction.py +0 -0
  185. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/vast_tests/__init__.py +0 -0
  186. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb/vast_tests/test_ha.py +0 -0
  187. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb.egg-info/dependency_links.txt +0 -0
  188. {vastdb-0.1.9 → vastdb-0.1.10}/vastdb.egg-info/requires.txt +0 -0
  189. {vastdb-0.1.9 → vastdb-0.1.10}/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
+ ## [0.1.10] (2024-07-09)
8
+ [0.1.10]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.9...v0.1.10
9
+
10
+ ## Fixed
11
+ - Support responses with no record batches
12
+ - Document supported Arrow data types
13
+
7
14
  ## [0.1.9] (2024-07-01)
8
15
  [0.1.9]: https://github.com/vast-data/vastdb_sdk/compare/v0.1.8...v0.1.9
9
16
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
@@ -19,6 +19,11 @@
19
19
  - [S3 access & secret keys on VAST cluster](https://support.vastdata.com/s/article/UUID-4d2e7e23-b2fb-7900-d98f-96c31a499626)
20
20
  - [Tabular identity policy with the proper permissions](https://support.vastdata.com/s/article/UUID-14322b60-d6a2-89ac-3df0-3dfbb6974182)
21
21
 
22
+ ### Required VAST release
23
+
24
+ Currently, VAST DB Python SDK requires `5.0.0-sp10` or later VAST release.
25
+
26
+ If the cluster is running an older VAST release, please contact customer.support@vastdata.com for more details.
22
27
 
23
28
  ### Installation
24
29
 
@@ -203,10 +208,3 @@ See the following blog posts for more examples:
203
208
 
204
209
  - https://vastdata.com/blog/the-vast-catalog-in-action-part-1
205
210
  - https://vastdata.com/blog/the-vast-catalog-in-action-part-2
206
-
207
-
208
- ## Required VAST release
209
-
210
- Currently, VAST DB Python SDK requires `5.0.0-sp10` or later VAST release.
211
-
212
- If the cluster is running an older VAST release, please contact customer.support@vastdata.com for more details.
@@ -29,7 +29,7 @@ setup(
29
29
  name='vastdb',
30
30
  python_requires='>=3.9.0',
31
31
  description='VAST Data SDK',
32
- version='0.1.9' + suffix,
32
+ version='0.1.10' + suffix,
33
33
  url='https://github.com/vast-data/vastdb_sdk',
34
34
  author='VAST DATA',
35
35
  author_email='hello@vastdata.com',
@@ -1807,7 +1807,7 @@ def _iter_query_data_response_columns(fileobj, stream_ids=None):
1807
1807
  batches.append(batch)
1808
1808
  except StopIteration: # we got an end-of-stream IPC message for a given stream ID
1809
1809
  reader, batches = readers.pop(stream_id) # end of column
1810
- table = pa.Table.from_batches(batches) # concatenate all column chunks (as a single)
1810
+ table = pa.Table.from_batches(batches=batches, schema=reader.schema) # concatenate all column chunks (as a single)
1811
1811
  _logger.debug("stream_id=%d rows=%d column=%s", stream_id, len(table), table)
1812
1812
  yield (stream_id, next_row_id, table)
1813
1813
 
@@ -0,0 +1,196 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import functools
4
+ import itertools
5
+ import logging
6
+ import os
7
+ import random
8
+ import threading
9
+ import time
10
+ from concurrent.futures import ProcessPoolExecutor, as_completed
11
+
12
+ import numpy as np
13
+ import pyarrow as pa
14
+
15
+ import vastdb.errors
16
+ from vastdb.table import INTERNAL_ROW_ID
17
+ from vastdb.tests import metrics
18
+
19
+ logging.basicConfig(
20
+ level="INFO",
21
+ format="%(asctime)s %(levelname)-10s %(process)d/%(thread)d %(filename)s:%(lineno)d %(message)s")
22
+
23
+ log = logging.getLogger()
24
+
25
+ log.info("Python SDK version: %s", vastdb.util.version())
26
+
27
+ NUM_COLUMNS = 10_000
28
+ COLUMNS_BATCH = 10
29
+
30
+ NUM_ROW_GROUPS = 100
31
+ ROW_GROUP_SIZE = 100_000
32
+
33
+
34
+ INTERNAL_ROWID_FIELD = pa.field(INTERNAL_ROW_ID, pa.uint64()) # used for UPDATE
35
+ EXTERNAL_ROWID_FIELD = pa.field("vastdb_rowid", pa.int64()) # used for INSERT & SELECT
36
+
37
+ SCHEMA = "perf"
38
+ TABLE = "sample"
39
+
40
+ SCHEMA_ARROW = pa.schema(
41
+ [pa.field(f'c{i}', pa.float32()) for i in range(NUM_COLUMNS)]
42
+ )
43
+
44
+
45
+ def load_batch(bucket, session_kwargs, offset, limit):
46
+ log.info('loading into [%d..%d)', offset, limit)
47
+
48
+ # Iterate over all row-groups in this file
49
+ rowids_range = range(offset, limit)
50
+ rowids = pa.array(rowids_range, INTERNAL_ROWID_FIELD.type)
51
+
52
+ session = vastdb.connect(**session_kwargs)
53
+ metrics_rows = []
54
+
55
+ with session.transaction() as tx:
56
+ table = tx.bucket(bucket).schema(SCHEMA).table(TABLE)
57
+
58
+ col = table[EXTERNAL_ROWID_FIELD.name]
59
+ pred = (col >= rowids_range[0]) & (col <= rowids_range[-1])
60
+ count = sum(len(rb) for rb in table.select(columns=[], predicate=pred))
61
+ log.info("%d rows exist at %s", count, rowids_range)
62
+ if count == len(rowids_range):
63
+ # skip already loaded rows
64
+ log.info('skipping [%d..%d)', offset, limit)
65
+
66
+ total_nbytes = 0
67
+ calls = 0
68
+ t0 = time.time()
69
+ # Insert/update every chunk of columns in this rowgroup
70
+ for j in range(0, len(SCHEMA_ARROW), COLUMNS_BATCH):
71
+ cols_batch = list(SCHEMA_ARROW)[j:j + COLUMNS_BATCH]
72
+ arrays = [
73
+ pa.array(np.float32(np.random.uniform(size=[ROW_GROUP_SIZE])))
74
+ for _ in cols_batch
75
+ ]
76
+ chunk = pa.table(data=arrays, schema=pa.schema(cols_batch))
77
+ nbytes = chunk.get_total_buffer_size()
78
+ start = time.perf_counter()
79
+ if j == 0:
80
+ chunk = chunk.add_column(0, EXTERNAL_ROWID_FIELD, rowids.cast(EXTERNAL_ROWID_FIELD.type))
81
+ op = 'insert'
82
+ table.insert(chunk)
83
+ else:
84
+ chunk = chunk.add_column(0, INTERNAL_ROWID_FIELD, rowids)
85
+ op = 'update'
86
+ table.update(chunk)
87
+ finish = time.perf_counter()
88
+
89
+ metrics_rows.append(metrics.Row(
90
+ start=start, finish=finish, table_path=table.path, op=op,
91
+ nbytes=nbytes, rows=len(chunk), cols=len(cols_batch),
92
+ pid=os.getpid(), tid=threading.get_native_id()))
93
+
94
+ total_nbytes += nbytes
95
+ calls += 1
96
+ log.debug("%s into %s: %d rows x %d cols, %.3f MB",
97
+ op, rowids_range, len(chunk), len(chunk.schema),
98
+ chunk.get_total_buffer_size() / 1e6)
99
+
100
+ dt = time.time() - t0
101
+
102
+ log.info('loaded into [%d..%d): %d rows x %d cols, %.3f MB, %d RPCs, %.3f seconds',
103
+ offset, limit, limit - offset, NUM_COLUMNS, total_nbytes / 1e6, calls, dt)
104
+ return metrics_rows
105
+
106
+
107
+ def test_ingest(clean_bucket_name, session_kwargs, tabular_endpoint_urls, num_workers, perf_metrics_db):
108
+ session = vastdb.connect(**session_kwargs)
109
+ metrics_table = metrics.Table(perf_metrics_db, "ingest")
110
+
111
+ with session.transaction() as tx:
112
+ b = tx.bucket(clean_bucket_name)
113
+ try:
114
+ s = b.schema(SCHEMA)
115
+ except vastdb.errors.MissingSchema:
116
+ s = b.create_schema(SCHEMA)
117
+
118
+ try:
119
+ s.table(TABLE)
120
+ except vastdb.errors.MissingTable:
121
+ s.create_table(TABLE, pa.schema([EXTERNAL_ROWID_FIELD] + list(SCHEMA_ARROW)))
122
+
123
+ ranges = [
124
+ (i * ROW_GROUP_SIZE, (i + 1) * ROW_GROUP_SIZE)
125
+ for i in range(NUM_ROW_GROUPS)
126
+ ]
127
+
128
+ with ProcessPoolExecutor(max_workers=num_workers) as executor:
129
+ futures = [
130
+ executor.submit(load_batch, clean_bucket_name, session_kwargs | {'endpoint': url}, offset, limit)
131
+ for (offset, limit), url in zip(ranges, itertools.cycle(tabular_endpoint_urls))
132
+ ]
133
+ log.info("spawned %d futures", len(futures))
134
+ for future in as_completed(futures):
135
+ metrics_table.insert(future.result())
136
+
137
+ with session.transaction() as tx:
138
+ t = tx.bucket(clean_bucket_name).schema(SCHEMA).table(TABLE)
139
+ count = sum(len(rb) for rb in t.select([]))
140
+ log.info("%s has %d rows: %s", t, count, t.stats)
141
+
142
+
143
+ def run_query(session_kwargs, i, bucket_name, endpoint_url):
144
+ num_columns = 2000
145
+ row_groups_per_query = 10
146
+
147
+ config = vastdb.table.QueryConfig(
148
+ num_sub_splits=1,
149
+ num_splits=1,
150
+ limit_rows_per_sub_split=ROW_GROUP_SIZE,
151
+ num_row_groups_per_sub_split=1)
152
+
153
+ row_group_indices = list(range(NUM_ROW_GROUPS))
154
+ r = random.Random(i)
155
+ r.shuffle(row_group_indices)
156
+
157
+ session = vastdb.connect(**(session_kwargs | {"endpoint": endpoint_url}))
158
+ with session.transaction() as tx:
159
+ t = tx.bucket(bucket_name).schema(SCHEMA).table(TABLE)
160
+
161
+ fields = list(t.arrow_schema)[1:]
162
+ r.shuffle(fields)
163
+ cols = [f.name for f in fields[:num_columns]]
164
+
165
+ vastdb_rowid = t['vastdb_rowid']
166
+ preds = []
167
+ for offset in range(0, len(row_group_indices), row_groups_per_query):
168
+ rowid_ranges = (
169
+ vastdb_rowid.between(j * ROW_GROUP_SIZE, (j + 1) * ROW_GROUP_SIZE - 1)
170
+ for j in row_group_indices[offset:offset + row_groups_per_query]
171
+ )
172
+ pred = functools.reduce((lambda x, y: x | y), rowid_ranges)
173
+ preds.append(pred)
174
+
175
+ for j, pred in enumerate(preds):
176
+ log.info("%d) starting query #%d on %s", i, j, endpoint_url)
177
+ t0 = time.time()
178
+ res = t.select(columns=cols, predicate=pred, config=config)
179
+ rows = 0
180
+ data = 0
181
+ for rb in res:
182
+ rows += len(rb)
183
+ data += rb.nbytes
184
+ dt = time.time() - t0
185
+ log.info("%d) got query #%d batch %.3f[s], %.3f[GB] %.3f[MB/s], %.3f[Mrows]", i, j, dt, data / 1e9, data / 1e6 / dt, rows / 1e6)
186
+
187
+ dt = time.time() - t0
188
+ log.info("%d) finished query #%d %.3f[s], %.3f[GB], %.3f[MB/s], %.3f[Mrows]", i, j, dt, data / 1e9, data / 1e6 / dt, rows / 1e6)
189
+
190
+
191
+ def test_scan(test_bucket_name, session, num_workers, session_kwargs, tabular_endpoint_urls):
192
+ log.info("starting %d workers, endpoints=%s", num_workers, tabular_endpoint_urls)
193
+ with ProcessPoolExecutor(max_workers=num_workers) as executor:
194
+ for i, url in zip(range(num_workers), itertools.cycle(tabular_endpoint_urls)):
195
+ executor.submit(run_query, session_kwargs, i, test_bucket_name, url)
196
+ log.info("finished %d workers", num_workers)
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import sqlite3
2
3
  from pathlib import Path
3
4
 
4
5
  import boto3
@@ -13,27 +14,43 @@ def pytest_addoption(parser):
13
14
  default=os.environ.get("AWS_ACCESS_KEY_ID", None))
14
15
  parser.addoption("--tabular-secret-key", help="Secret key with Tabular permissions (AWS_SECRET_ACCESS_KEY)",
15
16
  default=os.environ.get("AWS_SECRET_ACCESS_KEY", None))
16
- parser.addoption("--tabular-endpoint-url", help="Tabular server endpoint", default="http://localhost:9090")
17
+ parser.addoption("--tabular-endpoint-url", help="Tabular server endpoint", default=[], action="append")
17
18
  parser.addoption("--data-path", help="Data files location", default=None)
18
19
  parser.addoption("--crater-path", help="Save benchmark results in a dedicated location", default=None)
19
20
  parser.addoption("--schema-name", help="Name of schema for the test to operate on", default=None)
20
21
  parser.addoption("--table-name", help="Name of table for the test to operate on", default=None)
22
+ parser.addoption("--num-workers", help="Number of concurrent workers", default=1)
21
23
 
22
24
 
23
25
  @pytest.fixture(scope="session")
24
- def session(request):
25
- return vastdb.connect(
26
+ def session_kwargs(request, tabular_endpoint_urls):
27
+ return dict(
26
28
  access=request.config.getoption("--tabular-access-key"),
27
29
  secret=request.config.getoption("--tabular-secret-key"),
28
- endpoint=request.config.getoption("--tabular-endpoint-url"),
30
+ endpoint=tabular_endpoint_urls[0],
29
31
  )
30
32
 
31
33
 
34
+ @pytest.fixture(scope="session")
35
+ def session(session_kwargs):
36
+ return vastdb.connect(**session_kwargs)
37
+
38
+
39
+ @pytest.fixture(scope="session")
40
+ def num_workers(request):
41
+ return int(request.config.getoption("--num-workers"))
42
+
43
+
32
44
  @pytest.fixture(scope="session")
33
45
  def test_bucket_name(request):
34
46
  return request.config.getoption("--tabular-bucket-name")
35
47
 
36
48
 
49
+ @pytest.fixture(scope="session")
50
+ def tabular_endpoint_urls(request):
51
+ return request.config.getoption("--tabular-endpoint-url") or ["http://localhost:9090"]
52
+
53
+
37
54
  def iter_schemas(s):
38
55
  """Recusively scan all schemas."""
39
56
  children = s.schemas()
@@ -55,12 +72,12 @@ def clean_bucket_name(request, test_bucket_name, session):
55
72
 
56
73
 
57
74
  @pytest.fixture(scope="session")
58
- def s3(request):
75
+ def s3(request, tabular_endpoint_urls):
59
76
  return boto3.client(
60
77
  's3',
61
78
  aws_access_key_id=request.config.getoption("--tabular-access-key"),
62
79
  aws_secret_access_key=request.config.getoption("--tabular-secret-key"),
63
- endpoint_url=request.config.getoption("--tabular-endpoint-url"))
80
+ endpoint_url=tabular_endpoint_urls[0])
64
81
 
65
82
 
66
83
  @pytest.fixture(scope="function")
@@ -81,3 +98,8 @@ def schema_name(request):
81
98
  @pytest.fixture(scope="function")
82
99
  def table_name(request):
83
100
  return request.config.getoption("--table-name")
101
+
102
+
103
+ @pytest.fixture(scope="function")
104
+ def perf_metrics_db(crater_path):
105
+ return sqlite3.connect(f"{crater_path}/metrics.sqlite")
@@ -167,8 +167,13 @@ class Table:
167
167
  """Also, load columns' metadata."""
168
168
  self.arrow_schema = self.columns()
169
169
 
170
- table_path = f'{self.schema.bucket.name}/{self.schema.name}/{self.name}'
171
- self._ibis_table = ibis.table(ibis.Schema.from_pyarrow(self.arrow_schema), table_path)
170
+ self._table_path = f'{self.schema.bucket.name}/{self.schema.name}/{self.name}'
171
+ self._ibis_table = ibis.table(ibis.Schema.from_pyarrow(self.arrow_schema), self._table_path)
172
+
173
+ @property
174
+ def path(self):
175
+ """Return table's path."""
176
+ return self._table_path
172
177
 
173
178
  @property
174
179
  def tx(self):
@@ -0,0 +1,42 @@
1
+ import dataclasses
2
+ import sqlite3
3
+ from typing import List
4
+
5
+ _MAP_SQLITE_TYPES = {
6
+ str: "TEXT",
7
+ float: "REAL",
8
+ int: "INTEGER",
9
+ }
10
+
11
+
12
+ @dataclasses.dataclass
13
+ class Row:
14
+ start: float
15
+ finish: float
16
+ table_path: str
17
+ op: str
18
+ nbytes: int
19
+ rows: int
20
+ cols: int
21
+ pid: int
22
+ tid: int
23
+
24
+
25
+ class Table:
26
+ def __init__(self, conn: sqlite3.Connection, name: str):
27
+ self.fields = dataclasses.fields(Row)
28
+ self.conn = conn
29
+ self.name = name
30
+ columns = ", ".join(
31
+ f"{f.name} {_MAP_SQLITE_TYPES[f.type]}"
32
+ for f in self.fields
33
+ )
34
+ cmd = f"CREATE TABLE {self.name} ({columns})"
35
+ self.conn.execute(cmd).fetchall()
36
+
37
+ def insert(self, rows: List[Row]):
38
+ args = ", ".join(["?"] * len(self.fields))
39
+ cmd = f"INSERT INTO {self.name} VALUES ({args})"
40
+ data = [dataclasses.astuple(row) for row in rows]
41
+ self.conn.executemany(cmd, data).fetchall()
42
+ self.conn.commit()
@@ -1,3 +1,4 @@
1
+ import importlib
1
2
  import logging
2
3
  import re
3
4
  from typing import TYPE_CHECKING, Callable, List, Optional, Union
@@ -159,3 +160,7 @@ def check_supported_types(fields: pa.Schema):
159
160
  if isinstance(f.type, pa.TimestampType):
160
161
  if f.type.tz:
161
162
  raise NotSupportedType(f)
163
+
164
+
165
+ def version():
166
+ return importlib.metadata.distribution('vastdb').version
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 0.1.9
3
+ Version: 0.1.10
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
@@ -171,7 +171,9 @@ vastdb.egg-info/requires.txt
171
171
  vastdb.egg-info/top_level.txt
172
172
  vastdb/bench/__init__.py
173
173
  vastdb/bench/test_perf.py
174
+ vastdb/bench/test_sample.py
174
175
  vastdb/tests/__init__.py
176
+ vastdb/tests/metrics.py
175
177
  vastdb/tests/test_duckdb.py
176
178
  vastdb/tests/test_imports.py
177
179
  vastdb/tests/test_nested.py
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