tiledb_query_import_buffer() writes an extra empty row when the 1D is character.
Reprex with 1D - char
library(tiledb)
uri <- tempfile()
# Create schema only
dat <- data.frame(id = "a", val = "John")
fromDataFrame(dat, uri, col_index = 1, mode = "schema_only")
arr <- tiledb_array(uri, return_as = "data.frame")
# Open array at "WRITE" mode
qry <- tiledb::tiledb_query(arr, "WRITE")
# Create a record batch
arrdat <- arrow::record_batch(dat)
arrdat$to_data_frame()
#> id val
#> 1 a John
nms <- arrdat$names()
# Import buffer
for (nam in nms) {
vec <- arrdat$GetColumnByName(nam)
na <- nanoarrow::as_nanoarrow_array(vec)
qry <- tiledb::tiledb_query_import_buffer(qry, nam, na)
}
# Submit
tiledb::tiledb_query_set_layout(qry, "UNORDERED")
tiledb::tiledb_query_submit(qry)
tiledb::tiledb_query_finalize(qry)
arr[]
#> id val
#> 1 <- HERE!!
#> 2 a John
No issues for int dim.
Example 1D - int
library(tiledb)
uri <- tempfile()
# Create schema only
dat <- data.frame(id = 1L, val = "John")
fromDataFrame(dat, uri, col_index = 1, mode = "schema_only")
arr <- tiledb_array(uri, return_as = "data.frame")
# Open array at "WRITE" mode
qry <- tiledb::tiledb_query(arr, "WRITE")
# Create a record batch
arrdat <- arrow::record_batch(dat)
arrdat$to_data_frame()
#> id val
#> 1 1 John
nms <- arrdat$names()
# Import buffer
for (nam in nms) {
vec <- arrdat$GetColumnByName(nam)
na <- nanoarrow::as_nanoarrow_array(vec)
qry <- tiledb::tiledb_query_import_buffer(qry, nam, na)
}
# Submit
tiledb::tiledb_query_set_layout(qry, "UNORDERED")
tiledb::tiledb_query_submit(qry)
tiledb::tiledb_query_finalize(qry)
arr[]
#> id val
#> 1 1 John
tiledb_query_import_buffer()writes an extra empty row when the1Dis character.Reprex with 1D - char
No issues for int dim.
Example 1D - int