#include "bpp_tree_handler.h"
Description
The handler for a disk-backed B+ Tree.
- Copyright
- Copyright 2017 The University of British Columbia, IonDB Project Contributors (see AUTHORS.md)
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- 1.Redistributions of source code must retain the above copyright notice,
- this list of conditions and the following disclaimer.
- 2.Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
- 3.Neither the name of the copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software without specific prior written permission.
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Definition in file bpp_tree_handler.c.
Function Documentation
ion_err_t bpptree_close_dictionary | ( | ion_dictionary_t * | dictionary | ) |
Closes a BppTree instance of a dictionary.
- Parameters
-
dictionary A pointer to the specific dictionary instance to be closed.
- Returns
- The status of closing the dictionary.
Definition at line 290 of file bpp_tree_handler.c.
ion_err_t bpptree_create_dictionary | ( | ion_dictionary_id_t | id, |
ion_key_type_t | key_type, | ||
ion_key_size_t | key_size, | ||
ion_value_size_t | value_size, | ||
ion_dictionary_size_t | dictionary_size, | ||
ion_dictionary_compare_t | compare, | ||
ion_dictionary_handler_t * | handler, | ||
ion_dictionary_t * | dictionary | ||
) |
Creates an instance of a dictionary.
Creates as instance of a dictionary given a key_size
and value_size
, in bytes. The dictionary_size
parameter is not used for this implementation, as there is no size bound.
- Parameters
-
id ID of a dictionary that's given to us. key_type The key category given to us. key_size The size of the key in bytes. value_size The size of the value in bytes. dictionary_size The size of the hashmap in discrete units compare Function pointer for the comparison function for the dictionary. handler THe handler for the specific dictionary being created. dictionary The pointer declared by the caller that will reference the instance of the dictionary created.
- Returns
- The status of the creation of the dictionary.
Definition at line 73 of file bpp_tree_handler.c.
ion_status_t bpptree_delete | ( | ion_dictionary_t * | dictionary, |
ion_key_t | key | ||
) |
Deletes the key
and associated value from the dictionary instance.
- Parameters
-
dictionary The instance of the dictionary to delete from. key The key that is to be deleted.
- Returns
- The status of the deletion
Definition at line 256 of file bpp_tree_handler.c.
ion_err_t bpptree_delete_dictionary | ( | ion_dictionary_t * | dictionary | ) |
Deletes an instance of the dictionary and associated data.
- Parameters
-
dictionary The instance of the dictionary to delete.
- Returns
- The status of the dictionary deletion.
Definition at line 317 of file bpp_tree_handler.c.
void bpptree_destroy_cursor | ( | ion_dict_cursor_t ** | cursor | ) |
Destroys the cursor.
Destroys the cursor when the user is finished with it. The destroy function will free up internally allocated memory as well as freeing up any reference to the cursor itself. Cursor pointers will be set to NULL as per ION_DB specification for de-allocated pointers.
- Parameters
-
cursor pointer to cursor.
Definition at line 516 of file bpp_tree_handler.c.
ion_err_t bpptree_destroy_dictionary | ( | ion_dictionary_id_t | id | ) |
Deletes a closed instance of the dictionary and associated data.
- Parameters
-
id The identifier identifying the dictionary to delete.
- Returns
- The status of the dictionary deletion.
Definition at line 352 of file bpp_tree_handler.c.
ion_err_t bpptree_find | ( | ion_dictionary_t * | dictionary, |
ion_predicate_t * | predicate, | ||
ion_dict_cursor_t ** | cursor | ||
) |
Finds multiple instances of a keys that satisfy the provided predicate in the dictionary.
Generates a cursor that allows the traversal of items where the items key satisfies the predicate
(if the underlying implementation allows it).
- Parameters
-
dictionary The instance of the dictionary to search. predicate The predicate to be used as the condition for matching. cursor The pointer to a cursor which is caller declared but callee is responsible for populating.
- Returns
- The status of the operation.
Definition at line 544 of file bpp_tree_handler.c.
ion_status_t bpptree_get | ( | ion_dictionary_t * | dictionary, |
ion_key_t | key, | ||
ion_value_t | value | ||
) |
Queries a dictionary instance for the given key
and returns the associated value
.
Queries a dictionary instance for the given key
and returns the associated value
. If the write_concern
is set to wc_insert_unique then if the key
exists already, an error will be generated as duplicate keys are prevented. If the write_concern
is set to wc_update, the updates are allowed. In this case, if the key
exists in the hashmap, the value
will be updated. If the key
does not exist, then a new item will be inserted to hashmap.
- Parameters
-
dictionary The instance of the dictionary to query. key The key to search for. value A pointer that is used to return the value associated with the provided key. The function will malloc memory for the value and it is up to the consumer the free the associated memory.
- Returns
- The status of the query.
Definition at line 217 of file bpp_tree_handler.c.
void bpptree_get_filename | ( | ion_dictionary_id_t | id, |
char * | str | ||
) |
void bpptree_init | ( | ion_dictionary_handler_t * | handler | ) |
Registers a specific handler for a dictionary instance.
Registers functions for handlers. This only needs to be called once for each type of dictionary that is present.
- Parameters
-
handler The handler for the dictionary instance that is to be initialized.
Definition at line 711 of file bpp_tree_handler.c.
ion_status_t bpptree_insert | ( | ion_dictionary_t * | dictionary, |
ion_key_t | key, | ||
ion_value_t | value | ||
) |
Inserts a key
and value
into the dictionary.
- Parameters
-
dictionary The dictionary instance to insert the value into. key The key to use. value The value to use.
- Returns
- The status on the insertion of the record.
Definition at line 152 of file bpp_tree_handler.c.
ion_cursor_status_t bpptree_next | ( | ion_dict_cursor_t * | cursor, |
ion_record_t * | record | ||
) |
Next function to query and retrieve the next <K,V> that stratifies the predicate of the cursor.
- Parameters
-
cursor The cursor to iterate over the results. record The structure used to hold the returned key value pair. This must be properly initialized and allocated by the user.
- Returns
- The status of the cursor.
Definition at line 424 of file bpp_tree_handler.c.
ion_err_t bpptree_open_dictionary | ( | ion_dictionary_handler_t * | handler, |
ion_dictionary_t * | dictionary, | ||
ion_dictionary_config_info_t * | config, | ||
ion_dictionary_compare_t | compare | ||
) |
Opens a specific BppTree instance of a dictionary.
- Parameters
-
handler A pointer to the handler for the specific dictionary being opened. dictionary The pointer declared by the caller that will reference the instance of the dictionary opened. config The configuration info of the specific dictionary to be opened. compare Function pointer for the comparison function for the dictionary.
- Returns
- The status of opening the dictionary.
Definition at line 701 of file bpp_tree_handler.c.
ion_status_t bpptree_update | ( | ion_dictionary_t * | dictionary, |
ion_key_t | key, | ||
ion_value_t | value | ||
) |
Updates the value for a given key.
Updates the value for a given key
. If the key does not currently exist in the hashmap, it will be created and the value sorted.
- Parameters
-
dictionary The instance of the dictionary to be updated. key The key that is to be updated. value The value that is to be updated.
- Returns
- The status of the update.
Definition at line 386 of file bpp_tree_handler.c.