Page MenuHomePhabricator
Authored By
aaron
Sep 1 2016, 1:16 PM
Size
1 KB
Referenced Files
None
Subscribers
None

fix_T144484.patch

From 3d21ef8dddd1dd432e438f2e980cbfbd33441263 Mon Sep 17 00:00:00 2001
From: Aaron Schulz <aschulz@wikimedia.org>
Date: Thu, 1 Sep 2016 05:42:01 -0700
Subject: [PATCH] Fix deletion handling of rev_deleted
When the suppress button was not used, and a some live
revisions had rev_deleted set, the query would try to
write the literal string "rev_deleted" as rev_deleted,
which was not noticed in default non-strict MySQL and
was casted to 0.
Follow-up to 673371e2c7
Change-Id: If3a74de13ea841d9d94ae05532cc8dadb0e40867
---
includes/page/WikiPage.php | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/includes/page/WikiPage.php b/includes/page/WikiPage.php
index e1d9f99..26f8cb6 100644
--- a/includes/page/WikiPage.php
+++ b/includes/page/WikiPage.php
@@ -2912,9 +2912,10 @@ class WikiPage implements Page, IDBAccessObject {
// the rev_deleted field, which is reserved for this purpose.
// Get all of the page revisions
+ $fields = array_diff( Revision::selectFields(), [ 'rev_deleted' ] );
$res = $dbw->select(
'revision',
- Revision::selectFields(),
+ array_merge( $fields, [ 'rev_deleted' => $bitfield ] ),
[ 'rev_page' => $id ],
__METHOD__,
'FOR UPDATE'
@@ -2937,7 +2938,7 @@ class WikiPage implements Page, IDBAccessObject {
'ar_flags' => '',
'ar_len' => $row->rev_len,
'ar_page_id' => $id,
- 'ar_deleted' => $bitfield,
+ 'ar_deleted' => $row->rev_deleted,
'ar_sha1' => $row->rev_sha1,
];
if ( $wgContentHandlerUseDB ) {
--
2.8.3.windows.1

File Metadata

Mime Type
text/x-diff
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3951236
Default Alt Text
fix_T144484.patch (1 KB)

Event Timeline