Skip to content

Commit b8c26e9

Browse files
committed
Merge branch 'QA_5_2'
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2 parents 090da99 + 64eceff commit b8c26e9

File tree

5 files changed

+131
-1
lines changed

5 files changed

+131
-1
lines changed

ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ phpMyAdmin - ChangeLog
5252
- issue #17392 Fix the actions not being hidden in the Triggers, Routines, Events pages
5353
- issue #18441 Fix execute routine page not working when not in a modal
5454
- issue #18471 Fix SQL statement not being displayed correctly on RTL languages
55+
- issue Fix state times not getting summed in the profiling table
5556

5657
5.2.1 (2023-02-07)
5758
- issue #17522 Fix case where the routes cache file is invalid

libraries/classes/Sql.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ private function getDetailedProfilingStats(array $profilingResults): array
266266
$profiling['chart'][$status] = $oneResult['Duration'];
267267
} else {
268268
$profiling['states'][$status]['calls']++;
269+
$profiling['states'][$status]['total_time'] += $oneResult['Duration'];
269270
$profiling['chart'][$status] += $oneResult['Duration'];
270271
}
271272
}

phpstan-baseline.neon

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7592,7 +7592,7 @@ parameters:
75927592

75937593
-
75947594
message: "#^Cannot access offset 'Duration' on mixed\\.$#"
7595-
count: 6
7595+
count: 7
75967596
path: libraries/classes/Sql.php
75977597

75987598
-

psalm-baseline.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11881,6 +11881,7 @@
1188111881
<code><![CDATA[$oneResult['Duration']]]></code>
1188211882
<code><![CDATA[$oneResult['Duration']]]></code>
1188311883
<code><![CDATA[$oneResult['Duration']]]></code>
11884+
<code><![CDATA[$oneResult['Duration']]]></code>
1188411885
<code><![CDATA[$oneResult['Status']]]></code>
1188511886
<code><![CDATA[$statementInfo->statement->where[0]]]></code>
1188611887
</MixedArrayAccess>
@@ -11898,6 +11899,7 @@
1189811899
<code>$prevTable</code>
1189911900
<code><![CDATA[$profiling['chart'][$status]]]></code>
1190011901
<code><![CDATA[$profiling['chart'][$status]]]></code>
11902+
<code><![CDATA[$profiling['states'][$status]['total_time']]]></code>
1190111903
<code><![CDATA[$profiling['total_time']]]></code>
1190211904
<code>$resultSetColumnNames[]</code>
1190311905
<code>$sortCol</code>
@@ -11918,6 +11920,7 @@
1191811920
<code>$maxRows</code>
1191911921
<code><![CDATA[$oneResult['Duration']]]></code>
1192011922
<code><![CDATA[$profiling['chart'][$status]]]></code>
11923+
<code><![CDATA[$profiling['states'][$status]['total_time']]]></code>
1192111924
</MixedOperand>
1192211925
<MixedPropertyFetch>
1192311926
<code><![CDATA[$oneFieldMeta->table]]></code>

test/classes/SqlTest.php

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use PhpMyAdmin\Template;
1414
use PhpMyAdmin\Tests\Stubs\DbiDummy;
1515
use PhpMyAdmin\Transformations;
16+
use ReflectionMethod;
1617
use stdClass;
1718

