Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@ set(LOADABLE_EXTENSION_NAME ${TARGET_NAME}_loadable_extension)
project(${TARGET_NAME})
include_directories(src/include)

set(EXTENSION_SOURCES src/lance_extension.cpp src/lance_scan.cpp
src/lance_search.cpp src/lance_common.cpp
src/lance_filter_ir.cpp
src/lance_storage.cpp
src/lance_replacement.cpp
src/lance_insert.cpp
src/lance_delete.cpp
src/lance_write.cpp)
set(EXTENSION_SOURCES src/lance_extension.cpp src/lance_scan.cpp
src/lance_search.cpp src/lance_common.cpp
src/lance_filter_ir.cpp
src/lance_storage.cpp
src/lance_replacement.cpp
src/lance_insert.cpp
src/lance_delete.cpp
src/lance_update.cpp
src/lance_write.cpp)

build_static_extension(${TARGET_NAME} ${EXTENSION_SOURCES})
build_loadable_extension(${TARGET_NAME} " " ${EXTENSION_SOURCES})
Expand Down
4 changes: 4 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 10 additions & 6 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,15 @@ panic = "abort"

[dependencies]

# Lance and Arrow dependencies - using compatible versions
lance = { version = "1.0.0", default-features = false, features = ["aws", "azure", "gcp", "oss", "huggingface"] }
lance-core = "1.0.0"
lance-namespace = "1.0.0"
lance-namespace-impls = { version = "1.0.0", features = ["rest"] }
arrow = { version = "56.2.0", features = ["ffi"] }
# Lance and Arrow dependencies - using compatible versions
lance = { version = "1.0.0", default-features = false, features = ["aws", "azure", "gcp", "oss", "huggingface"] }
lance-arrow = "1.0.0"
lance-core = "1.0.0"
lance-namespace = "1.0.0"
lance-namespace-impls = { version = "1.0.0", features = ["rest"] }
lance-table = "1.0.0"
datafusion = "50.3.0"
arrow = { version = "56.2.0", features = ["ffi"] }
arrow-array = "56.2.0"
arrow-schema = "56.2.0"
bzip2-sys = { version = "0.1.13", features = ["static"] }
Expand All @@ -36,3 +39,4 @@ datafusion-expr = "50.3.0"
datafusion-functions = "50.3.0"
datafusion-sql = "50.3.0"
lance-index = "1.0.0"
roaring = "0.10.12"
1 change: 1 addition & 0 deletions rust/error.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ pub enum ErrorCode {
DatasetCommitTransaction = 25,
DirNamespaceDropTable = 26,
DatasetDelete = 27,
DatasetUpdateOverwrite = 28,
}

struct LastError {
Expand Down
11 changes: 6 additions & 5 deletions rust/ffi/dataset.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ use std::ffi::{c_char, c_void, CStr};
use std::ptr;
use std::sync::Arc;

use datafusion_sql::unparser::expr_to_sql;
use lance::dataset::builder::DatasetBuilder;
use lance::Dataset;
use datafusion_sql::unparser::expr_to_sql;

use crate::error::{clear_last_error, set_last_error, ErrorCode};
use crate::runtime;
Expand Down Expand Up @@ -274,7 +274,9 @@ fn dataset_delete_inner(
};
let predicate = match filter {
Some(expr) => expr_to_sql(&expr)
.map_err(|err| FfiError::new(ErrorCode::DatasetDelete, format!("predicate sql: {err}")))?
.map_err(|err| {
FfiError::new(ErrorCode::DatasetDelete, format!("predicate sql: {err}"))
})?
.to_string(),
None => "true".to_string(),
};
Expand Down Expand Up @@ -315,9 +317,8 @@ fn dataset_delete_inner(
};

let deleted_rows = before_rows.saturating_sub(after_rows);
let deleted_rows_i64 = i64::try_from(deleted_rows).map_err(|_| {
FfiError::new(ErrorCode::DatasetDelete, "deleted row count overflow")
})?;
let deleted_rows_i64 = i64::try_from(deleted_rows)
.map_err(|_| FfiError::new(ErrorCode::DatasetDelete, "deleted row count overflow"))?;

unsafe {
std::ptr::write_unaligned(out_deleted_rows, deleted_rows_i64);
Expand Down
22 changes: 14 additions & 8 deletions rust/ffi/dir_namespace.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ use std::sync::Arc;

use lance::dataset::builder::DatasetBuilder;
use lance_core::Error as LanceError;
use lance_namespace::LanceNamespace;
use lance_namespace::models::{DropTableRequest, ListTablesRequest};
use lance_namespace::LanceNamespace;
use lance_namespace_impls::DirectoryNamespaceBuilder;

use crate::error::{clear_last_error, set_last_error, ErrorCode};
Expand Down Expand Up @@ -50,10 +50,7 @@ fn parse_storage_options(
FfiError::new(ErrorCode::Utf8, format!("option_keys[{idx}] utf8: {err}"))
})?;
let value = unsafe { CStr::from_ptr(val_ptr) }.to_str().map_err(|err| {
FfiError::new(
ErrorCode::Utf8,
format!("option_values[{idx}] utf8: {err}"),
)
FfiError::new(ErrorCode::Utf8, format!("option_values[{idx}] utf8: {err}"))
})?;
storage_options.insert(key.to_string(), value.to_string());
}
Expand Down Expand Up @@ -123,7 +120,9 @@ fn open_dataset_in_dir_namespace_inner(
option_values: *const *const c_char,
options_len: usize,
) -> FfiResult<(DatasetHandle, String)> {
let root = unsafe { cstr_to_str(root, "root")? }.trim_end_matches('/').to_string();
let root = unsafe { cstr_to_str(root, "root")? }
.trim_end_matches('/')
.to_string();
let table_name = unsafe { cstr_to_str(table_name, "table_name")? };
let storage_options = parse_storage_options(option_keys, option_values, options_len)?;

Expand Down Expand Up @@ -160,7 +159,13 @@ pub unsafe extern "C" fn lance_open_dataset_in_dir_namespace(
}
}

match open_dataset_in_dir_namespace_inner(root, table_name, option_keys, option_values, options_len) {
match open_dataset_in_dir_namespace_inner(
root,
table_name,
option_keys,
option_values,
options_len,
) {
Ok((handle, table_uri)) => {
clear_last_error();
if !out_table_uri.is_null() {
Expand Down Expand Up @@ -224,7 +229,8 @@ pub unsafe extern "C" fn lance_dir_namespace_drop_table(
option_values: *const *const c_char,
options_len: usize,
) -> i32 {
match dir_namespace_drop_table_inner(root, table_name, option_keys, option_values, options_len) {
match dir_namespace_drop_table_inner(root, table_name, option_keys, option_values, options_len)
{
Ok(()) => {
clear_last_error();
0
Expand Down
1 change: 1 addition & 0 deletions rust/ffi/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,6 @@ mod scan;
mod search;
mod stream;
mod types;
mod update;
mod util;
mod write;
Loading
Loading