Skip to content

Commit cd90930

Browse files
committed
Merge branch 'QA_5_2'
Signed-off-by: Maurício Meneghini Fauth <mauricio@fauth.dev>
2 parents 0062ce6 + e2c7aa8 commit cd90930

3 files changed

Lines changed: 37 additions & 4 deletions

File tree

ChangeLog

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ phpMyAdmin - ChangeLog
2525
- issue #17593 Table filtering now works when action buttons are on the right side of the row
2626
- issue #17388 Find and Replace using regex now makes a valid query if no matching result set found
2727
- issue #17551 Enum/Set editor will not fail to open when creating a new column
28+
- issue #17659 Fix error when a database group is named tables, views, functions, procedures or events
2829

2930
5.2.0 (2022-05-10)
3031
- issue #16521 Upgrade Bootstrap to version 5

libraries/classes/Navigation/NavigationTree.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
use function mb_strlen;
4242
use function mb_strpos;
4343
use function mb_substr;
44-
use function method_exists;
4544
use function sort;
4645
use function sprintf;
4746
use function strcasecmp;
@@ -1306,11 +1305,10 @@ private function fastFilterHtml(Node $node): string
13061305

13071306
$nodeIsSpecial = in_array($node->realName, self::SPECIAL_NODE_NAMES, true);
13081307

1309-
/** @var Node $realParent */
13101308
$realParent = $node->realParent();
13111309
if (
1312-
($nodeIsContainer && $nodeIsSpecial)
1313-
&& method_exists($realParent, 'getPresence')
1310+
$nodeIsContainer && $nodeIsSpecial
1311+
&& $realParent instanceof Node
13141312
&& $realParent->getPresence($node->realName) >= $filterItemMin
13151313
) {
13161314
$paths = $node->getPaths();

test/classes/Navigation/NavigationTreeTest.php

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,38 @@ public function testRenderDbSelect(): void
7777
$result = $this->object->renderDbSelect();
7878
$this->assertStringContainsString('pma_navigation_select_database', $result);
7979
}
80+
81+
public function testDatabaseGrouping(): void
82+
{
83+
$GLOBALS['db'] = '';
84+
$GLOBALS['cfg']['NavigationTreeDbSeparator'] = '__';
85+
86+
// phpcs:disable Generic.Files.LineLength.TooLong
87+
$dummyDbi = $this->createDbiDummy();
88+
$dummyDbi->addResult(
89+
'SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`, (SELECT DB_first_level FROM ( SELECT DISTINCT SUBSTRING_INDEX(SCHEMA_NAME, \'__\', 1) DB_first_level FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t ORDER BY DB_first_level ASC LIMIT 0, 100) t2 WHERE TRUE AND 1 = LOCATE(CONCAT(DB_first_level, \'__\'), CONCAT(SCHEMA_NAME, \'__\')) ORDER BY SCHEMA_NAME ASC',
90+
[['functions__a'], ['functions__b']],
91+
['SCHEMA_NAME']
92+
);
93+
$dummyDbi->addResult(
94+
'SELECT COUNT(*) FROM ( SELECT DISTINCT SUBSTRING_INDEX(SCHEMA_NAME, \'__\', 1) DB_first_level FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t',
95+
[['2']]
96+
);
97+
$dummyDbi->addResult(
98+
'SELECT COUNT(*) FROM ( SELECT DISTINCT SUBSTRING_INDEX(SCHEMA_NAME, \'__\', 1) DB_first_level FROM INFORMATION_SCHEMA.SCHEMATA WHERE TRUE ) t',
99+
[['2']]
100+
);
101+
// phpcs:enable
102+
103+
$dbi = $this->createDatabaseInterface($dummyDbi);
104+
$GLOBALS['dbi'] = $dbi;
105+
106+
$object = new NavigationTree(new Template(), $dbi);
107+
$result = $object->renderState();
108+
$this->assertStringContainsString('<li class="first navGroup">', $result);
109+
$this->assertStringContainsString('functions' . "\n", $result);
110+
$this->assertStringContainsString('<div class="list_container" style="display: none;">', $result);
111+
$this->assertStringContainsString('functions__a', $result);
112+
$this->assertStringContainsString('functions__b', $result);
113+
}
80114
}

0 commit comments

Comments
 (0)