vastdb 1.3.2__tar.gz → 1.3.4__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 (220) hide show
  1. {vastdb-1.3.2 → vastdb-1.3.4}/CHANGELOG.md +17 -0
  2. {vastdb-1.3.2 → vastdb-1.3.4}/PKG-INFO +1 -1
  3. {vastdb-1.3.2 → vastdb-1.3.4}/README.md +1 -1
  4. {vastdb-1.3.2 → vastdb-1.3.4}/setup.py +1 -1
  5. vastdb-1.3.4/vast_flatbuf/tabular/CreateViewRequest.py +104 -0
  6. vastdb-1.3.4/vast_flatbuf/tabular/ListViewsResponse.py +89 -0
  7. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/ObjectDetails.py +23 -1
  8. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/_internal.py +97 -22
  9. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/schema.py +1 -2
  10. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/table.py +6 -2
  11. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/metrics.py +1 -1
  12. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/test_sanity.py +14 -10
  13. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/test_tables.py +110 -2
  14. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb.egg-info/PKG-INFO +1 -1
  15. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb.egg-info/SOURCES.txt +2 -0
  16. {vastdb-1.3.2 → vastdb-1.3.4}/CONTRIBUTING.md +0 -0
  17. {vastdb-1.3.2 → vastdb-1.3.4}/LICENSE +0 -0
  18. {vastdb-1.3.2 → vastdb-1.3.4}/MANIFEST.in +0 -0
  19. {vastdb-1.3.2 → vastdb-1.3.4}/requirements.txt +0 -0
  20. {vastdb-1.3.2 → vastdb-1.3.4}/setup.cfg +0 -0
  21. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/__init__.py +0 -0
  22. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/__init__.py +0 -0
  23. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/__init__.py +0 -0
  24. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/__init__.py +0 -0
  25. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/__init__.py +0 -0
  26. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Aggregate.py +0 -0
  27. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySlice.py +0 -0
  28. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySubscript.py +0 -0
  29. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BinaryLiteral.py +0 -0
  30. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BooleanLiteral.py +0 -0
  31. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Bound.py +0 -0
  32. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Call.py +0 -0
  33. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CaseFragment.py +0 -0
  34. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Cast.py +0 -0
  35. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConcreteBoundImpl.py +0 -0
  36. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConditionalCase.py +0 -0
  37. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CurrentRow.py +0 -0
  38. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DateLiteral.py +0 -0
  39. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DecimalLiteral.py +0 -0
  40. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Deref.py +0 -0
  41. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DurationLiteral.py +0 -0
  42. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Expression.py +0 -0
  43. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ExpressionImpl.py +0 -0
  44. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldIndex.py +0 -0
  45. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldRef.py +0 -0
  46. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Filter.py +0 -0
  47. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FixedSizeBinaryLiteral.py +0 -0
  48. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float16Literal.py +0 -0
  49. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float32Literal.py +0 -0
  50. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float64Literal.py +0 -0
  51. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Following.py +0 -0
  52. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Frame.py +0 -0
  53. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Grouping.py +0 -0
  54. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int16Literal.py +0 -0
  55. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int32Literal.py +0 -0
  56. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int64Literal.py +0 -0
  57. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int8Literal.py +0 -0
  58. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteral.py +0 -0
  59. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralDaysMilliseconds.py +0 -0
  60. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralImpl.py +0 -0
  61. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralMonths.py +0 -0
  62. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Join.py +0 -0
  63. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/JoinKind.py +0 -0
  64. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/KeyValue.py +0 -0
  65. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Limit.py +0 -0
  66. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ListLiteral.py +0 -0
  67. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Literal.py +0 -0
  68. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralColumn.py +0 -0
  69. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralImpl.py +0 -0
  70. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralRelation.py +0 -0
  71. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapKey.py +0 -0
  72. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapLiteral.py +0 -0
  73. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/OrderBy.py +0 -0
  74. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Ordering.py +0 -0
  75. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Plan.py +0 -0
  76. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Preceding.py +0 -0
  77. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Project.py +0 -0
  78. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelId.py +0 -0
  79. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Relation.py +0 -0
  80. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelationImpl.py +0 -0
  81. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOpKind.py +0 -0
  82. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOperation.py +0 -0
  83. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SimpleCase.py +0 -0
  84. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SortKey.py +0 -0
  85. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Source.py +0 -0
  86. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StringLiteral.py +0 -0
  87. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructField.py +0 -0
  88. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructLiteral.py +0 -0
  89. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimeLiteral.py +0 -0
  90. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimestampLiteral.py +0 -0
  91. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt16Literal.py +0 -0
  92. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt32Literal.py +0 -0
  93. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt64Literal.py +0 -0
  94. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt8Literal.py +0 -0
  95. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Unbounded.py +0 -0
  96. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/WindowCall.py +0 -0
  97. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/computeir/flatbuf/__init__.py +0 -0
  98. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Binary.py +0 -0
  99. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Block.py +0 -0
  100. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompression.py +0 -0
  101. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompressionMethod.py +0 -0
  102. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Bool.py +0 -0
  103. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Buffer.py +0 -0
  104. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/CompressionType.py +0 -0
  105. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Date.py +0 -0
  106. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/DateUnit.py +0 -0
  107. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Decimal.py +0 -0
  108. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryBatch.py +0 -0
  109. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryEncoding.py +0 -0
  110. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryKind.py +0 -0
  111. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Duration.py +0 -0
  112. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Endianness.py +0 -0
  113. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Feature.py +0 -0
  114. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Field.py +0 -0
  115. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/FieldNode.py +0 -0
  116. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeBinary.py +0 -0
  117. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeList.py +0 -0
  118. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/FloatingPoint.py +0 -0
  119. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Footer.py +0 -0
  120. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Int.py +0 -0
  121. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Interval.py +0 -0
  122. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/IntervalUnit.py +0 -0
  123. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/KeyValue.py +0 -0
  124. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/LargeBinary.py +0 -0
  125. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/LargeList.py +0 -0
  126. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/LargeUtf8.py +0 -0
  127. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/List.py +0 -0
  128. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Map.py +0 -0
  129. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Message.py +0 -0
  130. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/MessageHeader.py +0 -0
  131. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/MetadataVersion.py +0 -0
  132. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Null.py +0 -0
  133. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Precision.py +0 -0
  134. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/RecordBatch.py +0 -0
  135. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Schema.py +0 -0
  136. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixCompressedAxis.py +0 -0
  137. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixIndexCSX.py +0 -0
  138. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensor.py +0 -0
  139. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndex.py +0 -0
  140. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCOO.py +0 -0
  141. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCSF.py +0 -0
  142. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Struct_.py +0 -0
  143. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Tensor.py +0 -0
  144. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/TensorDim.py +0 -0
  145. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Time.py +0 -0
  146. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/TimeUnit.py +0 -0
  147. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Timestamp.py +0 -0
  148. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Type.py +0 -0
  149. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Union.py +0 -0
  150. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/UnionMode.py +0 -0
  151. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/Utf8.py +0 -0
  152. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/org/apache/arrow/flatbuf/__init__.py +0 -0
  153. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/AlterColumnRequest.py +0 -0
  154. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/AlterProjectionTableRequest.py +0 -0
  155. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/AlterSchemaRequest.py +0 -0
  156. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/AlterTableRequest.py +0 -0
  157. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/Column.py +0 -0
  158. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/ColumnType.py +0 -0
  159. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/CreateProjectionRequest.py +0 -0
  160. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/CreateSchemaRequest.py +0 -0
  161. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/GetProjectionTableStatsResponse.py +0 -0
  162. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/GetTableStatsResponse.py +0 -0
  163. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/ImportDataRequest.py +0 -0
  164. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/ListProjectionsResponse.py +0 -0
  165. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/ListSchemasResponse.py +0 -0
  166. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/ListTablesResponse.py +0 -0
  167. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/S3File.py +0 -0
  168. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/VipRange.py +0 -0
  169. {vastdb-1.3.2 → vastdb-1.3.4}/vast_flatbuf/tabular/__init__.py +0 -0
  170. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/__init__.py +0 -0
  171. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/__init__.py +0 -0
  172. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/__init__.py +0 -0
  173. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/bench_repo/__init__.py +0 -0
  174. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/bench_repo/mega_combo.py +0 -0
  175. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/cli.py +0 -0
  176. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/common/__init__.py +0 -0
  177. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/common/constants.py +0 -0
  178. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/common/log_utils.py +0 -0
  179. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/common/types.py +0 -0
  180. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/common/utils.py +0 -0
  181. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/dataset/__init__.py +0 -0
  182. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/dataset/generate_secmaster.py +0 -0
  183. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/dataset/generate_stocks_dataset.py +0 -0
  184. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/dataset/schemas.py +0 -0
  185. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/dataset/secmaster.py +0 -0
  186. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/orchestrate/__init__.py +0 -0
  187. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/orchestrate/bench_spec.py +0 -0
  188. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/orchestrate/results_helpers.py +0 -0
  189. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/orchestrate/scenario.py +0 -0
  190. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/orchestrate/scenario_generator.py +0 -0
  191. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/query/__init__.py +0 -0
  192. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/query/arrow_common.py +0 -0
  193. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/query/query.py +0 -0
  194. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/query/query_pyarrow.py +0 -0
  195. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/query/query_vastdb.py +0 -0
  196. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/perf_bench/run.py +0 -0
  197. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/test_perf.py +0 -0
  198. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bench/test_sample.py +0 -0
  199. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/bucket.py +0 -0
  200. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/config.py +0 -0
  201. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/conftest.py +0 -0
  202. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/errors.py +0 -0
  203. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/features.py +0 -0
  204. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/session.py +0 -0
  205. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/__init__.py +0 -0
  206. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/test_duckdb.py +0 -0
  207. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/test_imports.py +0 -0
  208. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/test_nested.py +0 -0
  209. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/test_projections.py +0 -0
  210. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/test_schemas.py +0 -0
  211. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/test_util.py +0 -0
  212. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/tests/util.py +0 -0
  213. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/transaction.py +0 -0
  214. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/util.py +0 -0
  215. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/vast_tests/__init__.py +0 -0
  216. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/vast_tests/test_ha.py +0 -0
  217. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb/vast_tests/test_scale.py +0 -0
  218. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb.egg-info/dependency_links.txt +0 -0
  219. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb.egg-info/requires.txt +0 -0
  220. {vastdb-1.3.2 → vastdb-1.3.4}/vastdb.egg-info/top_level.txt +0 -0
