library(tiledb)
tmp <- tempfile()
dom <- tiledb_domain(dims = list(
tiledb_dim("d1", c(1L, 10L), 10L, type = "INT32"),
tiledb_dim("d2", c(1L, 20L), 20L, type = "INT32")
))
schema <- tiledb_array_schema(
dom,
attrs = list(tiledb_attr("x", type = "FLOAT64")),
sparse = TRUE
)
tiledb_array_create(tmp, schema)
arr <- tiledb_array(tmp, query_type = "WRITE")
arr[] <- data.frame(d1 = 1L, d2 = 2L, x = 3) # OK
arr[] <- data.frame(d1 = integer(0), d2 = integer(0), x = numeric(0)) # FAIL
## Error: [TileDB::Query] Error: Fix-Sized input attribute/dimension 'd2' is not set correctly.
## Data buffer is not set.
tiledb_array_close(arr)
For more context: we're breaking up an array into blocks that are processed and written to file by [<- (see LTLA/TileDBArray#33). Some of those blocks will be empty (no non-zero elements), resulting in the above error. Currently, we just work around it by checking for at least one non-zero element before attempting to call [<-. However, I think an empty data frame is a perfectly reasonable input; [<- should handle this case more gracefully and just no-op if the supplied value is empty.
Session information
R Under development (unstable) (2026-02-19 r89439)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 22.04.5 LTS
Matrix products: default
BLAS: /home/luna/Software/R/trunk/lib/libRblas.so
LAPACK: /home/luna/Software/R/trunk/lib/libRlapack.so; LAPACK version 3.12.1
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
time zone: Australia/Sydney
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] RcppSpdlog_0.0.28 tiledb_0.33.0
loaded via a namespace (and not attached):
[1] zoo_1.8-15 bit_4.6.0 compiler_4.6.0 tools_4.6.0
[5] RcppCCTZ_0.2.14 spdl_0.0.5 Rcpp_1.1.1 nanoarrow_0.8.0
[9] bit64_4.6.0-1 nanotime_0.3.13 grid_4.6.0 lattice_0.22-9
For more context: we're breaking up an array into blocks that are processed and written to file by
[<-(see LTLA/TileDBArray#33). Some of those blocks will be empty (no non-zero elements), resulting in the above error. Currently, we just work around it by checking for at least one non-zero element before attempting to call[<-. However, I think an empty data frame is a perfectly reasonable input;[<-should handle this case more gracefully and just no-op if the suppliedvalueis empty.Session information