Skip to content

Commit 40f4eab

Browse files
committed
Simplify appender_with_columns
1 parent 35bccd2 commit 40f4eab

File tree

1 file changed

+5
-17
lines changed

1 file changed

+5
-17
lines changed

crates/duckdb/src/inner_connection.rs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -209,27 +209,15 @@ impl InnerConnection {
209209
catalog: Option<&str>,
210210
columns: &[&str],
211211
) -> Result<Appender<'a>> {
212-
let mut c_app: ffi::duckdb_appender = ptr::null_mut();
213-
let c_table = CString::new(table).unwrap();
214-
let c_schema = CString::new(schema).unwrap();
215-
let c_catalog = catalog.map(|c| CString::new(c).unwrap());
216-
217-
let r = unsafe {
218-
ffi::duckdb_appender_create_ext(
219-
self.con,
220-
c_catalog.as_ref().map_or(ptr::null(), |c| c.as_ptr()),
221-
c_schema.as_ptr() as *const c_char,
222-
c_table.as_ptr() as *const c_char,
223-
&mut c_app,
224-
)
212+
// The C API only supports narrowing columns after the appender is created.
213+
// Create the appender first, then activate the requested column subset.
214+
let mut appender = match catalog {
215+
Some(catalog) => self.appender_to_catalog_and_db(conn, table, catalog, schema)?,
216+
None => self.appender(conn, table, schema)?,
225217
};
226-
result_from_duckdb_appender(r, &mut c_app)?;
227-
228-
let mut appender = Appender::new(conn, c_app);
229218
for column in columns {
230219
appender.add_column(column)?;
231220
}
232-
233221
Ok(appender)
234222
}
235223

0 commit comments

Comments
 (0)