1819
use const MYSQLI_TYPE_SHORT;
@@ -613,4 +614,128 @@ public function testExecuteQueryAndSendQueryResponse(): void
613614
$this->assertStringContainsString('data-type="string"', $actual);
614615
$this->assertStringContainsString('data-type="timestamp"', $actual);
615616
}
617+
618+
public function testGetDetailedProfilingStatsWithoutData(): void
619+
{
620+
$method = new ReflectionMethod($this->sql, 'getDetailedProfilingStats');
621+
$this->assertSame(
622+
['total_time' => 0, 'states' => [], 'chart' => [], 'profile' => []],
623+
$method->invoke($this->sql, []),
624+
);
625+
}
626+
627+
public function testGetDetailedProfilingStatsWithData(): void
628+
{
629+
$method = new ReflectionMethod($this->sql, 'getDetailedProfilingStats');
630+
$profiling = [
631+
['Status' => 'Starting', 'Duration' => '0.000017'],
632+
['Status' => 'checking permissions', 'Duration' => '0.000003'],
633+
['Status' => 'Opening tables', 'Duration' => '0.000152'],
634+
['Status' => 'After opening tables', 'Duration' => '0.000004'],
635+
['Status' => 'System lock', 'Duration' => '0.000002'],
636+
['Status' => 'table lock', 'Duration' => '0.000003'],
637+
['Status' => 'Opening tables', 'Duration' => '0.000008'],
638+
['Status' => 'After opening tables', 'Duration' => '0.000002'],
639+
['Status' => 'System lock', 'Duration' => '0.000002'],
640+
['Status' => 'table lock', 'Duration' => '0.000012'],
641+
['Status' => 'Unlocking tables', 'Duration' => '0.000003'],
642+
['Status' => 'closing tables', 'Duration' => '0.000005'],
643+
['Status' => 'init', 'Duration' => '0.000007'],
644+
['Status' => 'Optimizing', 'Duration' => '0.000004'],
645+
['Status' => 'Statistics', 'Duration' => '0.000006'],
646+
['Status' => 'Preparing', 'Duration' => '0.000006'],
647+
['Status' => 'Executing', 'Duration' => '0.000002'],
648+
['Status' => 'Sending data', 'Duration' => '0.000029'],
649+
['Status' => 'End of update loop', 'Duration' => '0.000003'],
650+
['Status' => 'Query end', 'Duration' => '0.000002'],
651+
['Status' => 'Commit', 'Duration' => '0.000002'],
652+
['Status' => 'closing tables', 'Duration' => '0.000002'],
653+
['Status' => 'Unlocking tables', 'Duration' => '0.000001'],
654+
['Status' => 'closing tables', 'Duration' => '0.000002'],
655+
['Status' => 'Starting cleanup', 'Duration' => '0.000002'],
656+
['Status' => 'Freeing items', 'Duration' => '0.000002'],
657+
['Status' => 'Updating status', 'Duration' => '0.000007'],
658+
['Status' => 'Reset for next command', 'Duration' => '0.000009'],
659+
];
660+
$expected = [
661+
'total_time' => 0.000299,
662+
'states' => [
663+
'Starting' => ['total_time' => '0.000017', 'calls' => 1],
664+
'Checking Permissions' => ['total_time' => '0.000003', 'calls' => 1],
665+
'Opening Tables' => ['total_time' => 0.00016, 'calls' => 2],
666+
'After Opening Tables' => ['total_time' => 6.0E-6, 'calls' => 2],
667+
'System Lock' => ['total_time' => 4.0E-6, 'calls' => 2],
668+
'Table Lock' => ['total_time' => 1.5E-5, 'calls' => 2],
669+
'Unlocking Tables' => ['total_time' => 4.0E-6, 'calls' => 2],
670+
'Closing Tables' => ['total_time' => 9.0E-6, 'calls' => 3],
671+
'Init' => ['total_time' => '0.000007', 'calls' => 1],
672+
'Optimizing' => ['total_time' => '0.000004', 'calls' => 1],
673+
'Statistics' => ['total_time' => '0.000006', 'calls' => 1],
674+
'Preparing' => ['total_time' => '0.000006', 'calls' => 1],
675+
'Executing' => ['total_time' => '0.000002', 'calls' => 1],
676+
'Sending Data' => ['total_time' => '0.000029', 'calls' => 1],
677+
'End Of Update Loop' => ['total_time' => '0.000003', 'calls' => 1],
678+
'Query End' => ['total_time' => '0.000002', 'calls' => 1],
679+
'Commit' => ['total_time' => '0.000002', 'calls' => 1],
680+
'Starting Cleanup' => ['total_time' => '0.000002', 'calls' => 1],
681+
'Freeing Items' => ['total_time' => '0.000002', 'calls' => 1],
682+
'Updating Status' => ['total_time' => '0.000007', 'calls' => 1],
683+
'Reset For Next Command' => ['total_time' => '0.000009', 'calls' => 1],
684+
],
685+
'chart' => [
686+
'Starting' => '0.000017',
687+
'Checking Permissions' => '0.000003',
688+
'Opening Tables' => 0.00016,
689+
'After Opening Tables' => 6.0E-6,
690+
'System Lock' => 4.0E-6,
691+
'Table Lock' => 1.5E-5,
692+
'Unlocking Tables' => 4.0E-6,
693+
'Closing Tables' => 9.0E-6,
694+
'Init' => '0.000007',
695+
'Optimizing' => '0.000004',
696+
'Statistics' => '0.000006',
697+
'Preparing' => '0.000006',
698+
'Executing' => '0.000002',
699+
'Sending Data' => '0.000029',
700+
'End Of Update Loop' => '0.000003',
701+
'Query End' => '0.000002',
702+
'Commit' => '0.000002',
703+
'Starting Cleanup' => '0.000002',
704+
'Freeing Items' => '0.000002',
705+
'Updating Status' => '0.000007',
706+
'Reset For Next Command' => '0.000009',
707+
],
708+
'profile' => [
709+
['status' => 'Starting', 'duration' => '17 µ', 'duration_raw' => '0.000017'],
710+
['status' => 'Checking Permissions', 'duration' => '3 µ', 'duration_raw' => '0.000003'],
711+
['status' => 'Opening Tables', 'duration' => '152 µ', 'duration_raw' => '0.000152'],
712+
['status' => 'After Opening Tables', 'duration' => '4 µ', 'duration_raw' => '0.000004'],
713+
['status' => 'System Lock', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
714+
['status' => 'Table Lock', 'duration' => '3 µ', 'duration_raw' => '0.000003'],
715+
['status' => 'Opening Tables', 'duration' => '8 µ', 'duration_raw' => '0.000008'],
716+
['status' => 'After Opening Tables', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
717+
['status' => 'System Lock', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
718+
['status' => 'Table Lock', 'duration' => '12 µ', 'duration_raw' => '0.000012'],
719+
['status' => 'Unlocking Tables', 'duration' => '3 µ', 'duration_raw' => '0.000003'],
720+
['status' => 'Closing Tables', 'duration' => '5 µ', 'duration_raw' => '0.000005'],
721+
['status' => 'Init', 'duration' => '7 µ', 'duration_raw' => '0.000007'],
722+
['status' => 'Optimizing', 'duration' => '4 µ', 'duration_raw' => '0.000004'],
723+
['status' => 'Statistics', 'duration' => '6 µ', 'duration_raw' => '0.000006'],
724+
['status' => 'Preparing', 'duration' => '6 µ', 'duration_raw' => '0.000006'],
725+
['status' => 'Executing', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
726+
['status' => 'Sending Data', 'duration' => '29 µ', 'duration_raw' => '0.000029'],
727+
['status' => 'End Of Update Loop', 'duration' => '3 µ', 'duration_raw' => '0.000003'],
728+
['status' => 'Query End', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
729+
['status' => 'Commit', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
730+
['status' => 'Closing Tables', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
731+
['status' => 'Unlocking Tables', 'duration' => '1 µ', 'duration_raw' => '0.000001'],
732+
['status' => 'Closing Tables', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
733+
['status' => 'Starting Cleanup', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
734+
['status' => 'Freeing Items', 'duration' => '2 µ', 'duration_raw' => '0.000002'],
735+
['status' => 'Updating Status', 'duration' => '7 µ', 'duration_raw' => '0.000007'],
736+
['status' => 'Reset For Next Command', 'duration' => '9 µ', 'duration_raw' => '0.000009'],
737+
],
738+
];
739+
$this->assertSame($expected, $method->invoke($this->sql, $profiling));
740+
}
616741
}

0 commit comments

Comments
 (0)