Index: main/db.c =================================================================== --- main/db.c (revision 345639) +++ main/db.c (working copy) @@ -115,13 +115,13 @@ const char stmt##_sql[] = sql; 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 ? || '/' || '%'") +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 = ?) OR (key LIKE ? || '/%')") DEFINE_SQL_STATEMENT(deltree_all_stmt, "DELETE FROM astdb") -DEFINE_SQL_STATEMENT(gettree_stmt, "SELECT key, value FROM astdb WHERE key LIKE ? || '/' || '%'") +DEFINE_SQL_STATEMENT(gettree_stmt, "SELECT key, value FROM astdb WHERE (key = ?) OR (key LIKE ? || '/%')") DEFINE_SQL_STATEMENT(gettree_all_stmt, "SELECT key, value FROM astdb") -DEFINE_SQL_STATEMENT(showkey_stmt, "SELECT key, value FROM astdb WHERE key LIKE '%' || '/' || ?") +DEFINE_SQL_STATEMENT(showkey_stmt, "SELECT key, value FROM astdb WHERE key LIKE '%/' || ?") DEFINE_SQL_STATEMENT(create_astdb_stmt, "CREATE TABLE IF NOT EXISTS astdb(key VARCHAR(256), value VARCHAR(256), PRIMARY KEY(key))") static int init_stmt(sqlite3_stmt **stmt, const char *sql, size_t len) @@ -384,7 +384,9 @@ } ast_mutex_lock(&dblock); - if (!ast_strlen_zero(prefix) && (sqlite3_bind_text(stmt, 1, prefix, -1, SQLITE_STATIC) != SQLITE_OK)) { + if (!ast_strlen_zero(prefix) && + (sqlite3_bind_text(stmt, 1, prefix, -1, SQLITE_STATIC) != SQLITE_OK || + sqlite3_bind_text(stmt, 2, prefix, -1, SQLITE_STATIC) != SQLITE_OK)) { ast_log(LOG_WARNING, "Could bind %s to stmt: %s\n", prefix, sqlite3_errmsg(astdb)); res = -1; } else if (sqlite3_step(stmt) != SQLITE_DONE) { @@ -419,7 +421,9 @@ } ast_mutex_lock(&dblock); - if (!ast_strlen_zero(prefix) && (sqlite3_bind_text(stmt, 1, prefix, -1, SQLITE_STATIC) != SQLITE_OK)) { + if (!ast_strlen_zero(prefix) && + (sqlite3_bind_text(stmt, 1, prefix, -1, SQLITE_STATIC) != SQLITE_OK || + sqlite3_bind_text(stmt, 2, prefix, -1, SQLITE_STATIC) != SQLITE_OK)) { ast_log(LOG_WARNING, "Could bind %s to stmt: %s\n", prefix, sqlite3_errmsg(astdb)); sqlite3_reset(stmt); ast_mutex_unlock(&dblock); @@ -611,7 +615,9 @@ } ast_mutex_lock(&dblock); - if (!ast_strlen_zero(prefix) && (sqlite3_bind_text(stmt, 1, prefix, -1, SQLITE_STATIC) != SQLITE_OK)) { + if (!ast_strlen_zero(prefix) && + (sqlite3_bind_text(stmt, 1, prefix, -1, SQLITE_STATIC) != SQLITE_OK || + sqlite3_bind_text(stmt, 2, prefix, -1, SQLITE_STATIC) != SQLITE_OK)) { ast_log(LOG_WARNING, "Could bind %s to stmt: %s\n", prefix, sqlite3_errmsg(astdb)); sqlite3_reset(stmt); ast_mutex_unlock(&dblock);