From d1e10a91584fe6f7d038e0dddfb58954daa5ad5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maur=C3=ADcio=20Meneghini=20Fauth?= Date: Sat, 20 Jun 2020 15:09:10 -0300 Subject: [PATCH] Extract optimize action from db structure index method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Related to #16173. Signed-off-by: MaurĂ­cio Meneghini Fauth --- js/database/structure.js | 2 + .../Database/StructureController.php | 58 ++++++++++++++++--- libraries/routes.php | 1 + 3 files changed, 54 insertions(+), 7 deletions(-) diff --git a/js/database/structure.js b/js/database/structure.js index 5d0ce535c7f8..13dfd7d46f20 100644 --- a/js/database/structure.js +++ b/js/database/structure.js @@ -313,6 +313,8 @@ AJAX.registerOnload('database/structure.js', function () { url = 'index.php?route=/database/structure/empty-form'; } else if (action === 'export') { url = 'index.php?route=/database/structure/export'; + } else if (action === 'optimize_tbl') { + url = 'index.php?route=/database/structure/optimize-table'; } else if (action === 'show_create') { url = 'index.php?route=/database/structure/show-create'; } else { diff --git a/libraries/classes/Controllers/Database/StructureController.php b/libraries/classes/Controllers/Database/StructureController.php index a0de196132c2..6eacc2d9852a 100644 --- a/libraries/classes/Controllers/Database/StructureController.php +++ b/libraries/classes/Controllers/Database/StructureController.php @@ -402,7 +402,6 @@ public function multiSubmitAction(): void // selected tables $selected = $_POST['selected_tbl']; switch ($submit_mult) { - case 'optimize_tbl': case 'repair_tbl': $query_type = $submit_mult; unset($submit_mult); @@ -468,12 +467,6 @@ public function multiSubmitAction(): void $reload = 1; break; - case 'optimize_tbl': - $sql_query .= (empty($sql_query) ? 'OPTIMIZE TABLE ' : ', ') - . Util::backquote($selected[$i]); - $execute_query_later = true; - break; - case 'repair_tbl': $sql_query .= (empty($sql_query) ? 'REPAIR TABLE ' : ', ') . Util::backquote($selected[$i]); @@ -1878,4 +1871,55 @@ public function checksumTable(): void $this->index(); } + + public function optimizeTable(): void + { + global $db, $goto, $pmaThemeImage; + + $selected = $_POST['selected_tbl'] ?? []; + + if (empty($selected)) { + $this->response->setRequestStatus(false); + $this->response->addJSON('message', __('No table selected.')); + + return; + } + + $sql_query = ''; + $selectedCount = count($selected); + + for ($i = 0; $i < $selectedCount; $i++) { + $sql_query .= (empty($sql_query) ? 'OPTIMIZE TABLE ' : ', ') . Util::backquote($selected[$i]); + } + + $sql = new Sql(); + $sql->executeQueryAndSendQueryResponse( + null, + false, + $db, + '', + null, + null, + null, + null, + null, + null, + $goto, + $pmaThemeImage, + null, + null, + 'optimize_tbl', + $sql_query, + $selected, + null + ); + + if (empty($_POST['message'])) { + $_POST['message'] = Message::success(); + } + + unset($_POST['submit_mult']); + + $this->index(); + } } diff --git a/libraries/routes.php b/libraries/routes.php index 6aeb0b83809b..c35431bafd26 100644 --- a/libraries/routes.php +++ b/libraries/routes.php @@ -157,6 +157,7 @@ StructureController::class, 'addRemoveFavoriteTablesAction', ]); + $routes->post('/optimize-table', [StructureController::class, 'optimizeTable']); $routes->addRoute(['GET', 'POST'], '/real-row-count', [ StructureController::class, 'handleRealRowCountRequestAction',