diff --git a/include/sqlite3db.h b/include/sqlite3db.h index 60e51b61c..2d4707f86 100644 --- a/include/sqlite3db.h +++ b/include/sqlite3db.h @@ -141,6 +141,7 @@ class SQLite3DB { int open(char *, int); bool execute(const char *); bool execute_statement(const char *, char **, int *, int *, SQLite3_result **); + int return_one_int(const char *); int check_table_structure(char *table_name, char *table_def); bool build_table(char *table_name, char *table_def, bool dropit); bool check_and_build_table(char *table_name, char *table_def); diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index 0732df751..b673e94b9 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -2096,8 +2096,6 @@ void ProxySQL_Admin::flush_mysql_query_rules__from_memory_to_disk() { admindb->execute("PRAGMA foreign_keys = ON"); } - - void ProxySQL_Admin::__attach_db(SQLite3DB *db1, SQLite3DB *db2, char *alias) { const char *a="ATTACH DATABASE '%s' AS %s"; int l=strlen(a)+strlen(db2->get_url())+strlen(alias)+5; diff --git a/lib/sqlite3db.cpp b/lib/sqlite3db.cpp index fe2525d0e..0b7f7d8fb 100644 --- a/lib/sqlite3db.cpp +++ b/lib/sqlite3db.cpp @@ -92,6 +92,26 @@ __exit_execute_statement: return ret; } +int SQLite3DB::return_one_int(const char *str) { + char *error=NULL; + int cols=0; + int affected_rows=0; + int ret=0; + SQLite3_result *resultset=NULL; + execute_statement(str, &error , &cols , &affected_rows , &resultset); + if (error) { + proxy_error("Error on %s : %s\n", str, error); + free(error); + } else { + for (std::vector::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) { + SQLite3_row *r=*it; + ret=atoi(r->fields[0]); + break; + } + } + if (resultset) delete resultset; + return ret; +} int SQLite3DB::check_table_structure(char *table_name, char *table_def) { const char *q1="SELECT COUNT(*) FROM sqlite_master WHERE type=\"table\" AND name=\"%s\" AND sql=\"%s\"";