106 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "testconnections.h"
 | 
						|
 | 
						|
/**
 | 
						|
Reads COM_SELECT and COM_INSERT variables from all nodes and stores into 'selects' and 'inserts'
 | 
						|
*/
 | 
						|
int get_global_status_allnodes(long int *selects, long int *inserts, Mariadb_nodes * nodes, int silent)
 | 
						|
{
 | 
						|
    int i;
 | 
						|
    MYSQL_RES *res;
 | 
						|
    MYSQL_ROW row;
 | 
						|
 | 
						|
    for (i = 0; i < nodes->N; i++)
 | 
						|
    {
 | 
						|
        if (nodes->nodes[i] != NULL)
 | 
						|
        {
 | 
						|
 | 
						|
            if (mysql_query(nodes->nodes[i], "show global status like 'COM_SELECT';") != 0)
 | 
						|
            {
 | 
						|
                printf("Error: can't execute SQL-query\n");
 | 
						|
                printf("%s\n", mysql_error(nodes->nodes[i]));
 | 
						|
                return 1;
 | 
						|
            }
 | 
						|
 | 
						|
            res = mysql_store_result(nodes->nodes[i]);
 | 
						|
            if (res == NULL)
 | 
						|
            {
 | 
						|
                printf("Error: can't get the result description\n");
 | 
						|
                return 1;
 | 
						|
            }
 | 
						|
 | 
						|
            if (mysql_num_rows(res) > 0)
 | 
						|
            {
 | 
						|
                while ((row = mysql_fetch_row(res)) != NULL)
 | 
						|
                {
 | 
						|
                    if (silent == 0)
 | 
						|
                    {
 | 
						|
                        printf("Node %d COM_SELECT=%s\n", i, row[1]);
 | 
						|
                    }
 | 
						|
                    sscanf(row[1], "%ld", &selects[i]);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            mysql_free_result(res);
 | 
						|
            while ( mysql_next_result(nodes->nodes[i]) == 0 )
 | 
						|
            {
 | 
						|
                res = mysql_store_result(nodes->nodes[i]);
 | 
						|
                mysql_free_result(res);
 | 
						|
            }
 | 
						|
 | 
						|
            if (mysql_query(nodes->nodes[i], "show global status like 'COM_INSERT';") != 0)
 | 
						|
            {
 | 
						|
                printf("Error: can't execute SQL-query\n");
 | 
						|
            }
 | 
						|
 | 
						|
            res = mysql_store_result(nodes->nodes[i]);
 | 
						|
            if (res == NULL)
 | 
						|
            {
 | 
						|
                printf("Error: can't get the result description\n");
 | 
						|
            }
 | 
						|
 | 
						|
            if (mysql_num_rows(res) > 0)
 | 
						|
            {
 | 
						|
                while ((row = mysql_fetch_row(res)) != NULL)
 | 
						|
                {
 | 
						|
                    if (silent == 0)
 | 
						|
                    {
 | 
						|
                        printf("Node %d COM_INSERT=%s\n", i, row[1]);
 | 
						|
                    }
 | 
						|
                    sscanf(row[1], "%ld", &inserts[i]);
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            mysql_free_result(res);
 | 
						|
            while ( mysql_next_result(nodes->nodes[i]) == 0 )
 | 
						|
            {
 | 
						|
                res = mysql_store_result(nodes->nodes[i]);
 | 
						|
                mysql_free_result(res);
 | 
						|
            }
 | 
						|
        }
 | 
						|
        else
 | 
						|
        {
 | 
						|
            selects[i] = 0;
 | 
						|
            inserts[i] = 0;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    return 0;
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
Prints difference in COM_SELECT and COM_INSERT
 | 
						|
*/
 | 
						|
int print_delta(long int *new_selects, long int *new_inserts, long int *selects, long int *inserts,
 | 
						|
                int nodes_num)
 | 
						|
{
 | 
						|
    int i;
 | 
						|
    for (i = 0; i < nodes_num; i++)
 | 
						|
    {
 | 
						|
        printf("COM_SELECT increase on node %d is %ld\n", i, new_selects[i] - selects[i]);
 | 
						|
        printf("COM_INSERT increase on node %d is %ld\n", i, new_inserts[i] - inserts[i]);
 | 
						|
    }
 | 
						|
    return 0;
 | 
						|
}
 | 
						|
 | 
						|
 |