From 7059b001adb2583e1b6b2bb667d538df2fb3709b Mon Sep 17 00:00:00 2001 From: "Michael L. Young" Date: Thu, 24 Jul 2014 21:01:37 +0000 Subject: [PATCH] core/db: Revert Patch Added In Attempt To Improve I/O Performance Reverting the patch since it was causing a regression and after fixing the regression, there were no performance gains. At least based on my method for measurement. ASTERISK-24050 Review: https://reviewboard.asterisk.org/r/3841/ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@419504 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- include/asterisk/astdb.h | 9 +-------- main/db.c | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/include/asterisk/astdb.h b/include/asterisk/astdb.h index 1eff7908c1..8a870ae83c 100644 --- a/include/asterisk/astdb.h +++ b/include/asterisk/astdb.h @@ -50,14 +50,7 @@ int ast_db_get(const char *family, const char *key, char *value, int valuelen); */ int ast_db_get_allocated(const char *family, const char *key, char **out); -/*! \brief Store value addressed by family/key - * - * Try to insert a row first. If a row already exists with the given key - * we will then perform an update on this row. - * - * The attempt here is to increase disk I/O performance by not deleting an existing - * row and then inserting a new row when one already exists. - */ +/*! \brief Store value addressed by family/key */ int ast_db_put(const char *family, const char *key, const char *value); /*! \brief Delete entry in astdb */ diff --git a/main/db.c b/main/db.c index 80af29f750..5a0f174343 100644 --- a/main/db.c +++ b/main/db.c @@ -119,7 +119,7 @@ static void db_sync(void); #define DEFINE_SQL_STATEMENT(stmt,sql) static sqlite3_stmt *stmt; \ const char stmt##_sql[] = sql; -DEFINE_SQL_STATEMENT(put_stmt, "INSERT OR IGNORE INTO astdb (key, value) VALUES (?1, ?2); UPDATE astdb SET value=?2 WHERE changes()=0 AND key=?1") +DEFINE_SQL_STATEMENT(put_stmt, "INSERT OR REPLACE INTO astdb (key, value) VALUES (?, ?)") DEFINE_SQL_STATEMENT(get_stmt, "SELECT value FROM astdb WHERE key=?") DEFINE_SQL_STATEMENT(del_stmt, "DELETE FROM astdb WHERE key=?") DEFINE_SQL_STATEMENT(deltree_stmt, "DELETE FROM astdb WHERE key || '/' LIKE ? || '/' || '%'")