JULEA
Todo List
Global get_schema (gpointer backend_data, gchar const *namespace, gchar const *name, GError **error)
Currently _backend_schema_get is called and the returned bson is converted to a GHashTable. A better way would be to use one common function for both so no conversion is neccessary.
Global H5Sencode_vers

check whether version is up to date: https://github.com/Olgasnezh/hdf5-vol-sqlite-plugin

clean up

fix memory leaks

Global _backend_query_ids (gpointer backend_data, gpointer _batch, gchar const *name, bson_t const *selector, GArray **matches, GError **error)

check if caching this statement makes any difference with different databases

Update and delete could be done by adding the selection part to the respective query, making this function unnecessary.

Global bind_selector_query (gpointer backend_data, const gchar *namespace, bson_iter_t *iter, JSqlStatement *statement, GHashTable *schema, GError **error)
need to change this one for joins
Global build_query_condition_part (gpointer backend_data, JSqlBatch *batch, bson_iter_t *iter, GString *sql, JDBSelectorMode mode, GArray *arr_types_in, GHashTable *schema, GError **error)
need to change this one for joins
Global H5VL_julea_db_attr_init (hid_t vipl_id)
Use same key type for every db backend to remove get for every new schema.
Global H5VL_julea_db_dataset_get (void *obj, H5VL_dataset_get_args_t *args, hid_t dxpl_id, void **req)

modify when we support different access and create property lists

modify when we support different access and create property lists

Global H5VL_julea_db_dataset_init (hid_t vipl_id)
Use same key type for every db backend to remove get for every new schema.
Global H5VL_julea_db_dataset_read (size_t count, void *dset[], hid_t mem_type_id[], hid_t mem_space_id[], hid_t file_space_id[], hid_t dxpl_id, void *buf[], void **req)

support multi-write

Should we support multiple dset?

Global H5VL_julea_db_dataset_write (size_t count, void *dset[], hid_t mem_type_id[], hid_t mem_space_id[], hid_t file_space_id[], hid_t dxpl_id, const void *buf[], void **req)

support multi-write

support multi-write

Global H5VL_julea_db_datatype_init (hid_t vipl_id)
Use same key type for every db backend to remove get for every new schema.
Global H5VL_julea_db_file_init (hid_t vipl_id)
Use same key type for every db backend to remove get for every new schema.
Global H5VL_julea_db_group_init (hid_t vipl_id)
Use same key type for every db backend to remove get for every new schema.
Global H5VL_julea_db_link_get (void *obj, const H5VL_loc_params_t *loc_params, H5VL_link_get_args_t *args, hid_t dxpl_id, void **req)
implement link get name and get value
Global H5VL_julea_db_link_get_info_helper (JHDF5Object_t *obj, const H5VL_loc_params_t *loc_params, H5L_info2_t *info_out)
needs to be changed when other link types are implemented
Global H5VL_julea_db_link_init (hid_t vipl_id)
Use same key type for every db backend to remove get for every new schema.
Global H5VL_julea_db_link_iterate_helper (JHDF5Object_t *object, hbool_t recursive, gboolean attr, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx_p, JHDF5Iterate_Func_t op, void *op_data)

handle index, iter order and interruption

needs to be touched when other link types are implemented

generate attribute info struct

Global H5VL_julea_db_link_specific (void *obj, const H5VL_loc_params_t *loc_params, H5VL_link_specific_args_t *args, hid_t dxpl_id, void **req)
implement link delete
Global H5VL_julea_db_object_open (void *obj, const H5VL_loc_params_t *loc_params, H5I_type_t *opened_type, hid_t dxpl, void **req)
implement when committed datatypes are supported
Global H5VL_julea_db_space_init (hid_t vipl_id)

Use same key type for every db backend to remove get for every new schema.

Use same key type for every db backend to remove get for every new schema.

