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')