mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-20 15:31:42 +02:00
[ticket/16741] Specific DBs fixes
MSSQL: - Fix bool type - Fix comparator - Drop Default constraint before deleting column - Rename Default constraint to use phpBB's names - Re-create the indices when changing the type of one column - Uses varchar instead of varbinary PostgreSQL: - Creates auto increment sequences by hand instead of using serial in order to use phpBB's names - Drop constraint on unique / primary indices Oracle: - Rename indices to use phpBB's names - Fix string not null behaviour - Fix broken regex in Oracle driver - Handle to long indices on Oracle - Rename auto_increment trigger and sequence - Automatically lowercase keys in assoc results PHPBB3-16741
This commit is contained in:
99
phpBB/phpbb/db/doctrine/oci8/connection.php
Normal file
99
phpBB/phpbb/db/doctrine/oci8/connection.php
Normal file
@@ -0,0 +1,99 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\db\doctrine\oci8;
|
||||
|
||||
use Doctrine\DBAL\Driver\Connection as DriverConnection;
|
||||
use Doctrine\DBAL\Driver\Result as DriverResult;
|
||||
use Doctrine\DBAL\Driver\Statement as DriverStatement;
|
||||
use Doctrine\DBAL\ParameterType;
|
||||
|
||||
class Connection implements DriverConnection
|
||||
{
|
||||
/**
|
||||
* @var DriverConnection
|
||||
*/
|
||||
private $wrapped;
|
||||
|
||||
/**
|
||||
* @param DriverConnection $wrapped
|
||||
*/
|
||||
public function __construct(DriverConnection $wrapped)
|
||||
{
|
||||
$this->wrapped = $wrapped;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function prepare(string $sql): DriverStatement
|
||||
{
|
||||
return new statement($this->wrapped->prepare($sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function query(string $sql): DriverResult
|
||||
{
|
||||
return new result($this->wrapped->query($sql));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function quote($value, $type = ParameterType::STRING)
|
||||
{
|
||||
return $this->wrapped->quote($value, $type);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function exec(string $sql): int
|
||||
{
|
||||
return $this->wrapped->exec($sql);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function lastInsertId($name = null)
|
||||
{
|
||||
return $this->wrapped->lastInsertId($name);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function beginTransaction()
|
||||
{
|
||||
return $this->wrapped->beginTransaction();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function commit()
|
||||
{
|
||||
return $this->wrapped->commit();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function rollBack()
|
||||
{
|
||||
return $this->wrapped->rollBack();
|
||||
}
|
||||
}
|
65
phpBB/phpbb/db/doctrine/oci8/driver.php
Normal file
65
phpBB/phpbb/db/doctrine/oci8/driver.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\db\doctrine\oci8;
|
||||
|
||||
use Doctrine\DBAL\Connection as DoctrineConnection;
|
||||
use Doctrine\DBAL\Driver\API\ExceptionConverter;
|
||||
use Doctrine\DBAL\Platforms\AbstractPlatform;
|
||||
use Doctrine\DBAL\Driver as DoctrineDriver;
|
||||
use Doctrine\DBAL\Driver\OCI8\Driver as OCI8Driver;
|
||||
|
||||
class driver implements DoctrineDriver
|
||||
{
|
||||
/**
|
||||
* @var DoctrineDriver
|
||||
*/
|
||||
private $wrapped;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->wrapped = new OCI8Driver();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function connect(array $params)
|
||||
{
|
||||
return new connection($this->wrapped->connect($params));
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getDatabasePlatform()
|
||||
{
|
||||
return $this->wrapped->getDatabasePlatform();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getSchemaManager(DoctrineConnection $conn, AbstractPlatform $platform)
|
||||
{
|
||||
return new schema_manager($conn, $platform);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function getExceptionConverter(): ExceptionConverter
|
||||
{
|
||||
return $this->wrapped->getExceptionConverter();
|
||||
}
|
||||
}
|
109
phpBB/phpbb/db/doctrine/oci8/result.php
Normal file
109
phpBB/phpbb/db/doctrine/oci8/result.php
Normal file
@@ -0,0 +1,109 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\db\doctrine\oci8;
|
||||
|
||||
use Doctrine\DBAL\Driver\Result as DriverResult;
|
||||
|
||||
class result implements DriverResult
|
||||
{
|
||||
/**
|
||||
* @var DriverResult
|
||||
*/
|
||||
private $wrapped;
|
||||
|
||||
/**
|
||||
* @param DriverResult $wrapped
|
||||
*/
|
||||
public function __construct(DriverResult $wrapped)
|
||||
{
|
||||
$this->wrapped = $wrapped;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function fetchNumeric()
|
||||
{
|
||||
return $this->wrapped->fetchNumeric();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function fetchAssociative()
|
||||
{
|
||||
return array_change_key_case($this->wrapped->fetchAssociative(), CASE_LOWER);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function fetchOne()
|
||||
{
|
||||
return $this->wrapped->fetchOne();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function fetchAllNumeric(): array
|
||||
{
|
||||
return $this->wrapped->fetchAllNumeric();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function fetchAllAssociative(): array
|
||||
{
|
||||
$rows = [];
|
||||
foreach ($this->wrapped->fetchAllAssociative() as $row)
|
||||
{
|
||||
$rows[] = array_change_key_case($row, CASE_LOWER);
|
||||
}
|
||||
return $rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function fetchFirstColumn(): array
|
||||
{
|
||||
return $this->wrapped->fetchFirstColumn();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function rowCount(): int
|
||||
{
|
||||
return $this->wrapped->rowCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function columnCount(): int
|
||||
{
|
||||
return $this->wrapped->columnCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function free(): void
|
||||
{
|
||||
$this->wrapped->free();
|
||||
}
|
||||
}
|
45
phpBB/phpbb/db/doctrine/oci8/schema_manager.php
Normal file
45
phpBB/phpbb/db/doctrine/oci8/schema_manager.php
Normal file
@@ -0,0 +1,45 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\db\doctrine\oci8;
|
||||
|
||||
use Doctrine\DBAL\Platforms\OraclePlatform;
|
||||
use Doctrine\DBAL\Schema\AbstractSchemaManager;
|
||||
use Doctrine\DBAL\Schema\OracleSchemaManager;
|
||||
use Doctrine\DBAL\Schema\Table;
|
||||
|
||||
class schema_manager extends OracleSchemaManager
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*
|
||||
* Copied from upstream to lowercase 'COMMENTS'
|
||||
*/
|
||||
public function listTableDetails($name): Table
|
||||
{
|
||||
$table = AbstractSchemaManager::listTableDetails($name);
|
||||
|
||||
$platform = $this->_platform;
|
||||
assert($platform instanceof OraclePlatform);
|
||||
$sql = $platform->getListTableCommentsSQL($name);
|
||||
|
||||
$tableOptions = $this->_conn->fetchAssociative($sql);
|
||||
|
||||
if ($tableOptions !== false)
|
||||
{
|
||||
$table->addOption('comment', $tableOptions['comments']);
|
||||
}
|
||||
|
||||
return $table;
|
||||
}
|
||||
}
|
58
phpBB/phpbb/db/doctrine/oci8/statement.php
Normal file
58
phpBB/phpbb/db/doctrine/oci8/statement.php
Normal file
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/**
|
||||
*
|
||||
* This file is part of the phpBB Forum Software package.
|
||||
*
|
||||
* @copyright (c) phpBB Limited <https://www.phpbb.com>
|
||||
* @license GNU General Public License, version 2 (GPL-2.0)
|
||||
*
|
||||
* For full copyright and license information, please see
|
||||
* the docs/CREDITS.txt file.
|
||||
*
|
||||
*/
|
||||
|
||||
namespace phpbb\db\doctrine\oci8;
|
||||
|
||||
use Doctrine\DBAL\Driver\Result as DriverResult;
|
||||
use Doctrine\DBAL\Driver\Statement as DriverStatement;
|
||||
use Doctrine\DBAL\ParameterType;
|
||||
|
||||
class statement implements DriverStatement
|
||||
{
|
||||
/**
|
||||
* @var DriverStatement
|
||||
*/
|
||||
private $wrapped;
|
||||
|
||||
/**
|
||||
* @param DriverStatement $wrapped
|
||||
*/
|
||||
public function __construct(DriverStatement $wrapped)
|
||||
{
|
||||
$this->wrapped = $wrapped;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function bindValue($param, $value, $type = ParameterType::STRING)
|
||||
{
|
||||
return $this->wrapped->bindValue($param, $value, $type);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function bindParam($param, &$variable, $type = ParameterType::STRING, $length = null)
|
||||
{
|
||||
return $this->wrapped->bindParam($param, $variable, $type, $length);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*/
|
||||
public function execute($params = null): DriverResult
|
||||
{
|
||||
return new result($this->wrapped->execute($params));
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user