Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
doctrine-dbal
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Tomáš Trávníček
doctrine-dbal
Commits
8aae77e0
Commit
8aae77e0
authored
May 26, 2016
by
Steve Müller
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #2390 from fprochazka/php7-throwable
Catch Throwable in Connection::transactional()
parents
affe2f49
db06fceb
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
28 additions
and
5 deletions
+28
-5
Connection.php
lib/Doctrine/DBAL/Connection.php
+9
-5
ConnectionTest.php
tests/Doctrine/Tests/DBAL/Functional/ConnectionTest.php
+19
-0
No files found.
lib/Doctrine/DBAL/Connection.php
View file @
8aae77e0
...
...
@@ -32,6 +32,7 @@ use Doctrine\DBAL\Cache\QueryCacheProfile;
use
Doctrine\DBAL\Cache\ArrayStatement
;
use
Doctrine\DBAL\Cache\CacheException
;
use
Doctrine\DBAL\Driver\PingableConnection
;
use
Throwable
;
/**
* A wrapper around a Doctrine\DBAL\Driver\Connection that adds features like
...
...
@@ -773,7 +774,7 @@ class Connection implements DriverConnection
{
try
{
$stmt
=
new
Statement
(
$statement
,
$this
);
}
catch
(
\
Exception
$ex
)
{
}
catch
(
Exception
$ex
)
{
throw
DBALException
::
driverExceptionDuringQuery
(
$this
->
_driver
,
$ex
,
$statement
);
}
...
...
@@ -824,7 +825,7 @@ class Connection implements DriverConnection
}
else
{
$stmt
=
$this
->
_conn
->
query
(
$query
);
}
}
catch
(
\
Exception
$ex
)
{
}
catch
(
Exception
$ex
)
{
throw
DBALException
::
driverExceptionDuringQuery
(
$this
->
_driver
,
$ex
,
$query
,
$this
->
resolveParams
(
$params
,
$types
));
}
...
...
@@ -933,7 +934,7 @@ class Connection implements DriverConnection
$statement
=
call_user_func_array
(
array
(
$this
->
_conn
,
'query'
),
$args
);
break
;
}
}
catch
(
\
Exception
$ex
)
{
}
catch
(
Exception
$ex
)
{
throw
DBALException
::
driverExceptionDuringQuery
(
$this
->
_driver
,
$ex
,
$args
[
0
]);
}
...
...
@@ -984,7 +985,7 @@ class Connection implements DriverConnection
}
else
{
$result
=
$this
->
_conn
->
exec
(
$query
);
}
}
catch
(
\
Exception
$ex
)
{
}
catch
(
Exception
$ex
)
{
throw
DBALException
::
driverExceptionDuringQuery
(
$this
->
_driver
,
$ex
,
$query
,
$this
->
resolveParams
(
$params
,
$types
));
}
...
...
@@ -1015,7 +1016,7 @@ class Connection implements DriverConnection
try
{
$result
=
$this
->
_conn
->
exec
(
$statement
);
}
catch
(
\
Exception
$ex
)
{
}
catch
(
Exception
$ex
)
{
throw
DBALException
::
driverExceptionDuringQuery
(
$this
->
_driver
,
$ex
,
$statement
);
}
...
...
@@ -1103,6 +1104,9 @@ class Connection implements DriverConnection
}
catch
(
Exception
$e
)
{
$this
->
rollBack
();
throw
$e
;
}
catch
(
Throwable
$e
)
{
$this
->
rollBack
();
throw
$e
;
}
}
...
...
tests/Doctrine/Tests/DBAL/Functional/ConnectionTest.php
View file @
8aae77e0
...
...
@@ -196,11 +196,30 @@ class ConnectionTest extends \Doctrine\Tests\DbalFunctionalTestCase
$conn
->
executeQuery
(
$conn
->
getDatabasePlatform
()
->
getDummySelectSQL
());
throw
new
\RuntimeException
(
"Ooops!"
);
});
$this
->
fail
(
'Expected exception'
);
}
catch
(
\RuntimeException
$expected
)
{
$this
->
assertEquals
(
0
,
$this
->
_conn
->
getTransactionNestingLevel
());
}
}
public
function
testTransactionalWithThrowable
()
{
if
(
version_compare
(
PHP_VERSION
,
'7.0'
,
'<'
))
{
$this
->
markTestSkipped
(
'Only for PHP 7.0 and above.'
);
}
try
{
$this
->
_conn
->
transactional
(
function
(
$conn
)
{
/* @var $conn \Doctrine\DBAL\Connection */
$conn
->
executeQuery
(
$conn
->
getDatabasePlatform
()
->
getDummySelectSQL
());
throw
new
\Error
(
"Ooops!"
);
});
$this
->
fail
(
'Expected exception'
);
}
catch
(
\Error
$expected
)
{
$this
->
assertEquals
(
0
,
$this
->
_conn
->
getTransactionNestingLevel
());
}
}
public
function
testTransactional
()
{
$this
->
_conn
->
transactional
(
function
(
$conn
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment