vastdb 1.3.9__tar.gz → 1.3.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.
- {vastdb-1.3.9 → vastdb-1.3.10}/CHANGELOG.md +12 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/PKG-INFO +1 -1
- {vastdb-1.3.9 → vastdb-1.3.10}/README.md +9 -5
- {vastdb-1.3.9 → vastdb-1.3.10}/setup.py +1 -1
- vastdb-1.3.10/vastdb/bench/test_perf.py +87 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/features.py +5 -1
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/table.py +19 -6
- vastdb-1.3.10/vastdb/tests/test_imports.py +517 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/test_tables.py +25 -2
- vastdb-1.3.10/vastdb/tests/util.py +38 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb.egg-info/PKG-INFO +1 -1
- vastdb-1.3.9/vastdb/bench/test_perf.py +0 -28
- vastdb-1.3.9/vastdb/tests/test_imports.py +0 -204
- vastdb-1.3.9/vastdb/tests/util.py +0 -17
- {vastdb-1.3.9 → vastdb-1.3.10}/CONTRIBUTING.md +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/LICENSE +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/MANIFEST.in +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/requirements.txt +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/setup.cfg +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/_internal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/bench_repo/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/bench_repo/mega_combo.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/cli.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/common/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/common/constants.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/common/log_utils.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/common/types.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/common/utils.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/dataset/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/dataset/generate_secmaster.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/dataset/generate_stocks_dataset.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/dataset/schemas.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/dataset/secmaster.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/orchestrate/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/orchestrate/bench_spec.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/orchestrate/results_helpers.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/orchestrate/scenario.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/orchestrate/scenario_generator.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/query/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/query/arrow_common.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/query/query.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/query/query_pyarrow.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/query/query_vastdb.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/perf_bench/run.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bench/test_sample.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/bucket.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/config.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/conftest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/errors.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/schema.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/session.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/metrics.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/test_duckdb.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/test_nested.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/test_projections.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/test_sanity.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/test_schemas.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/tests/test_util.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/transaction.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/util.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Aggregate.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySlice.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ArraySubscript.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BinaryLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/BooleanLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Bound.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Call.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CaseFragment.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Cast.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConcreteBoundImpl.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ConditionalCase.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/CurrentRow.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DateLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DecimalLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Deref.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/DurationLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Expression.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ExpressionImpl.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldIndex.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FieldRef.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Filter.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/FixedSizeBinaryLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float16Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float32Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Float64Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Following.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Frame.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Grouping.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int16Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int32Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int64Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Int8Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralDaysMilliseconds.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralImpl.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/IntervalLiteralMonths.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Join.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/JoinKind.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/KeyValue.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Limit.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/ListLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralColumn.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralImpl.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/LiteralRelation.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapKey.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/MapLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/OrderBy.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Ordering.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Plan.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Preceding.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Project.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelId.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Relation.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/RelationImpl.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOpKind.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SetOperation.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SimpleCase.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/SortKey.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Source.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StringLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructField.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/StructLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimeLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/TimestampLiteral.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt16Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt32Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt64Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/UInt8Literal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/Unbounded.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/WindowCall.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/computeir/flatbuf/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Binary.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Block.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompression.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/BodyCompressionMethod.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Bool.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Buffer.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/CompressionType.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Date.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/DateUnit.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Decimal.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryBatch.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryEncoding.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/DictionaryKind.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Duration.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Endianness.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Feature.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Field.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/FieldNode.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeBinary.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/FixedSizeList.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/FloatingPoint.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Footer.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Int.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Interval.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/IntervalUnit.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/KeyValue.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/LargeBinary.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/LargeList.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/LargeUtf8.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/List.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Map.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Message.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/MessageHeader.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/MetadataVersion.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Null.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Precision.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/RecordBatch.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Schema.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixCompressedAxis.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseMatrixIndexCSX.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensor.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndex.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCOO.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/SparseTensorIndexCSF.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Struct_.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Tensor.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/TensorDim.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Time.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/TimeUnit.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Timestamp.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Type.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Union.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/UnionMode.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/Utf8.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/org/apache/arrow/flatbuf/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/AlterColumnRequest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/AlterProjectionTableRequest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/AlterSchemaRequest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/AlterTableRequest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/Column.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/ColumnDetails.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/ColumnType.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/CreateProjectionRequest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/CreateSchemaRequest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/CreateViewRequest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/FilterString.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/GetProjectionTableStatsResponse.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/GetRowColumnSecurityResponse.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/GetTableStatsResponse.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/ImportDataRequest.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/KeyName.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/ListProjectionsResponse.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/ListSchemasResponse.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/ListTablesResponse.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/ListViewsResponse.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/NameString.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/ObjectDetails.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/S3File.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/VipRange.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_flatbuf/tabular/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_tests/__init__.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_tests/test_ha.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb/vast_tests/test_scale.py +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb.egg-info/SOURCES.txt +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb.egg-info/dependency_links.txt +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb.egg-info/requires.txt +0 -0
- {vastdb-1.3.9 → vastdb-1.3.10}/vastdb.egg-info/top_level.txt +0 -0
|
@@ -4,6 +4,18 @@ 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.10] (2025-05-11)
|
|
8
|
+
[1.3.10]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.9...v1.3.10
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- Support limit on query data
|
|
12
|
+
- Support for timestamp with timezone
|
|
13
|
+
|
|
14
|
+
## Fixed
|
|
15
|
+
- Don't modify the user-passed config
|
|
16
|
+
- Name the feature logger
|
|
17
|
+
|
|
18
|
+
|
|
7
19
|
## [1.3.9] (2025-04-22)
|
|
8
20
|
[1.3.9]: https://github.com/vast-data/vastdb_sdk/compare/v1.3.8...v1.3.9
|
|
9
21
|
|
|
@@ -2,14 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
# VAST DB Python SDK
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
A Python SDK for seamless interaction with [VAST Database](https://vastdata.com/database) and [VAST Catalog](https://vastdata.com/blog/vast-catalog-treat-your-file-system-like-a-database). Enables powerful data operations including:
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
- Schema and table management
|
|
8
|
+
- Efficient data ingest and querying
|
|
9
|
+
- Advanced filtering with predicate pushdown
|
|
10
|
+
- Direct integration with PyArrow and DuckDB
|
|
11
|
+
- File system querying through VAST Catalog
|
|
10
12
|
|
|
11
13
|
[](https://vastdata.com/database)
|
|
12
14
|
|
|
15
|
+
For technical details about VAST Database architecture, see the [whitepaper](https://vastdata.com/whitepaper/#TheVASTDataBase).
|
|
16
|
+
|
|
13
17
|
## Getting Started
|
|
14
18
|
|
|
15
19
|
### Requirements
|
|
@@ -217,4 +221,4 @@ See these blog posts for more examples:
|
|
|
217
221
|
- https://vastdata.com/blog/the-vast-catalog-in-action-part-1
|
|
218
222
|
- https://vastdata.com/blog/the-vast-catalog-in-action-part-2
|
|
219
223
|
|
|
220
|
-
See also the [full Vast DB Python SDK documentation](https://vastdb-sdk.readthedocs.io/en/
|
|
224
|
+
See also the [full Vast DB Python SDK documentation](https://vastdb-sdk.readthedocs.io/en/latest/)
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import datetime as dt
|
|
2
|
+
import logging
|
|
3
|
+
import time
|
|
4
|
+
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
from vastdb import util
|
|
8
|
+
from vastdb.table import ImportConfig, QueryConfig
|
|
9
|
+
from vastdb.tests.util import compare_pyarrow_tables
|
|
10
|
+
|
|
11
|
+
log = logging.getLogger(__name__)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@pytest.mark.benchmark
|
|
15
|
+
def test_bench(session, test_bucket_name, parquets_path, crater_path):
|
|
16
|
+
files = [str(parquets_path / f) for f in (parquets_path.glob('**/*.pq'))]
|
|
17
|
+
stats = None
|
|
18
|
+
|
|
19
|
+
with session.transaction() as tx:
|
|
20
|
+
b = tx.bucket(test_bucket_name)
|
|
21
|
+
s = b.create_schema('s1')
|
|
22
|
+
util.create_table_from_files(s, 't1', files, config=ImportConfig(import_concurrency=8))
|
|
23
|
+
t2 = util.create_table_from_files(s, 't2', files, config=ImportConfig(import_concurrency=8))
|
|
24
|
+
# Enabling Elysium with 4 sorting keys - ts, sid, ask_open, ask_close
|
|
25
|
+
t2.add_sorting_key([2, 0, 3, 4])
|
|
26
|
+
stats = t2.get_stats()
|
|
27
|
+
log.info("Added sorting keys")
|
|
28
|
+
|
|
29
|
+
assert stats
|
|
30
|
+
# Waiting up to 2 hours for sorting to complete.
|
|
31
|
+
start_time = time.time()
|
|
32
|
+
while not stats.sorting_done:
|
|
33
|
+
if time.time() - start_time > 7200:
|
|
34
|
+
raise TimeoutError("Sorting did not complete after waiting for 2 hours.")
|
|
35
|
+
time.sleep(30)
|
|
36
|
+
with session.transaction() as tx:
|
|
37
|
+
table = tx.bucket(test_bucket_name).schema('s1').table('t2')
|
|
38
|
+
stats = table.get_stats()
|
|
39
|
+
log.info("Sorting completed")
|
|
40
|
+
|
|
41
|
+
queries = [
|
|
42
|
+
{'query_str': "select sid from {t} where sid = 10033007".format, 'columns': ['sid'],
|
|
43
|
+
'predicate': lambda t: t['sid'] == 10033007},
|
|
44
|
+
{'query_str': "select last_trade_price from {t} where ts between "
|
|
45
|
+
"TIMESTAMP'2018-01-04 20:30:00' AND TIMESTAMP'2018-01-05 20:30:00'".format,
|
|
46
|
+
'columns': ['last_trade_price'], 'predicate': lambda t: (t['ts'].between(
|
|
47
|
+
dt.datetime(2018, 1, 4, 20, 30, 00, 00), dt.datetime(2018, 1, 5, 20, 30, 00, 00)))},
|
|
48
|
+
{'query_str': "select ts,ask_close,ask_open from {t} where bid_qty = 684000 and ask_close > 1".format,
|
|
49
|
+
'columns': ['ts', 'ask_close', 'ask_open'],
|
|
50
|
+
'predicate': lambda t: ((t['bid_qty'] == 684000) & (t['ask_close'] > 1))},
|
|
51
|
+
{'query_str': "select ts,ticker from {t} where "
|
|
52
|
+
"ask_open between 4374 and 4375 OR ask_open between 380 and 381".format,
|
|
53
|
+
'columns': ['ts', 'ticker'],
|
|
54
|
+
'predicate': lambda t: ((t['ask_open'].between(4374, 4375)) | (t['ask_open'].between(380, 381)))},
|
|
55
|
+
{
|
|
56
|
+
'query_str': "select trade_close, trade_high, trade_low, trade_open from {t} where ticker in ('BANR', 'KELYB')".format,
|
|
57
|
+
'columns': ['trade_close', 'trade_high', 'trade_low', 'trade_open'],
|
|
58
|
+
'predicate': lambda t: (t['ticker'].isin(['BANR', 'KELYB']))}
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
log.info("Starting to run queries")
|
|
62
|
+
with session.transaction() as tx:
|
|
63
|
+
schema = tx.bucket(test_bucket_name).schema('s1')
|
|
64
|
+
t1 = schema.table("t1")
|
|
65
|
+
t2 = schema.table("t2")
|
|
66
|
+
|
|
67
|
+
config = QueryConfig(num_splits=8, num_sub_splits=4)
|
|
68
|
+
|
|
69
|
+
for q in queries:
|
|
70
|
+
normal_table_res, els_table_res = None, None
|
|
71
|
+
for table in [t1, t2]:
|
|
72
|
+
log.info("Starting query: %s", q['query_str'](t=table.name))
|
|
73
|
+
s = time.time()
|
|
74
|
+
res = table.select(columns=q['columns'], predicate=q['predicate'](table), config=config).read_all()
|
|
75
|
+
e = time.time()
|
|
76
|
+
if table == t1:
|
|
77
|
+
normal_table_res = res
|
|
78
|
+
else:
|
|
79
|
+
els_table_res = res
|
|
80
|
+
log.info("Query %s returned in %s seconds.", q['query_str'](t=table.name), e - s)
|
|
81
|
+
if crater_path:
|
|
82
|
+
with open(f'{crater_path}/bench_results', 'a') as f:
|
|
83
|
+
f.write(f"Query '{q['query_str'](t=table)}' returned in {e - s} seconds")
|
|
84
|
+
|
|
85
|
+
assert normal_table_res, f"missing result for {t1} table"
|
|
86
|
+
assert els_table_res, f"missing result for {t2} table"
|
|
87
|
+
assert compare_pyarrow_tables(normal_table_res, els_table_res)
|
|
@@ -4,7 +4,7 @@ import logging
|
|
|
4
4
|
|
|
5
5
|
from .errors import NotSupportedVersion
|
|
6
6
|
|
|
7
|
-
log = logging.getLogger()
|
|
7
|
+
log = logging.getLogger(__name__)
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
class Features:
|
|
@@ -39,6 +39,10 @@ class Features:
|
|
|
39
39
|
"Zip import requires 5.3.1+ VAST release",
|
|
40
40
|
vast_version >= (5, 3, 1))
|
|
41
41
|
|
|
42
|
+
self.check_timezone = self._check(
|
|
43
|
+
"Timezone support requires 5.4+ Vast release",
|
|
44
|
+
vast_version >= (5, 4))
|
|
45
|
+
|
|
42
46
|
def _check(self, msg, supported):
|
|
43
47
|
log.debug("%s (current version is %s): supported=%s", msg, self.vast_version, supported)
|
|
44
48
|
if not supported:
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"""VAST Database table."""
|
|
2
2
|
|
|
3
3
|
import concurrent.futures
|
|
4
|
+
import copy
|
|
4
5
|
import logging
|
|
5
6
|
import os
|
|
6
7
|
import queue
|
|
8
|
+
import sys
|
|
7
9
|
from dataclasses import dataclass, field
|
|
8
10
|
from math import ceil
|
|
9
11
|
from threading import Event
|
|
@@ -333,7 +335,8 @@ class Table:
|
|
|
333
335
|
predicate: Union[ibis.expr.types.BooleanColumn, ibis.common.deferred.Deferred] = None,
|
|
334
336
|
config: Optional[QueryConfig] = None,
|
|
335
337
|
*,
|
|
336
|
-
internal_row_id: bool = False
|
|
338
|
+
internal_row_id: bool = False,
|
|
339
|
+
limit_rows: Optional[int] = None) -> pa.RecordBatchReader:
|
|
337
340
|
"""Execute a query over this table.
|
|
338
341
|
|
|
339
342
|
To read a subset of the columns, specify their names via `columns` argument. Otherwise, all columns will be read.
|
|
@@ -342,8 +345,10 @@ class Table:
|
|
|
342
345
|
|
|
343
346
|
Query-execution configuration options can be specified via the optional `config` argument.
|
|
344
347
|
"""
|
|
345
|
-
if config
|
|
346
|
-
|
|
348
|
+
config = copy.deepcopy(config) if config else QueryConfig()
|
|
349
|
+
|
|
350
|
+
if limit_rows:
|
|
351
|
+
config.limit_rows_per_sub_split = limit_rows
|
|
347
352
|
|
|
348
353
|
stats = None
|
|
349
354
|
# Retrieve snapshots only if needed
|
|
@@ -402,7 +407,7 @@ class Table:
|
|
|
402
407
|
for split in range(config.num_splits):
|
|
403
408
|
splits_queue.put(split)
|
|
404
409
|
|
|
405
|
-
# this queue shouldn't be large it is
|
|
410
|
+
# this queue shouldn't be large it is merely a pipe through which the results
|
|
406
411
|
# are sent to the main thread. Most of the pages actually held in the
|
|
407
412
|
# threads that fetch the pages.
|
|
408
413
|
record_batches_queue: queue.Queue[pa.RecordBatch] = queue.Queue(maxsize=2)
|
|
@@ -458,6 +463,7 @@ class Table:
|
|
|
458
463
|
if config.query_id:
|
|
459
464
|
threads_prefix = threads_prefix + "-" + config.query_id
|
|
460
465
|
|
|
466
|
+
total_num_rows = limit_rows if limit_rows else sys.maxsize
|
|
461
467
|
with concurrent.futures.ThreadPoolExecutor(max_workers=len(endpoints), thread_name_prefix=threads_prefix) as tp: # TODO: concurrency == enpoints is just a heuristic
|
|
462
468
|
futures = [tp.submit(single_endpoint_worker, endpoint) for endpoint in endpoints]
|
|
463
469
|
tasks_running = len(futures)
|
|
@@ -467,7 +473,14 @@ class Table:
|
|
|
467
473
|
|
|
468
474
|
batch = record_batches_queue.get()
|
|
469
475
|
if batch is not None:
|
|
470
|
-
|
|
476
|
+
if batch.num_rows < total_num_rows:
|
|
477
|
+
yield batch
|
|
478
|
+
total_num_rows -= batch.num_rows
|
|
479
|
+
else:
|
|
480
|
+
yield batch.slice(length=total_num_rows)
|
|
481
|
+
log.info("reached limit rows per query: %d - stop query", limit_rows)
|
|
482
|
+
stop_event.set()
|
|
483
|
+
break
|
|
471
484
|
else:
|
|
472
485
|
tasks_running -= 1
|
|
473
486
|
log.debug("one worker thread finished, remaining: %d", tasks_running)
|
|
@@ -596,7 +609,7 @@ class Table:
|
|
|
596
609
|
self.name = new_name
|
|
597
610
|
|
|
598
611
|
def add_sorting_key(self, sorting_key: list) -> None:
|
|
599
|
-
"""
|
|
612
|
+
"""Add a sorting key to a table that doesn't have any."""
|
|
600
613
|
self.tx._rpc.features.check_elysium()
|
|
601
614
|
self.tx._rpc.api.alter_table(
|
|
602
615
|
self.bucket.name, self.schema.name, self.name, txid=self.tx.txid, sorting_key=sorting_key)
|