diff options
Diffstat (limited to 'phpBB/phpbb')
| -rw-r--r-- | phpBB/phpbb/db/tools/mssql.php | 20 | ||||
| -rw-r--r-- | phpBB/phpbb/db/tools/tools.php | 15 | 
2 files changed, 29 insertions, 6 deletions
| diff --git a/phpBB/phpbb/db/tools/mssql.php b/phpBB/phpbb/db/tools/mssql.php index 1e4d3aee2f..b84c0db403 100644 --- a/phpBB/phpbb/db/tools/mssql.php +++ b/phpBB/phpbb/db/tools/mssql.php @@ -545,10 +545,7 @@ class mssql extends tools  	{  		$statements = array(); -		if ($this->mssql_is_sql_server_2000()) -		{ -			$this->check_index_name_length($table_name, $index_name); -		} +		$this->check_index_name_length($table_name, $index_name);  		// remove index length  		$column = preg_replace('#:.*$#', '', $column); @@ -559,6 +556,21 @@ class mssql extends tools  	}  	/** +	 * {@inheritdoc} +	 */ +	protected function get_max_index_name_length() +	{ +		if ($this->mssql_is_sql_server_2000()) +		{ +			return parent::get_max_index_name_length(); +		} +		else +		{ +			return 128; +		} +	} + +	/**  	 * {@inheritDoc}  	 */  	function sql_list_index($table_name) diff --git a/phpBB/phpbb/db/tools/tools.php b/phpBB/phpbb/db/tools/tools.php index 2f891e43d5..d21d34b8a9 100644 --- a/phpBB/phpbb/db/tools/tools.php +++ b/phpBB/phpbb/db/tools/tools.php @@ -1561,7 +1561,8 @@ class tools implements tools_interface  	 */  	protected function check_index_name_length($table_name, $index_name, $throw_error = true)  	{ -		if (strlen($index_name) > 30) +		$max_index_name_length = $this->get_max_index_name_length(); +		if (strlen($index_name) > $max_index_name_length)  		{  			// Try removing the table prefix if it's at the beginning  			$table_prefix = substr(CONFIG_TABLE, 0, -6); // strlen(config) @@ -1582,7 +1583,7 @@ class tools implements tools_interface  			if ($throw_error)  			{ -				trigger_error("Index name '$index_name' on table '$table_name' is too long. The maximum is 30 characters.", E_USER_ERROR); +				trigger_error("Index name '$index_name' on table '$table_name' is too long. The maximum is $max_index_name_length characters.", E_USER_ERROR);  			}  		} @@ -1590,6 +1591,16 @@ class tools implements tools_interface  	}  	/** +	 * Get maximum index name length. Might vary depending on db type +	 * +	 * @return int Maximum index name length +	 */ +	protected function get_max_index_name_length() +	{ +		return 30; +	} + +	/**  	 * {@inheritDoc}  	 */  	function sql_list_index($table_name) | 
