phpmyadmin / phpmyadmin/phpmyadmin
TypeError: preg_replace(): Argument #3 ($subject) must be of type array|string, null given
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 7.9k
- Forks
- 3.6k
- Avg merge
- 4d 18h
- Merged PRs (30d)
- 36
Description
Describe the bug
I have a table that has a JSON type column created on MySQL. If the database is open on MariaDB, it will show the table in use.
Now, if I click on Browse, a #4161 - Unknown data type: 'MYSQL_JSON' error is given. But, if I click on Search, a few errors come up.
5.2.2-dev
TypeError: preg_replace(): Argument #3 ($subject) must be of type array|string, null given
Internal error in .\templates\table\search\index.twig#72 Twig\Error\RuntimeError: An exception has been thrown during the rendering of a template ("Undefined array key 0").```
Warning in .\libraries\classes\Controllers\Table\SearchController.php#346
Undefined array key 0
Warning in .\libraries\classes\Controllers\Table\SearchController.php#347
Undefined array key 0
To Reproduce
Steps to reproduce the behavior:
- Have a table with a
JSONtype column - Open the database on MariaDB
- Click on Search for that table
- See error
Expected behavior
A #4161 - Unknown data type: 'MYSQL_JSON' error should be given, like it happens when you click on Browser Insert.
Screenshots
5.2.2-dev
Server configuration
- phpMyAdmin version: 5.2.2-dev, 6.0.0-dev
Additional context
5.2.2-dev
Warning in .\libraries\classes\Controllers\Table\SearchController.php#346
Undefined array key 0
Backtrace
CoreExtension.php#1635: PhpMyAdmin\Controllers\Table\SearchController->getColumnProperties(
integer 0,
integer 0,
)
89e0cdc4eec79bf3db7e00c4b27a82ac.php#205: twig_get_attribute(
,
,
,
string 'getColumnProperties',
array,
string 'method',
boolean false,
boolean false,
boolean false,
integer 72,
)
Template.php#394: __TwigTemplate_4f09a00a8ff807a41e95ef41004b827a->doDisplay(
array,
array,
)
Template.php#367: Twig\Template->displayWithErrorHandling(
array,
array,
)
Template.php#379: Twig\Template->display(array)
TemplateWrapper.php#40: Twig\Template->render(
array,
array,
)
Template.php#156: Twig\TemplateWrapper->render(array)
AbstractController.php#35: PhpMyAdmin\Template->render(
string 'table/search/index',
array,
)
SearchController.php#292: PhpMyAdmin\Controllers\AbstractController->render(
string 'table/search/index',
array,
)
SearchController.php#204: PhpMyAdmin\Controllers\Table\SearchController->displaySelectionFormAction()
Routing.php#191: PhpMyAdmin\Controllers\Table\SearchController->__invoke(
,
array,
)
index.php#43: PhpMyAdmin\Routing::callControllerForRoute(
,
string '/table/search',
,
,
)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in libraries/classes/Controllers/Table/SearchController.php around lines 346-347 and the template at templates/table/search/index.twig line 72. Reproduce the Search flow with a MySQL JSON column opened through MariaDB, then trace the missing column properties. Done means Search reports the expected #4161 unknown-data-type error instead of the TypeError and undefined-array-key warnings.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- mariadb, mysql, php
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100