Global j_backend_operation_unwrap_db_query (JBackend *, gpointer, JBackendOperation *)
clean up
Global j_bson_array_generate_key (guint32 index, const char **key, char *buf, guint buf_length, GError **error)
does more or less the same as j_helper_get_number_string
Global j_configuration_new_for_data (GKeyFile *key_file)
check value ranges (max_operation_size, port, max_connections, stripe_size)
Global j_db_schema_new (gchar const *namespace, gchar const *name, GError **error)
since schema->bson is used as the out_param in j_db_internal_schema_get, the schema passed to the backend's schema_get is initialized if and only if the backend runs on the client
Global j_distributed_object_create (JDistributedObject *object, JBatch *batch)
key = index + namespace
Global j_hdf5_set_semantics (JSemantics *semantics)
implement this
Global j_helper_atomic_add (guint64 volatile *ptr, guint64 val)
check C11 atomic_fetch_add
Global j_helper_get_number_string (gchar *string, guint32 length, guint32 number)
improve
Global j_helper_set_cork (GSocketConnection *connection, gboolean enable)
get rid of GSocketConnection
Global j_helper_set_nodelay (GSocketConnection *connection, gboolean enable)
get rid of GSocketConnection
Global j_helper_str_replace (gchar const *str, gchar const *old, gchar const *new)
consider using g_string_replace for GLib >= 2.68
Global j_item_get_status (JItem *item, JBatch *batch)
check j_item_get_status_exec
Global j_item_write (JItem *item, gconstpointer data, guint64 length, guint64 offset, guint64 *bytes_written, JBatch *batch)
see j_item_write_exec
Global j_kv_iterator_new (gchar const *namespace, gchar const *prefix)
still necessary?
Global j_kv_iterator_new_for_index (guint32 index, gchar const *namespace, gchar const *prefix)
still necessary?
Global j_kv_put (JKV *kv, gpointer value, guint32 value_len, GDestroyNotify value_destroy, JBatch *batch)
key = index + namespace
Global j_network_connection_fini (JNetworkConnection *connection)
params
Global j_network_connection_init_client (JConfiguration *configuration, JBackendType backend, guint index)
clean up connection
Global j_network_connection_init_server (JNetworkFabric *fabric, GSocketConnection *gconnection)
clean up connection
Global j_network_connection_rma_read (JNetworkConnection *connection, JNetworkConnectionMemoryID const *memory_id, gpointer data)

evaluate: only wait for partcial finished jobs

static? thread-safety

evaluate if paralisation possible

Global j_network_connection_send (JNetworkConnection *connection, gpointer data, gsize length)

feedback if message was injected

make data a gconstpointer if possible

Global j_network_connection_wait_for_completion (JNetworkConnection *connection)
params
Global j_network_fabric_init_server (JConfiguration *configuration)

clean up fabric

allow setting provider

deduplicate FI_VERSION and hints initialization

Global j_object_create (JObject *object, JBatch *batch)
key = index + namespace
Global j_object_iterator_new (gchar const *namespace, gchar const *prefix)

j_backend_object_get_all(iterator->object_backend, namespace, &(iterator->cursor));

j_backend_object_get_by_prefix(iterator->object_backend, namespace, prefix, &(iterator->cursor));

Global j_object_iterator_new_for_index (guint32 index, gchar const *namespace, gchar const *prefix)

still necessary?

j_backend_object_get_by_prefix(iterator->object_backend, namespace, prefix, &(iterator->cursor));

j_backend_object_get_all(iterator->object_backend, namespace, &(iterator->cursor));

Global j_object_iterator_next (JObjectIterator *iterator)
ret = j_backend_object_iterate(iterator->object_backend, iterator->cursor, &(iterator->key), &(iterator->value), &(iterator->len));
Global j_operation_cache_add (JBatch *batch)

never cleared

Global J_SEMANTICS_ATOMICITY_BATCH
Generalize to complete batch instead of same lists.
Global J_SEMANTICS_ATOMICITY_NONE
Currently unused. Interesting when other backends support transactions.
Global j_trace_enter (gchar const *name, gchar const *format,...) G_GNUC_PRINTF(2
also blacklist nested functions
Global j_trace_leave (JTrace *trace)
Global JBackendBSONError
does it make sense to report these errors?
Class JBackendOperation
this also needs to be allocated with alignment but appears to be large enough to the default allocator does the right thing
Global JBackendOperationParam::bson_initialized
this belongs to the bson member but is here for alignment purposes
Module JNetwork

update to JULEA style

update to JULEA style

Global JULEA_HDF5_DB_NAMESPACE
add documentation
Global sql_generic_init (JSQLSpecifics *specifics)
figure out whether we should add an index instead
Global sql_generic_iterate (gpointer backend_data, gpointer _iterator, bson_t *query_result, GError **error)
Backend specific quotes need to be removed. There should be a better solution.
Global sql_generic_schema_create (gpointer backend_data, gpointer _batch, gchar const *name, bson_t const *schema, GError **error)
IDs will allways be casted to an unsigned 64-bit integer, so it's safe to change this in the client as well