1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-04-13 12:22:03 +02:00

[ticket/15259] Fatal error on SQLite/Oracle database update

Add a test.

PHPBB3-15259
This commit is contained in:
lavigor 2017-07-06 02:37:35 +03:00
parent b7ce395fbe
commit 24bde10028

View File

@ -421,4 +421,41 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case
$this->assertTrue($this->tools->sql_column_add('prefix_table_name', 'c_bug_13282', array('TINT:2')));
$this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_bug_13282'));
}
public function test_create_index_with_long_name()
{
// This constant is being used for checking table prefix.
$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config)
if (strlen($table_prefix) > 20)
{
$this->markTestIncomplete('The table prefix length is too long for proper testing of index shortening function.');
}
$table_suffix = str_repeat('a', 25 - strlen($table_prefix));
$table_name = $table_prefix . $table_suffix;
$this->tools->sql_create_table($table_name, $this->table_data);
// Index name and table suffix and table prefix have > 30 chars in total.
// Index name and table suffix have <= 30 chars in total.
$long_index_name = str_repeat('i', 30 - strlen($table_suffix));
$this->assertFalse($this->tools->sql_index_exists($table_name, $long_index_name));
$this->assertTrue($this->tools->sql_create_index($table_name, $long_index_name, array('c_timestamp')));
$this->assertTrue($this->tools->sql_index_exists($table_name, $long_index_name));
// Index name and table suffix have > 30 chars in total.
$very_long_index_name = str_repeat('i', 30);
$this->assertFalse($this->tools->sql_index_exists($table_name, $very_long_index_name));
$this->assertTrue($this->tools->sql_create_index($table_name, $very_long_index_name, array('c_timestamp')));
$this->assertTrue($this->tools->sql_index_exists($table_name, $very_long_index_name));
$this->tools->sql_table_drop($table_name);
// Index name has > 30 chars - that should not be possible.
$too_long_index_name = str_repeat('i', 31);
$this->assertFalse($this->tools->sql_index_exists('prefix_table_name', $too_long_index_name));
$this->setExpectedTriggerError(E_USER_ERROR);
$this->tools->sql_create_index('prefix_table_name', $too_long_index_name, array('c_timestamp'));
}
}