MCPcopy Create free account
hub / github.com/TileDB-Inc/TileDB / create

Method create

tiledb/sm/array/array.cc:190–288  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

188}
189
190void Array::create(
191 ContextResources& resources,
192 const URI& array_uri,
193 const shared_ptr<ArraySchema>& array_schema,
194 const EncryptionKey& encryption_key) {
195 // Check array schema
196 if (array_schema == nullptr) {
197 throw ArrayException("Cannot create array; Empty array schema");
198 }
199
200 // Check if array exists
201 if (is_array(resources, array_uri)) {
202 throw ArrayException(
203 "Cannot create array; Array '" + array_uri.to_string() +
204 "' already exists");
205 }
206
207 std::lock_guard<std::mutex> lock{object_mtx};
208 array_schema->set_array_uri(array_uri);
209 array_schema->generate_uri(array_schema->timestamp_range());
210 array_schema->check(resources.config());
211
212 // Check current domain is specified correctly if set
213 if (!array_schema->get_current_domain()->empty()) {
214 array_schema->get_current_domain()->check_schema_sanity(
215 array_schema->shared_domain());
216 }
217
218 // Create array directory
219 resources.vfs().create_dir(array_uri);
220
221 // Create array schema directory
222 URI array_schema_dir_uri =
223 array_uri.join_path(constants::array_schema_dir_name);
224 resources.vfs().create_dir(array_schema_dir_uri);
225
226 // Create the enumerations directory inside the array schema directory
227 URI array_enumerations_uri =
228 array_schema_dir_uri.join_path(constants::array_enumerations_dir_name);
229 resources.vfs().create_dir(array_enumerations_uri);
230
231 // Create commit directory
232 URI array_commit_uri = array_uri.join_path(constants::array_commits_dir_name);
233 resources.vfs().create_dir(array_commit_uri);
234
235 // Create fragments directory
236 URI array_fragments_uri =
237 array_uri.join_path(constants::array_fragments_dir_name);
238 resources.vfs().create_dir(array_fragments_uri);
239
240 // Create array metadata directory
241 URI array_metadata_uri =
242 array_uri.join_path(constants::array_metadata_dir_name);
243 resources.vfs().create_dir(array_metadata_uri);
244
245 // Create fragment metadata directory
246 URI array_fragment_metadata_uri =
247 array_uri.join_path(constants::array_fragment_meta_dir_name);

Callers

nothing calls this directly

Calls 15

ArrayExceptionClass · 0.85
is_arrayFunction · 0.85
encryption_type_enumFunction · 0.85
throw_if_not_okFunction · 0.85
store_array_schemaFunction · 0.85
to_stringMethod · 0.80
check_schema_sanityMethod · 0.80
vfsMethod · 0.80
join_pathMethod · 0.80
c_strMethod · 0.80
set_array_uriMethod · 0.45
generate_uriMethod · 0.45

Tested by

no test coverage detected