mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-11-12 00:38:23 +00:00
Fix issues with SQLite
Bug: T199507 Change-Id: I273de5ebafeee76458a5b873e893044b683c34ca
This commit is contained in:
parent
d305a9635e
commit
99c2749511
45
db_patches/patch-afl-namespace_int.sqlite.sql
Normal file
45
db_patches/patch-afl-namespace_int.sqlite.sql
Normal file
|
@ -0,0 +1,45 @@
|
|||
-- (Just) change afl_namespace field to int NOT NULL.
|
||||
BEGIN;
|
||||
|
||||
DROP TABLE IF EXISTS /*_*/abuse_filter_log_tmp;
|
||||
|
||||
CREATE TABLE /*_*/abuse_filter_log_tmp (
|
||||
afl_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||
afl_filter varbinary(64) NOT NULL,
|
||||
afl_user BIGINT unsigned NOT NULL,
|
||||
afl_user_text varbinary(255) NOT NULL,
|
||||
afl_ip varbinary(255) not null,
|
||||
afl_action varbinary(255) not null,
|
||||
afl_actions varbinary(255) not null,
|
||||
afl_var_dump BLOB NOT NULL,
|
||||
afl_timestamp varbinary(14) NOT NULL,
|
||||
afl_namespace int NOT NULL,
|
||||
afl_title varbinary(255) NOT NULL,
|
||||
afl_wiki varbinary(64) NULL,
|
||||
afl_deleted tinyint(1) NOT NULL DEFAULT 0,
|
||||
afl_patrolled_by int unsigned NULL,
|
||||
afl_rev_id int unsigned,
|
||||
afl_log_id int unsigned
|
||||
) /*$wgDBTableOptions*/;
|
||||
|
||||
INSERT OR IGNORE INTO /*_*/abuse_filter_log_tmp (
|
||||
afl_id, afl_filter, afl_user, afl_user_text, afl_ip, afl_action, afl_actions,
|
||||
afl_var_dump, afl_timestamp, afl_namespace, afl_title, afl_wiki, afl_deleted,
|
||||
afl_patrolled_by, afl_rev_id, afl_log_id)
|
||||
SELECT afl_id, afl_filter, afl_user, afl_user_text, afl_ip, afl_action, afl_actions,
|
||||
afl_var_dump, afl_timestamp, afl_namespace, afl_title, afl_wiki, afl_deleted,
|
||||
afl_patrolled_by, afl_rev_id, afl_log_id
|
||||
FROM /*_*/abuse_filter_log;
|
||||
|
||||
DROP TABLE /*_*/abuse_filter_log;
|
||||
ALTER TABLE /*_*/abuse_filter_log_tmp RENAME TO /*_*/abuse_filter_log;
|
||||
CREATE INDEX /*i*/afl_filter_timestamp ON /*_*/abuse_filter_log (afl_filter,afl_timestamp);
|
||||
CREATE INDEX /*i*/afl_user_timestamp ON /*_*/abuse_filter_log (afl_user,afl_user_text,afl_timestamp);
|
||||
CREATE INDEX /*i*/afl_timestamp ON /*_*/abuse_filter_log (afl_timestamp);
|
||||
CREATE INDEX /*i*/afl_page_timestamp ON /*_*/abuse_filter_log (afl_namespace, afl_title, afl_timestamp);
|
||||
CREATE INDEX /*i*/afl_ip_timestamp ON /*_*/abuse_filter_log (afl_ip, afl_timestamp);
|
||||
CREATE INDEX /*i*/afl_wiki_timestamp ON /*_*/abuse_filter_log (afl_wiki, afl_timestamp);
|
||||
CREATE INDEX /*i*/afl_rev_id ON /*_*/abuse_filter_log (afl_rev_id);
|
||||
CREATE INDEX /*i*/afl_log_id ON /*_*/abuse_filter_log (afl_log_id);
|
||||
|
||||
COMMIT;
|
|
@ -1,3 +1,3 @@
|
|||
-- Add abuse_filter_log idex for afl_wiki.
|
||||
-- Add abuse_filter_log index for afl_wiki.
|
||||
|
||||
CREATE INDEX afl_wiki_timestamp ON /*$wgDBprefix*/abuse_filter_log (afl_wiki, afl_timestamp);
|
||||
|
|
|
@ -563,35 +563,19 @@ class AbuseFilterHooks {
|
|||
'addIndex', 'abuse_filter_log', 'wiki_timestamp',
|
||||
"$dir/db_patches/patch-global_logging_wiki-index.sql", true
|
||||
] );
|
||||
} else {
|
||||
$updater->addExtensionUpdate( [
|
||||
'addIndex', 'abuse_filter_log', 'afl_wiki_timestamp',
|
||||
"$dir/db_patches/patch-global_logging_wiki-index.sqlite.sql", true
|
||||
] );
|
||||
}
|
||||
|
||||
if ( $updater->getDB()->getType() == 'mysql' ) {
|
||||
$updater->addExtensionUpdate( [
|
||||
'modifyField', 'abuse_filter_log', 'afl_namespace',
|
||||
"$dir/db_patches/patch-afl-namespace_int.sql", true
|
||||
] );
|
||||
} else {
|
||||
/*
|
||||
$updater->addExtensionUpdate( array(
|
||||
'modifyField',
|
||||
'abuse_filter_log',
|
||||
'afl_namespace',
|
||||
"$dir/db_patches/patch-afl-namespace_int.sqlite.sql",
|
||||
true
|
||||
) );
|
||||
*/
|
||||
/* @todo Modify a column in sqlite, which do not support such
|
||||
* things create backup, drop, create with new schema, copy,
|
||||
* drop backup or simply see
|
||||
* https://www.mediawiki.org/wiki/Manual:SQLite#About_SQLite :
|
||||
* Several extensions are known to have database update or
|
||||
* installation issues with SQLite: AbuseFilter, ...
|
||||
*/
|
||||
$updater->addExtensionUpdate( [
|
||||
'addIndex', 'abuse_filter_log', 'afl_wiki_timestamp',
|
||||
"$dir/db_patches/patch-global_logging_wiki-index.sqlite.sql", true
|
||||
] );
|
||||
$updater->addExtensionUpdate( [
|
||||
'modifyField', 'abuse_filter_log', 'afl_namespace',
|
||||
"$dir/db_patches/patch-afl-namespace_int.sqlite.sql", true
|
||||
] );
|
||||
}
|
||||
} elseif ( $updater->getDB()->getType() == 'postgres' ) {
|
||||
$updater->addExtensionUpdate( [
|
||||
|
|
Loading…
Reference in a new issue