diff options
Diffstat (limited to 'vendor/doctrine/dbal/src/Driver/API')
7 files changed, 434 insertions, 0 deletions
diff --git a/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php new file mode 100644 index 0000000..a7bf271 --- /dev/null +++ b/vendor/doctrine/dbal/src/Driver/API/ExceptionConverter.php | |||
@@ -0,0 +1,25 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\DBAL\Driver\API; | ||
6 | |||
7 | use Doctrine\DBAL\Driver\Exception; | ||
8 | use Doctrine\DBAL\Exception\DriverException; | ||
9 | use Doctrine\DBAL\Query; | ||
10 | |||
11 | interface ExceptionConverter | ||
12 | { | ||
13 | /** | ||
14 | * Converts a given driver-level exception into a DBAL-level driver exception. | ||
15 | * | ||
16 | * Implementors should use the vendor-specific error code and SQLSTATE of the exception | ||
17 | * and instantiate the most appropriate specialized {@see DriverException} subclass. | ||
18 | * | ||
19 | * @param Exception $exception The driver exception to convert. | ||
20 | * @param Query|null $query The SQL query that triggered the exception, if any. | ||
21 | * | ||
22 | * @return DriverException An instance of {@see DriverException} or one of its subclasses. | ||
23 | */ | ||
24 | public function convert(Exception $exception, ?Query $query): DriverException; | ||
25 | } | ||
diff --git a/vendor/doctrine/dbal/src/Driver/API/IBMDB2/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/IBMDB2/ExceptionConverter.php new file mode 100644 index 0000000..bcd5554 --- /dev/null +++ b/vendor/doctrine/dbal/src/Driver/API/IBMDB2/ExceptionConverter.php | |||
@@ -0,0 +1,47 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\DBAL\Driver\API\IBMDB2; | ||
6 | |||
7 | use Doctrine\DBAL\Driver\API\ExceptionConverter as ExceptionConverterInterface; | ||
8 | use Doctrine\DBAL\Driver\Exception; | ||
9 | use Doctrine\DBAL\Exception\ConnectionException; | ||
10 | use Doctrine\DBAL\Exception\DriverException; | ||
11 | use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; | ||
12 | use Doctrine\DBAL\Exception\InvalidFieldNameException; | ||
13 | use Doctrine\DBAL\Exception\NonUniqueFieldNameException; | ||
14 | use Doctrine\DBAL\Exception\NotNullConstraintViolationException; | ||
15 | use Doctrine\DBAL\Exception\SyntaxErrorException; | ||
16 | use Doctrine\DBAL\Exception\TableExistsException; | ||
17 | use Doctrine\DBAL\Exception\TableNotFoundException; | ||
18 | use Doctrine\DBAL\Exception\UniqueConstraintViolationException; | ||
19 | use Doctrine\DBAL\Query; | ||
20 | |||
21 | /** | ||
22 | * @internal | ||
23 | * | ||
24 | * @link https://www.ibm.com/docs/en/db2/11.5?topic=messages-sql | ||
25 | */ | ||
26 | final class ExceptionConverter implements ExceptionConverterInterface | ||
27 | { | ||
28 | public function convert(Exception $exception, ?Query $query): DriverException | ||
29 | { | ||
30 | return match ($exception->getCode()) { | ||
31 | -104 => new SyntaxErrorException($exception, $query), | ||
32 | -203 => new NonUniqueFieldNameException($exception, $query), | ||
33 | -204 => new TableNotFoundException($exception, $query), | ||
34 | -206 => new InvalidFieldNameException($exception, $query), | ||
35 | -407 => new NotNullConstraintViolationException($exception, $query), | ||
36 | -530, | ||
37 | -531, | ||
38 | -532, | ||
39 | -20356 => new ForeignKeyConstraintViolationException($exception, $query), | ||
40 | -601 => new TableExistsException($exception, $query), | ||
41 | -803 => new UniqueConstraintViolationException($exception, $query), | ||
42 | -1336, | ||
43 | -30082 => new ConnectionException($exception, $query), | ||
44 | default => new DriverException($exception, $query), | ||
45 | }; | ||
46 | } | ||
47 | } | ||
diff --git a/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php new file mode 100644 index 0000000..ad0f0e1 --- /dev/null +++ b/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php | |||
@@ -0,0 +1,94 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\DBAL\Driver\API\MySQL; | ||
6 | |||
7 | use Doctrine\DBAL\Driver\API\ExceptionConverter as ExceptionConverterInterface; | ||
8 | use Doctrine\DBAL\Driver\Exception; | ||
9 | use Doctrine\DBAL\Exception\ConnectionException; | ||
10 | use Doctrine\DBAL\Exception\ConnectionLost; | ||
11 | use Doctrine\DBAL\Exception\DatabaseDoesNotExist; | ||
12 | use Doctrine\DBAL\Exception\DeadlockException; | ||
13 | use Doctrine\DBAL\Exception\DriverException; | ||
14 | use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; | ||
15 | use Doctrine\DBAL\Exception\InvalidFieldNameException; | ||
16 | use Doctrine\DBAL\Exception\LockWaitTimeoutException; | ||
17 | use Doctrine\DBAL\Exception\NonUniqueFieldNameException; | ||
18 | use Doctrine\DBAL\Exception\NotNullConstraintViolationException; | ||
19 | use Doctrine\DBAL\Exception\SyntaxErrorException; | ||
20 | use Doctrine\DBAL\Exception\TableExistsException; | ||
21 | use Doctrine\DBAL\Exception\TableNotFoundException; | ||
22 | use Doctrine\DBAL\Exception\UniqueConstraintViolationException; | ||
23 | use Doctrine\DBAL\Query; | ||
24 | |||
25 | /** @internal */ | ||
26 | final class ExceptionConverter implements ExceptionConverterInterface | ||
27 | { | ||
28 | /** | ||
29 | * @link https://dev.mysql.com/doc/mysql-errors/8.0/en/client-error-reference.html | ||
30 | * @link https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html | ||
31 | */ | ||
32 | public function convert(Exception $exception, ?Query $query): DriverException | ||
33 | { | ||
34 | return match ($exception->getCode()) { | ||
35 | 1008 => new DatabaseDoesNotExist($exception, $query), | ||
36 | 1213 => new DeadlockException($exception, $query), | ||
37 | 1205 => new LockWaitTimeoutException($exception, $query), | ||
38 | 1050 => new TableExistsException($exception, $query), | ||
39 | 1051, | ||
40 | 1146 => new TableNotFoundException($exception, $query), | ||
41 | 1216, | ||
42 | 1217, | ||
43 | 1451, | ||
44 | 1452, | ||
45 | 1701 => new ForeignKeyConstraintViolationException($exception, $query), | ||
46 | 1062, | ||
47 | 1557, | ||
48 | 1569, | ||
49 | 1586 => new UniqueConstraintViolationException($exception, $query), | ||
50 | 1054, | ||
51 | 1166, | ||
52 | 1611 => new InvalidFieldNameException($exception, $query), | ||
53 | 1052, | ||
54 | 1060, | ||
55 | 1110 => new NonUniqueFieldNameException($exception, $query), | ||
56 | 1064, | ||
57 | 1149, | ||
58 | 1287, | ||
59 | 1341, | ||
60 | 1342, | ||
61 | 1343, | ||
62 | 1344, | ||
63 | 1382, | ||
64 | 1479, | ||
65 | 1541, | ||
66 | 1554, | ||
67 | 1626 => new SyntaxErrorException($exception, $query), | ||
68 | 1044, | ||
69 | 1045, | ||
70 | 1046, | ||
71 | 1049, | ||
72 | 1095, | ||
73 | 1142, | ||
74 | 1143, | ||
75 | 1227, | ||
76 | 1370, | ||
77 | 1429, | ||
78 | 2002, | ||
79 | 2005, | ||
80 | 2054 => new ConnectionException($exception, $query), | ||
81 | 2006, | ||
82 | 4031 => new ConnectionLost($exception, $query), | ||
83 | 1048, | ||
84 | 1121, | ||
85 | 1138, | ||
86 | 1171, | ||
87 | 1252, | ||
88 | 1263, | ||
89 | 1364, | ||
90 | 1566 => new NotNullConstraintViolationException($exception, $query), | ||
91 | default => new DriverException($exception, $query), | ||
92 | }; | ||
93 | } | ||
94 | } | ||
diff --git a/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php new file mode 100644 index 0000000..1c0dc79 --- /dev/null +++ b/vendor/doctrine/dbal/src/Driver/API/OCI/ExceptionConverter.php | |||
@@ -0,0 +1,52 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\DBAL\Driver\API\OCI; | ||
6 | |||
7 | use Doctrine\DBAL\Driver\API\ExceptionConverter as ExceptionConverterInterface; | ||
8 | use Doctrine\DBAL\Driver\Exception; | ||
9 | use Doctrine\DBAL\Exception\ConnectionException; | ||
10 | use Doctrine\DBAL\Exception\DatabaseDoesNotExist; | ||
11 | use Doctrine\DBAL\Exception\DatabaseObjectNotFoundException; | ||
12 | use Doctrine\DBAL\Exception\DriverException; | ||
13 | use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; | ||
14 | use Doctrine\DBAL\Exception\InvalidFieldNameException; | ||
15 | use Doctrine\DBAL\Exception\NonUniqueFieldNameException; | ||
16 | use Doctrine\DBAL\Exception\NotNullConstraintViolationException; | ||
17 | use Doctrine\DBAL\Exception\SyntaxErrorException; | ||
18 | use Doctrine\DBAL\Exception\TableExistsException; | ||
19 | use Doctrine\DBAL\Exception\TableNotFoundException; | ||
20 | use Doctrine\DBAL\Exception\UniqueConstraintViolationException; | ||
21 | use Doctrine\DBAL\Query; | ||
22 | |||
23 | /** @internal */ | ||
24 | final class ExceptionConverter implements ExceptionConverterInterface | ||
25 | { | ||
26 | /** @link http://www.dba-oracle.com/t_error_code_list.htm */ | ||
27 | public function convert(Exception $exception, ?Query $query): DriverException | ||
28 | { | ||
29 | return match ($exception->getCode()) { | ||
30 | 1, | ||
31 | 2299, | ||
32 | 38911 => new UniqueConstraintViolationException($exception, $query), | ||
33 | 904 => new InvalidFieldNameException($exception, $query), | ||
34 | 918, | ||
35 | 960 => new NonUniqueFieldNameException($exception, $query), | ||
36 | 923 => new SyntaxErrorException($exception, $query), | ||
37 | 942 => new TableNotFoundException($exception, $query), | ||
38 | 955 => new TableExistsException($exception, $query), | ||
39 | 1017, | ||
40 | 12545 => new ConnectionException($exception, $query), | ||
41 | 1400 => new NotNullConstraintViolationException($exception, $query), | ||
42 | 1918 => new DatabaseDoesNotExist($exception, $query), | ||
43 | 2289, | ||
44 | 2443, | ||
45 | 4080 => new DatabaseObjectNotFoundException($exception, $query), | ||
46 | 2266, | ||
47 | 2291, | ||
48 | 2292 => new ForeignKeyConstraintViolationException($exception, $query), | ||
49 | default => new DriverException($exception, $query), | ||
50 | }; | ||
51 | } | ||
52 | } | ||
diff --git a/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php new file mode 100644 index 0000000..54e4966 --- /dev/null +++ b/vendor/doctrine/dbal/src/Driver/API/PostgreSQL/ExceptionConverter.php | |||
@@ -0,0 +1,82 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\DBAL\Driver\API\PostgreSQL; | ||
6 | |||
7 | use Doctrine\DBAL\Driver\API\ExceptionConverter as ExceptionConverterInterface; | ||
8 | use Doctrine\DBAL\Driver\Exception; | ||
9 | use Doctrine\DBAL\Exception\ConnectionException; | ||
10 | use Doctrine\DBAL\Exception\DatabaseDoesNotExist; | ||
11 | use Doctrine\DBAL\Exception\DeadlockException; | ||
12 | use Doctrine\DBAL\Exception\DriverException; | ||
13 | use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; | ||
14 | use Doctrine\DBAL\Exception\InvalidFieldNameException; | ||
15 | use Doctrine\DBAL\Exception\NonUniqueFieldNameException; | ||
16 | use Doctrine\DBAL\Exception\NotNullConstraintViolationException; | ||
17 | use Doctrine\DBAL\Exception\SchemaDoesNotExist; | ||
18 | use Doctrine\DBAL\Exception\SyntaxErrorException; | ||
19 | use Doctrine\DBAL\Exception\TableExistsException; | ||
20 | use Doctrine\DBAL\Exception\TableNotFoundException; | ||
21 | use Doctrine\DBAL\Exception\UniqueConstraintViolationException; | ||
22 | use Doctrine\DBAL\Query; | ||
23 | |||
24 | use function str_contains; | ||
25 | |||
26 | /** @internal */ | ||
27 | final class ExceptionConverter implements ExceptionConverterInterface | ||
28 | { | ||
29 | /** @link http://www.postgresql.org/docs/9.4/static/errcodes-appendix.html */ | ||
30 | public function convert(Exception $exception, ?Query $query): DriverException | ||
31 | { | ||
32 | switch ($exception->getSQLState()) { | ||
33 | case '40001': | ||
34 | case '40P01': | ||
35 | return new DeadlockException($exception, $query); | ||
36 | |||
37 | case '0A000': | ||
38 | // Foreign key constraint violations during a TRUNCATE operation | ||
39 | // are considered "feature not supported" in PostgreSQL. | ||
40 | if (str_contains($exception->getMessage(), 'truncate')) { | ||
41 | return new ForeignKeyConstraintViolationException($exception, $query); | ||
42 | } | ||
43 | |||
44 | break; | ||
45 | |||
46 | case '23502': | ||
47 | return new NotNullConstraintViolationException($exception, $query); | ||
48 | |||
49 | case '23503': | ||
50 | return new ForeignKeyConstraintViolationException($exception, $query); | ||
51 | |||
52 | case '23505': | ||
53 | return new UniqueConstraintViolationException($exception, $query); | ||
54 | |||
55 | case '3D000': | ||
56 | return new DatabaseDoesNotExist($exception, $query); | ||
57 | |||
58 | case '3F000': | ||
59 | return new SchemaDoesNotExist($exception, $query); | ||
60 | |||
61 | case '42601': | ||
62 | return new SyntaxErrorException($exception, $query); | ||
63 | |||
64 | case '42702': | ||
65 | return new NonUniqueFieldNameException($exception, $query); | ||
66 | |||
67 | case '42703': | ||
68 | return new InvalidFieldNameException($exception, $query); | ||
69 | |||
70 | case '42P01': | ||
71 | return new TableNotFoundException($exception, $query); | ||
72 | |||
73 | case '42P07': | ||
74 | return new TableExistsException($exception, $query); | ||
75 | |||
76 | case '08006': | ||
77 | return new ConnectionException($exception, $query); | ||
78 | } | ||
79 | |||
80 | return new DriverException($exception, $query); | ||
81 | } | ||
82 | } | ||
diff --git a/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php new file mode 100644 index 0000000..561e58b --- /dev/null +++ b/vendor/doctrine/dbal/src/Driver/API/SQLSrv/ExceptionConverter.php | |||
@@ -0,0 +1,49 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\DBAL\Driver\API\SQLSrv; | ||
6 | |||
7 | use Doctrine\DBAL\Driver\API\ExceptionConverter as ExceptionConverterInterface; | ||
8 | use Doctrine\DBAL\Driver\Exception; | ||
9 | use Doctrine\DBAL\Exception\ConnectionException; | ||
10 | use Doctrine\DBAL\Exception\DatabaseObjectNotFoundException; | ||
11 | use Doctrine\DBAL\Exception\DriverException; | ||
12 | use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; | ||
13 | use Doctrine\DBAL\Exception\InvalidFieldNameException; | ||
14 | use Doctrine\DBAL\Exception\NonUniqueFieldNameException; | ||
15 | use Doctrine\DBAL\Exception\NotNullConstraintViolationException; | ||
16 | use Doctrine\DBAL\Exception\SyntaxErrorException; | ||
17 | use Doctrine\DBAL\Exception\TableExistsException; | ||
18 | use Doctrine\DBAL\Exception\TableNotFoundException; | ||
19 | use Doctrine\DBAL\Exception\UniqueConstraintViolationException; | ||
20 | use Doctrine\DBAL\Query; | ||
21 | |||
22 | /** | ||
23 | * @internal | ||
24 | * | ||
25 | * @link https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/database-engine-events-and-errors | ||
26 | */ | ||
27 | final class ExceptionConverter implements ExceptionConverterInterface | ||
28 | { | ||
29 | public function convert(Exception $exception, ?Query $query): DriverException | ||
30 | { | ||
31 | return match ($exception->getCode()) { | ||
32 | 102 => new SyntaxErrorException($exception, $query), | ||
33 | 207 => new InvalidFieldNameException($exception, $query), | ||
34 | 208 => new TableNotFoundException($exception, $query), | ||
35 | 209 => new NonUniqueFieldNameException($exception, $query), | ||
36 | 515 => new NotNullConstraintViolationException($exception, $query), | ||
37 | 547, | ||
38 | 4712 => new ForeignKeyConstraintViolationException($exception, $query), | ||
39 | 2601, | ||
40 | 2627 => new UniqueConstraintViolationException($exception, $query), | ||
41 | 2714 => new TableExistsException($exception, $query), | ||
42 | 3701, | ||
43 | 15151 => new DatabaseObjectNotFoundException($exception, $query), | ||
44 | 11001, | ||
45 | 18456 => new ConnectionException($exception, $query), | ||
46 | default => new DriverException($exception, $query), | ||
47 | }; | ||
48 | } | ||
49 | } | ||
diff --git a/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php b/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php new file mode 100644 index 0000000..5885195 --- /dev/null +++ b/vendor/doctrine/dbal/src/Driver/API/SQLite/ExceptionConverter.php | |||
@@ -0,0 +1,85 @@ | |||
1 | <?php | ||
2 | |||
3 | declare(strict_types=1); | ||
4 | |||
5 | namespace Doctrine\DBAL\Driver\API\SQLite; | ||
6 | |||
7 | use Doctrine\DBAL\Driver\API\ExceptionConverter as ExceptionConverterInterface; | ||
8 | use Doctrine\DBAL\Driver\Exception; | ||
9 | use Doctrine\DBAL\Exception\ConnectionException; | ||
10 | use Doctrine\DBAL\Exception\DriverException; | ||
11 | use Doctrine\DBAL\Exception\ForeignKeyConstraintViolationException; | ||
12 | use Doctrine\DBAL\Exception\InvalidFieldNameException; | ||
13 | use Doctrine\DBAL\Exception\LockWaitTimeoutException; | ||
14 | use Doctrine\DBAL\Exception\NonUniqueFieldNameException; | ||
15 | use Doctrine\DBAL\Exception\NotNullConstraintViolationException; | ||
16 | use Doctrine\DBAL\Exception\ReadOnlyException; | ||
17 | use Doctrine\DBAL\Exception\SyntaxErrorException; | ||
18 | use Doctrine\DBAL\Exception\TableExistsException; | ||
19 | use Doctrine\DBAL\Exception\TableNotFoundException; | ||
20 | use Doctrine\DBAL\Exception\UniqueConstraintViolationException; | ||
21 | use Doctrine\DBAL\Query; | ||
22 | |||
23 | use function str_contains; | ||
24 | |||
25 | /** @internal */ | ||
26 | final class ExceptionConverter implements ExceptionConverterInterface | ||
27 | { | ||
28 | /** @link http://www.sqlite.org/c3ref/c_abort.html */ | ||
29 | public function convert(Exception $exception, ?Query $query): DriverException | ||
30 | { | ||
31 | if (str_contains($exception->getMessage(), 'database is locked')) { | ||
32 | return new LockWaitTimeoutException($exception, $query); | ||
33 | } | ||
34 | |||
35 | if ( | ||
36 | str_contains($exception->getMessage(), 'must be unique') || | ||
37 | str_contains($exception->getMessage(), 'is not unique') || | ||
38 | str_contains($exception->getMessage(), 'are not unique') || | ||
39 | str_contains($exception->getMessage(), 'UNIQUE constraint failed') | ||
40 | ) { | ||
41 | return new UniqueConstraintViolationException($exception, $query); | ||
42 | } | ||
43 | |||
44 | if ( | ||
45 | str_contains($exception->getMessage(), 'may not be NULL') || | ||
46 | str_contains($exception->getMessage(), 'NOT NULL constraint failed') | ||
47 | ) { | ||
48 | return new NotNullConstraintViolationException($exception, $query); | ||
49 | } | ||
50 | |||
51 | if (str_contains($exception->getMessage(), 'no such table:')) { | ||
52 | return new TableNotFoundException($exception, $query); | ||
53 | } | ||
54 | |||
55 | if (str_contains($exception->getMessage(), 'already exists')) { | ||
56 | return new TableExistsException($exception, $query); | ||
57 | } | ||
58 | |||
59 | if (str_contains($exception->getMessage(), 'has no column named')) { | ||
60 | return new InvalidFieldNameException($exception, $query); | ||
61 | } | ||
62 | |||
63 | if (str_contains($exception->getMessage(), 'ambiguous column name')) { | ||
64 | return new NonUniqueFieldNameException($exception, $query); | ||
65 | } | ||
66 | |||
67 | if (str_contains($exception->getMessage(), 'syntax error')) { | ||
68 | return new SyntaxErrorException($exception, $query); | ||
69 | } | ||
70 | |||
71 | if (str_contains($exception->getMessage(), 'attempt to write a readonly database')) { | ||
72 | return new ReadOnlyException($exception, $query); | ||
73 | } | ||
74 | |||
75 | if (str_contains($exception->getMessage(), 'unable to open database file')) { | ||
76 | return new ConnectionException($exception, $query); | ||
77 | } | ||
78 | |||
79 | if (str_contains($exception->getMessage(), 'FOREIGN KEY constraint failed')) { | ||
80 | return new ForeignKeyConstraintViolationException($exception, $query); | ||
81 | } | ||
82 | |||
83 | return new DriverException($exception, $query); | ||
84 | } | ||
85 | } | ||