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
6e63c7f0
Unverified
Commit
6e63c7f0
authored
Jun 04, 2019
by
Jonathan H. Wage
Committed by
Sergei Morozov
Jan 11, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Make classes final where applicable.
parent
69cd77e0
Changes
27
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
27 changed files
with
221 additions
and
249 deletions
+221
-249
UPGRADE.md
UPGRADE.md
+33
-0
ArrayStatement.php
lib/Doctrine/DBAL/Cache/ArrayStatement.php
+1
-1
ResultCacheStatement.php
lib/Doctrine/DBAL/Cache/ResultCacheStatement.php
+1
-1
DB2Connection.php
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Connection.php
+2
-2
DB2Driver.php
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Driver.php
+1
-1
DB2Statement.php
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Statement.php
+16
-16
Driver.php
lib/Doctrine/DBAL/Driver/Mysqli/Driver.php
+1
-1
MysqliStatement.php
lib/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php
+58
-58
Driver.php
lib/Doctrine/DBAL/Driver/OCI8/Driver.php
+3
-3
Driver.php
lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php
+2
-2
Driver.php
lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php
+1
-1
Driver.php
lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php
+3
-3
Driver.php
lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php
+7
-7
Driver.php
lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php
+3
-3
Statement.php
lib/Doctrine/DBAL/Driver/PDOSqlsrv/Statement.php
+1
-1
Driver.php
lib/Doctrine/DBAL/Driver/SQLAnywhere/Driver.php
+1
-1
SQLAnywhereConnection.php
...octrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php
+1
-1
SQLAnywhereStatement.php
...Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereStatement.php
+1
-1
Driver.php
lib/Doctrine/DBAL/Driver/SQLSrv/Driver.php
+1
-1
SQLSrvConnection.php
lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php
+3
-3
SQLSrvStatement.php
lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php
+46
-46
StatementIterator.php
lib/Doctrine/DBAL/Driver/StatementIterator.php
+1
-1
TableGeneratorSchemaVisitor.php
lib/Doctrine/DBAL/Id/TableGeneratorSchemaVisitor.php
+1
-1
Statement.php
lib/Doctrine/DBAL/Portability/Statement.php
+29
-29
SingleDatabaseSynchronizer.php
...e/DBAL/Schema/Synchronizer/SingleDatabaseSynchronizer.php
+1
-1
RemoveNamespacedAssets.php
lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php
+1
-1
StatementIteratorTest.php
tests/Doctrine/Tests/DBAL/Driver/StatementIteratorTest.php
+2
-63
No files found.
UPGRADE.md
View file @
6e63c7f0
...
@@ -44,6 +44,39 @@ If you are using any of the legacy versions, you have to upgrade to newer MariaD
...
@@ -44,6 +44,39 @@ If you are using any of the legacy versions, you have to upgrade to newer MariaD
Table columns are no longer indexed by column name. Use the
`name`
attribute of the column instead.
Table columns are no longer indexed by column name. Use the
`name`
attribute of the column instead.
## BC BREAK: Classes made final
-
Class constant
`SQLSrvStatement::LAST_INSERT_ID_SQL`
was changed from public to private.
-
Class
`Doctrine\DBAL\Sharding\ShardChoser\MultiTenantShardChoser`
was made final.
-
Class
`Doctrine\DBAL\Sharding\SQLAzure\Schema\MultiTenantVisitor`
was made final.
-
Class
`Doctrine\DBAL\Sharding\SQLAzure\SQLAzureFederationsSynchronizer`
was made final.
-
Class
`Doctrine\DBAL\Sharding\PoolingShardManager`
was made final.
-
Class
`Doctrine\DBAL\Id\TableGeneratorSchemaVisitor`
was made final.
-
Class
`Doctrine\DBAL\Driver\OCI8\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\Mysqli\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\Mysqli\MysqliStatement`
was made final.
-
Class
`Doctrine\DBAL\Driver\PDOSqlsrv\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\PDOSqlsrv\Statement`
was made final.
-
Class
`Doctrine\DBAL\Driver\PDOMySql\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\IBMDB2\DB2Connection`
was made final.
-
Class
`Doctrine\DBAL\Driver\IBMDB2\DB2Statement`
was made final.
-
Class
`Doctrine\DBAL\Driver\IBMDB2\DB2Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\SQLSrv\SQLSrvStatement`
was made final.
-
Class
`Doctrine\DBAL\Driver\SQLSrv\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\SQLSrv\SQLSrvConnection`
was made final.
-
Class
`Doctrine\DBAL\Driver\SQLAnywhere\SQLAnywhereConnection`
was made final.
-
Class
`Doctrine\DBAL\Driver\SQLAnywhere\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\SQLAnywhere\SQLAnywhereStatement`
was made final.
-
Class
`Doctrine\DBAL\Driver\PDOPgSql\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\PDOOracle\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\PDOSqlite\Driver`
was made final.
-
Class
`Doctrine\DBAL\Driver\StatementIterator`
was made final.
-
Class
`Doctrine\DBAL\Cache\ResultCacheStatement`
was made final.
-
Class
`Doctrine\DBAL\Cache\ArrayStatement`
was made final.
-
Class
`Doctrine\DBAL\Schema\Synchronizer\SingleDatabaseSynchronizer`
was made final.
-
Class
`Doctrine\DBAL\Schema\Visitor\RemoveNamespacedAssets`
was made final.
-
Class
`Doctrine\DBAL\Portability\Statement`
was made final.
## BC BREAK: Changes in the `Doctrine\DBAL\Schema` API
## BC BREAK: Changes in the `Doctrine\DBAL\Schema` API
-
Column precision no longer defaults to 10. The default value is NULL.
-
Column precision no longer defaults to 10. The default value is NULL.
...
...
lib/Doctrine/DBAL/Cache/ArrayStatement.php
View file @
6e63c7f0
...
@@ -17,7 +17,7 @@ use function count;
...
@@ -17,7 +17,7 @@ use function count;
use
function
reset
;
use
function
reset
;
use
function
sprintf
;
use
function
sprintf
;
class
ArrayStatement
implements
IteratorAggregate
,
ResultStatement
final
class
ArrayStatement
implements
IteratorAggregate
,
ResultStatement
{
{
/** @var mixed[] */
/** @var mixed[] */
private
$data
;
private
$data
;
...
...
lib/Doctrine/DBAL/Cache/ResultCacheStatement.php
View file @
6e63c7f0
...
@@ -30,7 +30,7 @@ use function reset;
...
@@ -30,7 +30,7 @@ use function reset;
* Also you have to realize that the cache will load the whole result into memory at once to ensure 2.
* Also you have to realize that the cache will load the whole result into memory at once to ensure 2.
* This means that the memory usage for cached results might increase by using this feature.
* This means that the memory usage for cached results might increase by using this feature.
*/
*/
class
ResultCacheStatement
implements
IteratorAggregate
,
ResultStatement
final
class
ResultCacheStatement
implements
IteratorAggregate
,
ResultStatement
{
{
/** @var Cache */
/** @var Cache */
private
$resultCache
;
private
$resultCache
;
...
...
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Connection.php
View file @
6e63c7f0
...
@@ -22,10 +22,10 @@ use function db2_prepare;
...
@@ -22,10 +22,10 @@ use function db2_prepare;
use
function
db2_rollback
;
use
function
db2_rollback
;
use
function
db2_server_info
;
use
function
db2_server_info
;
class
DB2Connection
implements
ServerInfoAwareConnection
final
class
DB2Connection
implements
ServerInfoAwareConnection
{
{
/** @var resource */
/** @var resource */
private
$conn
=
null
;
private
$conn
;
/**
/**
* @param array<string, mixed> $params
* @param array<string, mixed> $params
...
...
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Driver.php
View file @
6e63c7f0
...
@@ -14,7 +14,7 @@ use function sprintf;
...
@@ -14,7 +14,7 @@ use function sprintf;
/**
/**
* IBM DB2 Driver.
* IBM DB2 Driver.
*/
*/
class
DB2Driver
extends
AbstractDB2Driver
final
class
DB2Driver
extends
AbstractDB2Driver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Statement.php
View file @
6e63c7f0
...
@@ -48,7 +48,7 @@ use function stream_get_meta_data;
...
@@ -48,7 +48,7 @@ use function stream_get_meta_data;
use
function
strtolower
;
use
function
strtolower
;
use
function
tmpfile
;
use
function
tmpfile
;
class
DB2Statement
implements
IteratorAggregate
,
Statement
final
class
DB2Statement
implements
IteratorAggregate
,
Statement
{
{
/** @var resource */
/** @var resource */
private
$stmt
;
private
$stmt
;
...
@@ -128,21 +128,6 @@ class DB2Statement implements IteratorAggregate, Statement
...
@@ -128,21 +128,6 @@ class DB2Statement implements IteratorAggregate, Statement
}
}
}
}
/**
* @param int $position Parameter position
* @param mixed $variable
*
* @throws DB2Exception
*/
private
function
bind
(
int
$position
,
&
$variable
,
int
$parameterType
,
int
$dataType
)
:
void
{
$this
->
bindParam
[
$position
]
=&
$variable
;
if
(
!
db2_bind_param
(
$this
->
stmt
,
$position
,
'variable'
,
$parameterType
,
$dataType
))
{
throw
DB2Exception
::
fromStatementError
(
$this
->
stmt
);
}
}
/**
/**
* {@inheritdoc}
* {@inheritdoc}
*/
*/
...
@@ -336,6 +321,21 @@ class DB2Statement implements IteratorAggregate, Statement
...
@@ -336,6 +321,21 @@ class DB2Statement implements IteratorAggregate, Statement
return
@
db2_num_rows
(
$this
->
stmt
)
?
:
0
;
return
@
db2_num_rows
(
$this
->
stmt
)
?
:
0
;
}
}
/**
* @param int $position Parameter position
* @param mixed $variable
*
* @throws DB2Exception
*/
private
function
bind
(
int
$position
,
&
$variable
,
int
$parameterType
,
int
$dataType
)
:
void
{
$this
->
bindParam
[
$position
]
=&
$variable
;
if
(
!
db2_bind_param
(
$this
->
stmt
,
$position
,
'variable'
,
$parameterType
,
$dataType
))
{
throw
DB2Exception
::
fromStatementError
(
$this
->
stmt
);
}
}
/**
/**
* Casts a stdClass object to the given class name mapping its' properties.
* Casts a stdClass object to the given class name mapping its' properties.
*
*
...
...
lib/Doctrine/DBAL/Driver/Mysqli/Driver.php
View file @
6e63c7f0
...
@@ -8,7 +8,7 @@ use Doctrine\DBAL\DBALException;
...
@@ -8,7 +8,7 @@ use Doctrine\DBAL\DBALException;
use
Doctrine\DBAL\Driver\AbstractMySQLDriver
;
use
Doctrine\DBAL\Driver\AbstractMySQLDriver
;
use
Doctrine\DBAL\Driver\Connection
;
use
Doctrine\DBAL\Driver\Connection
;
class
Driver
extends
AbstractMySQLDriver
final
class
Driver
extends
AbstractMySQLDriver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php
View file @
6e63c7f0
This diff is collapsed.
Click to expand it.
lib/Doctrine/DBAL/Driver/OCI8/Driver.php
View file @
6e63c7f0
...
@@ -12,7 +12,7 @@ use const OCI_DEFAULT;
...
@@ -12,7 +12,7 @@ use const OCI_DEFAULT;
/**
/**
* A Doctrine DBAL driver for the Oracle OCI8 PHP extensions.
* A Doctrine DBAL driver for the Oracle OCI8 PHP extensions.
*/
*/
class
Driver
extends
AbstractOracleDriver
final
class
Driver
extends
AbstractOracleDriver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
@@ -27,7 +27,7 @@ class Driver extends AbstractOracleDriver
...
@@ -27,7 +27,7 @@ class Driver extends AbstractOracleDriver
return
new
OCI8Connection
(
return
new
OCI8Connection
(
$username
,
$username
,
$password
,
$password
,
$this
->
_
constructDsn
(
$params
),
$this
->
constructDsn
(
$params
),
$params
[
'charset'
]
??
''
,
$params
[
'charset'
]
??
''
,
$params
[
'sessionMode'
]
??
OCI_DEFAULT
,
$params
[
'sessionMode'
]
??
OCI_DEFAULT
,
$params
[
'persistent'
]
??
false
$params
[
'persistent'
]
??
false
...
@@ -44,7 +44,7 @@ class Driver extends AbstractOracleDriver
...
@@ -44,7 +44,7 @@ class Driver extends AbstractOracleDriver
*
*
* @return string The DSN.
* @return string The DSN.
*/
*/
pr
otected
function
_
constructDsn
(
array
$params
)
:
string
pr
ivate
function
constructDsn
(
array
$params
)
:
string
{
{
return
$this
->
getEasyConnectString
(
$params
);
return
$this
->
getEasyConnectString
(
$params
);
}
}
...
...
lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php
View file @
6e63c7f0
...
@@ -14,7 +14,7 @@ use PDO;
...
@@ -14,7 +14,7 @@ use PDO;
/**
/**
* PDO MySql driver.
* PDO MySql driver.
*/
*/
class
Driver
extends
AbstractMySQLDriver
final
class
Driver
extends
AbstractMySQLDriver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
@@ -50,7 +50,7 @@ class Driver extends AbstractMySQLDriver
...
@@ -50,7 +50,7 @@ class Driver extends AbstractMySQLDriver
*
*
* @return string The DSN.
* @return string The DSN.
*/
*/
pr
otected
function
constructPdoDsn
(
array
$params
)
:
string
pr
ivate
function
constructPdoDsn
(
array
$params
)
:
string
{
{
$dsn
=
'mysql:'
;
$dsn
=
'mysql:'
;
if
(
isset
(
$params
[
'host'
])
&&
$params
[
'host'
]
!==
''
)
{
if
(
isset
(
$params
[
'host'
])
&&
$params
[
'host'
]
!==
''
)
{
...
...
lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php
View file @
6e63c7f0
...
@@ -19,7 +19,7 @@ use PDO;
...
@@ -19,7 +19,7 @@ use PDO;
* which leads us to the recommendation to use the "oci8" driver to connect
* which leads us to the recommendation to use the "oci8" driver to connect
* to Oracle instead.
* to Oracle instead.
*/
*/
class
Driver
extends
AbstractOracleDriver
final
class
Driver
extends
AbstractOracleDriver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php
View file @
6e63c7f0
...
@@ -15,7 +15,7 @@ use function defined;
...
@@ -15,7 +15,7 @@ use function defined;
/**
/**
* Driver that connects through pdo_pgsql.
* Driver that connects through pdo_pgsql.
*/
*/
class
Driver
extends
AbstractPostgreSQLDriver
final
class
Driver
extends
AbstractPostgreSQLDriver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
@@ -32,7 +32,7 @@ class Driver extends AbstractPostgreSQLDriver
...
@@ -32,7 +32,7 @@ class Driver extends AbstractPostgreSQLDriver
try
{
try
{
$connection
=
new
PDOConnection
(
$connection
=
new
PDOConnection
(
$this
->
_
constructPdoDsn
(
$params
),
$this
->
constructPdoDsn
(
$params
),
$username
,
$username
,
$password
,
$password
,
$driverOptions
$driverOptions
...
@@ -67,7 +67,7 @@ class Driver extends AbstractPostgreSQLDriver
...
@@ -67,7 +67,7 @@ class Driver extends AbstractPostgreSQLDriver
*
*
* @return string The DSN.
* @return string The DSN.
*/
*/
private
function
_
constructPdoDsn
(
array
$params
)
:
string
private
function
constructPdoDsn
(
array
$params
)
:
string
{
{
$dsn
=
'pgsql:'
;
$dsn
=
'pgsql:'
;
...
...
lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php
View file @
6e63c7f0
...
@@ -15,10 +15,10 @@ use function array_merge;
...
@@ -15,10 +15,10 @@ use function array_merge;
/**
/**
* The PDO Sqlite driver.
* The PDO Sqlite driver.
*/
*/
class
Driver
extends
AbstractSQLiteDriver
final
class
Driver
extends
AbstractSQLiteDriver
{
{
/** @var mixed[] */
/** @var mixed[] */
pr
otected
$_
userDefinedFunctions
=
[
pr
ivate
$
userDefinedFunctions
=
[
'sqrt'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfSqrt'
],
'numArgs'
=>
1
],
'sqrt'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfSqrt'
],
'numArgs'
=>
1
],
'mod'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfMod'
],
'numArgs'
=>
2
],
'mod'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfMod'
],
'numArgs'
=>
2
],
'locate'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfLocate'
],
'numArgs'
=>
-
1
],
'locate'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfLocate'
],
'numArgs'
=>
-
1
],
...
@@ -34,8 +34,8 @@ class Driver extends AbstractSQLiteDriver
...
@@ -34,8 +34,8 @@ class Driver extends AbstractSQLiteDriver
array
$driverOptions
=
[]
array
$driverOptions
=
[]
)
:
Connection
{
)
:
Connection
{
if
(
isset
(
$driverOptions
[
'userDefinedFunctions'
]))
{
if
(
isset
(
$driverOptions
[
'userDefinedFunctions'
]))
{
$this
->
_
userDefinedFunctions
=
array_merge
(
$this
->
userDefinedFunctions
=
array_merge
(
$this
->
_
userDefinedFunctions
,
$this
->
userDefinedFunctions
,
$driverOptions
[
'userDefinedFunctions'
]
$driverOptions
[
'userDefinedFunctions'
]
);
);
unset
(
$driverOptions
[
'userDefinedFunctions'
]);
unset
(
$driverOptions
[
'userDefinedFunctions'
]);
...
@@ -43,7 +43,7 @@ class Driver extends AbstractSQLiteDriver
...
@@ -43,7 +43,7 @@ class Driver extends AbstractSQLiteDriver
try
{
try
{
$connection
=
new
PDOConnection
(
$connection
=
new
PDOConnection
(
$this
->
_
constructPdoDsn
(
$params
),
$this
->
constructPdoDsn
(
$params
),
$username
,
$username
,
$password
,
$password
,
$driverOptions
$driverOptions
...
@@ -54,7 +54,7 @@ class Driver extends AbstractSQLiteDriver
...
@@ -54,7 +54,7 @@ class Driver extends AbstractSQLiteDriver
$pdo
=
$connection
->
getWrappedConnection
();
$pdo
=
$connection
->
getWrappedConnection
();
foreach
(
$this
->
_
userDefinedFunctions
as
$fn
=>
$data
)
{
foreach
(
$this
->
userDefinedFunctions
as
$fn
=>
$data
)
{
$pdo
->
sqliteCreateFunction
(
$fn
,
$data
[
'callback'
],
$data
[
'numArgs'
]);
$pdo
->
sqliteCreateFunction
(
$fn
,
$data
[
'callback'
],
$data
[
'numArgs'
]);
}
}
...
@@ -68,7 +68,7 @@ class Driver extends AbstractSQLiteDriver
...
@@ -68,7 +68,7 @@ class Driver extends AbstractSQLiteDriver
*
*
* @return string The DSN.
* @return string The DSN.
*/
*/
pr
otected
function
_
constructPdoDsn
(
array
$params
)
:
string
pr
ivate
function
constructPdoDsn
(
array
$params
)
:
string
{
{
$dsn
=
'sqlite:'
;
$dsn
=
'sqlite:'
;
if
(
isset
(
$params
[
'path'
]))
{
if
(
isset
(
$params
[
'path'
]))
{
...
...
lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php
View file @
6e63c7f0
...
@@ -13,7 +13,7 @@ use function sprintf;
...
@@ -13,7 +13,7 @@ use function sprintf;
/**
/**
* The PDO-based Sqlsrv driver.
* The PDO-based Sqlsrv driver.
*/
*/
class
Driver
extends
AbstractSQLServerDriver
final
class
Driver
extends
AbstractSQLServerDriver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
@@ -39,7 +39,7 @@ class Driver extends AbstractSQLServerDriver
...
@@ -39,7 +39,7 @@ class Driver extends AbstractSQLServerDriver
}
}
return
new
Connection
(
return
new
Connection
(
$this
->
_
constructPdoDsn
(
$params
,
$dsnOptions
),
$this
->
constructPdoDsn
(
$params
,
$dsnOptions
),
$username
,
$username
,
$password
,
$password
,
$pdoOptions
$pdoOptions
...
@@ -54,7 +54,7 @@ class Driver extends AbstractSQLServerDriver
...
@@ -54,7 +54,7 @@ class Driver extends AbstractSQLServerDriver
*
*
* @return string The DSN.
* @return string The DSN.
*/
*/
private
function
_
constructPdoDsn
(
array
$params
,
array
$connectionOptions
)
:
string
private
function
constructPdoDsn
(
array
$params
,
array
$connectionOptions
)
:
string
{
{
$dsn
=
'sqlsrv:server='
;
$dsn
=
'sqlsrv:server='
;
...
...
lib/Doctrine/DBAL/Driver/PDOSqlsrv/Statement.php
View file @
6e63c7f0
...
@@ -11,7 +11,7 @@ use PDO;
...
@@ -11,7 +11,7 @@ use PDO;
/**
/**
* PDO SQL Server Statement
* PDO SQL Server Statement
*/
*/
class
Statement
extends
PDOStatement
final
class
Statement
extends
PDOStatement
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/SQLAnywhere/Driver.php
View file @
6e63c7f0
...
@@ -16,7 +16,7 @@ use function sprintf;
...
@@ -16,7 +16,7 @@ use function sprintf;
/**
/**
* A Doctrine DBAL driver for the SAP Sybase SQL Anywhere PHP extension.
* A Doctrine DBAL driver for the SAP Sybase SQL Anywhere PHP extension.
*/
*/
class
Driver
extends
AbstractSQLAnywhereDriver
final
class
Driver
extends
AbstractSQLAnywhereDriver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php
View file @
6e63c7f0
...
@@ -23,7 +23,7 @@ use function sasql_set_option;
...
@@ -23,7 +23,7 @@ use function sasql_set_option;
/**
/**
* SAP Sybase SQL Anywhere implementation of the Connection interface.
* SAP Sybase SQL Anywhere implementation of the Connection interface.
*/
*/
class
SQLAnywhereConnection
implements
ServerInfoAwareConnection
final
class
SQLAnywhereConnection
implements
ServerInfoAwareConnection
{
{
/** @var resource The SQL Anywhere connection resource. */
/** @var resource The SQL Anywhere connection resource. */
private
$connection
;
private
$connection
;
...
...
lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereStatement.php
View file @
6e63c7f0
...
@@ -40,7 +40,7 @@ use function sprintf;
...
@@ -40,7 +40,7 @@ use function sprintf;
/**
/**
* SAP SQL Anywhere implementation of the Statement interface.
* SAP SQL Anywhere implementation of the Statement interface.
*/
*/
class
SQLAnywhereStatement
implements
IteratorAggregate
,
Statement
final
class
SQLAnywhereStatement
implements
IteratorAggregate
,
Statement
{
{
/** @var resource The connection resource. */
/** @var resource The connection resource. */
private
$conn
;
private
$conn
;
...
...
lib/Doctrine/DBAL/Driver/SQLSrv/Driver.php
View file @
6e63c7f0
...
@@ -10,7 +10,7 @@ use Doctrine\DBAL\Driver\Connection;
...
@@ -10,7 +10,7 @@ use Doctrine\DBAL\Driver\Connection;
/**
/**
* Driver for ext/sqlsrv.
* Driver for ext/sqlsrv.
*/
*/
class
Driver
extends
AbstractSQLServerDriver
final
class
Driver
extends
AbstractSQLServerDriver
{
{
/**
/**
* {@inheritdoc}
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php
View file @
6e63c7f0
...
@@ -20,13 +20,13 @@ use function str_replace;
...
@@ -20,13 +20,13 @@ use function str_replace;
/**
/**
* SQL Server implementation for the Connection interface.
* SQL Server implementation for the Connection interface.
*/
*/
class
SQLSrvConnection
implements
ServerInfoAwareConnection
final
class
SQLSrvConnection
implements
ServerInfoAwareConnection
{
{
/** @var resource */
/** @var resource */
pr
otected
$conn
;
pr
ivate
$conn
;
/** @var LastInsertId */
/** @var LastInsertId */
pr
otected
$lastInsertId
;
pr
ivate
$lastInsertId
;
/**
/**
* @param array<string, mixed> $connectionOptions
* @param array<string, mixed> $connectionOptions
...
...
lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php
View file @
6e63c7f0
...
@@ -37,7 +37,7 @@ use function stripos;
...
@@ -37,7 +37,7 @@ use function stripos;
/**
/**
* SQL Server Statement.
* SQL Server Statement.
*/
*/
class
SQLSrvStatement
implements
IteratorAggregate
,
Statement
final
class
SQLSrvStatement
implements
IteratorAggregate
,
Statement
{
{
/**
/**
* The SQLSRV Resource.
* The SQLSRV Resource.
...
@@ -232,51 +232,6 @@ class SQLSrvStatement implements IteratorAggregate, Statement
...
@@ -232,51 +232,6 @@ class SQLSrvStatement implements IteratorAggregate, Statement
$this
->
result
=
true
;
$this
->
result
=
true
;
}
}
/**
* Prepares SQL Server statement resource
*
* @return resource
*
* @throws SQLSrvException
*/
private
function
prepare
()
{
$params
=
[];
foreach
(
$this
->
variables
as
$column
=>
&
$variable
)
{
switch
(
$this
->
types
[
$column
])
{
case
ParameterType
::
LARGE_OBJECT
:
$params
[
$column
-
1
]
=
[
&
$variable
,
SQLSRV_PARAM_IN
,
SQLSRV_PHPTYPE_STREAM
(
SQLSRV_ENC_BINARY
),
SQLSRV_SQLTYPE_VARBINARY
(
'max'
),
];
break
;
case
ParameterType
::
BINARY
:
$params
[
$column
-
1
]
=
[
&
$variable
,
SQLSRV_PARAM_IN
,
SQLSRV_PHPTYPE_STRING
(
SQLSRV_ENC_BINARY
),
];
break
;
default
:
$params
[
$column
-
1
]
=&
$variable
;
break
;
}
}
$stmt
=
sqlsrv_prepare
(
$this
->
conn
,
$this
->
sql
,
$params
);
if
(
!
$stmt
)
{
throw
SQLSrvException
::
fromSqlSrvErrors
();
}
return
$stmt
;
}
/**
/**
* {@inheritdoc}
* {@inheritdoc}
*/
*/
...
@@ -399,4 +354,49 @@ class SQLSrvStatement implements IteratorAggregate, Statement
...
@@ -399,4 +354,49 @@ class SQLSrvStatement implements IteratorAggregate, Statement
return
sqlsrv_rows_affected
(
$this
->
stmt
)
?:
0
;
return
sqlsrv_rows_affected
(
$this
->
stmt
)
?:
0
;
}
}
/**
* Prepares SQL Server statement resource
*
* @return resource
*
* @throws SQLSrvException
*/
private
function
prepare
()
{
$params
=
[];
foreach
(
$this
->
variables
as
$column
=>
&
$variable
)
{
switch
(
$this
->
types
[
$column
])
{
case
ParameterType
::
LARGE_OBJECT
:
$params
[
$column
-
1
]
=
[
&
$variable
,
SQLSRV_PARAM_IN
,
SQLSRV_PHPTYPE_STREAM
(
SQLSRV_ENC_BINARY
),
SQLSRV_SQLTYPE_VARBINARY
(
'max'
),
];
break
;
case
ParameterType
::
BINARY
:
$params
[
$column
-
1
]
=
[
&
$variable
,
SQLSRV_PARAM_IN
,
SQLSRV_PHPTYPE_STRING
(
SQLSRV_ENC_BINARY
),
];
break
;
default
:
$params
[
$column
-
1
]
=&
$variable
;
break
;
}
}
$stmt
=
sqlsrv_prepare
(
$this
->
conn
,
$this
->
sql
,
$params
);
if
(
!
$stmt
)
{
throw
SQLSrvException
::
fromSqlSrvErrors
();
}
return
$stmt
;
}
}
}
lib/Doctrine/DBAL/Driver/StatementIterator.php
View file @
6e63c7f0
...
@@ -6,7 +6,7 @@ namespace Doctrine\DBAL\Driver;
...
@@ -6,7 +6,7 @@ namespace Doctrine\DBAL\Driver;
use
IteratorAggregate
;
use
IteratorAggregate
;
class
StatementIterator
implements
IteratorAggregate
final
class
StatementIterator
implements
IteratorAggregate
{
{
/** @var ResultStatement */
/** @var ResultStatement */
private
$statement
;
private
$statement
;
...
...
lib/Doctrine/DBAL/Id/TableGeneratorSchemaVisitor.php
View file @
6e63c7f0
...
@@ -12,7 +12,7 @@ use Doctrine\DBAL\Schema\Sequence;
...
@@ -12,7 +12,7 @@ use Doctrine\DBAL\Schema\Sequence;
use
Doctrine\DBAL\Schema\Table
;
use
Doctrine\DBAL\Schema\Table
;
use
Doctrine\DBAL\Schema\Visitor\Visitor
;
use
Doctrine\DBAL\Schema\Visitor\Visitor
;
class
TableGeneratorSchemaVisitor
implements
Visitor
final
class
TableGeneratorSchemaVisitor
implements
Visitor
{
{
/** @var string */
/** @var string */
private
$generatorTableName
;
private
$generatorTableName
;
...
...
lib/Doctrine/DBAL/Portability/Statement.php
View file @
6e63c7f0
...
@@ -18,7 +18,7 @@ use function rtrim;
...
@@ -18,7 +18,7 @@ use function rtrim;
/**
/**
* Portability wrapper for a Statement.
* Portability wrapper for a Statement.
*/
*/
class
Statement
implements
IteratorAggregate
,
DriverStatement
final
class
Statement
implements
IteratorAggregate
,
DriverStatement
{
{
/** @var int */
/** @var int */
private
$portability
;
private
$portability
;
...
@@ -164,34 +164,6 @@ class Statement implements IteratorAggregate, DriverStatement
...
@@ -164,34 +164,6 @@ class Statement implements IteratorAggregate, DriverStatement
return
$rows
;
return
$rows
;
}
}
/**
* @param mixed $row
*
* @return mixed
*/
protected
function
fixRow
(
$row
,
bool
$iterateRow
,
bool
$fixCase
)
{
if
(
!
$row
)
{
return
$row
;
}
if
(
$fixCase
)
{
$row
=
array_change_key_case
(
$row
,
$this
->
case
);
}
if
(
$iterateRow
)
{
foreach
(
$row
as
$k
=>
$v
)
{
if
((
$this
->
portability
&
Connection
::
PORTABILITY_EMPTY_TO_NULL
)
&&
$v
===
''
)
{
$row
[
$k
]
=
null
;
}
elseif
((
$this
->
portability
&
Connection
::
PORTABILITY_RTRIM
)
&&
is_string
(
$v
))
{
$row
[
$k
]
=
rtrim
(
$v
);
}
}
}
return
$row
;
}
/**
/**
* {@inheritdoc}
* {@inheritdoc}
*/
*/
...
@@ -219,4 +191,32 @@ class Statement implements IteratorAggregate, DriverStatement
...
@@ -219,4 +191,32 @@ class Statement implements IteratorAggregate, DriverStatement
return
$this
->
stmt
->
rowCount
();
return
$this
->
stmt
->
rowCount
();
}
}
/**
* @param mixed $row
*
* @return mixed
*/
private
function
fixRow
(
$row
,
bool
$iterateRow
,
bool
$fixCase
)
{
if
(
!
$row
)
{
return
$row
;
}
if
(
$fixCase
)
{
$row
=
array_change_key_case
(
$row
,
$this
->
case
);
}
if
(
$iterateRow
)
{
foreach
(
$row
as
$k
=>
$v
)
{
if
((
$this
->
portability
&
Connection
::
PORTABILITY_EMPTY_TO_NULL
)
&&
$v
===
''
)
{
$row
[
$k
]
=
null
;
}
elseif
((
$this
->
portability
&
Connection
::
PORTABILITY_RTRIM
)
&&
is_string
(
$v
))
{
$row
[
$k
]
=
rtrim
(
$v
);
}
}
}
return
$row
;
}
}
}
lib/Doctrine/DBAL/Schema/Synchronizer/SingleDatabaseSynchronizer.php
View file @
6e63c7f0
...
@@ -14,7 +14,7 @@ use function count;
...
@@ -14,7 +14,7 @@ use function count;
/**
/**
* Schema Synchronizer for Default DBAL Connection.
* Schema Synchronizer for Default DBAL Connection.
*/
*/
class
SingleDatabaseSynchronizer
extends
AbstractSchemaSynchronizer
final
class
SingleDatabaseSynchronizer
extends
AbstractSchemaSynchronizer
{
{
/** @var AbstractPlatform */
/** @var AbstractPlatform */
private
$platform
;
private
$platform
;
...
...
lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php
View file @
6e63c7f0
...
@@ -20,7 +20,7 @@ use Doctrine\DBAL\Schema\Table;
...
@@ -20,7 +20,7 @@ use Doctrine\DBAL\Schema\Table;
* This visitor filters all these non-default namespaced tables and sequences
* This visitor filters all these non-default namespaced tables and sequences
* and removes them from the SChema instance.
* and removes them from the SChema instance.
*/
*/
class
RemoveNamespacedAssets
extends
AbstractVisitor
final
class
RemoveNamespacedAssets
extends
AbstractVisitor
{
{
/** @var Schema */
/** @var Schema */
private
$schema
;
private
$schema
;
...
...
tests/Doctrine/Tests/DBAL/Driver/StatementIteratorTest.php
View file @
6e63c7f0
...
@@ -4,35 +4,14 @@ declare(strict_types=1);
...
@@ -4,35 +4,14 @@ declare(strict_types=1);
namespace
Doctrine\Tests\DBAL\Driver
;
namespace
Doctrine\Tests\DBAL\Driver
;
use
Doctrine\DBAL\Driver\IBMDB2\DB2Statement
;
use
Doctrine\DBAL\Driver\Mysqli\MysqliStatement
;
use
Doctrine\DBAL\Driver\OCI8\OCI8Statement
;
use
Doctrine\DBAL\Driver\SQLAnywhere\SQLAnywhereStatement
;
use
Doctrine\DBAL\Driver\SQLSrv\SQLSrvStatement
;
use
Doctrine\DBAL\Driver\Statement
;
use
Doctrine\DBAL\Driver\Statement
;
use
Doctrine\DBAL\Driver\StatementIterator
;
use
Doctrine\DBAL\Driver\StatementIterator
;
use
Doctrine\DBAL\Portability\Statement
as
PortabilityStatement
;
use
Doctrine\Tests\DbalTestCase
;
use
Doctrine\Tests\DbalTestCase
;
use
IteratorAggregate
;
use
PHPUnit\Framework\MockObject\MockObject
;
use
PHPUnit\Framework\MockObject\MockObject
;
use
function
extension_loaded
;
use
Traversable
;
class
StatementIteratorTest
extends
DbalTestCase
class
StatementIteratorTest
extends
DbalTestCase
{
{
/**
* @dataProvider statementProvider()
*/
public
function
testGettingIteratorDoesNotCallFetch
(
string
$class
)
:
void
{
/** @var IteratorAggregate|MockObject $stmt */
$stmt
=
$this
->
createPartialMock
(
$class
,
[
'fetch'
,
'fetchAll'
,
'fetchColumn'
]);
$stmt
->
expects
(
$this
->
never
())
->
method
(
'fetch'
);
$stmt
->
expects
(
$this
->
never
())
->
method
(
'fetchAll'
);
$stmt
->
expects
(
$this
->
never
())
->
method
(
'fetchColumn'
);
$stmt
->
getIterator
();
}
public
function
testIteratorIterationCallsFetchOncePerStep
()
:
void
public
function
testIteratorIterationCallsFetchOncePerStep
()
:
void
{
{
$stmt
=
$this
->
createMock
(
Statement
::
class
);
$stmt
=
$this
->
createMock
(
Statement
::
class
);
...
@@ -45,20 +24,6 @@ class StatementIteratorTest extends DbalTestCase
...
@@ -45,20 +24,6 @@ class StatementIteratorTest extends DbalTestCase
$this
->
assertIterationCallsFetchOncePerStep
(
$stmtIterator
,
$calls
);
$this
->
assertIterationCallsFetchOncePerStep
(
$stmtIterator
,
$calls
);
}
}
/**
* @dataProvider statementProvider()
*/
public
function
testStatementIterationCallsFetchOncePerStep
(
string
$class
)
:
void
{
/** @var iterable<int, mixed>|MockObject $stmt */
$stmt
=
$this
->
createPartialMock
(
$class
,
[
'fetch'
]);
$calls
=
0
;
$this
->
configureStatement
(
$stmt
,
$calls
);
$this
->
assertIterationCallsFetchOncePerStep
(
$stmt
,
$calls
);
}
private
function
configureStatement
(
MockObject
$stmt
,
int
&
$calls
)
:
void
private
function
configureStatement
(
MockObject
$stmt
,
int
&
$calls
)
:
void
{
{
$values
=
[
'foo'
,
''
,
'bar'
,
'0'
,
'baz'
,
0
,
'qux'
,
null
,
'quz'
,
false
,
'impossible'
];
$values
=
[
'foo'
,
''
,
'bar'
,
'0'
,
'baz'
,
0
,
'qux'
,
null
,
'quz'
,
false
,
'impossible'
];
...
@@ -74,33 +39,7 @@ class StatementIteratorTest extends DbalTestCase
...
@@ -74,33 +39,7 @@ class StatementIteratorTest extends DbalTestCase
});
});
}
}
/**
private
function
assertIterationCallsFetchOncePerStep
(
Traversable
$iterator
,
int
&
$calls
)
:
void
* @return string[][]
*/
public
static
function
statementProvider
()
:
iterable
{
if
(
extension_loaded
(
'ibm_db2'
))
{
yield
[
DB2Statement
::
class
];
}
yield
[
MysqliStatement
::
class
];
if
(
extension_loaded
(
'oci8'
))
{
yield
[
OCI8Statement
::
class
];
}
yield
[
PortabilityStatement
::
class
];
yield
[
SQLAnywhereStatement
::
class
];
if
(
extension_loaded
(
'sqlsrv'
))
{
yield
[
SQLSrvStatement
::
class
];
}
}
/**
* @param iterable<int, mixed> $iterator
*/
private
function
assertIterationCallsFetchOncePerStep
(
iterable
$iterator
,
int
&
$calls
)
:
void
{
{
foreach
(
$iterator
as
$i
=>
$_
)
{
foreach
(
$iterator
as
$i
=>
$_
)
{
$this
->
assertEquals
(
$i
+
1
,
$calls
);
$this
->
assertEquals
(
$i
+
1
,
$calls
);
...
...
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