phpmyadmin / phpmyadmin/phpmyadmin

TypeError: preg_replace(): Argument #3 ($subject) must be of type array|string, null given

Open
#18,183 10 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

affects/5.2 affects/6.0 Bug confirmed/5.2 confirmed/6.0
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:

  1. Have a table with a JSON type column
  2. Open the database on MariaDB
  3. Click on Search for that table
  4. 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

https://user-images.githubusercontent.com/25424343/222019627-065288bf-777d-4ec5-bfdd-de42bd997ae9.mp4

https://user-images.githubusercontent.com/25424343/222019646-f3a83638-56a4-43fe-a40a-8f47ec03f141.mp4

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.