diff --git a/build/build.xml b/build/build.xml index ed9643c12f..42642dcefa 100644 --- a/build/build.xml +++ b/build/build.xml @@ -2,9 +2,9 @@ - - - + + + diff --git a/phpBB/develop/create_schema_files.php b/phpBB/develop/create_schema_files.php index f4d89e5562..efe8837b26 100644 --- a/phpBB/develop/create_schema_files.php +++ b/phpBB/develop/create_schema_files.php @@ -1223,7 +1223,6 @@ function get_schema_struct() $schema_data['phpbb_login_attempts'] = array( 'COLUMNS' => array( - 'attempt_id' => array('UINT', NULL, 'auto_increment'), 'attempt_ip' => array('VCHAR:40', ''), 'attempt_browser' => array('VCHAR:150', ''), 'attempt_forwarded_for' => array('VCHAR:255', ''), @@ -1232,7 +1231,6 @@ function get_schema_struct() 'username' => array('VCHAR_UNI:255', 0), 'username_clean' => array('VCHAR_CI', 0), ), - 'PRIMARY_KEY' => 'attempt_id', 'KEYS' => array( 'att_ip' => array('INDEX', array('attempt_ip', 'attempt_time')), 'att_for' => array('INDEX', array('attempt_forwarded_for', 'attempt_time')), diff --git a/phpBB/docs/CHANGELOG.html b/phpBB/docs/CHANGELOG.html index 6b12cb81bf..c0ec93cafb 100644 --- a/phpBB/docs/CHANGELOG.html +++ b/phpBB/docs/CHANGELOG.html @@ -333,6 +333,8 @@
  • [PHPBB3-10234] - msg_handler() reports E_WARNING as "PHP Notice: "
  • +
  • [PHPBB3-10247] - mediumint(8) too small for phpbb_login_attempts.attempt_id +
  • Improvement diff --git a/phpBB/install/database_update.php b/phpBB/install/database_update.php index b08a900c5b..fe2946501f 100644 --- a/phpBB/install/database_update.php +++ b/phpBB/install/database_update.php @@ -946,7 +946,12 @@ function database_update_info() 'add_tables' => array( LOGIN_ATTEMPT_TABLE => array( 'COLUMNS' => array( - 'attempt_id' => array('UINT', NULL, 'auto_increment'), + // this column was removed from the database updater + // after 3.0.9-RC3 was released. It might still exist + // in 3.0.9-RCX installations and has to be dropped in + // 3.0.10 after the db_tools class is capable of properly + // removing a primary key. + // 'attempt_id' => array('UINT', NULL, 'auto_increment'), 'attempt_ip' => array('VCHAR:40', ''), 'attempt_browser' => array('VCHAR:150', ''), 'attempt_forwarded_for' => array('VCHAR:255', ''), @@ -970,6 +975,14 @@ function database_update_info() ), ), ), + // No changes from 3.0.9-RC1 to 3.0.9-RC2 + '3.0.9-RC1' => array(), + // No changes from 3.0.9-RC2 to 3.0.9-RC3 + '3.0.9-RC2' => array(), + // No changes from 3.0.9-RC3 to 3.0.9 + '3.0.9-RC3' => array(), + + /** @todo DROP LOGIN_ATTEMPT_TABLE.attempt_id in 3.0.10-RC1 */ ); } @@ -1961,6 +1974,18 @@ function change_database_data(&$no_updates, $version) $no_updates = false; break; + + // No changes from 3.0.9-RC1 to 3.0.9-RC2 + case '3.0.9-RC1': + break; + + // No changes from 3.0.9-RC2 to 3.0.9-RC3 + case '3.0.9-RC2': + break; + + // No changes from 3.0.9-RC3 to 3.0.9 + case '3.0.9-RC3': + break; } } diff --git a/phpBB/install/schemas/firebird_schema.sql b/phpBB/install/schemas/firebird_schema.sql index 5df7dfe9a5..40041b13cb 100644 --- a/phpBB/install/schemas/firebird_schema.sql +++ b/phpBB/install/schemas/firebird_schema.sql @@ -547,7 +547,6 @@ END;; # Table: 'phpbb_login_attempts' CREATE TABLE phpbb_login_attempts ( - attempt_id INTEGER NOT NULL, attempt_ip VARCHAR(40) CHARACTER SET NONE DEFAULT '' NOT NULL, attempt_browser VARCHAR(150) CHARACTER SET NONE DEFAULT '' NOT NULL, attempt_forwarded_for VARCHAR(255) CHARACTER SET NONE DEFAULT '' NOT NULL, @@ -557,24 +556,11 @@ CREATE TABLE phpbb_login_attempts ( username_clean VARCHAR(255) CHARACTER SET UTF8 DEFAULT 0 NOT NULL COLLATE UNICODE );; -ALTER TABLE phpbb_login_attempts ADD PRIMARY KEY (attempt_id);; - CREATE INDEX phpbb_login_attempts_att_ip ON phpbb_login_attempts(attempt_ip, attempt_time);; CREATE INDEX phpbb_login_attempts_att_for ON phpbb_login_attempts(attempt_forwarded_for, attempt_time);; CREATE INDEX phpbb_login_attempts_att_time ON phpbb_login_attempts(attempt_time);; CREATE INDEX phpbb_login_attempts_user_id ON phpbb_login_attempts(user_id);; -CREATE GENERATOR phpbb_login_attempts_gen;; -SET GENERATOR phpbb_login_attempts_gen TO 0;; - -CREATE TRIGGER t_phpbb_login_attempts FOR phpbb_login_attempts -BEFORE INSERT -AS -BEGIN - NEW.attempt_id = GEN_ID(phpbb_login_attempts_gen, 1); -END;; - - # Table: 'phpbb_moderator_cache' CREATE TABLE phpbb_moderator_cache ( forum_id INTEGER DEFAULT 0 NOT NULL, diff --git a/phpBB/install/schemas/mssql_schema.sql b/phpBB/install/schemas/mssql_schema.sql index 0bc76c05e6..c4fc2d4eec 100644 --- a/phpBB/install/schemas/mssql_schema.sql +++ b/phpBB/install/schemas/mssql_schema.sql @@ -653,7 +653,6 @@ GO Table: 'phpbb_login_attempts' */ CREATE TABLE [phpbb_login_attempts] ( - [attempt_id] [int] IDENTITY (1, 1) NOT NULL , [attempt_ip] [varchar] (40) DEFAULT ('') NOT NULL , [attempt_browser] [varchar] (150) DEFAULT ('') NOT NULL , [attempt_forwarded_for] [varchar] (255) DEFAULT ('') NOT NULL , @@ -664,13 +663,6 @@ CREATE TABLE [phpbb_login_attempts] ( ) ON [PRIMARY] GO -ALTER TABLE [phpbb_login_attempts] WITH NOCHECK ADD - CONSTRAINT [PK_phpbb_login_attempts] PRIMARY KEY CLUSTERED - ( - [attempt_id] - ) ON [PRIMARY] -GO - CREATE INDEX [att_ip] ON [phpbb_login_attempts]([attempt_ip], [attempt_time]) ON [PRIMARY] GO diff --git a/phpBB/install/schemas/mysql_40_schema.sql b/phpBB/install/schemas/mysql_40_schema.sql index 6b13485a3d..06d32166f3 100644 --- a/phpBB/install/schemas/mysql_40_schema.sql +++ b/phpBB/install/schemas/mysql_40_schema.sql @@ -371,7 +371,6 @@ CREATE TABLE phpbb_log ( # Table: 'phpbb_login_attempts' CREATE TABLE phpbb_login_attempts ( - attempt_id mediumint(8) UNSIGNED NOT NULL auto_increment, attempt_ip varbinary(40) DEFAULT '' NOT NULL, attempt_browser varbinary(150) DEFAULT '' NOT NULL, attempt_forwarded_for varbinary(255) DEFAULT '' NOT NULL, @@ -379,7 +378,6 @@ CREATE TABLE phpbb_login_attempts ( user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, username blob NOT NULL, username_clean blob NOT NULL, - PRIMARY KEY (attempt_id), KEY att_ip (attempt_ip, attempt_time), KEY att_for (attempt_forwarded_for, attempt_time), KEY att_time (attempt_time), diff --git a/phpBB/install/schemas/mysql_41_schema.sql b/phpBB/install/schemas/mysql_41_schema.sql index b400e8fcff..1db2790ec7 100644 --- a/phpBB/install/schemas/mysql_41_schema.sql +++ b/phpBB/install/schemas/mysql_41_schema.sql @@ -371,7 +371,6 @@ CREATE TABLE phpbb_log ( # Table: 'phpbb_login_attempts' CREATE TABLE phpbb_login_attempts ( - attempt_id mediumint(8) UNSIGNED NOT NULL auto_increment, attempt_ip varchar(40) DEFAULT '' NOT NULL, attempt_browser varchar(150) DEFAULT '' NOT NULL, attempt_forwarded_for varchar(255) DEFAULT '' NOT NULL, @@ -379,7 +378,6 @@ CREATE TABLE phpbb_login_attempts ( user_id mediumint(8) UNSIGNED DEFAULT '0' NOT NULL, username varchar(255) DEFAULT '0' NOT NULL, username_clean varchar(255) DEFAULT '0' NOT NULL, - PRIMARY KEY (attempt_id), KEY att_ip (attempt_ip, attempt_time), KEY att_for (attempt_forwarded_for, attempt_time), KEY att_time (attempt_time), diff --git a/phpBB/install/schemas/oracle_schema.sql b/phpBB/install/schemas/oracle_schema.sql index 8c79e870cb..783261e365 100644 --- a/phpBB/install/schemas/oracle_schema.sql +++ b/phpBB/install/schemas/oracle_schema.sql @@ -744,15 +744,13 @@ END; Table: 'phpbb_login_attempts' */ CREATE TABLE phpbb_login_attempts ( - attempt_id number(8) NOT NULL, attempt_ip varchar2(40) DEFAULT '' , attempt_browser varchar2(150) DEFAULT '' , attempt_forwarded_for varchar2(255) DEFAULT '' , attempt_time number(11) DEFAULT '0' NOT NULL, user_id number(8) DEFAULT '0' NOT NULL, username varchar2(765) DEFAULT '0' NOT NULL, - username_clean varchar2(255) DEFAULT '0' NOT NULL, - CONSTRAINT pk_phpbb_login_attempts PRIMARY KEY (attempt_id) + username_clean varchar2(255) DEFAULT '0' NOT NULL ) / @@ -765,22 +763,6 @@ CREATE INDEX phpbb_login_attempts_att_time ON phpbb_login_attempts (attempt_time CREATE INDEX phpbb_login_attempts_user_id ON phpbb_login_attempts (user_id) / -CREATE SEQUENCE phpbb_login_attempts_seq -/ - -CREATE OR REPLACE TRIGGER t_phpbb_login_attempts -BEFORE INSERT ON phpbb_login_attempts -FOR EACH ROW WHEN ( - new.attempt_id IS NULL OR new.attempt_id = 0 -) -BEGIN - SELECT phpbb_login_attempts_seq.nextval - INTO :new.attempt_id - FROM dual; -END; -/ - - /* Table: 'phpbb_moderator_cache' */ diff --git a/phpBB/install/schemas/postgres_schema.sql b/phpBB/install/schemas/postgres_schema.sql index 359ec325d7..cf655cb1c7 100644 --- a/phpBB/install/schemas/postgres_schema.sql +++ b/phpBB/install/schemas/postgres_schema.sql @@ -527,18 +527,14 @@ CREATE INDEX phpbb_log_user_id ON phpbb_log (user_id); /* Table: 'phpbb_login_attempts' */ -CREATE SEQUENCE phpbb_login_attempts_seq; - CREATE TABLE phpbb_login_attempts ( - attempt_id INT4 DEFAULT nextval('phpbb_login_attempts_seq'), attempt_ip varchar(40) DEFAULT '' NOT NULL, attempt_browser varchar(150) DEFAULT '' NOT NULL, attempt_forwarded_for varchar(255) DEFAULT '' NOT NULL, attempt_time INT4 DEFAULT '0' NOT NULL CHECK (attempt_time >= 0), user_id INT4 DEFAULT '0' NOT NULL CHECK (user_id >= 0), username varchar(255) DEFAULT '0' NOT NULL, - username_clean varchar_ci DEFAULT '0' NOT NULL, - PRIMARY KEY (attempt_id) + username_clean varchar_ci DEFAULT '0' NOT NULL ); CREATE INDEX phpbb_login_attempts_att_ip ON phpbb_login_attempts (attempt_ip, attempt_time); diff --git a/phpBB/install/schemas/sqlite_schema.sql b/phpBB/install/schemas/sqlite_schema.sql index 3158c1a177..dae1eb839c 100644 --- a/phpBB/install/schemas/sqlite_schema.sql +++ b/phpBB/install/schemas/sqlite_schema.sql @@ -359,7 +359,6 @@ CREATE INDEX phpbb_log_user_id ON phpbb_log (user_id); # Table: 'phpbb_login_attempts' CREATE TABLE phpbb_login_attempts ( - attempt_id INTEGER PRIMARY KEY NOT NULL , attempt_ip varchar(40) NOT NULL DEFAULT '', attempt_browser varchar(150) NOT NULL DEFAULT '', attempt_forwarded_for varchar(255) NOT NULL DEFAULT '', diff --git a/tests/dbal/db_tools_test.php b/tests/dbal/db_tools_test.php index eb2af4c4cc..ddea500f83 100644 --- a/tests/dbal/db_tools_test.php +++ b/tests/dbal/db_tools_test.php @@ -241,6 +241,15 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case } public function test_column_remove() + { + $this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_int_size')); + + $this->assertTrue($this->tools->sql_column_remove('prefix_table_name', 'c_int_size')); + + $this->assertFalse($this->tools->sql_column_exists('prefix_table_name', 'c_int_size')); + } + + public function test_column_remove_primary() { $this->assertTrue($this->tools->sql_column_exists('prefix_table_name', 'c_id')); @@ -264,5 +273,4 @@ class phpbb_dbal_db_tools_test extends phpbb_database_test_case $this->tools->sql_table_drop('prefix_test_table'); } - }