mirror of
https://github.com/phpbb/phpbb.git
synced 2025-07-30 21:40:43 +02:00
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/9892] Correct copyright year [ticket/9892] Remove incorrect use of camel case [ticket/9892] Removing closing php tag from create_schema_files [ticket/9892] Transaction support for database update sql execution function [ticket/9892] count is a keyword in firebird, so renaming this alias [ticket/9892] Q&A CAPTCHA did not work on firebird, so no need to change config [ticket/9892] Shorten login_attempt key names to avoid firebird length problems [ticket/9892] Drop Q&A CAPTCHA tables if left in inconsistent state [ticket/9892] Adding a number of tests for db_tools [ticket/9892] Table prefix lengths influence index lengths in db_tools [ticket/9892] Shorten the index names on the q&a captcha [ticket/9892] column & index name limits, firebird auto increment in db_tools Conflicts: phpBB/develop/create_schema_files.php
This commit is contained in:
@@ -417,6 +417,11 @@ class phpbb_db_tools
|
||||
// here lies an array, filled with information compiled on the column's data
|
||||
$prepared_column = $this->sql_prepare_column_data($table_name, $column_name, $column_data);
|
||||
|
||||
if (isset($prepared_column['auto_increment']) && strlen($column_name) > 26) // "${column_name}_gen"
|
||||
{
|
||||
trigger_error("Index name '${column_name}_gen' on table '$table_name' is too long. The maximum auto increment column length is 26 characters.", E_USER_ERROR);
|
||||
}
|
||||
|
||||
// here we add the definition of the new column to the list of columns
|
||||
switch ($this->sql_layer)
|
||||
{
|
||||
@@ -566,7 +571,13 @@ class phpbb_db_tools
|
||||
case 'firebird':
|
||||
if ($create_sequence)
|
||||
{
|
||||
$statements[] = "CREATE SEQUENCE {$table_name}_seq;";
|
||||
$statements[] = "CREATE GENERATOR {$table_name}_gen;";
|
||||
$statements[] = "SET GENERATOR {$table_name}_gen TO 0;";
|
||||
|
||||
$trigger = "CREATE TRIGGER t_$table_name FOR $table_name\n";
|
||||
$trigger .= "BEFORE INSERT\nAS\nBEGIN\n";
|
||||
$trigger .= "\tNEW.{$create_sequence} = GEN_ID({$table_name}_gen, 1);\nEND;";
|
||||
$statements[] = $trigger;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1400,6 +1411,11 @@ class phpbb_db_tools
|
||||
*/
|
||||
function sql_prepare_column_data($table_name, $column_name, $column_data)
|
||||
{
|
||||
if (strlen($column_name) > 30)
|
||||
{
|
||||
trigger_error("Column name '$column_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR);
|
||||
}
|
||||
|
||||
// Get type
|
||||
if (strpos($column_data[0], ':') !== false)
|
||||
{
|
||||
@@ -2040,6 +2056,13 @@ class phpbb_db_tools
|
||||
{
|
||||
$statements = array();
|
||||
|
||||
$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config)
|
||||
if (strlen($table_name . $index_name) - strlen($table_prefix) > 24)
|
||||
{
|
||||
$max_length = $table_prefix + 24;
|
||||
trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR);
|
||||
}
|
||||
|
||||
switch ($this->sql_layer)
|
||||
{
|
||||
case 'firebird':
|
||||
@@ -2070,6 +2093,13 @@ class phpbb_db_tools
|
||||
{
|
||||
$statements = array();
|
||||
|
||||
$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config)
|
||||
if (strlen($table_name . $index_name) - strlen($table_prefix) > 24)
|
||||
{
|
||||
$max_length = $table_prefix + 24;
|
||||
trigger_error("Index name '{$table_name}_$index_name' on table '$table_name' is too long. The maximum is $max_length characters.", E_USER_ERROR);
|
||||
}
|
||||
|
||||
// remove index length unless MySQL4
|
||||
if ('mysql_40' != $this->sql_layer)
|
||||
{
|
||||
|
Reference in New Issue
Block a user