From 6909ef45b32cd847541621442e171b7db66ea689 Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Sun, 27 Oct 2024 21:18:56 +0000 Subject: [PATCH] Merge ColumnFull & Column Signed-off-by: Kamil Tekiela --- phpstan-baseline.neon | 26 ++++++++- psalm-baseline.xml | 22 +++++--- src/Column.php | 3 ++ src/ColumnFull.php | 21 -------- src/ConfigStorage/Relation.php | 2 +- .../Table/FindReplaceController.php | 2 +- src/Controllers/Table/SearchController.php | 2 +- .../Table/Structure/ChangeController.php | 8 +-- src/Controllers/Table/StructureController.php | 6 +-- .../Table/ZoomSearchController.php | 2 +- src/Database/CentralColumns.php | 16 +++--- src/Database/Designer/Common.php | 8 +-- src/Dbal/DatabaseInterface.php | 54 +++++++------------ src/InsertEdit.php | 10 ++-- src/Normalization.php | 2 +- src/Plugins/Export/ExportSql.php | 2 +- src/Query/Generator.php | 45 +++++++++++----- src/SqlQueryForm.php | 4 +- src/Tracking/Tracker.php | 2 +- tests/unit/ConfigStorage/RelationTest.php | 6 +-- .../Controllers/Table/SqlControllerTest.php | 2 +- .../Table/StructureControllerTest.php | 2 +- tests/unit/Database/CentralColumnsTest.php | 8 +-- tests/unit/Database/SearchTest.php | 4 +- tests/unit/DatabaseInterfaceTest.php | 9 ++-- tests/unit/InsertEditTest.php | 28 +++++----- tests/unit/NormalizationTest.php | 8 +-- .../Plugins/Export/ExportHtmlwordTest.php | 12 ++--- tests/unit/Plugins/Export/ExportLatexTest.php | 4 +- .../Plugins/Export/ExportMediawikiTest.php | 4 +- tests/unit/Plugins/Export/ExportOdtTest.php | 8 +-- tests/unit/Plugins/Export/ExportSqlTest.php | 5 +- .../Plugins/Export/ExportTexytextTest.php | 9 ++-- tests/unit/Query/GeneratorTest.php | 10 ++-- tests/unit/Tracking/TrackerTest.php | 6 +-- 35 files changed, 189 insertions(+), 173 deletions(-) delete mode 100644 src/ColumnFull.php diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 6af76e5175..5bca99e2ee 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -5560,7 +5560,7 @@ parameters: path: src/Database/CentralColumns.php - - message: '#^Parameter \#1 \$def of method PhpMyAdmin\\Database\\CentralColumns\:\:getInsertQuery\(\) expects PhpMyAdmin\\ColumnFull, PhpMyAdmin\\ColumnFull\|null given\.$#' + message: '#^Parameter \#1 \$def of method PhpMyAdmin\\Database\\CentralColumns\:\:getInsertQuery\(\) expects PhpMyAdmin\\Column, PhpMyAdmin\\Column\|null given\.$#' identifier: argument.type count: 1 path: src/Database/CentralColumns.php @@ -20040,12 +20040,36 @@ parameters: count: 9 path: tests/unit/Plugins/Export/ExportSqlTest.php + - + message: '#^Class PhpMyAdmin\\Column constructor invoked with 6 parameters, 9 required\.$#' + identifier: arguments.count + count: 1 + path: tests/unit/Plugins/Export/ExportSqlTest.php + - message: '#^Parameter \#2 \$haystack of static method PHPUnit\\Framework\\Assert\:\:assertStringContainsString\(\) expects string, mixed given\.$#' identifier: argument.type count: 2 path: tests/unit/Plugins/Export/ExportSqlTest.php + - + message: '#^Parameter \#3 \$collation of class PhpMyAdmin\\Column constructor expects string\|null, false given\.$#' + identifier: argument.type + count: 1 + path: tests/unit/Plugins/Export/ExportSqlTest.php + + - + message: '#^Parameter \#4 \$isNull of class PhpMyAdmin\\Column constructor expects bool, string given\.$#' + identifier: argument.type + count: 1 + path: tests/unit/Plugins/Export/ExportSqlTest.php + + - + message: '#^Parameter \#5 \$key of class PhpMyAdmin\\Column constructor expects string, null given\.$#' + identifier: argument.type + count: 1 + path: tests/unit/Plugins/Export/ExportSqlTest.php + - message: '#^Property PhpMyAdmin\\Config\:\:\$selectedServer \(array\{host\: string, port\: string, socket\: string, ssl\: bool, ssl_key\: string\|null, ssl_cert\: string\|null, ssl_ca\: string\|null, ssl_ca_path\: string\|null, \.\.\.\}\) does not accept array\{host\: string, port\: 80, socket\: string, ssl\: bool, ssl_key\: string\|null, ssl_cert\: string\|null, ssl_ca\: string\|null, ssl_ca_path\: string\|null, \.\.\.\}\.$#' identifier: assign.propertyType diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 375f189b77..28f2e98d37 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -2359,9 +2359,6 @@ - - - @@ -2381,6 +2378,7 @@ + @@ -2536,15 +2534,13 @@ - - - + @@ -4022,7 +4018,7 @@ * Visible?: string, * Expression?: string|null * }>]]> - fetchAllAssoc(), 'Field')]]> + fetchAllAssoc(), 'COLUMN_NAME')]]> ]]> @@ -12319,6 +12315,10 @@ + + + + selectedServer]]> @@ -12329,6 +12329,14 @@ + + + + + + + + diff --git a/src/Column.php b/src/Column.php index 16e87ad592..46d21840fe 100644 --- a/src/Column.php +++ b/src/Column.php @@ -9,10 +9,13 @@ final readonly class Column public function __construct( public string $field, public string $type, + public string|null $collation, public bool $isNull, public string $key, public string|null $default, public string $extra, + public string $privileges, + public string $comment, ) { } } diff --git a/src/ColumnFull.php b/src/ColumnFull.php deleted file mode 100644 index b74c1b9190..0000000000 --- a/src/ColumnFull.php +++ /dev/null @@ -1,21 +0,0 @@ -dbi->getColumns($db, $table, true); + $columns = $this->dbi->getColumns($db, $table); foreach ($columns as $column) { if ($column->comment === '') { continue; diff --git a/src/Controllers/Table/FindReplaceController.php b/src/Controllers/Table/FindReplaceController.php index f92c9b2046..1590c45403 100644 --- a/src/Controllers/Table/FindReplaceController.php +++ b/src/Controllers/Table/FindReplaceController.php @@ -134,7 +134,7 @@ final class FindReplaceController implements InvocableController private function loadTableInfo(): void { // Gets the list and number of columns - $columns = $this->dbi->getColumns(Current::$database, Current::$table, true); + $columns = $this->dbi->getColumns(Current::$database, Current::$table); foreach ($columns as $row) { // set column name diff --git a/src/Controllers/Table/SearchController.php b/src/Controllers/Table/SearchController.php index d0d9d350bb..59cec7378e 100644 --- a/src/Controllers/Table/SearchController.php +++ b/src/Controllers/Table/SearchController.php @@ -105,7 +105,7 @@ final class SearchController implements InvocableController private function loadTableInfo(): void { // Gets the list and number of columns - $columns = $this->dbi->getColumns(Current::$database, Current::$table, true); + $columns = $this->dbi->getColumns(Current::$database, Current::$table); // Get details about the geometry functions $geomTypes = Gis::getDataTypes(); diff --git a/src/Controllers/Table/Structure/ChangeController.php b/src/Controllers/Table/Structure/ChangeController.php index ff82c385a7..8cc9aca246 100644 --- a/src/Controllers/Table/Structure/ChangeController.php +++ b/src/Controllers/Table/Structure/ChangeController.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Controllers\Table\Structure; -use PhpMyAdmin\ColumnFull; +use PhpMyAdmin\Column; use PhpMyAdmin\Controllers\InvocableController; use PhpMyAdmin\Current; use PhpMyAdmin\Dbal\DatabaseInterface; @@ -73,13 +73,13 @@ final class ChangeController implements InvocableController */ private function displayHtmlForColumnChange(array $selected): void { - $fieldsMeta = $this->dbi->getColumns(Current::$database, Current::$table, true); + $fieldsMeta = $this->dbi->getColumns(Current::$database, Current::$table); $fieldsMeta = array_values(array_filter( $fieldsMeta, - static fn (ColumnFull $column): bool => in_array($column->field, $selected, true), + static fn (Column $column): bool => in_array($column->field, $selected, true), )); // TODO: Refactor columnsDefinition->displayForm() method to avoid unwrapping DTO - $fieldsMeta = array_map(static fn (ColumnFull $column): array => [ + $fieldsMeta = array_map(static fn (Column $column): array => [ 'Field' => $column->field, 'Type' => $column->type, 'Collation' => $column->collation, diff --git a/src/Controllers/Table/StructureController.php b/src/Controllers/Table/StructureController.php index e8ee0a5364..a980d85581 100644 --- a/src/Controllers/Table/StructureController.php +++ b/src/Controllers/Table/StructureController.php @@ -6,7 +6,7 @@ namespace PhpMyAdmin\Controllers\Table; use DateTimeImmutable; use PhpMyAdmin\Charsets; -use PhpMyAdmin\ColumnFull; +use PhpMyAdmin\Column; use PhpMyAdmin\Config; use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\ConfigStorage\Relation; @@ -115,7 +115,7 @@ class StructureController implements InvocableController ->getTable(Current::$database, Current::$table) ->getColumnsWithIndex(Index::UNIQUE | Index::INDEX | Index::SPATIAL | Index::FULLTEXT); - $fields = $this->dbi->getColumns(Current::$database, Current::$table, true); + $fields = $this->dbi->getColumns(Current::$database, Current::$table); $this->response->addHTML($this->displayStructure( $relationParameters, @@ -132,7 +132,7 @@ class StructureController implements InvocableController /** * Displays the table structure ('show table' works correct since 3.23.03) * - * @param ColumnFull[] $fields Fields + * @param Column[] $fields Fields * @param (string|int)[] $columnsWithIndex Columns with index * @psalm-param non-empty-string $route */ diff --git a/src/Controllers/Table/ZoomSearchController.php b/src/Controllers/Table/ZoomSearchController.php index 93367bdd97..531dc9911c 100644 --- a/src/Controllers/Table/ZoomSearchController.php +++ b/src/Controllers/Table/ZoomSearchController.php @@ -193,7 +193,7 @@ final class ZoomSearchController implements InvocableController private function loadTableInfo(): void { // Gets the list and number of columns - $columns = $this->dbi->getColumns(Current::$database, Current::$table, true); + $columns = $this->dbi->getColumns(Current::$database, Current::$table); // Get details about the geometry functions $geomTypes = Gis::getDataTypes(); diff --git a/src/Database/CentralColumns.php b/src/Database/CentralColumns.php index a77ebf3c4b..ce0bdd89e0 100644 --- a/src/Database/CentralColumns.php +++ b/src/Database/CentralColumns.php @@ -5,7 +5,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Database; use PhpMyAdmin\Charsets; -use PhpMyAdmin\ColumnFull; +use PhpMyAdmin\Column; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Dbal\ConnectionType; @@ -212,15 +212,15 @@ class CentralColumns * build the insert query for central columns list given PMA storage * db, central_columns table, column name and corresponding definition to be added * - * @param ColumnFull $def list of attributes of the column being added - * @param string $db PMA configuration storage database name - * @param string $centralListTable central columns configuration storage table name + * @param Column $def list of attributes of the column being added + * @param string $db PMA configuration storage database name + * @param string $centralListTable central columns configuration storage table name * * @return string query string to insert the given column * with definition into central list */ private function getInsertQuery( - ColumnFull $def, + Column $def, string $db, string $centralListDb, string $centralListTable, @@ -273,7 +273,7 @@ class CentralColumns $cols = []; $fields = []; foreach ($fieldSelect as $table) { - $fields[$table] = $this->dbi->getColumns($databaseName->getName(), $table, true); + $fields[$table] = $this->dbi->getColumns($databaseName->getName(), $table); $cols = array_merge($cols, array_column($fields[$table], 'field')); } @@ -299,7 +299,7 @@ class CentralColumns foreach ($fieldSelect as $column) { if (! in_array($column, $hasList, true)) { $hasList[] = $column; - $field = $this->dbi->getColumn($databaseName->getName(), $containingTable, $column, true); + $field = $this->dbi->getColumn($databaseName->getName(), $containingTable, $column); $insQuery[] = $this->getInsertQuery( $field, $databaseName->getName(), @@ -529,7 +529,7 @@ class CentralColumns $centralListDb = $cfgCentralColumns['db']; $centralTable = $cfgCentralColumns['table']; if ($origColName === '') { - $def = new ColumnFull( + $def = new Column( $colName, $colType . ($colLength !== '' ? '(' . $colLength . ')' : ''), $collation, diff --git a/src/Database/Designer/Common.php b/src/Database/Designer/Common.php index 4d661aadbf..87bb824bee 100644 --- a/src/Database/Designer/Common.php +++ b/src/Database/Designer/Common.php @@ -83,16 +83,16 @@ class Common foreach ($designerTables as $designerTable) { $fieldsRs = $this->dbi->query( - QueryGenerator::getColumnsSql( - $designerTable->getDatabaseName(), - $designerTable->getTableName(), + QueryGenerator::getColumnNamesAndTypes( + $this->dbi->quoteString($designerTable->getDatabaseName()), + $this->dbi->quoteString($designerTable->getTableName()), ), ); /** * @var string $field * @var string $type */ - foreach ($fieldsRs as ['Field' => $field, 'Type' => $type]) { + foreach ($fieldsRs as ['COLUMN_NAME' => $field, 'COLUMN_TYPE' => $type]) { $tabColumn[$designerTable->getDbTableString()][] = new ColumnInfo($field, $type); } } diff --git a/src/Dbal/DatabaseInterface.php b/src/Dbal/DatabaseInterface.php index 7ae3400201..ff2e164c5d 100644 --- a/src/Dbal/DatabaseInterface.php +++ b/src/Dbal/DatabaseInterface.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace PhpMyAdmin\Dbal; use PhpMyAdmin\Column; -use PhpMyAdmin\ColumnFull; use PhpMyAdmin\Config; use PhpMyAdmin\Config\Settings\Server; use PhpMyAdmin\Current; @@ -753,24 +752,17 @@ class DatabaseInterface * @param string $database name of database * @param string $table name of table to retrieve columns from * @param string $column name of column - * @param T $full whether to return full info or only column names - * - * @psalm-return (T is true ? ColumnFull : Column)|null - * - * @template T of bool */ public function getColumn( string $database, string $table, string $column, - bool $full = false, ConnectionType $connectionType = ConnectionType::User, - ): ColumnFull|Column|null { - $sql = QueryGenerator::getColumnsSql( - $database, - $table, - $this->quoteString($this->escapeMysqlWildcards($column)), - $full, + ): Column|null { + $sql = QueryGenerator::getColumns( + $this->quoteString($database, $connectionType), + $this->quoteString($table, $connectionType), + $this->quoteString($column, $connectionType), ); /** @var (string|null)[][] $fields */ $fields = $this->fetchResult($sql, 'Field', null, $connectionType); @@ -790,7 +782,7 @@ class DatabaseInterface */ $columns = $this->attachIndexInfoToColumns($database, $table, $fields); - $columns = $this->convertToColumns($columns, $full); + $columns = $this->convertToColumns($columns); return array_shift($columns); } @@ -800,20 +792,18 @@ class DatabaseInterface * * @param string $database name of database * @param string $table name of table to retrieve columns from - * @param T $full whether to return full info or only column names * - * @return ColumnFull[]|Column[] - * @psalm-return (T is true ? ColumnFull[] : Column[]) - * - * @template T of bool + * @return Column[] */ public function getColumns( string $database, string $table, - bool $full = false, ConnectionType $connectionType = ConnectionType::User, ): array { - $sql = QueryGenerator::getColumnsSql($database, $table, null, $full); + $sql = QueryGenerator::getColumns( + $this->quoteString($database, $connectionType), + $this->quoteString($table, $connectionType), + ); /** @var (string|null)[][] $fields */ $fields = $this->fetchResult($sql, 'Field', null, $connectionType); @@ -832,7 +822,7 @@ class DatabaseInterface */ $columns = $this->attachIndexInfoToColumns($database, $table, $fields); - return $this->convertToColumns($columns, $full); + return $this->convertToColumns($columns); } /** @@ -890,13 +880,13 @@ class DatabaseInterface * Comment: string * }[] $fields column array indexed by their names * - * @return (ColumnFull|Column)[] + * @return Column[] */ - private function convertToColumns(array $fields, bool $full = false): array + private function convertToColumns(array $fields): array { $columns = []; foreach ($fields as $field => $column) { - $columns[$field] = $full ? new ColumnFull( + $columns[$field] = new Column( $column['Field'], $column['Type'], $column['Collation'], @@ -906,13 +896,6 @@ class DatabaseInterface $column['Extra'], $column['Privileges'], $column['Comment'], - ) : new Column( - $column['Field'], - $column['Type'], - $column['Null'] === 'YES', - $column['Key'], - $column['Default'], - $column['Extra'], ); } @@ -932,7 +915,10 @@ class DatabaseInterface string $table, ConnectionType $connectionType = ConnectionType::User, ): array { - $sql = QueryGenerator::getColumnsSql($database, $table); + $sql = QueryGenerator::getColumnNamesAndTypes( + $this->quoteString($database, $connectionType), + $this->quoteString($table, $connectionType), + ); $result = $this->tryQuery($sql, $connectionType, cacheAffectedRows: false); @@ -941,7 +927,7 @@ class DatabaseInterface } // We only need the 'Field' column which contains the table's column names - return array_column($result->fetchAllAssoc(), 'Field'); + return array_column($result->fetchAllAssoc(), 'COLUMN_NAME'); } /** diff --git a/src/InsertEdit.php b/src/InsertEdit.php index 966b445816..1d1c2cea5f 100644 --- a/src/InsertEdit.php +++ b/src/InsertEdit.php @@ -1350,13 +1350,13 @@ class InsertEdit * @param string $db current db * @param string $table current table * - * @return list + * @return list */ public function getTableColumns(string $db, string $table): array { $this->dbi->selectDb($db); - return array_values($this->dbi->getColumns($db, $table, true)); + return array_values($this->dbi->getColumns($db, $table)); } /** @@ -1481,7 +1481,7 @@ class InsertEdit /** * Function to get html for each insert/edit column * - * @param ColumnFull $tableColumn column + * @param Column $tableColumn column * @param int $columnNumber column index in table_columns * @param string[] $commentsMap comments map * @param int $columnLength length of the current column taken from field metadata @@ -1499,7 +1499,7 @@ class InsertEdit * @param string $whereClause the where clause */ private function getHtmlForInsertEditFormColumn( - ColumnFull $tableColumn, + Column $tableColumn, int $columnNumber, array $commentsMap, int $columnLength, @@ -1793,7 +1793,7 @@ class InsertEdit * Function to get html for each insert/edit row * * @param array $urlParams url parameters - * @param list $tableColumns table columns + * @param list $tableColumns table columns * @param string[] $commentsMap comments map * @param FieldMetadata[] $fieldMetadata current result's field metadata * @param bool $insertMode whether insert mode diff --git a/src/Normalization.php b/src/Normalization.php index 29d8e20b66..173948e9bc 100644 --- a/src/Normalization.php +++ b/src/Normalization.php @@ -71,7 +71,7 @@ class Normalization } $this->dbi->selectDb($db); - $columns = $this->dbi->getColumns($db, $table, true); + $columns = $this->dbi->getColumns($db, $table); $selectColHtml = ''; foreach ($columns as $def) { $column = $def->field; diff --git a/src/Plugins/Export/ExportSql.php b/src/Plugins/Export/ExportSql.php index 69fa156076..4369f93bad 100644 --- a/src/Plugins/Export/ExportSql.php +++ b/src/Plugins/Export/ExportSql.php @@ -1302,7 +1302,7 @@ class ExportSql extends ExportPlugin $createQuery .= Util::backquote($viewAlias) . '(' . "\n"; $dbi = DatabaseInterface::getInstance(); - $columns = $dbi->getColumns($db, $view, true); + $columns = $dbi->getColumns($db, $view); $firstCol = true; foreach ($columns as $column) { diff --git a/src/Query/Generator.php b/src/Query/Generator.php index 16891242da..4541280bb0 100644 --- a/src/Query/Generator.php +++ b/src/Query/Generator.php @@ -133,21 +133,42 @@ class Generator /** * Returns SQL query for fetching columns for a table - * - * @param string $database name of database - * @param string $table name of table to retrieve columns from - * @param string|null $quotedColumn name of column, null to show all columns - * @param bool $full whether to return full info or only column names */ - public static function getColumnsSql( - string $database, - string $table, + public static function getColumns( + string $quotedDatabase, + string $quotedTable, string|null $quotedColumn = null, - bool $full = false, ): string { - return 'SHOW ' . ($full ? 'FULL' : '') . ' COLUMNS FROM ' - . Util::backquote($database) . '.' . Util::backquote($table) - . ($quotedColumn !== null ? ' LIKE ' . $quotedColumn : ''); + return 'SELECT' + . ' `COLUMN_NAME` AS `Field`,' + . ' `COLUMN_TYPE` AS `Type`,' + . ' `COLLATION_NAME` AS `Collation`,' + . ' `IS_NULLABLE` AS `Null`,' + . ' `COLUMN_KEY` AS `Key`,' + . ' `COLUMN_DEFAULT` AS `Default`,' + . ' `EXTRA` AS `Extra`,' + . ' `PRIVILEGES` AS `Privileges`,' + . ' `COLUMN_COMMENT` AS `Comment`' + . ' FROM `information_schema`.`COLUMNS`' + . ' WHERE `TABLE_SCHEMA` ' . Util::getCollateForIS() + . ' = ' . $quotedDatabase + . ' AND `TABLE_NAME` ' . Util::getCollateForIS() + . ' = ' . $quotedTable + . ($quotedColumn !== null ? ' AND `COLUMN_NAME` = ' . $quotedColumn : ''); + } + + public static function getColumnNamesAndTypes( + string $quotedDatabase, + string $quotedTable, + ): string { + return 'SELECT' + . ' `COLUMN_NAME`,' + . ' `COLUMN_TYPE`' + . ' FROM `information_schema`.`COLUMNS`' + . ' WHERE `TABLE_SCHEMA` ' . Util::getCollateForIS() + . ' = ' . $quotedDatabase + . ' AND `TABLE_NAME` ' . Util::getCollateForIS() + . ' = ' . $quotedTable; } public static function getInformationSchemaRoutinesRequest( diff --git a/src/SqlQueryForm.php b/src/SqlQueryForm.php index aca7ca35db..b5cc0326a7 100644 --- a/src/SqlQueryForm.php +++ b/src/SqlQueryForm.php @@ -133,7 +133,7 @@ class SqlQueryForm * * @param string $query query to display in the textarea * - * @return array{string, string, ColumnFull[]} + * @return array{string, string, Column[]} */ public function init(string $query): array { @@ -167,7 +167,7 @@ class SqlQueryForm // Get the list and number of fields // we do a try_query here, because we could be in the query window, // trying to synchronize and the table has not yet been created - $columnsList = $this->dbi->getColumns($db, Current::$table, true); + $columnsList = $this->dbi->getColumns($db, Current::$table); $scriptName = Url::getFromRoute($this->config->settings['DefaultTabTable']); $tmpTblLink = ''; diff --git a/src/Tracking/Tracker.php b/src/Tracking/Tracker.php index a60a2b6a00..d101326a8c 100644 --- a/src/Tracking/Tracker.php +++ b/src/Tracking/Tracker.php @@ -178,7 +178,7 @@ class Tracker // Get data definition snapshot of table $columns = []; - foreach ($dbi->getColumns($dbName, $tableName, true) as $column) { + foreach ($dbi->getColumns($dbName, $tableName) as $column) { $columns[] = [ 'Field' => $column->field, 'Type' => $column->type, diff --git a/tests/unit/ConfigStorage/RelationTest.php b/tests/unit/ConfigStorage/RelationTest.php index 11cae4896a..46db990d19 100644 --- a/tests/unit/ConfigStorage/RelationTest.php +++ b/tests/unit/ConfigStorage/RelationTest.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\ConfigStorage; -use PhpMyAdmin\ColumnFull; +use PhpMyAdmin\Column; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; @@ -117,8 +117,8 @@ class RelationTest extends AbstractTestCase ->getMock(); $getColumnsResult = [ - new ColumnFull('field1', 'int(11)', null, false, '', null, '', '', 'Comment1'), - new ColumnFull('field2', 'text', null, false, '', null, '', '', 'Comment1'), + new Column('field1', 'int(11)', null, false, '', null, '', '', 'Comment1'), + new Column('field2', 'text', null, false, '', null, '', '', 'Comment1'), ]; $dbi->expects(self::any())->method('getColumns') ->willReturn($getColumnsResult); diff --git a/tests/unit/Controllers/Table/SqlControllerTest.php b/tests/unit/Controllers/Table/SqlControllerTest.php index 2db0ccc2d1..3134626492 100644 --- a/tests/unit/Controllers/Table/SqlControllerTest.php +++ b/tests/unit/Controllers/Table/SqlControllerTest.php @@ -55,7 +55,7 @@ class SqlControllerTest extends AbstractTestCase new UserPreferences($this->dbi, new Relation($this->dbi), new Template()), ); $pageSettings->init('Sql'); - $fields = $this->dbi->getColumns('test_db', 'test_table', true); + $fields = $this->dbi->getColumns('test_db', 'test_table'); $template = new Template(); $expected = $pageSettings->getHTML(); diff --git a/tests/unit/Controllers/Table/StructureControllerTest.php b/tests/unit/Controllers/Table/StructureControllerTest.php index 6c92d69b00..f56159f99d 100644 --- a/tests/unit/Controllers/Table/StructureControllerTest.php +++ b/tests/unit/Controllers/Table/StructureControllerTest.php @@ -87,7 +87,7 @@ class StructureControllerTest extends AbstractTestCase new UserPreferences($this->dbi, new Relation($this->dbi), new Template()), ); $pageSettings->init('TableStructure'); - $fields = $this->dbi->getColumns(Current::$database, Current::$table, true); + $fields = $this->dbi->getColumns(Current::$database, Current::$table); $request = ServerRequestFactory::create()->createServerRequest('GET', 'http://example.com/') ->withQueryParams(['route' => '/table/structure', 'db' => 'test_db', 'table' => 'test_table']); diff --git a/tests/unit/Database/CentralColumnsTest.php b/tests/unit/Database/CentralColumnsTest.php index f6f84e3ed4..bd73cf4338 100644 --- a/tests/unit/Database/CentralColumnsTest.php +++ b/tests/unit/Database/CentralColumnsTest.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Database; -use PhpMyAdmin\ColumnFull; +use PhpMyAdmin\Column; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; @@ -139,9 +139,9 @@ class CentralColumnsTest extends AbstractTestCase $this->dbi->expects(self::any()) ->method('getColumns') ->willReturn([ - 'id' => new ColumnFull('id', 'integer', null, false, '', null, '', '', ''), - 'col1' => new ColumnFull('col1', 'varchar(100)', null, true, '', null, '', '', ''), - 'col2' => new ColumnFull('col2', 'DATETIME', null, false, '', null, '', '', ''), + 'id' => new Column('id', 'integer', null, false, '', null, '', '', ''), + 'col1' => new Column('col1', 'varchar(100)', null, true, '', null, '', '', ''), + 'col2' => new Column('col2', 'DATETIME', null, false, '', null, '', '', ''), ]); $this->dbi->expects(self::any()) ->method('getColumnNames') diff --git a/tests/unit/Database/SearchTest.php b/tests/unit/Database/SearchTest.php index 08185f3281..b445304dd4 100644 --- a/tests/unit/Database/SearchTest.php +++ b/tests/unit/Database/SearchTest.php @@ -38,8 +38,8 @@ class SearchTest extends AbstractTestCase ->method('getColumns') ->with('pma', 'table1') ->willReturn([ - new Column('column1', '', false, '', null, ''), - new Column('column2', '', false, '', null, ''), + new Column('column1', '', null, false, '', null, '', '', ''), + new Column('column2', '', null, false, '', null, '', '', ''), ]); $dbi->expects(self::any()) diff --git a/tests/unit/DatabaseInterfaceTest.php b/tests/unit/DatabaseInterfaceTest.php index 81b481295d..2ca0d3a44b 100644 --- a/tests/unit/DatabaseInterfaceTest.php +++ b/tests/unit/DatabaseInterfaceTest.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; use PhpMyAdmin\Column; -use PhpMyAdmin\ColumnFull; use PhpMyAdmin\Config; use PhpMyAdmin\Config\Settings\Server; use PhpMyAdmin\Current; @@ -26,7 +25,7 @@ use function array_keys; #[CoversClass(DatabaseInterface::class)] #[CoversClass(Column::class)] -#[CoversClass(ColumnFull::class)] +#[CoversClass(Column::class)] class DatabaseInterfaceTest extends AbstractTestCase { protected function setUp(): void @@ -865,7 +864,7 @@ class DatabaseInterfaceTest extends AbstractTestCase ); $dbiDummy->addResult('SHOW INDEXES FROM `test_db`.`test_table`', []); $dbi = $this->createDatabaseInterface($dbiDummy); - $column = new Column('test_column', 'varchar(45)', false, '', null, ''); + $column = new Column('test_column', 'varchar(45)', null, false, '', null, '', '', ''); self::assertEquals($column, $dbi->getColumn('test_db', 'test_table', 'test_column')); $dbiDummy->assertAllQueriesConsumed(); } @@ -883,7 +882,7 @@ class DatabaseInterfaceTest extends AbstractTestCase ); $dbiDummy->addResult('SHOW INDEXES FROM `test_db`.`test_table`', []); $dbi = $this->createDatabaseInterface($dbiDummy); - $column = new ColumnFull( + $column = new Column( 'test_column', 'varchar(45)', 'utf8mb4_general_ci', @@ -894,7 +893,7 @@ class DatabaseInterfaceTest extends AbstractTestCase 'select,insert,update,references', '', ); - self::assertEquals($column, $dbi->getColumn('test_db', 'test_table', 'test_column', true)); + self::assertEquals($column, $dbi->getColumn('test_db', 'test_table', 'test_column')); $dbiDummy->assertAllQueriesConsumed(); } } diff --git a/tests/unit/InsertEditTest.php b/tests/unit/InsertEditTest.php index 90d2ac0a55..0d79c3b367 100644 --- a/tests/unit/InsertEditTest.php +++ b/tests/unit/InsertEditTest.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; -use PhpMyAdmin\ColumnFull; +use PhpMyAdmin\Column; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Core; @@ -2262,8 +2262,8 @@ class InsertEditTest extends AbstractTestCase ->with('db'); $columns = [ - new ColumnFull('b', 'd', null, false, '', null, '', '', ''), - new ColumnFull('f', 'h', null, true, '', null, '', '', ''), + new Column('b', 'd', null, false, '', null, '', '', ''), + new Column('f', 'h', null, true, '', null, '', '', ''), ]; $dbi->expects(self::once()) @@ -2285,8 +2285,8 @@ class InsertEditTest extends AbstractTestCase self::assertEquals( [ - new ColumnFull('b', 'd', null, false, '', null, '', '', ''), - new ColumnFull('f', 'h', null, true, '', null, '', '', ''), + new Column('b', 'd', null, false, '', null, '', '', ''), + new Column('f', 'h', null, true, '', null, '', '', ''), ], $result, ); @@ -2373,7 +2373,7 @@ class InsertEditTest extends AbstractTestCase $dbi->expects(self::once()) ->method('getColumns') ->with('db', 'table', true) - ->willReturn([new ColumnFull('d', 'd', null, false, '', null, '', '', 'b')]); + ->willReturn([new Column('d', 'd', null, false, '', null, '', '', 'b')]); $dbi->expects(self::any()) ->method('getTable') @@ -2430,7 +2430,7 @@ class InsertEditTest extends AbstractTestCase $_SESSION[' HMAC_secret '] = hash('sha1', 'test'); InsertEdit::$pluginScripts = []; $foreigners = ['foreign_keys_data' => []]; - $tableColumn = new ColumnFull('col', 'varchar(20)', null, true, '', null, '', 'insert,update,select', ''); + $tableColumn = new Column('col', 'varchar(20)', null, true, '', null, '', 'insert,update,select', ''); $repopulate = [md5('col') => 'val']; $columnMime = [ 'input_transformation' => 'Input/Image_JPEG_Upload.php', @@ -2480,7 +2480,7 @@ class InsertEditTest extends AbstractTestCase ); // Test w/o input_transformation - $tableColumn = new ColumnFull('qwerty', 'datetime', null, true, '', null, '', 'insert,update,select', ''); + $tableColumn = new Column('qwerty', 'datetime', null, true, '', null, '', 'insert,update,select', ''); $repopulate = [md5('qwerty') => '12-10-14']; $actual = $this->callFunction( $this->insertEdit, @@ -2569,7 +2569,7 @@ class InsertEditTest extends AbstractTestCase $config->settings['TextareaCols'] = 11; $foreigners = ['foreign_keys_data' => []]; $tableColumns = [ - new ColumnFull('test', 'longtext', null, true, '', null, '', 'select,insert,update,references', ''), + new Column('test', 'longtext', null, true, '', null, '', 'select,insert,update,references', ''), ]; $actual = $this->insertEdit->getHtmlForInsertEditRow( @@ -2612,8 +2612,8 @@ class InsertEditTest extends AbstractTestCase // edit $tableColumns = [ - new ColumnFull('foo', 'longtext', null, true, '', null, '', 'select,insert,update,references', ''), - new ColumnFull('bar', 'longtext', null, true, '', null, '', 'select,insert,references', ''), + new Column('foo', 'longtext', null, true, '', null, '', 'select,insert,update,references', ''), + new Column('bar', 'longtext', null, true, '', null, '', 'select,insert,references', ''), ]; $fieldMetadata = [ @@ -2642,9 +2642,9 @@ class InsertEditTest extends AbstractTestCase // insert $tableColumns = [ - new ColumnFull('foo', 'longtext', null, true, '', null, '', 'select,insert,update,references', ''), - new ColumnFull('bar', 'longtext', null, true, '', null, '', 'select,update,references', ''), - new ColumnFull('point', 'point', null, false, '', null, '', 'select,update,references', ''), + new Column('foo', 'longtext', null, true, '', null, '', 'select,insert,update,references', ''), + new Column('bar', 'longtext', null, true, '', null, '', 'select,update,references', ''), + new Column('point', 'point', null, false, '', null, '', 'select,update,references', ''), ]; $actual = $this->insertEdit->getHtmlForInsertEditRow( [], diff --git a/tests/unit/NormalizationTest.php b/tests/unit/NormalizationTest.php index 6706d4e3ec..6c53aa3573 100644 --- a/tests/unit/NormalizationTest.php +++ b/tests/unit/NormalizationTest.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests; -use PhpMyAdmin\ColumnFull; +use PhpMyAdmin\Column; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\Current; @@ -70,9 +70,9 @@ class NormalizationTest extends AbstractTestCase $dbi->expects(self::any()) ->method('getColumns') ->willReturn([ - 'id' => new ColumnFull('id', 'integer', null, false, '', null, '', '', ''), - 'col1' => new ColumnFull('col1', 'varchar(100)', null, false, '', null, '', '', ''), - 'col2' => new ColumnFull('col2', 'DATETIME', null, false, '', null, '', '', ''), + 'id' => new Column('id', 'integer', null, false, '', null, '', '', ''), + 'col1' => new Column('col1', 'varchar(100)', null, false, '', null, '', '', ''), + 'col2' => new Column('col2', 'DATETIME', null, false, '', null, '', '', ''), ]); $dbi->expects(self::any()) ->method('getColumnNames') diff --git a/tests/unit/Plugins/Export/ExportHtmlwordTest.php b/tests/unit/Plugins/Export/ExportHtmlwordTest.php index 3cd63e7720..e05b19d398 100644 --- a/tests/unit/Plugins/Export/ExportHtmlwordTest.php +++ b/tests/unit/Plugins/Export/ExportHtmlwordTest.php @@ -348,7 +348,7 @@ class ExportHtmlwordTest extends AbstractTestCase ->with('database', 'view') ->willReturn($keys); - $column = new Column('column', '', false, '', null, ''); + $column = new Column('column', '', null, false, '', null, '', '', ''); $dbi->expects(self::once()) ->method('getColumns') @@ -402,7 +402,7 @@ class ExportHtmlwordTest extends AbstractTestCase ->with('database', '') ->willReturn($keys); - $column = new Column('fieldname', '', false, '', null, ''); + $column = new Column('fieldname', '', null, false, '', null, '', '', ''); $dbi->expects(self::once()) ->method('getColumns') ->with('database', '') @@ -477,7 +477,7 @@ class ExportHtmlwordTest extends AbstractTestCase ->with('database', '') ->willReturn($keys); - $column = new Column('fieldname', '', false, '', null, ''); + $column = new Column('fieldname', '', null, false, '', null, '', '', ''); $dbi->expects(self::once()) ->method('getColumns') @@ -526,7 +526,7 @@ class ExportHtmlwordTest extends AbstractTestCase ->with('database', '') ->willReturn($keys); - $column = new Column('fieldname', '', false, '', null, ''); + $column = new Column('fieldname', '', null, false, '', null, '', '', ''); $dbi->expects(self::once()) ->method('getColumns') @@ -667,7 +667,7 @@ class ExportHtmlwordTest extends AbstractTestCase { $method = new ReflectionMethod(ExportHtmlword::class, 'formatOneColumnDefinition'); - $column = new Column('field', 'set(abc)enum123', true, 'PRI', null, ''); + $column = new Column('field', 'set(abc)enum123', null, true, 'PRI', null, '', '', ''); $uniqueKeys = ['field']; @@ -678,7 +678,7 @@ class ExportHtmlwordTest extends AbstractTestCase $method->invoke($this->object, $column, $uniqueKeys), ); - $column = new Column('fields', '', false, 'COMP', 'def', ''); + $column = new Column('fields', '', null, false, 'COMP', 'def', '', '', ''); $uniqueKeys = ['field']; diff --git a/tests/unit/Plugins/Export/ExportLatexTest.php b/tests/unit/Plugins/Export/ExportLatexTest.php index 132145110e..b21c96f6ad 100644 --- a/tests/unit/Plugins/Export/ExportLatexTest.php +++ b/tests/unit/Plugins/Export/ExportLatexTest.php @@ -585,8 +585,8 @@ class ExportLatexTest extends AbstractTestCase ); $columns = [ - new Column('name1', 'set(abc)enum123', true, 'PRI', null, ''), - new Column('fields', '', false, 'COMP', 'def', ''), + new Column('name1', 'set(abc)enum123', null, true, 'PRI', null, '', '', ''), + new Column('fields', '', null, false, 'COMP', 'def', '', '', ''), ]; $dbi->expects(self::once()) ->method('getColumns') diff --git a/tests/unit/Plugins/Export/ExportMediawikiTest.php b/tests/unit/Plugins/Export/ExportMediawikiTest.php index 9b5322e4cf..0db64c1120 100644 --- a/tests/unit/Plugins/Export/ExportMediawikiTest.php +++ b/tests/unit/Plugins/Export/ExportMediawikiTest.php @@ -229,8 +229,8 @@ class ExportMediawikiTest extends AbstractTestCase ->getMock(); $columns = [ - new Column('name1', 'set(abc)enum123', true, 'PRI', '', ''), - new Column('fields', '', false, 'COMP', 'def', 'ext'), + new Column('name1', 'set(abc)enum123', null, true, 'PRI', '', '', '', ''), + new Column('fields', '', null, false, 'COMP', 'def', 'ext', '', ''), ]; $dbi->expects(self::once()) diff --git a/tests/unit/Plugins/Export/ExportOdtTest.php b/tests/unit/Plugins/Export/ExportOdtTest.php index d1cf2e44c3..338d3ec3c6 100644 --- a/tests/unit/Plugins/Export/ExportOdtTest.php +++ b/tests/unit/Plugins/Export/ExportOdtTest.php @@ -594,7 +594,7 @@ class ExportOdtTest extends AbstractTestCase ['fieldname' => ['values' => 'test-', 'transformation' => 'testfoo', 'mimetype' => 'test<']], ); - $column = new Column('fieldname', '', false, '', null, ''); + $column = new Column('fieldname', '', null, false, '', null, '', '', ''); $dbi->expects(self::once()) ->method('getColumns') ->with('database', '') @@ -675,7 +675,7 @@ class ExportOdtTest extends AbstractTestCase ['field' => ['values' => 'test-', 'transformation' => 'testfoo', 'mimetype' => 'test<']], ); - $column = new Column('fieldname', '', false, '', null, ''); + $column = new Column('fieldname', '', null, false, '', null, '', '', ''); $dbi->expects(self::once()) ->method('getColumns') ->with('database', '') @@ -868,7 +868,7 @@ class ExportOdtTest extends AbstractTestCase { $method = new ReflectionMethod(ExportOdt::class, 'formatOneColumnDefinition'); - $column = new Column('field', 'set(abc)enum123', true, 'PRI', null, ''); + $column = new Column('field', 'set(abc)enum123', null, true, 'PRI', null, '', '', ''); $colAlias = 'alias'; @@ -882,7 +882,7 @@ class ExportOdtTest extends AbstractTestCase $method->invoke($this->object, $column, $colAlias), ); - $column = new Column('fields', '', false, 'COMP', 'def', ''); + $column = new Column('fields', '', null, false, 'COMP', 'def', '', '', ''); self::assertSame( '' . diff --git a/tests/unit/Plugins/Export/ExportSqlTest.php b/tests/unit/Plugins/Export/ExportSqlTest.php index 26b3a4b6dd..5a04a0f616 100644 --- a/tests/unit/Plugins/Export/ExportSqlTest.php +++ b/tests/unit/Plugins/Export/ExportSqlTest.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Plugins\Export; use PhpMyAdmin\Column; -use PhpMyAdmin\ColumnFull; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; @@ -684,7 +683,7 @@ class ExportSqlTest extends AbstractTestCase ->method('getColumns') ->with('db', 'view') ->willReturn([ - new ColumnFull( + new Column( 'fname', 'char', 'utf-8', @@ -725,7 +724,7 @@ class ExportSqlTest extends AbstractTestCase ->method('getColumns') ->with('db', 'view') ->willReturn([ - new ColumnFull( + new Column( 'fname', 'char', 'utf-8', diff --git a/tests/unit/Plugins/Export/ExportTexytextTest.php b/tests/unit/Plugins/Export/ExportTexytextTest.php index c8d4b10ed0..5252676ace 100644 --- a/tests/unit/Plugins/Export/ExportTexytextTest.php +++ b/tests/unit/Plugins/Export/ExportTexytextTest.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Plugins\Export; use PhpMyAdmin\Column; -use PhpMyAdmin\ColumnFull; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; @@ -289,8 +288,8 @@ class ExportTexytextTest extends AbstractTestCase ->method('fetchValue') ->willReturn('SELECT a FROM b'); - $column = new Column('fname', '', false, '', null, ''); - $columnFull = new ColumnFull('fname', '', null, false, '', null, '', '', 'comm'); + $column = new Column('fname', '', null, false, '', null, '', '', ''); + $columnFull = new Column('fname', '', null, false, '', null, '', '', 'comm'); $dbi->expects(self::exactly(2)) ->method('getColumns') @@ -421,7 +420,7 @@ class ExportTexytextTest extends AbstractTestCase public function testFormatOneColumnDefinition(): void { - $cols = new Column('field', 'set(abc)enum123', true, 'PRI', null, ''); + $cols = new Column('field', 'set(abc)enum123', null, true, 'PRI', null, '', '', ''); $uniqueKeys = ['field']; @@ -430,7 +429,7 @@ class ExportTexytextTest extends AbstractTestCase $this->object->formatOneColumnDefinition($cols, $uniqueKeys), ); - $cols = new Column('fields', '', false, 'COMP', 'def', ''); + $cols = new Column('fields', '', null, false, 'COMP', 'def', '', '', ''); $uniqueKeys = ['field']; diff --git a/tests/unit/Query/GeneratorTest.php b/tests/unit/Query/GeneratorTest.php index 2c2e60f38a..de6380a31e 100644 --- a/tests/unit/Query/GeneratorTest.php +++ b/tests/unit/Query/GeneratorTest.php @@ -15,14 +15,14 @@ class GeneratorTest extends AbstractTestCase { self::assertSame( 'SHOW COLUMNS FROM `mydb`.`mytable`', - Generator::getColumnsSql( + Generator::getColumns( 'mydb', 'mytable', ), ); self::assertSame( 'SHOW COLUMNS FROM `mydb`.`mytable` LIKE \'_idcolumn\'', - Generator::getColumnsSql( + Generator::getColumns( 'mydb', 'mytable', "'_idcolumn'", @@ -30,20 +30,18 @@ class GeneratorTest extends AbstractTestCase ); self::assertSame( 'SHOW FULL COLUMNS FROM `mydb`.`mytable`', - Generator::getColumnsSql( + Generator::getColumns( 'mydb', 'mytable', null, - true, ), ); self::assertSame( 'SHOW FULL COLUMNS FROM `mydb`.`mytable` LIKE \'_idcolumn\'', - Generator::getColumnsSql( + Generator::getColumns( 'mydb', 'mytable', "'_idcolumn'", - true, ), ); } diff --git a/tests/unit/Tracking/TrackerTest.php b/tests/unit/Tracking/TrackerTest.php index 62ff3225da..87df977662 100644 --- a/tests/unit/Tracking/TrackerTest.php +++ b/tests/unit/Tracking/TrackerTest.php @@ -4,7 +4,7 @@ declare(strict_types=1); namespace PhpMyAdmin\Tests\Tracking; -use PhpMyAdmin\ColumnFull; +use PhpMyAdmin\Column; use PhpMyAdmin\Config; use PhpMyAdmin\ConfigStorage\Relation; use PhpMyAdmin\ConfigStorage\RelationParameters; @@ -168,8 +168,8 @@ class TrackerTest extends AbstractTestCase */ $getColumnsResult = [ - new ColumnFull('field1', 'int(11)', null, false, 'PRI', null, '', '', ''), - new ColumnFull('field2', 'text', null, false, '', null, '', '', ''), + new Column('field1', 'int(11)', null, false, 'PRI', null, '', '', ''), + new Column('field2', 'text', null, false, '', null, '', '', ''), ]; $dbi->expects(self::once())->method('getColumns') ->with('pma_test', 'pma_tbl')