diff --git a/Cargo.lock b/Cargo.lock index ec89bf1161f..c57bee396c5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -9816,6 +9816,14 @@ dependencies = [ "vortex", ] +[[package]] +name = "vortex-json" +version = "0.1.0" +dependencies = [ + "vortex-array", + "vortex-error", +] + [[package]] name = "vortex-layout" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 9700d8d78ed..5d38307f5e6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,7 @@ members = [ "vortex-proto", "vortex-array", "vortex-tensor", + "vortex-json", "vortex-turboquant", "vortex-compressor", "vortex-btrblocks", @@ -288,6 +289,7 @@ vortex-flatbuffers = { version = "0.1.0", path = "./vortex-flatbuffers", default vortex-fsst = { version = "0.1.0", path = "./encodings/fsst", default-features = false } vortex-io = { version = "0.1.0", path = "./vortex-io", default-features = false } vortex-ipc = { version = "0.1.0", path = "./vortex-ipc", default-features = false } +vortex-json = { version = "0.1.0", path = "./vortex-json", default-features = false } vortex-layout = { version = "0.1.0", path = "./vortex-layout", default-features = false } vortex-mask = { version = "0.1.0", path = "./vortex-mask", default-features = false } vortex-metrics = { version = "0.1.0", path = "./vortex-metrics", default-features = false } diff --git a/benchmarks/vector-search-bench/src/expression.rs b/benchmarks/vector-search-bench/src/expression.rs index b1a5b1ef1c3..1f548072be1 100644 --- a/benchmarks/vector-search-bench/src/expression.rs +++ b/benchmarks/vector-search-bench/src/expression.rs @@ -19,11 +19,11 @@ //! size. use anyhow::Result; +use vortex::array::EmptyMetadata; use vortex::array::expr::Expression; use vortex::array::expr::col; use vortex::array::expr::gt; use vortex::array::expr::lit; -use vortex::array::extension::EmptyMetadata; use vortex::array::scalar::Scalar; use vortex::array::scalar_fn::EmptyOptions; use vortex::array::scalar_fn::ScalarFnVTableExt; diff --git a/benchmarks/vector-search-bench/src/ingest.rs b/benchmarks/vector-search-bench/src/ingest.rs index bab176b0482..0e3071483a1 100644 --- a/benchmarks/vector-search-bench/src/ingest.rs +++ b/benchmarks/vector-search-bench/src/ingest.rs @@ -21,6 +21,7 @@ use anyhow::Result; use anyhow::bail; use anyhow::ensure; use vortex::array::ArrayRef; +use vortex::array::EmptyMetadata; use vortex::array::ExecutionCtx; use vortex::array::IntoArray; use vortex::array::arrays::ExtensionArray; @@ -31,7 +32,6 @@ use vortex::array::arrays::StructArray; use vortex::array::arrays::extension::ExtensionArrayExt; use vortex::array::arrays::fixed_size_list::FixedSizeListArrayExt; use vortex::array::arrays::struct_::StructArrayExt; -use vortex::array::extension::EmptyMetadata; use vortex::array::validity::Validity; use vortex::buffer::Buffer; use vortex::dtype::DType; diff --git a/vortex-array/src/arrays/extension/compute/rules.rs b/vortex-array/src/arrays/extension/compute/rules.rs index d7c8469d1dc..59a8c314517 100644 --- a/vortex-array/src/arrays/extension/compute/rules.rs +++ b/vortex-array/src/arrays/extension/compute/rules.rs @@ -85,6 +85,7 @@ mod tests { use vortex_mask::Mask; use vortex_session::VortexSession; + use crate::EmptyMetadata; use crate::IntoArray; #[expect(deprecated)] use crate::ToCanonical as _; @@ -105,7 +106,6 @@ mod tests { use crate::dtype::extension::ExtDTypeRef; use crate::dtype::extension::ExtId; use crate::dtype::extension::ExtVTable; - use crate::extension::EmptyMetadata; use crate::optimizer::ArrayOptimizer; use crate::scalar::Scalar; use crate::scalar::ScalarValue; diff --git a/vortex-array/src/extension/mod.rs b/vortex-array/src/extension/mod.rs index 9f81e7fb310..a8cfda2d069 100644 --- a/vortex-array/src/extension/mod.rs +++ b/vortex-array/src/extension/mod.rs @@ -3,19 +3,8 @@ //! Extension types. -use std::fmt; - pub mod datetime; pub mod uuid; #[cfg(test)] mod tests; - -/// An empty metadata struct for extension dtypes that do not require any metadata. -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct EmptyMetadata; -impl fmt::Display for EmptyMetadata { - fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { - write!(f, "") - } -} diff --git a/vortex-array/src/metadata.rs b/vortex-array/src/metadata.rs index 427f1040519..49baf97a19c 100644 --- a/vortex-array/src/metadata.rs +++ b/vortex-array/src/metadata.rs @@ -26,7 +26,7 @@ where } /// Empty array metadata -#[derive(Debug)] +#[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct EmptyMetadata; impl SerializeMetadata for EmptyMetadata { @@ -46,6 +46,12 @@ impl DeserializeMetadata for EmptyMetadata { } } +impl std::fmt::Display for EmptyMetadata { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "") + } +} + /// A utility wrapper for raw metadata serialization. This delegates the serialiation step /// to the arrays' vtable. pub struct RawMetadata(pub Vec); diff --git a/vortex-array/src/scalar/typed_view/extension/tests.rs b/vortex-array/src/scalar/typed_view/extension/tests.rs index 909f8a4b11a..8bf52aa5369 100644 --- a/vortex-array/src/scalar/typed_view/extension/tests.rs +++ b/vortex-array/src/scalar/typed_view/extension/tests.rs @@ -4,13 +4,13 @@ use vortex_error::VortexResult; use vortex_error::vortex_bail; +use crate::EmptyMetadata; use crate::dtype::DType; use crate::dtype::Nullability; use crate::dtype::PType; use crate::dtype::extension::ExtDType; use crate::dtype::extension::ExtId; use crate::dtype::extension::ExtVTable; -use crate::extension::EmptyMetadata; use crate::scalar::Scalar; use crate::scalar::ScalarValue; diff --git a/vortex-bench/src/vector_dataset/convert.rs b/vortex-bench/src/vector_dataset/convert.rs index f0c13ff33aa..cfef49dfbef 100644 --- a/vortex-bench/src/vector_dataset/convert.rs +++ b/vortex-bench/src/vector_dataset/convert.rs @@ -4,6 +4,7 @@ // TODO(connor): Should we re-export this through `conversions.rs`? use vortex::array::ArrayRef; +use vortex::array::EmptyMetadata; use vortex::array::IntoArray; use vortex::array::arrays::Chunked; use vortex::array::arrays::ChunkedArray; @@ -23,7 +24,6 @@ use vortex::error::VortexExpect; use vortex::error::VortexResult; use vortex::error::vortex_bail; use vortex::error::vortex_err; -use vortex::extension::EmptyMetadata; use vortex_tensor::vector::Vector; /// Rewrap a list-of-float column as a [`vortex_tensor::vector::Vector`] extension array. diff --git a/vortex-duckdb/src/convert/dtype.rs b/vortex-duckdb/src/convert/dtype.rs index 4d9d0be4fee..2733d31ba23 100644 --- a/vortex-duckdb/src/convert/dtype.rs +++ b/vortex-duckdb/src/convert/dtype.rs @@ -324,6 +324,7 @@ mod tests { use std::sync::Arc; use rstest::rstest; + use vortex::array::EmptyMetadata; use vortex::dtype::DType; use vortex::dtype::FieldName; use vortex::dtype::FieldNames; @@ -334,7 +335,6 @@ mod tests { use vortex::dtype::extension::ExtId; use vortex::dtype::extension::ExtVTable; use vortex::error::VortexResult; - use vortex::extension::EmptyMetadata; use vortex::extension::datetime::Date; use vortex::extension::datetime::Time; use vortex::extension::datetime::Timestamp; diff --git a/vortex-json/Cargo.toml b/vortex-json/Cargo.toml new file mode 100644 index 00000000000..3b693b96f29 --- /dev/null +++ b/vortex-json/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "vortex-json" +authors = { workspace = true } +categories = { workspace = true } +description = "Vortex JSON extension type" +edition = { workspace = true } +homepage = { workspace = true } +include = { workspace = true } +keywords = { workspace = true } +license = { workspace = true } +readme = { workspace = true } +repository = { workspace = true } +rust-version = { workspace = true } +version = { workspace = true } + +[lints] +workspace = true + +[dependencies] +vortex-array = { workspace = true, default-features = false } +vortex-error = { workspace = true, default-features = false } diff --git a/vortex-json/src/dtype.rs b/vortex-json/src/dtype.rs new file mode 100644 index 00000000000..2c2a6663db0 --- /dev/null +++ b/vortex-json/src/dtype.rs @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +//! Extension dtype definition for the JSON type + +use vortex_array::EmptyMetadata; +use vortex_array::dtype::extension::ExtDType; +use vortex_array::dtype::extension::ExtId; +use vortex_array::dtype::extension::ExtVTable; +use vortex_array::scalar::ScalarValue; +use vortex_error::VortexResult; +use vortex_error::vortex_bail; +use vortex_error::vortex_ensure; + +/// JSON logical type backed by UTF-8 string storage. +#[derive(Clone, Debug, Default, PartialEq, Eq, Hash)] +pub struct Json; + +impl ExtVTable for Json { + type Metadata = EmptyMetadata; + type NativeValue<'a> = &'a str; + + fn id(&self) -> ExtId { + ExtId::new("vortex.json") + } + + fn serialize_metadata(&self, _metadata: &Self::Metadata) -> VortexResult> { + Ok(vec![]) + } + + fn deserialize_metadata(&self, metadata: &[u8]) -> VortexResult { + vortex_ensure!(metadata.is_empty(), "JSON metadata must be empty"); + Ok(EmptyMetadata) + } + + fn validate_dtype(ext_dtype: &ExtDType) -> VortexResult<()> { + vortex_ensure!( + ext_dtype.storage_dtype().is_utf8(), + "JSON storage dtype must be utf8, got {}", + ext_dtype.storage_dtype() + ); + Ok(()) + } + + fn unpack_native<'a>( + _ext_dtype: &'a ExtDType, + storage_value: &'a ScalarValue, + ) -> VortexResult> { + let ScalarValue::Utf8(value) = storage_value else { + vortex_bail!("JSON storage scalar must be utf8, got {storage_value}"); + }; + Ok(value.as_str()) + } +} diff --git a/vortex-json/src/lib.rs b/vortex-json/src/lib.rs new file mode 100644 index 00000000000..609ac44b861 --- /dev/null +++ b/vortex-json/src/lib.rs @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: Apache-2.0 +// SPDX-FileCopyrightText: Copyright the Vortex contributors + +#![warn(missing_docs)] +#![warn(clippy::missing_docs_in_private_items)] +#![warn(clippy::missing_errors_doc)] +#![warn(clippy::missing_panics_doc)] +#![warn(clippy::missing_safety_doc)] + +//! Extension type and related functionality for a JSON extension type for Vortex. + +mod dtype; + +pub use dtype::Json; diff --git a/vortex-tensor/src/encodings/turboquant/mod.rs b/vortex-tensor/src/encodings/turboquant/mod.rs index 50cef7b721e..ca774ca65f6 100644 --- a/vortex-tensor/src/encodings/turboquant/mod.rs +++ b/vortex-tensor/src/encodings/turboquant/mod.rs @@ -95,7 +95,7 @@ //! use vortex_array::arrays::ExtensionArray; //! use vortex_array::arrays::FixedSizeListArray; //! use vortex_array::arrays::PrimitiveArray; -//! use vortex_array::extension::EmptyMetadata; +//! use vortex_array::EmptyMetadata; //! use vortex_array::session::ArraySession; //! use vortex_array::validity::Validity; //! use vortex_buffer::BufferMut; diff --git a/vortex-tensor/src/encodings/turboquant/tests/structural.rs b/vortex-tensor/src/encodings/turboquant/tests/structural.rs index 3b49f1da7c4..bc9a5e207f1 100644 --- a/vortex-tensor/src/encodings/turboquant/tests/structural.rs +++ b/vortex-tensor/src/encodings/turboquant/tests/structural.rs @@ -224,10 +224,10 @@ fn dot_product_quantized_accuracy() -> VortexResult<()> { reason = "test uses known small dimensions" )] fn sorf_transform_roundtrip_isolation() -> VortexResult<()> { + use vortex_array::EmptyMetadata; use vortex_array::IntoArray; use vortex_array::arrays::dict::DictArray; use vortex_array::dtype::extension::ExtDType; - use vortex_array::extension::EmptyMetadata; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; diff --git a/vortex-tensor/src/scalar_fns/l2_norm.rs b/vortex-tensor/src/scalar_fns/l2_norm.rs index d760c3429bd..9f58b524260 100644 --- a/vortex-tensor/src/scalar_fns/l2_norm.rs +++ b/vortex-tensor/src/scalar_fns/l2_norm.rs @@ -254,6 +254,7 @@ mod tests { use rstest::rstest; use vortex_array::ArrayPlugin; use vortex_array::ArrayRef; + use vortex_array::EmptyMetadata; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::Constant; @@ -266,7 +267,6 @@ mod tests { use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::dtype::extension::ExtDType; - use vortex_array::extension::EmptyMetadata; use vortex_array::scalar::Scalar; use vortex_array::validity::Validity; use vortex_error::VortexResult; diff --git a/vortex-tensor/src/scalar_fns/sorf_transform/tests.rs b/vortex-tensor/src/scalar_fns/sorf_transform/tests.rs index 31f11bed07d..3dc281a29ea 100644 --- a/vortex-tensor/src/scalar_fns/sorf_transform/tests.rs +++ b/vortex-tensor/src/scalar_fns/sorf_transform/tests.rs @@ -9,6 +9,7 @@ use std::sync::Arc; use vortex_array::ArrayPlugin; use vortex_array::ArrayRef; +use vortex_array::EmptyMetadata; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::ExtensionArray; @@ -22,7 +23,6 @@ use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::dtype::extension::ExtDType; -use vortex_array::extension::EmptyMetadata; use vortex_array::validity::Validity; use vortex_buffer::Buffer; use vortex_buffer::BufferMut; diff --git a/vortex-tensor/src/scalar_fns/sorf_transform/vtable.rs b/vortex-tensor/src/scalar_fns/sorf_transform/vtable.rs index 76648decae2..d4bbf0c123a 100644 --- a/vortex-tensor/src/scalar_fns/sorf_transform/vtable.rs +++ b/vortex-tensor/src/scalar_fns/sorf_transform/vtable.rs @@ -9,6 +9,7 @@ use num_traits::Float; use num_traits::FromPrimitive; use prost::Message; use vortex_array::ArrayRef; +use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ExtensionArray; @@ -28,7 +29,6 @@ use vortex_array::dtype::PType; use vortex_array::dtype::extension::ExtDType; use vortex_array::dtype::proto::dtype as pb; use vortex_array::expr::Expression; -use vortex_array::extension::EmptyMetadata; use vortex_array::match_each_float_ptype; use vortex_array::scalar_fn::Arity; use vortex_array::scalar_fn::ChildName; diff --git a/vortex-tensor/src/types/fixed_shape_tensor/matcher.rs b/vortex-tensor/src/types/fixed_shape_tensor/matcher.rs index 2cd7d7c8e4c..e4e460c21a2 100644 --- a/vortex-tensor/src/types/fixed_shape_tensor/matcher.rs +++ b/vortex-tensor/src/types/fixed_shape_tensor/matcher.rs @@ -90,11 +90,11 @@ impl FixedShapeTensorMatcherMetadata<'_> { mod tests { use std::sync::Arc; + use vortex_array::EmptyMetadata; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::dtype::extension::ExtDType; - use vortex_array::extension::EmptyMetadata; use vortex_error::VortexResult; use super::*; diff --git a/vortex-tensor/src/types/vector/arrow.rs b/vortex-tensor/src/types/vector/arrow.rs index 85690ea0cd5..9a148839f3d 100644 --- a/vortex-tensor/src/types/vector/arrow.rs +++ b/vortex-tensor/src/types/vector/arrow.rs @@ -15,6 +15,7 @@ use arrow_schema::DataType; use arrow_schema::Field; use arrow_schema::extension::EXTENSION_TYPE_NAME_KEY; use vortex_array::ArrayRef; +use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ExtensionArray; @@ -30,7 +31,6 @@ use vortex_array::dtype::DType; use vortex_array::dtype::arrow::FromArrowType; use vortex_array::dtype::extension::ExtDType; use vortex_array::dtype::extension::ExtVTable; -use vortex_array::extension::EmptyMetadata; use vortex_error::VortexResult; use vortex_session::registry::CachedId; use vortex_session::registry::Id; @@ -174,6 +174,7 @@ mod tests { use arrow_array::Float32Array; use arrow_array::Int32Array; use arrow_schema::Field; + use vortex_array::EmptyMetadata; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::FixedSizeListArray; @@ -188,7 +189,6 @@ mod tests { use vortex_array::dtype::PType; use vortex_array::dtype::StructFields; use vortex_array::dtype::extension::ExtDType; - use vortex_array::extension::EmptyMetadata; use vortex_array::validity::Validity; use vortex_buffer::buffer; diff --git a/vortex-tensor/src/types/vector/matcher.rs b/vortex-tensor/src/types/vector/matcher.rs index b0e641ba45b..9f5b0037029 100644 --- a/vortex-tensor/src/types/vector/matcher.rs +++ b/vortex-tensor/src/types/vector/matcher.rs @@ -93,11 +93,11 @@ impl VectorMatcherMetadata { mod tests { use std::sync::Arc; + use vortex_array::EmptyMetadata; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::dtype::extension::ExtDType; - use vortex_array::extension::EmptyMetadata; use vortex_error::VortexResult; use super::*; diff --git a/vortex-tensor/src/types/vector/mod.rs b/vortex-tensor/src/types/vector/mod.rs index 2019176d211..d5804f34fd4 100644 --- a/vortex-tensor/src/types/vector/mod.rs +++ b/vortex-tensor/src/types/vector/mod.rs @@ -4,13 +4,13 @@ //! Vector extension type for fixed-length float vectors (e.g., embeddings). use vortex_array::ArrayRef; +use vortex_array::EmptyMetadata; use vortex_array::IntoArray; use vortex_array::arrays::ConstantArray; use vortex_array::arrays::ExtensionArray; use vortex_array::dtype::DType; use vortex_array::dtype::NativePType; use vortex_array::dtype::Nullability; -use vortex_array::extension::EmptyMetadata; use vortex_array::scalar::PValue; use vortex_array::scalar::Scalar; use vortex_error::VortexResult; diff --git a/vortex-tensor/src/types/vector/vtable.rs b/vortex-tensor/src/types/vector/vtable.rs index c80f17665f2..cc9f5a87de3 100644 --- a/vortex-tensor/src/types/vector/vtable.rs +++ b/vortex-tensor/src/types/vector/vtable.rs @@ -1,11 +1,11 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::EmptyMetadata; use vortex_array::dtype::DType; use vortex_array::dtype::extension::ExtDType; use vortex_array::dtype::extension::ExtId; use vortex_array::dtype::extension::ExtVTable; -use vortex_array::extension::EmptyMetadata; use vortex_array::scalar::ScalarValue; use vortex_error::VortexResult; @@ -61,12 +61,12 @@ mod tests { use std::sync::Arc; use rstest::rstest; + use vortex_array::EmptyMetadata; use vortex_array::dtype::DType; use vortex_array::dtype::Nullability; use vortex_array::dtype::PType; use vortex_array::dtype::extension::ExtDType; use vortex_array::dtype::extension::ExtVTable; - use vortex_array::extension::EmptyMetadata; use vortex_error::VortexResult; use crate::types::vector::Vector; diff --git a/vortex-tensor/src/utils.rs b/vortex-tensor/src/utils.rs index e6d2cce453b..88845f4b767 100644 --- a/vortex-tensor/src/utils.rs +++ b/vortex-tensor/src/utils.rs @@ -394,7 +394,7 @@ pub mod test_helpers { elements: &[T], len: usize, ) -> ArrayRef { - use vortex_array::extension::EmptyMetadata; + use vortex_array::EmptyMetadata; let ext_scalar = Scalar::extension::(EmptyMetadata, fsl_scalar(elements)); ConstantArray::new(ext_scalar, len).into_array() } diff --git a/vortex-turboquant/benches/encode_decode.rs b/vortex-turboquant/benches/encode_decode.rs index f88c37c347a..6adcd5523b1 100644 --- a/vortex-turboquant/benches/encode_decode.rs +++ b/vortex-turboquant/benches/encode_decode.rs @@ -17,13 +17,13 @@ use rand::RngExt; use rand::SeedableRng as _; use rand::rngs::StdRng; use vortex_array::ArrayRef; +use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; use vortex_array::arrays::ExtensionArray; use vortex_array::arrays::FixedSizeListArray; use vortex_array::arrays::PrimitiveArray; -use vortex_array::extension::EmptyMetadata; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; use vortex_buffer::Buffer; diff --git a/vortex-turboquant/src/scalar_fns/decode.rs b/vortex-turboquant/src/scalar_fns/decode.rs index 6791a1aef61..eddef3f52ba 100644 --- a/vortex-turboquant/src/scalar_fns/decode.rs +++ b/vortex-turboquant/src/scalar_fns/decode.rs @@ -10,6 +10,7 @@ use std::sync::Arc; use num_traits::Float; use num_traits::FromPrimitive; use vortex_array::ArrayRef; +use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::FixedSizeListArray; @@ -20,7 +21,6 @@ use vortex_array::dtype::NativePType; use vortex_array::dtype::Nullability; use vortex_array::dtype::extension::ExtDType; use vortex_array::expr::Expression; -use vortex_array::extension::EmptyMetadata; use vortex_array::match_each_float_ptype; use vortex_array::scalar_fn::Arity; use vortex_array::scalar_fn::ChildName; diff --git a/vortex-turboquant/src/tests/mod.rs b/vortex-turboquant/src/tests/mod.rs index ffa1db175a7..3163706a002 100644 --- a/vortex-turboquant/src/tests/mod.rs +++ b/vortex-turboquant/src/tests/mod.rs @@ -7,6 +7,7 @@ )] use vortex_array::ArrayRef; +use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ExtensionArray; @@ -17,7 +18,6 @@ use vortex_array::arrays::extension::ExtensionArrayExt; use vortex_array::arrays::fixed_size_list::FixedSizeListArrayExt; use vortex_array::dtype::NativePType; use vortex_array::dtype::PType; -use vortex_array::extension::EmptyMetadata; use vortex_array::memory::MemorySession; use vortex_array::session::ArraySession; use vortex_array::validity::Validity; diff --git a/vortex-turboquant/src/tests/scalar_fns.rs b/vortex-turboquant/src/tests/scalar_fns.rs index de125e8a5f1..31406686ee0 100644 --- a/vortex-turboquant/src/tests/scalar_fns.rs +++ b/vortex-turboquant/src/tests/scalar_fns.rs @@ -1,9 +1,9 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright the Vortex contributors +use vortex_array::EmptyMetadata; use vortex_array::IntoArray; use vortex_array::VortexSessionExecute; -use vortex_array::extension::EmptyMetadata; use vortex_array::scalar_fn::ScalarFnVTable; use vortex_array::validity::Validity; use vortex_error::VortexResult; diff --git a/vortex-turboquant/src/vector/normalize.rs b/vortex-turboquant/src/vector/normalize.rs index 642949eecf6..c0a5c9f6f06 100644 --- a/vortex-turboquant/src/vector/normalize.rs +++ b/vortex-turboquant/src/vector/normalize.rs @@ -10,6 +10,7 @@ use num_traits::Float; use vortex_array::ArrayRef; +use vortex_array::EmptyMetadata; use vortex_array::ExecutionCtx; use vortex_array::IntoArray; use vortex_array::arrays::ExtensionArray; @@ -19,7 +20,6 @@ use vortex_array::arrays::ScalarFnArray; use vortex_array::arrays::extension::ExtensionArrayExt; use vortex_array::arrays::fixed_size_list::FixedSizeListArrayExt; use vortex_array::dtype::NativePType; -use vortex_array::extension::EmptyMetadata; use vortex_array::match_each_float_ptype; use vortex_array::validity::Validity; use vortex_buffer::BufferMut; diff --git a/vortex/benches/single_encoding_throughput.rs b/vortex/benches/single_encoding_throughput.rs index 63e262fc210..d078e9fed4e 100644 --- a/vortex/benches/single_encoding_throughput.rs +++ b/vortex/benches/single_encoding_throughput.rs @@ -512,6 +512,7 @@ mod turboquant_benches { use paste::paste; use rand::SeedableRng; use rand::rngs::StdRng; + use vortex::array::EmptyMetadata; use vortex::array::IntoArray; use vortex::array::arrays::Extension; use vortex::array::arrays::ExtensionArray; @@ -519,7 +520,6 @@ mod turboquant_benches { use vortex::array::arrays::PrimitiveArray; use vortex::array::arrays::scalar_fn::ScalarFnArrayExt; use vortex::array::dtype::extension::ExtDType; - use vortex::array::extension::EmptyMetadata; use vortex::array::validity::Validity; use vortex_array::VortexSessionExecute; use vortex_buffer::BufferMut; diff --git a/vortex/examples/turboquant_vector_search.rs b/vortex/examples/turboquant_vector_search.rs index 47e1e56ba3a..4c1c0252528 100644 --- a/vortex/examples/turboquant_vector_search.rs +++ b/vortex/examples/turboquant_vector_search.rs @@ -31,6 +31,7 @@ use anyhow::ensure; use futures::TryStreamExt; use vortex::VortexSessionDefault; use vortex::array::ArrayRef; +use vortex::array::EmptyMetadata; use vortex::array::IntoArray; use vortex::array::VortexSessionExecute; use vortex::array::arrays::ChunkedArray; @@ -44,7 +45,6 @@ use vortex::array::arrays::struct_::StructArrayExt; use vortex::array::expr::col; use vortex::array::expr::gt; use vortex::array::expr::lit; -use vortex::array::extension::EmptyMetadata; use vortex::array::scalar::Scalar; use vortex::array::scalar_fn::EmptyOptions; use vortex::array::scalar_fn::ScalarFnVTable;