diff --git a/src/Database/Drivers/MsSqlDriver.php b/src/Database/Drivers/MsSqlDriver.php index b8a45a65..dfb4cd2e 100644 --- a/src/Database/Drivers/MsSqlDriver.php +++ b/src/Database/Drivers/MsSqlDriver.php @@ -102,7 +102,7 @@ public function getColumns(string $table): array $columns[] = [ 'name' => $row['COLUMN_NAME'], 'table' => $table, - 'nativetype' => strtoupper($row['DATA_TYPE']), + 'nativetype' => $row['DATA_TYPE'], 'size' => $row['CHARACTER_MAXIMUM_LENGTH'] ?? ($row['NUMERIC_PRECISION'] ?? null), 'unsigned' => false, 'nullable' => $row['IS_NULLABLE'] === 'YES', diff --git a/src/Database/Drivers/MySqlDriver.php b/src/Database/Drivers/MySqlDriver.php index 46ceb156..ba5705a4 100644 --- a/src/Database/Drivers/MySqlDriver.php +++ b/src/Database/Drivers/MySqlDriver.php @@ -139,17 +139,16 @@ public function getColumns(string $table): array { $columns = []; foreach ($this->pdo->query('SHOW FULL COLUMNS FROM ' . $this->delimite($table), \PDO::FETCH_ASSOC) as $row) { - $row = array_change_key_case($row, CASE_LOWER); - $type = explode('(', $row['type']); + $type = explode('(', $row['Type']); $columns[] = [ - 'name' => $row['field'], + 'name' => $row['Field'], 'table' => $table, - 'nativetype' => strtoupper($type[0]), + 'nativetype' => $type[0], 'size' => isset($type[1]) ? (int) $type[1] : null, - 'nullable' => $row['null'] === 'YES', - 'default' => $row['default'], - 'autoincrement' => $row['extra'] === 'auto_increment', - 'primary' => $row['key'] === 'PRI', + 'nullable' => $row['Null'] === 'YES', + 'default' => $row['Default'], + 'autoincrement' => $row['Extra'] === 'auto_increment', + 'primary' => $row['Key'] === 'PRI', 'vendor' => $row, ]; } diff --git a/src/Database/Drivers/PgSqlDriver.php b/src/Database/Drivers/PgSqlDriver.php index 31f13d51..59defba3 100644 --- a/src/Database/Drivers/PgSqlDriver.php +++ b/src/Database/Drivers/PgSqlDriver.php @@ -117,7 +117,7 @@ public function getColumns(string $table): array SELECT a.attname::varchar AS name, c.relname::varchar AS table, - upper(t.typname) AS nativetype, + t.typname AS nativetype, CASE WHEN a.atttypmod = -1 THEN NULL ELSE a.atttypmod -4 END AS size, NOT (a.attnotnull OR t.typtype = 'd' AND t.typnotnull) AS nullable, pg_catalog.pg_get_expr(ad.adbin, 'pg_catalog.pg_attrdef'::regclass)::varchar AS default, diff --git a/src/Database/Drivers/SqlsrvDriver.php b/src/Database/Drivers/SqlsrvDriver.php index 6a482932..5279fda9 100644 --- a/src/Database/Drivers/SqlsrvDriver.php +++ b/src/Database/Drivers/SqlsrvDriver.php @@ -122,7 +122,7 @@ public function getColumns(string $table): array SELECT c.name AS name, o.name AS [table], - UPPER(t.name) AS nativetype, + t.name AS nativetype, NULL AS size, c.is_nullable AS nullable, OBJECT_DEFINITION(c.default_object_id) AS [default], diff --git a/tests/Database/Reflection.driver.phpt b/tests/Database/Reflection.driver.phpt index 5b60e3bc..78c6d462 100644 --- a/tests/Database/Reflection.driver.phpt +++ b/tests/Database/Reflection.driver.phpt @@ -50,7 +50,7 @@ $expectedColumns = [ [ 'name' => 'id', 'table' => 'author', - 'nativetype' => 'INT', + 'nativetype' => 'int', 'size' => 11, 'nullable' => false, 'default' => null, @@ -60,7 +60,7 @@ $expectedColumns = [ [ 'name' => 'name', 'table' => 'author', - 'nativetype' => 'VARCHAR', + 'nativetype' => 'varchar', 'size' => 30, 'nullable' => false, 'default' => null, @@ -70,7 +70,7 @@ $expectedColumns = [ [ 'name' => 'web', 'table' => 'author', - 'nativetype' => 'VARCHAR', + 'nativetype' => 'varchar', 'size' => 100, 'nullable' => false, 'default' => null, @@ -80,7 +80,7 @@ $expectedColumns = [ [ 'name' => 'born', 'table' => 'author', - 'nativetype' => 'DATE', + 'nativetype' => 'date', 'size' => null, 'nullable' => true, 'default' => null, @@ -97,7 +97,7 @@ switch ($driverName) { } break; case 'pgsql': - $expectedColumns[0]['nativetype'] = 'INT4'; + $expectedColumns[0]['nativetype'] = 'int4'; $expectedColumns[0]['default'] = "nextval('author_id_seq'::regclass)"; $expectedColumns[0]['size'] = null; break; @@ -108,6 +108,7 @@ switch ($driverName) { $expectedColumns[1]['size'] = null; $expectedColumns[2]['nativetype'] = 'TEXT'; $expectedColumns[2]['size'] = null; + $expectedColumns[3]['nativetype'] = 'DATE'; break; case 'sqlsrv': $expectedColumns[0]['size'] = null; diff --git a/tests/Database/Reflection.phpt b/tests/Database/Reflection.phpt index 4a6a55d2..7b3dd827 100644 --- a/tests/Database/Reflection.phpt +++ b/tests/Database/Reflection.phpt @@ -72,7 +72,7 @@ $expectedColumns = [ 'id' => [ 'name' => 'id', 'table' => 'author', - 'nativeType' => 'INT', + 'nativeType' => 'int', 'size' => 11, 'nullable' => false, 'default' => null, @@ -82,7 +82,7 @@ $expectedColumns = [ 'name' => [ 'name' => 'name', 'table' => 'author', - 'nativeType' => 'VARCHAR', + 'nativeType' => 'varchar', 'size' => 30, 'nullable' => false, 'default' => null, @@ -92,7 +92,7 @@ $expectedColumns = [ 'web' => [ 'name' => 'web', 'table' => 'author', - 'nativeType' => 'VARCHAR', + 'nativeType' => 'varchar', 'size' => 100, 'nullable' => false, 'default' => null, @@ -102,7 +102,7 @@ $expectedColumns = [ 'born' => [ 'name' => 'born', 'table' => 'author', - 'nativeType' => 'DATE', + 'nativeType' => 'date', 'size' => null, 'nullable' => true, 'default' => null, @@ -130,6 +130,7 @@ switch ($driverName) { $expectedColumns['name']['size'] = null; $expectedColumns['web']['nativeType'] = 'TEXT'; $expectedColumns['web']['size'] = null; + $expectedColumns['born']['nativeType'] = 'DATE'; break; case 'sqlsrv': $expectedColumns['id']['size'] = null;