From 3332f96ad81b6ce7d6dc0b8ca237f6da7d81171d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=98SHIHAN?= Date: Sun, 22 Oct 2023 10:28:58 +1100 Subject: [PATCH 1/2] Fix the truncate() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: ‘SHIHAN --- libraries/classes/Partitioning/Maintenance.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/classes/Partitioning/Maintenance.php b/libraries/classes/Partitioning/Maintenance.php index e4d9666d8d..e0e02770a9 100644 --- a/libraries/classes/Partitioning/Maintenance.php +++ b/libraries/classes/Partitioning/Maintenance.php @@ -7,8 +7,10 @@ namespace PhpMyAdmin\Partitioning; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\Dbal\DatabaseName; use PhpMyAdmin\Dbal\TableName; +use PhpMyAdmin\Table; use PhpMyAdmin\Util; +use function __; use function sprintf; final class Maintenance @@ -135,6 +137,10 @@ final class Maintenance */ public function truncate(DatabaseName $db, TableName $table, string $partition): array { + if (Table::get($table->getName(), $db->getName(), $this->dbi)->isView()) { + return [false, __('This table is a view, it can not be truncated.')]; + } + $query = sprintf( 'ALTER TABLE %s TRUNCATE PARTITION %s;', Util::backquote($table->getName()), From 5cba58c82eb5bc72d80bc469e11787c471f47f70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Sun, 12 Nov 2023 14:58:07 -0300 Subject: [PATCH 2/2] Fix truncate operation in EmptyTableController MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fixes https://github.com/phpmyadmin/phpmyadmin/issues/18762 Signed-off-by: Maurício Meneghini Fauth --- .../Controllers/Database/Structure/EmptyTableController.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libraries/classes/Controllers/Database/Structure/EmptyTableController.php b/libraries/classes/Controllers/Database/Structure/EmptyTableController.php index 0e3309917d..85d3ae507e 100644 --- a/libraries/classes/Controllers/Database/Structure/EmptyTableController.php +++ b/libraries/classes/Controllers/Database/Structure/EmptyTableController.php @@ -14,6 +14,7 @@ use PhpMyAdmin\Message; use PhpMyAdmin\Operations; use PhpMyAdmin\ResponseRenderer; use PhpMyAdmin\Sql; +use PhpMyAdmin\Table; use PhpMyAdmin\Template; use PhpMyAdmin\Transformations; use PhpMyAdmin\Util; @@ -21,6 +22,7 @@ use PhpMyAdmin\Utils\ForeignKey; use function __; use function count; +use function is_string; final class EmptyTableController extends AbstractController { @@ -82,6 +84,10 @@ final class EmptyTableController extends AbstractController $selectedCount = count($selected); for ($i = 0; $i < $selectedCount; $i++) { + if (! is_string($selected[$i]) || Table::get($selected[$i], $GLOBALS['db'], $this->dbi)->isView()) { + continue; + } + $aQuery = 'TRUNCATE '; $aQuery .= Util::backquote($selected[$i]);