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
cc386883
Unverified
Commit
cc386883
authored
Jan 11, 2020
by
Sergei Morozov
Committed by
GitHub
Jan 11, 2020
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #3590 from jwage/final-classes
Make classes final where applicable.
parents
69cd77e0
5bcd3563
Changes
27
Expand all
Show 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 @
cc386883
...
...
@@ -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.
## 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
-
Column precision no longer defaults to 10. The default value is NULL.
...
...
lib/Doctrine/DBAL/Cache/ArrayStatement.php
View file @
cc386883
...
...
@@ -17,7 +17,7 @@ use function count;
use
function
reset
;
use
function
sprintf
;
class
ArrayStatement
implements
IteratorAggregate
,
ResultStatement
final
class
ArrayStatement
implements
IteratorAggregate
,
ResultStatement
{
/** @var mixed[] */
private
$data
;
...
...
lib/Doctrine/DBAL/Cache/ResultCacheStatement.php
View file @
cc386883
...
...
@@ -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.
* 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 */
private
$resultCache
;
...
...
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Connection.php
View file @
cc386883
...
...
@@ -22,10 +22,10 @@ use function db2_prepare;
use
function
db2_rollback
;
use
function
db2_server_info
;
class
DB2Connection
implements
ServerInfoAwareConnection
final
class
DB2Connection
implements
ServerInfoAwareConnection
{
/** @var resource */
private
$conn
=
null
;
private
$conn
;
/**
* @param array<string, mixed> $params
...
...
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Driver.php
View file @
cc386883
...
...
@@ -14,7 +14,7 @@ use function sprintf;
/**
* IBM DB2 Driver.
*/
class
DB2Driver
extends
AbstractDB2Driver
final
class
DB2Driver
extends
AbstractDB2Driver
{
/**
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/IBMDB2/DB2Statement.php
View file @
cc386883
...
...
@@ -48,7 +48,7 @@ use function stream_get_meta_data;
use
function
strtolower
;
use
function
tmpfile
;
class
DB2Statement
implements
IteratorAggregate
,
Statement
final
class
DB2Statement
implements
IteratorAggregate
,
Statement
{
/** @var resource */
private
$stmt
;
...
...
@@ -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}
*/
...
...
@@ -336,6 +321,21 @@ class DB2Statement implements IteratorAggregate, Statement
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.
*
...
...
lib/Doctrine/DBAL/Driver/Mysqli/Driver.php
View file @
cc386883
...
...
@@ -8,7 +8,7 @@ use Doctrine\DBAL\DBALException;
use
Doctrine\DBAL\Driver\AbstractMySQLDriver
;
use
Doctrine\DBAL\Driver\Connection
;
class
Driver
extends
AbstractMySQLDriver
final
class
Driver
extends
AbstractMySQLDriver
{
/**
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/Mysqli/MysqliStatement.php
View file @
cc386883
This diff is collapsed.
Click to expand it.
lib/Doctrine/DBAL/Driver/OCI8/Driver.php
View file @
cc386883
...
...
@@ -12,7 +12,7 @@ use const OCI_DEFAULT;
/**
* A Doctrine DBAL driver for the Oracle OCI8 PHP extensions.
*/
class
Driver
extends
AbstractOracleDriver
final
class
Driver
extends
AbstractOracleDriver
{
/**
* {@inheritdoc}
...
...
@@ -27,7 +27,7 @@ class Driver extends AbstractOracleDriver
return
new
OCI8Connection
(
$username
,
$password
,
$this
->
_
constructDsn
(
$params
),
$this
->
constructDsn
(
$params
),
$params
[
'charset'
]
??
''
,
$params
[
'sessionMode'
]
??
OCI_DEFAULT
,
$params
[
'persistent'
]
??
false
...
...
@@ -44,7 +44,7 @@ class Driver extends AbstractOracleDriver
*
* @return string The DSN.
*/
pr
otected
function
_
constructDsn
(
array
$params
)
:
string
pr
ivate
function
constructDsn
(
array
$params
)
:
string
{
return
$this
->
getEasyConnectString
(
$params
);
}
...
...
lib/Doctrine/DBAL/Driver/PDOMySql/Driver.php
View file @
cc386883
...
...
@@ -14,7 +14,7 @@ use PDO;
/**
* PDO MySql driver.
*/
class
Driver
extends
AbstractMySQLDriver
final
class
Driver
extends
AbstractMySQLDriver
{
/**
* {@inheritdoc}
...
...
@@ -50,7 +50,7 @@ class Driver extends AbstractMySQLDriver
*
* @return string The DSN.
*/
pr
otected
function
constructPdoDsn
(
array
$params
)
:
string
pr
ivate
function
constructPdoDsn
(
array
$params
)
:
string
{
$dsn
=
'mysql:'
;
if
(
isset
(
$params
[
'host'
])
&&
$params
[
'host'
]
!==
''
)
{
...
...
lib/Doctrine/DBAL/Driver/PDOOracle/Driver.php
View file @
cc386883
...
...
@@ -19,7 +19,7 @@ use PDO;
* which leads us to the recommendation to use the "oci8" driver to connect
* to Oracle instead.
*/
class
Driver
extends
AbstractOracleDriver
final
class
Driver
extends
AbstractOracleDriver
{
/**
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/PDOPgSql/Driver.php
View file @
cc386883
...
...
@@ -15,7 +15,7 @@ use function defined;
/**
* Driver that connects through pdo_pgsql.
*/
class
Driver
extends
AbstractPostgreSQLDriver
final
class
Driver
extends
AbstractPostgreSQLDriver
{
/**
* {@inheritdoc}
...
...
@@ -32,7 +32,7 @@ class Driver extends AbstractPostgreSQLDriver
try
{
$connection
=
new
PDOConnection
(
$this
->
_
constructPdoDsn
(
$params
),
$this
->
constructPdoDsn
(
$params
),
$username
,
$password
,
$driverOptions
...
...
@@ -67,7 +67,7 @@ class Driver extends AbstractPostgreSQLDriver
*
* @return string The DSN.
*/
private
function
_
constructPdoDsn
(
array
$params
)
:
string
private
function
constructPdoDsn
(
array
$params
)
:
string
{
$dsn
=
'pgsql:'
;
...
...
lib/Doctrine/DBAL/Driver/PDOSqlite/Driver.php
View file @
cc386883
...
...
@@ -15,10 +15,10 @@ use function array_merge;
/**
* The PDO Sqlite driver.
*/
class
Driver
extends
AbstractSQLiteDriver
final
class
Driver
extends
AbstractSQLiteDriver
{
/** @var mixed[] */
pr
otected
$_
userDefinedFunctions
=
[
pr
ivate
$
userDefinedFunctions
=
[
'sqrt'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfSqrt'
],
'numArgs'
=>
1
],
'mod'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfMod'
],
'numArgs'
=>
2
],
'locate'
=>
[
'callback'
=>
[
SqlitePlatform
::
class
,
'udfLocate'
],
'numArgs'
=>
-
1
],
...
...
@@ -34,8 +34,8 @@ class Driver extends AbstractSQLiteDriver
array
$driverOptions
=
[]
)
:
Connection
{
if
(
isset
(
$driverOptions
[
'userDefinedFunctions'
]))
{
$this
->
_
userDefinedFunctions
=
array_merge
(
$this
->
_
userDefinedFunctions
,
$this
->
userDefinedFunctions
=
array_merge
(
$this
->
userDefinedFunctions
,
$driverOptions
[
'userDefinedFunctions'
]
);
unset
(
$driverOptions
[
'userDefinedFunctions'
]);
...
...
@@ -43,7 +43,7 @@ class Driver extends AbstractSQLiteDriver
try
{
$connection
=
new
PDOConnection
(
$this
->
_
constructPdoDsn
(
$params
),
$this
->
constructPdoDsn
(
$params
),
$username
,
$password
,
$driverOptions
...
...
@@ -54,7 +54,7 @@ class Driver extends AbstractSQLiteDriver
$pdo
=
$connection
->
getWrappedConnection
();
foreach
(
$this
->
_
userDefinedFunctions
as
$fn
=>
$data
)
{
foreach
(
$this
->
userDefinedFunctions
as
$fn
=>
$data
)
{
$pdo
->
sqliteCreateFunction
(
$fn
,
$data
[
'callback'
],
$data
[
'numArgs'
]);
}
...
...
@@ -68,7 +68,7 @@ class Driver extends AbstractSQLiteDriver
*
* @return string The DSN.
*/
pr
otected
function
_
constructPdoDsn
(
array
$params
)
:
string
pr
ivate
function
constructPdoDsn
(
array
$params
)
:
string
{
$dsn
=
'sqlite:'
;
if
(
isset
(
$params
[
'path'
]))
{
...
...
lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php
View file @
cc386883
...
...
@@ -13,7 +13,7 @@ use function sprintf;
/**
* The PDO-based Sqlsrv driver.
*/
class
Driver
extends
AbstractSQLServerDriver
final
class
Driver
extends
AbstractSQLServerDriver
{
/**
* {@inheritdoc}
...
...
@@ -39,7 +39,7 @@ class Driver extends AbstractSQLServerDriver
}
return
new
Connection
(
$this
->
_
constructPdoDsn
(
$params
,
$dsnOptions
),
$this
->
constructPdoDsn
(
$params
,
$dsnOptions
),
$username
,
$password
,
$pdoOptions
...
...
@@ -54,7 +54,7 @@ class Driver extends AbstractSQLServerDriver
*
* @return string The DSN.
*/
private
function
_
constructPdoDsn
(
array
$params
,
array
$connectionOptions
)
:
string
private
function
constructPdoDsn
(
array
$params
,
array
$connectionOptions
)
:
string
{
$dsn
=
'sqlsrv:server='
;
...
...
lib/Doctrine/DBAL/Driver/PDOSqlsrv/Statement.php
View file @
cc386883
...
...
@@ -11,7 +11,7 @@ use PDO;
/**
* PDO SQL Server Statement
*/
class
Statement
extends
PDOStatement
final
class
Statement
extends
PDOStatement
{
/**
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/SQLAnywhere/Driver.php
View file @
cc386883
...
...
@@ -16,7 +16,7 @@ use function sprintf;
/**
* A Doctrine DBAL driver for the SAP Sybase SQL Anywhere PHP extension.
*/
class
Driver
extends
AbstractSQLAnywhereDriver
final
class
Driver
extends
AbstractSQLAnywhereDriver
{
/**
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereConnection.php
View file @
cc386883
...
...
@@ -23,7 +23,7 @@ use function sasql_set_option;
/**
* 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. */
private
$connection
;
...
...
lib/Doctrine/DBAL/Driver/SQLAnywhere/SQLAnywhereStatement.php
View file @
cc386883
...
...
@@ -40,7 +40,7 @@ use function sprintf;
/**
* SAP SQL Anywhere implementation of the Statement interface.
*/
class
SQLAnywhereStatement
implements
IteratorAggregate
,
Statement
final
class
SQLAnywhereStatement
implements
IteratorAggregate
,
Statement
{
/** @var resource The connection resource. */
private
$conn
;
...
...
lib/Doctrine/DBAL/Driver/SQLSrv/Driver.php
View file @
cc386883
...
...
@@ -10,7 +10,7 @@ use Doctrine\DBAL\Driver\Connection;
/**
* Driver for ext/sqlsrv.
*/
class
Driver
extends
AbstractSQLServerDriver
final
class
Driver
extends
AbstractSQLServerDriver
{
/**
* {@inheritdoc}
...
...
lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php
View file @
cc386883
...
...
@@ -20,13 +20,13 @@ use function str_replace;
/**
* SQL Server implementation for the Connection interface.
*/
class
SQLSrvConnection
implements
ServerInfoAwareConnection
final
class
SQLSrvConnection
implements
ServerInfoAwareConnection
{
/** @var resource */
pr
otected
$conn
;
pr
ivate
$conn
;
/** @var LastInsertId */
pr
otected
$lastInsertId
;
pr
ivate
$lastInsertId
;
/**
* @param array<string, mixed> $connectionOptions
...
...
lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvStatement.php
View file @
cc386883
...
...
@@ -37,7 +37,7 @@ use function stripos;
/**
* SQL Server Statement.
*/
class
SQLSrvStatement
implements
IteratorAggregate
,
Statement
final
class
SQLSrvStatement
implements
IteratorAggregate
,
Statement
{
/**
* The SQLSRV Resource.
...
...
@@ -232,51 +232,6 @@ class SQLSrvStatement implements IteratorAggregate, Statement
$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}
*/
...
...
@@ -399,4 +354,49 @@ class SQLSrvStatement implements IteratorAggregate, Statement
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 @
cc386883
...
...
@@ -6,7 +6,7 @@ namespace Doctrine\DBAL\Driver;
use
IteratorAggregate
;
class
StatementIterator
implements
IteratorAggregate
final
class
StatementIterator
implements
IteratorAggregate
{
/** @var ResultStatement */
private
$statement
;
...
...
lib/Doctrine/DBAL/Id/TableGeneratorSchemaVisitor.php
View file @
cc386883
...
...
@@ -12,7 +12,7 @@ use Doctrine\DBAL\Schema\Sequence;
use
Doctrine\DBAL\Schema\Table
;
use
Doctrine\DBAL\Schema\Visitor\Visitor
;
class
TableGeneratorSchemaVisitor
implements
Visitor
final
class
TableGeneratorSchemaVisitor
implements
Visitor
{
/** @var string */
private
$generatorTableName
;
...
...
lib/Doctrine/DBAL/Portability/Statement.php
View file @
cc386883
...
...
@@ -18,7 +18,7 @@ use function rtrim;
/**
* Portability wrapper for a Statement.
*/
class
Statement
implements
IteratorAggregate
,
DriverStatement
final
class
Statement
implements
IteratorAggregate
,
DriverStatement
{
/** @var int */
private
$portability
;
...
...
@@ -164,34 +164,6 @@ class Statement implements IteratorAggregate, DriverStatement
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}
*/
...
...
@@ -219,4 +191,32 @@ class Statement implements IteratorAggregate, DriverStatement
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 @
cc386883
...
...
@@ -14,7 +14,7 @@ use function count;
/**
* Schema Synchronizer for Default DBAL Connection.
*/
class
SingleDatabaseSynchronizer
extends
AbstractSchemaSynchronizer
final
class
SingleDatabaseSynchronizer
extends
AbstractSchemaSynchronizer
{
/** @var AbstractPlatform */
private
$platform
;
...
...
lib/Doctrine/DBAL/Schema/Visitor/RemoveNamespacedAssets.php
View file @
cc386883
...
...
@@ -20,7 +20,7 @@ use Doctrine\DBAL\Schema\Table;
* This visitor filters all these non-default namespaced tables and sequences
* and removes them from the SChema instance.
*/
class
RemoveNamespacedAssets
extends
AbstractVisitor
final
class
RemoveNamespacedAssets
extends
AbstractVisitor
{
/** @var Schema */
private
$schema
;
...
...
tests/Doctrine/Tests/DBAL/Driver/StatementIteratorTest.php
View file @
cc386883
...
...
@@ -4,35 +4,14 @@ declare(strict_types=1);
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\StatementIterator
;
use
Doctrine\DBAL\Portability\Statement
as
PortabilityStatement
;
use
Doctrine\Tests\DbalTestCase
;
use
IteratorAggregate
;
use
PHPUnit\Framework\MockObject\MockObject
;
use
function
extension_loaded
;
use
Traversable
;
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
{
$stmt
=
$this
->
createMock
(
Statement
::
class
);
...
...
@@ -45,20 +24,6 @@ class StatementIteratorTest extends DbalTestCase
$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
{
$values
=
[
'foo'
,
''
,
'bar'
,
'0'
,
'baz'
,
0
,
'qux'
,
null
,
'quz'
,
false
,
'impossible'
];
...
...
@@ -74,33 +39,7 @@ class StatementIteratorTest extends DbalTestCase
});
}
/**
* @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
private
function
assertIterationCallsFetchOncePerStep
(
Traversable
$iterator
,
int
&
$calls
)
:
void
{
foreach
(
$iterator
as
$i
=>
$_
)
{
$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