Skip to content

tiledb_query_import_buffer() writes an extra empty row with 1D character #888

@cgiachalis

Description

@cgiachalis

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions