l10n->t('MySQL row format'); } public function getCategory(): string { return 'database'; } public function run(): SetupResult { if (!$this->connection->getDatabasePlatform() instanceof MySQLPlatform) { return SetupResult::success($this->l10n->t('You are not using MySQL')); } $wrongRowFormatTables = $this->getRowNotDynamicTables(); if (empty($wrongRowFormatTables)) { return SetupResult::success($this->l10n->t('None of your table use ROW_FORMAT=Compressed')); } return SetupResult::warning( $this->l10n->n( 'Table %s is not using ROW_FORMAT=Dynamic. This format offers the best database performances for Nextcloud. Please change the row format to Dynamic.', 'Some tables are not using ROW_FORMAT=Dynamic. This format offers the best database performances for Nextcloud. Please change the row format to Dynamic on the following tables: %s.', count($wrongRowFormatTables), [implode(', ', $wrongRowFormatTables)], ), 'https://dev.mysql.com/doc/refman/en/innodb-row-format.html', ); } /** * @return string[] */ private function getRowNotDynamicTables(): array { $sql = 'SELECT table_name FROM information_schema.tables WHERE table_schema = ? AND table_name LIKE "*PREFIX*%" AND row_format != "Dynamic";'; return $this->connection->executeQuery( $sql, [$this->config->getSystemValueString('dbname')], )->fetchFirstColumn(); } }