mirror of
				https://github.com/MariaDB/server.git
				synced 2025-11-03 14:33:32 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			130 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
# Example how to use this auxiliary script
 | 
						|
#-----------------------------------------
 | 
						|
#
 | 
						|
### The table/tables used in $part must have the right content.
 | 
						|
### $title_prefix is used for the generation of titles
 | 
						|
#
 | 
						|
# let $title_prefix= 4.3;
 | 
						|
### $check_num is used for the generation of titles and gets incremented after
 | 
						|
### every call of the current script.
 | 
						|
# let $check_num= 1;
 | 
						|
### $diff_column_list is used for the generation of error information and valid for
 | 
						|
### every sub test.
 | 
						|
# let $diff_column_list=
 | 
						|
# t2.COUNT_READ - t1.COUNT_READ AS D_COUNT_READ,
 | 
						|
# t2.COUNT_READ                 AS S2_COUNT_READ,
 | 
						|
# t1.COUNT_READ                 AS S1_COUNT_READ,
 | 
						|
# t2.SUM_NUMBER_OF_BYTES_READ - t1.SUM_NUMBER_OF_BYTES_READ AS D_SUM_NUMBER_OF_BYTES_READ,
 | 
						|
# t2.SUM_NUMBER_OF_BYTES_READ                               AS S2_SUM_NUMBER_OF_BYTES_READ,
 | 
						|
# t1.SUM_NUMBER_OF_BYTES_READ                               AS S1_SUM_NUMBER_OF_BYTES_READ,
 | 
						|
# t2.COUNT_WRITE - t1.COUNT_WRITE AS D_COUNT_WRITE,
 | 
						|
# t2.COUNT_WRITE                  AS S2_COUNT_WRITE,
 | 
						|
# t1.COUNT_WRITE                  AS S1_COUNT_WRITE,
 | 
						|
# t2.SUM_NUMBER_OF_BYTES_WRITE - t1.SUM_NUMBER_OF_BYTES_WRITE AS D_UM_NUMBER_OF_BYTES_WRITE,
 | 
						|
# t2.SUM_NUMBER_OF_BYTES_WRITE                                AS S2_SUM_NUMBER_OF_BYTES_WRITE,
 | 
						|
# t1.SUM_NUMBER_OF_BYTES_WRITE                                AS S1_SUM_NUMBER_OF_BYTES_WRITE,
 | 
						|
# t2.COUNT_MISC - t1.COUNT_MISC AS D_COUNT_MISC,
 | 
						|
# t2.COUNT_MISC                 AS S2_COUNT_MISC,
 | 
						|
# t1.COUNT_MISC                 AS S1_COUNT_MISC;
 | 
						|
### $part is used for the generation of "check" statements + error information
 | 
						|
### and valid for every sub test.
 | 
						|
# let $part=
 | 
						|
# FROM mysqltest.socket_summary_by_instance_detail t1
 | 
						|
# JOIN mysqltest.socket_summary_by_instance_detail t2
 | 
						|
# USING (EVENT_NAME, OBJECT_INSTANCE_BEGIN, run)
 | 
						|
# WHERE OBJECT_INSTANCE_BEGIN <> @default_object_instance_begin
 | 
						|
#   AND EVENT_NAME LIKE ('%client_connection')
 | 
						|
#   AND run = 1;
 | 
						|
#
 | 
						|
# --echo # $title_prefix Check the differences caused by SQL statement
 | 
						|
#
 | 
						|
# let stmt1= SELECT col2 FROM does_not_exist;
 | 
						|
# let stmt2= SELECT col2 FROM does_not_exist WHERE col1 = 0;
 | 
						|
### $msg is used to generate some explanation of what we compare.
 | 
						|
# let $msg=
 | 
						|
# # One statement is longer than the other.
 | 
						|
# # Both statements fail with the same error message (table does not exist);
 | 
						|
# let $my_rules=
 | 
						|
# t2.COUNT_READ                - t1.COUNT_READ                = 0  AND
 | 
						|
# t2.SUM_NUMBER_OF_BYTES_READ  - t1.SUM_NUMBER_OF_BYTES_READ  = LENGTH('$stmt2') - LENGTH('$stmt1') AND
 | 
						|
