Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Appender support for arrays (or alternative) #422

Open
cipriancraciun opened this issue Jan 22, 2025 · 4 comments
Open

Appender support for arrays (or alternative) #422

cipriancraciun opened this issue Jan 22, 2025 · 4 comments

Comments

@cipriancraciun
Copy link

At the moment, although the Value and ValueRef seem to mention support for arrays, lists, and a few related items, none of them seem to be implemented (i.e. the code panics with unsupported!()) when used in Appender::append_row or even for parameter binding in prepared statements.

It would be nice, since DuckDB does support array / list types, to be able to bulk insert data (or at least insert row-by-row) that contains such types.

In the interim, is there perhaps a workaround? (Besides serializing the data as JSON and using COPY, or writing a prepared statement that deserializes data a string via JSON.)

@era127
Copy link
Contributor

era127 commented Feb 12, 2025

I do not believe there is a function in the C api to append an array or list, but it would require the value to be coverted to a data chunk and then appended with duckdb_append_data_chunk

If you have arrow data, I think it is possible to do this in the current rust api with append_record_batch(), which will convert the record batch to a data chunk and then use duckdb_append_data_chunk.

@cipriancraciun
Copy link
Author

Looking at the current Rust API (https://docs.rs/duckdb/latest/duckdb/struct.Appender.html?search=batch), I don't see any appender.append_record_batch() method; is this perhaps in a different Rust crate? (I've also checked the libduckdb-sys crate that I believe is the C++ wrapper for Rust.)

@era127
Copy link
Contributor

era127 commented Feb 12, 2025

It is in the appender-arrow feature here.

@DorianCzichotzki
Copy link

I think duckdb_append_value was added in 1.2.0 (duckdb/duckdb#15065). I guess that can be used to append arrays and other types.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants