diff --git a/include/sqlite3db.h b/include/sqlite3db.h index adbe92d2d..319e5e33b 100644 --- a/include/sqlite3db.h +++ b/include/sqlite3db.h @@ -224,6 +224,7 @@ class SQLite3DB { 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); + int prepare_v2(const char *, sqlite3_stmt **); }; #endif /* __CLASS_SQLITE3DB_H */ diff --git a/lib/MySQL_HostGroups_Manager.cpp b/lib/MySQL_HostGroups_Manager.cpp index d22cab58c..2c31dda6f 100644 --- a/lib/MySQL_HostGroups_Manager.cpp +++ b/lib/MySQL_HostGroups_Manager.cpp @@ -1079,9 +1079,10 @@ bool MySQL_HostGroups_Manager::server_add(unsigned int hid, char *add, uint16_t proxy_debug(PROXY_DEBUG_MYSQL_CONNPOOL, 7, "Adding in mysql_servers_incoming server %s:%d in hostgroup %u with weight %u , status %u, %s compression, max_connections %d, max_replication_lag %u, use_ssl=%u, max_latency_ms=%u\n", add,p,hid,_weight,status, (_comp ? "with" : "without") /*, _charset */ , _max_connections, _max_replication_lag, _use_ssl, _max_latency_ms); int rc; sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=mydb->get_db(); + //sqlite3 *mydb3=mydb->get_db(); char *query=(char *)"INSERT INTO mysql_servers_incoming VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)"; - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = mydb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); rc=sqlite3_bind_int64(statement, 1, hid); assert(rc==SQLITE_OK); rc=sqlite3_bind_text(statement, 2, add, -1, SQLITE_TRANSIENT); assert(rc==SQLITE_OK); @@ -1112,12 +1113,14 @@ int MySQL_HostGroups_Manager::servers_add(SQLite3_result *resultset) { mydb->execute("DELETE FROM mysql_servers_incoming"); sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=mydb->get_db(); + //sqlite3 *mydb3=mydb->get_db(); char *query1=(char *)"INSERT INTO mysql_servers_incoming VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)"; char *query32=(char *)"INSERT INTO mysql_servers_incoming VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12), (?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24), (?25, ?26, ?27, ?28, ?29, ?30, ?31, ?32, ?33, ?34, ?35, ?36), (?37, ?38, ?39, ?40, ?41, ?42, ?43, ?44, ?45, ?46, ?47, ?48), (?49, ?50, ?51, ?52, ?53, ?54, ?55, ?56, ?57, ?58, ?59, ?60), (?61, ?62, ?63, ?64, ?65, ?66, ?67, ?68, ?69, ?70, ?71, ?72), (?73, ?74, ?75, ?76, ?77, ?78, ?79, ?80, ?81, ?82, ?83, ?84), (?85, ?86, ?87, ?88, ?89, ?90, ?91, ?92, ?93, ?94, ?95, ?96), (?97, ?98, ?99, ?100, ?101, ?102, ?103, ?104, ?105, ?106, ?107, ?108), (?109, ?110, ?111, ?112, ?113, ?114, ?115, ?116, ?117, ?118, ?119, ?120), (?121, ?122, ?123, ?124, ?125, ?126, ?127, ?128, ?129, ?130, ?131, ?132), (?133, ?134, ?135, ?136, ?137, ?138, ?139, ?140, ?141, ?142, ?143, ?144), (?145, ?146, ?147, ?148, ?149, ?150, ?151, ?152, ?153, ?154, ?155, ?156), (?157, ?158, ?159, ?160, ?161, ?162, ?163, ?164, ?165, ?166, ?167, ?168), (?169, ?170, ?171, ?172, ?173, ?174, ?175, ?176, ?177, ?178, ?179, ?180), (?181, ?182, ?183, ?184, ?185, ?186, ?187, ?188, ?189, ?190, ?191, ?192), (?193, ?194, ?195, ?196, ?197, ?198, ?199, ?200, ?201, ?202, ?203, ?204), (?205, ?206, ?207, ?208, ?209, ?210, ?211, ?212, ?213, ?214, ?215, ?216), (?217, ?218, ?219, ?220, ?221, ?222, ?223, ?224, ?225, ?226, ?227, ?228), (?229, ?230, ?231, ?232, ?233, ?234, ?235, ?236, ?237, ?238, ?239, ?240), (?241, ?242, ?243, ?244, ?245, ?246, ?247, ?248, ?249, ?250, ?251, ?252), (?253, ?254, ?255, ?256, ?257, ?258, ?259, ?260, ?261, ?262, ?263, ?264), (?265, ?266, ?267, ?268, ?269, ?270, ?271, ?272, ?273, ?274, ?275, ?276), (?277, ?278, ?279, ?280, ?281, ?282, ?283, ?284, ?285, ?286, ?287, ?288), (?289, ?290, ?291, ?292, ?293, ?294, ?295, ?296, ?297, ?298, ?299, ?300), (?301, ?302, ?303, ?304, ?305, ?306, ?307, ?308, ?309, ?310, ?311, ?312), (?313, ?314, ?315, ?316, ?317, ?318, ?319, ?320, ?321, ?322, ?323, ?324), (?325, ?326, ?327, ?328, ?329, ?330, ?331, ?332, ?333, ?334, ?335, ?336), (?337, ?338, ?339, ?340, ?341, ?342, ?343, ?344, ?345, ?346, ?347, ?348), (?349, ?350, ?351, ?352, ?353, ?354, ?355, ?356, ?357, ?358, ?359, ?360), (?361, ?362, ?363, ?364, ?365, ?366, ?367, ?368, ?369, ?370, ?371, ?372), (?373, ?374, ?375, ?376, ?377, ?378, ?379, ?380, ?381, ?382, ?383, ?384)"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = mydb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = mydb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); MySerStatus status1=MYSQL_SERVER_STATUS_ONLINE; int row_idx=0; @@ -1269,12 +1272,14 @@ bool MySQL_HostGroups_Manager::commit() { int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement2=NULL; - sqlite3 *mydb3=mydb->get_db(); + //sqlite3 *mydb3=mydb->get_db(); char *query1=(char *)"UPDATE mysql_servers SET mem_pointer = ?1 WHERE hostgroup_id = ?2 AND hostname = ?3 AND port = ?4"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = mydb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); char *query2=(char *)"UPDATE mysql_servers SET weight = ?1 , status = ?2 , compression = ?3 , max_connections = ?4 , max_replication_lag = ?5 , use_ssl = ?6 , max_latency_ms = ?7 , comment = ?8 , gtid_port = ?9 WHERE hostgroup_id = ?10 AND hostname = ?11 AND port = ?12"; - rc=sqlite3_prepare_v2(mydb3, query2, -1, &statement2, 0); + //rc=sqlite3_prepare_v2(mydb3, query2, -1, &statement2, 0); + rc = mydb->prepare_v2(query2, &statement2); assert(rc==SQLITE_OK); for (std::vector::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) { @@ -1712,12 +1717,14 @@ void MySQL_HostGroups_Manager::generate_mysql_servers_table(int *_onlyhg) { sqlite3_stmt *statement32=NULL; PtrArray *lst=new PtrArray(); - sqlite3 *mydb3=mydb->get_db(); + //sqlite3 *mydb3=mydb->get_db(); char *query1=(char *)"INSERT INTO mysql_servers VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = mydb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); char *query32=(char *)"INSERT INTO mysql_servers VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13), (?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26), (?27, ?28, ?29, ?30, ?31, ?32, ?33, ?34, ?35, ?36, ?37, ?38, ?39), (?40, ?41, ?42, ?43, ?44, ?45, ?46, ?47, ?48, ?49, ?50, ?51, ?52), (?53, ?54, ?55, ?56, ?57, ?58, ?59, ?60, ?61, ?62, ?63, ?64, ?65), (?66, ?67, ?68, ?69, ?70, ?71, ?72, ?73, ?74, ?75, ?76, ?77, ?78), (?79, ?80, ?81, ?82, ?83, ?84, ?85, ?86, ?87, ?88, ?89, ?90, ?91), (?92, ?93, ?94, ?95, ?96, ?97, ?98, ?99, ?100, ?101, ?102, ?103, ?104), (?105, ?106, ?107, ?108, ?109, ?110, ?111, ?112, ?113, ?114, ?115, ?116, ?117), (?118, ?119, ?120, ?121, ?122, ?123, ?124, ?125, ?126, ?127, ?128, ?129, ?130), (?131, ?132, ?133, ?134, ?135, ?136, ?137, ?138, ?139, ?140, ?141, ?142, ?143), (?144, ?145, ?146, ?147, ?148, ?149, ?150, ?151, ?152, ?153, ?154, ?155, ?156), (?157, ?158, ?159, ?160, ?161, ?162, ?163, ?164, ?165, ?166, ?167, ?168, ?169), (?170, ?171, ?172, ?173, ?174, ?175, ?176, ?177, ?178, ?179, ?180, ?181, ?182), (?183, ?184, ?185, ?186, ?187, ?188, ?189, ?190, ?191, ?192, ?193, ?194, ?195), (?196, ?197, ?198, ?199, ?200, ?201, ?202, ?203, ?204, ?205, ?206, ?207, ?208), (?209, ?210, ?211, ?212, ?213, ?214, ?215, ?216, ?217, ?218, ?219, ?220, ?221), (?222, ?223, ?224, ?225, ?226, ?227, ?228, ?229, ?230, ?231, ?232, ?233, ?234), (?235, ?236, ?237, ?238, ?239, ?240, ?241, ?242, ?243, ?244, ?245, ?246, ?247), (?248, ?249, ?250, ?251, ?252, ?253, ?254, ?255, ?256, ?257, ?258, ?259, ?260), (?261, ?262, ?263, ?264, ?265, ?266, ?267, ?268, ?269, ?270, ?271, ?272, ?273), (?274, ?275, ?276, ?277, ?278, ?279, ?280, ?281, ?282, ?283, ?284, ?285, ?286), (?287, ?288, ?289, ?290, ?291, ?292, ?293, ?294, ?295, ?296, ?297, ?298, ?299), (?300, ?301, ?302, ?303, ?304, ?305, ?306, ?307, ?308, ?309, ?310, ?311, ?312), (?313, ?314, ?315, ?316, ?317, ?318, ?319, ?320, ?321, ?322, ?323, ?324, ?325), (?326, ?327, ?328, ?329, ?330, ?331, ?332, ?333, ?334, ?335, ?336, ?337, ?338), (?339, ?340, ?341, ?342, ?343, ?344, ?345, ?346, ?347, ?348, ?349, ?350, ?351), (?352, ?353, ?354, ?355, ?356, ?357, ?358, ?359, ?360, ?361, ?362, ?363, ?364), (?365, ?366, ?367, ?368, ?369, ?370, ?371, ?372, ?373, ?374, ?375, ?376, ?377), (?378, ?379, ?380, ?381, ?382, ?383, ?384, ?385, ?386, ?387, ?388, ?389, ?390), (?391, ?392, ?393, ?394, ?395, ?396, ?397, ?398, ?399, ?400, ?401, ?402, ?403), (?404, ?405, ?406, ?407, ?408, ?409, ?410, ?411, ?412, ?413, ?414, ?415, ?416)"; - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = mydb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); if (mysql_thread___hostgroup_manager_verbose) { @@ -1880,9 +1887,10 @@ void MySQL_HostGroups_Manager::generate_mysql_group_replication_hostgroups_table } int rc; sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=mydb->get_db(); + //sqlite3 *mydb3=mydb->get_db(); char *query=(char *)"INSERT INTO mysql_group_replication_hostgroups(writer_hostgroup,backup_writer_hostgroup,reader_hostgroup,offline_hostgroup,active,max_writers,writer_is_also_reader,max_transactions_behind,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = mydb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); proxy_info("New mysql_group_replication_hostgroups table\n"); pthread_mutex_lock(&Group_Replication_Info_mutex); @@ -1975,9 +1983,10 @@ void MySQL_HostGroups_Manager::generate_mysql_galera_hostgroups_table() { } int rc; sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=mydb->get_db(); + //sqlite3 *mydb3=mydb->get_db(); char *query=(char *)"INSERT INTO mysql_galera_hostgroups(writer_hostgroup,backup_writer_hostgroup,reader_hostgroup,offline_hostgroup,active,max_writers,writer_is_also_reader,max_transactions_behind,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = mydb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); proxy_info("New mysql_galera_hostgroups table\n"); pthread_mutex_lock(&Galera_Info_mutex); @@ -5222,9 +5231,10 @@ void MySQL_HostGroups_Manager::generate_mysql_aws_aurora_hostgroups_table() { } int rc; sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=mydb->get_db(); + //sqlite3 *mydb3=mydb->get_db(); char *query=(char *)"INSERT INTO mysql_aws_aurora_hostgroups(writer_hostgroup,reader_hostgroup,active,aurora_port,endpoint_address,max_lag_ms,check_interval_ms,check_timeout_ms,writer_is_also_reader,new_reader_weight,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)"; - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = mydb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); proxy_info("New mysql_aws_aurora_hostgroups table\n"); pthread_mutex_lock(&AWS_Aurora_Info_mutex); diff --git a/lib/MySQL_Monitor.cpp b/lib/MySQL_Monitor.cpp index e11245801..3ec38c44d 100644 --- a/lib/MySQL_Monitor.cpp +++ b/lib/MySQL_Monitor.cpp @@ -673,11 +673,12 @@ void * monitor_connect_thread(void *arg) { mmsd->t2=monotonic_time(); sqlite3_stmt *statement=NULL; - sqlite3 *mondb=mmsd->mondb->get_db(); + //sqlite3 *mondb=mmsd->mondb->get_db(); int rc; char *query=NULL; query=(char *)"INSERT OR REPLACE INTO mysql_server_connect_log VALUES (?1 , ?2 , ?3 , ?4 , ?5)"; - rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + rc = mmsd->mondb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); rc=sqlite3_bind_text(statement, 1, mmsd->hostname, -1, SQLITE_TRANSIENT); assert(rc==SQLITE_OK); rc=sqlite3_bind_int(statement, 2, mmsd->port); assert(rc==SQLITE_OK); @@ -773,14 +774,15 @@ __exit_monitor_ping_thread: mmsd->t2=monotonic_time(); { sqlite3_stmt *statement=NULL; - sqlite3 *mondb=mmsd->mondb->get_db(); + //sqlite3 *mondb=mmsd->mondb->get_db(); int rc; #ifdef TEST_AURORA // if ((rand() % 10) ==0) { #endif // TEST_AURORA char *query=NULL; query=(char *)"INSERT OR REPLACE INTO mysql_server_ping_log VALUES (?1 , ?2 , ?3 , ?4 , ?5)"; - rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + rc = mmsd->mondb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); rc=sqlite3_bind_text(statement, 1, mmsd->hostname, -1, SQLITE_TRANSIENT); assert(rc==SQLITE_OK); rc=sqlite3_bind_int(statement, 2, mmsd->port); assert(rc==SQLITE_OK); @@ -1018,11 +1020,12 @@ __exit_monitor_read_only_thread: mmsd->t2=monotonic_time(); { sqlite3_stmt *statement=NULL; - sqlite3 *mondb=mmsd->mondb->get_db(); + //sqlite3 *mondb=mmsd->mondb->get_db(); int rc; char *query=NULL; query=(char *)"INSERT OR REPLACE INTO mysql_server_read_only_log VALUES (?1 , ?2 , ?3 , ?4 , ?5 , ?6)"; - rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + rc = mmsd->mondb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); int read_only=1; // as a safety mechanism , read_only=1 is the default rc=sqlite3_bind_text(statement, 1, mmsd->hostname, -1, SQLITE_TRANSIENT); assert(rc==SQLITE_OK); @@ -1938,12 +1941,13 @@ __exit_monitor_replication_lag_thread: mmsd->t2=monotonic_time(); { sqlite3_stmt *statement=NULL; - sqlite3 *mondb=mmsd->mondb->get_db(); + //sqlite3 *mondb=mmsd->mondb->get_db(); int rc; char *query=NULL; query=(char *)"INSERT OR REPLACE INTO mysql_server_replication_lag_log VALUES (?1 , ?2 , ?3 , ?4 , ?5 , ?6)"; - rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + rc = mmsd->mondb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); int repl_lag=-2; rc=sqlite3_bind_text(statement, 1, mmsd->hostname, -1, SQLITE_TRANSIENT); assert(rc==SQLITE_OK); @@ -2156,11 +2160,12 @@ void * MySQL_Monitor::monitor_connect() { __end_monitor_connect_loop: if (mysql_thread___monitor_enabled==true) { sqlite3_stmt *statement=NULL; - sqlite3 *mondb=monitordb->get_db(); + //sqlite3 *mondb=monitordb->get_db(); int rc; char *query=NULL; query=(char *)"DELETE FROM mysql_server_connect_log WHERE time_start_us < ?1"; - rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + rc = monitordb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); if (mysql_thread___monitor_history < mysql_thread___monitor_ping_interval * (mysql_thread___monitor_ping_max_failures + 1 )) { // issue #626 if (mysql_thread___monitor_ping_interval < 3600000) @@ -2273,11 +2278,12 @@ void * MySQL_Monitor::monitor_ping() { __end_monitor_ping_loop: if (mysql_thread___monitor_enabled==true) { sqlite3_stmt *statement=NULL; - sqlite3 *mondb=monitordb->get_db(); + //sqlite3 *mondb=monitordb->get_db(); int rc; char *query=NULL; query=(char *)"DELETE FROM mysql_server_ping_log WHERE time_start_us < ?1"; - rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + rc = monitordb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); if (mysql_thread___monitor_history < mysql_thread___monitor_ping_interval * (mysql_thread___monitor_ping_max_failures + 1 )) { // issue #626 if (mysql_thread___monitor_ping_interval < 3600000) @@ -2555,11 +2561,12 @@ void * MySQL_Monitor::monitor_read_only() { __end_monitor_read_only_loop: if (mysql_thread___monitor_enabled==true) { sqlite3_stmt *statement=NULL; - sqlite3 *mondb=monitordb->get_db(); + //sqlite3 *mondb=monitordb->get_db(); int rc; char *query=NULL; query=(char *)"DELETE FROM mysql_server_read_only_log WHERE time_start_us < ?1"; - rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + rc = monitordb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); if (mysql_thread___monitor_history < mysql_thread___monitor_read_only_interval * (mysql_thread___monitor_read_only_max_timeout_count + 1 )) { // issue #626 if (mysql_thread___monitor_read_only_interval < 3600000) @@ -2887,11 +2894,12 @@ void * MySQL_Monitor::monitor_replication_lag() { __end_monitor_replication_lag_loop: if (mysql_thread___monitor_enabled==true) { sqlite3_stmt *statement=NULL; - sqlite3 *mondb=monitordb->get_db(); + //sqlite3 *mondb=monitordb->get_db(); int rc; char *query=NULL; query=(char *)"DELETE FROM mysql_server_replication_lag_log WHERE time_start_us < ?1"; - rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mondb, query, -1, &statement, 0); + rc = monitordb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); if (mysql_thread___monitor_history < mysql_thread___monitor_ping_interval * (mysql_thread___monitor_ping_max_failures + 1 )) { // issue #626 if (mysql_thread___monitor_ping_interval < 3600000) @@ -3291,14 +3299,15 @@ bool Galera_monitor_node::add_entry(unsigned long long _st, unsigned long long _ } void MySQL_Monitor::populate_monitor_mysql_server_group_replication_log() { - sqlite3 *mondb=monitordb->get_db(); + //sqlite3 *mondb=monitordb->get_db(); int rc; //char *query=NULL; char *query1=NULL; query1=(char *)"INSERT INTO mysql_server_group_replication_log VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)"; sqlite3_stmt *statement1=NULL; pthread_mutex_lock(&GloMyMon->group_replication_mutex); - rc=sqlite3_prepare_v2(mondb, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mondb, query1, -1, &statement1, 0); + rc = monitordb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); monitordb->execute((char *)"DELETE FROM mysql_server_group_replication_log"); std::map::iterator it2; @@ -3331,14 +3340,15 @@ void MySQL_Monitor::populate_monitor_mysql_server_group_replication_log() { } void MySQL_Monitor::populate_monitor_mysql_server_galera_log() { - sqlite3 *mondb=monitordb->get_db(); + //sqlite3 *mondb=monitordb->get_db(); int rc; //char *query=NULL; char *query1=NULL; query1=(char *)"INSERT INTO mysql_server_galera_log VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)"; sqlite3_stmt *statement1=NULL; pthread_mutex_lock(&GloMyMon->galera_mutex); - rc=sqlite3_prepare_v2(mondb, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mondb, query1, -1, &statement1, 0); + rc = monitordb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); monitordb->execute((char *)"DELETE FROM mysql_server_galera_log"); std::map::iterator it2; @@ -3466,7 +3476,7 @@ std::vector * MySQL_Monitor::galera_find_possible_last_nodes(int writer_ } void MySQL_Monitor::populate_monitor_mysql_server_aws_aurora_log() { - sqlite3 *mondb=monitordb->get_db(); + //sqlite3 *mondb=monitordb->get_db(); int rc; //char *query=NULL; char *query1=NULL; @@ -3475,9 +3485,11 @@ void MySQL_Monitor::populate_monitor_mysql_server_aws_aurora_log() { char *query2=NULL; query2=(char *)"INSERT OR IGNORE INTO mysql_server_aws_aurora_log (hostname, port, time_start_us, success_time_us, error) VALUES (?1, ?2, ?3, ?4, ?5)"; sqlite3_stmt *statement2=NULL; - rc=sqlite3_prepare_v2(mondb, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mondb, query1, -1, &statement1, 0); + rc = monitordb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mondb, query2, -1, &statement2, 0); + //rc=sqlite3_prepare_v2(mondb, query2, -1, &statement2, 0); + rc = monitordb->prepare_v2(query2, &statement2); assert(rc==SQLITE_OK); pthread_mutex_lock(&GloMyMon->aws_aurora_mutex); monitordb->execute((char *)"DELETE FROM mysql_server_aws_aurora_log"); @@ -3531,13 +3543,14 @@ void MySQL_Monitor::populate_monitor_mysql_server_aws_aurora_log() { } void MySQL_Monitor::populate_monitor_mysql_server_aws_aurora_check_status() { - sqlite3 *mondb=monitordb->get_db(); + //sqlite3 *mondb=monitordb->get_db(); int rc; //char *query=NULL; char *query1=NULL; query1=(char *)"INSERT OR IGNORE INTO mysql_server_aws_aurora_check_status VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7)"; sqlite3_stmt *statement1=NULL; - rc=sqlite3_prepare_v2(mondb, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mondb, query1, -1, &statement1, 0); + rc = monitordb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); pthread_mutex_lock(&GloMyMon->aws_aurora_mutex); monitordb->execute((char *)"DELETE FROM mysql_server_aws_aurora_check_status"); diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index 5f8dc069d..245c472d6 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -4691,13 +4691,15 @@ void ProxySQL_Admin::flush_mysql_variables___runtime_to_database(SQLite3DB *db, int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement2=NULL; - sqlite3 *mydb3=db->get_db(); - rc=sqlite3_prepare_v2(mydb3, a, -1, &statement1, 0); + //sqlite3 *mydb3=db->get_db(); + //rc=sqlite3_prepare_v2(mydb3, a, -1, &statement1, 0); + rc=db->prepare_v2(a, &statement1); assert(rc==SQLITE_OK); if (runtime) { db->execute("DELETE FROM runtime_global_variables WHERE variable_name LIKE 'mysql-%'"); b=(char *)"INSERT INTO runtime_global_variables(variable_name, variable_value) VALUES(?1, ?2)"; - rc=sqlite3_prepare_v2(mydb3, b, -1, &statement2, 0); + //rc=sqlite3_prepare_v2(mydb3, b, -1, &statement2, 0); + rc=db->prepare_v2(b, &statement2); assert(rc==SQLITE_OK); } GloMTH->wrlock(); @@ -5846,16 +5848,18 @@ void ProxySQL_Admin::stats___mysql_processlist() { sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=statsdb->get_db(); + //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; query1 = (char *)"INSERT OR IGNORE INTO stats_mysql_processlist VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16)"; query32 = (char *)"INSERT OR IGNORE INTO stats_mysql_processlist VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16), (?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26, ?27, ?28, ?29, ?30, ?31, ?32), (?33, ?34, ?35, ?36, ?37, ?38, ?39, ?40, ?41, ?42, ?43, ?44, ?45, ?46, ?47, ?48), (?49, ?50, ?51, ?52, ?53, ?54, ?55, ?56, ?57, ?58, ?59, ?60, ?61, ?62, ?63, ?64), (?65, ?66, ?67, ?68, ?69, ?70, ?71, ?72, ?73, ?74, ?75, ?76, ?77, ?78, ?79, ?80), (?81, ?82, ?83, ?84, ?85, ?86, ?87, ?88, ?89, ?90, ?91, ?92, ?93, ?94, ?95, ?96), (?97, ?98, ?99, ?100, ?101, ?102, ?103, ?104, ?105, ?106, ?107, ?108, ?109, ?110, ?111, ?112), (?113, ?114, ?115, ?116, ?117, ?118, ?119, ?120, ?121, ?122, ?123, ?124, ?125, ?126, ?127, ?128), (?129, ?130, ?131, ?132, ?133, ?134, ?135, ?136, ?137, ?138, ?139, ?140, ?141, ?142, ?143, ?144), (?145, ?146, ?147, ?148, ?149, ?150, ?151, ?152, ?153, ?154, ?155, ?156, ?157, ?158, ?159, ?160), (?161, ?162, ?163, ?164, ?165, ?166, ?167, ?168, ?169, ?170, ?171, ?172, ?173, ?174, ?175, ?176), (?177, ?178, ?179, ?180, ?181, ?182, ?183, ?184, ?185, ?186, ?187, ?188, ?189, ?190, ?191, ?192), (?193, ?194, ?195, ?196, ?197, ?198, ?199, ?200, ?201, ?202, ?203, ?204, ?205, ?206, ?207, ?208), (?209, ?210, ?211, ?212, ?213, ?214, ?215, ?216, ?217, ?218, ?219, ?220, ?221, ?222, ?223, ?224), (?225, ?226, ?227, ?228, ?229, ?230, ?231, ?232, ?233, ?234, ?235, ?236, ?237, ?238, ?239, ?240), (?241, ?242, ?243, ?244, ?245, ?246, ?247, ?248, ?249, ?250, ?251, ?252, ?253, ?254, ?255, ?256), (?257, ?258, ?259, ?260, ?261, ?262, ?263, ?264, ?265, ?266, ?267, ?268, ?269, ?270, ?271, ?272), (?273, ?274, ?275, ?276, ?277, ?278, ?279, ?280, ?281, ?282, ?283, ?284, ?285, ?286, ?287, ?288), (?289, ?290, ?291, ?292, ?293, ?294, ?295, ?296, ?297, ?298, ?299, ?300, ?301, ?302, ?303, ?304), (?305, ?306, ?307, ?308, ?309, ?310, ?311, ?312, ?313, ?314, ?315, ?316, ?317, ?318, ?319, ?320), (?321, ?322, ?323, ?324, ?325, ?326, ?327, ?328, ?329, ?330, ?331, ?332, ?333, ?334, ?335, ?336), (?337, ?338, ?339, ?340, ?341, ?342, ?343, ?344, ?345, ?346, ?347, ?348, ?349, ?350, ?351, ?352), (?353, ?354, ?355, ?356, ?357, ?358, ?359, ?360, ?361, ?362, ?363, ?364, ?365, ?366, ?367, ?368), (?369, ?370, ?371, ?372, ?373, ?374, ?375, ?376, ?377, ?378, ?379, ?380, ?381, ?382, ?383, ?384), (?385, ?386, ?387, ?388, ?389, ?390, ?391, ?392, ?393, ?394, ?395, ?396, ?397, ?398, ?399, ?400), (?401, ?402, ?403, ?404, ?405, ?406, ?407, ?408, ?409, ?410, ?411, ?412, ?413, ?414, ?415, ?416), (?417, ?418, ?419, ?420, ?421, ?422, ?423, ?424, ?425, ?426, ?427, ?428, ?429, ?430, ?431, ?432), (?433, ?434, ?435, ?436, ?437, ?438, ?439, ?440, ?441, ?442, ?443, ?444, ?445, ?446, ?447, ?448), (?449, ?450, ?451, ?452, ?453, ?454, ?455, ?456, ?457, ?458, ?459, ?460, ?461, ?462, ?463, ?464), (?465, ?466, ?467, ?468, ?469, ?470, ?471, ?472, ?473, ?474, ?475, ?476, ?477, ?478, ?479, ?480), (?481, ?482, ?483, ?484, ?485, ?486, ?487, ?488, ?489, ?490, ?491, ?492, ?493, ?494, ?495, ?496), (?497, ?498, ?499, ?500, ?501, ?502, ?503, ?504, ?505, ?506, ?507, ?508, ?509, ?510, ?511, ?512)"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = statsdb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = statsdb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); /* for reference @@ -6021,7 +6025,7 @@ void ProxySQL_Admin::stats___mysql_free_connections() { sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=statsdb->get_db(); + //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; @@ -6029,9 +6033,11 @@ void ProxySQL_Admin::stats___mysql_free_connections() { query32 = (char *)"INSERT INTO stats_mysql_free_connections VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13), (?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26), (?27, ?28, ?29, ?30, ?31, ?32, ?33, ?34, ?35, ?36, ?37, ?38, ?39), (?40, ?41, ?42, ?43, ?44, ?45, ?46, ?47, ?48, ?49, ?50, ?51, ?52), (?53, ?54, ?55, ?56, ?57, ?58, ?59, ?60, ?61, ?62, ?63, ?64, ?65), (?66, ?67, ?68, ?69, ?70, ?71, ?72, ?73, ?74, ?75, ?76, ?77, ?78), (?79, ?80, ?81, ?82, ?83, ?84, ?85, ?86, ?87, ?88, ?89, ?90, ?91), (?92, ?93, ?94, ?95, ?96, ?97, ?98, ?99, ?100, ?101, ?102, ?103, ?104), (?105, ?106, ?107, ?108, ?109, ?110, ?111, ?112, ?113, ?114, ?115, ?116, ?117), (?118, ?119, ?120, ?121, ?122, ?123, ?124, ?125, ?126, ?127, ?128, ?129, ?130), (?131, ?132, ?133, ?134, ?135, ?136, ?137, ?138, ?139, ?140, ?141, ?142, ?143), (?144, ?145, ?146, ?147, ?148, ?149, ?150, ?151, ?152, ?153, ?154, ?155, ?156), (?157, ?158, ?159, ?160, ?161, ?162, ?163, ?164, ?165, ?166, ?167, ?168, ?169), (?170, ?171, ?172, ?173, ?174, ?175, ?176, ?177, ?178, ?179, ?180, ?181, ?182), (?183, ?184, ?185, ?186, ?187, ?188, ?189, ?190, ?191, ?192, ?193, ?194, ?195), (?196, ?197, ?198, ?199, ?200, ?201, ?202, ?203, ?204, ?205, ?206, ?207, ?208), (?209, ?210, ?211, ?212, ?213, ?214, ?215, ?216, ?217, ?218, ?219, ?220, ?221), (?222, ?223, ?224, ?225, ?226, ?227, ?228, ?229, ?230, ?231, ?232, ?233, ?234), (?235, ?236, ?237, ?238, ?239, ?240, ?241, ?242, ?243, ?244, ?245, ?246, ?247), (?248, ?249, ?250, ?251, ?252, ?253, ?254, ?255, ?256, ?257, ?258, ?259, ?260), (?261, ?262, ?263, ?264, ?265, ?266, ?267, ?268, ?269, ?270, ?271, ?272, ?273), (?274, ?275, ?276, ?277, ?278, ?279, ?280, ?281, ?282, ?283, ?284, ?285, ?286), (?287, ?288, ?289, ?290, ?291, ?292, ?293, ?294, ?295, ?296, ?297, ?298, ?299), (?300, ?301, ?302, ?303, ?304, ?305, ?306, ?307, ?308, ?309, ?310, ?311, ?312), (?313, ?314, ?315, ?316, ?317, ?318, ?319, ?320, ?321, ?322, ?323, ?324, ?325), (?326, ?327, ?328, ?329, ?330, ?331, ?332, ?333, ?334, ?335, ?336, ?337, ?338), (?339, ?340, ?341, ?342, ?343, ?344, ?345, ?346, ?347, ?348, ?349, ?350, ?351), (?352, ?353, ?354, ?355, ?356, ?357, ?358, ?359, ?360, ?361, ?362, ?363, ?364), (?365, ?366, ?367, ?368, ?369, ?370, ?371, ?372, ?373, ?374, ?375, ?376, ?377), (?378, ?379, ?380, ?381, ?382, ?383, ?384, ?385, ?386, ?387, ?388, ?389, ?390), (?391, ?392, ?393, ?394, ?395, ?396, ?397, ?398, ?399, ?400, ?401, ?402, ?403), (?404, ?405, ?406, ?407, ?408, ?409, ?410, ?411, ?412, ?413, ?414, ?415, ?416)"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = statsdb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = statsdb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); statsdb->execute("BEGIN"); @@ -6162,10 +6168,11 @@ void ProxySQL_Admin::stats___proxysql_servers_checksums() { if (resultset) { int rc; sqlite3_stmt *statement1=NULL; - sqlite3 *mydb3=statsdb->get_db(); + //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; query1=(char *)"INSERT INTO stats_proxysql_servers_checksums VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = statsdb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); for (std::vector::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) { SQLite3_row *r1=*it; @@ -6198,10 +6205,11 @@ void ProxySQL_Admin::stats___proxysql_servers_metrics() { if (resultset) { int rc; sqlite3_stmt *statement1=NULL; - sqlite3 *mydb3=statsdb->get_db(); + //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; query1=(char *)"INSERT INTO stats_proxysql_servers_metrics VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = statsdb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); for (std::vector::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) { SQLite3_row *r1=*it; @@ -6238,7 +6246,7 @@ void ProxySQL_Admin::stats___mysql_query_digests(bool reset) { int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=statsdb->get_db(); + //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; if (reset) { @@ -6262,9 +6270,11 @@ void ProxySQL_Admin::stats___mysql_query_digests(bool reset) { arg_len+=strlen(r->fields[i]); } */ - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = statsdb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = statsdb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; @@ -6339,7 +6349,7 @@ void ProxySQL_Admin::stats___mysql_errors(bool reset) { int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=statsdb->get_db(); + //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; if (reset) { @@ -6355,9 +6365,11 @@ void ProxySQL_Admin::stats___mysql_errors(bool reset) { query32=(char *)"INSERT INTO stats_mysql_errors VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11), (?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22), (?23, ?24, ?25, ?26, ?27, ?28, ?29, ?30, ?31, ?32, ?33), (?34, ?35, ?36, ?37, ?38, ?39, ?40, ?41, ?42, ?43, ?44), (?45, ?46, ?47, ?48, ?49, ?50, ?51, ?52, ?53, ?54, ?55), (?56, ?57, ?58, ?59, ?60, ?61, ?62, ?63, ?64, ?65, ?66), (?67, ?68, ?69, ?70, ?71, ?72, ?73, ?74, ?75, ?76, ?77), (?78, ?79, ?80, ?81, ?82, ?83, ?84, ?85, ?86, ?87, ?88), (?89, ?90, ?91, ?92, ?93, ?94, ?95, ?96, ?97, ?98, ?99), (?100, ?101, ?102, ?103, ?104, ?105, ?106, ?107, ?108, ?109, ?110), (?111, ?112, ?113, ?114, ?115, ?116, ?117, ?118, ?119, ?120, ?121), (?122, ?123, ?124, ?125, ?126, ?127, ?128, ?129, ?130, ?131, ?132), (?133, ?134, ?135, ?136, ?137, ?138, ?139, ?140, ?141, ?142, ?143), (?144, ?145, ?146, ?147, ?148, ?149, ?150, ?151, ?152, ?153, ?154), (?155, ?156, ?157, ?158, ?159, ?160, ?161, ?162, ?163, ?164, ?165), (?166, ?167, ?168, ?169, ?170, ?171, ?172, ?173, ?174, ?175, ?176), (?177, ?178, ?179, ?180, ?181, ?182, ?183, ?184, ?185, ?186, ?187), (?188, ?189, ?190, ?191, ?192, ?193, ?194, ?195, ?196, ?197, ?198), (?199, ?200, ?201, ?202, ?203, ?204, ?205, ?206, ?207, ?208, ?209), (?210, ?211, ?212, ?213, ?214, ?215, ?216, ?217, ?218, ?219, ?220), (?221, ?222, ?223, ?224, ?225, ?226, ?227, ?228, ?229, ?230, ?231), (?232, ?233, ?234, ?235, ?236, ?237, ?238, ?239, ?240, ?241, ?242), (?243, ?244, ?245, ?246, ?247, ?248, ?249, ?250, ?251, ?252, ?253), (?254, ?255, ?256, ?257, ?258, ?259, ?260, ?261, ?262, ?263, ?264), (?265, ?266, ?267, ?268, ?269, ?270, ?271, ?272, ?273, ?274, ?275), (?276, ?277, ?278, ?279, ?280, ?281, ?282, ?283, ?284, ?285, ?286), (?287, ?288, ?289, ?290, ?291, ?292, ?293, ?294, ?295, ?296, ?297), (?298, ?299, ?300, ?301, ?302, ?303, ?304, ?305, ?306, ?307, ?308), (?309, ?310, ?311, ?312, ?313, ?314, ?315, ?316, ?317, ?318, ?319), (?320, ?321, ?322, ?323, ?324, ?325, ?326, ?327, ?328, ?329, ?330), (?331, ?332, ?333, ?334, ?335, ?336, ?337, ?338, ?339, ?340, ?341), (?342, ?343, ?344, ?345, ?346, ?347, ?348, ?349, ?350, ?351, ?352)"; } - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = statsdb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = statsdb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; @@ -6441,7 +6453,7 @@ void ProxySQL_Admin::save_mysql_query_rules_fast_routing_from_runtime(bool _runt int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); char *query1=NULL; char *query32=NULL; if (_runtime) { @@ -6451,9 +6463,11 @@ void ProxySQL_Admin::save_mysql_query_rules_fast_routing_from_runtime(bool _runt query1=(char *)"INSERT INTO mysql_query_rules_fast_routing VALUES (?1, ?2, ?3, ?4, ?5)"; query32=(char *)"INSERT INTO mysql_query_rules_fast_routing VALUES (?1, ?2, ?3, ?4, ?5), (?6, ?7, ?8, ?9, ?10), (?11, ?12, ?13, ?14, ?15), (?16, ?17, ?18, ?19, ?20), (?21, ?22, ?23, ?24, ?25), (?26, ?27, ?28, ?29, ?30), (?31, ?32, ?33, ?34, ?35), (?36, ?37, ?38, ?39, ?40), (?41, ?42, ?43, ?44, ?45), (?46, ?47, ?48, ?49, ?50), (?51, ?52, ?53, ?54, ?55), (?56, ?57, ?58, ?59, ?60), (?61, ?62, ?63, ?64, ?65), (?66, ?67, ?68, ?69, ?70), (?71, ?72, ?73, ?74, ?75), (?76, ?77, ?78, ?79, ?80), (?81, ?82, ?83, ?84, ?85), (?86, ?87, ?88, ?89, ?90), (?91, ?92, ?93, ?94, ?95), (?96, ?97, ?98, ?99, ?100), (?101, ?102, ?103, ?104, ?105), (?106, ?107, ?108, ?109, ?110), (?111, ?112, ?113, ?114, ?115), (?116, ?117, ?118, ?119, ?120), (?121, ?122, ?123, ?124, ?125), (?126, ?127, ?128, ?129, ?130), (?131, ?132, ?133, ?134, ?135), (?136, ?137, ?138, ?139, ?140), (?141, ?142, ?143, ?144, ?145), (?146, ?147, ?148, ?149, ?150), (?151, ?152, ?153, ?154, ?155), (?156, ?157, ?158, ?159, ?160)"; } - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = admindb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = admindb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; @@ -7346,8 +7360,9 @@ void ProxySQL_Admin::dump_checksums_values_table() { } char *q = (char *)"REPLACE INTO runtime_checksums_values VALUES (?1 , ?2 , ?3 , ?4)"; sqlite3_stmt *statement1 = NULL; - sqlite3 *mydb3 = admindb->get_db(); - rc=sqlite3_prepare_v2(mydb3, q, -1, &statement1, 0); + //sqlite3 *mydb3 = admindb->get_db(); + //rc=sqlite3_prepare_v2(mydb3, q, -1, &statement1, 0); + rc = admindb->prepare_v2(q,&statement1); assert(rc==SQLITE_OK); admindb->execute((char *)"BEGIN"); admindb->execute((char *)"DELETE FROM runtime_checksums_values"); @@ -7434,7 +7449,7 @@ void ProxySQL_Admin::save_mysql_users_runtime_to_database(bool _runtime) { char *q_stmt1_b=NULL; sqlite3_stmt *f_statement1=NULL; sqlite3_stmt *b_statement1=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); if (_runtime) { q_stmt1_f=qfr_stmt1; q_stmt1_b=qbr_stmt1; @@ -7442,9 +7457,11 @@ void ProxySQL_Admin::save_mysql_users_runtime_to_database(bool _runtime) { q_stmt1_f=qf_stmt1; q_stmt1_b=qb_stmt1; } - rc=sqlite3_prepare_v2(mydb3, q_stmt1_f, -1, &f_statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, q_stmt1_f, -1, &f_statement1, 0); + rc = admindb->prepare_v2(q_stmt1_f, &f_statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, q_stmt1_b, -1, &b_statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, q_stmt1_b, -1, &b_statement1, 0); + rc = admindb->prepare_v2(q_stmt1_b, &b_statement1); assert(rc==SQLITE_OK); for (i=0; iusername, ads[i]->default_hostgroup); @@ -7530,7 +7547,7 @@ void ProxySQL_Admin::save_mysql_ldap_mapping_runtime_to_database(bool _runtime) int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement8=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); char *query1=NULL; char *query8=NULL; if (_runtime) { @@ -7540,9 +7557,11 @@ void ProxySQL_Admin::save_mysql_ldap_mapping_runtime_to_database(bool _runtime) query1=(char *)"INSERT INTO mysql_ldap_mapping VALUES (?1, ?2, ?3, ?4)"; query8=(char *)"INSERT INTO mysql_ldap_mapping VALUES (?1, ?2, ?3, ?4), (?5, ?6, ?7, ?8), (?9, ?10, ?11, ?12), (?13, ?14, ?15, ?16), (?17, ?18, ?19, ?20), (?21, ?22, ?23, ?24), (?25, ?26, ?27, ?28), (?29, ?30, ?31, ?32)"; } - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = admindb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query8, -1, &statement8, 0); + //rc=sqlite3_prepare_v2(mydb3, query8, -1, &statement8, 0); + rc = admindb->prepare_v2(query8, &statement8); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/8; @@ -7612,14 +7631,16 @@ void ProxySQL_Admin::save_clickhouse_users_runtime_to_database(bool _runtime) { char *q_stmt1_b=NULL; sqlite3_stmt *f_statement1=NULL; sqlite3_stmt *b_statement1=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); if (_runtime) { int rc; q_stmt1_f=qfr_stmt1; q_stmt1_b=qbr_stmt1; - rc=sqlite3_prepare_v2(mydb3, q_stmt1_f, -1, &f_statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, q_stmt1_f, -1, &f_statement1, 0); + rc = admindb->prepare_v2(q_stmt1_f, &f_statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, q_stmt1_b, -1, &b_statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, q_stmt1_b, -1, &b_statement1, 0); + rc = admindb->prepare_v2(q_stmt1_b, &b_statement1); assert(rc==SQLITE_OK); } for (i=0; iget_db(); + //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; query1=(char *)"INSERT INTO stats_mysql_gtid_executed VALUES (?1, ?2, ?3, ?4)"; query32=(char *)"INSERT INTO stats_mysql_gtid_executed VALUES (?1, ?2, ?3, ?4), (?5, ?6, ?7, ?8), (?9, ?10, ?11, ?12), (?13, ?14, ?15, ?16), (?17, ?18, ?19, ?20), (?21, ?22, ?23, ?24), (?25, ?26, ?27, ?28), (?29, ?30, ?31, ?32), (?33, ?34, ?35, ?36), (?37, ?38, ?39, ?40), (?41, ?42, ?43, ?44), (?45, ?46, ?47, ?48), (?49, ?50, ?51, ?52), (?53, ?54, ?55, ?56), (?57, ?58, ?59, ?60), (?61, ?62, ?63, ?64), (?65, ?66, ?67, ?68), (?69, ?70, ?71, ?72), (?73, ?74, ?75, ?76), (?77, ?78, ?79, ?80), (?81, ?82, ?83, ?84), (?85, ?86, ?87, ?88), (?89, ?90, ?91, ?92), (?93, ?94, ?95, ?96), (?97, ?98, ?99, ?100), (?101, ?102, ?103, ?104), (?105, ?106, ?107, ?108), (?109, ?110, ?111, ?112), (?113, ?114, ?115, ?116), (?117, ?118, ?119, ?120), (?121, ?122, ?123, ?124), (?125, ?126, ?127, ?128), (?129, ?130, ?131, ?132)"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = statsdb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = statsdb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; @@ -7865,7 +7888,7 @@ void ProxySQL_Admin::save_mysql_servers_runtime_to_database(bool _runtime) { int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); char *query1=NULL; char *query32=NULL; if (_runtime) { @@ -7875,9 +7898,11 @@ void ProxySQL_Admin::save_mysql_servers_runtime_to_database(bool _runtime) { query1=(char *)"INSERT INTO mysql_servers VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)"; query32=(char *)"INSERT INTO mysql_servers VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12), (?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24), (?25, ?26, ?27, ?28, ?29, ?30, ?31, ?32, ?33, ?34, ?35, ?36), (?37, ?38, ?39, ?40, ?41, ?42, ?43, ?44, ?45, ?46, ?47, ?48), (?49, ?50, ?51, ?52, ?53, ?54, ?55, ?56, ?57, ?58, ?59, ?60), (?61, ?62, ?63, ?64, ?65, ?66, ?67, ?68, ?69, ?70, ?71, ?72), (?73, ?74, ?75, ?76, ?77, ?78, ?79, ?80, ?81, ?82, ?83, ?84), (?85, ?86, ?87, ?88, ?89, ?90, ?91, ?92, ?93, ?94, ?95, ?96), (?97, ?98, ?99, ?100, ?101, ?102, ?103, ?104, ?105, ?106, ?107, ?108), (?109, ?110, ?111, ?112, ?113, ?114, ?115, ?116, ?117, ?118, ?119, ?120), (?121, ?122, ?123, ?124, ?125, ?126, ?127, ?128, ?129, ?130, ?131, ?132), (?133, ?134, ?135, ?136, ?137, ?138, ?139, ?140, ?141, ?142, ?143, ?144), (?145, ?146, ?147, ?148, ?149, ?150, ?151, ?152, ?153, ?154, ?155, ?156), (?157, ?158, ?159, ?160, ?161, ?162, ?163, ?164, ?165, ?166, ?167, ?168), (?169, ?170, ?171, ?172, ?173, ?174, ?175, ?176, ?177, ?178, ?179, ?180), (?181, ?182, ?183, ?184, ?185, ?186, ?187, ?188, ?189, ?190, ?191, ?192), (?193, ?194, ?195, ?196, ?197, ?198, ?199, ?200, ?201, ?202, ?203, ?204), (?205, ?206, ?207, ?208, ?209, ?210, ?211, ?212, ?213, ?214, ?215, ?216), (?217, ?218, ?219, ?220, ?221, ?222, ?223, ?224, ?225, ?226, ?227, ?228), (?229, ?230, ?231, ?232, ?233, ?234, ?235, ?236, ?237, ?238, ?239, ?240), (?241, ?242, ?243, ?244, ?245, ?246, ?247, ?248, ?249, ?250, ?251, ?252), (?253, ?254, ?255, ?256, ?257, ?258, ?259, ?260, ?261, ?262, ?263, ?264), (?265, ?266, ?267, ?268, ?269, ?270, ?271, ?272, ?273, ?274, ?275, ?276), (?277, ?278, ?279, ?280, ?281, ?282, ?283, ?284, ?285, ?286, ?287, ?288), (?289, ?290, ?291, ?292, ?293, ?294, ?295, ?296, ?297, ?298, ?299, ?300), (?301, ?302, ?303, ?304, ?305, ?306, ?307, ?308, ?309, ?310, ?311, ?312), (?313, ?314, ?315, ?316, ?317, ?318, ?319, ?320, ?321, ?322, ?323, ?324), (?325, ?326, ?327, ?328, ?329, ?330, ?331, ?332, ?333, ?334, ?335, ?336), (?337, ?338, ?339, ?340, ?341, ?342, ?343, ?344, ?345, ?346, ?347, ?348), (?349, ?350, ?351, ?352, ?353, ?354, ?355, ?356, ?357, ?358, ?359, ?360), (?361, ?362, ?363, ?364, ?365, ?366, ?367, ?368, ?369, ?370, ?371, ?372), (?373, ?374, ?375, ?376, ?377, ?378, ?379, ?380, ?381, ?382, ?383, ?384)"; } - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = admindb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = admindb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; @@ -7978,14 +8003,15 @@ void ProxySQL_Admin::save_mysql_servers_runtime_to_database(bool _runtime) { if (resultset) { int rc; sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); char *query=NULL; if (_runtime) { query=(char *)"INSERT INTO runtime_mysql_group_replication_hostgroups(writer_hostgroup,backup_writer_hostgroup,reader_hostgroup,offline_hostgroup,active,max_writers,writer_is_also_reader,max_transactions_behind,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; } else { query=(char *)"INSERT INTO mysql_group_replication_hostgroups(writer_hostgroup,backup_writer_hostgroup,reader_hostgroup,offline_hostgroup,active,max_writers,writer_is_also_reader,max_transactions_behind,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; } - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = admindb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); //proxy_info("New mysql_group_replication_hostgroups table\n"); for (std::vector::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) { @@ -8020,14 +8046,15 @@ void ProxySQL_Admin::save_mysql_servers_runtime_to_database(bool _runtime) { if (resultset) { int rc; sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); char *query=NULL; if (_runtime) { query=(char *)"INSERT INTO runtime_mysql_galera_hostgroups(writer_hostgroup,backup_writer_hostgroup,reader_hostgroup,offline_hostgroup,active,max_writers,writer_is_also_reader,max_transactions_behind,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; } else { query=(char *)"INSERT INTO mysql_galera_hostgroups(writer_hostgroup,backup_writer_hostgroup,reader_hostgroup,offline_hostgroup,active,max_writers,writer_is_also_reader,max_transactions_behind,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9)"; } - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = admindb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); //proxy_info("New mysql_galera_hostgroups table\n"); for (std::vector::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) { @@ -8062,14 +8089,15 @@ void ProxySQL_Admin::save_mysql_servers_runtime_to_database(bool _runtime) { if (resultset) { int rc; sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); char *query=NULL; if (_runtime) { query=(char *)"INSERT INTO runtime_mysql_aws_aurora_hostgroups(writer_hostgroup,reader_hostgroup,active,aurora_port,endpoint_address,max_lag_ms,check_interval_ms,check_timeout_ms,writer_is_also_reader,new_reader_weight,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)"; } else { query=(char *)"INSERT INTO mysql_aws_aurora_hostgroups(writer_hostgroup,reader_hostgroup,active,aurora_port,endpoint_address,max_lag_ms,check_interval_ms,check_timeout_ms,writer_is_also_reader,new_reader_weight,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11)"; } - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = admindb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); //proxy_info("New mysql_aws_aurora_hostgroups table\n"); for (std::vector::iterator it = resultset->rows.begin() ; it != resultset->rows.end(); ++it) { @@ -9861,7 +9889,7 @@ void ProxySQL_Admin::save_proxysql_servers_runtime_to_database(bool _runtime) { int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); char *query1=NULL; char *query32=NULL; if (_runtime) { @@ -9871,9 +9899,11 @@ void ProxySQL_Admin::save_proxysql_servers_runtime_to_database(bool _runtime) { query1=(char *)"INSERT INTO proxysql_servers VALUES (?1, ?2, ?3, ?4)"; query32=(char *)"INSERT INTO proxysql_servers VALUES (?1, ?2, ?3, ?4), (?5, ?6, ?7, ?8), (?9, ?10, ?11, ?12), (?13, ?14, ?15, ?16), (?17, ?18, ?19, ?20), (?21, ?22, ?23, ?24), (?25, ?26, ?27, ?28), (?29, ?30, ?31, ?32), (?33, ?34, ?35, ?36), (?37, ?38, ?39, ?40), (?41, ?42, ?43, ?44), (?45, ?46, ?47, ?48), (?49, ?50, ?51, ?52), (?53, ?54, ?55, ?56), (?57, ?58, ?59, ?60), (?61, ?62, ?63, ?64), (?65, ?66, ?67, ?68), (?69, ?70, ?71, ?72), (?73, ?74, ?75, ?76), (?77, ?78, ?79, ?80), (?81, ?82, ?83, ?84), (?85, ?86, ?87, ?88), (?89, ?90, ?91, ?92), (?93, ?94, ?95, ?96), (?97, ?98, ?99, ?100), (?101, ?102, ?103, ?104), (?105, ?106, ?107, ?108), (?109, ?110, ?111, ?112), (?113, ?114, ?115, ?116), (?117, ?118, ?119, ?120), (?121, ?122, ?123, ?124), (?125, ?126, ?127, ?128)"; } - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = admindb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = admindb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; @@ -9919,15 +9949,17 @@ void ProxySQL_Admin::stats___mysql_prepared_statements_info() { int rc; sqlite3_stmt *statement1=NULL; sqlite3_stmt *statement32=NULL; - sqlite3 *mydb3=statsdb->get_db(); + //sqlite3 *mydb3=statsdb->get_db(); char *query1=NULL; char *query32=NULL; statsdb->execute("DELETE FROM stats_mysql_prepared_statements_info"); query1=(char *)"INSERT INTO stats_mysql_prepared_statements_info VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8)"; query32=(char *)"INSERT INTO stats_mysql_prepared_statements_info VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8), (?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16), (?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24), (?25, ?26, ?27, ?28, ?29, ?30, ?31, ?32), (?33, ?34, ?35, ?36, ?37, ?38, ?39, ?40), (?41, ?42, ?43, ?44, ?45, ?46, ?47, ?48), (?49, ?50, ?51, ?52, ?53, ?54, ?55, ?56), (?57, ?58, ?59, ?60, ?61, ?62, ?63, ?64), (?65, ?66, ?67, ?68, ?69, ?70, ?71, ?72), (?73, ?74, ?75, ?76, ?77, ?78, ?79, ?80), (?81, ?82, ?83, ?84, ?85, ?86, ?87, ?88), (?89, ?90, ?91, ?92, ?93, ?94, ?95, ?96), (?97, ?98, ?99, ?100, ?101, ?102, ?103, ?104), (?105, ?106, ?107, ?108, ?109, ?110, ?111, ?112), (?113, ?114, ?115, ?116, ?117, ?118, ?119, ?120), (?121, ?122, ?123, ?124, ?125, ?126, ?127, ?128), (?129, ?130, ?131, ?132, ?133, ?134, ?135, ?136), (?137, ?138, ?139, ?140, ?141, ?142, ?143, ?144), (?145, ?146, ?147, ?148, ?149, ?150, ?151, ?152), (?153, ?154, ?155, ?156, ?157, ?158, ?159, ?160), (?161, ?162, ?163, ?164, ?165, ?166, ?167, ?168), (?169, ?170, ?171, ?172, ?173, ?174, ?175, ?176), (?177, ?178, ?179, ?180, ?181, ?182, ?183, ?184), (?185, ?186, ?187, ?188, ?189, ?190, ?191, ?192), (?193, ?194, ?195, ?196, ?197, ?198, ?199, ?200), (?201, ?202, ?203, ?204, ?205, ?206, ?207, ?208), (?209, ?210, ?211, ?212, ?213, ?214, ?215, ?216), (?217, ?218, ?219, ?220, ?221, ?222, ?223, ?224), (?225, ?226, ?227, ?228, ?229, ?230, ?231, ?232), (?233, ?234, ?235, ?236, ?237, ?238, ?239, ?240), (?241, ?242, ?243, ?244, ?245, ?246, ?247, ?248), (?249, ?250, ?251, ?252, ?253, ?254, ?255, ?256)"; - rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + //rc=sqlite3_prepare_v2(mydb3, query1, -1, &statement1, 0); + rc = statsdb->prepare_v2(query1, &statement1); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + //rc=sqlite3_prepare_v2(mydb3, query32, -1, &statement32, 0); + rc = statsdb->prepare_v2(query32, &statement32); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=resultset->rows_count/32; @@ -9974,13 +10006,14 @@ void ProxySQL_Admin::stats___mysql_prepared_statements_info() { void ProxySQL_Admin::enable_galera_testing() { proxy_info("Admin is enabling Galera Testing using SQLite3 Server and HGs from 2271 and 2290\n"); sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); unsigned int num_galera_servers = GloSQLite3Server->num_galera_servers[0]; int rc; mysql_servers_wrlock(); admindb->execute("DELETE FROM mysql_servers WHERE hostgroup_id BETWEEN 2271 AND 2300"); char *query=(char *)"INSERT INTO mysql_servers (hostgroup_id,hostname,use_ssl,comment) VALUES (?1, ?2, ?3, ?4)"; - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = admindb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); for (unsigned int j=1; j<4; j++) { proxy_info("Admin is enabling Galera Testing using SQLite3 Server and writer_HG %d\n" , 2260+j*10+1); @@ -10020,13 +10053,14 @@ void ProxySQL_Admin::enable_galera_testing() { void ProxySQL_Admin::enable_aurora_testing() { proxy_info("Admin is enabling AWS Aurora Testing using SQLite3 Server and HGs from 1271 to 1276\n"); sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=admindb->get_db(); + //sqlite3 *mydb3=admindb->get_db(); unsigned int num_aurora_servers = GloSQLite3Server->num_aurora_servers[0]; int rc; mysql_servers_wrlock(); admindb->execute("DELETE FROM mysql_servers WHERE hostgroup_id BETWEEN 1271 AND 1276"); char *query=(char *)"INSERT INTO mysql_servers (hostgroup_id,hostname,use_ssl,comment) VALUES (?1, ?2, ?3, ?4)"; - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = admindb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); for (unsigned int j=1; j<4; j++) { proxy_info("Admin is enabling AWS Aurora Testing using SQLite3 Server and HGs 127%d and 127%d\n" , j*2-1 , j*2); diff --git a/lib/ProxySQL_Cluster.cpp b/lib/ProxySQL_Cluster.cpp index 59febc676..c5b7c7f96 100644 --- a/lib/ProxySQL_Cluster.cpp +++ b/lib/ProxySQL_Cluster.cpp @@ -631,8 +631,9 @@ void ProxySQL_Cluster::pull_mysql_query_rules_from_peer() { MYSQL_ROW row; char *q = (char *)"INSERT INTO mysql_query_rules (rule_id, active, username, schemaname, flagIN, client_addr, proxy_addr, proxy_port, digest, match_digest, match_pattern, negate_match_pattern, re_modifiers, flagOUT, replace_pattern, destination_hostgroup, cache_ttl, cache_empty_result, cache_timeout, reconnect, timeout, retries, delay, next_query_flagIN, mirror_flagOUT, mirror_hostgroup, error_msg, ok_msg, sticky_conn, multiplex, gtid_from_hostgroup, log, apply, comment) VALUES (?1 , ?2 , ?3 , ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14, ?15, ?16, ?17, ?18, ?19, ?20, ?21, ?22, ?23, ?24, ?25, ?26, ?27, ?28, ?29, ?30, ?31, ?32, ?33, ?34)"; sqlite3_stmt *statement1 = NULL; - sqlite3 *mydb3 = GloAdmin->admindb->get_db(); - rc=sqlite3_prepare_v2(mydb3, q, -1, &statement1, 0); + //sqlite3 *mydb3 = GloAdmin->admindb->get_db(); + //rc=sqlite3_prepare_v2(mydb3, q, -1, &statement1, 0); + rc = GloAdmin->admindb->prepare_v2(q, &statement1); assert(rc==SQLITE_OK); while ((row = mysql_fetch_row(result1))) { rc=sqlite3_bind_int64(statement1, 1, atoll(row[0])); assert(rc==SQLITE_OK); // rule_id @@ -677,9 +678,11 @@ void ProxySQL_Cluster::pull_mysql_query_rules_from_peer() { char *q32fr = (char *)"INSERT INTO mysql_query_rules_fast_routing(username, schemaname, flagIN, destination_hostgroup, comment) VALUES (?1, ?2, ?3, ?4, ?5), (?6, ?7, ?8, ?9, ?10), (?11, ?12, ?13, ?14, ?15), (?16, ?17, ?18, ?19, ?20), (?21, ?22, ?23, ?24, ?25), (?26, ?27, ?28, ?29, ?30), (?31, ?32, ?33, ?34, ?35), (?36, ?37, ?38, ?39, ?40), (?41, ?42, ?43, ?44, ?45), (?46, ?47, ?48, ?49, ?50), (?51, ?52, ?53, ?54, ?55), (?56, ?57, ?58, ?59, ?60), (?61, ?62, ?63, ?64, ?65), (?66, ?67, ?68, ?69, ?70), (?71, ?72, ?73, ?74, ?75), (?76, ?77, ?78, ?79, ?80), (?81, ?82, ?83, ?84, ?85), (?86, ?87, ?88, ?89, ?90), (?91, ?92, ?93, ?94, ?95), (?96, ?97, ?98, ?99, ?100), (?101, ?102, ?103, ?104, ?105), (?106, ?107, ?108, ?109, ?110), (?111, ?112, ?113, ?114, ?115), (?116, ?117, ?118, ?119, ?120), (?121, ?122, ?123, ?124, ?125), (?126, ?127, ?128, ?129, ?130), (?131, ?132, ?133, ?134, ?135), (?136, ?137, ?138, ?139, ?140), (?141, ?142, ?143, ?144, ?145), (?146, ?147, ?148, ?149, ?150), (?151, ?152, ?153, ?154, ?155), (?156, ?157, ?158, ?159, ?160)"; sqlite3_stmt *statement1fr = NULL; sqlite3_stmt *statement32fr = NULL; - rc=sqlite3_prepare_v2(mydb3, q1fr, -1, &statement1fr, 0); + //rc=sqlite3_prepare_v2(mydb3, q1fr, -1, &statement1fr, 0); + rc = GloAdmin->admindb->prepare_v2(q1fr, &statement1fr); assert(rc==SQLITE_OK); - rc=sqlite3_prepare_v2(mydb3, q32fr, -1, &statement32fr, 0); + //rc=sqlite3_prepare_v2(mydb3, q32fr, -1, &statement32fr, 0); + rc = GloAdmin->admindb->prepare_v2(q32fr, &statement32fr); assert(rc==SQLITE_OK); int row_idx=0; int max_bulk_row_idx=mysql_num_rows(result2)/32; @@ -775,8 +778,9 @@ void ProxySQL_Cluster::pull_mysql_users_from_peer() { MYSQL_ROW row; char *q = (char *)"INSERT INTO mysql_users (username, password, active, use_ssl, default_hostgroup, default_schema, schema_locked, transaction_persistent, fast_forward, backend, frontend, max_connections, comment) VALUES (?1 , ?2 , ?3 , ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13)"; sqlite3_stmt *statement1 = NULL; - sqlite3 *mydb3 = GloAdmin->admindb->get_db(); - rc=sqlite3_prepare_v2(mydb3, q, -1, &statement1, 0); + //sqlite3 *mydb3 = GloAdmin->admindb->get_db(); + //rc=sqlite3_prepare_v2(mydb3, q, -1, &statement1, 0); + rc = GloAdmin->admindb->prepare_v2(q, &statement1); assert(rc==SQLITE_OK); while ((row = mysql_fetch_row(result))) { rc=sqlite3_bind_text(statement1, 1, row[0], -1, SQLITE_TRANSIENT); assert(rc==SQLITE_OK); // username diff --git a/lib/SQLite3_Server.cpp b/lib/SQLite3_Server.cpp index 4f1ee4026..eef68fe8b 100644 --- a/lib/SQLite3_Server.cpp +++ b/lib/SQLite3_Server.cpp @@ -822,7 +822,7 @@ void SQLite3_Server::populate_galera_table(MySQL_Session *sess) { int cols=0; int affected_rows=0; SQLite3_result *resultset=NULL; - sqlite3 *mydb3=sessdb->get_db(); + //sqlite3 *mydb3=sessdb->get_db(); string myip = string(sess->client_myds->proxy_addr.addr); string clu_id_s = myip.substr(6,1); unsigned int cluster_id = atoi(clu_id_s.c_str()); @@ -836,7 +836,8 @@ void SQLite3_Server::populate_galera_table(MySQL_Session *sess) { sqlite3_stmt *statement=NULL; int rc; char *query=(char *)"INSERT INTO HOST_STATUS_GALERA VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10)"; - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = sessdb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); for (unsigned int i=0; iexecute("DELETE FROM REPLICA_HOST_STATUS"); sqlite3_stmt *statement=NULL; - sqlite3 *mydb3=sessdb->get_db(); + //sqlite3 *mydb3=sessdb->get_db(); int rc; char *query=(char *)"INSERT INTO REPLICA_HOST_STATUS VALUES (?1, ?2, ?3, ?4, ?5)"; - rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + //rc=sqlite3_prepare_v2(mydb3, query, -1, &statement, 0); + rc = sessdb->prepare_v2(query, &statement); assert(rc==SQLITE_OK); time_t __timer; char lut[30]; diff --git a/lib/sqlite3db.cpp b/lib/sqlite3db.cpp index 1beb1aa1d..546c58a1a 100644 --- a/lib/sqlite3db.cpp +++ b/lib/sqlite3db.cpp @@ -76,6 +76,16 @@ bool SQLite3DB::execute(const char *str) { return false; } +int SQLite3DB::prepare_v2(const char *str, sqlite3_stmt **statement) { + int rc; + do { + rc = sqlite3_prepare_v2(db, str, -1, statement, 0); + if (rc==SQLITE_LOCKED || rc==SQLITE_BUSY) { // the execution of the prepared statement failed because locked + usleep(USLEEP_SQLITE_LOCKED); + } + } while (rc==SQLITE_LOCKED || rc==SQLITE_BUSY); + return rc; +} bool SQLite3DB::execute_statement(const char *str, char **error, int *cols, int *affected_rows, SQLite3_result **resultset) { int rc;