diff --git a/src/libtiledb.cpp b/src/libtiledb.cpp index ccc001e2a9..9213055d76 100644 --- a/src/libtiledb.cpp +++ b/src/libtiledb.cpp @@ -448,8 +448,10 @@ bool libtiledb_ctx_is_supported_fs(XPtr ctx, std::string scheme return ctx->is_supported_fs(TILEDB_AZURE); } else if (scheme == "gcs") { return ctx->is_supported_fs(TILEDB_GCS); +#if TILEDB_VERSION >= TileDB_Version(2,2,0) } else if (scheme == "memory") { return ctx->is_supported_fs(TILEDB_MEMFS); +#endif } else { Rcpp::stop("Unknown TileDB fs scheme: '%s'", scheme.c_str()); } @@ -2405,15 +2407,15 @@ XPtr libtiledb_query_set_buffer(XPtr query, SEXP buffer) { if (TYPEOF(buffer) == INTSXP) { IntegerVector vec(buffer); - query->set_buffer(attr, vec.begin(), vec.length()); + query->set_data_buffer(attr, vec.begin(), vec.length()); return query; } else if (TYPEOF(buffer) == REALSXP) { NumericVector vec(buffer); - query->set_buffer(attr, vec.begin(), vec.length()); + query->set_data_buffer(attr, vec.begin(), vec.length()); return query; } else if (TYPEOF(buffer) == LGLSXP) { LogicalVector vec(buffer); - query->set_buffer(attr, vec.begin(), vec.length()); + query->set_data_buffer(attr, vec.begin(), vec.length()); return query; } else { Rcpp::stop("Invalid attribute buffer type for attribute '%s': %s", @@ -2504,15 +2506,12 @@ XPtr libtiledb_query_set_buffer_var_char(XPtr quer #if TILEDB_VERSION >= TileDB_Version(2,2,4) if (bufptr->nullable) { - query->set_buffer_nullable(attr, bufptr->offsets, bufptr->str, bufptr->validity_map); - } else { - query->set_buffer(attr, bufptr->offsets, bufptr->str); + query->set_validity_buffer(attr, bufptr->validity_map); } - return query; -#else - query->set_buffer(attr, bufptr->offsets, bufptr->str); - return query; #endif + query->set_data_buffer(attr, bufptr->str); + query->set_offsets_buffer(attr, bufptr->offsets); + return query; } // 'len' is the length of the query result set, i.e. buffer elements for standard columns @@ -2577,11 +2576,13 @@ XPtr libtiledb_query_buffer_var_vec_create(IntegerVector intoffsets, XPtr libtiledb_query_set_buffer_var_vec(XPtr query, std::string attr, XPtr buf) { if (buf->dtype == TILEDB_INT32) { - query->set_buffer(attr, buf->offsets, buf->idata); + query->set_data_buffer(attr, buf->idata); + query->set_offsets_buffer(attr, buf->offsets); } else if (buf->dtype == TILEDB_FLOAT64) { - query->set_buffer(attr, buf->offsets, buf->ddata); + query->set_data_buffer(attr, buf->ddata); + query->set_offsets_buffer(attr, buf->offsets); } else { - Rcpp::stop("Unsupported type '%s' for buffer", _tiledb_datatype_to_string(buf->dtype)); + Rcpp::stop("Unsupported type '%s' for buffer", _tiledb_datatype_to_string(buf->dtype)); } return query; } @@ -2800,17 +2801,11 @@ XPtr libtiledb_query_set_buffer_ptr(XPtr query, XPtr buf) { #if TILEDB_VERSION >= TileDB_Version(2,2,0) if (buf->nullable) { - query->set_buffer_nullable(attr, static_cast(buf->vec.data()), buf->ncells, - buf->validity_map.data(), - static_cast(buf->validity_map.size())); - } else { - query->set_buffer(attr, static_cast(buf->vec.data()), buf->ncells); + query->set_validity_buffer(attr, buf->validity_map); } - return query; -#else - query->set_buffer(attr, static_cast(buf->vec.data()), buf->ncells); - return query; #endif + query->set_data_buffer(attr, static_cast(buf->vec.data()), buf->ncells); + return query; }