-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Description
Passing a zero character as metadata is handled differently by array and group. See full reprex at the bottom.
# metadata for array and group
key <- "tzone"
val <- ""
nchar(val)
[1] 0
# array ---------------------------------------------------
# libtiledb_array_get_metadata_list
tiledb_get_all_metadata(arr_handle) # Error
#> Error: Not compatible with STRSXP: [type=NULL].
tiledb_get_metadata(arr_handle, "tzone") # Error
#> Error: Not compatible with STRSXP: [type=NULL].
# group -------------------------------------------------
# with one metadata key
# Returns empty list
tiledb_group_get_all_metadata(grp)
#> list()
# Returns NULL
tiledb_group_get_metadata(grp, key)
#> NULL
# with 2 metadata keys
tiledb_group_metadata_num(grp) # 2
#> [1] 2
# Error as it tries to assign "key" attribute (array doesn't assign key attr)
tiledb_group_get_all_metadata(grp) # errors
#> Error in names(res)[i] <- attr(obj, "key"): replacement has length zero
R Code - reprex
library(tiledb)
# metadata for array and group
key <- "tzone"
val <- ""
nchar(val)
[1] 0
# Array metadata ------------------------
uri_arr <- tempfile("arr1")
fromDataFrame(data.frame(a = "foo"), uri_arr)
arr_handle <- tiledb_array(uri_arr)
arr_handle <- tiledb_array_open(arr_handle, type = "WRITE")
# Put metadata
tiledb_put_metadata(arr_handle, key, val) # OK
#> [1] TRUE
arr_handle <- tiledb_array_close(arr_handle)
arr_handle <- tiledb_array_open(arr_handle, type = "READ")
# libtiledb_array_get_metadata_list
tiledb_get_all_metadata(arr_handle) # Error
#> Error: Not compatible with STRSXP: [type=NULL].
tiledb_get_metadata(arr_handle, "tzone") # Error
#> Error: Not compatible with STRSXP: [type=NULL].
# Group metadata ------------------------
uri_grp <- tempfile("grp1")
grp <- tiledb_group_create(uri_grp)
grp <- tiledb_group(grp, type = "WRITE")
# Put metadata
tiledb_group_put_metadata(grp, key, val) # OK
#> [1] TRUE
grp <- tiledb_group_close(grp)
grp <- tiledb_group_open(grp, type = "READ")
# Returns empty list
tiledb_group_get_all_metadata(grp)
#> list()
# Returns NULL
tiledb_group_get_metadata(grp, key)
#> NULL
# Put another key,val metadata
grp <- tiledb_group_close(grp)
grp <- tiledb_group(uri_grp, type = "WRITE")
tiledb_group_put_metadata(grp, "b", 2) # OK
#> [1] TRUE
grp <- tiledb_group_close(grp)
grp <- tiledb_group_open(grp, type = "READ")
tiledb_group_metadata_num(grp) # 2
#> [1] 2
# Error as it tries to assign "key" attribute (array doesn't assign key attr)
tiledb_group_get_all_metadata(grp) # errors
#> Error in names(res)[i] <- attr(obj, "key"): replacement has length zero
Metadata
Metadata
Assignees
Labels
No labels