From 118da6b4ef1c85549c42115511f3369676f14689 Mon Sep 17 00:00:00 2001 From: Platonides Date: Tue, 7 Sep 2010 20:11:53 +0000 Subject: [PATCH] Follow-up r32085. Delay the transaction begin until after the object is initialized. We would get some queries into the transaction ''sometimes'', depending if it was already initialised or not, and one code path left the transaction open. --- includes/Category.php | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/includes/Category.php b/includes/Category.php index 44f266e9db..1e49c5ff89 100644 --- a/includes/Category.php +++ b/includes/Category.php @@ -245,28 +245,30 @@ class Category { if ( wfReadOnly() ) { return false; } - $dbw = wfGetDB( DB_MASTER ); - $dbw->begin(); + # Note, we must use names for this, since categorylinks does. if ( $this->mName === null ) { if ( !$this->initialize() ) { return false; } - } else { - # Let's be sure that the row exists in the table. We don't need to - # do this if we got the row from the table in initialization! - $seqVal = $dbw->nextSequenceValue( 'category_cat_id_seq' ); - $dbw->insert( - 'category', - array( - 'cat_id' => $seqVal, - 'cat_title' => $this->mName - ), - __METHOD__, - 'IGNORE' - ); } + $dbw = wfGetDB( DB_MASTER ); + $dbw->begin(); + + # Let's be sure that the row exists in the table. We don't need to + # do this if we got the row from the table in initialization! + $seqVal = $dbw->nextSequenceValue( 'category_cat_id_seq' ); + $dbw->insert( + 'category', + array( + 'cat_id' => $seqVal, + 'cat_title' => $this->mName + ), + __METHOD__, + 'IGNORE' + ); + $cond1 = $dbw->conditional( 'page_namespace=' . NS_CATEGORY, 1, 'NULL' ); $cond2 = $dbw->conditional( 'page_namespace=' . NS_FILE, 1, 'NULL' ); $result = $dbw->selectRow( -- 2.20.1