Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions UPGRADE.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Upgrade to 3.0

## BC BREAK `Statement::quote()` only accepts strings.

`Statement::quote()` and `ExpressionBuilder::literal()` no longer accept arguments of an arbitrary type and and don't implement type-specific handling. Only strings can be quoted.

## BC BREAK `Statement` and `Connection` methods return `void`.

`Connection::connect()`, `Statement::bindParam()`, `::bindValue()`, `::execute()`, `ResultStatement::setFetchMode()` and `::closeCursor()` no longer return a boolean value. They will throw an exception in case of failure.
Expand Down
8 changes: 2 additions & 6 deletions lib/Doctrine/DBAL/Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -808,13 +808,9 @@ public function quoteIdentifier($str)
/**
* {@inheritDoc}
*/
public function quote($input, $type = null)
public function quote(string $input) : string
{
$connection = $this->getWrappedConnection();

[$value, $bindingType] = $this->getBindingInfo($input, $type);

return $connection->quote($value, $bindingType);
return $this->getWrappedConnection()->quote($input);
}

/**
Expand Down
8 changes: 1 addition & 7 deletions lib/Doctrine/DBAL/Driver/Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
namespace Doctrine\DBAL\Driver;

use Doctrine\DBAL\DBALException;
use Doctrine\DBAL\ParameterType;

/**
* Connection interface.
Expand All @@ -27,13 +26,8 @@ public function query(string $sql) : ResultStatement;

/**
* Quotes a string for use in a query.
*
* @param mixed $input
* @param int $type
*
* @return mixed
*/
public function quote($input, $type = ParameterType::STRING);
public function quote(string $input) : string;

/**
* Executes an SQL statement and return the number of affected rows.
Expand Down
11 changes: 2 additions & 9 deletions lib/Doctrine/DBAL/Driver/IBMDB2/DB2Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
use Doctrine\DBAL\Driver\ResultStatement;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Driver\Statement as DriverStatement;
use Doctrine\DBAL\ParameterType;
use stdClass;
use const DB2_AUTOCOMMIT_OFF;
use const DB2_AUTOCOMMIT_ON;
Expand Down Expand Up @@ -101,15 +100,9 @@ public function query(string $sql) : ResultStatement
/**
* {@inheritdoc}
*/
public function quote($input, $type = ParameterType::STRING)
public function quote(string $input) : string
{
$input = db2_escape_string($input);

if ($type === ParameterType::INTEGER) {
return $input;
}

return "'" . $input . "'";
return "'" . db2_escape_string($input) . "'";
}

/**
Expand Down
3 changes: 1 addition & 2 deletions lib/Doctrine/DBAL/Driver/Mysqli/MysqliConnection.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
use Doctrine\DBAL\Driver\ResultStatement;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Driver\Statement as DriverStatement;
use Doctrine\DBAL\ParameterType;
use mysqli;
use const MYSQLI_INIT_COMMAND;
use const MYSQLI_OPT_CONNECT_TIMEOUT;
Expand Down Expand Up @@ -146,7 +145,7 @@ public function query(string $sql) : ResultStatement
/**
* {@inheritdoc}
*/
public function quote($input, $type = ParameterType::STRING)
public function quote(string $input) : string
{
return "'" . $this->conn->escape_string($input) . "'";
}
Expand Down
12 changes: 2 additions & 10 deletions lib/Doctrine/DBAL/Driver/OCI8/OCI8Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,11 @@
use Doctrine\DBAL\Driver\ResultStatement;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Driver\Statement as DriverStatement;
use Doctrine\DBAL\ParameterType;
use UnexpectedValueException;
use const OCI_COMMIT_ON_SUCCESS;
use const OCI_DEFAULT;
use const OCI_NO_AUTO_COMMIT;
use function addcslashes;
use function is_float;
use function is_int;
use function oci_commit;
use function oci_connect;
use function oci_error;
Expand Down Expand Up @@ -123,14 +120,9 @@ public function query(string $sql) : ResultStatement
/**
* {@inheritdoc}
*/
public function quote($value, $type = ParameterType::STRING)
public function quote(string $input) : string
{
if (is_int($value) || is_float($value)) {
return $value;
}
$value = str_replace("'", "''", $value);

return "'" . addcslashes($value, "\000\n\r\\\032") . "'";
return "'" . addcslashes(str_replace("'", "''", $input), "\000\n\r\\\032") . "'";
}

/**
Expand Down
5 changes: 2 additions & 3 deletions lib/Doctrine/DBAL/Driver/PDOConnection.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace Doctrine\DBAL\Driver;

use Doctrine\DBAL\ParameterType;
use PDO;
use function assert;

Expand Down Expand Up @@ -86,9 +85,9 @@ public function query(string $sql) : ResultStatement
/**
* {@inheritdoc}
*/
public function quote($input, $type = ParameterType::STRING)
public function quote(string $input) : string
{
return $this->connection->quote($input, $type);
return $this->connection->quote($input);
}