# t2.COUNT_WRITE               - t1.COUNT_WRITE               = 0  AND
 | 
						|
# t2.SUM_NUMBER_OF_BYTES_WRITE - t1.SUM_NUMBER_OF_BYTES_WRITE = 0  AND
 | 
						|
# t2.COUNT_MISC                - t1.COUNT_MISC                = 0;
 | 
						|
# --source ../include/socket_check1.inc
 | 
						|
#
 | 
						|
# let stmt1= ....
 | 
						|
# let stmt2= ....
 | 
						|
# let $my_rules= ...
 | 
						|
# --source ../include/socket_check1.inc
 | 
						|
#
 | 
						|
# ...
 | 
						|
#
 | 
						|
 | 
						|
--echo # $title_prefix.$check_num Compare impact of statements
 | 
						|
--echo #       $stmt2
 | 
						|
--echo #       $stmt1
 | 
						|
--echo $msg
 | 
						|
 | 
						|
# Enable this when extending the checks for SQL statements.
 | 
						|
if(0)
 | 
						|
{
 | 
						|
   if (`SELECT CONCAT("$stmt1","$stmt2","$my_rules") LIKE '%_not_set%'`)
 | 
						|
   {
 | 
						|
      --echo # INTERNAL ERROR:
 | 
						|
      --echo # At least one of the variables has no value (is like '%_not_set')
 | 
						|
      --echo # stmt1 : $stmt1
 | 
						|
      --echo # stmt2 : $stmt2
 | 
						|
      --echo # my_rules : $my_rules
 | 
						|
      --echo # Sorry, have to abort
 | 
						|
      exit;
 | 
						|
   }
 | 
						|
}
 | 
						|
 | 
						|
if(`SELECT NOT ( $my_rules )
 | 
						|
    $part
 | 
						|
    AND t2.statement = '$stmt2' AND t1.statement = '$stmt1'`)
 | 
						|
{
 | 
						|
   --enable_query_log
 | 
						|
   --enable_result_log
 | 
						|
   --echo # The compared statistics looks suspicious
 | 
						|
   --echo # We expect
 | 
						|
   --echo $my_rules
 | 
						|
   --echo
 | 
						|
   --horizontal_results
 | 
						|
   eval
 | 
						|
   SELECT $my_rules AS Expect_1
 | 
						|
   $part
 | 
						|
   AND t2.statement = '$stmt2' AND t1.statement = '$stmt1';
 | 
						|
   --echo
 | 
						|
   --vertical_results
 | 
						|
   eval
 | 
						|
   SELECT $diff_column_list
 | 
						|
   $part
 | 
						|
   AND t1.statement = '$stmt1' AND t2.statement = '$stmt2';
 | 
						|
   --echo
 | 
						|
   --horizontal_results
 | 
						|
 | 
						|
   eval
 | 
						|
   SELECT
 | 
						|
      LPAD(COUNT_READ, 8, ' ') AS CNT_READ,
 | 
						|
      LPAD(SUM_NUMBER_OF_BYTES_READ,  10,' ') AS BYTES_READ,
 | 
						|
      LPAD(COUNT_WRITE,9, ' ') AS CNT_WRITE,
 | 
						|
      LPAD(SUM_NUMBER_OF_BYTES_WRITE, 11,' ') AS BYTES_WRITE,
 | 
						|
      LPAD(COUNT_MISC, 8, ' ') AS CNT_MISC, statement
 | 
						|
   FROM mysqltest.socket_summary_by_instance_detail
 | 
						|
   WHERE OBJECT_INSTANCE_BEGIN <> @default_object_instance_begin
 | 
						|
     AND EVENT_NAME LIKE ('%client_connection')
 | 
						|
     AND run = 1
 | 
						|
     AND statement IN('$stmt2','$stmt1');
 | 
						|
   let $print_details= 1;
 | 
						|
}
 | 
						|
# Initialize all variables which depend on the statements to be checked.
 | 
						|
# This prevents that we run with wrong data.
 | 
						|
let $stmt1=    stmt1_not_set;
 | 
						|
let $stmt2=    stmt2_not_set;
 | 
						|
let $my_rules= my_rules_not_set;
 | 
						|
let $msg=      msg_not_set;
 | 
						|
inc $check_num;
 | 
						|
 | 
						|
 |