Skip to content

Commit e63566d

Browse files
committed
Instantiate View via the editor
1 parent 9622710 commit e63566d

12 files changed

+36
-95
lines changed

src/Platforms/PostgreSQLPlatform.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,9 @@ public function getListSequencesSQL(string $database): string
162162
/** @internal The method should be only used from within the {@see AbstractSchemaManager} class hierarchy. */
163163
public function getListViewsSQL(string $database): string
164164
{
165-
return 'SELECT quote_ident(table_name) AS viewname,
166-
table_schema AS schemaname,
167-
view_definition AS definition
165+
return 'SELECT table_name,
166+
table_schema,
167+
view_definition
168168
FROM information_schema.views
169169
WHERE view_definition IS NOT NULL';
170170
}

src/Schema/AbstractSchemaManager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,7 @@ public function createView(View $view): void
861861
$this->connection->executeStatement(
862862
$this->platform->getCreateViewSQL(
863863
$view->getObjectName()->toSQL($this->platform),
864-
$view->getSql(),
864+
$view->getSQL(),
865865
),
866866
);
867867
}

src/Schema/DB2SchemaManager.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,10 @@ protected function _getPortableViewDefinition(array $view): View
171171
$sql = substr($view['text'], $pos + 4);
172172
}
173173

174-
return new View($view['name'], $sql);
174+
return View::editor()
175+
->setQuotedName($view['name'])
176+
->setSQL($sql)
177+
->create();
175178
}
176179

177180
protected function selectTableNames(string $databaseName): Result

src/Schema/MySQLSchemaManager.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@ class MySQLSchemaManager extends AbstractSchemaManager
6262
*/
6363
protected function _getPortableViewDefinition(array $view): View
6464
{
65-
return new View($view['TABLE_NAME'], $view['VIEW_DEFINITION']);
65+
return View::editor()
66+
->setQuotedName($view['TABLE_NAME'])
67+
->setSQL($view['VIEW_DEFINITION'])
68+
->create();
6669
}
6770

6871
/**

src/Schema/OracleSchemaManager.php

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ protected function _getPortableViewDefinition(array $view): View
4242
{
4343
$view = array_change_key_case($view, CASE_LOWER);
4444

45-
return new View($this->getQuotedIdentifierName($view['view_name']), $view['text']);
45+
return View::editor()
46+
->setQuotedName($view['view_name'])
47+
->setSQL($view['text'])
48+
->create();
4649
}
4750

4851
/**
@@ -272,21 +275,6 @@ public function dropTable(string $name): void
272275
parent::dropTable($name);
273276
}
274277

275-
/**
276-
* Returns the quoted representation of the given identifier name.
277-
*
278-
* Quotes non-uppercase identifiers explicitly to preserve case
279-
* and thus make references to the particular identifier work.
280-
*/
281-
private function getQuotedIdentifierName(string $identifier): string
282-
{
283-
if (preg_match('/[a-z]/', $identifier) === 1) {
284-
return $this->platform->quoteSingleIdentifier($identifier);
285-
}
286-
287-
return $identifier;
288-
}
289-
290278
protected function selectTableNames(string $databaseName): Result
291279
{
292280
$sql = sprintf(

src/Schema/PostgreSQLSchemaManager.php

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,16 @@ private function getMaxIndexKeys(): int
9090
protected function _getPortableViewDefinition(array $view): View
9191
{
9292
// @phpstan-ignore missingType.checkedException
93-
if ($view['schemaname'] === $this->getCurrentSchemaName()) {
94-
$name = $view['viewname'];
93+
if ($view['table_schema'] !== $this->getCurrentSchemaName()) {
94+
$name = OptionallyQualifiedName::quoted($view['table_name'], $view['table_schema']);
9595
} else {
96-
$name = $view['schemaname'] . '.' . $view['viewname'];
96+
$name = OptionallyQualifiedName::quoted($view['table_name']);
9797
}
9898

99-
return new View($name, $view['definition']);
99+
return View::editor()
100+
->setName($name)
101+
->setSQL($view['view_definition'])
102+
->create();
100103
}
101104

102105
/**

src/Schema/SQLServerSchemaManager.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,10 @@ protected function _getPortableDatabaseDefinition(array $database): string
225225
*/
226226
protected function _getPortableViewDefinition(array $view): View
227227
{
228-
return new View($view['name'], $view['definition']);
228+
return View::editor()
229+
->setQuotedName($view['name'])
230+
->setSQL($view['definition'])
231+
->create();
229232
}
230233

231234
/** @throws Exception */

src/Schema/SQLiteSchemaManager.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,10 @@ protected function _getPortableTableColumnDefinition(array $tableColumn): Column
125125
*/
126126
protected function _getPortableViewDefinition(array $view): View
127127
{
128-
return new View($view['name'], $view['sql']);
128+
return View::editor()
129+
->setQuotedName($view['name'])
130+
->setSQL($view['sql'])
131+
->create();
129132
}
130133

131134
/**

src/Schema/View.php

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@
44

55
namespace Doctrine\DBAL\Schema;
66

7-
use Doctrine\DBAL\Schema\Exception\InvalidName;
87
use Doctrine\DBAL\Schema\Name\OptionallyQualifiedName;
9-
use Doctrine\DBAL\Schema\Name\Parser;
10-
use Doctrine\DBAL\Schema\Name\Parsers;
118

129
/**
1310
* Representation of a Database View.
@@ -17,20 +14,12 @@
1714
final class View extends AbstractNamedObject
1815
{
1916
/** @internal Use {@link View::editor()} to instantiate an editor and {@link ViewEditor::create()} to create a view. */
20-
public function __construct(string $name, private readonly string $sql)
17+
public function __construct(OptionallyQualifiedName $name, private readonly string $sql)
2118
{
22-
$parser = Parsers::getOptionallyQualifiedNameParser();
23-
24-
try {
25-
$parsedName = $parser->parse($name);
26-
} catch (Parser\Exception $e) {
27-
throw InvalidName::fromParserException($name, $e);
28-
}
29-
30-
parent::__construct($parsedName);
19+
parent::__construct($name);
3120
}
3221

33-
public function getSql(): string
22+
public function getSQL(): string
3423
{
3524
return $this->sql;
3625
}

src/Schema/ViewEditor.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,6 @@ public function create(): View
6464
throw InvalidViewDefinition::sqlNotSet($this->name);
6565
}
6666

67-
return new View(
68-
$this->name->toString(),
69-
$this->sql,
70-
);
67+
return new View($this->name, $this->sql);
7168
}
7269
}

0 commit comments

Comments
 (0)