/**
Expand Down
5 changes: 2 additions & 3 deletions lib/Doctrine/DBAL/Driver/PDOSqlsrv/Connection.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@

use Doctrine\DBAL\Driver\PDOConnection;
use Doctrine\DBAL\Driver\PDOStatement;
use Doctrine\DBAL\ParameterType;
use function strpos;
use function substr;

Expand All @@ -31,9 +30,9 @@ public function lastInsertId($name = null)
/**
* {@inheritDoc}
*/
public function quote($value, $type = ParameterType::STRING)
public function quote(string $input) : string
{
$val = parent::quote($value, $type);
$val = parent::quote($input);

// Fix for a driver version terminating all values with null byte
if (strpos($val, "\0") !== false) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@
use Doctrine\DBAL\Driver\ResultStatement;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Driver\Statement as DriverStatement;
use Doctrine\DBAL\ParameterType;
use function assert;
use function is_float;
use function is_int;
use function is_resource;
use function is_string;
use function sasql_affected_rows;
Expand Down Expand Up @@ -159,12 +156,8 @@ public function query(string $sql) : ResultStatement
/**
* {@inheritdoc}
*/
public function quote($input, $type = ParameterType::STRING)
public function quote(string $input) : string
{
if (is_int($input) || is_float($input)) {
return $input;
}

return "'" . sasql_escape_string($this->connection, $input) . "'";
}

Expand Down
14 changes: 2 additions & 12 deletions lib/Doctrine/DBAL/Driver/SQLSrv/SQLSrvConnection.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,7 @@
use Doctrine\DBAL\Driver\ResultStatement;
use Doctrine\DBAL\Driver\ServerInfoAwareConnection;
use Doctrine\DBAL\Driver\Statement as DriverStatement;
use Doctrine\DBAL\ParameterType;
use const SQLSRV_ERR_ERRORS;
use function is_float;
use function is_int;
use function sprintf;
use function sqlsrv_begin_transaction;
use function sqlsrv_commit;
use function sqlsrv_configure;
Expand Down Expand Up @@ -95,15 +91,9 @@ public function query(string $sql) : ResultStatement
/**
* {@inheritDoc}
*/
public function quote($value, $type = ParameterType::STRING)
public function quote(string $input) : string
{
if (is_int($value)) {
return $value;
} elseif (is_float($value)) {
return sprintf('%F', $value);
}

return "'" . str_replace("'", "''", $value) . "'";
return "'" . str_replace("'", "''", $input) . "'";
}

/**
Expand Down
11 changes: 3 additions & 8 deletions lib/Doctrine/DBAL/Query/Expression/ExpressionBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -284,15 +284,10 @@ public function notIn($x, $y)
}

/**
* Quotes a given input parameter.
*
* @param mixed $input The parameter to be quoted.
* @param int|null $type The type of the parameter.
*
* @return string
* Creates an SQL literal expression from the string.
*/
public function literal($input, $type = null)
public function literal(string $input)
{
return $this->connection->quote($input, $type);
return $this->connection->quote($input);
}
}
5 changes: 2 additions & 3 deletions lib/Doctrine/DBAL/Schema/AbstractSchemaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -830,12 +830,11 @@ abstract protected function _getPortableTableColumnDefinition($tableColumn);
/**
* Aggregates and groups the index results according to the required data result.
*
* @param mixed[][] $tableIndexRows
* @param string|null $tableName
* @param mixed[][] $tableIndexRows
*
* @return Index[]
*/
protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
protected function _getPortableTableIndexesList(array $tableIndexRows, string $tableName) : array
{
$result = [];
foreach ($tableIndexRows as $tableIndex) {
Expand Down
14 changes: 9 additions & 5 deletions lib/Doctrine/DBAL/Schema/DB2SchemaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
use Doctrine\DBAL\Types\Type;
use const CASE_LOWER;
use function array_change_key_case;
use function assert;
use function is_resource;
use function is_string;
use function strpos;
use function strtolower;
use function substr;
Expand All @@ -22,12 +24,14 @@ class DB2SchemaManager extends AbstractSchemaManager
* Apparently creator is the schema not the user who created it:
* {@link http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.sqlref/db2z_sysibmsystablestable.htm}
*/
public function listTableNames()
public function listTableNames() : array
{
$sql = $this->_platform->getListTablesSQL();
$sql .= ' AND CREATOR = UPPER(' . $this->_conn->quote($this->_conn->getUsername()) . ')';
$username = $this->_conn->getUsername();
assert(is_string($username));

$tables = $this->_conn->fetchAll($sql);
$sql = $this->_platform->getListTablesSQL() . ' AND CREATOR = UPPER(?)';

$tables = $this->_conn->fetchAll($sql, [$username]);

return $this->filterAssetNames($this->_getPortableTablesList($tables));
}
Expand Down Expand Up @@ -117,7 +121,7 @@ protected function _getPortableTablesList($tables)
/**
* {@inheritdoc}
*/
protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
protected function _getPortableTableIndexesList(array $tableIndexRows, string $tableName) : array
{
foreach ($tableIndexRows as &$tableIndexRow) {
$tableIndexRow = array_change_key_case($tableIndexRow, CASE_LOWER);
Expand Down
8 changes: 4 additions & 4 deletions lib/Doctrine/DBAL/Schema/MySqlSchemaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,9 @@ protected function _getPortableUserDefinition($user)
/**
* {@inheritdoc}
*/
protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
protected function _getPortableTableIndexesList(array $tableIndexRows, string $tableName) : array
{
foreach ($tableIndexes as $k => $v) {
foreach ($tableIndexRows as $k => $v) {
$v = array_change_key_case($v, CASE_LOWER);
if ($v['key_name'] === 'PRIMARY') {
$v['primary'] = true;
Expand All @@ -70,10 +70,10 @@ protected function _getPortableTableIndexesList($tableIndexes, $tableName = null
}
$v['length'] = isset($v['sub_part']) ? (int) $v['sub_part'] : null;

$tableIndexes[$k] = $v;
$tableIndexRows[$k] = $v;
}

return parent::_getPortableTableIndexesList($tableIndexes, $tableName);
return parent::_getPortableTableIndexesList($tableIndexRows, $tableName);
}

/**
Expand Down
4 changes: 2 additions & 2 deletions lib/Doctrine/DBAL/Schema/OracleSchemaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,10 +89,10 @@ protected function _getPortableTableDefinition($table)
*
* @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
*/
protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
protected function _getPortableTableIndexesList(array $tableIndexRows, string $tableName) : array
{
$indexBuffer = [];
foreach ($tableIndexes as $tableIndex) {
foreach ($tableIndexRows as $tableIndex) {
$tableIndex = array_change_key_case($tableIndex, CASE_LOWER);

$keyName = strtolower($tableIndex['name']);
Expand Down
4 changes: 2 additions & 2 deletions lib/Doctrine/DBAL/Schema/PostgreSqlSchemaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,10 @@ protected function _getPortableTableDefinition($table)
*
* @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
*/
protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
protected function _getPortableTableIndexesList(array $tableIndexRows, string $tableName) : array
{
$buffer = [];
foreach ($tableIndexes as $row) {
foreach ($tableIndexRows as $row) {
$colNumbers = array_map('intval', explode(' ', $row['indkey']));
$columnNameSql = sprintf(
'SELECT attnum, attname FROM pg_attribute WHERE attrelid=%d AND attnum IN (%s) ORDER BY attnum ASC',
Expand Down
2 changes: 1 addition & 1 deletion lib/Doctrine/DBAL/Schema/SQLAnywhereSchemaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ protected function _getPortableTableForeignKeysList($tableForeignKeys)
/**
* {@inheritdoc}
*/
protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
protected function _getPortableTableIndexesList(array $tableIndexRows, string $tableName) : array
{
foreach ($tableIndexRows as &$tableIndex) {
$tableIndex['primary'] = (bool) $tableIndex['primary'];
Expand Down
2 changes: 1 addition & 1 deletion lib/Doctrine/DBAL/Schema/SQLServerSchemaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ protected function _getPortableTableForeignKeysList($tableForeignKeys)
/**
* {@inheritdoc}
*/
protected function _getPortableTableIndexesList($tableIndexRows, $tableName = null)
protected function _getPortableTableIndexesList(array $tableIndexRows, string $tableName) : array
{
foreach ($tableIndexRows as &$tableIndex) {
$tableIndex['non_unique'] = (bool) $tableIndex['non_unique'];
Expand Down
4 changes: 2 additions & 2 deletions lib/Doctrine/DBAL/Schema/SqliteSchemaManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ protected function _getPortableTableDefinition($table)
*
* @link http://ezcomponents.org/docs/api/trunk/DatabaseSchema/ezcDbSchemaPgsqlReader.html
*/
protected function _getPortableTableIndexesList($tableIndexes, $tableName = null)
protected function _getPortableTableIndexesList(array $tableIndexRows, string $tableName) : array
{
$indexBuffer = [];

Expand Down Expand Up @@ -195,7 +195,7 @@ protected function _getPortableTableIndexesList($tableIndexes, $tableName = null
}

// fetch regular indexes
foreach ($tableIndexes as $tableIndex) {
foreach ($tableIndexRows as $tableIndex) {
// Ignore indexes with reserved names, e.g. autoindexes
if (strpos($tableIndex['name'], 'sqlite_') === 0) {
continue;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ public function splitFederation($splitDistributionValue)

$sql = 'ALTER FEDERATION ' . $this->getFederationName() . ' ' .
'SPLIT AT (' . $this->getDistributionKey() . ' = ' .
$this->conn->quote($splitDistributionValue, $type->getBindingType()) . ')';
$this->conn->quote($splitDistributionValue) . ')';
$this->conn->exec($sql);
}
}
Loading