[Bug]: Problem exporting an unsual index (IFNULL expression)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 3/5
- Thời gian dự kiến
- 1-2 ngày
- Mức phù hợp với người mới
- 48/100
Hướng nghiên cứu
Lỗi được báo cáo qua vendor/phpmyadmin/sql-parser/src/Context.php:608 và Components/Key.php:203 trong quá trình export của ExportSql.php. Hãy tái hiện lỗi bằng bảng drafts và định nghĩa chỉ mục được cung cấp, sau đó kiểm tra đường dẫn parser/build; hoàn tất khi export không còn ném exception và giữ nguyên IFNULL(touser,'CHAT') thay vì xuất CHAT.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
I added this index to a table:
ALTER TABLE drafts
ADD UNIQUE unique_draft (type,user,(IFNULL(touser,'_CHAT_'))) USING BTREE;
and when I try to export it fails with this error (on hosting phpmyadmin version 5.1.0, mysql is Percona 8.0.43-34):
Fatal error: Uncaught TypeError: str_replace(): Argument phpmyadmin/phpmyadmin#3 ($subject) must be of type array|string, null given in /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Context.php:608
Stack trace:
#0 /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Context.php(608): str_replace()
phpmyadmin/phpmyadmin#1 /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Components/Key.php(203): PhpMyAdmin\SqlParser\Context::escape()
phpmyadmin/phpmyadmin#2 /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Component.php(74): PhpMyAdmin\SqlParser\Components\Key::build()
phpmyadmin/phpmyadmin#3 /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Components/CreateDefinition.php(360): PhpMyAdmin\SqlParser\Component->__toString()
phpmyadmin/phpmyadmin#4 /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Component.php(74): PhpMyAdmin\SqlParser\Components\CreateDefinition::build()
phpmyadmin/phpmyadmin#5 [internal function]: PhpMyAdmin\SqlParser\Component->__toString()
phpmyadmin/phpmyadmin#6 /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Components/CreateDefinition.php(339): implode()
phpmyadmin/phpmyadmin#7 /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Statements/CreateStatement.php(380): PhpMyAdmin\SqlParser\Components\CreateDefinition::build()
phpmyadmin/phpmyadmin#8 /var/www/html/phpMyAdmin/libraries/classes/Plugins/Export/ExportSql.php(2951): PhpMyAdmin\SqlParser\Statements\CreateStatement->build()
phpmyadmin/phpmyadmin#9 /var/www/html/phpMyAdmin/libraries/classes/Plugins/Export/ExportSql.php(1638): PhpMyAdmin\Plugins\Export\ExportSql->replaceWithAliases()
phpmyadmin/phpmyadmin#10 /var/www/html/phpMyAdmin/libraries/classes/Plugins/Export/ExportSql.php(2138): PhpMyAdmin\Plugins\Export\ExportSql->getTableDef()
phpmyadmin/phpmyadmin#11 /var/www/html/phpMyAdmin/libraries/classes/Export.php(813): PhpMyAdmin\Plugins\Export\ExportSql->exportStructure()
phpmyadmin/phpmyadmin#12 /var/www/html/phpMyAdmin/libraries/classes/Controllers/ExportController.php(549): PhpMyAdmin\Export->exportDatabase()
phpmyadmin/phpmyadmin#13 /var/www/html/phpMyAdmin/libraries/classes/Routing.php(186): PhpMyAdmin\Controllers\ExportController->index()
phpmyadmin/phpmyadmin#14 /var/www/html/phpMyAdmin/index.php(50): PhpMyAdmin\Routing::callControllerForRoute()
phpmyadmin/phpmyadmin#15 {main}
thrown in /var/www/html/phpMyAdmin/vendor/phpmyadmin/sql-parser/src/Context.php on line 608
On version 5.2.1 with mysql 8.0.41 it won't fails but the export result is like this
ALTER TABLE drafts ADD UNIQUE KEY unique_draft (type,user,(_CHAT_));
which is wrong.
How to Reproduce
Table structure is:
CREATE TABLE drafts (
type enum('CHAT','MSGS') CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
user varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
touser varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
text text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
date datetime NOT NULL
);
ALTER TABLE drafts ADD UNIQUE unique_draft (type, user,(IFNULL(touser,'_CHAT_'))) USING BTREE;
Expected behavior
I expect it to export the index like the original one
Screenshots
No response
Operating System
No response
Web Server
No response
Database Server
MySQL
Database version
No response
PHP version
No response
phpMyAdmin version
5.1.0
browser
No response
Additional context
No response
- Ngôn ngữ chính
- PHP
- Star
- 485
- Fork
- 119
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của phpmyadmin/sql-parser
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
phpmyadmin/sql-parser#655 · 1 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 55/100
phpmyadmin/sql-parser#666 ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
phpmyadmin/sql-parser#662 · 2 reaction ·
-
MariaDB and MySQL contexts Đang mởkind/support
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 45/100
phpmyadmin/sql-parser#653 · 1 reaction ·
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 70/100
phpmyadmin/sql-parser#649 ·
Tất cả issue của phpmyadmin/sql-parser
Issue tương tự
-
Admissions heading updates Đang mởa11y admissions.uiowa.edu needs grooming SiteImprove best practice
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
-
Save States Menu Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
Error on exporting the error log Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
pluginsGLPI/datainjection#673 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
octobercms/october#6130 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
getgrav/grav-plugin-form#656 ·