Skip to content

Commit e41bcc7

Browse files
committed
remove duckdbfs
Signed-off-by: Mikhail Kot <mikhail@spiraldb.com>
1 parent e1c6ef5 commit e41bcc7

11 files changed

Lines changed: 46 additions & 629 deletions

File tree

vortex-duckdb/cpp/copy_function.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,12 @@ unique_ptr<FunctionData> copy_to_bind(ClientContext &,
5858
}
5959

6060
unique_ptr<GlobalFunctionData>
61-
copy_to_initialize_global(ClientContext &context, FunctionData &bind_data, const string &file_path) {
61+
copy_to_initialize_global(ClientContext &, FunctionData &bind_data, const string &file_path) {
6262
void *const ffi_bind = bind_data.Cast<CopyBindData>().ffi_data->DataPtr();
63-
const auto ffi_ctx = reinterpret_cast<duckdb_client_context>(&context);
6463

6564
duckdb_vx_error error_out = nullptr;
6665
const duckdb_vx_data ffi_global =
67-
duckdb_copy_function_copy_to_initialize_global(ffi_ctx, ffi_bind, file_path.c_str(), &error_out);
66+
duckdb_copy_function_copy_to_initialize_global(ffi_bind, file_path.c_str(), &error_out);
6867
if (error_out) {
6968
throw ExecutorException(IntoErrString(error_out));
7069
}

vortex-duckdb/cpp/table_function.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,16 +175,14 @@ struct CTableBindResult {
175175
* and after a query another file is added matching the glob, for second query
176176
* bind() will be called again.
177177
*/
178-
unique_ptr<FunctionData> c_bind(ClientContext &context,
178+
unique_ptr<FunctionData> c_bind(ClientContext &,
179179
TableFunctionBindInput &input,
180180
vector<LogicalType> &return_types,
181181
vector<string> &names) {
182182
CTableBindResult result = {return_types, names};
183183

184184
duckdb_vx_error error_out = nullptr;
185-
auto ctx = reinterpret_cast<duckdb_client_context>(&context);
186-
auto ffi_bind_data = duckdb_table_function_bind(ctx,
187-
reinterpret_cast<duckdb_vx_tfunc_bind_input>(&input),
185+
auto ffi_bind_data = duckdb_table_function_bind(reinterpret_cast<duckdb_vx_tfunc_bind_input>(&input),
188186
reinterpret_cast<duckdb_vx_tfunc_bind_result>(&result),
189187
&error_out);
190188
if (error_out) {

vortex-duckdb/include/vortex.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,7 @@ duckdb_vx_data duckdb_table_function_init_global(const duckdb_vx_tfunc_init_inpu
8080
extern duckdb_vx_data duckdb_table_function_init_local(void *global_init_data);
8181

8282
extern
83-
duckdb_vx_data duckdb_table_function_bind(duckdb_client_context ctx,
84-
duckdb_vx_tfunc_bind_input bind_input,
83+
duckdb_vx_data duckdb_table_function_bind(duckdb_vx_tfunc_bind_input bind_input,
8584
duckdb_vx_tfunc_bind_result bind_result,
8685
duckdb_vx_error *error_out);
8786

@@ -95,8 +94,7 @@ duckdb_vx_data duckdb_copy_function_copy_to_bind(const char *const *column_names
9594
duckdb_vx_error *error_out);
9695

9796
extern
98-
duckdb_vx_data duckdb_copy_function_copy_to_initialize_global(duckdb_client_context client_context,
99-
const void *bind_data,
97+
duckdb_vx_data duckdb_copy_function_copy_to_initialize_global(const void *bind_data,
10098
const char *file_path,
10199
duckdb_vx_error *error_out);
102100

vortex-duckdb/src/copy.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0
22
// SPDX-FileCopyrightText: Copyright the Vortex contributors
33

4+
use async_fs::OpenOptions;
45
use futures::SinkExt;
56
use futures::TryStreamExt;
67
use futures::channel::mpsc;
@@ -28,9 +29,7 @@ use crate::RUNTIME;
2829
use crate::SESSION;
2930
use crate::convert::FromLogicalType;
3031
use crate::convert::data_chunk_to_vortex;
31-
use crate::duckdb::ClientContextRef;
3232
use crate::duckdb::DataChunkRef;
33-
use crate::duckdb::DuckDbFsWriter;
3433
use crate::duckdb::LogicalTypeRef;
3534

3635
#[derive(Clone)]
@@ -111,7 +110,6 @@ pub fn copy_to_finalize(init_global: &mut CopyFunctionGlobal) -> VortexResult<()
111110
}
112111

113112
pub fn copy_to_initialize_global(
114-
client_context: &ClientContextRef,
115113
bind_data: &CopyFunctionBind,
116114
file_path: String,
117115
) -> VortexResult<CopyFunctionGlobal> {
@@ -120,16 +118,16 @@ pub fn copy_to_initialize_global(
120118
let array_stream = ArrayStreamAdapter::new(bind_data.dtype.clone(), rx.into_stream());
121119

122120
let handle = SESSION.handle();
123-
// SAFETY: The ClientContext is owned by the Connection and lives for the duration of
124-
// query execution. DuckDB keeps the connection alive while this copy function runs.
125-
let ctx = unsafe { client_context.erase_lifetime() };
126121

127-
// Use DuckDB FS exclusively to match the DuckDB client context configuration.
128-
let writer = DuckDbFsWriter::new(ctx, &file_path)
129-
.map_err(|e| vortex_err!("Failed to create DuckDB FS writer for {file_path}: {e}"))?;
130-
131-
let write_task =
132-
handle.spawn(async move { SESSION.write_options().write(writer, array_stream).await });
122+
let write_task = handle.spawn(async move {
123+
let writer = OpenOptions::new()
124+
.write(true)
125+
.truncate(true)
126+
.create(true)
127+
.open(file_path)
128+
.await?;
129+
SESSION.write_options().write(writer, array_stream).await
130+
});
133131

134132
let worker_pool = RUNTIME.new_pool();
135133
worker_pool.set_workers_to_available_parallelism();

vortex-duckdb/src/duckdb/file_system.rs

Lines changed: 0 additions & 198 deletions
This file was deleted.

vortex-duckdb/src/duckdb/mod.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ mod data_chunk;
1010
mod database;
1111
mod ddb_string;
1212
mod expr;
13-
mod file_system;
1413
mod logical_type;
1514
mod macro_;
1615
mod query_result;
@@ -36,7 +35,6 @@ pub use data_chunk::*;
3635
pub use database::*;
3736
pub use ddb_string::*;
3837
pub use expr::*;
39-
pub use file_system::*;
4038
pub use logical_type::*;
4139
pub use query_result::*;
4240
pub use reusable_dict::*;

vortex-duckdb/src/ffi.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ use crate::copy::copy_to_sink;
1919
use crate::cpp;
2020
use crate::duckdb::BindInput;
2121
use crate::duckdb::BindResult;
22-
use crate::duckdb::ClientContext;
2322
use crate::duckdb::Data;
2423
use crate::duckdb::DataChunk;
2524
use crate::duckdb::DuckdbStringMap;
@@ -197,17 +196,15 @@ pub unsafe extern "C-unwind" fn duckdb_table_function_init_local(
197196

198197
#[unsafe(no_mangle)]
199198
pub unsafe extern "C-unwind" fn duckdb_table_function_bind(
200-
ctx: cpp::duckdb_client_context,
201199
bind_input: cpp::duckdb_vx_tfunc_bind_input,
202200
bind_result: cpp::duckdb_vx_tfunc_bind_result,
203201
error_out: *mut cpp::duckdb_vx_error,
204202
) -> cpp::duckdb_vx_data {
205-
let client_context = unsafe { ClientContext::borrow(ctx) };
206203
let bind_input = unsafe { BindInput::own(bind_input) };
207204
let mut bind_result = unsafe { BindResult::own(bind_result) };
208205

209206
try_or_null(error_out, || {
210-
let bind_data = bind(client_context, &bind_input, &mut bind_result)?;
207+
let bind_data = bind(&bind_input, &mut bind_result)?;
211208
Ok(Data::from(Box::new(bind_data)).as_ptr())
212209
})
213210
}
@@ -254,7 +251,6 @@ pub unsafe extern "C-unwind" fn duckdb_copy_function_copy_to_bind(
254251

255252
#[unsafe(no_mangle)]
256253
pub unsafe extern "C-unwind" fn duckdb_copy_function_copy_to_initialize_global(
257-
client_context: cpp::duckdb_client_context,
258254
bind_data: *const c_void,
259255
file_path: *const c_char,
260256
error_out: *mut cpp::duckdb_vx_error,
@@ -264,9 +260,8 @@ pub unsafe extern "C-unwind" fn duckdb_copy_function_copy_to_initialize_global(
264260
.into_owned();
265261
let bind_data = unsafe { bind_data.cast::<CopyFunctionBind>().as_ref() }
266262
.vortex_expect("bind_data null pointer");
267-
let ctx = unsafe { ClientContext::borrow(client_context) };
268263
try_or_null(error_out, || {
269-
let bind_data = copy_to_initialize_global(ctx, bind_data, file_path)?;
264+
let bind_data = copy_to_initialize_global(bind_data, file_path)?;
270265
Ok(Data::from(Box::new(bind_data)).as_ptr())
271266
})
272267
}

0 commit comments

Comments
 (0)