@@ -4,6 +4,23 @@ 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.4] (2024-12-11)
8
+ [1.3.4]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.3...v1.3.4
9
+
10
+ ### Added
11
+ - Support predicate pushdown on unsigned integers
12
+
13
+
14
+ ## [1.3.3] (2024-11-18)
15
+ [1.3.3]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.2...v1.3.3
16
+
17
+ ### Added
18
+ - Detect non-VAST DB server responses
19
+
20
+ ### Fixed
21
+ - Fetch table statistics when constructing a `Table` objects and accessing `Table.stats`
22
+
23
+
7
24
  ## [1.3.2] (2024-10-07)
8
25
  [1.3.2]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.1...v1.3.2
9
26
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vastdb
3
- Version: 1.3.2
3
+ Version: 1.3.4
4
4
  Summary: VAST Data SDK
5
5
  Home-page: https://github.com/vast-data/vastdb_sdk
6
6
  Author: VAST DATA
@@ -14,7 +14,7 @@ For more details about the VAST Database, see [this whitepaper](https://vastdata
14
14
 
15
15
  ### Requirements
16
16
 
17
- - Linux client with Python 3.9 or later, and network access to the VAST Cluster
17
+ - Linux client with Python 3.9 - 3.12, and network access to the VAST Cluster
18
18
  - [Virtual IP pool configured with DNS service](https://support.vastdata.com/s/topic/0TOV40000000FThOAM/configuring-network-access-v50)
19
19
  - [S3 access & secret keys on the 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)
@@ -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.2' + suffix,
32
+ version='1.3.4' + suffix,
33
33
  url='https://github.com/vast-data/vastdb_sdk',
34
34
  author='VAST DATA',
35
35
  author_email='hello@vastdata.com',
@@ -0,0 +1,104 @@
1
+ # automatically generated by the FlatBuffers compiler, do not modify
2
+
3
+ # namespace: tabular
4
+
5
+ import flatbuffers
6
+ from flatbuffers.compat import import_numpy
7
+ np = import_numpy()
8
+
9
+ class CreateViewRequest(object):
10
+ __slots__ = ['_tab']
11
+
12
+ @classmethod
13
+ def GetRootAs(cls, buf, offset=0):
14
+ n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
15
+ x = CreateViewRequest()
16
+ x.Init(buf, n + offset)
17
+ return x
18
+
19
+ @classmethod
20
+ def GetRootAsCreateViewRequest(cls, buf, offset=0):
21
+ """This method is deprecated. Please switch to GetRootAs."""
22
+ return cls.GetRootAs(buf, offset)
23
+ # CreateViewRequest
24
+ def Init(self, buf, pos):
25
+ self._tab = flatbuffers.table.Table(buf, pos)
26
+
27
+ # CreateViewRequest
28
+ def ViewMetadataArrowBuffer(self, j):
29
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
30
+ if o != 0:
31
+ a = self._tab.Vector(o)
32
+ return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
33
+ return 0
34
+
35
+ # CreateViewRequest
36
+ def ViewMetadataArrowBufferAsNumpy(self):
37
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
38
+ if o != 0:
39
+ return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o)
40
+ return 0
41
+
42
+ # CreateViewRequest
43
+ def ViewMetadataArrowBufferLength(self):
44
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
45
+ if o != 0:
46
+ return self._tab.VectorLen(o)
47
+ return 0
48
+
49
+ # CreateViewRequest
50
+ def ViewMetadataArrowBufferIsNone(self):
51
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
52
+ return o == 0
53
+
54
+ # CreateViewRequest
55
+ def ViewDataArrowSchema(self, j):
56
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
57
+ if o != 0:
58
+ a = self._tab.Vector(o)
59
+ return self._tab.Get(flatbuffers.number_types.Uint8Flags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
60
+ return 0
61
+
62
+ # CreateViewRequest
63
+ def ViewDataArrowSchemaAsNumpy(self):
64
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
65
+ if o != 0:
66
+ return self._tab.GetVectorAsNumpy(flatbuffers.number_types.Uint8Flags, o)
67
+ return 0
68
+
69
+ # CreateViewRequest
70
+ def ViewDataArrowSchemaLength(self):
71
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
72
+ if o != 0:
73
+ return self._tab.VectorLen(o)
74
+ return 0
75
+
76
+ # CreateViewRequest
77
+ def ViewDataArrowSchemaIsNone(self):
78
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
79
+ return o == 0
80
+
81
+ def Start(builder): builder.StartObject(2)
82
+ def CreateViewRequestStart(builder):
83
+ """This method is deprecated. Please switch to Start."""
84
+ return Start(builder)
85
+ def AddViewMetadataArrowBuffer(builder, viewMetadataArrowBuffer): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(viewMetadataArrowBuffer), 0)
86
+ def CreateViewRequestAddViewMetadataArrowBuffer(builder, viewMetadataArrowBuffer):
87
+ """This method is deprecated. Please switch to AddViewMetadataArrowBuffer."""
88
+ return AddViewMetadataArrowBuffer(builder, viewMetadataArrowBuffer)
89
+ def StartViewMetadataArrowBufferVector(builder, numElems): return builder.StartVector(1, numElems, 1)
90
+ def CreateViewRequestStartViewMetadataArrowBufferVector(builder, numElems):
91
+ """This method is deprecated. Please switch to Start."""
92
+ return StartViewMetadataArrowBufferVector(builder, numElems)
93
+ def AddViewDataArrowSchema(builder, viewDataArrowSchema): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(viewDataArrowSchema), 0)
94
+ def CreateViewRequestAddViewDataArrowSchema(builder, viewDataArrowSchema):
95
+ """This method is deprecated. Please switch to AddViewDataArrowSchema."""
96
+ return AddViewDataArrowSchema(builder, viewDataArrowSchema)
97
+ def StartViewDataArrowSchemaVector(builder, numElems): return builder.StartVector(1, numElems, 1)
98
+ def CreateViewRequestStartViewDataArrowSchemaVector(builder, numElems):
99
+ """This method is deprecated. Please switch to Start."""
100
+ return StartViewDataArrowSchemaVector(builder, numElems)
101
+ def End(builder): return builder.EndObject()
102
+ def CreateViewRequestEnd(builder):
103
+ """This method is deprecated. Please switch to End."""
104
+ return End(builder)
@@ -0,0 +1,89 @@
1
+ # automatically generated by the FlatBuffers compiler, do not modify
2
+
3
+ # namespace: tabular
4
+
5
+ import flatbuffers
6
+ from flatbuffers.compat import import_numpy
7
+ np = import_numpy()
8
+
9
+ class ListViewsResponse(object):
10
+ __slots__ = ['_tab']
11
+
12
+ @classmethod
13
+ def GetRootAs(cls, buf, offset=0):
14
+ n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
15
+ x = ListViewsResponse()
16
+ x.Init(buf, n + offset)
17
+ return x
18
+
19
+ @classmethod
20
+ def GetRootAsListViewsResponse(cls, buf, offset=0):
21
+ """This method is deprecated. Please switch to GetRootAs."""
22
+ return cls.GetRootAs(buf, offset)
23
+ # ListViewsResponse
24
+ def Init(self, buf, pos):
25
+ self._tab = flatbuffers.table.Table(buf, pos)
26
+
27
+ # ListViewsResponse
28
+ def BucketName(self):
29
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(4))
30
+ if o != 0:
31
+ return self._tab.String(o + self._tab.Pos)
32
+ return None
33
+
34
+ # ListViewsResponse
35
+ def SchemaName(self):
36
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(6))
37
+ if o != 0:
38
+ return self._tab.String(o + self._tab.Pos)
39
+ return None
40
+
41
+ # ListViewsResponse
42
+ def Views(self, j):
43
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
44
+ if o != 0:
45
+ x = self._tab.Vector(o)
46
+ x += flatbuffers.number_types.UOffsetTFlags.py_type(j) * 4
47
+ x = self._tab.Indirect(x)
48
+ from vast_flatbuf.tabular.ObjectDetails import ObjectDetails
49
+ obj = ObjectDetails()
50
+ obj.Init(self._tab.Bytes, x)
51
+ return obj
52
+ return None
53
+
54
+ # ListViewsResponse
55
+ def ViewsLength(self):
56
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
57
+ if o != 0:
58
+ return self._tab.VectorLen(o)
59
+ return 0
60
+
61
+ # ListViewsResponse
62
+ def ViewsIsNone(self):
63
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(8))
64
+ return o == 0
65
+
66
+ def Start(builder): builder.StartObject(3)
67
+ def ListViewsResponseStart(builder):
68
+ """This method is deprecated. Please switch to Start."""
69
+ return Start(builder)
70
+ def AddBucketName(builder, bucketName): builder.PrependUOffsetTRelativeSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(bucketName), 0)
71
+ def ListViewsResponseAddBucketName(builder, bucketName):
72
+ """This method is deprecated. Please switch to AddBucketName."""
73
+ return AddBucketName(builder, bucketName)
74
+ def AddSchemaName(builder, schemaName): builder.PrependUOffsetTRelativeSlot(1, flatbuffers.number_types.UOffsetTFlags.py_type(schemaName), 0)
75
+ def ListViewsResponseAddSchemaName(builder, schemaName):
76
+ """This method is deprecated. Please switch to AddSchemaName."""
77
+ return AddSchemaName(builder, schemaName)
78
+ def AddViews(builder, views): builder.PrependUOffsetTRelativeSlot(2, flatbuffers.number_types.UOffsetTFlags.py_type(views), 0)
79
+ def ListViewsResponseAddViews(builder, views):
80
+ """This method is deprecated. Please switch to AddViews."""
81
+ return AddViews(builder, views)
82
+ def StartViewsVector(builder, numElems): return builder.StartVector(4, numElems, 4)
83
+ def ListViewsResponseStartViewsVector(builder, numElems):
84
+ """This method is deprecated. Please switch to Start."""
85
+ return StartViewsVector(builder, numElems)
86
+ def End(builder): return builder.EndObject()
87
+ def ListViewsResponseEnd(builder):
88
+ """This method is deprecated. Please switch to End."""
89
+ return End(builder)
@@ -60,7 +60,21 @@ class ObjectDetails(object):
60
60
  return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
