jenkins-bot has submitted this change and it was merged.

Change subject: Check if eu_touched field exists
......................................................................


Check if eu_touched field exists

e.g. schema change not applied yet, then we need
skip this part of the usage tracking update.

Bug: T98186
Change-Id: I5b00c96b7aa99286728ff0aab55eedc48bc5aca4
---
M client/includes/Usage/Sql/UsageTableUpdater.php
1 file changed, 30 insertions(+), 4 deletions(-)

Approvals:
  Aude: Looks good to me, approved
  Daniel Kinzler: Looks good to me, but someone else must approve
  JanZerebecki: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/client/includes/Usage/Sql/UsageTableUpdater.php 
b/client/includes/Usage/Sql/UsageTableUpdater.php
index 7325491..537573b 100644
--- a/client/includes/Usage/Sql/UsageTableUpdater.php
+++ b/client/includes/Usage/Sql/UsageTableUpdater.php
@@ -31,6 +31,11 @@
        private $batchSize;
 
        /**
+        * @var bool
+        */
+       private $hasTouchedField;
+
+       /**
         * @param DatabaseBase $connection
         * @param string $tableName
         * @param int $batchSize
@@ -137,7 +142,7 @@
         * @param string|false $touched timestamp
         */
        private function touchUsageForPage( $pageId, $touched ) {
-               if ( $touched === false ) {
+               if ( $touched === false || !$this->hasTouchedField() ) {
                        return;
                }
 
@@ -151,6 +156,22 @@
                        ),
                        __METHOD__
                );
+       }
+
+       /**
+        * Check if the usage tracking table has the touched field.
+        *
+        * @return bool
+        */
+       private function hasTouchedField() {
+               if ( !isset( $this->hasTouchedField ) ) {
+                       $this->hasTouchedField = $this->connection->fieldExists(
+                               $this->tableName,
+                               'eu_touched'
+                       );
+               }
+
+               return $this->hasTouchedField;
        }
 
        /**
@@ -193,12 +214,17 @@
                                throw new InvalidArgumentException( '$usages 
must contain EntityUsage objects.' );
                        }
 
-                       $rows[] = array(
+                       $fields = array(
                                'eu_page_id' => (int)$pageId,
                                'eu_aspect' => $usage->getAspect(),
-                               'eu_entity_id' => 
$usage->getEntityId()->getSerialization(),
-                               'eu_touched' => wfTimestamp( TS_MW, $touched ),
+                               'eu_entity_id' => 
$usage->getEntityId()->getSerialization()
                        );
+
+                       if ( $this->hasTouchedField() ) {
+                               $fields['eu_touched'] = wfTimestamp( TS_MW, 
$touched );
+                       }
+
+                       $rows[] = $fields;
                }
 
                return $rows;

-- 
To view, visit https://gerrit.wikimedia.org/r/209029
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I5b00c96b7aa99286728ff0aab55eedc48bc5aca4
Gerrit-PatchSet: 3
Gerrit-Project: mediawiki/extensions/Wikibase
Gerrit-Branch: wmf/1.26wmf4
Gerrit-Owner: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Aude <aude.w...@gmail.com>
Gerrit-Reviewer: Daniel Kinzler <daniel.kinz...@wikimedia.de>
Gerrit-Reviewer: JanZerebecki <jan.wikime...@zerebecki.de>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to