diff --git a/lib/ProxySQL_Admin.cpp b/lib/ProxySQL_Admin.cpp index 213bb230b..cfb423f40 100644 --- a/lib/ProxySQL_Admin.cpp +++ b/lib/ProxySQL_Admin.cpp @@ -12274,233 +12274,6 @@ void ProxySQL_Admin::save_pgsql_servers_runtime_to_database(bool _runtime) { } if (resultset) delete resultset; resultset = NULL; - - // dump pgsql_replication_hostgroups - if (_runtime) { - query = (char*)"DELETE FROM main.runtime_pgsql_replication_hostgroups"; - } - else { - query = (char*)"DELETE FROM main.pgsql_replication_hostgroups"; - } - proxy_debug(PROXY_DEBUG_ADMIN, 4, "%s\n", query); - admindb->execute(query); - resultset = PgHGM->dump_table_pgsql("pgsql_replication_hostgroups"); - if (resultset) { - for (std::vector::iterator it = resultset->rows.begin(); it != resultset->rows.end(); ++it) { - SQLite3_row* r = *it; - int l = 0; - if (r->fields[3]) l = strlen(r->fields[3]); - char* q = NULL; - if (_runtime) { - q = (char*)"INSERT INTO runtime_pgsql_replication_hostgroups VALUES(%s,%s,'%s','%s')"; - } - else { - q = (char*)"INSERT INTO pgsql_replication_hostgroups VALUES(%s,%s,'%s','%s')"; - } - char* query = (char*)malloc(strlen(q) + strlen(r->fields[0]) + strlen(r->fields[1]) + strlen(r->fields[2]) + 16 + l); - if (r->fields[3]) { - char* o = escape_string_single_quotes(r->fields[3], false); - sprintf(query, q, r->fields[0], r->fields[1], r->fields[2], o); - if (o != r->fields[3]) { // there was a copy - free(o); - } - //} else { - //sprintf(query, q, r->fields[0], r->fields[1], r->fields[2], r->fields[3]); - } - proxy_debug(PROXY_DEBUG_MYSQL_CONNPOOL, 4, "%s\n", query); - admindb->execute(query); - free(query); - } - } - if (resultset) delete resultset; - resultset = NULL; - - // dump pgsql_group_replication_hostgroups - if (_runtime) { - query = (char*)"DELETE FROM main.runtime_pgsql_group_replication_hostgroups"; - } - else { - query = (char*)"DELETE FROM main.pgsql_group_replication_hostgroups"; - } - proxy_debug(PROXY_DEBUG_ADMIN, 4, "%s\n", query); - admindb->execute(query); - resultset = PgHGM->dump_table_pgsql("pgsql_group_replication_hostgroups"); - if (resultset) { - int rc; - sqlite3_stmt* statement = NULL; - //sqlite3 *mydb3=admindb->get_db(); - char* query = NULL; - if (_runtime) { - query = (char*)"INSERT INTO runtime_pgsql_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 pgsql_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=(*proxy_sqlite3_prepare_v2)(mydb3, query, -1, &statement, 0); - rc = admindb->prepare_v2(query, &statement); - ASSERT_SQLITE_OK(rc, admindb); - //proxy_info("New pgsql_group_replication_hostgroups table\n"); - for (std::vector::iterator it = resultset->rows.begin(); it != resultset->rows.end(); ++it) { - SQLite3_row* r = *it; - rc = (*proxy_sqlite3_bind_int64)(statement, 1, atoi(r->fields[0])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 2, atoi(r->fields[1])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 3, atoi(r->fields[2])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 4, atoi(r->fields[3])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 5, atoi(r->fields[4])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 6, atoi(r->fields[5])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 7, atoi(r->fields[6])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 8, atoi(r->fields[7])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_text)(statement, 9, r->fields[8], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); - - SAFE_SQLITE3_STEP2(statement); - rc = (*proxy_sqlite3_clear_bindings)(statement); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_reset)(statement); ASSERT_SQLITE_OK(rc, admindb); - } - (*proxy_sqlite3_finalize)(statement); - } - if (resultset) delete resultset; - resultset = NULL; - - // dump pgsql_galera_hostgroups - if (_runtime) { - query = (char*)"DELETE FROM main.runtime_pgsql_galera_hostgroups"; - } - else { - query = (char*)"DELETE FROM main.pgsql_galera_hostgroups"; - } - proxy_debug(PROXY_DEBUG_ADMIN, 4, "%s\n", query); - admindb->execute(query); - resultset = PgHGM->dump_table_pgsql("pgsql_galera_hostgroups"); - if (resultset) { - int rc; - sqlite3_stmt* statement = NULL; - //sqlite3 *mydb3=admindb->get_db(); - char* query = NULL; - if (_runtime) { - query = (char*)"INSERT INTO runtime_pgsql_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 pgsql_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=(*proxy_sqlite3_prepare_v2)(mydb3, query, -1, &statement, 0); - rc = admindb->prepare_v2(query, &statement); - ASSERT_SQLITE_OK(rc, admindb); - //proxy_info("New pgsql_galera_hostgroups table\n"); - for (std::vector::iterator it = resultset->rows.begin(); it != resultset->rows.end(); ++it) { - SQLite3_row* r = *it; - rc = (*proxy_sqlite3_bind_int64)(statement, 1, atoi(r->fields[0])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 2, atoi(r->fields[1])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 3, atoi(r->fields[2])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 4, atoi(r->fields[3])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 5, atoi(r->fields[4])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 6, atoi(r->fields[5])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 7, atoi(r->fields[6])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 8, atoi(r->fields[7])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_text)(statement, 9, r->fields[8], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); - - SAFE_SQLITE3_STEP2(statement); - rc = (*proxy_sqlite3_clear_bindings)(statement); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_reset)(statement); ASSERT_SQLITE_OK(rc, admindb); - } - (*proxy_sqlite3_finalize)(statement); - } - if (resultset) delete resultset; - resultset = NULL; - - // dump pgsql_aws_aurora_hostgroups - - if (_runtime) { - query = (char*)"DELETE FROM main.runtime_pgsql_aws_aurora_hostgroups"; - } - else { - query = (char*)"DELETE FROM main.pgsql_aws_aurora_hostgroups"; - } - proxy_debug(PROXY_DEBUG_ADMIN, 4, "%s\n", query); - admindb->execute(query); - resultset = PgHGM->dump_table_pgsql("pgsql_aws_aurora_hostgroups"); - if (resultset) { - int rc; - sqlite3_stmt* statement = NULL; - //sqlite3 *mydb3=admindb->get_db(); - char* query = NULL; - if (_runtime) { - query = (char*)"INSERT INTO runtime_pgsql_aws_aurora_hostgroups(writer_hostgroup,reader_hostgroup,active,aurora_port,domain_name,max_lag_ms,check_interval_ms,check_timeout_ms,writer_is_also_reader,new_reader_weight,add_lag_ms,min_lag_ms,lag_num_checks,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)"; - } - else { - query = (char*)"INSERT INTO pgsql_aws_aurora_hostgroups(writer_hostgroup,reader_hostgroup,active,aurora_port,domain_name,max_lag_ms,check_interval_ms,check_timeout_ms,writer_is_also_reader,new_reader_weight,add_lag_ms,min_lag_ms,lag_num_checks,comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12, ?13, ?14)"; - } - //rc=(*proxy_sqlite3_prepare_v2)(mydb3, query, -1, &statement, 0); - rc = admindb->prepare_v2(query, &statement); - ASSERT_SQLITE_OK(rc, admindb); - //proxy_info("New pgsql_aws_aurora_hostgroups table\n"); - for (std::vector::iterator it = resultset->rows.begin(); it != resultset->rows.end(); ++it) { - SQLite3_row* r = *it; - rc = (*proxy_sqlite3_bind_int64)(statement, 1, atoi(r->fields[0])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 2, atoi(r->fields[1])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 3, atoi(r->fields[2])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 4, atoi(r->fields[3])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_text)(statement, 5, r->fields[4], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 6, atoi(r->fields[5])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 7, atoi(r->fields[6])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 8, atoi(r->fields[7])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 9, atoi(r->fields[8])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 10, atoi(r->fields[9])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 11, atoi(r->fields[10])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 12, atoi(r->fields[11])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_int64)(statement, 13, atoi(r->fields[12])); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_bind_text)(statement, 14, r->fields[13], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); - - SAFE_SQLITE3_STEP2(statement); - rc = (*proxy_sqlite3_clear_bindings)(statement); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_reset)(statement); ASSERT_SQLITE_OK(rc, admindb); - } - (*proxy_sqlite3_finalize)(statement); - } - if (resultset) delete resultset; - resultset = NULL; - - // dump pgsql_hostgroup_attributes - - StrQuery = "DELETE FROM main."; - if (_runtime) - StrQuery += "runtime_"; - StrQuery += "pgsql_hostgroup_attributes"; - proxy_debug(PROXY_DEBUG_ADMIN, 4, "%s\n", StrQuery.c_str()); - admindb->execute(StrQuery.c_str()); - resultset = PgHGM->dump_table_pgsql("pgsql_hostgroup_attributes"); - if (resultset) { - int rc; - sqlite3_stmt* statement = NULL; - StrQuery = "INSERT INTO "; - if (_runtime) - StrQuery += "runtime_"; - StrQuery += "pgsql_hostgroup_attributes (hostgroup_id, max_num_online_servers, autocommit, free_connections_pct, init_connect, multiplex, connection_warming, throttle_connections_per_sec, ignore_session_variables, hostgroup_settings, servers_defaults, comment) VALUES (?1, ?2, ?3, ?4, ?5, ?6, ?7, ?8, ?9, ?10, ?11, ?12)"; - rc = admindb->prepare_v2(StrQuery.c_str(), &statement); - ASSERT_SQLITE_OK(rc, admindb); - //proxy_info("New pgsql_aws_aurora_hostgroups table\n"); - for (std::vector::iterator it = resultset->rows.begin(); it != resultset->rows.end(); ++it) { - SQLite3_row* r = *it; - rc = (*proxy_sqlite3_bind_int64)(statement, 1, atol(r->fields[0])); ASSERT_SQLITE_OK(rc, admindb); // hostgroup_id - rc = (*proxy_sqlite3_bind_int64)(statement, 2, atol(r->fields[1])); ASSERT_SQLITE_OK(rc, admindb); // max_num_online_servers - rc = (*proxy_sqlite3_bind_int64)(statement, 3, atol(r->fields[2])); ASSERT_SQLITE_OK(rc, admindb); // autocommit - rc = (*proxy_sqlite3_bind_int64)(statement, 4, atol(r->fields[3])); ASSERT_SQLITE_OK(rc, admindb); // free_connections_pct - rc = (*proxy_sqlite3_bind_text)(statement, 5, r->fields[4], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); // variable_name - rc = (*proxy_sqlite3_bind_int64)(statement, 6, atol(r->fields[5])); ASSERT_SQLITE_OK(rc, admindb); // multiplex - rc = (*proxy_sqlite3_bind_int64)(statement, 7, atol(r->fields[6])); ASSERT_SQLITE_OK(rc, admindb); // connection_warming - rc = (*proxy_sqlite3_bind_int64)(statement, 8, atol(r->fields[7])); ASSERT_SQLITE_OK(rc, admindb); // throttle_connections_per_sec - rc = (*proxy_sqlite3_bind_text)(statement, 9, r->fields[8], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); // ignore_session_variables - rc = (*proxy_sqlite3_bind_text)(statement, 10, r->fields[9], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); // hostgroup_settings - rc = (*proxy_sqlite3_bind_text)(statement, 11, r->fields[10], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); // servers_defaults - rc = (*proxy_sqlite3_bind_text)(statement, 12, r->fields[11], -1, SQLITE_TRANSIENT); ASSERT_SQLITE_OK(rc, admindb); // comment - - SAFE_SQLITE3_STEP2(statement); - rc = (*proxy_sqlite3_clear_bindings)(statement); ASSERT_SQLITE_OK(rc, admindb); - rc = (*proxy_sqlite3_reset)(statement); ASSERT_SQLITE_OK(rc, admindb); - } - (*proxy_sqlite3_finalize)(statement); - } - if (resultset) delete resultset; - resultset = NULL; }