Toggle navigation
Home
New Query
Recent Queries
Discuss
Database tables
Database names
MediaWiki
Wikibase
Replicas browser and optimizer
Login
History
Fork
This query is marked as a draft
This query has been published
by
Pppery
.
This query looks for actions in 2019 that should have been impossible, ignoring global groups. Many of these actions, therefore, are likely to violate the global rights policy of the English Wikipedia Global false positives: staff, users who lost relevant user groups Result set 1; Moves without redirect by users who shouldn't be able to do that. Known false positives: Known false positives: global rollbackers/stewards legitimately reverting page-move vandalism, moves in content models that don't support redirects. ---- Result set 2: Other admin actions by non-admins. Known false positives: Stewards doing bigdeletes ---- Result sets 3-5: Edits through non-semi protection that should have been impossible (No false positives known) ---- Result set 6: Violations of account creation rate limit (No false positives known) ---- This query is not intended to be exhaustive list, and there are many ways for the global rights policy to be violated without triggering this list. A perfect query is literally impossible, as it cannot catch, ex., stewards viewing oversighted content, which is technically a violation but leaves no traces behind.
Toggle Highlighting
SQL
/* Moves by non-autoconfirmed use enwiki_p; select log_id, log_type, log_action, user_name, user_editcount, user_registration from logging join actor on actor_id = log_actor join user on user_id=actor_user where log_type="move" and (user_editcount < 10 || user_registration > (DATE_FORMAT((NOW() - INTERVAL 4 DAY),'%Y%m%d%H%i%S'))) and not exists (select * from user_groups where ug_user=user_id and ug_group="confirmed") and not exists (select * from user_former_groups where ufg_user=user_id and ufg_group="confirmed") and log_timestamp > "2019001010101" limit 100; */ /* Moves without redirect */ use enwiki_p; select log_id, log_type, log_action, user_name, user_editcount, user_registration, log_params from logging join actor on actor_id = log_actor join user on user_id = actor_user join comment on comment_id = log_comment_id where log_type="move" and log_params like '%"5::noredir";s:1:"1%' and log_timestamp > "20190101010101" and comment_text not like "Automatically moved page while renaming the user%" and log_namespace != 828 and not exists (select 1 from user_groups where ug_user = actor_user and (ug_group="extendedmover" || ug_group="sysop" || ug_group="bot")) and not exists (select 1 from user_former_groups where ufg_user = actor_user and (ufg_group="extendedmover" || ufg_group="sysop" || ufg_group="bot")); /* Other common admin actions */ select log_id, log_type, log_action, user_name, user_editcount, user_registration, log_params from logging join actor on actor_id = log_actor join user on user_id = actor_user where (log_type = "block" || (log_type = "protect" and log_action != "move_prot") || (log_type="delete" && log_action != "delete_redir")) and not exists (select 1 from user_groups where ug_user = actor_user and ug_group="sysop") and log_timestamp > "20190101010101" and not exists (select 1 from user_former_groups where ufg_user = actor_user and ufg_group="sysop"); /* Edits to protected pages */ /* Semi-protection not worth querying and of debatable applicability */ /* Extended-confirmed protection */ select user_name, user_editcount, user_registration, rev_id, page_namespace, page_title from revision join page_restrictions on pr_page=rev_page join page on page_id=rev_page join actor on rev_actor=actor_id join user on user_id=actor_user where pr_type="edit" and pr_level="extendedconfirmed" and rev_timestamp > "20190101010101" and not exists (select 1 from user_groups where ug_user=user_id and (ug_group="extendedconfirmed" || ug_group="sysop" || ug_group="bot")) and not exists (select 1 from user_former_groups where ufg_user=user_id and (ufg_group="extendedconfirmed" || ufg_group="sysop" || ufg_group="bot")) and not exists (select 1 from logging_logindex where log_namespace=page_namespace and log_title=page_title and log_type="protect" and log_timestamp > rev_timestamp); /* Template protection */ select user_name, user_editcount, user_registration, rev_id, page_namespace, page_title from revision join page_restrictions on pr_page=rev_page join page on page_id=rev_page join actor on rev_actor=actor_id join user on user_id=actor_user where pr_type="edit" and pr_level="templateeditor" and rev_timestamp > "20190101010101" and not exists (select 1 from user_groups where ug_user=user_id and (ug_group="templateeditor" || ug_group="sysop")) and not exists (select 1 from user_former_groups where ufg_user=user_id and (ufg_group="templateeditor" || ufg_group="sysop")) and not exists (select 1 from logging_logindex where log_namespace=page_namespace and log_title=page_title and log_type="protect" and log_timestamp > rev_timestamp); /* Full protection */ select user_name, user_editcount, user_registration, rev_id, page_namespace, page_title from revision join page_restrictions on pr_page=rev_page join page on page_id=rev_page join actor on rev_actor=actor_id join user on user_id=actor_user where pr_type="edit" and pr_level="sysop" and rev_timestamp > "20190101010101" and not exists (select 1 from user_groups where ug_user=user_id and ug_group="sysop") and not exists (select 1 from user_former_groups where ufg_user=user_id and ufg_group="sysop") and not exists (select 1 from logging_logindex where log_namespace=page_namespace and log_title=page_title and log_type="protect" and log_timestamp > rev_timestamp); /* MediaWiki namespace */ select user_name, user_editcount, user_registration, rev_id, page_namespace, page_title from revision join page on page_id=rev_page join actor on rev_actor=actor_id join user on user_id=actor_user where page_namespace=8 and rev_timestamp > "20190101010101" and not exists (select 1 from user_groups where ug_user=user_id and ug_group="sysop") and not exists (select 1 from user_former_groups where ufg_user=user_id and ufg_group="sysop"); /* Edits to site CSS/JS */ select user_name, user_editcount, user_registration, rev_id, page_namespace, page_title from revision join page on page_id=rev_page join actor on rev_actor=actor_id join user on user_id=actor_user where page_namespace=8 and (page_content_model="css" || page_content_model="javascript") and rev_timestamp > "20190101010101" and not exists (select 1 from user_groups where ug_user=user_id and ug_group="interface-admin") and not exists (select 1 from user_former_groups where ufg_user=user_id and ufg_group="interface-admin"); /* Rate-limit */ SELECT (SELECT COUNT(*) from logging_userindex l2 WHERE l2.log_timestamp >= l1.log_timestamp and l2.log_timestamp < (l1.log_timestamp+1000000) and l2.log_actor=l1.log_actor and l2.log_type="newusers") as creation_count, actor_user, actor_name, l1.log_timestamp from logging l1 join actor on log_actor=actor_id where l1.log_timestamp > "20190101000000" and l1.log_type="newusers" and not exists (select * from user_groups where ug_user=actor_user and (ug_group="sysop" || ug_group="accountcreator" || ug_group="eventcoordinator")) and not exists (select * from user_former_groups where ufg_user=actor_user and (ufg_group="sysop" || ufg_group="accountcreator" || ufg_group="eventcoordinator")) and (SELECT COUNT(*) from logging_userindex l2 WHERE l2.log_timestamp >= l1.log_timestamp and l2.log_timestamp < (l1.log_timestamp+1000000) and l2.log_actor=l1.log_actor and l2.log_type="newusers") > 4; /* XXX there are a few more ratelimits, but some are unlogged, and I don't consider it within scope of this project to call out users for doing something as trivial as editing or moving slightly too fast, so only focusing on the 4 accounts/day limit" */
By running queries you agree to the
Cloud Services Terms of Use
and you irrevocably agree to release your SQL under
CC0 License
.
Submit Query
Stop Query
All SQL code is licensed under
CC0 License
.
Checking query status...