61
61
  return 0
62
62
 
63
- def Start(builder): builder.StartObject(5)
63
+ # ObjectDetails
64
+ def NumPartitions(self):
65
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(14))
66
+ if o != 0:
67
+ return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
68
+ return 0
69
+
70
+ # ObjectDetails
71
+ def SortingKeyEnabled(self):
72
+ o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(16))
73
+ if o != 0:
74
+ return bool(self._tab.Get(flatbuffers.number_types.BoolFlags, o + self._tab.Pos))
75
+ return False
76
+
77
+ def Start(builder): builder.StartObject(7)
64
78
  def ObjectDetailsStart(builder):
65
79
  """This method is deprecated. Please switch to Start."""
66
80
  return Start(builder)
@@ -84,6 +98,14 @@ def AddSizeInBytes(builder, sizeInBytes): builder.PrependUint64Slot(4, sizeInByt
84
98
  def ObjectDetailsAddSizeInBytes(builder, sizeInBytes):
85
99
  """This method is deprecated. Please switch to AddSizeInBytes."""
86
100
  return AddSizeInBytes(builder, sizeInBytes)
101
+ def AddNumPartitions(builder, numPartitions): builder.PrependUint64Slot(5, numPartitions, 0)
102
+ def ObjectDetailsAddNumPartitions(builder, numPartitions):
103
+ """This method is deprecated. Please switch to AddNumPartitions."""
104
+ return AddNumPartitions(builder, numPartitions)
105
+ def AddSortingKeyEnabled(builder, sortingKeyEnabled): builder.PrependBoolSlot(6, sortingKeyEnabled, 0)
106
+ def ObjectDetailsAddSortingKeyEnabled(builder, sortingKeyEnabled):
107
+ """This method is deprecated. Please switch to AddSortingKeyEnabled."""
108
+ return AddSortingKeyEnabled(builder, sortingKeyEnabled)
87
109
  def End(builder): return builder.EndObject()
88
110
  def ObjectDetailsEnd(builder):
89
111
  """This method is deprecated. Please switch to End."""
@@ -58,6 +58,10 @@ import vast_flatbuf.org.apache.arrow.computeir.flatbuf.Source as fb_source
58
58
  import vast_flatbuf.org.apache.arrow.computeir.flatbuf.StringLiteral as fb_string_lit
59
59
  import vast_flatbuf.org.apache.arrow.computeir.flatbuf.TimeLiteral as fb_time_lit
60
60
  import vast_flatbuf.org.apache.arrow.computeir.flatbuf.TimestampLiteral as fb_timestamp_lit
61
+ import vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt8Literal as fb_uint8_lit
62
+ import vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt16Literal as fb_uint16_lit
63
+ import vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt32Literal as fb_uint32_lit
64
+ import vast_flatbuf.org.apache.arrow.computeir.flatbuf.UInt64Literal as fb_uint64_lit
61
65
  import vast_flatbuf.org.apache.arrow.flatbuf.Binary as fb_binary
62
66
  import vast_flatbuf.org.apache.arrow.flatbuf.Bool as fb_bool
63
67
  import vast_flatbuf.org.apache.arrow.flatbuf.Date as fb_date
@@ -341,50 +345,57 @@ class Predicate:
341
345
  fb_expression.AddImpl(self.builder, offset_call)
342
346
  return fb_expression.End(self.builder)
343
347
 
348
+ # see https://github.com/apache/arrow/blob/main/format/Schema.fbs
349
+ # https://github.com/apache/arrow/blob/apache-arrow-7.0.0/experimental/computeir/Expression.fbs
350
+ # https://github.com/apache/arrow/blob/apache-arrow-7.0.0/experimental/computeir/Literal.fbs
344
351
  def build_literal(self, field: pa.Field, value):
345
352
  literal_type: Any
346
353
 
347
- if field.type.equals(pa.int64()):
348
- literal_type = fb_int64_lit
349
- literal_impl = LiteralImpl.Int64Literal
354
+ if field.type.equals(pa.int64()) or field.type.equals(pa.uint64()):
355
+ is_signed = field.type.equals(pa.int64())
356
+ literal_type = fb_int64_lit if is_signed else fb_uint64_lit
357
+ literal_impl = LiteralImpl.Int64Literal if is_signed else LiteralImpl.UInt64Literal
350
358
 
351
359
  field_type_type = Type.Int
352
360
  fb_int.Start(self.builder)
353
361
  fb_int.AddBitWidth(self.builder, field.type.bit_width)
354
- fb_int.AddIsSigned(self.builder, True)
362
+ fb_int.AddIsSigned(self.builder, is_signed)
355
363
  field_type = fb_int.End(self.builder)
356
364
 
357
365
  value = int(value)
358
- elif field.type.equals(pa.int32()):
359
- literal_type = fb_int32_lit
360
- literal_impl = LiteralImpl.Int32Literal
366
+ elif field.type.equals(pa.int32()) or field.type.equals(pa.uint32()):
367
+ is_signed = field.type.equals(pa.int32())
368
+ literal_type = fb_int32_lit if is_signed else fb_uint32_lit
369
+ literal_impl = LiteralImpl.Int32Literal if is_signed else LiteralImpl.UInt32Literal
361
370
 
362
371
  field_type_type = Type.Int
363
372
  fb_int.Start(self.builder)
364
373
  fb_int.AddBitWidth(self.builder, field.type.bit_width)
365
- fb_int.AddIsSigned(self.builder, True)
374
+ fb_int.AddIsSigned(self.builder, is_signed)
366
375
  field_type = fb_int.End(self.builder)
367
376
 
368
377
  value = int(value)
369
- elif field.type.equals(pa.int16()):
370
- literal_type = fb_int16_lit
371
- literal_impl = LiteralImpl.Int16Literal
378
+ elif field.type.equals(pa.int16()) or field.type.equals(pa.uint16()):
379
+ is_signed = field.type.equals(pa.int16())
380
+ literal_type = fb_int16_lit if is_signed else fb_uint16_lit
381
+ literal_impl = LiteralImpl.Int16Literal if is_signed else LiteralImpl.UInt16Literal
372
382
 
373
383
  field_type_type = Type.Int
374
384
  fb_int.Start(self.builder)
375
385
  fb_int.AddBitWidth(self.builder, field.type.bit_width)
376
- fb_int.AddIsSigned(self.builder, True)
386
+ fb_int.AddIsSigned(self.builder, is_signed)
377
387
  field_type = fb_int.End(self.builder)
378
388
 
379
389
  value = int(value)
380
- elif field.type.equals(pa.int8()):
381
- literal_type = fb_int8_lit
382
- literal_impl = LiteralImpl.Int8Literal
390
+ elif field.type.equals(pa.int8()) or field.type.equals(pa.uint8()):
391
+ is_signed = field.type.equals(pa.int8())
392
+ literal_type = fb_int8_lit if is_signed else fb_uint8_lit
393
+ literal_impl = LiteralImpl.Int8Literal if is_signed else LiteralImpl.UInt8Literal
383
394
 
384
395
  field_type_type = Type.Int
385
396
  fb_int.Start(self.builder)
386
397
  fb_int.AddBitWidth(self.builder, field.type.bit_width)
387
- fb_int.AddIsSigned(self.builder, True)
398
+ fb_int.AddIsSigned(self.builder, is_signed)
388
399
  field_type = fb_int.End(self.builder)
389
400
 
390
401
  value = int(value)
@@ -735,17 +746,57 @@ def _iter_nested_arrays(column: pa.Array) -> Iterator[pa.Array]:
735
746
  yield from _iter_nested_arrays(column.values) # Note: Map is serialized in VAST as a List<Struct<K, V>>
736
747
 
737
748
 
738
- TableInfo = namedtuple('TableInfo', 'name properties handle num_rows size_in_bytes')
749
+ class ValidateInList:
750
+ def __init__(self, *args):
751
+ self.candidates = [x.strip() for x in args]
739
752
 
753
+ def __call__(self, x):
754
+ x = x.strip()
755
+ if x not in self.candidates:
756
+ raise Exception(f'{x} is not in {self.candidates}')
757
+ return x
758
+
759
+ def __getitem__(self, x):
760
+ return self
761
+
762
+
763
+ _int_coding = (lambda x: str(int(x)), lambda x: int(x))
764
+ _prop_coding = {
765
+ "message.timestamp.type": ValidateInList('CreateTime', 'LogAppendTime'),
766
+ "retention.ms": _int_coding,
767
+ "message.timestamp.after.max.ms": _int_coding,
768
+ "message.timestamp.before.max.ms": _int_coding
769
+ }
770
+
771
+
772
+ def _encode_table_props(**kwargs):
773
+ if all([v is None for v in kwargs.values()]):
774
+ return None
775
+ else:
776
+ pairs = [(k.replace("_", ".").strip(), v) for k, v in kwargs.items() if v is not None]
777
+ return "$".join([f"{k}={_prop_coding[k][0](v)}" for k, v in pairs])
778
+
779
+
780
+ def _decode_table_props(s):
781
+ if s.strip() == '':
782
+ return {}
783
+ triplets = [(x.strip(), x.strip().replace(".", "_"), y.strip()) for x, y in [z.split('=') for z in s.strip().split("$")]]
784
+ return {y: _prop_coding[x][1](z) for x, y, z in triplets if z != ''}
740
785
 
741
- def _parse_table_info(obj):
742
786
 
787
+ TableInfo = namedtuple('TableInfo', 'name properties handle num_rows size_in_bytes num_partitions')
788
+
789
+
790
+ def _parse_table_info(obj):
743
791
  name = obj.Name().decode()
744
792
  properties = obj.Properties().decode()
745
793
  handle = obj.Handle().decode()
746
794
  num_rows = obj.NumRows()
747
795
  used_bytes = obj.SizeInBytes()
748
- return TableInfo(name, properties, handle, num_rows, used_bytes)
796
+ num_partitions = obj.NumPartitions()
797
+ if num_partitions != 0:
798
+ properties = _decode_table_props(properties)
799
+ return TableInfo(name, properties, handle, num_rows, used_bytes, num_partitions)
749
800
 
750
801
 
751
802
  # Results that returns from tablestats
@@ -774,7 +825,13 @@ def _backoff_giveup(exc: Exception) -> bool:
774
825
  return True # give up in case of other exceptions
775
826
 
776
827
 
828
+ class UnsupportedServer(NotImplementedError):
829
+ """Raised when the response comes back from non-VAST DB server."""
830
+ pass
831
+
832
+
777
833
  class VastdbApi:
834
+ VAST_SERVER_PREFIX = 'vast'
778
835
  # we expect the vast version to be <major>.<minor>.<patch>.<protocol>
779
836
  VAST_VERSION_REGEX = re.compile(r'^vast (\d+\.\d+\.\d+\.\d+)$')
780
837
 
@@ -829,6 +886,9 @@ class VastdbApi:
829
886
  if server_header is None:
830
887
  _logger.error("Response doesn't contain 'Server' header")
831
888
  else:
889
+ if not server_header.startswith(self.VAST_SERVER_PREFIX):
890
+ raise UnsupportedServer(f'{self.url} is not a VAST DB server endpoint ("{server_header}")')
891
+
832
892
  if m := self.VAST_VERSION_REGEX.match(server_header):
833
893
  self.vast_version: Tuple[int, ...] = tuple(int(v) for v in m.group(1).split("."))
834
894
  return
@@ -1049,8 +1109,9 @@ class VastdbApi:
1049
1109
 
1050
1110
  return snapshots, is_truncated, marker
1051
1111
 
1052
- def create_table(self, bucket, schema, name, arrow_schema, txid=0, client_tags=[], expected_retvals=[],
1053
- topic_partitions=0, create_imports_table=False, use_external_row_ids_allocation=False):
1112
+ def create_table(self, bucket, schema, name, arrow_schema=None, txid=0, client_tags=[], expected_retvals=[],
1113
+ topic_partitions=0, create_imports_table=False, use_external_row_ids_allocation=False,
1114
+ message_timestamp_type=None, retention_ms=None, message_timestamp_after_max_ms=None, message_timestamp_before_max_ms=None):
1054
1115
  """
1055
1116
  Create a table, use the following request
1056
1117
  POST /bucket/schema/table?table HTTP/1.1
@@ -1069,6 +1130,9 @@ class VastdbApi:
1069
1130
  """
1070
1131
  headers = self._fill_common_headers(txid=txid, client_tags=client_tags)
1071
1132
 
1133
+ if arrow_schema is None:
1134
+ arrow_schema = pa.schema([])
1135
+
1072
1136
  serialized_schema = arrow_schema.serialize()
1073
1137
  headers['Content-Length'] = str(len(serialized_schema))
1074
1138
  if use_external_row_ids_allocation:
@@ -1078,6 +1142,11 @@ class VastdbApi:
1078
1142
  if create_imports_table:
1079
1143
  url_params['sub-table'] = IMPORTED_OBJECTS_TABLE_NAME
1080
1144
 
1145
+ if topic_partitions > 0:
1146
+ table_props = _encode_table_props(message_timestamp_type=message_timestamp_type, retention_ms=retention_ms, message_timestamp_after_max_ms=message_timestamp_after_max_ms, message_timestamp_before_max_ms=message_timestamp_before_max_ms)
1147
+ if table_props is not None:
1148
+ url_params['table-props'] = table_props
1149
+
1081
1150
  self._request(
1082
1151
  method="POST",
1083
1152
  url=self._url(bucket=bucket, schema=schema, table=name, command="table", url_params=url_params),
@@ -1106,7 +1175,8 @@ class VastdbApi:
1106
1175
  return TableStatsResult(num_rows, size_in_bytes, is_external_rowid_alloc, tuple(endpoints))
1107
1176
 
1108
1177
  def alter_table(self, bucket, schema, name, txid=0, client_tags=[], table_properties="",
1109
- new_name="", expected_retvals=[]):
1178
+ new_name="", expected_retvals=[],
1179
+ message_timestamp_type=None, retention_ms=None, message_timestamp_after_max_ms=None, message_timestamp_before_max_ms=None):
1110
1180
  """
1111
1181
  PUT /mybucket/myschema/mytable?table HTTP/1.1
1112
1182
  Content-Length: ContentLength
@@ -1118,6 +1188,11 @@ class VastdbApi:
1118
1188
  """
1119
1189
  builder = flatbuffers.Builder(1024)
1120
1190
 
1191
+ if message_timestamp_type is not None or retention_ms is not None or message_timestamp_after_max_ms is not None or message_timestamp_before_max_ms is not None:
1192
+ table_properties = _encode_table_props(message_timestamp_type=message_timestamp_type, retention_ms=retention_ms, message_timestamp_after_max_ms=message_timestamp_after_max_ms, message_timestamp_before_max_ms=message_timestamp_before_max_ms)
1193
+ if table_properties is None:
1194
+ table_properties = ""
1195
+
1121
1196
  properties = builder.CreateString(table_properties)
1122
1197
  tabular_alter_table.Start(builder)
1123
1198
  if len(table_properties):
@@ -146,5 +146,4 @@ class Schema:
146
146
 
147
147
 
148
148
  def _parse_table_info(table_info, schema: "schema.Schema"):
149
- stats = table.TableStats(num_rows=table_info.num_rows, size_in_bytes=table_info.size_in_bytes)
150
- return table.Table(name=table_info.name, schema=schema, handle=int(table_info.handle), stats=stats, _imports_table=False)
149
+ return table.Table(name=table_info.name, schema=schema, handle=int(table_info.handle), _imports_table=False)
@@ -112,7 +112,6 @@ class Table:
112
112
  name: str
113
113
  schema: "schema.Schema"
114
114
  handle: int
115
- stats: TableStats
116
115
  arrow_schema: pa.Schema = field(init=False, compare=False, repr=False)
117
116
  _ibis_table: ibis.Schema = field(init=False, compare=False, repr=False)
118
117
  _imports_table: bool
@@ -139,6 +138,11 @@ class Table:
139
138
  """Return bucket."""
140
139
  return self.schema.bucket
141
140
 
141
+ @property
142
+ def stats(self):
143
+ """Fetch table's statistics from server."""
144
+ return self.get_stats()
145
+
142
146
  def columns(self) -> pa.Schema:
143
147
  """Return columns' metadata."""
144
148
  fields = []
@@ -576,7 +580,7 @@ class Table:
576
580
  def imports_table(self) -> Optional["Table"]:
577
581
  """Get the imports table of this table."""
578
582
  self.tx._rpc.features.check_imports_table()
579
- return Table(name=self.name, schema=self.schema, handle=int(self.handle), stats=self.stats, _imports_table=True)
583
+ return Table(name=self.name, schema=self.schema, handle=int(self.handle), _imports_table=True)
580
584
 
581
585
  def __getitem__(self, col_name):
582
586
  """Allow constructing ibis-like column expressions from this table.
@@ -29,7 +29,7 @@ class Table:
29
29
  self.conn = conn
30
30
  self.name = name
31
31
  columns = ", ".join(
32
- f"{f.name} {_MAP_SQLITE_TYPES[f.type]}"
32
+ f"{f.name} {_MAP_SQLITE_TYPES[f.type]}" # type: ignore
33
33
  for f in self.fields
34
34
  )
35
35
  cmd = f"CREATE TABLE {self.name} ({columns})"
@@ -7,6 +7,7 @@ from itertools import cycle
7
7
  import pytest
8
8
 
9
9
  import vastdb.errors
10
+ from vastdb._internal import UnsupportedServer
10
11
 
11
12
  log = logging.getLogger(__name__)
12
13
 
@@ -32,13 +33,14 @@ def test_bad_endpoint(session):
32
33
  def test_version_extraction():
33
34
  # A list of version and expected version parsed by API
34
35
  TEST_CASES = [
35
- (None, None), # vast server without version in header
36
- ("5", None), # major
37
- ("5.2", None), # major.minor
38
- ("5.2.0", None), # major.minor.patch
39
- ("5.2.0.10", (5, 2, 0, 10)), # major.minor.patch.protocol
40
- ("5.2.0.10 some other things", None), # suffix
41
- ("5.2.0.10.20", None), # extra version
36
+ ("nginx", UnsupportedServer), # non-vast server
37
+ ("vast", NotImplementedError), # vast server without version in header
38
+ ("vast 5", NotImplementedError), # major
39
+ ("vast 5.2", NotImplementedError), # major.minor
40
+ ("vast 5.2.0", NotImplementedError), # major.minor.patch
41
+ ("vast 5.2.0.10", (5, 2, 0, 10)), # major.minor.patch.protocol
42
+ ("vast 5.2.0.10 some other things", NotImplementedError), # suffix
43
+ ("vast 5.2.0.10.20", NotImplementedError), # extra version
42
44
  ]
43
45
 
44
46
  # Mock OPTIONS handle that cycles through the test cases response
@@ -53,8 +55,7 @@ def test_version_extraction():
53
55
  self.end_headers()
54
56
 
55
57
  def version_string(self):
56
- version = next(self.versions_iterator)[0]
57
- return f"vast {version}" if version else "vast"
58
+ return next(self.versions_iterator)[0]
58
59
 
59
60
  def log_message(self, format, *args):
60
61
  log.debug(format, *args)
@@ -74,7 +75,10 @@ def test_version_extraction():
74
75
 
75
76
  try:
76
77
  for _, expected in TEST_CASES:
77
- with (pytest.raises(NotImplementedError) if expected is None else contextlib.nullcontext()):
78
+ manager = contextlib.nullcontext()
79
+ if isinstance(expected, type) and issubclass(expected, NotImplementedError):
80
+ manager = pytest.raises(expected)
81
+ with manager:
78
82
  s = vastdb.connect(endpoint=f"http://localhost:{httpd.server_port}", access="abc", secret="abc")
79
83
  assert s.api.vast_version == expected
80
84
  finally: