diff options
author | Sean Bright <sean.bright@gmail.com> | 2017-12-07 15:19:40 -0500 |
---|---|---|
committer | Sean Bright <sean.bright@gmail.com> | 2017-12-10 12:41:51 -0600 |
commit | a4b291029fc79b143a94bfbda20a32ef52321539 (patch) | |
tree | fca7fc43bac1885c6d7006a323da960a15d22e72 /include | |
parent | 54a86779a3d1cc2a1c859d76180f155865713bb5 (diff) |
astdb: Improve prefix searches in astdb
Using the LIKE operator requires a full table scan of 'astdb', whereas a
comparison operation is able to use the primary key index.
This patch adds a new function to the AstDB API for quick prefix matches
and updates res_sorcery_astdb to utilize it. This showed substantial
performance improvement in my test environment.
Related to ASTERISK~26806, but does not completely resolve it.
Change-Id: I7d37f9ba2aea139dabf2ca72d31fbe34bd9b2fa1
Diffstat (limited to 'include')
-rw-r--r-- | include/asterisk/astdb.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/include/asterisk/astdb.h b/include/asterisk/astdb.h index 8a870ae83..383864baf 100644 --- a/include/asterisk/astdb.h +++ b/include/asterisk/astdb.h @@ -83,6 +83,16 @@ int ast_db_deltree(const char *family, const char *keytree); */ struct ast_db_entry *ast_db_gettree(const char *family, const char *keytree); +/*! + * \brief Get a list of values with the given key prefix + * + * \param family The family to search under + * \param key_prefix The key prefix to search under + * + * \retval NULL An error occurred + */ +struct ast_db_entry *ast_db_gettree_by_prefix(const char *family, const char *key_prefix); + /*! \brief Free structure created by ast_db_gettree() */ void ast_db_freetree(struct ast_db_entry *entry); |