File tree Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Expand file tree Collapse file tree 1 file changed +24
-0
lines changed Original file line number Diff line number Diff line change @@ -144,6 +144,15 @@ impl Inserter<&str> for FlatVector {
144
144
}
145
145
}
146
146
147
+ impl Inserter < & String > for FlatVector {
148
+ fn insert ( & self , index : usize , value : & String ) {
149
+ let cstr = CString :: new ( value. as_bytes ( ) ) . unwrap ( ) ;
150
+ unsafe {
151
+ duckdb_vector_assign_string_element ( self . ptr , index as u64 , cstr. as_ptr ( ) ) ;
152
+ }
153
+ }
154
+ }
155
+
147
156
impl Inserter < & [ u8 ] > for FlatVector {
148
157
fn insert ( & self , index : usize , value : & [ u8 ] ) {
149
158
let value_size = value. len ( ) ;
@@ -159,6 +168,21 @@ impl Inserter<&[u8]> for FlatVector {
159
168
}
160
169
}
161
170
171
+ impl Inserter < & Vec < u8 > > for FlatVector {
172
+ fn insert ( & self , index : usize , value : & Vec < u8 > ) {
173
+ let value_size = value. len ( ) ;
174
+ unsafe {
175
+ // This function also works for binary data. https://duckdb.org/docs/api/c/api#duckdb_vector_assign_string_element_len
176
+ duckdb_vector_assign_string_element_len (
177
+ self . ptr ,
178
+ index as u64 ,
179
+ value. as_ptr ( ) as * const :: std:: os:: raw:: c_char ,
180
+ value_size as u64 ,
181
+ ) ;
182
+ }
183
+ }
184
+ }
185
+
162
186
/// A list vector.
163
187
pub struct ListVector {
164
188
/// ListVector does not own the vector pointer.
You can’t perform that action at this time.
0 commit comments