mirror of
https://github.com/phpbb/phpbb.git
synced 2025-08-06 00:37:42 +02:00
Merge pull request #2288 from nickvergessen/ticket/12012
[ticket/12012] Correctly drop default value constraints * nickvergessen/ticket/12012: [ticket/12012] Move property to the top [ticket/12012] Move MS SQL server comparison into a method [ticket/12012] Fix docs in connection manager [ticket/12012] Remove duplicated code (only the $sql are different) [ticket/12012] Handle begin and commit transactions in tests [ticket/12012] Drop and recreate indexes when removing columns [ticket/12012] Add a unit test for removing a column with indexes [ticket/12012] Add a unit test for changing the column type [ticket/12012] Return SQL statements for index drop/create [ticket/12012] Fix tools::mssql_get_existing_indexes() for SQL Server 2000 [ticket/12012] Drop and recreate indexes when changing a column on MSSQL [ticket/12012] Fix query layout [ticket/12012] Correctly drop default value constraints on MSSQL
This commit is contained in:
@@ -11,7 +11,9 @@ require_once dirname(__FILE__) . '/../../phpBB/includes/functions.php';
|
||||
|
||||
class phpbb_dbal_db_tools_test extends phpbb_database_test_case
|
||||
{
|
||||
/** @var \phpbb\db\driver\driver_interface */
|
||||
protected $db;
|
||||
/** @var \phpbb\db\tools */
|
||||
protected $tools;
|
||||
protected $table_exists;
|
||||
protected $table_data;
|
||||
@@ -207,6 +209,32 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case
|
||||
$this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'column_does_not_exist'));
|
||||
}
|
||||
|
||||
public function test_column_change_with_index()
|
||||
{
|
||||
// Create column
|
||||
$this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'c_bug_12012'));
|
||||
$this->assertTrue($this->tools->sql_column_add('prefix_table_name', 'c_bug_12012', array('DECIMAL', 0)));
|
||||
$this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_bug_12012'));
|
||||
|
||||
// Create index over the column
|
||||
$this->assertFalse($this->tools->sql_index_exists('prefix_table_name', 'i_bug_12012'));
|
||||
$this->assertTrue($this->tools->sql_create_index('prefix_table_name', 'i_bug_12012', array('c_bug_12012', 'c_bool')));
|
||||
$this->assertTrue($this->tools->sql_index_exists('prefix_table_name', 'i_bug_12012'));
|
||||
|
||||
// Change type from int to string
|
||||
$this->assertTrue($this->tools->sql_column_change('prefix_table_name', 'c_bug_12012', array('VCHAR:100', '')));
|
||||
|
||||
// Remove the index
|
||||
$this->assertTrue($this->tools->sql_index_exists('prefix_table_name', 'i_bug_12012'));
|
||||
$this->assertTrue($this->tools->sql_index_drop('prefix_table_name', 'i_bug_12012'));
|
||||
$this->assertFalse($this->tools->sql_index_exists('prefix_table_name', 'i_bug_12012'));
|
||||
|
||||
// Remove the column
|
||||
$this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_bug_12012'));
|
||||
$this->assertTrue($this->tools->sql_column_remove('prefix_table_name', 'c_bug_12012'));
|
||||
$this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'c_bug_12012'));
|
||||
}
|
||||
|
||||
public function test_column_remove()
|
||||
{
|
||||
$this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_int_size'));
|
||||
@@ -216,6 +244,28 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case
|
||||
$this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'c_int_size'));
|
||||
}
|
||||
|
||||
public function test_column_remove_with_index()
|
||||
{
|
||||
// Create column
|
||||
$this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'c_bug_12012_2'));
|
||||
$this->assertTrue($this->tools->sql_column_add('prefix_table_name', 'c_bug_12012_2', array('UINT', 4)));
|
||||
$this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_bug_12012_2'));
|
||||
|
||||
// Create index over the column
|
||||
$this->assertFalse($this->tools->sql_index_exists('prefix_table_name', 'i_bug_12012_2'));
|
||||
$this->assertTrue($this->tools->sql_create_index('prefix_table_name', 'i_bug_12012_2', array('c_bug_12012_2', 'c_bool')));
|
||||
$this->assertTrue($this->tools->sql_index_exists('prefix_table_name', 'i_bug_12012_2'));
|
||||
|
||||
$this->assertFalse($this->tools->sql_index_exists('prefix_table_name', 'i_bug_12012_3'));
|
||||
$this->assertTrue($this->tools->sql_create_index('prefix_table_name', 'i_bug_12012_3', array('c_bug_12012_2')));
|
||||
$this->assertTrue($this->tools->sql_index_exists('prefix_table_name', 'i_bug_12012_3'));
|
||||
|
||||
// Remove the column
|
||||
$this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_bug_12012_2'));
|
||||
$this->assertTrue($this->tools->sql_column_remove('prefix_table_name', 'c_bug_12012_2'));
|
||||
$this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'c_bug_12012_2'));
|
||||
}
|
||||
|
||||
public function test_column_remove_primary()
|
||||
{
|
||||
$this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_id'));
|
||||
@@ -252,7 +302,7 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case
|
||||
$this->assertFalse($this->tools->sql_table_exists('prefix_test_table'));
|
||||
}
|
||||
|
||||
public function test_peform_schema_changes_drop_tables()
|
||||
public function test_perform_schema_changes_drop_tables()
|
||||
{
|
||||
$db_tools = $this->getMock('\phpbb\db\tools', array(
|
||||
'sql_table_exists',
|
||||
@@ -278,7 +328,7 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case
|
||||
));
|
||||
}
|
||||
|
||||
public function test_peform_schema_changes_drop_columns()
|
||||
public function test_perform_schema_changes_drop_columns()
|
||||
{
|
||||
$db_tools = $this->getMock('\phpbb\db\tools', array(
|
||||
'sql_column_exists',
|
||||
|
@@ -12,8 +12,11 @@ require_once dirname(__FILE__) . '/phpbb_database_connection_odbc_pdo_wrapper.ph
|
||||
|
||||
class phpbb_database_test_connection_manager
|
||||
{
|
||||
/** @var array */
|
||||
private $config;
|
||||
/** @var array */
|
||||
private $dbms;
|
||||
/** @var \PDO */
|
||||
private $pdo;
|
||||
|
||||
/**
|
||||
@@ -363,9 +366,21 @@ class phpbb_database_test_connection_manager
|
||||
$table_name,
|
||||
$table_data
|
||||
);
|
||||
|
||||
foreach ($queries as $query)
|
||||
{
|
||||
$this->pdo->exec($query);
|
||||
if ($query === 'begin')
|
||||
{
|
||||
$this->pdo->beginTransaction();
|
||||
}
|
||||
else if ($query === 'commit')
|
||||
{
|
||||
$this->pdo->commit();
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->pdo->exec($query);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user